Showing posts with label git. Show all posts
Showing posts with label git. Show all posts

Monday, August 1, 2011

Gittegylet meg a Yii - avagy Yiiki 2.0 (4. rész)

Ebben a negyedik és egyben utolsó részben kicsit kifényesítjük a programunkat, olyan finomságokat rakunk majd bele, mint MarkDown-parser (markdown értelmező), WIKI editor és a legvégén pedig megnézzük hogyan lehet a Git (illetve a Github) segítségével forrásunkat publikussá tenni.

Fejlesztéseink közben gyakran fordul elő olyan helyzet, hogy valaki (lehet, hogy mi magunk) valahol máshol (pl. egy másik keretrendszer alatt) már megoldotta a felmerülő problémát és szeretnénk a kódot újra felhasználni. Erre Yii barátunk többféle lehetőséget ad. Használhatunk, kifejezetten Yii-nek szánt kiterjeszések -et (extensions: http://www.yiiframework.com/extensions/ ) vagy teljesen Yii-től független csomagokat. Ilyen például a ZendFramework-be beépített RSS kezelő rendszer. Nekünk jelenleg erre nincs szükségünk, de ha valakit bővebben érdekel, az itten járhat utána: http://www.yiiframework.com/doc/cookbook/20/.

MarkDown

Szerencsénkre Yii már az 1.0-ás verzió óta rendelkezik egy ún. MarkDown osztállyal (CMarkdown) és egy MarkDown widget-tel amit a megjelenítésre fogunk használni. Nyissuk is meg a Nézet file-unkat és módosítsuk:
 /protected/views/page/view.php



... és ennyi, a megjelenítés kész is van. A CMarkDown osztályról és használatáról itt lehet bővebben olvasni: http://www.yiiframework.com/doc/api/1.1/CMarkdown

Zii

A Zii nem más mint a hivatalos, Yii fejlesztők által támogatott extension- azaz kiterjesztés könyvtár. Ez együtt érkezik magával a Yii rendszerrel tehát nem kell semmi mást beállítanunk vagy installálnunk. Ezzel szemben van egy YiiExt nem hivatalos kiterjesztés-könyvtár amit innen http://code.google.com/p/yiiext/ lehet elérni. Innen fogjuk mi a markItUp szövegszerkesztőt beállítani, ami szépen megy a már előre felkészített MarkDown tipusú Oldalainkhoz.

Töltsük is le a markit_xx.zip file-t (http://code.google.com/p/yiiext/downloads/detail?name=markitup_1.1.zip&can=2&q=), tömörítsük ki és másoljuk be a legutolsó markitup/ mappát a protected/extensions/ alá. Ha ezzel megvagyunk egyszerűen csak hívjuk meg a widget-et a protected/views/page/_form.php file-ban és állítsuk be a paramétereket:



Ha mindent jól csináltunk akkor valami ilyesmit kell, hogy lássunk ha meglátogatjuk a http://localhost/yiiki2/index.php?r=page/create oldalt:



Maga a WIKI szerkesztőnk már egész jól néz ki, de milyen jó lenne ha a title meg a body feliratok magyarul jelennének meg. Ezt nagyon egyszerűen a Page modell osztályunk attributeLabels() függvényével tehetjük meg.

Github

A Git forráskezelő előretörését nagy mértékben segítette a Github oldal, ami nem más mint egy online kód tároló, ahová teljesen ingyé feltehetjük a kódunkat. Egyébként már a Google is támogatja a Git-et a Mercury meg az SVN mellett. Ha eddig nem tettük volna, az első cikk alapján commit-oljuk a változásainkat, és készítsünk egy fiókot a Github oldalon. Ha ezzel megvagyunk, akkor készítsünk egy new repository-t. Miután beállítottuk az alap paramétereket (csak a név kötelező), az új oldalon csak kövessük végig az utasításokat az Existing Git Repo? rész alatt. Ha minden igaz, valahogy most így nézünk ki:



A programot egyébként itt is meg lehet találni: https://github.com/imehesz/Yiiki2 és a a Github egyik erőssége az ún. fork-olás ami azt jelenti, hogy ha pl. találunk egy hibát a kódban, fork-olhatjuk az eredetit, kijavíthatjuk és jelezhetjük a program készítőjének egy pull-request-tel azaz pull kéréssel, hogy a kód javítva lett, és ha jónak találja, akkor frissítheti az eredeti kódot.

Hát ennyi. Remelém aki végig követte a sorozatot annak sikerült valamit tanulni belőle. Indítottam egy fórum bejegyzést annak akinek segítségre van szüksége, nem ígérem, hogy azonnal de megpróbálok mindenkinek válaszolni. (Akinek meg van kedve segíteni a válaszadásban annak előre is köszönöm)

Tuesday, July 12, 2011

Gittegylet meg a Yii - avagy Yiiki 2.0 (1. rész)

Ugyan ez egy új cikk, de nem teljesen. Talán a tavaly szeptemberben megjelent Yiiki avagy WIKI a'la Yii cikkben bemutatott rendszer 2.0-ás változatának lehetne tekinteni. 

Elég sok idő eltelt azóta és maga az alap keretrendszer is sokat változott, szerencsénkre. Még annyival szeretnénk kicsit megfűszerezni a fejlesztést, hogy bevonjuk a mostanában nagy népszerűségnek örvendő Git forráskezelőt. Vágjunk is bele.

Bevezetés

Magába az alapok installálásába nem fogunk belemenni, itt csak felsoroljuk mi mindent kell ismerni:

- Objektum Orientált Programozás (PHP 5): A jelenleg stabil Yii 1.1.8-es verzió a PHP 5.1-en alapszik, tehát annak ismerete mindenképp szükséges. - http://hu.wikipedia.org/wiki/Objektumorientált_programozás

- Adatbázis (SQL): A Yii, alapból sokféle adatbázis motort támogat. Az itteni példában én a SQLite-ot fogjuk használni, mert nem igényel különösebben bonyolult szerver oldali beállítást -  http://hu.wikipedia.org/wiki/SQL

- MVC (Model-View-Controller) avagy Modell-Nézet-Vezérlő: A Yii az egy MVC-t szorgalmazó keretrendszer. Dióhéjban annyit jelent, hogy az alkalmazás jól elkülöníthető 3 részre. Az M vagy modell, ami az adatbázis jellegű lekérdezéseket végzi, a C vagy vezérlő ami kapcsolatot teremt és feldolgoz felhasználók által bevitt információt és végül a V vagy nézet, ami pedig magát a megjelenítést végzi. Ilyen többek között a Ruby On Rails rendszer is. - http://hu.wikipedia.org/wiki/MVC

- Active Record - ami tulajdonképpen "megszűnteti" a függőséget a különböző adatbázisok között és az adatbázis táblákat objektumokként kezeli. Ez a gyakorlatban azt jelenti, hogy mondjuk fejlesztői környezetben használhatunk SQLite-ot élesben pedig MySQL-t vagy MsSQL-t stb.  - http://en.wikipedia.org/wiki/Active_record_pattern

- Git, forráskezelés - vagy verziókezelés alatt több verzióval rendelkező adatok kezelését értjük. Leggyakrabban a mérnöki tudományokban és a szoftverfejlesztésben használnak verziókezelő rendszereket fejlesztés alatt álló dokumentumok, tervek, forráskódok és egyéb olyan adatok verzióinak kezelésére, amelyeken több ember dolgozik egyidejűleg.

Apache, Nginx és egyéb web szerverek beállításába nem szeretnénk itt belemenni. A programot a következő konfigurációval készítettük:
- Ubuntu Linux (10.10)
- Apache 2.x
- SQLite 3
- PHP 5.3.x
- Yii 1.1.8

- Csomagoljuk ki a letöltött Yii-t a web szerverünk fő könyvtárába (pl. /var/www/yii ), a forráskód majd szintén a /var/www alá kerül (pl: /var/www/yiiki2).

Az is fontos, hogy a Yii rendszer a parancssorból is futtatható legyen! (PHP CLI)


A WEB alkalmazás létrehozása

Az alap alkalmazás létrehozása rendkívül egyszerű, csak adjuk ki a kovetkező utasítást (a web szerver root könyvtárából, ahol reméljük a maga a Yii rendszer is elhelyezkedit (pl /var/www).

./yii/framework/yiic webapp yiiki2





Ha minden jól sikerült, akkor a "Your application has been created successfully under /var/www/yiiki2" - szerű üzenet jelenik meg, ami röviden annyit jelent, hogy az alap program sikeresen létrehozva a megadott mappa alatt.

Azt már itt érdemes megjegyezni, hogy a programunk már ebben a fázisban működőképes. Ha megtekintjük a URL-t egy böngészőben (pl http://localhost vagy http://yiiki.peldaprogram.local) akkor egy (remélhetőleg) üdvözlő képernyő fogad bennünket.


Na itt a Git

Már rögtön az elején érdemes a munkánkat a forráskezelő alá tenni. Lépjünk be a yiiki2/ mappa alá és adjuk ki a következő parancsot.

$git init
Initialized empty Git repository in /var/www/yiiki2/.git/


Ez csak annyit jelent, hogy a Git sikeresen létrehozott egy üres (empty) forrástárat a megadott mappa alatt. Ha most megnézzük a könyvtárszerkezetet, akkor valami ilyesmit kell, hogy kapjunk. (rejtett file-okat is mutatva!)

$ll

drwxr-xr-x  8 imehesz imehesz 4096 2011-07-08 22:34 ./
drwxr-xr-x 42 imehesz imehesz 4096 2011-07-08 22:19 ../
drwxrwxrwx  2 imehesz imehesz 4096 2011-07-08 22:19 assets/
drwxr-xr-x  2 imehesz imehesz 4096 2011-07-08 22:19 css/
drwxr-xr-x  7 imehesz imehesz 4096 2011-07-08 22:34 .git/
drwxr-xr-x  2 imehesz imehesz 4096 2011-07-08 22:19 images/
-rw-r--r--  1 imehesz imehesz  478 2011-07-08 22:19 index.php
-rw-r--r--  1 imehesz imehesz  481 2011-07-08 22:19 index-test.php
drwxr-xr-x 14 imehesz imehesz 4096 2011-07-08 22:19 protected/
drwxr-xr-x  3 imehesz imehesz 4096 2011-07-08 22:19 themes/

Láthatjuk is, hogy a .git mappa ott figyel, amibe a Git program fogja tárolni a változtatásainkat.

Rutinos Yii-s mókusként tudjuk azt, hogy az assets/ a protected/runtime/ és a protected/data/ mappa alatt a Yii olyan dolgokat fog tárolni ami 99%-ban minden rendszeren más és más (pl. fejlesztői és éles környezet!), tehát érdemes lenne ezeket nem forráskezelő alá tenni, mert egyszerűen semmi értelme.

A Git erre egy nagyon elegáns megoldást kínál (illetve többet is), egyszerűen hozzunk létre egy file-t .gitignore néven (a yiiki2/ mappa alatt), és adjuk meg neki ezeket az útvonalakat. Így amikor a git ezekhez a mappákhoz ér, egyszerűen figyelmen kívűl hagyja őket. A gyakorlat azt diktálja, hogy még pár dolgot ne vegyünk forráskezelés alá, ilyenek például az adatbázis file-ok, vagy tömörített file-ok stb. Tehát a .gitignore file-unk valahogy így nézzen ki.

$less .gitignore

assets/*
protected/data/*
protected/runtime/*
*.zip
*.sqlite


Nos, eddig megvolnánk, de ha jól emlékszünk akkor a Git az elöbb azt mondta, hogy egy üres rendszert hozott létre. Ez igy is van. Az egyik legfontosabb Git parancs amit gyakran használni fogunk az a git status. Adjuk is ki:

$git status
# On branch master

#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
# .gitignore
# css/
# index-test.php
# index.php
# protected/
# themes/
nothing added to commit but untracked files present (use "git add" to track)


Amint láthatjuk, annyi történt, hogy a Git kilistázta, hogy mely file-ok változtak. Jelen esetben azonban még semmi nem változott, hiszen még semmit nem rendeltünk a forráskezelő alá. Ezt egyébként alul a Git szépen jelzi is, hiszen azt mondja, hogy nincs semmit a commit-hez hozzáadnunk, azonban vannak olyan file-ok amiket nem követ. Ja, és azt tanácsolja, hogy ezeket a git add utasítással adhatjuk a forráskezelő alá. Remek, pont ez kell nekünk. Adjuk is ki:


$git add .


A pont "." az azt jelenti, hogy MINDEN használható file-t vagy változást adjon hozzá a forráshoz. Miután kiadtuk a parancsot, szemmel láthatóan semmi nem történt, azonban a Git a háttérben szorgosan dolgozik. Ha most kiadjuk a git status -t, egyből észrevesszük, hogy igenis valami történt:



# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
# new file:   .gitignore
# new file:   css/bg.gif
# new file:   css/form.css
# new file:   css/ie.css
# new file:   css/main.css
# new file:   css/print.css
# new file:   css/screen.css
# new file:   index-test.php
# new file:   index.php
...


A lista elég hosszú, ide csak egy kis részletet illesztettünk be! A lényeg az, hogy ezek a file-ok készen állnak az un. commit-álásra, ami annyit tesz, hogy a módosításaink (jelen esetben új file-jaink) véglegesen a forrás részei lesznek. Magát a commit-álást pedig a -drrrrr ... dobpergés- git commit paranccsal hatjuk végre:


$git commit -m "itt a Yiiki2.0, elso commit-unk"


A -m (message) azaz üzenet, azt jelenti, hogy üzenetet fűzhetünk a commit-hez, aminek hiányát néhány programozó törzsek gyakran kéz- és/vagy fejvesztéssel büntetnek. Persze a képernyőn minden gyorsan leszalad, azért nézzük meg mi is történt:



[master (root-commit) 9e22a96] itt a Yiiki2.0, elso commit-unk
 Committer: Imre Mehesz <imehesz@imehesz-laptop.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:


    git config --global user.name "Your Name"
    git config --global user.email you@example.com


If the identity used for this commit is wrong, you can fix it with:


    git commit --amend --author='Your Name <you@example.com>'


 34 files changed, 1512 insertions(+), 0 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 css/bg.gif
 create mode 100644 css/form.css
 create mode 100644 css/ie.css
 create mode 100644 css/main.css
...

Itt azt irta ki, hogy létrejött a commit, és a rendszer beállította a nevünket és az email címünket, de azért ellenőrizzük, hogy jó e. Még talán egy git parancsot érdemes itt megemlítenünk, a log -ot, ami az utolsó commit-okat listázza ki:

$git log
commit 9e22a96c0d94b58cb780eaa0d53fedd24df99242
Author: Imre Mehesz <imehesz@imehesz-laptop.(none)>
Date:   Fri Jul 8 23:24:51 2011 -0400

    itt a Yiiki2.0, elso commit-unk

Ebből a commit azonosítón kívül az is látszik, hogy pénteken este fél 12-kor nincs más dolgom, minthogy ilyeneket irogassak :)

A következő részben reméljük már talán valami kódot is sikerül majd írnunk!

Tuesday, October 19, 2010

Yii Radiio 33. adás

Végre itt van a már rég óta beharangozott interjú a Yii könyv szerzőjével, Jeff Winesettel. (maga az anyag angolul van, itt csak nagyjából összefoglaltam, miről beszélgettünk.)

Ez egy elég érdekes adás (#33), ugyanis mind terjedelmében, mind tartalmában eltér a megszokott formától, de nem kell aggodni, nem marad így ;)

Összefoglaló:

Többek között arról beszélgetünk, hogy Jeff és csapata (Control Group Inc.) miért választotta a Yii rendszert, hiszen nagyon sok hasonló PHPs progamozási megoldás (keretrendszer) található manapság az interneten. Jövendőbeli könyvíróknak talán hasznos lehet, hogy hogyan sikerült megbírkózni a gyorsan megjelenő verziókkal, hiszen egy programozási könyvet azért (is) nehéz megírni, mert maga a rendszer (is) gyakran változhat és bizony vátozik is. (A Yii elég fiatalnak számít a "nagyágyúk" mellett).

Említésre kerül továbbá TrackStar, azaz alkamazás amit a könyv alapján készítünk, a Teszt Alapú Fejlesztés fontossága, és néhány szó a különböző forrás kezelő megoldásokról (SVN, GIT).

Meglepetés:


Jelenlegi szponzorunk (Packt Publishing) felhatalmazott bennünket, hogy elajándékozzunk 3 db elektromos Yii könyvet INGYÉ.

Ha még nincs meg (vagy jó lenne az eredeti ...) csak annyit kell megtennetek, hogy küldtök egy email-t a yiiradiio [kukac] mehesz.net -re, amiben néhány mondatban leírjátok, miért is lenne jó nektek ez a könyv.  A jelentkezési határidő Október 31!

(Sajnos nem mi döntjük el, hogy kik lesznek a nyertesek, ezért fontos, hogy az emil tartalma angolul legyen!!!)

Köszi és sok sikert!