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 - #