Monday, July 26, 2010

Umarł król niech żyje król

Pisałem swojego czasu o tym jak zauroczyła mnie swoją prostotą Sinatra o Werkzeug jako analogicznym rozwiązaniu dla Pythona. Dzisiaj przyszło mi wrócić do pewnego skryptu WSGI i zacząć mocno go przerabiać. Jedna metoda wystawiona na zewnątrz z użyciem Werkzeug z wykorzystaniem kilku funkcji pomocniczych.

Dzisiaj, kiedy przyszło mi dopisać do tego kilka dodatkowych metod znajdujących się pod innymi adresami i wysłanie formularza nie wytrzymałem. Werkzeug wymagała ode mnie wklepania masy kodu do mapowania URLi, potem napisania obsługi w application, do tego dokumentacja nie odpowiedziała mi na pytanie jak wystawić metodę tylko jako GET :| Poddałem się. Ta sytuacja skłoniła mnie do poszukiwań nowej Sinatry dla Pythona.

Tak trafiłem na framework Bobo. Jestem po prostu zauroczony! Banalne, proste dekoratory (jak w Sinatra) - kilka metod, nic wyszukanego. Gdyby ktoś był ciekaw jak podpiąć do mod_wsgi polecam artykuł na blogu Grahama Dumpletona "Using bobo on top of mod_wsgi". Krótko mówiąc - umarł król niech żyje król.

Werkzeug stał się w moich oczach krową i wyleciał z sektora, w którym miał być najlepszym. Teraz to takie Django w wydaniu zrób to sam. Czyli moim zdaniem - bez sensu. Bobo jest troszkę magiczne, ale ten rodzaj magii w Pythonie jest dla mnie nie tylko akceptowalny, ale nawet pożądany. Polecam wszystkim, którzy szukają wygodnego micro frameworka dla Pythona.

Sunday, July 4, 2010

Architektura typu plugin

Tworzyłem już naprawdę wiele stron wykorzystując frameworki MVC. Klocuszek po klocuszku, trybik po trybiku konstruowałem żmudnie kolejne mechanizmy, bloki, elementy, funkcje, klasy, obiekty, widoki, modele, kontrolery.
Jednak czy znasz to uczucie kiedy trafiasz na aplikację, która ... jest tym czego dokładnie szukałeś. Nie? Ja też nie ponieważ często trafiam na aplikację, która prawie jest tym czego dokładnie szukałem. Czasami widzisz program, który robi to co chcesz tylko, z grubsza zmieniłbyś w nim kilka drobiazgów. Co pozostaje zrobić w takim przypadku?
Można napisać bardzo podobny program od zera, jednak szlak Cię trafia że wynajdujesz koło na nowo tylko dla kilku detali.
Można spróbować przerobić toola, ale utrzymywanie swojego forka to wciąż uciążliwe i czasochłonne zadanie.
Rzadko istnieje trzecia opcja - możesz napisać plugin, który przekształci produkt pod Twoje potrzeby.
Na PHPCon 2010 dużym zainteresowaniem cieszyła się prezentacja "Wprowadzenie do Implementacji Archietktury typu plug-in". Emocje z nim związane były różne jednak mam wrażenie, że Ci, którzy nie do końca byli zadowoleni przeoczyli fakt iż moja prezentacja o Drupalu była właśnie o architekturze typu plug-in.
Drupal pozwala Ci zupełnie z zewnątrz, z poziomu własnego pluginu, zaingerować w najgłębsze mechanizmy. Wszystko dzięki dziesiątkom hooków, które udostępnia na różnych poziomach abstrakcji.
Jeżeli masz pomysł na przerobienie Drupala prawdopodobnie wystarczy, że napiszesz swój własny plugin i wszystko uda Ci się uzyskać w żaden sposób nie ingerując w oryginalny kod Drupala. Do tego nie będziesz musiał budować podstawowych mechanizmów, takich jak: użytkownicy, newsy, kategorie, menu, treści od nowa. Po prostu skorzystasz z istniejących, a miejsca, w których Ci nie odpowiadają - zmodyfikujesz.
Unikniesz w ten sposób wynajdowania koła na nowo. Polecam każdemu, kto zastanawia się czy skorzystać z gotowego CMSa czy wybrać framework, spróbować Drupala (jako frameworka programistycznego of course :))

W Polsce nigdy nie było lepiej

W minioną sobotę miałem przyjemność odbyć bardzo sympatyczną rozmowę w przedziale pociągu TLK relacji Gdańsk Wrzeszcz - Włocławek. Rozmawiałem z ludźmi myślę, że koło sześćdziesiątki. Wspomniałem o tym, że kilkanaście dni temu obroniłem dyplom, cieszę się, że już mam pracę, odczuwam jednak dyskomfort związany z widmem brania kredyty na całe życie w celu kupienia mieszkania. Słowo mieszkanie przy realiach cen w Gdańsku sprowadza się do kawalerka.
Dyskusja zboczyła na inne tory i mogłem dowiedzieć się jak było kiedyś. Przytoczę informacje, które pozyskałem w trakcie tej rozmowy. No więc kiedyś nie było problemu z dostaniem pracy. Możliwość zatrudnienia uzyskiwała już osoba w wieku lat szesnastu - otrzymywała wtedy opiekuna w zakładzie, który za nią odpowiadała. Kończenie studiów nie było powszechne. Już technik otrzymywał lepsze stanowisko w pracy zaś osoba z wykształceniem wyższym nie musiała się w ogóle martwić o zatrudnienie - była niemal natychmiast rozchwytywana na rynku pracy. Osób takich było stosunkowo niewiele ponieważ już do samego liceum szły osoby, które chciały iść dalej na studia. Reszta wybierała zawodówki i technika. Magister, czy inżynier był chętnie zatrudniany gdyż jako członek kadry zakładowej podnosił prestiż przedsiębiorstwa. Na uczelniach dostępne były stypendia różnych zakładów pracy, które spłacało się kilku letnim stażem odbytym w danym przedsiębiorstwie po ukończeniu studiów. Pracodawcy "bili się" o ludzi z wykształceniem wyższym, których była bardzo konkretna, ograniczona ilość.
Jeżeli ktoś chciał i był zdolny - a pracował - zakład chętnie wysyłał go na uczelnię, umożliwiał sześciogodzinny tryb pracy, dawał urlopy uczelniane na czas sesji oraz udzielał wszelkiego wsparcia w ukończeniu studiów. Tak było kiedyś. Kiedy zapytałem o to tajemnicze kiedyś - okazało się, że ten idylliczny obrazek to nic innego jak czasy socjalizmu w Polsce. Czasy, w których Polska zaciągnęła ogromny dług i żyła na kredyt, czasy, w którym produkowane dobra były natychmiast wywożone na tereny ZSRR a pułki w sklepach świeciły pustką. Czasy, w którym cała Polska żyła na krechę.
Pojawiło się jednak w mojej głowie pytanie. A jak wyglądało jakieś inne kiedyś? No więc kiedyś (wcześniej - przed okresem terroru socjalistycznego) była II Wojna Światowa, która jest złym przykładem szukania jak kiedyś w Polsce było. Dużo wcześniej kiedyś była I Wojna Światowa a jeszcze wcześniej kiedyś był rozbiór, po którym Polska pojawiała się na mapie dopiero po I Wojnie Światowej. Tak więc to już nie czasy współczesne, a więc odpada. Więc co tu dużo mówić - pozostało XX-lecie międzywojenne.
Skąd to pytanie? Skoro dzisiaj narzekamy często, że w Polsce nie jest dobrze to ... kiedy w Polsce było dobrze? I czy to było bardzo dawno temu? Jak wtedy było w Polsce? A może dałoby się czegoś nauczyć, wyciągnąć lekcję na dzisiejsze czasy.
Więc Mamy nasze XX-lecie między wojenne. Kiedy pytałem dziadków jak ten okres wyglądał... Cóż. Trudno szukać w tym okresie jakiś wzorców na dni dzisiejsze. Małżeństwa dążące do połączenia majątków, mezalianse, ludzie podzieleni na kasty, wszechobecne rzemiosło.
Od Okrągłego Stołu minęło 21 lat. Tyle co od końca I do początku II Wojny Światowej. Nasza elity były przez lata eksterminowane: I Wojna Światowa, II Wojna Światowa, okres socjalizmu. W Kwietniu nastąpiła do tego katastrofa w Smoleńsku.
Ten punkt widzenia uświadomił mnie, że nikt tak naprawdę w Polsce nie wie jak powinna wyglądać, bo Polska tak długo nie istniała na mapie, że nikt kto mógłby to wiedzieć - nie przeżył. Jesteśmy jak dziecko, które uczy się chodzić na nowo, raczkuje, wywraca się, potyka i wstaje znowu. Robimy kroczek za kroczkiem i raczkujemy i nie ma w tym nic czego należałoby się wstydzić.

Thursday, June 17, 2010

Profesjonalne PKP Intercity

28 Maja tego roku złożyłem zapytanie związane z pewną kłopotliwą dla mnie sytuacją, która spotkała mnie na Dworcu PKP w Kielcach w kasie Intercity. Dzisiaj, to jest 17 Czerwca 2010 otrzymałem bardzo satysfakcjonującą mnie odpowiedź. Jestem naprawdę zadowolony z uzyskanego efektu :) Przytaczam zarówno swój e-mail jak i odpowiedź InterCity.

Moje zapytanie
Witam Państwa!

Ostatnio powracając z południa Polski Państwa Kolejami bardzo niemiło zaskoczyła mnie następująca sytuacja: kasjerka poproszona o wystawienie biletu poprosiła mnie o dokładne informacje dotyczące przesiadek oraz numerów pociągów. Mówiąc iż nie posiadam takich informacji została mi wręczona karteczka z numerem telefonu Infolinii. Przy kasach nie było kolejek, a w obszarze budynku dworca nie dostrzegłem żadnego punktu informacyjnego. W takiej sytuacji spodziewałbym się udzielenia przez kasjerkę informacji o możliwych połączeniach, ich koszcie oraz możliwości kontynuowania podróży. Poczęstowany karteczką z numerem telefonu, którego koszt wynosi 1,28/minutę poczułem się najzwyczajniej w świecie zbyty. Moje pierwsze pytanie brzmi: jakie w tym zakresie obowiązki ma kasjer sprzedający bilety? Czy ma obowiązek udzielenia mi informacji o dalszym połączeniu oraz udzieleniu pomocy w rozpoczęciu lub
kontynuowaniu podróży?

Później sytuacja się skomplikowała. System nie pozwalał wystawić miejscówki na klasę drugą pociągu, którym miałem przebyć odcinek Kraków - Gdańsk. Kasjerka twierdziła iż zwracany przez system błąd nie wskazuje na brak miejscówek. Poprosiłem więc o wypełnienie biletu ręcznie - otrzymałem odpowiedź, że to niemożliwe. Poprosiłem więc o poświadczenie z kasy zwalniające mnie z opłat pobieranych przez konduktora w przypadku kupna biletu w pociągu - i ponownie otrzymałem odpowiedź, że to niemożliwe. Czy kasjer może wystawić bilet ręcznie w przypadku wystąpienia problemów z systemem? Czy kasjer może wystawić miejscówkę ręcznie w przypadku wystąpienia problemów z systemem? Czy kasjer może wydać poświadczenie zwalniające z pobierania opłaty u konduktora, w sytuacji, w której z obiektywnych przyczyn leżących po stronie pracownika InterCity nie udało się wystawić biletu w kasie?

Zakłopotany klient
--
><> Jan Koprowski
Odpowiedź Intercity

„PKP Intercity” S.A. uprzejmie dziękuje za uwagi zawarte w skierowanym e-mail.
Wszelkie uwagi naszych klientów są ważnym źródłem informacji o jakości świadczonych przez nas usług oraz pozwalają nam na wyeliminowanie
nieprawidłowości, których niestety czasami nie udaje nam się uniknąć.
Chcielibyśmy podkreślić, że wszystkie uwagi i spostrzeżenia zarówno z podróży naszymi pociągami, jak również podczas świadczenia usług przez Spółkę „PKP Intercity”, są przez nas dokładnie analizowane. Dążąc do stałej poprawy jakości oferowanych przez nas usług, w przypadkach uzasadnionych podejmowane są odpowiednie działania korygujące, mające na celu wyeliminowanie powstałych nieprawidłowości. Z tego względu opinie naszych podróżnych oraz wytworzony poprzez skargi i reklamacje dialog, bardzo sobie cenimy, gdyż daje nam możliwość doskonalenia poziomu obsługi podróżnych.
Rzetelność w obsłudze podróżnych jest podstawowym obowiązkiem pracowników naszej Spółki jak również pracowników, którzy w naszym imieniu reprezentują Spółkę „PKP Intercity”.
Uprzejmie informujemy, iż pracownik kasy biletowej powinien Panu udzielić stosownych informacji, tym bardziej, iż jak Pan twierdzi nie było kolejki podróżnych nabywających bilety na przejazd. Nadmieniamy, iz na Dworcu w Krakowie Głównym informacja znajduje się w holu głównym Dworca - okienko kasowe nr 13.
W kwestii wystawienia dokumentów na przejazd, kasjer biletowy nie może wystawić ich ręcznie, może natomiast wydać poświadczenie zwalniające z pobierania opłaty dodatkowej u konduktora.
Ponadto uprzejmie informujemy, że na okoliczności poprawy jakości świadczonych usług przez Spółkę „PKP Intercity”, treść złożonej przez Pana skargi przedstawiono do wiadomości wszystkim zainteresowanym pracownikom, aby podobne sytuacje nie miały miejsca.
Za nieprofesjonalne zachowanie pracownika kasy biletowej uprzejmie przepraszamy.

Wednesday, June 16, 2010

Przeglądarka na telefon

Wyobraźmy sobie świat, w którym nie istnieją przeglądarki dla telefonów komórkowych. Pewnego pięknego dnia przeglądając stare szpargały przypadkowo ocierasz starą lampę. Wychodzi z niej dżin i mówi, że uczyni dla Ciebie możliwym korzystanie z jednej z desktopowych przeglądarek na Twoim telefonie. Którą byś wybrał? Moje myślenie byłoby takie.
Internet Explorer? Nieee. Jest przecież za wolna i wszyscy piszą na nią w kółko wirusy. Po za tym są lepsze, bardziej zgodne ze standardami. Może Firefox? Ale kto chciałby czekać tyle czasu i zamulać telefon Firefoxem? Hmm Safari. Co Safari ma takiego czego nie ma konkurencja, poza tym - to dla maniaków Apple i iPodowców - nie dla mnie. No to co?
W moim przypadku na polu walki zostaje Opera i Chrome. Obie są szybkie, innowacyjne, tworzone z dużym przykładaniem się do look & feel klienta.
Obecnie Opera jest często najrozsądniejszym wyborem w przypadku przeglądarek internetowych na telefon. Jednak nawet gdyby istniała równie mocno rozwinięta konkurencja i tak byłaby w moim przypadku na drugim miejscu :)

Saturday, June 5, 2010

Windows code refactoring

Zastanawialiście się dlaczego Windows często wydaje sie tak ociężały? Jestem obecnie w trakcie pisania pracy magisterskiej. Extreme Programming i Alistair Cockburn ciąsają kołki na głowie wciąż mówiąc o wadze refaktoryzacji. Zastanawialiście się jak to jest z kodem źródłowym systemów operacyjnych? Wiadomo, że ciągła refaktoryzacja jest podstawą rozwoju, wzrostu wydajności, utrzymania elastyczności projektu. W jądrze systemu Linuks co kilka godzin (a może minut) jakiś maniak poprawia coś co zostało już obecnie zrobione wciąż usprawniające mechanizmy. Również architektura jest na bieżąco dostosowywana do zmieniających się potrzeb, warunków oraz rozmiarów projektu. Czy ktoś z was zastanawiał się kiedyś jak jest z systemem Windows? Ile razy dostajesz Windowsa? Raz. Ile razy dostajesz łatki? Średnio co miesiąc, ale czego one dotyczą? Kodu źródłowego systemu? Wątpię. Poprawiają znalezione błędy, łatają dziury. Czy kod systemu Windows jest w ogóle refaktoryzowany? Czy co kilka lat tworzony od nowa? Chciałbym kiedyś usłyszeć odpowiedź eksperta czy jego zdaniem taki kod ma w ogóle szansę być refaktoryzowanym. Zgodnie z zasadą rosnącego długu technicznego (czy ktoś go w Windows w ogóle spłaca?!) tańszym wydaje się napisanie Windows co 10 lat na nowo aniżeli refaktoryzacja starego kodu. I pewnie różnica między 9x, NT i Vistą na tym właśnie polega. Nie wiem jak to jest naprawdę i ktoś może uznać mój wpis za FUD, ale pomyślcie chwilę i powiedzcie czy to tak nie wygląda?

Wednesday, June 2, 2010

IE9 postawiło na ilość zdanych testów

Dzisiaj dzięki stronie css3.pl trafiłem na zestawienie IE9 Testing Center. Jak widać twórcy przeglądarki postawili na ilość zdanych poprawnie testów. Nie oznacza to, że IE9 posiada więcej zaimplementowanych nowinek. Tablica Web Designer's Checklist wskazuje na to iż w ilości obsługiwanych nowinek przoduje Google Chrome oraz Safari. Jednak to, że coś "działa" nie oznacza, że przechodzi testy i na odwrót. Już kilka lat temu Microsoft broniąc IE8 mówił iż zdanie testów ACID3 wcale nie oznacza zgodności ze standardami. W skrócie - można napisać przeglądarkę, która zdaje ACID3 na 100% i nadal źle wyświetla strony. Przemilczało jednak, że w drugą stronę już to nie działa.
Postawienie na zdawalność testów to na pewno dobry krok z punktu widzenia refactoringu kodu oraz późniejszego utrzymywania kodu. TDD zawsze to ułatwiało. Tutaj jest to prostsze bo testów nie trzeba opracowywać samemu (chociaż pewnie Microsoft posiada ich sporo). Nie jest to jednak ruch marketingowy. Wszak przeciętny świadomy, surfer ocenia czy jakiś selektor CSS3 czy nowość HTML5 mu działa, albo nie - nie patrzy czy działa zgodnie z warunkami testowymi. Dlatego przeglądarki takie jak Firefox, które często wprowadzają nowe funkcji działające w zły sposób będą cieszyły się lepszą renomą niż IE, które będzie wprowdzało nowości powoli acz konsekwentnie i rzetelnie. Aż nie chce mi się wierzyć, że piszę to o produkcie MS. Trzeba jenak przyznać, że podejście zepołu IE9 jest w końcu tym właściwym - zgodność ze standardami i zapewnienie wstecznej kompatybilności.