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 tabe
- 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.
Programowanie dla IPhone cd. [Sparhawk.pl]
Przeglądając do tej pory tylko angielskojęzyczne portale o programowaniu w objective – c dla IPhone, przeoczyłem ciekawy blog w naszym ojczystym języku, na którym znajdziemy parę przydatnych tutoriali.
A więc zapraszam na stronę sparhawk.pl a o samym objective-c i programowaniu dla Iphone w tych wpisach.
Programowanie w objc pod Windows – początek przygody z IPhone?
Bardzo zainteresował mnie temat tworzenia aplikacji (gier) dla IPhone, więc zacząłem poszukiwać na ten temat informacji.
A więc postaram się odpowiedzieć na pytanie: “Jak zacząć przygodę z programowanie dla IPhone“.
Żeby programować dla IPhone potrzebny jest Mac, albo przynajmniej jego emulacja (czego nie polecam i nie popieram, ponieważ nigdzie nie uzyskamy takiego komfortu pracy jak na oryginalnym sprzęcie Apple).
MySQL Connector/C++ : dostęp do bazy danych w cpp.
Jak połączyć się z bazą danych MySQL z poziomu kodu w języku cpp? Najprościej przy użyciu biblioteki MySQL Connector/C++. Możemy ją znaleźć na stronie dev.mysql.com/doc/refman/5.1/en/connector-cpp.html a dokładniej ściągnąć ze podstrony w sekcji download.
Potrzebujmy również bazy danych MySQL – ja skorzystałem z wersji mysql-5.0.67-win32.exe ale na stronie oficjalnej można znaleźć znacznie nowsze wersje.
Zastrzeżenie jest jedno – wersja którą ściągniemy musi posiadać katalogi include i lib (jeśli jest to archiwum zip) lub dać możliwość instalacji tych folderów, jak pokazuje screen poniżej:
W związku z tym nie jest pewien co do zawartości wersji Essential, którą można znacznie szybciej ściągnąć ze względu na jej mniejszy rozmiar.
Czytaj dalej »
Java3D – prosty przykład
Stworzenie aplikacji 3D w samej Javie jest możliwe i może temu posłużyć biblioteka Java3D.
Aby rozpocząć z nią pracę, udajemy się do sekcji download i ściągamy odpowiednią dla naszego systemu wersje archiwum zip lub instalatora. W moim przypadku była to wersja zip, którą następnie rozpakowujemy.
Znajdziemy tam jeszcze jedno archiwum zip, które po rozpakowaniu utworzy dwa katalogi: bin i lib. Pliki *.dll z katalogu bin warto skopiować w miejsce dostępne w zmiennej systemowej PATH lub do katalogu z projektem Javy, ponieważ muszą być one widoczne dla naszej aplikacji.
Pliki z katalogu lib dołączymy do external libs naszego projektu.
Zaczynamy.
Czytaj dalej »
Debian: OpenAL + OGG czyli Play Music #2
Było już o odtwarzaniu dźwięku w systemie Windows za pomocą OpenAL i dekodera ogg Vorbis. Postanowiłem opisać, jak można taki sam efekt uzyskać na systemie Debian. Na początek potrzebujemy biblioteki:
- OpenAL - mamy możliwość instalacji w postaci pakietu, lecz jest on trochę “starej daty”. Ponieważ dostępne są tylko źródła, to go sobie skompilujemy sami. Źródła możemy pobrać z oficjalnej strony CreativeLabs lub ze strony OpenAL Soft.
- biblioteki VorbisFile, Vorbis i Ogg są aktualne do zainstalowania z poziomu pakietów, więc polecam zainstalować je wszystkie poleceniem: aptitude install libvorbis-dev które zainstaluje nam również pozostałe biblioteki.
- potrzebujemy również bibliotekę asound, którą zainstalujemy poleceniem: aptitude install libasound2-dev.
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 w aplikacjach cpp dla Windows i Debiana.
We wcześniejszym wpisie przedstawiłem wprowadzenie do Gettext i jak używać tego narzędzia do tworzenie wielojęzycznych treści w php. Jak się za moment okaże, analogicznie można tworzyć aplikacje w cpp, które mogą nawet korzystać z tych samych plików *.mo.
Idąc za ciosem, w tym wpisie przedstawię jak można bardzo łatwo stworzyć aplikację dla Windows i Debian’a w cpp, korzystającą z Gettext’a.
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.
Debian : Konfiguracja workspace’a dla Apache2+PHP5+MySQL #1.
@Apache2
Zainstalowanie serwera www Apache2 pod Windowsem sprowadza się do ściągnięcia najnowszej wersji instalatora pod adresem httpd.apache.org/download.cgi i postępowania zgodnie z instrukcjami.
W systemach uniksowych możemy pobrać źródła i sami sobie przekompilować aplikację (instrukcje w pliku INSTALL) lub skorzystać z gotowych pakietów dla Debiana co ja uczynię. Używając aptitude lub synaptic’a instalujemy najnowszą dostępną wersję (np. Apache/2.2.9). Czytaj dalej »
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 stronie http://hanocri.homelinux.net:8083/zene/ dostępne są 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). Można stworzyć konto i spróbować zagrać.
Oba projekty są niestety nie ukończone, nie przetrwały też technologicznej próby czasu (dbz powstawał około 10 lat temu przez około 4 lata a wirtualne miasto przez 6 miesięcy w 2006 roku. Przeniosłem je co prawda na najnowszą technologię ale niektóre rzeczy przestały funkcjonować, na co niestety nie mam teraz czasu – nowe technologie przede mną.
Zobaczymy jak to wyjdzie.
Dual boot : Linux i Windows [bez grub/lilo]
Przez ostatnie miesiące nie używałem systemu linux na tyle, żeby mieć go jako pełnoprawny drugi system. W zupełności wystarczało mi rozwiązanie emulacji przez virtualbox. Na ten temat można bardzo dużo napisać, ale mogę spróbować podsumować to tak:
- możemy w nim zainstalować większość znanych systemów operacyjnych (windows, linux),
- tworzony jest plik, który symuluje partycję z systemem i tam zapisywane są wszystkie dane,
- jeśli nasz komputer jest podłączony do internetu (lan, usb) to połączenie jest dostępne bez żadnej konfiguracji w zainstalowanym systemie (sprawdzone na podstawie debian’a),
- zainstalowany w virtualbox system można rozbudowywać jak normalnie zainstalowany system (instalacja bibliotek, pakietów),
- można bardzo łatwo przełączać się pomiędzy systemami (specjalne skróty klawiaturowe),
- można odpalić w trybie “pełnego ekranu”,
- można wymieniać pliki pomiędzy systemami przez “katalog współdzielony”.
Niestety, czym więcej obciążymy nasz “emulowany system”, tym bardziej odczuje to nasz system podstawowy. Udało mi się dość dobrze pracować na tak zainstalowanym debiani’e, o profilu programistycznych na komputerze jedno rdzeniowym 2,8 GHz z 2 GB RAM, ale muszę przyznać, że czasem było ciężko. Czytaj dalej »
Nikita: Piracki Wyścig już jest
Można już składać zamówienia na grę zarówno dla młodszego odbiorcy (PEGI 3+) jak również starszego odbiorcy – Nikita – Piracki Wyścig miała właśnie swoją premierę.
Gra dostarcza bardzo dużo emocji – mnóstwo emocji z rywalizacji z 7 AI, walka na pociski wystrzeliwane z działka gatlinga, wyrzucanie arbuzów które wybuchają pod nieuważnym kierowcą który w nie wjedzie, walka z czasem przy poziomach time trial oraz w misjach z określonym celem i limitem czasu..
To wszystko w kolorowym, baśniowym świecie Nikity, gdzie samochody są szybkie i zwrotne a przeciwnicy sprytni.
A po przejściu całej gry – niespodzianka.
W ten oto sposób, moje drugie “dziecko” ujrzało światło dzienne.
UPDATE:
Strona oficjalna gry
W rozwinięciu trailer.
Czytaj dalej »
Kolejny projekt gry zakończony.
Po tygodniu strasznie męczącego Crunch time, udało się na czas ukończyć kolejny projekt w firmie Techland. Ponieważ produkt nie został jeszcze oficjalnie zapowiedziany w serwisie informacyjnym firmy Techland, mogę tylko “zarzucić” screen’em:
Mogę również poinformować, że gra jest pewnego rodzaju kontynuacją przygód z gry Nikita – Tajemnica Skarbu Piratów, co zresztą można zauważyć w logo na załączonym screen’ie, która swoją premierę miała w maju 2008 roku.
Kolejne bogate doświadczenie zdobyte, zważywszy że projekt ten został ukończony w rekordowym tempie.
Obecnie powróciłem do Poznania, gdzie spróbuję szczęścia w znalezieniu ciekawej pracy (możliwe nie tak ciekawej jak praca w gamedev ale..).
Dzięki temu postaram się nadrobić zaległości blog’owe.
Tymczasem..
Irrlicht + Java + Eclipse = JIRR
Dziś na stół operacyjny podpięcie Irrlicht’a w Javie wykorzystując Eclipse IDE.
Ogólnie sam pomysł na ten wpis pojawił się po przeczytaniu tego wątku na forum gamedev.pl. Oczywiście można ten wpis traktować jako polskie tłumaczenie tego posta ale nie do końca..
Zaczynamy.
Czytaj dalej »
Play Music : Vorbis(Ogg) + OpenAL
Postanowiłem napisać krótki wpis na temat odtwarzania dźwięku z poziomu kodu aplikacji. Ponieważ zależało mi na darmowych najprostszych rozwiązaniach, bez zbędnej “tony” innych “bajerów” (SDL_Mixer), wybrałem kombinację VorbisFile (biblioteka libvorbis) wymagające biblioteki libogg które można pobrać z jednego miejsca tutaj oraz OpenAL.
Instalacja bibliotek nie powinna sprawić nikomu problemu – ściągamy bibliotekę libogg-x.y.z.zip, rozpakowujemy, otwieramy plik solucji w Visual Studio, kompilujemy wersje bibliotek które chcemy później użyć (ja poprzestałem na wersjach static), zgrywamy lib’y do jednego zbiorczego katalogu a include do drugiego, które następnie dodajemy w opcjach Visual Studio VC++ Directories. Podobnie postępujemy z libvorbis. Wszystkie lib’y mam w jednym katalogu lib, a include w jednym katalogu include.
Pozostaje jeszcze ściągnąć ze strony OpenAL Creativelabs plik SDK OpenAL Installer for Windows (oalins), zainstalować i dodać do ścieżek lib\ i include\ Visual Studio.
Na końcu prezentuję parę screenów które mogą pomóc to o czym mówię. Czytaj dalej »

