Memcached, z czym to się je?

Na memcached natknęliśmy się podczas projektowania systemu wielojęzyczności (i18n) jednego z naszych serwisów. Problemem była kwestia przechowywania tłumaczeń tekstów. Pomysłów było kilka:

  • tłumaczenia przechowywane w plikach PHP, odpowiedni plik ze stałymi będzie includowany podczas obsługi żądania strony,
  • tłumaczenia przechowywane w plikach XML, pliki będą doczytywane w miarę potrzeby,
  • tłumaczenia przechowywane w bazie danych, i na bieżąco wczytywane.

Wszystkie te podejścia mają jednak słaby punkt, otóż za każdym żądaniem strony, tłumaczenia muszą być wczytywane od nowa. Faktem jest, że wszystkie trzy metody zawierają w sobie pewien rodzaj cache’owania (wczytywane pliki są cache’owane przez system operacyjny, zapytania bazodanowe cache’owane są przez bazę danych), ale tak na prawdę żaden z nich nie oferuje optymalnego rozwiązania. Najgorszym spośród wyżej wymienionych rozwiązań jest chyba czytanie tłumaczeń z plików XML. Wyobraźmy sobie, że za każdym razem gdy skrypt napotyka napis, musi wczytać odpowiedni plik i przeparsować XML w celu znalezienia tłumaczenia. Dodajmy do tego średnio 100 użytkowników aktualnie korzystających z aplikacji webowej i mamy murowaną porażkę. Można oczywiście spróbować cache’ować napisy na czas żądania strony, ale trzeba wziąć pod uwagę, że tłumaczenia raz wczytane, nie będą się często zmieniać. Większość z nich jest również wspólna dla wszystkich użytkowników. Tutaj do akcji spokojnie można zaprząc memcached.


|Czytaj dalej »

Opera 4 Mini Beta 2

Po niecałych 3 miesiącach oczekiwania, w końcu pojawiła się druga wersja beta internetowej przeglądarki Opera 4 Mini na platformę komórkową. Nowa wersja oferuje w porównaniu do poprzedniej m.in. obsługę kanałów RSS (jeszcze nie wszystkie RSSy działają prawidłowo), pionowy i poziomy widok stron, możliwość dodania dowolnej wyszukiwarki na stronie startowej. Więcej szczegółów tutaj.

Niestety jak to beta, Opera 4 Mini potrafi się czasami pogubić lub zawiesić. Z niecierpliwością czekam na stabilne wydanie :)

PHP kłóci się z POSTem i textarea

Kilka dni temu, podczas projektowania edytora tekstu zauważyłem ciekawe zjawisko dotyczące przesyłania danych POSTem i ich odbioru w PHP. Zjawisko to, a w zasadzie błąd, powoduje ucięcie pojedynczego znaku nowej linii podczas przesyłania formularza, pod warunkiem, że jest to pierwszy znak w przesyłanym tekście. Problem ten dotyczy tekstu edytowanego za pomocą html’owego textarea i występuje w PHP 4 i 5 (sprawdzałem na PHP 4.4.6 oraz PHP 5.2.2). Dodam, że efekt ten nie występuje gdy formularz jest przesyłany metodą GET.

|Czytaj dalej »

Flyspray, Pligg, Facebook… dokumentacja i programowanie obiektowe

Ostatnio coraz częściej zastanawiam się co się stało ze wzorcami projektowymi, programowaniem obiektowym, dokumentacją kodu źródłowego… czy ktoś jeszcze tego używa? czy może to już zamierzchła przeszłość? Wystarczy się trochę rozejrzeć… i nawet daleko nie trzeba szukać.

Niedawno miałem przyjemność wprowadzenia kilku zmian dotyczących funkcjonowania FlySpray’a (dla nieobytych, jest to taki program do obsługi zgłoszeń, np. raportowania błędów). Okazuje się, że programiści FlySpray uznali, że komentarze w kodzie źródłowym, czy też jakiś rodzaj manuala dla developerów jest zupełnie niepotrzebny. Nie wiem w jaki sposób dalej rozwijają już i tak dosyć skomplikowany projekt. Chyba po prostu piszą go nieprzerwanie od samego początku.

Dalej szarpnęliśmy się na próbę zainstalowania pligga (taki serwis pozwalający na postawienie swojego digga). Niestety, ale pligg sam z siebie, po zainstalowaniu, namiętnie wypluwał notice’y i warningi. Postanowiliśmy więc, pogrzebać trochę w kodzie, a nuż okaże się, że to jakiś mały problem i będziemy mogli spokojnie cieszyć się naszym własnym wykopem :) To co zobaczyliśmy totalnie nas zaskoczyło (no może nie wszystkich - ja już powoli się przyzwyczajam ;)). Wolna amerykanka to mało powiedziane, kod pligga to po prostu ’starocerkiewny’ (mieszanka kodu php, html, css i javascript w jednym pliku :D). Miłym dodatkiem do tych atrakcji jest również brak dokumentacji…

Na koniec zostawiłem sobie ostatnią nowinkę ze świata wielkich społeczności. Niedawno, w cudowny sposób, wypłynął na wierzch kod jednego z największych, społecznościowych serwisów, mowa oczywiście o Facebook. Co się okazało? Facebook również napisany jest w starocerkiewnym. Ech…

O ile można próbować wytłumaczyć styl programistów Facebook’a, którzy nie planowali upubliczniania swojego kodu, o tyle dziwi mnie postępowanie programistów dwóch pozostałych aplikacji. Przecież projekty open source są z zasady otwarte i każda osoba może przeanalizować kod źródłowy. Wydaje mi się, że jest to wystarczający powód aby utrzymywać w miarę porządny styl programowania i znośną dokumentację. Jeśli to za mało, można również dodać, że porządnie udokumentowane i prawidłowo napisane aplikacje pozwalają na zdecydowanie łatwiejsze rozwijanie i mniejsze koszty utrzymania.

Zobaczymy co będzie dalej, z niecierpliwością czekam na kolejną wersję FlySpray’a :)

Oferta pracy: programista PHP/ASP.NET/JAVA

Poszukuję programistów aplikacji internetowych (technologie: PHP / ASP / JAVA). Więcej informacji na stronie Praca lub na stronie firmy Posterus.

Timestamp i “odległe” daty w PHP - problem roku 2038

Pracując nad obsługą dat w PHP napotkałem problem, który jest bardzo często niezauważany lub pomijany. Otóż timestamp (czyli liczba sekund, która upłynęła od dnia 1 stycznia 1970) jest w PHP przechowywany i przetwarzany jako integer. Cóż z tego? Otóż ogranicza to jego reprezentację do 32 bitów, a mówiąc wprost najbardziej odległą datą jaką można zapisać w takim timestampie jest 19 stycznia 2038. Co jeśli interesuje mnie praca z późniejszymi datami? Krótko mówiąc lipa, timestamp w PHP nie przewiduje takiej możliwości. Byćmoże zostanie to rozwiązane w kolejnej wersji PHP.


|Czytaj dalej »

Problem z usypianiem / hibernacją w Ubuntu Feisty Fawn (Dell Inspiron E1505/6400).

Źródło: http://blog.paulbetts.org

Zaraz po uruchomieniu nowego Ubuntu (7.04), zadowolony z w miarę szybkiego rozwiązania problemów z instalacją (patrz Problem z Ubuntu LiveCD na laptopie Dell Inspiron E1505/6400 (ATI X1400)) zacząłem szperać w systemie. W zasadzie nie byłoby się do czego przyczepić, gdyby nie niedoszła próba uśpienia laptopa. No cóż, trzeba było trochę poszukać i okazało się, że jest inne rozwiązanie usypiania niż to, dostarczone wraz z Ubuntu. Mam na myśli µswsusp. Okazuje się, że w zależności od sprzętu dla jednych działają lepiej natywne metody, a dla drugich µswsusp. Jeśli zdarzyło się, że masz problem z tym pierwszym, dalej znajdziesz rozwiązanie.


|Czytaj dalej »

Problem z Ubuntu LiveCD na laptopie Dell Inspiron E1505/6400 (ATI X1400).

Trochę z opóźnieniem, ale w końcu zainstalowałem sobie Ubuntu 7.04 (poprzednio używałem Ubuntu 6.10). Nie trzeba było długo czekać, już na samym początku wystąpił błąd. Uruchomienie LiveCD powoduje błąd Xorga i wyjście do konsoli. Problemem okazał się brak sterownika do karty graficznej. Aby uruchomić Ubuntu live należy zamknąć okienka z błędem i wywołać w konsoli następujące polecenia:

sudo apt-get install xorg-driver-fglrx
sudo aticonfig --initial
sudo aticonfig --overlay-type=Xv
startx

Spowoduje to zainstalowanie się sterownika do karty graficznej i uruchomienie serwera Xów. Po zainstalowaniu systemu na dysku należy ten proces powtórzyć.

Witam

Mam na imię Maciek Rogoziński i zapraszam do czytania. Na początek proponuję stronę ‘O mnie’.