petak, 13.01.2006.

Gentoo


U trazenju neke pouzdane distribucije kojoj ne treba skidati 6-7 CDova da bi se isntalirala
odlucio saminstalirati novu inacicu Gentoo Linux servera.
Ovdje cu ukratko napisati tijek instalacije sustava pa makar da ima neki prijevod toga.
Mozda ima jos negdje al ajd ovdje cu nekako svoje probleme izloziti :)

Dakle minimalna instalacija Gentoo-a je .iso file koji skinete nekih sve skupa 100MB.
Sprzite na CD i imate vlastiti live CD distribuciju.
Prvo sto morate jest pripremiti diskove za prebacivanje i instaliranje novog
operativnog sistema (OS-a). Situacija kod mene je sljedeca :
Pentim II 300 MHz, 68MB RAM, 5GB hdd .. graficka je neka bezveze
ali nije nam ni potrebna neka bolja kad necemo imati nikakvo graficko sucelje.
Ovo je building bio cistog servera.

1. Pripering jor disks :)

naredba je fdisk :)

fdisk /dev/hda

"p" => printanje trenutnih postavki

Pritisnete "n" => nova particija

"2" => primary

sljedece ce vas pitati cilindre tu pritisnite "Enter" kao default.
Na koraku iza pita vas velicinu particije ...

Prvo cu pokazati kako to izgleda kod mene nakon fdiska :)

Device Boot Start End Blocks Id System
/dev/hda1 * 1 621 293391 83 Linux
/dev/hda2 622 7856 3418537+ 83 Linux
/dev/hda3 7857 8684 391230 82 Linux swap / Solaris

dakle prva je primary i ona ce biti /boot particija
za nju sam stavio 300M dakle na koraku za velicinu particije upisete

+300M i lupite "Enter".

Napravili smo prvu idemo sad dalje.
Opet pritisnite "n" i opet "primary" opet default cilindar
velicina ovisna o vasem hard disk u mene je bila +3500M.
i posljednja particija isto ona je "swap" dakle mora biti velicine duplo od vase memore :)
Da bi joj stavili flag da je "Linux swap"
... moramo nakon sto smo je dodali pritisnuti "t" i onda odabrati njen broj .. kod nas je 3.
Promjenili smo u status Linux swap a to mozete u bilo kojem trenutku vidjeti tako sto isprintate postavke "p".
Jos jedna stvar .. moramo prvoj particiji staviti boot flag "*"
... radimo to sa tipkom "a" odaberemo broj particije a kod nas je 1.
Ponovo print "p" da vidimo jeli sve ok.
Ako jest upisemo "w" da sacuvamo postavke i poslije toga "q" ili ti ga quit.
Sad imamo tri raw particije bez file systema.
Da bi kreirali file system idemo sa sljedecom naredbom

mke2fs /dev/hda1

mke2fs /dev/hda2

mke2fs /dev/hda3
mkswap /dev/hda3
swapon /dev/hda3

I s ovime smo zavrsili patnju oko postavljanja hard diskova i slicno.
Nije patnja sve je stvar rutine :)
Sljedece sto radimo jest mountamo particije :)

mount /dev/hda2 /mnt/gentoo

dakle mapiramo nanovo dodanu particiju na neki postojeci direktorij.
Praksa je da se taj direktorij nalazi u /mnt/ direktoriju a posto instaliramo gentoo zgodno ime je prikladno :)
Poslije toga napravimo

mkdir /mnt/gentoo/boot

mount /dev/hda1 /mnt/gentoo/boot/

Well done :)

Network konfiguracija.

net-setup eth0

Sam vas vodi kroz daljnje postavljanje!!


I sada za instalaciju potrebno nam je da skinemo dva paketa "package" i "stageX"
imaju stage1, stage2, stage3 .. potreban nam je samo jedan od tih.
Razlika je u paketima ukljucenim u stage. Ja sam odabrao stage3 a vi kako hocete
Pozicioniramo se u /mnt/gentoo

wget -c ftp://ftp.sh.cvut.cz/MIRRORS/gentoo/gentoo/snapshots/portage-20060108.tar.bz2

wget -c ftp://ftp.sh.cvut.cz/MIRRORS/gentoo/releases/x86/2005.0/stages/x86/stage3-x86-2005.0.tar.bz2

Pricekamo da skine oba paketa.
Raspakiramo portage prvo.

tar jxvf portage-20060108.tar.bz2 -C /mnt/gentoo/usr

pa onda stage:

tar jxvf stage3-x86-2005.0.tar.bz2

Morate obratiti pozornost da se nalazimo u direktoriju /mnt/gentoo !!

I sad najtezi posao instalacija kernela.
Necu vas muciti sa manual instalacijom ovdje cemo ici avtomatikom
jer imamo genkernel (imat cemo ga) koji ce nam to odraditi umjesto nas.

ali da bi smo ga mogli koristiti moramo ga instalirati :

chroot /mnt/gentoo
env-update

emerge genkernel

zcat /proc/config.gz > /usr/share/genkernel/x86/kernel-config-2.6

genkernel all

I prepustimo kernelu da se kompajlira.
Mogli smo odabrati --menuconfig da bi odabrali .. ostavljam vama na izbor.
Nakon instalacije kernela mozemo pogledati u /boot direktorij
sto nam je to novi kernel donio lijepoga :)

emerge coldplug
rc-update add coldplug boot

emerge hotplug
rc-update add hotplug default

Pripremamo polako i kraj instalacije.

Sada moramo editirati nas
/etc/fstab
koji nam sluzi za pridjeljivanje direktorijske strukture diskovima.
Ali to uradimo na sljedeci nacin

/dev/hda1 /boot ext2 noauto,noatime 1 1
/dev/hda2 / xfs noatime 0 0
/dev/hda3 none swap sw 0 0


Sad instaliramo "boot loader" => Grub

emerge grub

nano -w /boot/grub/grub.conf

Korak next je editiranje grub.conf-a

imate grub.conf.sample
u njemu se nalazi mnostvo nepotrebnih stvari
u principu ako vam je system izgledom kao moj sto se tice particioniranja diskova
grub.conf izgleda ovako :

default 0
timeout 30

title=Gentoo Linux 2.6.12-r10
root (hd0,0)
kernel /kernel-genkernel-x86-2.6.12-gentoo-r10 root=/dev/ram0 ramdisk=8192
initrd /initramfs-genkernel-x86-2.6.12-gentoo-r10

Nakon toga moramo pripremiti teren za instalaciju Grub-a.

grep -v rootfs /proc/mounts > /etc/mtab

I naredba s kojom cemo instalirati grub na nase racunalo :

grub-install /dev/hda


Ako je sve proslo uredu mozemo slobodno opiciti ovako

Ctr+D sto je jednako logout, da bi smo izasli iz chroot okruzenja
pa onda

cd /

umount /mnt/gentoo/boot
umount /mnt/gentoo
reboot

voila :)

Vas novi sistem je instaliran na vase racunalo i spremno za upotrebu.
Imajte racuna da je ovo goli sistem bez puno pretjeranih stvari ali osnovnih za potrebu.
Dakle na vama je da sa emerge alatom pokupite i instalirate sto vam srcu drago :)

gustajte a ja odoh popit kafu :)

- 09:33 - Komentari (1) - Isprintaj - #

utorak, 03.01.2006.

PHP part 2

Danas cemo pricati o kontrolnim strukturama u PHPu.

IF :

Vrlo jednostavno za shvatiti. Imamo npr. neku varijablu $mladen
hocemo vidjeti dali je ona setirana ili nije. Naredba za to u PHPu je isset($neka_varijabla)
dakle u ovom slucaju isset($mladen). No funkcija isset() vraca TRUE ili FALSE (boolean).
dakle sintaksa bi bila :

if (isset($mladen)) {
echo "postavljena";
}
else {
echo "nije postavljena";
}

Sljedeci primjer cemo raditi tako da cemo gledati koje je vrijednosti odredjeni broj $mladen = 3;

if ($mladen < 0 ) {
echo '$mladen je negativan';
}
elseif ($mladen == 3) {
echo '$mladen je vrijednosti 3';
}
elseif ($mladen > 3) {
echo '$mladen je veci od 3, dakle pozitivan';
}

elseif je samo dodatni "statement" inace ovo se zove u praksi nested loops.

SWITCH:

U mnogo slučajeva u praksi puno bolje je koristiti switch pogotovo kad znate sto tocno očekujete od varijable
koja vam "dolazi".

Primjetili ste kako mnoge stranice imaju ovakve zavrsetke u URLU : index.php?opt=nesto
Sto to oni rade?
Pa vrlo jednostavno prema upitu iz urla oni odredjuju koji sadrzaj ce vama prikazati.
Lejm nacin i najjednostasvniji je automatski pozivati :

include ($_GET['opt'].".php"); // još nismo spominjali include to cu na kraju

a pravi nacin bi bio koristenjem switch-a.

switch($_GET['opt']) {

case "mladen":
include "nesto.php";
break;

case "pero":
include "nesto_drugo.php";
break;

default :
include "nesto_trece.php";
break;
}


A sada malo govora o loop kontrolnim strukturama. Loop ili petlje su strukture koje se koriste za ponavljanje određenih zadaca u nasem programu. Kao npr. prolazenje kroz rezultat query-a u bazi za određenom vrijednosti.
Pa primjer prvi i najjednostavniji je FOR petlja

primjer: uzet cemo da je nepoznata varijabla $mladen jednaka nekom broju. Dakle tipa integer.
I pretpostavit cemo da je vrijednost manja od 50.

for ($i = 0; $i <= 50; $i++) {

if ($i == $mladen) {

echo '$mladen je jednak '.$i;
}
else {
echo '$mladen nije jednak '.$i;
}
}

Dakle prvo postsavljamo neki fixni broj $i da je jednak 0 i onda kazemo od $i vrijednosti 0 do manje ili jednako 50 uvecaj i svaki put za jedan.
I onda unutar petlje postavljamo pitanje dali je $i == $mladen .. dakle iste vrijednosti kao $mladen.
Ako je onda ispisi da je jednak ako nije onda ispisi da nije.
I to je ta simple for petlja. Iz svake petlje mozemo izaci, pauzirati .. nastaviti petlju..

break;
continue;
break expr;

Idemo na DO petlju

do
{
echo "Power PHP !";
}
while (1);


Kazemo "do" .. radi nesto "while" "1" .. ovo ovdje je beskonacna petlja jer ce nas program vrtiti tj. ispisivati "Power PHP !" do vijeka.


Dakako osim ovih tu je i foreach petlja .. ali za nju bi morao koristiti neke tipove podataka koje jos nismo spomenuli tipa "Array". Zato cu to radije ostaviti kada vas upoznam s time.

E sad cuveno includanje podataka.

Imamo primjer na dva filea :

denifirane.php
--
$def1 = "mladen";
$def2 = "pero";



index.php
--
include ("defninirane.php");

echo "$def1 je prva definirana";
echo '$def2'."je druga definirana i njena vrijednost je $def2";

Kao sto vidite kad includate neki file php mozete pristupati svim vrijednostima iz istog.
Jako korisno kod programske logike je da ne cuvate sve podatke u jednom fajlu. Ovime postizete
odvajanje, logiku i cistocu kodiranja.

Osim tipicnog "include-a" postoji jos "include_once" opcija. Bitna razlika je tu da se varijable koje su vec includane ponovo ne includaju. Ista stvar je i sa require_once opcijom.
Dakle da rezimiramo :

include();
include_once();
require();
require_once();

Require i include rade isto samo se drugacije ponasaju kod gresaka kod includanja samog.
Include ce ucitati bez obzira na gresku dok ce require stopirati proces.


Evo za ovaj dio smo lagano prosli petlje, includanje i kontrolne strukture.
Pocetni uvod za nesto dalje i vise. Dobro proucite cijeli tekst. Za sve detalje uvijek savjetujem.
www.php.net/manual/en ili www.php-hr.net/forum
Gdje sva vasa pitanja vrlo brzo ce poprimit oblik suvislog odgovora!

Pozdrav!

- 15:14 - Komentari (0) - Isprintaj - #

ponedjeljak, 02.01.2006.

Sretna nova evo bloga!

Pozdrav svima koji možda čitaju ovaj blog. Evo u novoj godini sam odlučio pisati o PHPu više nego do sad i malo po malo educirati mase. Ovaj put ukratko sam napisao početni tutorial koji će biti uvod u dalje teme ... svatko ko želi naučiti neka se drži bloga i zajedno ćemo malo po malo otkrivati tajne i rješavati probleme.
Uživajte mi i sve najbolje u novoj 2006!

U zadnjih par godina, PHP je postao najrašireniji jezik u svijetu za WEB platformu. Sve više i više kompanija koristi PHP za razvoj svojih aplikacija, trenuta verzija PHP 5 donosi mnoga poboljšanja za razliku od svojim prethodnih inačica. Tako svim onim okorjelim programerima već počinje ličiti na punokrvni programski jezik. Razlog tomu je vrlo dobra i značajno poboljšana podrška kod objektnog programiranja.
U prvom dijelu pokazat ću osnove PHP programiranja, sintaksa, pisanje komentara, upravljanje varijablama i osnovnim strukturama jezika.



Sljedeće bi trebalo ispisati "HELLO WORLD"

print "HELLO WORLD";

?>




Dakle kao što vidite PHP sintaksa mora počinjati sa "". I imamo osnovnu naredbu za ispis "print"
U ovom slučaju ono što želimo isprintati je HELLO WORLD i on mora biti unutar navodnih znakova i svakako svaka naredba mora završavati sa ";" znakom u suprotnom imat će te grešku na ekranu!

Počnimo sa osnovnim varijablama u PHPu

$count
$_Obj
$A123


Ovo su dozvoljena imenovanja varijabli u PHPu i kako možete imenovati vaše varijable. Radi lakšeg snalaženja u vašem kodu uvijek gledajte što smislenije nazivati varijable. Kasnije kad budete imali po 500tinjak linija baš se i nečete moći snaći u svemu tome, traženje logike će biti mukotrpan posao!

primjer ilegalnih varijabli :

$*ABC
$123

Deklariranje varijabli :

$PI = 3.14;

U ovom slučaju smo varijabli $PI pridjelili vrijednost "3.14". Razlika PHP i npr. Jave koja je najsličnija je u tome što je PHP weakly typed jezik i ne zahtijeva od vas da strihtno predefinirate svaku varijablu. Što je to "predefiniranje".
pa recimo :

Java :

String djomla = "Ovo je moj text";

PHP

djomla = "Ovo je moj text";

Kao što vidite PHP sam određuje kojeg je tipa vrijednost, dok kod Jave morate točno reči što će vam sadržavati određena varijabla. To je mnogo bolje u jednu ruku, jer ovime smanjivate mogućnost pogreške u vašem kodu i na neki način sebe tjerate da budete dosljedni.

Baratanje sa varijablama (osnove) :)

$prvi = "Ja se zovem ";
$drugi = "Pero";
$treci = $prvi.$drugi;
echo $treci;

Kao što možete pretpostaviti ovo će vam ispisati na ekranu "Ja se zovem Pero".

sljedeči primjer :

$prvi = "Ja se ";
$drugi = "Pero";
$treci = $prvi." zovem ".$drugi;
echo $treci;

Ista stvar samo ovdje povezujete vaše dodatke sa varijablama da bi dobili željenu "cjelinu".
u PHPu komentari su isključivo ovog tipa;

// Ovo ovdje je prva varijabla
$prvi = "Ja se ";
$drugi = "Pero"; // Ovo je druga varijabla
$treci = $prvi." zovem ".$drugi; // Ovdje povezivam prve dvije
/*
A ovdje ispod cu ispisati
*/
echo $treci;

Dakle "//" daje linijski komentar dok "blok" komentara okružujete sa znacima "/*" i završavate sa "*/".

Zbrajanje i oduzimanje :)

$prvi = 5;
$drugi = 6;

$treci = ($prvi * $drugi)/$prvi;
$cetvrti = $prvi + $drugi;
$peti = $prvi - $drugi;

Mislim da ovdje ne trebam puno objašnjavati i da ste već uhvatili u hod lagano kako matematičke operacije moraju iči.

Jedna zanimljiva stvar kod PHPa su reference.

$a = "mladen";
$b = $a;
$b = "pero";

echo $a."n";
echo $b."n";

Uzmimo za primjer ovaj blok koda.
napomena : n označava početak novog reda. Dakle kad ispiše varijablu ide u sljedeči red!Mogli smo staviti i HTML kod "
" ista je stvar.
Dakle varijabli $a pridružimo vrijednost "mladen", kasnije varijabli $b pridružimo vrijednost varijable $a ali u ovom slučaju samo kloniramo vrijednost varijable $a .. kasnije $b mjenjamo u "pero". Ali što ako je naš kod pisao ovako :

$a = "mladen";
$b = &$a;
$b = "pero";

echo $a."n";
echo $b."n";

primjetite razliku "$b = &$a" ovime smo referencu varijable $a prosljedili na varijablu $b tako kad se vrijednost $b bude mjenjala mijenjat će se i vrijednost $a.Sve sa znakom "&" :)

Prešli smo ukratko baratanje sa osnovnim pojmovima u PHPu. Sljedeči put idemo na petlje. Mnogo zanimljivije i interesantnije od ovoga.


Pozdrav svima,
Ko je kul ima moć!! :)

- 13:47 - Komentari (0) - Isprintaj - #

petak, 30.12.2005.

Open wireless




Sve veca i veca je opca pomama za wireless tehnologijama danas. Tako svaki tuto ima doma wireless "kutiju" preko koje se on "spaja" na internet. To mu je polazna tocka za ovaj svijet.
No ne uviđa mogucnosti koja ta kutija pruza, a sigurnost u svemu tome je zadnja rupa na svirali.
Nemoze se tu cak ni okriviti krajnjeg korisnika tu bi prije okrivio nesposobnost "ovlastenih" osoba, a pod time mislim djelatnike poste i slicnih provajdera, koji jednostavno ili nemaju ili ne zele osigurati svog korisnika od eventualnih nezgodnih trenutaka koje bi mu ta kutija mogla pruziti u koliko nije podesena kako treba.
Uzet cu za primjer moje ukucane, koji su iole educiraniji korisnici oko "internetâ" :)
Dakle situacija .. uredna pretplata na MaxADSL, lijepi i dobri ljudi iz poste su dosli postaviti sam uređaj. Sve super difno krasno ... no uredaj je postavljen bez iti jedne zastite na sebi. Jedina zastita je bila to sto si se morao logirati na router da bi se spojio na internet.
E sad uzmemo u obzir da u mene u susjedstvu postoji zli gospon 'aker koji sa svojom ultra mocnom wireless karticom povremeno skenira susjedstvo u zelji da nadje "ovakav" pristup koji omogucava svima da pristupe i da se logiraju.

U onom trenutku kad moji pokrenu preko svog laptopa spajanje na internet problemi nastaju.
Svak vidi mrezu koja je otvorenog tipa, bez SSIDova bez ista a ne rijetko mnogi postave SSID npr. HT ili slicno.
I dakle obicnim bezazlenim skeniranjem otkrivamo par mreza preko kojih se mozemo spajati.
Gle sad ovo :




Dakle tocno ono sto sam rekao .. previse defaultnih postavki. Sto omogucuje svakome iz susjedstva mirno surfanje preko vase mreze bez po muke. Pa zar ste uzeli taj DSL za sebe i druge ili volite tako dijeliti stvari?? :)

Ovim tekstom sam samo htio pobuditi vasu mastu i da se ovakve stvari ne dogadjaju.Barem otezajte posao nekima pa sakrij te SSID vaseg access pointa .. jer ovo je kao otvoreni porsche sa kljucevima ostavljenima na prednjem sicu...
Osnovne postavke nekog wirelessa bi ipak bile pozeljne....

Za sljedeci put pripremam izvjestaj sa dubrovackih ulica ... kakvo je wireless stanje u gradu.

p.s. Sinoc je skenirano povise robne kuce srdj .. bilo je 4-5 upaljenih APova bez ikakve zastite, Max-DUWIFI (tako nesto) mreza i moj AP :)

- 08:36 - Komentari (0) - Isprintaj - #

četvrtak, 29.12.2005.

MIRAKUL

Nije Gibo nego moja Wireless kartica :)
vec prije spomenuta






Nemogu vjerovat sinoc nakon dugih patnji i problema sa istom jedna fora je bila dovolja da sve pocne raditi kao sat, samo jedna jedina fora :

prilikom loadanja Linuxa bilo live distre ili onog instaliranog na kompu samo je trebalo upisati u boot opciju :

PCI=ASSIGN-BUSSES

Radi ma radi ka sat, kano soko sinji .... kengurko :)
Presretan sto nisam djabe bacio pare kismet, airsnort i svi programi za karticu rade ko podmazani .. da covjek nemoze vjerovat a toliko truda i patnji da to proradi sve. A gle sad :)
Ma MIRIKL :)
Uzivajte mi a ja odoh danas-sutra u wardriving pa se javimo sa izvjestajem gdje ima pogodnih mreza u gradu :)

- 08:59 - Komentari (0) - Isprintaj - #

utorak, 27.12.2005.

Rođendan ili Java ?? :(

24 na pragu ... pobogu kad se okrenem tako je ovo brzo proletilo. Kako, zasto tako brzo ??
Al sta's sad ... sta je tu je idemo dalje.
Problemi sa mojom novom karticom D-link G650 prokleti bili jos nisu napravili drivera za x64 arhitekturu.
Tako da moram kemijat sa nekim Atheros driverima. Ali opet i to ne funkcionira. No osmijeh na lice za rođendan navukla mi je novost sljedeceg linka :

http://www.remote-exploit.org/index.php/Auditor_mirrors

Auditor je free liveCD distribucija bazirana na linuxu i kako kazu imaju podrsku za atheros kartice "madwifi" driveri. Danas popodne cemo skinuti, testirati i isprobati.
Stvarno se nadam da ce raditi jer mi se neda razmisljati o tome da sam bacio 400 kna :)

Danas sam poceo sa projektom CroCar, on-line sustavom za rent-a-car poslovnice.
Detalje cemo vidjeti jos malo .. sad razvijamo bazu :)
btw. MicroOLAP Database Designer ... vrlo korisna stvar .... free trial .. crack nedam :P :)

- 11:29 - Komentari (3) - Isprintaj - #

četvrtak, 22.12.2005.

Blagdani nam stižu

Depresivno vrijeme ovo pred blagdane. Nekako imas osjecaj tu su pred vratima pa ti se onda nista zivo neda. Jutros uzasno lose deployanje tomcata na web server navelo me na razmisljanje o poslu, bezveze znam al eto :)
Kompletan smisao te Jave mi neide u glavu, jer je po meni stvar i vise nego zakomplicirana. Deskriptor tamo, deskriptor amo ... pa onda pomutnja u prvim redovima. Mislim daleko od toga Java je mnogo jak jezik za razliku od PHPa ali opet taj PHP ima svoje cari.
Uzet cu za primjer obicne aplikacije koje sam radio u zadnja dva tjedna.
Dakle potrebno je bilo izvesti logiranje na stranice 10tablica vezanih i mjenjanje/unos podataka u iste.
Java po meni i nije toliko za web koliko je PHP. Java ima dobro podrsku za sve ostalo ali za WEB i prefer PHP. Toliko mocan jezik a tako jednostavan za shvatiti i za koristiti u praksi.
Eh da .. narucio sam knjigu DHTML Utopia sa Sitepointa sad jedva cekam da dodje...... a onda cemo se malo baciti na JavaScript.

U zadnje takodjer dosta razmisljam o wirelessu. Kako svi bolji programi "kismet", "aircrak" rade provjereno na linuxu trebala mi je neka kartica koju cu uspjesno upogoniti na rad ali bas na linuxu.
Od svih kartica najvise u oko mi je zapela Orinoco a/b/g Gold kartica koja provjereno radi na SVEMU.
No kako je budjet malo skresan pa imam oko 400 kna na te pizdarije da potrosim ta kartica i sva razmisljanja o njoj su brzo pali u vodu. Odlucio sam nac nesto jeftinije i mislim da sam skoro i pronasao :)
DLINK -G650 kartica sa Atheros chipsetom koja bi trebala raditi na linuxu uspjesno.
Driveri za nju : http://sourceforge.net/projects/madwifi/

Nije plug and play ali makar ima drivere. Sto na mom laptopu sa broadcom karticom i nije bas najlakse za nac drivere. Mislim upogonio sam ih ali potrebno je bilo 3 fkin modula da bi proradila. To je ipak za moj ukus malo previse.
Dakle svak ko zeli jeftinije ali dobro DLINK -G650 je pravi izbor cak je nadjoh za 350 kna.
E da ... ta kartica nema prikljucak za externu antenu (tako pise sa njom), ali u stvari ona ima prikljucak.
O tome cemo drugi puta :)

- 09:51 - Komentari (0) - Isprintaj - #

utorak, 20.12.2005.

Ajax

Ne nije to jos jedan nogometni klub na ovim nasim balkanskim podrucjima.
Rijec je o relativno staroj "tehnologiji" samo sa modernijim pristupom i gledanjem na web.
Ustvari radi se o Javascript tehnologiji zajedno sa XML-om.
Ovdje cu prikazati tj. pokusati objasniti shemu kako stvari funkcioniraju ....
Koristit cemo Ajax sa PHPom, a "tool" za to ce nam biti SAJAX. Kojeg uredno mozete skinuti sa
http://www.modernmethod.com/sajax/
On je nista vise nego obican wrapper u php-u koji sluzi za olaksavanje situacije na terenu.
Za primjer cu uzeti kalkulator:
demo : http://www.modernmethod.com/sajax/sajax-0.10/php/example_multiply.php
source : http://www.modernmethod.com/sajax/sajax-0.10/php/example_multiply.php.txt

E sad kad imamo sve krecemo from the start. Ne zanima nas Ajax ... nego SAJAX kao wrapper.
Imamo kod



input type="text" name="x" id="x" value="2" size="3">
*
input type="text" name="y" id="y" value="3" size="3">
=
input type="text" name="z" id="z" value="" size="3">
input type="button" name="check" value="Calculate"
onclick="do_multiply(); return false;">



Dakle svaki element na nasem "siteu" ima pripadajuci ID. name="X" ima id="x", a name="y" ima id="y"
mozete definirati kako hocete samo da bude strihtno. Dva polja x i y su unosi a z je naravno produkt :)

imamo i button koji na event onClick radi do_multiply(); U tom trenutku pocinje akcija.
No ajmo mi na PHP kod i includanje sajaxa


require("Sajax.php");

function multiply($x, $y) {
return $x * $y;
}

sajax_init();
// $sajax_debug_mode = 1;
sajax_export("multiply");
sajax_handle_client_request();


Prva linija poziva putanju do sajaxa i tik ispod nje imamo PHP funkciju koja unosne dvije varijable mnozi i vraca njihov umnozak. Ispod startamo Ajax, i jedna od najbitnijih exportiramo tu funckciju :)
Jako bitno za zapamtiti ... pazite na ilegalna imena poput mail, sendmail i slicno. I na kraju obavezno
sajax_handle_client_request(); bez ovih stvari sada necete daleko :)

Konacno dolazimo na javascript ... on je u stvari vrlo jednostavan ....


function do_multiply_cb(z) {
document.getElementById("z").value = z;
}

function do_multiply() {
// get the folder name
var x, y;

x = document.getElementById("x").value;
y = document.getElementById("y").value;
x_multiply(x, y, do_multiply_cb);
}


Rekli smo da button onClick zove funkciju do_multiply(); ... sta ona radi.
Prvo setira dvije varijable "var x,y" onda tim varijablama pridruzuje neke vrijednosti. Sad je tu bitno kako ste nazivali one id-ove dole. x=document.getElementById("x").value vraca vrijednost input polja pod ID-om "x" ili kako ste ga vec nazvali. Kad imate obije vrijednosti funkcija zove drugu funkciju
x_multiply(); => ovo je ustvari nasa PHP funckija samo exportana ima prefix x_ :)
Ali djomla kako tri vrijednosti kad nasa PHP funkcija prima samo dvije. Treca vrijednost u pozivanju funkcije "do_multiply_cb" kaze da rezultat funkcije x_multiply vrati u funkciju do_multiply_cb
a ona radi sljedece :


function do_multiply_cb(z) {
document.getElementById("z").value = z;
}


Preuzima vracenu vrijednost PHP funkcije i postavlja ID-z (njegovu vrijednost) na Z, dakle na vrijednost koju je PHP funkcija vratila.

voila ... cas posla. Fino i frisko ... See you next time ...

- 13:30 - Komentari (0) - Isprintaj - #

Apache and SSL na vašem stolu

Evo da obradujem siroke pubne mase i napisem brzopotezni/pleti tutorialchic o SSLu.

Radnja... Linux Fedora 2 ... apache 2.
Daklem svi konfiguracijski fileovi se nalaze u direktoriju

/etc/httpd

Standardni conf se nalazi

/etc/httpd/conf

a svi ostali confovi (citaj za php, ssl, etc.) nalaze se unutar

/etc/httpd/conf.d

Simulirat cemo sljedecu situaciju ...
Sami ce te sebi izdati certifikat i probat se spojiti https://localhost
Zanimljivo samo da napomenem da Apache 1 nije imao podrsku za SSL Virtualne hostove dok novi ima ... jupiiii??? Smile
E sad ... prije svega moramo si izdati certifikat jeli??
e pa ajmo Smile

code:
[root@djomla][/etc/httpd/conf]pwd
/etc/httpd/conf

[root@djomla][/etc/httpd/conf]ls
httpd.conf httpd.conf.old magic ssl.crl ssl.csr
httpd.conf.bak httpd.conf.rpmsave Makefile ssl.crt ssl.key

[root@djomla][/etc/httpd/conf]make php-hr.crt
umask 77 ;
/usr/bin/openssl genrsa -des3 1024 > php-hr.key
Generating RSA private key, 1024 bit long modulus
.....................++++++
..............++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ;
/usr/bin/openssl req -new -key php-hr.key -x509 -days 365 -out php-hr.crt
Enter pass phrase for php-hr.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:
State or Province Name (full name) [Berkshire]:
Locality Name (eg, city) [Newbury]:
Organization Name (eg, company) [My Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:localhost
Email Address []:
[root@djomla][/etc/httpd/conf]



Eh sad opis stanja ... znaci usmjerili smo se u direktorij /etc/httpd/conf
i Izdali naredbu "make php-hr.crt" dakle da napravi certifikat koji ce se zvati php-hr.crt i php-hr.key. Dakle sastoji se od public keya i private keya.
Kad smo ukucali make php-hr.crt
Vidimo da se radi o 1024 bitnoj enkripciji(valjda:))
pita nas passworde i verifikaciju passworda.
Na dalje on ide i pita "Country name" i slicne gluposti .. nista to nije toliko bitno za sada osim ovo gdje sam napisao localhost .. na svim onim mjestima sam lupio enter Smile
dakle izdajemo ga za koji hostname i stavio sam localhost...
E ajmo dalje

code:
[root@djomla][/etc/httpd/conf]ls
httpd.conf httpd.conf.rpmsave php-hr.crt ssl.crt ssl.prm
httpd.conf.bak magic php-hr.key ssl.csr
httpd.conf.old Makefile ssl.crl ssl.key
[root@djomla][/etc/httpd/conf]

[root@djomla][/etc/httpd/conf]mv php-hr.crt ssl.crt/
[root@djomla][/etc/httpd/conf]mv php-hr.key ssl.key/
[root@djomla][/etc/httpd/conf]cd ssl.key/
[root@djomla][/etc/httpd/conf/ssl.key]mv php-hr.key php-hr.key.orig
[root@djomla][/etc/httpd/conf/ssl.key]openssl rsa -in php-hr.key.orig -out php-h
r.key
Enter pass phrase for php-hr.key.orig:
writing RSA key
[root@djomla][/etc/httpd/conf/ssl.key]ls
php-hr.key
php-hr.key.orig
[root@djomla][/etc/httpd/conf/ssl.key]



Dakle dobili smo php-hr.key i php-hr.crt ... i njih smo makli u direktorije ssl.crt i ssl.key ... Da bi smo rijesili dilemu kad restartamo apache da nas pita za password usli smo u direktorij ssl.key
i udarili prvo mv php-hr.key php-hr.key
naredbom openssl smo makli password iz naseg keya i time dobili da kad resetiramo apache nece nas vise pitati za password

I ovime smo rijesili vecinu ... sad nam ostaje conf file editirati Smile
Ajmo??

code:
[root@djomla][/etc/httpd/conf]cd ..
[root@djomla][/etc/httpd]cd conf.d/
[root@djomla][/etc/httpd/conf.d]pwd
/etc/httpd/conf.d



I otvorimo SSL.conf sa svojim omiljenim editorom (moj je "vi")
E sad linije koje su nam potrebne su :

#
# When we also provide SSL we have to listen to the
# standard HTTP port (see above) and to the HTTPS port
#
Listen 443

/* Da slusa port 443 */

NameVirtualHost 192.168.68.1:443

/* Ovdje stavimo IP od naseg stroja */

DocumentRoot "/var/www/html"
ServerName localhost:443

/* Standardne postavke za defaultni DocumetRoot i server ime */

SSLEngine on

SSLCertificateFile /etc/httpd/conf/ssl.crt/php-hr.crt

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/php-hr.key

I to je u principu sve
restartajte apache

service httpd restart
I SSL radi ...

napomena (za one koji zele znati vise) u slucaju da zelite imate vishe virtualnih SSL domena unutar istog filea moramo dodati sljedece :

code:

ServerName localhost
DocumentRoot "/var/www/html"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/httpd/conf/ssl.crt/php-hr.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/php-hr.key




Dakle ponavljamo nase defaultne postavke isto kao da je rijec o VirtualnomHostu i tek onda ispod dodajemo novi Virtual host

code:

ServerName mladen.nesto.hr
DocumentRoot "/home/mladen"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/httpd/conf/ssl.crt/mladen.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/mladen.key





Eto ga ... Smile

U koliko ima netko pitanja ... feel free to screem Smile

- 11:07 - Komentari (0) - Isprintaj - #

Apache ünd Tomcat

Evo jedna tema ne baš tako usko vezana uz PHP ... radi se o Javi.
Ali svejedno mozda nekome i dobro dođe Smile

Dakle dobih zadatak da integriram Apache web server sa Tomcat web serverom koji sluzi kao web server za java aplikacije.
Apache kako dobro znamo radi na portu 80 i na tom portu osluskuje konekcije dok Tomcat radi na portu 8080 po defaultu.

Dakle nasa stranica obicna

www.nasite.com/neka.html bi bio primjer apache web servera

Dok npr. da hocemo to izvesti preko Tomcata trebalo bi

www.nasite.com:8080/neka.jsp ili neka.html svejedno.

Da bi korisniku unjeli sto manje zbunjoza pogotovo oko portova zasto ne integrirati Apache zajedno sa Tomcatom, nista novo i već viđeno.
Doduše malo komplicirano.

Što nam u stvari treba

Apache instaliran
Tomcat web server (ovo testirano sa verzijom 4.1.31)
i mod_jk modul za apache koji sluzi upravo povezivanju dva web servera.

Dakle mod_jk je najbolje downloadati od sourcea ili za vas windowsase ima vec gotov binary.

http://apache.mirrors.hoobly.com/jakarta/tomcat-connectors/jk2/

kad smo skinuli nas source ...

otpakujemo ga ...

tar zxvf jakarta-tomcat-connectors-current-src.tar.gz

uđemo u direktorij

cd jakarta-tomcat-connectors-current-src.tar.gz

./configure --with-apxs=/usr/sbin/apxs
make
make install

napominjem ovo je buildanje modula za apache ... oni na windozama ce vec dobiti modul.
E sad kad smo zgotovili buildanje modul ce se nalaziti
u root folderu od apache-a u direktoriju modules/
kod nas na linuxu Smile ce biti /etc/httpd/modules

Super sad nam jos ostaje podešavanje httpd.conf-a Smile

Modul ce nam se vjerovatno zvati jakarta-tomcat.so ili nesto slicno
ali promjena imena nece uzrokovati bitne promjene.
Dakle preimenujte ga slobodno u mod_jk.so

E sad httpd.conf

dakle trebamo prvo loadati modul:

LoadModule jk_module modules/mod_jk.so

JkWorkersFile /etc/httpd/conf.d/worker.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug

Glatke postavke modula, ugledajte:) ovaj worker.properties

evo kako on izgleda :

worker.list=testWorker
worker.testWorker.port=8009
worker.testWorker.host=localhost
worker.testWorker.type=ajp13

Sta se ustvari događa natjerat ćemo Tomcata da na portu 8009 "osluškuje" za nadolazece "zahtjeve". Ali docemo do toga.


JkMount /jakarta/webapps/ROOT/test/WEB-INF/* testWorker
JkMount /jakarta/webapps/ROOT/test/*.jsp testWorker



Tomcat sve fajlove smješta u ROOT direktorij tu smo kreirali direktorij test
i njega cemo staviti tj. stavili smo ga kao trenutacni root folder i sve datoteke smo mountali .... Smile
Fino kad smo to odradili ostaje nam još za srediti Tomcata da sluša na portu 8009

/jakarta/conf/server.xml

meni je takav file uglavnom unutar root direktorija od tomcata tražite direktorij conf sa server.xml fileom.
I sada tamo gdje su vam postavke oko konekcija samo dodate sljedece :

port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0"/>

Voila, restartajte Tomcat i imate sve spremno. Još glatki restart apachea i provjerite kako radi vasa konfiguracija.

http://www.nasite.com/test/index.jsp

- 11:06 - Komentari (0) - Isprintaj - #