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.
[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.
[php] Wzorzec MVC
O korzyściach wykorzystywania wzorca MVC w aplikacjach internetowych (i nie tylko) nie muszę mówić - to nie podlega dyskusji. Jego definicja nie określa jednak dokładnie jak należy go zaimplementować, w związku z czym możliwości realizacji tego wzorca są duże - nawet w miejscach, które wydawałoby się bez znaczenia. Zapraszam do krótkiego omówienia tej kwestii.
[sql|php] Budowa forum.
Ponownie mam do zaproponowania ciekawe rozwiązanie dość powszedniego problemu - tym razem padło na sposób reprezentacji drzewiastego forum w bazie danych. Drzewiasty oznacza w tym momencie, iż odpowiedź na daną wiadomość pojawia się pod tą wiadomością (coś w stylu komentarzy w serwisie onet.pl).
[php|javascript] Kontrola praw.
Dzisiaj zaproponuje Wam ciekawy (moim zdaniem oczywiście) sposób na implementację kontroli praw po stronie widoku. Przyznam się szczerze, iż nie wykorzystałem go jeszcze w żadnym projekcie, ale jestem ciekawy co o nim sądzicie.
[php] Operacje na plikach a prawa dostępu.
Ostatnio spotkałem się z ciekawymi problemami związanymi z prawami dostępu do pliku/katalogu, które nie koniecznie są na pierwszy rzut oka (a nawet na drugi) oczywiste. Dotyczy to funkcji:
- is_file($file) - funkcja sprawdzająca, czy podany w parametrze plik istnieje.
- mkdir($dir, $mode) - funkcja, która tworzy katalog $dir i przydziela mu prawa podane w drugim parametrze.
[zend] Bardziej funkcjonalne autoload.
Każdy programista PHP 5 zna i lubi magiczną funkcję __autoload(). Z jej dobroci korzysta oczywiście system Zend Framework, który według mnie bardzo ciekawie rozwiązał problem ładowania plików/klas PHP. Dla niewtajemniczonych napisze tylko, iż w/w system określa ścieżkę na podstawie nazwy klasy według wzoru: klasa Zend_Db_Select jest przekształcana na ścieżkę /Zend/Db/Select.php - naszym zadaniem jest tylko ustawić odpowiednio ścieżki przeszukiwań (include_path).
Nie o tym jednak chciałem pisać. Moim celem na dzisiejszy wieczór jest przedstawienie rozszerzenia klasy Zend_Loader umożliwiającą “dorzucanie” nowych bibliotek, które nie są dostosowane do systemu Zend Framework (czyli nazwy klas nie są w odpowiednim formacie), a chciałyby skorzystać z dobroci funkcji __autoload().
[php|javascript] Walidacja formularzy po stronie klienta dla Fasic_Form.
W poprzednich artykułach opisałem prostą (ale użyteczną) bibliotekę do obsługi formularzy, teraz przedstawię rozwiązanie, które umożliwia walidacje po stronie klienta (za pomocą JavaScript) - reguły walidacji generowane są na podstawie obiektu formularza (czyli Fasic_Form).
Walidacja po stronie klienta oprócz wcześniej wspomnianej biblioteki Fasic_Form została również oparta na komponentach Zend Framework oraz jQuery (jednej z najlepszych bibliotek JavaScriptowych), więc znajomość tych pozycji na pewno się przyda.
[php] Integracja biblioteki Fasic_Form z Zend Framework.
W poprzednim artykule omówiłem jedną z wizji obsługi formularzy - przedstawiłem ją na przykładzie prostego skryptu PHP. Teraz czas na odważniejszy krok - integracja biblioteki z systemem Zend Framework. Tym razem naszym celem jest ładna i prosta integracja Fasic_Form z kontrolerem akcji (klasą typu Controller) .
[php] Obsługa fomularzy w Zend Framework.
Chciałbym Wam przedstawić moją propozycję obsługi formularzy w systemie Zend Framework (i nie tylko), istnieje kilka rozwiązań tego powszechnego problemu (na przykład w dziale proposal), ale niestety nie są wg mnie godne uwagi.
Wg mnie bibliotekę do obsługi formularzy powinno cechować:
- wsparcie dla walidatorów oraz filtrów
- możliwość korzystania z biblioteki poza Zend Framework
- elastyczność rozwiązania oraz prostota
Nie powinna natomiast zawierać:
- generowanie kodu HTML
- elementów dotyczących prezentacji pól formularza oraz jego innych elementów
Kliknij więcej, aby zobaczyć wynik - bibliotekę Fasic_Form.
[wydajność] Sposoby cachowania strony (aktualizacja)
Cachowanie to jeden ze sposóbów przyspieszenia działania serwisu internetowego (i tym samym zwiększenia jego wydajności). Jest to jednak bardzo ogólne pojęcie, ponieważ jego realizacja może dotyczyć różnych warstw serwisu zaczynając od bazy danych a kończąc na przeglądarce.