Catalyst
Accelerating Perl Web Application Development
Vyšla nová kniha a sľubuje že naučí:
- Inštalovať a nastaviť Catalyst
- Ako sa používa Template toolkit
- Navrhovať, pristupovať a pracovať s databázami
- Používať FormBuilder
- Ako na autentifikáciu a autorizáciu
- Ako spraviť interface pre vlastné data
- REST API, AJAX, RSS feeds
- "Test-Driven Development"
- Packaging
V celku ambiciózny cieľ na 180 stranovú knižku, ale oplatí sa prečítať. Je to prvá knižka pre Perl, ktorá sa venuje naozaj moderným veciam ktoré hýbu web-om. Trochu viac by sa mohla venovať štruktúre aplikácie. Lebo jedna vec je si navrhovať jednoduché príklady do knižky a druhá je od začiatku mať dobre navrhnutú schému aplikácie.
Autorom je Jonathan Rockway a aj keď mi knižka pripadala napísaná tak ako z rýchlika poskytuje ucelený obraz o Catalyst-e a našiel som v nej veci o ktorých som sa na CPAN-e nedočítal. A tu sú:
Dandoo ma raz provokoval, že či si Catalyst nevie sám
načítať definície tabuliek z databázy ako to vie Ruby
on Rails. Tu som sa dočítal, že sa to dá. myapp_create.pl model
... DBIC::Schema ... create=dynamic ... spraví tento trik. Aj keď už na
trochu serióznejšie účely je to nepoužiteľné, ale ako ukážka
veľmi efektné. ;) Čo je zaujímavejšie je, že _create vygeneruje
aj statické súbory ak má správne nastavené prístupy do databázy.
Oslovilo ma používanie use base Catalyst::Controller::BindLex v
controlleroch. Vďaka nemu netreba všetko manuálne "pchať" do stash-u,
ale jednoducho sa napíše my $var : Stashed = 'bobo';
Z DBIx::Class ma zaujalo hneď niekoľko vecí. Používanie
->find_or_new() pre editovanie. Keď sa jedná
o novú vec, tak sa jednoducho vytvorí objekt a keď sa jedná
o starú, načíta sa z databázy. Potom sa nastaví čo treba
a ->update_or_insert() spraví, že
funkcie pre editovanie alebo pridávanie môžu lahko zdieľať kód.
Objavil som že ResultSet ma priamo "zabudovaný" paging:
->page(1), ->pager;
Jonathan si počaroval s ResultSet-ami a s tým ako
sa dajú pekne reťaziť. Ako sa dá pomocou ->search_related()
vyhľadávať v inom ResultSet-e.
Jednoznačne by si DBIx::Class zaslúžil knihu sám o sebe spolu s databázovým designom... Ktorý síce v upútavke na knihu sľubujú, ale moc sa naň nedostáva.
Pomocou FormBuilder-u sú generované všetky formuláre a vyzerá to byť prepracovane spravený modul. Generuje aj client side JavaScript na validovanie user input-u a samozrejme podporuje aj server side validovanie. Veľa priestoru sa mu ale v knižke nevenuje.
YAML-u, alebo všeobecne konfigurácií sa dá dočítať len popri iných veciach. Našiel som veci čo by mi v minulosti naozaj pomohli. Napríklad keď sa dá do konfiguráku sekciu s názvom Perl modulu (MyAPP::DB) všetky premenné zadefinované v tej sekcii sa dajú pristupoveť cez $self->{key} v tomto module.
Druhá ešte dôležitejšia vec je, že keď pre hlavný konfigurák (myapp.yml) sa vytvorí druhý s _local (myapp_local.yml) tak hodnoty, ktoré sú v ňom sa automaticky pridajú do hlavného konfiguráku. Veľmi užitočné a ja som kôli tomu v minulosti vytváral vlasný Config.pm modul...
Taká malá chuťovka čo poteší je
__PACKAGE__->config( 'session' => { 'flash_to_stash' => 1 } ).
Keď je táto "futúria" zapnutá, tak automaticky všetky premenné z flash-u
sa dajú pristupovať aj cez stash. Netreba robiť rozdiely a škaredé
podmienky. Ako ja v minulosti ;)
A posledná vec - REST (nie RIP ;) a Jemplate spolu použité na "výrobu" AJAX-u. REST je sám o sebe zaujímavý lebo do veľkej miery používa HTTP protokol a jeho metódy (GET, PUT, POST, DELETE) na komunikáciu. Čiže viac-menej nič nové, dobre sa to debug-uje aj v browseri. Pomocou hlavičiek sa dá nastaviť formát v akom sú predávané data (XML, JSON, YAML, ...). JSON potom ľahko použije AJAX na to aby dostal/poslal data na server. Nuž a Jemplate ocenia hlavne ľudia čo používajú Template Toolkit, ako napríklad ja ;), lebo tento modul vie použit TT formátovacie súbory a prekonvertovať ich pre JavaScript, ktorý beží u klienta. Moc pekné...
Trochu mi chýbal úvod do scaffolding-u ktorým sa Ruby on Rails píši a je možný aj v Catalyst-e ale o tejto téme nieje v knižke ani zmienka. Škoda, jeden mínusovy bod pre vojnu medzi Ruby a Perl-om. :D
Nuže a slovo na záver. Dobrá, ľahko čitateľná knižka, ktorú treba prečítať keď to človek myslí s WEB 2.0 :D seriózne. Keby len takých bolo viac...
Hodnotenie: 3/4
16. Jan 2008
Jozef
PS: už sa vie čo to ten WEB 2.0 je???
en