Sunday, August 31, 2008

Saturday, August 30, 2008

Komentarz do MVC - czyli frameworki PHP

Dziś przeczytałem świetny wpis wyjaśniający o co chodzi w MVC. Osobiście chciałem dodać do niego mały komentarz, który mam nadzieję pojawi się również na blogu autora.

Ja dzisiaj - nie wyobrażam sobie tworzenia stron internetowych inaczej. Osobiście jednak - nie pisałem nigdy własnego Frameworka - raz tylko pomagałem koledze, gdyż uważam, że pisanie własnego MVC to wynajdywanie koła na nowo.

O Kohana nigdy nie słyszałem. Osobiście zaczynałem od CodeIgniter i jest to prosty framework. Jego zaletą, która jest ważna dla początkujących, jest fakt iż posiada dobrą dokumentację i można naprawdę szybko połapać się co gdzie jest.

Na kolejny ogień poszedł CakePHP. Tam dowiedziałem się co to jest scaffolding. Z cech, które przemawiają za CakePHP moim zdaniem jest na pewno obsługa drzew i ACL, których nie spotkałem w żadnym innym frameworku. Szczególnie widać to w wersji 1.2, w której pojawiło się wsparcie dla internacjonalizacji. Szalenie również podoba mi się mechanizm "elements", który moim zdaniem bardzo ułatwia tworzenie szablonów, z różnych powtarzalnych komponentów, pod, które możemy podkładać różne dane, co szalenie skraca pracę w tworzeniu szablonów. CakePHP posiada w najnowszej wersji mnóstwo innych bibliotek i wygląda mi na to, że obecnie jest to najlepszy framework.

Obecnie tworzę projekt z użycie Symfony. CakePHP w wersji 1.2 na pewno chciał doścignąć Symfony. Moim skromnym zdaniem - przypadkiem go prześcignął. Co do symfony. Posiada mnóstwo pluginów i dużą społeczność. Używa Propel, modele są więc generowane i dostępne ad-hoc - bez pisania jakiegokolwiek kodu. Dzięki użycia Propel modele generowane są w bardzo inteligentny sposób. Na koniec - bez pisania nawet połowy linijki kodu - dostajemy gotowe klasy w PHP, które obsługują między innymi CRUD oraz posiadają metody automatycznie pobierające dane z innych tabel używając złączeń. Dodatkowo są one szalenie elastyczne. Kolejna rzecz to scaffolding,który jest naprawdę piekielnie użyteczny i pozwala w 1 minutę(naprawdę właśnie w tyle) stworzyć funkcjonalny panel administratora do prostej aplikacji. W moim przypadku problemem okazało się korzystanie z dokumentacji, która z racji niekompletności,rozstrzelenia oraz braku opisania każdego modułu od A do Z (istnieje tylko kompletny opis API) jest nieużyteczna. Z tej przyczyn prawdopodobnie do czasu aż to się nie zmieni - będę korzystał z innych frameworków. Na obronę powiem tylko, że dokumentacji, która istnieje obecnie jest dużo, niemożna narzekać na jej brak czy na nie opisanie jakiś komponentów.Projekt jest jednak tak kolosalny, że stworzenie do niego dobrej dokumentacji to nie lada wyzwanie. Na razie, w moim mniemaniu jeszcze nie udało się temu wyzwaniu sprostać.

Innym ciekawym moim zdaniem framerowkiem jest Akelos, który jak możemy wyczytać na stronie internetowej, jest portem Ruby On Rails napisanym w PHP.Tyle z moich doświadczeń. Może okażą się dla kogoś pomocne w dalszej przygodzie z MVC. Chciałem przy okazji polecić swój artykuł, w którym również swojego czasu opisałem MVC na blogu Matriksa.

Friday, August 29, 2008

Nokia 6600 - Python on Board

Ostatnio zainstalowałem sobie na swojej Nokii (po 2 latach ?) język programowania. Programy napisane przeze mnie w Java nie działały :| ale na szczęście jest Python :) Na początku miałem problemy z dowiedzeniem się jaką wersję systemu posiadam. Po długim myszkowaniu w sieci znalazłem witrynę, z której wynika jasno, że posiadam system S60 Second Edition. Skoro tak ściągnąłem sobie odpowiednią wersję PyS60. Poza samym językiem zainstalowałem sobie również PythonScriptShell. Dobra - fajnie. Laptop -> Telefon połączenie działa, ale co dalej ? Szalenie spodobał mi się wpis pokazujący jak otrzymać konsolę Pytona z telefonu na komputerze. Co więcej. Lista aplikacji prezentowana na wiki PyS60 jest imponująca. Jak zobaczyłem co można uzyskać używając aplikacji controlblue wiedziałem, że nie ma bata. Musi zadziałać.

Zacząłem grzebać w sieci. Okazało się, że Ubuntu 8.04 ma niestety błędy w paczuszce bluez-utils. Rozwiązanie znalazłem na jednym z blogów. Chodziło o dodanie repozytorium:
http://ppa.launchpad.net/ubuntu-kennynet/ubuntu hardy main
i zaktualizowaniu paczki bluez-utils. Od teraz wszystko było już proste. W zakładce source dowiedziałem się jak ściągnąć źródła. Po starcie serwera okazało się, że trzeba zmienić troszkę kod. Wykomentowałem linijki:
#port = bluetooth.get_available_port( bluetooth.RFCOMM )
#s.bind(("",port))

i dodałem:
s.bind(("", bluetooth.PORT_ANY))
Po tym zabiegu serwer ruszył jak kobyła. Dobrze jest go odpalić w tle (& na końcu) i przekierować stdout i stderr do /dev/null. Po uploadowaniu klienta i uruchomieniu go, ruszył bez problemów dodałem kilka poleceń i zacząłem się bawić. Patrząć na kod serwera zauważyłem, że wykonywane są po prostu komendy systemowe. Po chwili moja konfiguracja wyglądała tak:
Play/Pause amarok-nightly -t 0
Next amarok-nightly -f 9
Prev amarok-nightly -r 7
Shutdown sudo halt 6

I leżąc wieczorem w łóżeczku zmieniałem sobie piosenki, a jak powieki zrobiły się ciężkie bez ruszania się z miejsca - wyłączyłem komputer :] Po prostu gucio.

Sunday, August 24, 2008

Łowcy smoków - o co chodzi ?

Ok - prawda. Przyznaję się bez bicia. Chciałem iść na film, z dobrą akcją. Właśnie wróciłem z kina. Wybrałem Łowców Smoków. Kobieta sprzedająca bilety i Pani wpuszczająca na sale - były w niezłym szoku widząc mnie wchodzącego na salę. Film był chyba rzeczywiście dla dzieci skoro ostatni seans zaczynał się około godziny 15:45.
Na początku zdziwił mnie "wytwórca". Coś mało mi znanego - biorąc pod uwagę, że znam może z 4, którzy robią pewnie 90% filmów to powiedziałem sobie - ok. Mają konkurencję, co z tego, że mało znani - może się właśnie postarają. Na początku, gdy tylko rozpoczął się film (bajka ?) .... byłem mocno zawiedziony grafiką i efektami specjalnymi. Miałem ochotę na film akcji, z dobrymi efektami, a ich brak dało się zauważyć już po 2 minutach. No ale, cóż - nawet kiepsko zrobione filmy niosą ze sobą często jakieś ważne przesłanie. Pocieszając się, że film być może zaskoczy mnie swoją treścią - oglądałem dalej. Bajka jak bajka. Treść wydała mi się szalenie infantylna... to znaczy ... Film miał 80 minut, przy czym z 5 minut to napisy początkowe (takie odniosłem wrażenie), i opowiedz tu historię tak, aby nie robić skrótów myślowych, uproszczeń i wszystko opowiedzieć. Jeżeli nawet jest to wykonalne - to tu się nie udało. Bajka więc wydała się pisana jakby "na kolanie". Co do przesłania z całego filmu wydłubałem tylko 3 rzeczy.
+ Uwierz w siebie i w to, że potrafisz - są ludzie, którzy w Ciebie wierzą, a ty nie jesteś przeciętny ale powołany do rzeczy nieprzeciętnych
- Posłuszeństwo jest relatywne
- Kiedy poczujesz się potraktowany niesprawiedliwe wolno Ci kraść - w relatywnie dobrej sprawie

Tak więc film wypada raczej in minus z punktu widzenia wartości wychowawczych. Chyba nie zrozumiem filozofii ludzi, którzy robili film. Czas wrócić do Kopciuszka i Zakochanego Kundla.

Saturday, August 23, 2008

Dotpay - zawód

Jakiś czas temu miałem "przyjemność" zaimplementować obsługę dotpay w jednym z portali. Portal na pierwszy rzut oka, szata, oprawa, wygląda solidnie. Kiedy pisze się do obsługi odpowiedzi są bardzo konkretne jednak - tutaj plusy się kończą. Po zajrzeniu do dokumentacji na pierwszy rzut oka można mieć wrażenie, że "wszystko jest" jednak już pierwsza próba zaimplementowania czegokolwiek okazuje się, że wymaga niemal wróżbiarskich zdolności.

Domyślenie się, że pewne parametry nie są przesyłane (ale trzeba je u siebie hardcodować), do czego służy dana opcja, czy w końcu co dokłądnie wykonuje "testowanie". Kompletny brak profesjonalizmu i żenada. Jako programista spędziłem sporo czasu próbując dojść do tego - dlaczego hashe md5 nie są ze sobą zgodne - oczywiście, brak w dokumentacji. Takie rzeczy tak porządnej firmie. Na szczęście wpadłem na to co nie grało. Czy jest to jednak słuszne postępowanie w przypadku tak porządnej firmy. Dokumetnacja 2 na szynach.

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 :)

Monday, August 11, 2008

IVONA i Skype

Jakiś czas temu używałem IVONY, potem zdobyła chyba jakieś wyróżnienie, więc było o niej głośno, następnie dowiedziałem się, że to projekt ludzi z Politechniki Gdańskiej (o ile dobrze pamiętam) - stała mi się więc bardzo bliska jako oprogramowanie.
Któregoś razu zobaczyłem jak korzysta się z niej na komputerze. Dla mnie do tej pory stanowiła wyłącznie zabawkę jednak ciekawa rzecz - osobom mającym problemy z czytaniem czy niedowidzącym IVONA w komputerze ratuje życie. Jest po prostu świetna :]
Po obejrzeniu tego filmiku byłem po prostu urzeczony. Moim zdaniem pomysł jest świetny ! Pierwszy raz zacząłem żałować, że nie mam IVONY - fajna rzecz :] czuję w końcu ten powiew XXI wieku :)

Memento - Turk Telecom

Jakiś czas temu zmagaliśmy się w Matriksie z Turk Telecom :) I proszę bardzo :] w jakim charakterze dowiadujemy się o nim ponownie: http://di.com.pl/news/22884,1,0,Rosja_i_Gruzja_walcza_takze_w_internecie.html

Niby usunięte pliki po KDE4

Po usunięciu części paczek, które zainstalowały się w moim systemie podczas próby przesiadki na KDE4 zauważyłem, że z jakiś przyczyn nadal siedzi u mnie pliczek /etc/init.d/kdm-kde4. No cóż. Paczuszka kdm-kde4 została usunięta (tak twierdził synpatic) - więc skąd to się wzięło. Aby sprawdzić do jakiego pakietu należy ten dziwoląg wpisałem sobie na prędce:
dpkg -S /etc/init.d/kdm-kde4
Okazało się, że to jednak (usunięty) pakiet kdm-kde4. Po zaznaczeniu go do całkowitego usunięcia udało się go w końcu pozbyć. Ciekawa sprawa :)

Gdy coś się psuje w Ubuntu

Ostatnio zainstalowałem sobie próbnie KDE4. Niestety nie odpaliło się już po raz drugi a co gorsza ! wywaliło mi GDMa - musiałem wpisać startx z konsoli, żeby się dostać do Xów. Ratunkiem okazało się:
sudo dpkg-reconfigure gdm
I chyba jest to metoda działająca najlepiej na wszystkie bolączki :]

Friday, August 8, 2008

Pismo Święte - wyrazy, które mnie zaskoczyły

Ostatnio podczas czytania Pisma Świętego natrafiłem na wyrazy, które szalenie mnie zaskoczyły. Naprawdę nie spodziewałem się ich tam spotkać. Oto one: piecyk, piekarnik, kameleon, puszczyk, kormoran, łabędź, pelikan, ścierwik (ale chyba chodziło o ścierwnika), bocian, czapla, dudek.
Kto by pomyślał ?