21. August 2009

WSGI – rýchle web aplikácie v Pythone

V dobách, keď sa rozdeľovali sféry vplyvu medzi web technológiami, prišlo PHP s niečím, čo ostatným technológia zobralo vietor z plachiet. Viete, čo to bolo? Nie, nebol to dobrý návrh jazyka a dátových štruktúr. Nebola to ani obsesia v dolároch. A nebolo to ani množstvo modulov, ktoré umožňovali všetko od generovania obrázkov, až po generovanie zisku. To s čím PHP prerazilo, bola jednoduchosť nasadenia a rýchlosť. Tu dostali CGI aplikácie postavené na Perle, Pythone, Bashi a Haskelli poriadne na frak. Stačí si porovnať energetickú náročnosť Zope/Plone portálov, ktoré zožerú server so zdrojom aj so sieťovým káblom, verzus PHP portály.

Pythonieri sa bez boja nevzdávali a tak začali vymýšľať riešenie. CGI. Nie, nie. To nebola správna cesta. Overhead bol skutočne veľký. FastCGI? Trošku rýchlejšia voľba. Aj Trabant môžete vytuniť. Ale pokiaľ nepoužiteje prístup Pána Tragáčika a nevymeníte motor z Trabantu za dvanásť valec, tak máte stále Trabant. Mod_python bol už krok trošku správnejším smerom. Zrýchlenie bolo zhruba 10 násobné. PHP však rýchlostné limity zvyšovalo ďalej. Tu sa niekto z Pythonierov zhrozil. “Chlapi! Baby! Veď mi sme postavili parnú lokomitívu. Musíme vymeniť paradigmu.” Tak sa po mnohých rokoch objavil nový koncept WSGI.

Tentokrát sa podaril husársky kúsok. Nie len zvýšiť rýchlosť, ale dostať sa tam, kam sa PHP ešte nedostalo. Okrem rýchlosti sa totiž objavila nová požiadavka webových obláčikov: škálovateľnosť.

Je WSGI až taký zázrak. Áno je. A dokonca o trošku väčší.

WSGI je skratka od Web Server Gateway Interface. WSGI definuje rozhranie, pomocou ktorého napojíte vašu aplikáciu na web server. To, čo WSGI prináša je unifikácia pripojenia rôznych web frameworkov. Toto zároveň umožňuje podstatne lepšiu optimalizáciu rýchlosti. A ako bonus dostane vývojár škálovateľnosť. Vynikajúcim príkladom je Google App Engine.

Hurá, zahodím PHP a idem na Python. Hou, hou, zadrž! Škálovateľnosť nie je zadarmo. Python je objektový jazyk a tak sa je k nemu potrebné aj správať. Prechod vyžaduje trochu učenia a skúmania. Niektoré z konceptov sa v PHP vôbec nevyskytujú. Niektoré sú naopak pre PHP vývojárov používajúcich dobrý framework veľmi známe.

Tu pripájam video z Google Tech Talks venované popisu WSGI.

Kde Python aplikácie hostovať? Napríklad mi môžete napísať a nejaký ten serverový výkon sa pre vás určite nájde. Alebo si môžete objednať za pár bubáčikov virtuálny server od Web4U. Alebo ísť rovno na Google App Engine a vaša aplikácia bude v obláčkoch cestovať medzi kontinentami a hostingovými centrami.

9. August 2009

Ladenie PHP aplikácie v Eclipse

Eclipse je výborné IDE, ktoré môže ušetriť veľa času. Napríklad v prípade, že pracujete súčasne na projektoch vo viacerých jazykoch ako Java, Python, Perl, či nebodaj PHP. S konfiguráciou Eclipse a PDT pluginom som dlho nemal úspech. Vždy došlo k nejakej neočakávanej chybe. Problémy boli rôzne, nedostupný server, halušky v Eclipse. Ale to už bolo dávno. Tak som sa pustil do zisťovania, či sa v tomto smere niečo nezmenilo. Milé deti, zmenilo a k lepšiemu. ;-)

Lokálne ladenie PHP aplikácie v Eclipse je brnkačka, nepotrebujete ani nainštalovaného Apache, či inú web potvoru. Postup je jednoduchý, ale zradný. Ak šliapnete mimo vyznačenej cesty, hrozí vám prepad do bažiny, kde vás zožerie nejaká chyba.

  1. stiahnite Eclipse for PHP developer (návod je písany na Eclipse 3.5)
  2. rozbaľte ho, vytvorí sa adresár eclipse (pre Windows odporúčam použiť na rozbaľovanie 7zip, natívny rozzipátor akosi nefunguje správne, aspoň mne nerozbalil všetko)
  3. doinštalujte Zend Debugger, EclipseHelpInstall new softwareAdd
  4. Name: PDT, URL: http://downloads.zend.com/pdt, Ok, vyberte Zend Debugger a pokračujte v inštalácii
  5. presvedčte sa, že po reštarte Eclipse máte zvolený správny debugger, EclipseWindowPreferencesPHPPHP Executables, mali by ste mať zvolené niečo ako PHP 5.2.9 CGI z adresára, kde je Eclipse

A hurá debuggovať. EclipseNewPHP Project – zadať Project name – Finish. Pozor! Ak dáte Next namiesto Finish, je možné, že skončíte s chybovým hlásením duplicated entry. Pravdepodobne chyba vo workflow.

Vytvorte si nový PHP súbor, napríklad pozdrav.php:

<?php
echo “Ahoj Georgik!”;
?>

Dvojkliknite na pásik panelu vľavo na riadku 2, čím nastavíte break point.

eclipse-php-break-poing

A môžeme s chuťou debuggovat. Pravý klik v editovacom okne – Debug asPHP script. Eclipse sa prepne do PHP Debug perspektívy a zastaví sa na break pointe. Ovládanie debuggera som už popisoval :-) .

Takto nastavený Eclipse môžete použiť na lokálne ladenie. Nezabudnite používať vhodný framework na písanie PHP aplikácii. Skupina zubných lekárov odporúča framework Nette. ;-)

16. July 2009

Zdrojak.cz

Ešte nemáte v RSS čítačke krmítko z portálu zdrojak.cz? Hneď si ho tam pridajte. :)

Prečo? Nuž, jednoducho preto, že v auguste vyjde niekoľko mojich článkov o RIA technológiach. Aby som bol presnejší, tak Adobe Flex a AIR.

Čo takého zaujímavého je možné nájsť na portále zdrojak.cz? Portál je venovaný hlavne technológia súvisiacich s webom a vývojom aplikácii. Nájdete tam napríklad články aj o úplne legendárnom frameworku Nette, ktorý bol ukuchtený kúsok od Brna. Prípadne ďalšie články o obláčikovom počítačovaní (nazývanom anglofónou časťou sveta: cloud computing) ;) .

Tak šup s krmítkom do RSS čítačky.

3. June 2009

Používate framework? Prosím vás, nebuďte včerajší!

Kedysi. Nie je to ani tak ďaleko, ani tak dávno, boli v móde frameworky. Proste kto chcel byť cool a in, používal framework, prípadne si nejaký framework napísal. Ale to už je pasé. Frameworky nie sú moderné ani cool. Pred frameworkami tu boli knižnice a tie už tiež zapadli za zenit marketnigových a iných materiálov.

Dobre, tak čo je teda v móde dnes. Framework je málo. Dnes sa frčí na Meta Frameworkoch. Huh. A to je ako čo?

Do bežnej reči to skúsme kostrbato preložiť ako Framework nad Frameworkom. Hm, nič moc preklad, že?

A kde také rastú?

Napríklad tu: TurboGears 2. Nedávno sa objavila na svete nová verzia tohoto meta-frameworku pre Python a priniesla so sebou nové vylepšenia, ktoré skutočne stojja za pozornosť.

TurboGears 2 má podstatne lepšie rozloženie kódu než jeho predchodca. Pôvodného tg-admina nahradil nástroj Paster. Vďaka použitiu Paste frameworku získal TurboGears omnoho lepšie možnosti pre ladenie a spúšťanie aplikácii, či riešenia absolútneho zosypania aplikácie. Vďaka použitiu frameworku Pylons, je možné jednoduhšie debuggovať aplikácie v runtime. Ladenie napríklad silne konkuruje Laděnke PHP frameworku Nette ;)

Dobrá štrukturalizácia kontrólerov umožňuje jednoduché použitie unittestov. A pri kombinácii s Eclipse a PyDev, je to priamo luxus.

Taktiež šablónovací systém bol vymenený. Starší predchodca Kid, bol nahradený mladším agresívnejším Genshi. Šablóny sú teda XHTML, takže sa jednoduhšie editujú v HTML editoroch. Zaujímavosťou je, že Kid aj Genshi umožňujú zobrať normálnu tiredu a HTML šablónu definovať ako jej rozšírenie. Šablóna tým pádom ziska funkcie a atribúty rodičovskej triedy. Zjednodušene povedaný “HTML kód” vie dediť z Pythonového kódu.

Čo sa týka dokumentácie, tak tá je generovaná pomocou epydoc a vyzerá celkom k svetu.

Ako začať?

Nainštalovať Python a SetupTools. Nainštalovať TurboGears 2:

easy_install -i http://www.turbogears.org/2.0/downloads/current/index tg.devtools

Vytvoriť nový projekt:

paster quickstart

Naštartovať portál:

paster serve --reload --monitor-restart development.ini

Nakoniec zostáva už len pripojiť sa: http://localhost:8080

TurboGears 2 určite stojja za pozornosť. Frameworkov, na ktorých stavia tento Meta Framework je podstatne viac, než som tu spomenul :) Ale to už nechám na zvedavého bádateľa.

  • Babel fish

      Translate from:

      Translate to:

  • Where’s the fish?

  • Starfish

  • Fish for you

  • Further info

  • Badges

  • Video channel

  • Learning

    Grow your brain.
  • Tags

  • Topics

  •  

    February 2012
    M T W T F S S
    « Jan    
     12345
    6789101112
    13141516171819
    20212223242526
    272829  
  • Comments