Wednesday, August 13, 2008

Pylons - raport z pola walki

Od kilku dni (tygodnia) piszę pewną aplikację w Pylons. Myślę, że to dobry moment (choć pewnie - to nie wszystkie przygody jakie mnie czekają), żeby opisać co i jak.

Po pierwsze szalenie podoba mi się python. Kod pisze się szybko, zgrabnie. Jak się na to wszystko patrzy - to nawet mniej jakoś tego kodu się wydaje - i dobrze :] Tak powinno być.

Jak pisałem wcześniej Pylons używa zewnętrznych, istniejących w oderwaniu od projektu rozwiązań, do najróżniejszych zadań. Bardzo mi się to osobiście podoba :) i wpływa pozytywnie, moim zdaniem, na cały projekt.

FormEncode - świetne rozwiązanie do walidacji formularzy. Lepiej bym sobie tego sam nie zaplanował. Bardzo rozbudowane. Szkoda, tylko, że w pythonsbook są błędy - które wyłapałem dopiero po zajrzeniu w kod źródłowy wyżej wspomnianej biblioteki. Do tej pory na przykład nie wiem zmienić treść domyślnych komunikatów - dla wszystkich pól jednym pociągnięciem nie wprowadzając jej w każdym z osobna bez robienia własnego validatora (a o ile rozumiem z pylonsbook jest to możliwe).

W ogóle muszę przyznać, że jestem mile zaskoczony tym iż w ogóle istnieje coś takiego jak pylons book.

Kolejna rzecz - jeżeli chodzi o opis ustawiania kodowania w SQLAlchemy - to dokumentacja Pylons ... nawet nie - nie powiadamia nas o tym, ale bezczelnie wyprowadza nas w pole. Przydałaby się tutaj, z racji czystej żetelności, aktualizacja i uświadomienie użytkowników.

No i jak przy kodowaniu jesteśmy to niestety - python ze swoim unicode w wersji 2 sprawia same problemy. Używanie znaczków polskich w templatach, czy w kodzie - powoduje nie lada problemy w bibliotekach ... i nie zawsze udaje się je ominąć, czy załatwić sprawę w kontrolerze. Tak np. jeżeli użyjemy w FormEncode polskich znaczków w którejś wartości "GetOne" - to po wybraniu jej w formularzu zostaniemy poczęstowni błędem o niemożności odkowania symbolu.

Mam nadzieję, że zmiany na poziomie języka w Python 3000 jakoś to załatają ... bo obecnie moim zdaniem - stan jest opłakany.

Co do wcześniej wspomnianych komunikatów - o ile nie znajdę w źródłach FormEncode metody to da się to bodajże załatwić (mam nadzieję, że tak) poprzez i18n ... i tak zamierzam to zrealizować - jest to jakieś rozwiązanie :)

Hmm - co więcej. W Pylons brakuje mi czegoś co pozwalałoby zmienić nazwę kontrolera, ale to tylko taka moja fanaberia (często zmieniam zdanie co do tego jak coś powinno się nazywać ... i po prostu by mi się przydało)

O co do SQLAlchemy i fillhtml. Metody używania SQLAlchemy opisane w Docs Pylons zwracają obiekty danego typu - zaś do fillhtml przydają się słowniki na przykład.... Tutaj fajnie było wpaść do pomysł zaimplementowania udawania przez klasę danego modelu słownika - i przekonwertowanie jej na słownik. Zadziałało i powiem szczerze, że jestem z tego szalenie dumny :)

Jednak zaniepokoiła mnie pewna sprawa. Otóż mój klucz główny w tabeli wcale nie nazyw się "id" i na jakiś czas "magicznie" metoda "get()" przestała mi zwracać wartości z tabeli - ciekaw jestem czy to ma jakiś wpływ... mam nadzieję, że to był jakiś mój błąd a nie przypadek. Głupio by było gdybya aplikacja przestawała losowo działać.

Dziś myszkując po internecie na blogu Zabiello znalazłem informację, że Jego zdaniem Merb-a jest jakby prościej się nauczyć od Pylons bo jest prostrzy. Z mojego punktu widzenia - łatwiej się nauczyć tego co posiada lepszą dokumentację ... Pylons opanowuję sobie spokojnie... w swoim tempie, natomiast w Merbie to jest dla mnie mega - zgaduj zgadula (przynajmniej bez dokumentacji - bo chyba takiej "dla ludzi" brak).

Martwi być może tylko, że czasami projekty, z których korzysta Pylons nie są często od dawna wydawane. Ciekawe czy są porzucone, czy "ukończone" i co się stanie kiedy znajdzie się w nich błąd. Wierzmy, że wszystko będzie dobrze :)

Dziś pozytywnie zaskoczył mnie nawet python, w którym z pomocą kolegi napisałem niskopoziomowy wrapper procesów z pipem komunikującym się na 3 i 4 deskryptorze - coś czego w rubym nie udało mi się napisać jeszcze jakiś czas temu (dzięki Łukasz !).

Podsumowując - wszystko na plus ! Uaktualnijcie tylko dokumentację tak aby nie robić ludzi w konia, poprawcie błędy w pylonsbook, zróbcie coś z tym unicode i cacy :)

1 comment:

Anonymous said...

No wiesz co brat, Ty rzeczywiscie jakis taki Komputero-exualny jestes chyba, bo nie wyobrazam sobie innej osoby ktora tak by mogla pisac o programowaniu XD