Zenedith's dev blog

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

Trac – zarządzanie projektem – instalacja Windows

TRAC to system pomocny przy zarządzanie projektami. Jego możliwości są naprawdę spore, ja postaram się pokazać jak można go wykorzystać do pracy nad własnymi projektami, które prowadzimy sami, a więc nie potrzebujemy rozbudowanych mechanizmów które oczywiście TRAC również dostarcza.

Instalacja (Windows)

W dziale download znajdziemy aktualną wersję Trac’a.  Ponieważ instalujemy Trac pod Windows, polecam ściągnąć instalator, np. ostatnią stabilną wersję Trac-0.11.5. Jednakże jeśli nie posiadamy zainstalowanego środowiska Python, to instalacja nie powiedzie się.

W przypadku braku instalacji Pythona, udajemy się na stronę Pythona/Download i ściągamy wersję 2.x, np. Python 2.6.2 Windows installer. (W moim przypadku instalowałem Pythona w wersji 2.5, która wymagała kilku dodatkowych rozszerzeń, które są opcjonalne w nowszych wydaniach Pythona).

W tym momencie będziemy mogli zainstalować Trac’a, odpalając instalator w postaci pliku *.exe.
Czytaj dalej »

13 wrzesień, 2009 Opublikował/a zenedith | scripts, web | , , | 1 komentarz

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

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.

21 marzec, 2009 Opublikował/a zenedith | iphone | , | Nie ma jeszcze komentarzy

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).

Czytaj dalej »

20 marzec, 2009 Opublikował/a zenedith | iphone | , , | 2 komentarzy

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:

mysql_libs_install

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 »

19 styczeń, 2009 Opublikował/a zenedith | cpp | , | Nie ma jeszcze komentarzy

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 »

11 styczeń, 2009 Opublikował/a zenedith | java | , , | 2 komentarzy

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.

Czytaj dalej »

11 styczeń, 2009 Opublikował/a zenedith | debian, engine | , , | 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 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 »

2 styczeń, 2009 Opublikował/a zenedith | cpp, debian | , , | 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

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 »

29 grudzień, 2008 Opublikował/a zenedith | debian, web | | 2 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

Dual boot : Linux i Windows

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 »

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

Nikita: Piracki Wyścig już jest

nikitaMoż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 »

19 listopad, 2008 Opublikował/a zenedith | game | , , | Nie ma jeszcze komentarzy

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:

map_01

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..

11 listopad, 2008 Opublikował/a zenedith | game | , , | 2 komentarzy