Tuesday, November 30, 2010

Yii Radiio 36. adás

Bob Belderbos mondja el saját szavaival, hogy miért is tetszik neki a Yii ennyire.

Talán egy éve már, hogy említettük a Chive-ot, ami a PHPMyAdmin-t próbálja letaszítani a MySQL-kezelőfelületek trónjáról, persze mindenki döntse el saját maga. Nemrég jelent meg a 0.4-es változat, ha másért nem is, azért érdemes kipróbálni, mivel Yii-fel készült.

A ScrollingNews segítségével készíthetünk jQuery-vel hajtott tartalom lapozgató finomságokat.

Aztech próbálkozik egy új(abb) fajta SPAM megelőzéssel, illetve az ötlet nem új, de Yii alá most került ilyesmi először. (megj: én mondjuk személy szerint a ReCaptcha-t használgatom, viszont ehhez nem kell semmit betölteni.)

A Free Open Source Magazine-ban jelent meg egy cikk a Yii-ről.

Ryan Lahue megoldása a "{Model} cannot be blank" hiba üzenetre.

Jeff Winesett, a Yii könyv írója, indított útjára egy VIMEO sorozatot: 1. rész, Előkészületek.

Larry Ullman neve már remélem sokaknak ismerősen cseng, a kezdőknek szánt sorozata egyre népszerűbb a Yii-t használó programozók táborában. Gyakran kérdezgetik is, miért éppen a Yii-t használja. Most végre elmonta :) (megj: a kedvencem - "A keretrendszerek olyanok mint az autók. Mindegyikkel eljutsz ahová menni akarsz, csak az a kérdés, melyikben érzed jól magad.")

Végre sikerült az OpenSearch kereső alkalmazást a yiiframework.com-ra "telepíteni". Ez annyit jelent, hogy egyszerűen a böngészőnkből kereshetünk Yii oldalon található dolgokat.

WebEnabled támogatja a Yii-t (1.1.5).  Az oldal segítségével néhány klikkolással készíthetünk Yii alapokra épülő alkalmazást, SVN forráskezelővel (a Git az úton van), SSH hozzáféréssel és egy linkel, amit a felhasználóinknak tudunk adni, tesztelésre. Ja, és mindezt ingyenesen! (egyébként Yii az első keretrendszer, eddig többnyire CMS-eket és CRM-eket támogattak)

Hogy lehetne még  gyorsabban és eredményesebben dolgozni? Mi az a Kanban?

A hét oldala: egy brazil horgász oldal: http://revistapescaesportiva.com.br

Monday, November 22, 2010

Adatbázis migrációk a Yii-vel

A Rails keretrendszernek köszönhetően az elmúlt pár évben nagy teret hódított az Adatbázis Migrációk (Migrations) használata, még PHP-s környezetben is. Személyesen hallottam olyanról, hogy míg az egész rendszer PHP alatt futott, a programozók a Rails-t használták táblák és kapcsolatok készítésére.

Persze több kevesebb sikerrel megjelentek PHP-vel hajtott alkalmazások is, az egyik ilyen pl. a Doctrine Project. Ebben a cikkben azonban a Pieter Claerhout által publikált, és a Yii alá készített Yii-DbMigrations-t fogjuk ismertetni.

Mire jó ez egyáltalán?

Felmerülhet a kérdés, hogy miért is van szükség ilyen rendszerek használatára. A felvetés jogos, hiszen sima SQL-t használva is készíthetünk táblákat és kapcsolatokat. Valóban, viszont az így készített ún. tábla leírások (schema) kifejezetten az adott adatbásban működnek.

Képzeljük el például, hogy a fejlesztés kezdetén SQLite-ot használtunk és késöbb szeretnénk az adatbézisunkat MySQL alá tenni (mondjuk a LIVE szerveren). Sajnos ilyen esetben az összes tábla leírást újra kell készítenünk, mivel a két adatbázis motorban használt SQL nem kompatibilis. Itt jön a képbe az Adatbázis Migráció.

A lényeg az, hogy adtabázisleíró nyelvtől függetlenül tudunk táblákat és kapcsolatokat készíteni a PHP segítségével. Az így elkészített tábla osztályokat pedig nagyon egyszerűen a kívánt (és támogatott!) adatbázis alá be lehet illeszteni. Külön hab a tortán, hogy arra sem kell emlékeznünk, hogy melyik volt az utolsó lefuttatott tábla osztály, mindezt a Yii-DbMigartions elvégzi helyettünk. Úgy is gondolhatunk rá, mint egy adatbázisra szabott Forráskezelő program (pl: SVN vagy GIT)

Hátrányok

A modul még csak alpha állapotban van.
Jelenleg csak SQLite és MySQL támogatott.
    Installálás és Beállítás

    Miután kicsomagoltuk a zip file-t a szokásos helyre - protected/extensions, győződjünk meg arról, hogy az adatbázissal kapcsolatos beállítások megfelelőek a protected/config/main.php-ben.

    MySQL:


    SQLite:


    A Parancssor beállítása

    Alap esetben természetesen a yiic nem tud a migrate utasításról, hiszen még csak most telepítettük a modult. Ezért be kell állítanunk egy új commandMap-et  a protected/config/console.php file-ban:




    Beállítások tesztelése

    Ha minden jól sikerült, egyszerűen futtassuk le a yiic parancsot a parancssorból:


    Reméljük így a migrate parancs már elérhető.

    Migrációk készítése

    Nevvekkel kapcsolatos korlátozások

    A migrációs file-okat a protected/migrations vagy a migrations mappába (a modul könyvtárába) helyezhetjük el. Az file-ok neveit pedig a következő képpen ajánlatos elnevezni:

    m20090614213453_MigracioNeve.php

    A névnek mindig egy 'm' betűvel kell kezdődnie, utána egy 14 karakter hosszú dátumot meghatározó string, egy aláhúzásjel '_' és végül pedig egy szabadon választható MigrációNév.

    Persze, szerencsénkre, ezt automatikusan is megtehetjük a protected/yiic migrate create <MigracioNev> lefuttatásával:



    Táblaleírások készítése

    Magában a tábla leíró file-ban létre kell hoznunk egy osztályt, aminek a szülő osztálya a CDbMigration, és két kötelező metódusunk az up és down lesz. Reméljük a következő példa kicsit segíteni fog:



    Tehát az up() segítségével elkészítjük az új táblát, a down()-nal pedig töröljük.

    Támogatott funkciók

    A migráció osztályban a következő funkciók érhetők el:


    • execute: sima SQL futtatása, ami nem ad vissza értéket.
    • query: sima SQL futtatása, ami értékkel tér vissza.
    • createTable: új tábla készítése
    • newTable: új tábla leírás készítése
    • addTable: táblaleírás hozzáadása a migrációhoz
    • renameTable: tábla átnevezése
    • removeTable: tábla törlése
    • addColumn: oszlop hozzáadása a táblához
    • renameColumn: oszlop átnevezése
    • changeColumn: oszlop változtatása
    • removeColumn: oszlop törlése
    • addIndex: index hozzáadása táblához vagy adatbázishoz
    • removeIndex: index törlése táblából vagy adatbázisból.

    Mezőleíró beállításoknál pedig a következő változók használhatók:


    • primary_key
    • string
    • text
    • integer
    • float
    • decimal
    • datetime
    • timestamp
    • time
    • date
    • binary
    • boolean
    • bool

    Persze ezen kívül lehet adatbázis specifikus mezőket is készíteni, viszont úgy nem tudjuk a programot más adatbázis alá (könnyedén) átemelni.

    Táblák készítése másként



    Migrációk futtatása

    Csak azért mert elkészítettük a tábla-leírásokat, az nem azt jelenti, hogy a táblák már készen is vannak az adatbázisban. A migrate parancs lefuttatásával történik meg mindez:



    Még itt a végén annyit érdemes megjegyezni, hogy ha most lefuttatnánk a migrate parancsot mégegyszer, semmi nem történne, hiszen a modul megjegyzi, hogy melyik volt az utolsóként lefutott migráció.

    És ennyi! Mindenképpen javaslom az eredeti cikk elolvasását is, mert ott még van egy-két utasítás amire nem tértünk itt ki, de remélem ezek után mindenkinek megjön a kedve egy kis adatbányászáshoz :)



    Tuesday, November 16, 2010

    Yii Radiio 35. adás

    Megjelent a Yii 1.1.5-ös, sok javítással és mégtöbb újdonsággal. A változtatások listája ezen a linken található meg.

    Nagy port kavart fel Qiang azon bejelentése, miszerint a Yii 2.0-át a PHP 5.3 alapjaira építve teljesen újraírják, és nem lesz kompatibilis a régebbi (1.1, 1.2) ágakkal. (mondjuk szvsz ez teljesen egyértelmű). A kiabálókhoz a fórumon lehet csatlakozni.

    Ramirez Cobos mutatja be, hogyan használhtajuk az SWFUpload-ot, ami egy Flash meghajtott file-feltöltő rendszer.

    Christian Montoya irása a BluePrint CSS rendszer-ről, amit egyre gyakrabban választanak designerek, weboldalak (pl: http://mint.com, http://stay.com vagy a http://dailymotion.com).

    Az 5 (6-7-8) legfőbb ok a Yii mellett (ChruchCO szerint: Demók, Tesztelés, Közösség, Kiterjesztések, Dokumentáció, Forrás (egyszerűen jó ránézni), Active Record és Scope-ok kezelése )

    Larry Ullman ismerteti a Zend keretrendszerben már jól ismert (Apache) Lucene kereső Yii-re történő implementálását.

    Üdvözlünk két újabb bloggert a Yii torpedó-hajó fedélzetén (KyokasuigetsuMushfiq) akik többek között azt is megírják miért váltottak egyéb rendszerekről (pl. CodeIgniter és Symfony). A blogokat itt meg itt olvashatjátok.

    Ha valaki már kicsit járatos a Yii felépítésében az biztosan tudja, hogy hol található (és mire való) az assets mappa. Néhány kivételes esetben azonban szükség lehet rá, hogy ezt máshova tegyük. Ezt magyarázzal el Dana Luther ebben a blog post-ban.


    Ha valakinek (még mindig) gondot okozna, hogy melyik MVC-re alapuló PHP keretrendszert válassza, annak hasznos lehet Jorges Albaladejo tesztje, aki több más rendszert is megvizsgál és próbál segítséget nyújtani a PHPs közösségnek.


    SamDark mutatja be, hogyan lehet cron alkalmazásokat futtatni Yii-n keresztül.

    Ha valakinek sürgős segítségre van szüksége valamilyen Yii-vel kapcsolatos problémara, és nincs ideje (türelme?) a fórum látogatóinak válaszára várni, annak érdemes kipróbálnia a #yii IRC csatornát, ahol naponta több mint 30-40 lelkes Yii programozó próbál egymásnak segítséget nyújtani.

    Semmiképp nem szeretnénk pletykát indítani, de egyre többet hallani a MySQL és Oracle háza táján történő bizonytalanságokról. Az adatbázis motor lecserélését segítheti elő a MariaDB, amit egy az egyben arra találtak ki, hogy a MySQL-t leváltsa. (állítólag néhai MySQL programozók találták ki). Mindenképp érdemes rá odafigyelni.

    A hét oldala: bumperize.com, akik arra vetemednek, hogy a már jól megszokott szöveges alapó email-jeinket felcsinosítsák.

    ----------------------------------------------------------------------------------------------------------
    eredeti: http://yiiradiio.mehesz.net/episode-35

    Tuesday, November 9, 2010

    Hogyan fűszerezzük Yii proginkat a már jól bevált ImageCache-sel

    Ha valaki már régóta tevékenykedik a "szakmában" az biztosan tudja, hogy egy oldalon megjelenő képeknek az átméretezését még azelött jó megtenni, mielött a kép a böngészőbe kerül. Például, mi történik akkor, ha a képünk 3000x2000 pixeles, és azt 300x200-as méretben szeretnénk megjeleníteni:

    <img src="valami.jpg" width="300" height="200" />

    A fenti sorral többek között az a gond, hogy az ember azt gondolná (reméljük nem, de lehet), hogy a böngésző ilyenkor csak egy ekkorka képet tölt le. Sajnos ez nem igaz, tehát a felhasználóinkat (és a szerverünket) büntetjük azzal, hogy a böngésző egy hatalmas, alkalmanként több MB-os képet tölt le. A Drupal CMS rendszerben van egy úgy nevezett ImageCache modul, ami pontosan erre kínál megoldást.

    Hwangar-nak köszönhetően ez a modul már elérhető a Yii rendszerben is, így néhány "képmegváltoztató" funkcióval lényegesen felgyorsíthatjuk oldalaink betöltését. Ez a cikk azt próbálja bemutatni, hogy hogyan is tehetjük meg mindezt.

    Az ImageCache modul segítségével (GD2 szükséges hozzá!) többek között átméretezhetjük, elforgathatjuk és vízjeggyel láthatjuk el képeinket. Maga a beállítás egyszerűen megtehető az alkalmazásunk konfigurációs file-jában. (protected/config/main.php)



    Beállítás:

    Annyi féle preset-et készíthetünk, amennyit csak akarunk. A fenti példában, a 640x480-nak nevezett preset segítségével például először átméretezzük és vágjuk a képet (scaleAndCrop) majd pedig vízjegyet teszünk a képre (watermark). Az elkészített képeket a modul a webroot/<akarmi> könyvtárba helyezi el. Jelenleg a következő képmódosító funkciók támogatottak: újraméretezés (resize), zsugorítás (scale), zsugorítás és vágás (scaleAndCrop), elforgatás (rotate), vágás (crop) és vízjegy (watermark).

    Használat:

    Magát a képkészítő programot vagy a Kontrollerben (Controller) vagy a Nézetben (View) szokás meghívni a következő módon:

    <?php
    $thumb = Yii::app()->image->createUrl( '640x480',YiiBase::getPathOfAlias('webroot.files').'/valami.jpg'); // An image file!!! 

    if ($thumb) print $thumb; else print "bad";
    ?>
    Még annyit érdemes megjegyezni, hogy amikor először jelenítjük meg a képet a modul segítségével (tehat a cache könyvtár üres!), akkor fut le maga a képszerkesztő program és készül el az új kép. A következőkben már ezt a képet töltjük be és jelenítjük meg, remélhetőleg gyorsabban.

    Az eredeti leírás és maga a modul itt található: http://www.yiiframework.com/extension/image-cache/

    (Egyébként ha valakinek van ötelete arra, hogy magyarul hogyan lehetne érzékeltetni a különbséget a resize és a scale között (lehetőleg egyszóval), azt szívesen venném ... köszi)

    Tuesday, November 2, 2010

    Yii Radiio 34. adás

    Sikerült néhány újabb template-t készítenünk és fel is tettük őket a Yii Themes oldalra. Reméljük tetszik az új lapozgató is.

    Na, de nézzük mi történt az elmúlt hetekben a Yii körül:

    • BHushan részletezi több PHP keretrenszer előnyeit és hátrányait, köztük persze a Yii-t is.
    • Hasonló kategóriába tartozik az include-once.org által közzétett PHPs keretrendszer összehasonlító program, aminek segítségével könnyen fej-fej mellé tehetjük az összes jelenleg elérhető keretrendszert.
    • MongoDB-ről már esett szó párszor a Yii Radiio adásaiban, röviden egy Kulcs-Érték (Key-Value) alapokra épülő adatbázismotorról van szó. Ehhez próbál segítséget nyújtani a Tyohan által elkészített modell osztály, MongoRecord.
    • Ha valaki már többször járt a Yii oldalon, talán ismerősnek tűnhet Larry Ullman neve, aki a kezdetektől fogva támogatja a rendszert és népszerű sorozatát nagyon sokan elismerik. Végre sikerült frissítenie a leírásokat, a jelenlegi legújabb, Yii 1.1.4-re.
    • Remélem nem vagyok egyedül, de velem többször előfodult már, hogy az agyamban felmerülő megoldást probáltam kód formájában begépelni, de az ujjaim lassabak voltak mint maga a gondolat. Mit lehetne még kitalálni, azon kívül, hogy megtanulunk baromi gyorsan gépelni? A Tutsplus hasábjain probáltak 9 olyan dolgot összeszedni, ami a segítségünkre lehet. (pl: Zen kódolás, Osztott képernyő (Vim - hehe), LESS.js stb)
    • Talán szükségünk lehet arra, hogy az amúgy jól bevált Yii lapozgató rendszert átalakítsuk. (vagy csak egyszerűen tudni akarjuk, hogyan is működik). Ramirez Cobos kalaúzol el bennünket a Yii rejtett világába és mutatja be, hogyan tudjuk ezt megtenni.
    • Ha még csak most kezdünk ismerkedni a Yii rendszerrel, gyakran előfordul, hogy a Modell kapcsolatok megértése homályos lehet. Hungred.com próbálja mindezt elmagyarázni ezzel a post-tal.
    • WordPress a Yii-vel! Baptek meséli el nekünk miért is kellett nekik egy ilyen megoldás és milyen egyszerűen oldotta meg ezt a feladatot.
    • WillowDan2009 mutatja be, hogyan kell Windows alá a Yii 1.1.4-est feltelepíteni.
    • A Yii csapatának végre sierült befejeznie a már régóta esedékes új arculatot, új logóval és funkciókkal. A kedvenceink a Hall of Fame, és Badges (kitüntetések) :)
    • A hét oldala: Ha az interneten szeretnénk valamit eladni, néha jó tudni, mi mennyit ér. WothMonkey.com