Framework to nie hop-siup...

Przyglądając się WebOb i dołączonym do niego przykładom można wreszcie zobaczyć, jak dużą rzeczą są ramówki webowe. O ile WebOb dostarcza podstawy do zbudowania własnej ramówki, to porównanie tej podstawy z gotowym frameworkiem, np. Django, uświadamia, jak wiele rzeczy trzeba napisać, żeby wszystko razem zagrało. Oczywiście, zazwyczaj używa się tylko pewnej części ramówki i wydaje się, że napisanie własnej spowoduje, że będzie szybsza, lżejsza i w ogóle lepsza, bo przecież pozbawiona kodu (a więc i funkcji), którego się i tak nie używa. Ale to, co pozostaje, to i tak ogromna ilość kodu i ogromna ilość funkcji, które trzeba zaimplementować. I to zaimplementować poprawnie, przewidując sytuacje niezwykłe (dziwnego klienta, któremu się coś pieprzy z HTTP i czegoś-tam zapomina wysłać albo nie rozumie) i awaryjne.

Ja w każdym razie dziękuję, zostanę przy cudzej robocie. :)

Jestem mały, głupi i nazywam się port

Chodzi mi o program port, ten od MacPorts. Jego działanie jest dla mnie źródłem załamywania rąk nad głupotą. A właściwie lepiej byłoby to nazwać badziewnością sączącą się z samego źródła.

Wyoraźmy sobie sytuację (nie całkiem hipotetyczną): w nowej wersji biblioteki libsqlite3 poprawiony zostaje bardzo denerwujący błąd, który miał wpływ na działanie wielu programów. Błąd był bardzo denerwujący i chciałbym się go pozbyć także z moich aplikacji w Pythonie, które działają z PySQLite. Wpisuję więc w terminalu sudo port -R upgrade sqlite3 i...

Ile razy zostanie przebudowane subversion? Ile razy zostanie przebudowany Vim? Ile razy zostanie przebudowane gnutls?

Przykro mi, ale na 2 pierwsze pytania nie umiem udzielić odpowiedzi. Liczenie ile razy budowało się subversion zakończyłem po 15 razie, ale ile razy budował się Vim po 25 razie. Łącznie ponad 40 razy zostały zbudowane 2 programy, które ze sqlite3 nie mają nic wspólnego.

Gnutls budowało się dokładnie raz. O jeden raz za dużo. Bo jedynym pakietem, który od sqlite3 zależy w moich portach jest py25-sqlite3.

Moja pierwsza aplikacja na AppEngine

W celach zupełnie edukacyjnych postanowiłem zrobić jakąś aplikacyjkę na Google AppEngine, na początek w Django 1.0 (na próby ujarzmienia WebOb czas przyjdzie później).

Napisałem kawałek kodu, zdeployowałem, co mogę powiedzieć po tych paru godzinach... Django musi zostać mocno okrojone, żeby zadziałało poprawnie. Ograniczenie do 1000 plików na aplikację oznacza, że z samego Django trzeba wywalić wszystko, co niepotrzebne lub nieużywalne, bo samo Django liczy sobie około 900 plików i na aplikację nie zostanie wiele miejsca. Przydaje się AppEngine Helper for Django, dzięki temu jest sporo prościej. django.forms można używać, ale ostrożnie i w razie potrzeby podpierając się google.appengine.ext.db.djangoforms (oryginalne ModelChoiceField nie działa). Modele przypominają modele Django, używa się ich podobnie, ale API nie jest takie samo, więc trzeba uważać. Jeszcze nie rozgryzłem autoryzacji, ale nie wygląda jakoś tragicznie.

W sumie wygląda nieźle, ale praca z takim okrojonym Django jest dość stresująca. It's a challenge, baby. :)

Drżyjcie, mieszkańcy Warszawy!

Dziś miałem pierwszą jazdę po mieście. Poszło nadspodziewanie dobrze: jechało mi się płynnie i bez problemów, pomimo sporego ruchu (hej, dzisiaj jest przecież dzień bez samochodu!), choć nie obyło się bez kilku zgrzytów w skrzyni biegów. Odwiedziłem Pragę Południe, Centrum i Mokotów, przećwiczyłem ronda, przejścia dla pieszych i szybką jazdę (na Trasie Łazienkowskiej można jechać 80, czad!). Nie stworzyłem zagrożenia w ruchu drogowym i chyba nawet nie było za bardzo widać, że się dopiero uczę.

Podoba mi się to. We czwartek i w piątek ciąg dalszy nauki.

Nowe komentarze zlądowały

Zaktualizowałem Django na zgodowie.org do wersji 1.0 (a nawet lepiej). Co za tym idzie, są już też nowe komentarze. Udało mi się (przy użyciu brudnych sztuczek, bo inaczej się nie dało) doprowadzić do tego, że najważniejsza zmiana, czyli wymaganie podania emaila przy dodawaniu komentarza, nie jest widoczna — nie jestem zainteresowany kolekcjonowaniem adresów email moich czytelników (prywatnie uważam to za idiotyzm). URL na razie nie jest wykorzystywany, ale myślę, że będzie już niedługo — jak tylko znajdę trochę czasu.

Jak na razie wydaje się, że wszystko działa...

Przybywa

Przybywa dokumentacji w moich django-tutors — skończyłem (a przynajmniej tak mi się wydaje) odcinki o uploadowaniu plików do ścieżek określanych statycznie i dynamicznie, właśnie kończę odcinek o upload handlers. Na napisanie czeka jeszcze odcinek o storage backends, a potem... A potem to się zobaczy.

Padła propozycja, żeby napisać coś o uploadowaniu wielu plików na raz przy użyciu jakiegoś flashowego uploadera, ale nie wiem, czy taki dość specyficzny temat mi odpowiada. A może ktoś zechciałby napisać taki artykuł? Projekt django-tutors jest otwarty, kto chce może dostarczyć co chce, to niekoniecznie musi być komplet (dokument + przykładowy kod), jeżeli czegoś będzie brakowało, to w razie potrzeby się dopisze. Wymaganie właściwie jest tylko jedno, to musi działać z fabrycznym Django 1.0 (czyli bez przeróbek w kodzie ramówki).

Jeżeli ktoś chce dołożyć swoje 3 grosze do projektu, to proszę się zgłosić mailem na moje konto na gmailu (jarek.zgoda i tak dalej), albo odezwać się na jabberze, też na moje konto na gmailu.

ZOMO? Nie, to ZWJZ!

Zacząłem dzisiaj szkolenie praktyczne na prawo jazdy, mówiąc po ludzku: miałem pierwszą jazdę. Od kręcenia głową na łuku podczas jazdy tyłem boli mnie szyja i kark, ale w końcu doszedłem do niejakiej wprawy i udawało mi się zmieścić w cholerne słupki za każdym razem.

Nie wiem, ile czasu zajmie mi zdobywanie tego dokumentu, ale teraz już się nie wycofam.

Aktor zaskakujący - Paweł Małaszyński

Grywa w badziewnych serialach, ale czasem pokazuje skrzydła. Zaskakujące jest to, że potrafi parodiować sam siebie ("Magda M. po 30-tu latach" w programie Szymona Majewskiego). I potrafi grać mocno przerysowane, typowo komediowe rzeczy (znowu w programie Szymona Majewskiego, "Figo Fago"). Facet ma do siebie dystans.

django-tutors

Moje niedawne przejścia z uploadem plików popchnęły mnie do tego, żeby spisać moje doświadczenia w postaci samouczków. Na początek poszedł właśnie upload plików, jak do tej pory napisałem o uploadzie do statycznej ścieżki.

django-tutors

Wszelka pomoc mile widziana — fragmenty szkoleniowego kodu, samouczki, itp. Jeżeli ktoś chciałby zredagować jakiś artykuł, to oczywiście zapraszam. Język: polski. Na razie wyłącznie.

Mac - software

W poprzednim odcinku było o hardware, a teraz będzie o software. Jako zatwardziały linuksiarz mam nieco inne podejście do oprogramowania, niż użytkownicy Windows® (wolność, wolność!), z kolei system operacyjny i aplikacje traktuję całościowo, jako jeden ekosystem — to w odróżnieniu od bździarzy. Ot i tak (nie mamy pańskiego płaszcza i co nam pan zrobi?).

Mac OS 10.5.4 (Leopard) wygląda ładnie. A nawet bardzo ładnie. Widywałem równie ładne dekstopy, ale jedynie na screenshootach, a tu proszę, sam mam taki piękny dekstop... Ale dość żartów. Patrzenie na OS X sprawia przyjemność i tyle wystarczy o wyglądzie tego systemu.

Jeżeli chodzi o funkcje samego systemu, to wszystko jest na miejscu, ale wszystko już gdzieś widziałem, może w trochę mniej wyczesanym wykonaniu. Inna rzecz, że to wszystko współgra ze sobą jak najlepiej. Pomijając dziwactwa (jak brak pliku /etc/hostname i paru innych w /etc, takie specyficzne pojmowanie dobrych obyczajów uniksowych), to OS X 10.5.4 to przyjemny system z uniksowymi korzeniami i ładną graficzną nakładką. Czasem mogą denerwować wynalazki Apple, jak np hierarche /Library i /Applications, ale można się do tego przyzwyczaić (o polubieniu nie ma mowy, jeżeli ktoś wcześniej miał system z prostą i czytelną hierarchią FHS). Oczywiście, po kilku latach używania jednego środowiska nabywa się nawyków, których trzeba się oduczyć przy przesiadce na inne, ale nawet na linuksie przesiadając się z Gnome na KDE (czy dowolne inne środowisko desktopowe) trzeba się pozbyć jednych przyzwyczajeń i wyrobić sobie następne. Nikt tego nie lubi, więc pewnie dlatego wyrobieni linuksiarze takich rzeczy nie robią — narzekają na swoje środowisko, ale na inne się nie przesiadają bez absolutnej potrzeby. ;)

Niestety, częścią środowiska są aplikacje spoza samego systemu i tu już mało rzeczy można pochwalić. W większości to kupa gówna, za którą w dodatku trzeba zapłacić. Ale użytkownicy Windows prawdopodobnie to znają i są do tego przyzwyczajeni, więc nie robi to na nich wielkiego wrażenia. Linuksiarz będzie psioczył. Na szczęście mam dość specyficzne (czytaj: małe) wymagania, więc udaje mi się je zaspokoić minimalnym zestawem (terminal, edytor, przeglądarka, komunikator i odtwarzacz muzyki).

I na zakończenie o tym, co się przydaje: MacPorts to przeniesiona z FreeBSD idea portów. Z portów mam Pythona, Vima 7.2, ImageMagick, Subversion, bazaar i całą masę innych przydatnych narzędzi typu command line. Trochę denerwujące jest to kompilowanie ze źródeł, ale w sumie da się wytrzymać, dopóki komuś nie wpadnie do głowy zainstalowanie sobie czegoś, co zależy od KDE lub Gnome, bo to wtedy nocka z głowy.

Pomimo narzekań i niesmaku, nie mogę powiedzieć, żeby pod względem softu było źle. Jest mniej-więcej tak, jak na Windows®. W porównaniu do różnych dystrybucji linuksa to jest po prostu gorzej — mało zamienników, kiepska jakość oprogramowania 3rd party i wszechobecna pazerność. I choćby z tego powodu prywatnie Maca bym sobie nie kupił.

Na doczepkę

Na koniec wspomnę krótko o tym, co daje największą przewagę linuksowi. OS X nie ma community. To system zrobiony dla indywidualistów, kultywujący indywidualizm i nie mający żadnego przesłania społecznościowego. Komuś, kto przesiadł się z systemu, wokół którego jest vibrant community, Mac OS X będzie się wydawał systemem bez zaplecza społecznego, napędzanym jedynie pieniędzmi Apple. Przynajmniej ja mam właśnie takie wrażenie. Nie odpowiada mi to, ale powoli się do tego przyzwyczajam.

Na dobry początek

Szedłem sobie na kurs na prawko, a tu takie rzeczy... Nie powiem, poczułem się cokolwiek nieswojo.

Na dobry początek

Musi poczekać

Od kilku tygodni mamy w Django nową ramówkę do komentarzy. Kod jest pokłosiem projektu Google Summer of Code™ i trafił do repozytorium Django właściwie bez poważnego przejrzenia, w wielkim pośpiechu, już po wydaniu którejś bety. Resultatem jest fura błędów i niedoróbek, które znalazły się w finalnym wydaniu Django. Nie chodzi bynajmniej o to, że ktoś to marnie napisał — dla każdego projektu programistycznego normalne jest to, że pierwsza wersja służy temu, by poprawić podstawowe błędy i doszlifować ją w trakcie używania. Nowa ramówka nie miała szansy sprawdzić się w boju, pod czujnym okiem dziesiątek czy setek użytkowników.

Próbowałem doprowadzić do tego, by zmiana ramówki komentarzy była niedostrzegalna dla moich czytelników. Niestety, okazało się, że w obecnym stanie ramówki jest to po prostu niemożliwe bez napisania... własnej ramówki. Nie wszystko daje się owrapować i nie wszystko można podmienić, nawet przy bardzo dynamicznej naturze Pythona. Dlatego wspomniane prace konserwatorskie zostają odłożone na bliżej nieokreśloną przyszłość, gdy ramówka otrzyma wreszcie wymaganą konfigurowalność. W sumie, patrząc na to z innej strony, skoro działa, to po co poprawiać? ;)

Nowe logo dla Django

The Framework for Ponies

the web framework for ponies with magical powers

Różowe podoba mi się bardziej. Przypomina mi trochę mój pomysł na logo i maskotkę firmy, w której do niedawna pracowałem — różowego pluszowego króliczka w czarnym lateksie. Propozycja nie przeszła, ale jestem do niem mocno przywiązany (nadal uważam, że była najlepsza).

Mac - hardware (MacBook)

Po miesiącu używania Maca dorobiłem się już niejakiej biegłości (już prawie tańczy jak zagram), więc mogę sobie pozwolić na spisanie wszystkich plusów i minusów, jakie według mnie ma ta platforma (hardware i software, oddzielnie). A ponieważ jestem linuksiarzem, to platformę rozpatruję jako hardware, system operacyjny i aplikacje razem (nie doznałem bździarskiego ukąszenia rozdzielającego system operacyjny od aplikacji). W dwóch częściach postaram się spisać moje zachwyty i uwagi nad sprzętem (MacBook 2.4GHz MB403/A) oraz oddzielnie nad platformą (Mac OS X 10.5.4 + iLife, porty i aplikacje od niezależnych dostawców — wszystko, czego używam).

Jeżeli będę robił jakieś porównania, to tylko z moim prywatnym laptopem, HP Compaq 6510b z Ubuntu 8.04 na pokładzie. W tym odcinku będzie jednak tylko o sprzęcie.

Oto, co ma do powiedzenia Profil Systemu na temat mojego urządzenia:

  • Nazwa modelu: MacBook
  • Identyfikator modelu: MacBook4,1
  • Nazwa procesora: Intel Core 2 Duo
  • Prędkość procesora: 2.4 GHz
  • Liczba procesorów: 1
  • Łączna liczba rdzeni: 2
  • Pamięć podręczna L2: 3 MB
  • Pamięć: 2 GB
  • Prędkość magistrali: 800 MHz
  • Wersja Boot ROM: MB41.00C1.B00
  • Wersja SMC: 1.31f0

To teraz pochwalimy:

  • klawiatura jest po prostu boska, pisanie na niej jest niewysłowioną przyjemnością, ma wszystko dokładnie takie, jak powinna mieć (skok, opór, profil klawiszy) — aż chce się na niej pisać, jak dla mnie absolutny numer jeden tej maszyny;
  • matryca daje obraz jak żyleta, nasycony kolorami tak, że aż czasem kłują w oczy;
  • gładzik (touchpad) jest duży i odpowiednio czuły, przyjemnie się go używa pomimo tego, że (jak wszystko od Apple) ma tylko jeden guzik;
  • maszyna waży 2.24kg, przez co łatwo daje się przenosić z miejsca na miejsce i nie męczy ramion aż tak bardzo podczas noszenia z domu do pracy i z pracy do domu;
  • poliwęglanowe tworzywo, z którego jest zrobiona obudowa, jest przyjemne w dotyku i nie klei się nawet wtedy, gdy dotyka się go spoconymi rękami.

Ogólnie można powiedzieć, że komputer jest dobrze zaplanowany i dobrze wykonany, z dobrych materiałów i z użyciem dobrej jakości komponentów. Przyjemnie się go używa. To teraz przejdźmy do mankamentów (część z nich na pewno jest przypadkiem jednostkowym, który nie występuje w innych egzemplarzach).

  • przycisk gładzika jest źle spasowany z resztą gładzika i z obudową, efekt: naciskanie w środkowej części powoduje nieprzyjemny zgrzyt i dobrze słyszalne skrzypienie;
  • wyjście MiniDVI zamiast standardowego VGA powoduje, że trzeba nosić ze sobą specjalną przejściówkę (podobno standardowa przypadłość wszystkich Maców);
  • szczelinowy napęd DVD wydaje nieprzyjemne dźwięki przy uruchamianiu i wybudzaniu komputera;
  • grzeje się jak szatan, nieważne czy stoi na biurku, czy też trzymam go na kolanach, lewa strona rozgrzewa się bardzo wyczuwalnie, nieco łagodniej jest ze spodem.

Porównując do 6510b, daje się zauważyć lepszą jakość wykonania i większą dbałość o ergonomię. Wyposażeniem ten MacBook nie dostaje do 6510b (2 x USB + FireFire + MiniDVI to sporo mniej niż 4 x USB + FireWire + VGA + S-Video), ale przeznaczenie tych komputerów jest trochę inne, więc nie można mieć mu tego za złe. Prawdopodobnie też mniejsza przestrzeń w obudowie (a przez to gorsza wentylacja) powoduje, że mój MacBook jest odczuwalnie cieplejszy od HP 6510b. Na szczęście to grzanie nie czyni go nieużywalnym.

Co do matrycy, to są one diametralnie różne (HP ma matową 14.1 cala, MacBook ma błyszczącą 13.3 cala), pomimo tej samej rozdzielczości standardowej. O ile ta w MacBooku lepiej odwzorowuje barwy, to ta w HP lepiej nadaje się do pracy w warunkach dobrego oświetlenia (biuro), bo nie widać na niej refleksów. Pod tym względem dałbym remis, bo naprawdę trudno mi się zdecydować, co ważniejsze (lubię zarówno dobre odwzorowanie barw, jak i komfort pracy w różnych warunkach).

HP Compaq 6510b waży więcej (2.4kg). Wydawało by się, że 200g to nie jest tak dużo, ale jest to wyczuwalna różnica. Dodatkowo zasilacz od HP jest cięższy, co w sumie daje całkowitą masę zestawu około 2.75kg. MacBook z zasilaczem MagSafe 60W waży wyczuwalnie mniej. To chyba zasługa mniejszej matrycy i mniejszej ilości komponentów, ale faktem jest, że HP potrafi przygiąć do ziemi, a noszenie torby z nim przez 2 godziny można nazwać torturą. Wybierając sobie na początku roku laptopa zastanawiałem się również nad MacBookiem oraz innymi laptopami z matrycą 13.3 cala, ale wybrałem takiego z większą. Mądrzejszy o dzisiejsze doświadczenia nie podjąłbym takiej decyzji, wybrałbym coś mniejszego.

W sumie nie dziwi mnie, czemu ludzie lubią MacBooki. Te komputery są sympatyczne, w takim rozumieniu, jakiego do komputerów raczej się nie stosuje — są sympatyczne podobnie do elementów wyposażenia wnętrza czy rzeczy mające trochę rozrywkowy charakter (trudno mi to opisać...). Mam wrażenie, że projektował to nie projektant komputerów, ale jakiś projektant sprzętu AGD. Od strony hardware można stwierdzić, że Apple zrobiło dobry komputer.

A o software (łącznie) napiszę niedługo...

Kwaśniewski powiedział w telewizji

...ale to jest zapobieganie post-factum...

Nie wyglądał na trzeźwego.

Sobota na koniach

Przed południem wybraliśmy się dzisiaj na konie i nie tylko. Niedaleko od Wołomina (12 kilometrów, niespełna 20 minut samochodem), pełna infrastruktura (i pyszny obiad), przyjazna atmosfera i atrakcje dla dzieci. Jak się okazało, właścicielem jest człowiek, z którym dawno temu wypiłem wiele szklanek piwa, ale nie widzieliśmy się przez kilkanaście lat.

Mieliśmy wrócić około 16, ale przeciągnęło się o parę godzin, bez najmniejszego żalu. Było fantastycznie. Obiecujemy sobie, że niedługo ponownie się tam wybierzemy. Szczególnie kusi możliwość przenocowania tam i poświęcenia dwóch dni na atrakcje. :)

Sobota na koniach

Przerwa technologiczna

W ciągu najbliższych kilku dni będę musiał wyłączyć komentarze na godzinę czy dwie, żeby przeprowadzić aktualizację do nowszego Django (z nową ramówką do komentarzy). Ale jeszcze chwilę poczekam, może poprawią zgłoszone przeze mnie błędy. ;)

Jest Django-1.0

Wydane

jarek:~/install/django$ svn log | grep zgoda | wc -l
      17

Niewiele, ale duma mnie rozpiera — dokonaliśmy tego!

TextMate jest niedorobione!

Kto używał Vima ten pewnie zna ten skrót: znak "gwiazdki" (*) wyszukuje słowo pod kursorem w dokumencie. I co powiecie? W TextMate, tak zajebistym skądinąd edytorze, nie ma czegoś takiego, jak "Find word at cursor".

Żenada.

Będzie, czy nie będzie?

Dziś ma zostać wydane Django 1.0.

Będzie?

Nie będzie?

Technikalia

  • XP-Dev.com: Free Subversion Hosting
  • A Django joint.
  • Python powered