cover
Book Review : Catalyst: Accelerating Perl Web Application Development
Author(s)   : Jonathan Rockway
Publisher   : Packt Publishing (November 12, 2007)
ISBN        : 1847190952
Pages       : 200
Language    : English

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 200 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
1 1 1 0

16. Jan 2008
Jozef

PS: už sa vie čo to ten WEB 2.0 je???