Nine Inch Nails, We're In This Together
Jak dla mnie, najbardziej rozedrgany utwór na płycie The Fragile.
Jak dla mnie, najbardziej rozedrgany utwór na płycie The Fragile.
A my nie! (My, czyli kilka naszych aplikacji)
Iwan Sagalajew, pracujący dla yandex.ru, podzielił się kilkoma spostrzeżeniami po nieudanym odpaleniu nowego serwisu społecznego. Czytałem to z niekłamanym zadowoleniem — większość problemów, które tam opisał, nie ma nawet szans, żeby nas dotyczyć. Po kolei:
Nie mam złudzeń, że w pewnym momencie będziemy musieli troszkę przyciąć nasz radosny bałaganik, ale aplikacja została zaplanowana z tak dużym zapasem, że to na pewno nie nastąpi w ciągu najbliższych kilku miesięcy...
Mała aktualizacja, pod wpływem komentarza Bluszcza — to on to wymyślił. A żeby nie rozpłynął się w samozachwycie, to wymyślił też parę marnych rzeczy, ale tego co marne pozbędziemy się prędzej czy później...
Ktoś (imienia nie wymienię) wysłał klientowi teksty do przetłumaczenia... w Excelu. Klient zadowolony, że nie musi używać żadnych hackerskich narzędzi typu poEdit, oczywiście przetłumaczył teksty w tymże Excelu, a nam przyszło załamać ręce. Ale tylko na chwilę.
Dzięki bibliotece polib załatwiliśmy sprawę w pół godziny. A żeby zaoszczędzić stękań na przyszłość, następne partie tłumaczeń też będziemy wysyłać w Excelu. A co!
Jest kilka projektów związanych z Django, na które warto jest mieć oko, z różnych względów. Niektórych używam, więc z konieczności śledzę ich rozwój (m.in. django-registration i django-comment-utils), ale są też takie, które rokują rozwiązanie trapiących mnie problemów.
Jednym z takich projektów jest django-orm-cache, a problem, który ma on rozwiązać dotyczy każdego, kto używa cache na poziomie obiektów w Django. Został on opisany przez Davida Cramera (który także jest pomysłodawcą i jednym z developerów tego projektu). W skrócie chodzi o to, że używany na poziomie obiektów i ich grup cache staje się dodatkowym storage, w którym trzeba odzwierciedlić zmiany, wprowadzone w głównym storage (czyli w samych obiektach). Dobrego rozwiązania nie ma — można rygorystycznie pilnować wygaszania obiektów w cache przy każdej modyfikacji (przydają się tu sygnały), można wersjonować klucze przy użyciu jakiegoś znacznika, ale żadne z tych rozwiązań nie jest ani wygodne, ani łatwe. Django-orm-cache ma ułatwić życie, przejmując zadanie automatycznego wygaszania obiektów w cache przy każdej modyfikacji obiektu.
Projekt nie jest jeszcze w stanie nadającym się do użytku, ale widać w nim jakiś ruch i to dobrze wróży. Chciałbym już teraz mieć coś takiego w mojej narzędziówce w pracy...
Rok temu, bawiąc w Krakowie jako prelegent podczas Zlotu Programistów Delphi, jadłem obiad w gruzińskiej restauracji Chaczapuri. Mieliśmy wtedy na świeżo przykre przeżycia kulinarne ze Sphinxa w Alejach Jerozolimskich, więc z pewną nieufnością podeszliśmy do restauracji bardzo podobnej zarówno w charakterze, atmosferze, cenach, jak i — pomimo zadeklarowanej różnicy kilturowej — pod względem menu. Okazało się, że o ile układ menu jest podobny, o tyle samo wykonanie i podanie jest o wiele lepsze. Postanowiliśmy więc sprawdzić, czy restauracja utrzymała poziom i czy nadal możemy ją polecać.
Nie możemy. Ze spokojnej restauracji, chociaż przecież nie pustej, zrobił się młyn na miarę McDonalds. Przez restaurację przewalały się tłumy ludzi, a stoliki stały nawet w przedsionku i przy wejściu do toalety. Na jedzenie czekaliśmy koszmarnie długo, choć zamówienie było bardzo standardowe. To, co dostaliśmy, było ledwo zjadliwe (ale nadal lepsze, niż te śmieci, które podają w Sphinxie) i właściwie jedynym plusem było to, że nie wyszliśmy głodni. Podobnie jak w ubiegłym roku, otrzymałem co innego, niż zamówiłem (oczywiście, tańszego i gorszego), byłem jednak zbyt głodny, żeby dochodzić swoich warzyw do schabu. Rok temu też ich nie dostałem, więc uznałem, że to całkiem normalne. Sam schab był suchy i twardy jak zelówa, jakby nie mógł żyć bez sosu. Frytki były bez zarzutu (cienkie, chrupiące, nie przesolone i nie tłuste), ale ryż rozgotowany jak u chińczyka.
Jeżeli ktoś będzie w Krakowie i postanowi wydać skromne pieniądze na jedzenie, to może lepiej niech zrobi to gdzie indziej, niż w restauracji gruzińskiej Chaczapuri. Mnie już chyba na długo ta restauracja będzie się kojarzyć z długim oczekiwaniem na furę jedzenia marnej jakości, za które trzeba będzie zapłacić jak za furę jedzenia nieco lepszej jakości.
Bluszcz zażyczył sobie RSS-ów dla konkretnych kategorii, żeby odfiltrować offtopiki na planecie. Tradycyjnie na wyrost kazałem mu się zgłosić w przyszłym tygodniu, ale to nie byłaby aplikacja w Django, gdyby rzeczywiście miało to tyle trwać. I trwało w sumie 20 minut. Proszę, masz RSS-y z kategorii (u mnie się one nazywają etykietami). Tę, która Cię interesuje, znajdziesz na stronie z wpisami pod etykietą python.
Wiele osób uważa internet jako zupełnie nie spełniający wymogów, jakie stawia się wiarygodnemu źródłu wiedzy. Ich liczba mniej-więcej odpowiada liczbie osób, które wiedzę z internetu traktują bezkrytycznie, jak jakieś objawienie. To nie o nich mam zamiar napisać dziś kilka zdań, to niereformowalna ekstrema. Zastanawiają mnie ludzie, którzy nie umieją (lub nie chcą) skorzystać z wiedzy w internecie pomimo tego, że jej tam szukają.
Nie policzę, ile razy zdarzyło mi się w usenecie czy na liście mailowej odpowiadać na pytanie podając bezpośredni link do oficjalnej dokumentacji (najczęściej pierwsze trafienie w Google). Nie policzę, ile razy byłem pytany bezpośrednio o coś, co jest opisane w wielu miejscach i stało się już wiedzą powszechną. Czemu ludzie uważają, że wiedza pochodząca z usenetu jest bardziej wiarygodna od tej, którą mogą znaleźć przy użyciu dowolnej wyszukiwarki?
Wydaje mi się, że odpowiedź na to pytanie tkwi nie w ludzkiej naturze, ale w charakterze zadawanych pytań (i w efekcie w typie uzyskiwanych odpowiedzi). Wiele osób poszukuje nie sposobów rozwiązania problemu (idei, pomysłu), ale gotowego rozwiązania, które można zastosować metodą Ctrl-C i Ctrl-V. Od takiej wiedzy wymaga się, by była generyczna i rozwiązywała całe spektrum problemów jednej kategorii, albo została dopasowana do konkretnego przypadku. Ponieważ taka generyczna wiedza jest wielką rzadkością, poszukiwacze wiedzy stawiają na to, że ktoś, postępując według ich wskazówek, wyprodukuje odpowiadający ich potrzebom kawałek wiedzy, gotowy do zastosowania w ich przypadku i rozwiązujący ich problem.
Django zdaje się być całkiem w poprzek przyjętej zasadzie w świecie OS/FS: release early, release often. Ostatnie oficjalne wydanie Django miało miejsce 11 miesięcy temu, (23 marca 2007 roku). Rozumiałbym to, gdyby w projekcie niewiele się działo i rzeczywiście nie byłoby co wydawać, ale działo się wiele. Od tamtego czasu doprowadzono do używalności newforms, wprowadzono pełną wewnętrzną unikodowość, znacząco zmieniono także wyjście wprowadzając automatyczne eskejpowanie zmiennych podczas renderowania szablonów. Każde z tych wydarzeń (a pewnie i kilka innych) zasługiwałoby na wydanie, choćby po to, by nie powiększać przepaści pomiędzy kodem wydanym oficjalnie, a kodem rozwojowym.
Nie podoba mi się to.
Na pewno nie średników i klamerek. ;)
Java jako język może nadawać się najwyżej do programowania pralek. Jako platforma może być przegniła do korzenia. Ale ma coś, czego co jakiś czas brak odczuwam bardzo mocno programując w Pythonie — zestaw specyfikacji do J2EE. Specyfikacja jak to specyfikacja, to suchy papier, może być bez sensu, ale złe są dopiero implementacje. Spośród tych wszystkich większość jest dość specyficzna dla Javy ("stwarzamy problemy by bohatersko je pokonywać", czy jakoś tak to było), ale są dwie, które ja uważam za perełki. I to są te dwie, których brakuje mi najbardziej:
Cała reszta może się schować, ale tych dwóch naprawdę mi brakuje. Nie to, żeby Python potrzebował takich specyfikacji, ja potrzebuję standardowych implementacji. O, jakby mi ułatwił życie taki serwer JMS z interfejsem w Pythonie (nie, ActiveMQ + Stomp to jeszcze nie jest to!)...
Sprawdzanie schematów kolorów do Vima bywa męczące. Czasem nawet bardzo. Dlatego strona, na której można zobaczyć kilkaset schematów w działaniu na raz, może być zbawieniem. Szkoda tylko, że nie można obejrzeć tam kodu w Pythonie, to by mi najbardziej ułatwiło życie...