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:
- 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,
- 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 »
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 »
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.
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 »
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.
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.
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.
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.
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.