Neobsahuje názory Henryka Laholy

Kniha: CherryPy Essentials

Dostala se mi do ruky kniha s názvem CherryPy Essentials a podtitulem „Rapid Python Web Application Development – jak snadno navrhnout, vyvinout, otestovat a spustit vlastní webovou aplikaci v jazyce Python“, jejímž autorem je Sylvain Hellegouarch. Knihu vydalo nakladatelství Packt Publishing v edici From Technologies to Solutions v březnu 2007. Jaká je? Co od ní můžete čekat?

Musím říct, že jsem se na ni těšil – po smutných zkušenostech s knihami z českých nakladatelství, které jsou přeložené z anglicky psaných originálů a jsou plné věcných či stylistických chyb (Computer Press je nejzářnější příklad) jsem se těšil na knihu v anglicky psaném originále.

Jak je o mně známo, nemám moc rád knihy v elektronické podobě. Rád si sebou beru knihy tam, kde zrovna jsem – do vlaku, na dovolenou, do postele (tam především; nikde se mi nečte tak dobře jako v posteli). Když jsem před časem hledal framework a jazyk, po kterých bych sáhnul, byl Python a jeho různé nadstavby jedním z vašich častých favoritů. Proto když se mi dostalo možnosti přečíst si novou knihu o pythonské knihovně CherryPy, neváhal jsem...

Knihu CherryPy Essentials má na svědomí nakladatelství Packt Publishing. Je to relativně nové nakladatelství, první knihu vydalo v roce 2004. Zaměřuje se na publikování knih určených vývojářům, tématicky orientovaných především na open-source software a moderní programátorské techniky a nástroje.

Kniha začíná dvěma (naštěstí jen krátkými) kapitolami s povinnou omáčkou na téma „Co to je CherryPy, kde se vzalo, k čemu je, jak to nainstaluju, co tam najdu...“ Následuje třetí kapitola, Přehled CherryPy. Ta začíná rovnou příkladem – výpisem zdrojového kódu jednoduché CherryPy aplikace – „poznámkového bloku“. Na něm autor ukazuje základy práce s CherryPy: Kam s jakým souborem, jak spustit testovací HTTP server, jak nastavit konfiguraci, jak funguje Object Publisher Engine, bleskově probírá CherryPy moduly a nástroje a popisuje v hrubých rysech fungování výjimek a chyb. Přiznám se, po téhle kapitole jsem měl v hlavě guláš a tisíc chutí začít se zaobírat něčím jiným, logičtějším, třeba čtením telefonního seznamu.

Kapitola čtyři zmatek ještě trošku prohloubila. Začíná informací o implementaci HTTP v CherryPy – a tady můj zmatek dostoupil vrcholu ve chvíli, kdy jsem viděl, že autor binduje server na portu 100100. A o odstavec dál vytváří dokonce „server na portu 100100 a IP adrese 1102.168.0.12“. Říkal jsem si, že mi asi něco uniklo, že jsem asi přehlédl informaci o speciálním zápisu čísel v CherryPy, znovu jsem pečlivě pročetl úvod – ne, zjevně ne. Zmatený jsem četl dál, až jsem narazil na příklad, v němž autor použil „kódování ISO-88510-15“. A secvaklo mi to! V knize řádil šotek a nahradil znak „9“ znaky „10“. Takže mystická adresa „1102.168...“ je stará známá 192.168 a port 100100 je obyčejný port 9090. Možná zvláštní devítková soustava, kdo ví...

Ve zbytku kapitoly autor probírá CherryPy Toolbox – nástroje, které má vývojář v CherryPy k dispozici. U každého popisuje argumenty a na příkladu demonstruje použití daného nástroje. Na konci kapitoly je popsána obsluha statických souborů (CSS apod.) a použití WSGI s CherryPy.

Pátá kapitola začíná návrhem praktického příkladu – fotoblogu, který se od téhle chvíle táhne zbytkem knihy a na němž jsou demonstrovány jednotlivé části vývoje aplikace tak, jak naznačuje podtitulek knihy. Nejprve jsou popsány entity ve fotoblogu použité, jejich role, atributy a relace mezi nimi. Kapitola pokračuje informacemi o databázích. Popisuje základní principy databáze relační, objektové a XML databáze a pakl se věnuje „objektově-relačnímu mapování“ (ORM). Popisuje tři ORM nástroje pro Python – SQLObject, SQLAlchemy a Dejavu – a ukazuje základní operace s databází ve všech třech zmíněných nástrojích. Následně porovnává vlastnosti těchto tří knihoven a demonstruje vytvoření ORM pro fotoblog.

Šestá kapitola nese název „Web Services“ a skrývá se pod ním, jak jinak, popis REST modelu, tedy modelu pro standardizovaný přístup k datům na internetu pomocí standardizovaných HTTP metod. Autor samosebou popisuje i způsob implemetnace REST v CherryPy a stručně se zmiňuje i o implementaci publikačního protokolu ATOM. Rovněž velmi zajímavé a užitečné shrnutí i pro programátory, co pracují s jinými sytstémy a jazyky.

Sedmá kapitola se věnuje věcem okolo prezentace dat – letmo popisuje ×HTML, CSS, šablonovací nástroj Kid a JS knihovnu Mochikit. Stručně nastiňuje jejich vlastnosti a popisuje implementaci na příkladu fotoblogu.

Kapitola osmá nese stručný název Ajax. Na šestadvaceti stranách se věnuje celkem zevrubně AJAXu. Popisuje XHR, na výpisech zdrojového kódu ukazuje GET a POST požadavek přes XHR a velmi podrobně probírá autentizační schémata (Basic a Digest). K autentizaci se vztahuje i ukázka implementace AJAXového přihlašovacího dialogu v CherryPy. Následuje popis datového formátu JSON a kapitola končí spojením informací z několika předchozích kapitol – vytvořením dialogu pro založení nového alba ve fotoblogu, který používá AJAX, REST i Mochikit spolu s CherryPy.

V kapitole deváté autor názorně ukazuje testování aplikace pomocí nástrojů unittest, doctest, webtest, měření výkonu, zátěžové testy a konečně funkční testy nástrojem Selenium.

Poslední, desátá, kapitola je nazvána Deployment. Nejprve stručně popisuje konfigurační metody, použitelné s CherryPy. Zbytek kapitoly je věnován nejčastějším možnostem instalace CherryPy aplikace na webovém serveru – od Apache s mod_rewrite přes Lighttpd s mod_proxy až k Apache mod_python a WSGI. Kapitola se rovněž zmiňuje o práci se SSL.

A resumé?

Nejprve to subjektivní: V CherryPy jsem psát nezačal. Ale vím kam sáhnu, až se budu muset nějakou aplikací v CherryPy zabývat. Přesto byla kniha užitečná i pro mne. Sice prvních 90 stránek (kapitoly 1-4) tvoří cosi jako „referenční příručka smíchaná s Quickstart“. Informace jsou zde podány velmi hutně a stručnost je leckdy na úkor srozumitelnosti. Zbytek knihy (160 stránek), tedy kapitoly 5-10, jsou velmi zajímavé a užitečné nejen pro programátory, co se zajímají o CherryPy či Python obecně. Věnují se totiž záležitostem, které jsou společné vývoji webových aplikací bez ohledu na použitý jazyk.

Škoda té tiskové chyby ve čtvrté kapitole, která je, nutno přiznat, velmi matoucí a navíc se vyskytuje právě v informačně hutné části. Kniha osciluje mezi obecným popisem technik, používaných při vývoji webových aplikací, a popisem jejich implementace v CherryPy. Což ji na druhou stranu zároveň činí zajímavou i pro vývojáře, co se nevěnují přímo CherryPy. Je vždy zajímavé podívat se „jak to dělají jinde“ a inspirovat se postupy či nástroji z jiných oblastí. Některé věci nelze posoudit ani jako kladné, ani jako záporné. Například informace o mod_python pro Apache: Začátečník ocení, že jej kniha nezahltí spoustou informací a ukáže mu jednoduchý způsob, jak mod_python rozchodit. Zkušenějšímu čtenáři však bude u popisu UDĚLEJTE TOTO chybět vysvětlení proč zrovna takto a co to znamená.

Mně osobně, coby člověka primárně píšícího v PHP, nejvíc zaujaly a inspirovaly kapitoly o ORM (5), REST (6) a testování aplikací (9). Kapitoly 7, 8 a 10 jsem si přečetl se zájmem

Kdybych měl knihu ohodnotit hvězdičkami, tak CherryPy Essentials dostanou solidních sedm z deseti.

Kniha stojí 35.99 dolarů (v podobě PDF souboru 27 US$). Pokud knihu objednáte přímo u vydavatele, nebude vás poštovné do ČR stát nic (stejně tak po EU či do USA). Za tuto cenu dostanete příručku, která vás provede tvorbou webových aplikací v jazyce Python s knihovnou CherryPy, a získáte přehled o moderních technikách, které se používají při vývoji webových aplikací. Jednoznačně bych ji doporučil všem, co vyvíjejí webové aplikace v Pythonu. Doporučil bych ji i lidem, co Python nepoužívají a chtějí se podívat, jak některé úlohy řeší jiné jazyky.

Děkuji nakladatelství Packt Publishing za laskavé poskytnutí této knihy.

Dne 21.05.2007

Twittni

Přidej do: Přidat na Conota Linkuj si ! asdf.sk StumbleUpon Toolbar Stumble It!

Komentáře

[1] (karf - Mail ) 22.05.2007, 00:19:58 [X] [D]
Skvělá recenze. I když se Pythonem nezabývám, konkrétně ORM část by mě taky docela zajímala, v PHP jsem zkoušel pár knihoven (hlavně propel a ezpdo), ale vždy jsem to odložil z důvodu rychlosti a hlavně přílišnému znásilňování kódu. Můžu se zeptat, zda máte nějaké pozitivní zkušenosti s ORM v PHP?

[2] (Arthur Dent [openID] - WWW) 22.05.2007, 00:29:17 [X] [D]
[1] Jsem na tom úplně stejně. Právě až při čtení téhle knihy mě ORM zaujaly a pídil jsem se po ORMech pro PHP. Docela bída, dokonce jsem našel i názor, že plnohodnotný ORM? v PHP udělat nelze.

[3] (jules - Mail ) 24.05.2007, 21:58:58 [X] [D]
Nedami to, musim zareagovat. Skusili ste sa pozriet na CakePHP? Je inspirovany RoR a je napisany v PHP. (pre mna to bola vyhoda, pre Vas nemusi). Obsahuje ORM ktory je taky isty alebo podobny ako v RoR. Je samozrejme na diskusiu ci to je plnohodnotny ORM...

[4] (Martin Stiborský - Mail - WWW) 01.06.2007, 23:07:39 [X] [D]
S cherrypy si už nějakou dobu hraju, knihu si objednávám až teď, těším se na ní jak děcko :)
Jinak parádní recenze, děkuji.