[ Webhosting ProFiTux.cz ] [ Velký kozy ] [ domény na prodej ] [ Pro dívky ] [ NeoCube hračka ] [ mp3 ] [ Vše o Evropském Fotbale ] [ barevne holinky ] [ Hry zdarma ] [ Mexická chřipka ]
[ Neocube 216ks ] [ Pyžama ] [ Magnetické kuličky ] [ Andělské karty ] [ Online hry zdarma ] [ erotické linky ] [ Školení PHP ] [ Bismut ] [ www.primat.cz ]

Jak jsem skončil s Nette — jakubův notes – programování a vejšplechty

Píšu o:

Když jsem se rozhodoval, na čem postavit Shopaholic, moc jsem neváhal a říkal si, že konečně na něčem vyzkouším to slavné Nette. Nabuzen články ze seriálu Začínáme s Nette Framework jsem se odvážně vrhl na věc. První fáze byla taková, že jsem postupně vytvářel model databáze a v mezičase četl různé věci z dokumentace. Když byl model, vrhl jsem se již k samotnému programování „těch příjemnějších věcí“.

Nejdříve byla cesta dosti strastiplná – člověku, než se v tom všem zorientuje, to chvilku trvá. Dokumentace tomu moc nepomohla, protože přeci jen se mi zdá o hodně chudší než např. u Zendu. Ke konci práce na frontendu jsem už měl povědomí slušné a v administraci to jen sypalo. Nakonec jsem dodělal celý e-shop a říkal si: Paráda, mám to.

Ale v ten moment začalo to nejhorší, deployment z localhostu na produkční server. Nahraju a bílá obrazovka. Nette\Debug v produkčním módu tohle dělá, tak dám logování do souboru a odesílání chyb na e-mail. Načtu, opět bílá stránka, v errorlogu nic a schránka taky prázdná. Pohled na HTTP hlavičky odpovědi je zajímavý: HTTP/0.9 200 OK, to je všechno. Jo, tak tohle nebude dělat Nette\Debug.

Hrál jsem si s tím. A hrál a hrál, začal sahat na Application, Presenter a další a vysledoval, že provádění skončí někde v metodách formatTemplateFiles() a formatLayoutTemplateFiles(). Zkoušel jsem porůznu upravovat atp. Divné bylo, že asi tak jeden z 50 požadavků se náhodně povedl. Nakonec jsem boj vzdal.

Řekl jsem si, že by to mohlo být použitím poslední verze zdrojových kódů z repozitáře, a proto jsem provedl downgrade na verzi 0.8, která je označena za stabilní. Hurá, už to jakžtakž fungovalo. Projedu, jestli všechno jde. A hle, nejde – jeden presenter hlásí: metoda Environment::getVariables() neexistuje. Začnu bádat, na localhostu všechno jde, podívám se tedy do API dokumentace. A tam metoda Environment::getVariables() je. Kouknu do zdrojových kódů a tam opravdu není. Zkontroluji tedy na SVNko a hle, v 0.8 tahle metoda chybí.

Některé Nettí nástroje – Nette\Debug, profiler – jsou opravdu hezké, usnadňují vývoj. Ale se zbytkem je problém. Ne v tom, že by se nejednalo o kvalitní kód, či podobně, to jsem nezkoumal (tedy až na pár řádků při této deployovací slavnosti). Ale dokumentace, dokonce i API dokumentace – kámen úrazu. Framework prostě bez kvalitní dokumentace být nemůže. Může to být mistrovský kousek kódu, ale bez stejně dobré dokumentace je to jen brak, který nestojí za to používat. Snad se to trochu zlepší po srpnu.

Další věcí je zpětná kompatibilita. Jen za těch pár dnů, co jsem Shopaholic psal, se stihlo změnit hned několik věcí: vylepšená továrnička a úprava životního cyklu presenteru. Opravdu hrozný pocit, když se vám něco pod rukama mění. Může to být dobrý ukazatel stavu projektu – je krásně živý, vyvíjí se. Ale čeho je moc, toho je přespříliš. Takovýhle vývoj už neprospívá věci; je cestou do záhuby. Kult osobnosti Davida Grudla mě nezasáhl, ale byla by škoda špatným marketingem a příliš překotným vývojem poslat do kytek takový podle mě docela slibný český framework.

Možná, že se spolu s Nette ještě někdy potkáme, ale v nejbližší době to asi nebude.

Komentáře

Podobnou frustraci jsem zažíval s frameworkem Django předtím, než doklopýtal k verzi 1.0. Tam to ještě bylo obohaceno tím, že jsme používali branch, který implementoval nějakou potřebnou funkčnost, ale z trunku se mergoval jen občas, takže některé chyby už třeba byly v trunku opravené, ale my jsme k nim neměli přístup. To je holt potíž z verzemi 0.*.
Co se Environment::getVariables týče, tak já to v dokumentaci verze 0.8 nevidím.
— napsal(a) Jakub Vrána (web, 5. 8. 2009, 12:21:55)
@Jakub Vrána
> Co se Environment::getVariables týče, tak já to v dokumentaci verze 0.8 nevidím.
V době psaní článku jsem ani nevěděl, že jsou dvoje API dokumentace – pro verzi 0.8 a 0.9. A buď to se při přístupu na api.nettephp.com/ nepřesměrovávalo na /0.9, takže jsem ani neměl potuchy, že se divám na verzi pro 0.9, nebo se přesměrovávalo a já si toho nevšiml.
— napsal(a) Jakub Kulhan (web, 5. 8. 2009, 13:01:12)

Přidat komentář