Archiwum z Jun 2006

Wrocław Non Stop

Strona głowna wroclawnonstop.plWrocław Non Stop to jedyny w swoim rodzaju maraton kulturalny, podkreślający dynamizm i barwność tego miasta.

Firma, w której pracuję, wygrała po raz drugi konkurs na realizację portalu związanego z festiwalem Wrocław Non Stop. Moim zadaniem było przygotowanie strony w oparciu o gotowe szablony XHTML.

Czas bardzo naglił, więc zdecydowałem się wykorzystać moduł artykułów do prezentacji programu. Na początku pomysł wydawał się dobry, bo faktycznie bardzo szybko udało się zaimplementować potrzebną funkcjonalność. Problemy zaczęły się, gdy okazało się, że konieczne są zmiany. Musiałem się nieźle zagimnastykować, by wyciągnąć potrzebne dane. Wynikło to z tego, że sposób prezentacji programu ulegał dynamicznie zmianom wraz z upływem kolejnych dni imprezy.

Kolejnym wyzwaniem był mechanizm buforowania. Kolega Sławek dał mi dwie ważne wskazówki: włączaj tylko te pliki, które są naprawdę potrzebne (najlepiej tylko bibliotekę obsługi buforowania) i wyeliminuj konieczność łączenia się z bazą danych za każdym razem. Wykorzystałem świetną bibliotekę PEAR::CacheLite i zrobiłem, tak jak sugerował. Faktycznie, w przypadku odczytu strony z bufora, czas potrzebny na jej wygenerowanie jest rzędu tysięcznych sekund. Niestety, kłopoty pojawiły się przy stronie głównej, gdzie przy każdym wejściu powinny się pokazywać losowo inne wydarzenia. Ilość możliwych kombinacji była tak duża, że cache nigdy by się prawdopodobnie nie wygenerował. Ostatecznie postanowiłem, że nie będzie pełnej losowości, ale będę wybierał losowo sekwencje np. element 1 i 2, 2 i 3, itd. Napisałem funkcję, która generowała wyszystkie możliwe kombinacje i buforowała je. Przy wyświetlaniu strony odczytywałem plik z kombinacjami, losowałem jedną i używałem jako klucza dla mechanizmu buforowania.

Teraz rozwiązałbym to jeszcze inaczej i dużo prościej: dla każdego losowanego elementu tworzyłbym bufor w postaci pliku z fragmentem kodu HTML. Przy wyświetlaniu losowałbym potrzebne elementy, pobierał kod HTML dla nich i składał gotową stronę.

Na szczęście nie było problemu z pokazywaniem najbliższych wydarzeń: czasowe wygasanie buforów rozwiązywało sprawę. Przez to, że się bardzo spieszyłem nie doczytałem w dokumentacji CacheLite o bardzo użytecznym parametrze automaticCleaningFactor. Gdybym to zrobił, nie musiałbym pisać specjalnych skryptów do czyszczenia bufora uruchamianych przez CRON.

Wykorzystałem po raz kolejny moduł biuletynów, ale wyszukiwanie zrealizowałem już z wykorzystaniem modułu, który od dość dawna istniał w naszym CMS’ie, a na który nie zwróciłem uwagi. Kolega Piotr wykorzystał go w innym projekcie, więc szlak był przetarty – wystarczyło skorzystać z jego doświadczeń. Dodałem tylko zbieranie statystyk o wyszukiwanych frazach.

Serwis został uruchomiony 22.06.2006 roku w nocy – równo z rozpoczęciem festiwalu.

Użyte technologie: PHP5, MySQL 4.1, Smarty, PEAR, XHTML

Centrum Praw Kobiet

Strona główna Centrum Praw KobietFundacja Centrum Praw Kobiet jest organizacją, której misją jest działanie na rzecz równego statusu kobiet i mężczyzn w życiu publicznym oraz w rodzinie.

Moim zadaniem było uruchomienie strony fundacji wykorzystując gotowy szablon XHTML. Większość witryny stanowiły skategoryzowane artykuły, więc wykorzystałem moduł dostępny w firmowym systemie CMS i dodałem tylko pobieranie danych po stronie frontendu i prezentowanie ich na różne sposoby.

Ponieważ potrzebne było wyszukiwanie w serwisie, rozbudowałem moduł artykułów naszego firmowego systemu CMS o taką funkcjonalność. Użyłem dostępnych w MySQL indeksów wyszukiwania pełnotekstowego zakładając je dla pól tytułu, wstępu i treści. Potem samo wyszukiwanie wyglądało mniej więcej tak:

select
at.id, match(at.title, at.abstract, at.content) against('szukane słowa' in boolean mode) as score
from
artykuly as at
where
match(title, abstract, content) against('szukane słowa' in boolean mode)
order by
score desc

Proste, prawda? :-) Przydało się także w serwisie The Media Beat.

Przygotowałem także nowy moduł do rozsyłania biuletynów. Stary, będący cześcią firmowego systemu CMS, był dedykowany dla serwisu House i nie nadawał się do wykorzystania w tym przypadku. Idea jest prosta: administrator może wybrać artykuły z których kategorii mają tworzyć pulę elementów biuletynu, wybrać dowolną ilość artykułów, podejrzeć i zmodyfikować wstępnie przygotowaną treść (tylko czysty tekst) po czym zatwierdzić rozesłanie. Niewielki skrypt uruchamiany przez cron zajmie się resztą. Wykorzystałem biblioteki PEAR::Mime i PEAR::Mail, które oszczędziły mi sporo pracy. Moduł ten wykorzystany jest również w serwisie The Media Beat.

W maju 2006 roku strona została uruchomiona.

Użyte technologie: PHP5, MySQL 4.1, PEAR, Smarty