Technologie i narzędzia: język PHP 5, Java, JavaScript, Python, system Zend Framework, Django, biblioteka jQuery, Smarty, platforma Eclipse, MySQL, SVN, CVS, UML, Firefox.
WebProgramming - wszystko o serwisach internetowych
O serwisach internetowych.
[javascript] Funkcja sleep/wait.
Wielu początkujących programistów języka JavaScript szuka funkcji typu sleep/wait, której (nie)stety nie znajdzie. Poszukuje wtedy jej “symulacji”.. ale nie tędy droga.
[php] Ciekawostka dotycząca obiektowości.
Ciekawostka polega na nietypowym zachowaniu się interpretatora PHP w przypadku gdy wywołamy metodę, w której znajduje się odwołanie do instancji obiektu (za pomocą $this), jako metodę statyczną.
[sql] Trik w MySQL
Tworząc stronicowanie listy (typu “Strona: 1 2 3 4 …”) musimy znać liczbę wszystkich rekordów, aby obliczyć liczbę wszystkich stron. W ostatnim artykule podałem przykład jak nie należy się do tego zabierać, ale jak to zrobić, aby było optymalnie?
[sql|php] Obiektowa pułapka.
Nakładek obiektowych na relacyjną bazę danych jest coraz więcej - aktualnie jednymi z bardziej popularnych są te oparte na wzorcu Active Record. Niewątpliwie ułatwiają one prace programiście i sprawiają, iż kod staje się czytelniejszy i lżejszy… mogą wprowadzać jednak pewne zagrożenie.
[php|asp] Wydajność
Znalazłem dość ciekawy “benchmark” porównujący wydajność PHP i ASP (oraz CGI) na podstawie jednego produktu (stworzonego w różnych w/w technologiach).
Porównanie jest dostępne pod adresem http://www.wrensoft.com/zoom/benchmarks.html.
W wielkim skrócie wynika z niego, iż produkt napisany w języku PHP jest bardziej wydajny od tego napisanego w technologii ASP. Oczywiście na wyniki tego porównania należy patrzeć z małym przymrużeniem oka - tą samą funkcjonalność można przecież napisać w tym samym języku na kilka sposobów - mniej lub bardziej wydajnie. Mimo wszystko daje nam pewne spojrzenie na ten temat.
[zend|smarty] System szablonów kontra szablony w PHP
Ponad 2 lata temu przeczytałem wpis na blogu (niestety nie pamiętam jakiego), w którym autor przekonywał, iż systemy szablonów nie są takie dobre jak się je maluje. Wtedy mu nie wierzyłem.. ale może jednak coś w tym jest?
[zend] Rzut oka na Zend Framework
Oto moje pierwsze podejście do omówienia systemu Zend Framework z bliska - a trzeba przyznać, iż to zadanie nie należy do najłatwiejszych ;).
[sql] Budowa forum - dodatek.
Mała uwaga do idei budowy forum, która została przedstawiona w artykule “Budowa forum“. Chcąc wyświetlić wszystkie komentarze (drzewko) dla danego komentarza (w naszym przypadku dla #1) nie wystarczy posortować wyników po path - możemy wtedy otrzymać listę w złej kolejności, na przykład dla danych:
| id | parent_id | title | …. | path |
| 1 | 0 | Wątek główny | …. | |
| 2 | 1 | Wiadomość pierwsza | …. | 0001| |
| 3 | 2 | Wiadomość pod pierwszą | …. | 0001|0002| |
| 4 | 1 | Wiadomość druga | …. | 0001| |
Sortowanie tylko po path spowoduje, iż pozycja #4 znajdzie się pod #3, a powinna się znaleźć pod #2. Aby tego uniknąć wystarczy posortować według (CONST_SLC to maksymalna liczba cyfr):
-
CONCAT(path, LPAD(id, CONST_SLC, "0"), "|") ASC
Dzięki temu uzyskujemy w łatwy sposób kolejność pozycji jak w drzewku - bez konieczności generowania rekurencyjnego.
[javascript] Tacomini
Nadszedł najwyższy czas na przedstawienie mojego rozwiązania “konkurującego” z Taconite (wpis na moim blogu).
[php|zend] Sprytne tłumaczenie adresów url.
Przyglądając się wielojęzycznym serwisom zauważyłem, iż żaden z nich nie tłumaczy adresów url (oczywiście treść samej strony jest ładnie przetłumaczona). Innymi słowy niezależnie od wyboru języka adresy stron są takie same - na przykład dostęp do wiadomości kryje się pod adresem /messages/show/1/, a przecież mogłoby to wyglądać tak /wiadomosci/wyswietl/1/ - czyż nie bardziej czytelnie (szczególnie dla osób nie znających języka angielskiego).
Zamiast rozmyślać wziąłem się za implementacje - tak też narodziła się wtyczka do Zend Framework o nazwie Fancyurl.
