Zenedith's dev blog

Dałem się namówić.., szatanowi chyba..

Repozytorium kodu SVN – debian + apache2

Dziś na szybko o instalacji i konfiguracji repozytorium SVN jako modułu dla apache2.

Instalacja

Zakładając, że sam apache2 jest poprawnie skonfigurowany (o czym można przeczytać tutaj), należy dograć do systemu sam system kontroli wersji:

aptitude install subversion

Następnie będziemy potrzebować odpowiedniego modułu dla apache2 – ściągniemy go dzięki poleceniu:

aptitude install libapache2-svn

Po zrestartowaniu apache2 moduł automatycznie powinien zostać załadowany, co może potwierdzić phpinfo(). Jeśli się tak jednak nie stało, trzeba go (oraz zależny dla niego moduł dav) aktywować poleceniem:

a2enmod dav_svn

Po ponownym restarcie powinien już być widoczny w phpinfo().

Konfiguracja

Konfiguracji możemy dokonać globalnie (dla wszystkich vhost’ów) lub dla wybranych.
Taka konfiguracja różni się tylko tym, że modyfikowane są inne pliki:

  1. Dla ustawień globalnych będzie to plik: /etc/apache2/mods-enabled/dav_svn.conf, w którym znajdziemy również dużo informacji na temat konfiguracji,
  2. Dla ustawień per vhost : każdy z plików vhosta w katalogu: /etc/apache2/sites-enabled, czyli np. domyślny plik 000-default.

Objaśnię to na przykładowej konfiguracji:
Czytaj dalej »

22 sierpień, 2009 Opublikował/a zenedith | debian, web | , , | 1 komentarz

Db_Table extends Zend_Db_Table_Abstract czyli..

Postanowiłem jeszcze bardziej zautomatyzować proces przepływu danych dla klas wygenerowanych za pomocą Propela, dziedziczących funkcjonalność po Zend_Db_Table_Abstract.

W ten sposób powstała klasa Db_Table (tak po prostu), która oferuje:

  • rekurencyjne dodawanie danych do tabeli bazowej i związanych z nią kluczami obcymi tabel
  • rekurencyjne update’owanie tabeli bazowej i związanych z nią kluczami obcymi tabel
  • metody zwracające wszystkie dane (wiersz) z tabel powiązanych kluczem obcym z tabelą bazową (automatyczne LEFT JOINY).

Z pewnością zawiera jeszcze pewne niedoskonałości ale zostaną one sukcesywnie poprawiane a features’y rozszerzane.
Czytaj dalej »

3 lipiec, 2009 Opublikował/a zenedith | web | , , | 2 komentarzy

Generowanie klasy Zend_Db_Table_Abstract z uzyciem Propel’a.

Zend Framework jest naprawdę fajną biblioteką do tworzenia w technologii PHP.
Tematem tego wpisu będzie sposób na wygenerowanie klasy dziedziczącej po Zend_Db_Table_Abstract
na podstawie schematu xml dla generatora Propel.

Zainspirował mnie do tego wpis ze strony bloga amnuts’a.

Przed przystąpieniem do pracy, wypadałoby zainstalować ten pakiet oraz dodatkowe wymagane – jest to opisane dokładnie tutaj.

Propel to ORM dla PHP, jeden z dwóch najbardziej rozpoznawalnych z Doctrine.
Do wygenerowania użyję Propela z tej prostej przyczyny, że miałem z nim już do czynienia oraz jego “obsługa” jest banalnie prosta.

Dlaczego wogóle używać Propela żeby wygenerować klasę Zend_Db_Table_Abstract skoro Propel załatwia i tak wszystko za nas bez żadnej ingerencji (dostajemy gotowe klasy z mapowaniem do tabel)?

M.in. dlatego, żeby nie dokładać kolejnych zależności do projektu, szczególnie gdy w jego skład wchodzi już bogata biblioteka Zend.

Czytaj dalej »

30 czerwiec, 2009 Opublikował/a zenedith | scripts, web | , , | Nie ma jeszcze komentarzy

Gettext w systemie szablonów Smarty.

Smarty to system szablonów dla php o którym można się trochę dowiedzieć z polskiego wiki. System szablonów to przede wszystkim rozdzielenie warstwy prezentacji strony www (kod html) od kodu logiki strony (kod php).
Gdy pokazywałem podstawy współpracy Gettext z php, wszystkie wywołania html były generowane z poziomu skryptu php – dobrze sprawdza się to przy bardzo małych i ubogich w treść, podstronach www, lecz jest niedopuszczalne jeśli mamy stworzyć bardzo rozbudowaną podstronę z dużą ilością generowanych informacji.

Smarty to nie tylko rozdzielenie zadania prezentacji dynamicznej strony www na te dwie warstwy (bo do tego tak naprawdę nie potrzebujemy Smarty i można to zrobić samemu) lecz bardzo rozbudowane i uproszczone tworzenie warstwy prezentacji (html) przez stosowanie bardzo wielu funkcjonalności w kodzie szablonu *.tpl (pętle do przeglądania tablic, funkcje manipulujące na tekście i jego właściwościach, konfiguracja w plikach, włączanie innych plików a nawet możliwość włączenia kodu php czego bardzo nie polecam).

Ściągając najnowszą wersję Smarty’ego, znajdziemy tam bardzo dobry przykład (demo_smarty) pokazujący jego podstawowe możliwości, więc nie będę tutaj tego powtarzał ( w celu jego odpalenia konieczna może być zmiana ścieżki require(’smarty/libs/Smarty.class.php’);
Czytaj dalej »

2 styczeń, 2009 Opublikował/a zenedith | web | , | Nie ma jeszcze komentarzy

Gettext – tłumaczenia językowe w php5 dla Debiana i Windows.

Gettext to potężne i wydajne narzędzie do tworzenia wielojęzycznych (internacjonalizacji) tłumaczeń. Nie dotyczy to tylko aplikacji www tworzonych w php, lecz przede wszystkim aplikacji systemowych, czego przykładem jest katalog /usr/share/locale/ w systemach Linux.

Idea tłumaczeń z użyciem Gettext polega na sparsowaniu plików dla aplikacji/strony www, w którym teksty do tłumaczeń będą w jakiś szczególny sposób oznaczony. W php takie teksty oznaczane są następująco:

  • gettext(“A message to translate”) – oznacza szukanie tekstu zastępczego dla wyrażenia “A message to translate”,
  • _(“A message to translate”) – to skrócony zapis dla gettext(),
  • dgettext(“domyslna_domena”,”A message to translate”) – szuka tekstu tłumaczenia w konkretnym pliku (tzw. domenie),
  • ngettext(“File”, “Files”, $number) – zwraca odpowiednią formę mnogą dla wyrażenia, zależną od $number (liczba dodatnia).

Są to najczęściej używane zwroty stosowane do tłumaczenia całych wyrażeń lub poszczególnych wyrazów i ich automatycznej odmiany. Zaczynamy od początku.

Czytaj dalej »

2 styczeń, 2009 Opublikował/a zenedith | debian, scripts, web | | Nie ma jeszcze komentarzy

Debian : Eclipse + PDT 2.0.

Instalacja IDE Eclipse dla Debiana nie jest taka prosta. Próba instalacji Eclipse z pakietów Debiana powiodła się lecz sama aplikacja nie działała poprawnie – przy aktualizacji pakietów pojawiał się komunikat błędu:

An error occurred during provisioning. Cannot connect to keystore. JKS

Zapewne przyczyną był zainstalowany pakiet Debiana java-gcj-compat. Mogłem spróbować go usunąć ale stwierdziłem, że najlepiej będzie ściągnąć najnowszą wersję (w pakietach była wersja 3.2 która nie współpracuje z PDT 2.0) ze strony Eclipse (wersje EE minimum 3.4 + ręcznie dograć PDT 2.0) lub gotowy, całościowy komplet Eclipse z PDT, Zend Debugger’em i zależnymi bibliotekami ze strony firmy Zend lub gotowych pakietów Eclipse.

Jak się później okazało, do poprawnego działania Eclipse wymagane jest, żeby nie był odpalany na wirtualnej maszynie javy (JVM) java-gcj. To oznacza tyle, że jeśli mamy zainstalowany pakiet Debiana: java-gcj-compat to mamy następujące opcje:

  • odinstalować ten pakiet,
  • zmienić domyślną JVM,
  • lub skonfigurować Eclipse pod konkretną JVM.

Czytaj dalej »

30 grudzień, 2008 Opublikował/a zenedith | debian, web | , | Nie ma jeszcze komentarzy

Debian : Konfiguracja workspace’a dla Apache2+PHP5+MySQL #3.

@MySQL

Przy instalacji php5 podałem również pakiety do instalacji MySQL. Podam je tutaj jeszcze raz:

  • mysql-server-5.0 – serwer bazy danych mysql,
  • mysql-client-5.0 – klient serwera bazy danych mysql,
  • phpmyadmin – [opcjonalnie] – proste i intuicyjne zarządzanie bazą danych.

Należy uruchomić serwer bazy danych, jeśli nie jest on automatycznie uruchamiany wraz ze startem systemu. Służy do tego polecenie:

/etc/init.d/mysql start

a dostępne opcje to: start, stop i restart.

Czytaj dalej »

30 grudzień, 2008 Opublikował/a zenedith | debian, web | , | 2 komentarzy

Debian : Konfiguracja workspace’a dla Apache2+PHP5+MySQL #2.

@PHP5

Jeśli mamy zainstalowany serwer apache2, instalujemy pakiety php5. Ponownie skorzystam z aptitude/synaptic w celu instalacji następujących pakietów:

  • php5 – binarna wersja php5,
  • libapache2-mod-php5 – moduł php5 współpracujący z apache2,
  • php-pear – repozytorium bibliotek dla php (mamy do niej dostęp przez polecenie pear z konsoli),
  • mysql-server-5.0 – serwer bazy danych mysql,
  • mysql-client-5.0 – klient serwera bazy danych mysql,
  • php5-mysql – rozszerzenie do php5 współpracujące z mysql,
  • php-db – warstwa pośrednia między php i bazami danych (PDO),
  • phpmyadmin – skrypt php ułatwiający zarządzanie bazą danych mysql.

Czytaj dalej »

30 grudzień, 2008 Opublikował/a zenedith | debian, web | | Nie ma jeszcze komentarzy

Zmiana oblicza : WebGameDev

Na blogu tym dominował temat wytwarzania aplikacji w cpp i javie oraz związanych z nimi technologiami/bibliotekami. Od dziś dojdzie do tego web dev z użyciem Flash (FLEX) i PHP5 wraz z dostępnymi bibliotekami. To będzie temat dominujący, mam nadzieję, że uda mi się być również na bieżąco z główną tematyką tego bloga, czyli cpp dev i java dev.

Oczywiście nie oznacza to, że przestaję zajmować się gamedev w ogólności – właśnie postaram się podążać w kierunku web gamedev czyli webgamedev.

Wybór ten nie jest przypadkowy – na swoim koncie mam dwa projekty gier MMO przez przeglądarkę, które w swoim czasie tworzyłem (z tego jeden to projekt licencjacki wykonywany razem z Mariuszem Szpilerem).

Zobaczymy jak to wyjdzie.

17 grudzień, 2008 Opublikował/a zenedith | web | , | Nie ma jeszcze komentarzy