Zenedith's dev blog

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

Serwer web w virtualbox

Chcemy postawić serwer web na wirtualce, np. korzystając z virtualbox.
Instalacja wybranego systemu w virtualbox nie wymaga opisu, natomiast sam proces „dostania” się do takiej maszyny może być już bardziej skomplikowany.

Mamy dwie opcje:

  1. w ustawieniach karty sieciowej mamy: NAT
  2. lub mostkowa karta sieciowa (bridged)

Czytaj dalej

Reklamy

21 Listopad, 2010 Posted by | web | | Dodaj komentarz

MacOSX: Przygotowanie stanowiska pracy

Wprowadzenie

Od jakiegoś czasu jestem użytkownikiem MacBook Pro z systemem Snow Leopard.
W tym wpisie postaram się przedstawić parę rozwiązań podstawowych problemów z svn, apache i php.

Co to jest macports?

Przede wszystkim niezbędnym narzędziem jest macports.org.
Jest to zbiór bibliotek i aplikacji przeniesionych ze „świata linux” w ten sposób, żeby działały natywnie na MacOSX. Dla użytkowników linuxa, którzy przesiadają się na MacOSX jest to wręcz niezbędne narzędzie.

Zasada działania macport jest następująca:

  • instalujemy najnowszą paczkę macports w wersji dla konkretnej wersji systemu,
  • korzystając z poleceń port search/install/list wyszukujemy i instalujemy szukane oprogramowanie (lista portów dostępna jest na tej stronie )

Domyślnie wszystko instaluje się w katalogu /opt ale można to zmienić. Tak naprawdę to możemy mieć parę wersji macport zainstalowanych ale o tym być może innym razem.

Przejdźmy do sedna: do czego tak naprawdę jest to nam tak bardzo niezbędne?

Najprostsza odpowiedź jest taka, że uzyskujemy dostęp do „aktualnych” wersji aplikacji.

Przykłady:

  1. svn – standardowo dostępna jest starsza wersja svn,
  2. php5 – dostarczone w wersji 5.3.0 (co i tak uważam za sukces) ale dlaczego nie mielibyśmy wykorzystywać wersji 5.3.2 i nowszych?
  3. apache – dostępny w wersji 2.2.12 gdy aktualnie dostępna jest wersja 2.2.15.

Oczywiście Apple dba o update aplikacji w mniejszym lub większym stopniu, ale dlaczego nie mamy mieć prostej możliwości samemu decydować o tym co chcemy? (filozofia *unix się kłania).

Zainstalujemy więc wypisane wyżej aplikacje korzystając z macport.

Instalacja pakietow z macports

Wszystkie polecenia korzystające z macports zaczynają się od:

sudo port

Jak wskazuje sudo, potrzebne są uprawnienia root.

  • pobranie listy wszystkich dostępnych portów: sudo port list
  • wyszukanie portu po nazwie (częściowej): sudo port search nazwa_portu
  • instalacja konkretnego portu: sudo port install nazwa_portu
  • informacja o wariantach, w których może być zainstalowany port: sudo port variants nazwa_portu
  • aktualizacja (synchronizacja) listy portów: sudo port selfupdate (dodatkowowo parametr -v pokaże szczegółowe informacje)
  • update zainstalowanych portów do najnowszych dostępnych wersji: sudo port upgrade outdated (jeśli chcemy zobaczyć jakie porty pojawiły się w nowszych wersjach wpisujemy sudo port outdated)
  • usuwanie zainstalowanych portów: sudo port uninstall nazwa_portu
  • wyczyszczenie cache’u po odinstalowanych portach: sudo port clean uninstalled
  • aktywowanie/dezaktywowanie portów: sudo port active (deactive) nazwa_portu
  • lista zainstalowanych portów: sudo port installed

Przykładowo, chcemy zainstalować najnowszą wersję svn.

W tym celu wpisujemy:

sudo port install subversion +tools

Jak można zauważyć, pojawia się tutaj dodatkowa zmienna sterująca „+tools„. W ten sposób oznaczane są warianty czyli „variants”, w których dany pakiet może zostać zainstalowany. W tym przypadku możemy zobaczyć czym jest variant „+tools” na stronie opisu danego portu. Polecenie, które podaje dostępne warianty zostało wymienione wyżej ale powtórzę je jeszcze raz:

sudo port variants nazwa_portu.

Warianty to bardzo dobre rozwiązanie na instalowanie konkretnych funkcjonalności danego pakietu lub usuwanie funkcjonalności, które nie będą nam potrzebne. Dla przykładu, instalując port apache2, domyślnie zawiera on dołączone następujące warianty: „+darwin+preforkmpm„. Jeśli nie chcemy instalować funkcjonalności związanych z preforkmpm, to przy instalacji tego port’u napisalibyśmy:

sudo port install apache2 -preforkmpm

a chcąc np. dodac funkcjonalność openldap (którą wyczytaliśmy z opisu zwróconego przez polecenie sudo port variants apache2), powstałoby polecenie:

sudo port install apache2 -preforkmpm +openldap

W ten sposób w prosty sposób dobierzemy odpowiednie funkcjonalności względem naszych potrzeb.

Zainstalujmy w końcu svn, czyli port o nazwie subversion z dodatkowymi narzędziami:

sudo port install subversion +tools

Ponieważ nie mam jeszcze żadnego portu zainstalowanego, instalacja tego portu może wymagać instalacji portów, od których działanie portu subversion jest konieczne. Wszystko dzieje się automatycznie i nie jest konieczna nasza ingerencja (lecz nie zawsze o czym może jeszcze napiszę).

Ponieważ port subversion nie jest szczególnie rozbudowanym, jego instalacja może potrwać około 15 minut, gdzie większość tego czasu instalowane będą port zależne (wymagane nie tylko dla tego portu).

Pliki zostaną zapisane w katalogu, który podaliśmy przy instalacji macports i domyślnie jest to katalog /opt/local/bin). Żeby nasza nowa wersja svn była widoczna w systemie, musi się ona znaleźć w ścieżce przeszukiwania PATH wcześniej, niż katalog systemu zawierający svn. W tym celu można zmodyfikować zawartość zmiennej PATH ustawianej przy logowaniu użytkownika w pliku ~/.profile (plik .profile w katalogu domowym użytkownika). Należy tam dopisać (jeśli nie zrobił tego macports):

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

Jeśli okazałoby się, że nadal nie jest wywoływana nasza wersja svn, należy skopiować stare pliki svn i napisać je nowymi, wydając polecenia:

sudo mv /usr/bin/svn* /usr/bin/old_svn

sudo ln -s /opt/local/bin/svn* /usr/bin

PHP5

Instalacja PHP5 będzie równie prosta dzięki macports. Dodatkowo, bez żadnych problemów doinstalujemy rozszerzenia, których potrzebujemy.
Na początek warto spojrzeć jakie warianty oferuje port php5:

sudo port variants php5

Od razu można pominąć wszystkie te, które zawierają w opisie słówko „Obsolete„, ponieważ są to pozostałości po starym systemie kompilacji php5.
Dla podglądu, podam tutaj listę możliwych wariantów:

  • apache: Add Apache 1 web server module
    * conflicts with apache2 no_web
  • [+]apache2: Add Apache 2.2 web server module
    * conflicts with apache no_web
  • debug: Enable debug support (useful to analyze a PHP-related core dump)
  • fastcgi: Add FastCGI web server binary
    * conflicts with no_web
  • ipc: Add semaphore, shared memory and IPC functions
  • no_web: Don’t include any web server support
    * conflicts with apache apache2 fastcgi
  • pear: Add PEAR
  • suhosin: Add Suhosin patch

Jak pokazuje [+] przy apache2, instalując php5 z domyślnymi wariantami, zostanie zainstalowany także serwer apache2. Jeśli nie chcemy tego robić, możemy przy instalacji portu dodać -apache2 (oraz ewentualnie no_web). Wiąże się z tym jednak jeden problem, ponieważ przy kompilowaniu php5 bez apache2, nie zostanie utworzona biblioteka libphp5.so.

Polecam zainstalować port php5 z następującymi parametrami:

sudo port install php5 +pear +suhosin

php extensions

Po zainstalowaniu tego portu, które może potrwać około 30 minut (dużo zależności), warto doinstalować rozszerzenia, z których w php5 korzystamy.

Na mojej liście znalazły się następujące rozszerzenia:

  • php5-apc
  • php5-curl
  • php5-gd
  • php5-iconv
  • php5-mbstring
  • php5-mcrypt
  • php5-mysql
  • php5-openssl
  • php5-soap
  • php5-sockets

Można je zainstalować wszystkie na raz przez polecenie:

sudo port install php5-apc php5-curl php5-gd php5-iconv php5-mbstring php5-mcrypt php5-mysql php5-openssl php5-soap php5-sockets

xdebug

Niezbędne będzie nam jeszcze rozszerzenie xdebug i można je zainstalować jako port php5-xdebug, lecz ja pokusiłem się o instalację najnowszej wersji dostępnej na stronie xdebug.org/download.php.

Ściągamy wersje z svn i postępujemy zgodnie z plikiem README.
Jeśli instalowaliśmy xdebug ręcznie, będziemy musieli dokonać modyfikacji pliku php.ini.

php.ini

Ponieważ po instalacji portu php5, zostały utworzone dwa pliki w katalogu /opt/local/etc/php5, musimy jeden z nich skopiować w tym samym katalogu jako php.ini, np. tak:

sudo cp php.ini-development php.ini

Możemy teraz wprowadzić zmiany jeśli ustawienia domyślne nam nie odpowiadają.

Jeśli kompilowaliśmy xdebug sami, należy dopisać w pliku następujące linie:

[xdebug]
zend_extension=/path/to/xdebug.so

gdzie oczywiście /path/to/xdebug.so podmieniamy na konkretną ścieżkę do xdebug.so.

Jeśli chodzi o sam xdebug, można go trochę bardziej spersonalizować.

Mój konfig wygląda następująco:

[xdebug]
zend_extension=/path/to/xdebug.so
xdebug.file_link_format = „txmt://open?url=file://%f&line=%l”
xdebug.var_display_max_data = 8000
xdebug.var_display_max_children = 256
xdebug.var_display_max_depth = 10
xdebug.collect_params = 4

Apache2

Konfiguracja apache2 który dostarczony jest z MacOSX sprowadza się do zmiany w pliku /private/etc/apache2/httpd.conf linii zawierającej:

LoadModule php5_module

Wystarczy zamienić tą linię na następującą:

LoadModule php5_module /opt/local/apache2/modules/libphp5.so

Jeśli chcemy wykorzystywać apache2 zainstalowanego z port, musimy załadować jego autostart w systemie:

sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist

oraz dokonać podobnej konfiguracji w pliku konfiguracyjnym /opt/local/apache2/conf/httpd.conf.

Ponieważ apache2 nie zmienia się istotnie z wersji na wersję (nie dla użytku dev), ja pozostałem przy wersji dostarczonej z MacOSX.

Zarządzanie apache2 sprowadza się do znajomości poleceń:

sudo httpd -k start
sudo httpd -k stop
sudo httpd -k restart

Możemy też dodać go do autostartu w panelu ustawień systemowych/udostępniania i wybrać udostępnianie www.

Powinniśmy teraz sprawdzić konfigurację php5 (oraz xdebug) i apache2 przez phpinfo() i pogratulować sobie efektu;)

2 Kwiecień, 2010 Posted by | macos, web | , | 5 Komentarzy

Allegro web api

Ostatnio miałem okazję zapoznać się z web api Allegro web api Allegro.
Wiele nieciekawych opinii na jego temat napisano (główne wady to brak konkretnej dokumentacji oraz przyjęte nazewnictwo pól w postaci „troche-to-dziwne”).
Żeby sobie trochę pomóc, skorzystałem z wsdl2php: repo dostępne pod adresem:
https://wsdl2php.svn.sourceforge.net/svnroot/wsdl2php
Dodatkowo zmodyfikowałem ten generator tak, żeby wygenerowane api było „poprawne”, czyli zmapowałem wszystkie wystąpienia ‚-‚ na ‚_’, przez co zmienne są dostępne w normalny sposób.
Miałem również problem z oryginalnym plikiem wsdl udostępnionym na stronie Allegro, dlatego w projekcie dołączony jest poprawny plik, który udało się załadować do SoapClient.
Być może mój problem wynika z używania systemy Mac OSX.

Aplikacja powstała w Eclipse.
Do jej wykonania posłużył Zend framework oraz 2 klasy z rozwijanego przeze mnie frameworka. Użyty został jquery oraz jquery ui, do prezentacji prostego interfejsu oraz ajax’u,

Aplikacja oferuje następujące możliwości:
– zalogowanie do allegro (konieczne do wykonania czegokolwiek),
– wyszukiwanie proste i zaawansowane (ajax),
– prezentacji listy wyszukanych produktów oraz szczegółów wybranego produktu (aukcji).

Jedyne co należy zrobić, to uzupełnić uzyskane od Allegro api key w pliku:
application/configs/allegro.ini

Aplikacja ma charakter wyłącznie edukacyjny.

Do pobrania tutaj (należy usnąć rozszerzenie pptx i pozostawić .zip).

UPDATE

Pojawiła się  nowa strona na temat web api Allegro, która nareszcie zaczyna przypominać konkretną dokumentację. Po więcej szczegółów odsyłam na stronę http://allegro.pl/webapi/

30 Marzec, 2010 Posted by | web | , | Dodaj komentarz

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 Posted by | scripts, web | , , | 1 komentarz

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 Posted by | scripts, web | , , | Dodaj komentarz

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 Posted by | iphone | , , | 3 Komentarze

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 Posted by | cpp | , | Dodaj komentarz

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 Posted by | debian, engine | , , | 1 komentarz

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 Posted by | debian, scripts, web | | Dodaj komentarz

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 Posted by | debian, web | , | 2 Komentarze

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 Posted by | debian, web | | Dodaj komentarz

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 Posted by | debian, web | | 2 Komentarze

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 Posted by | debian, Uncategorized | , | Dodaj komentarz

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 Posted by | game | , , | Dodaj komentarz

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 Posted by | game | , , | 2 Komentarze

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

28 Sierpień, 2008 Posted by | cpp, engine | | Dodaj komentarz

Tworzenie design doca dla gry

Gdy podejmujemy decyzję o tworzeniu gry komputerowej, mamy w głowie mnóstwo inowacyjnych pomysłów i sposobów na stworzenie „hita”. Żeby jednak ktoś oprócz nas samych mógł się z tym cudownym pomysłem zapoznać i dzielić z nami tą euforię, musimy mu o tym opowiedzieć..Budując przed naszym przyszłym wydawcą piękną wizję gry, nadając naszym słowom mnóstwo emocji i ekspresji, możemy odnieść sukces. Pomóc nam w tym może bardzo konkretne opisanie naszego pomysłu na grę, według pewnego wzorca. Taki dokument nazywa się design doc’kiem i jego zadaniem jest prezentacja naszego pomysłu na grę pod każdym kątem. Czytaj dalej

10 Sierpień, 2008 Posted by | books, game | , | Dodaj komentarz

JNI #2 – Stawiamy JVM

Pierwszą część mamy już za sobą. Potrafimy już tworzyć skomplikowane skrypty w Javie i korzystać z natywnego wsparcia ze strony cpp. Pozostaje więc teraz cały proces odpalić z exe..Stworzymy teraz aplikację startującą JVM i nasze skrypty – otrzymamy więc możliwość stworzenia „silnia gry” z Javą jako językiem skryptowym! Do dzieła. Czytaj dalej

31 Lipiec, 2008 Posted by | cpp, engine, game, java, scripts | , , , , | Dodaj komentarz

JNI #1 – Eclipse + CDT + MinGW

Pisałem już o różnych językach skryptowych – postaram się opisać przynajmniej podstawy współpracy z cpp z każdym z nich. Dziś przedstawię jak wygląda współpraca Javy i cpp przez interfejs JNI (Java Native Interface).

Tak jak w temacie, pokażę jak napisać prosty pomost między Javą a cpp przy wykorzystaniu IDE Eclipse z biblioteką CDT5.0 oraz wykorzystując toolchain’a MinGW. O sposobie konfiguracji takiego środowiska wspomniałem już wcześniej, a więc zaczynamy. Czytaj dalej

23 Lipiec, 2008 Posted by | cpp, java, scripts | , , , , , , | 4 Komentarze

Jak to było: Nauka cpp część 2

Miałem chwilowy zawrót głowy więc się trochę ten wpis opóźnił. Przejdźmy jednak na powrót do nauki cpp.

Zaczynamy od samych podstaw. Jak już pisałem w jednym z pierwszych wpisów na moim blogu, można rozpocząć od dwóch następujących pozycji:

  1. Symfonia C ++ Standard – mam wersję 3 tomową, wydanie 5 poprawione. Obecnie dostępna jest odświeżona wersja, opisująca i zgodna z obecnymi standardami języka cpp uzupełniona np. o opis i wykorzystywanie klasy std::string. Dokładne informacje można uzyskać ze spisu treści.
    Uważam, że książka jest rzeczywiście „łatwym podręcznikiem”, jak pisze sam autor – zawiera bardzo przyjazne zapoznanie czytelnika z prezentowanym zagadnieniem, odpowiada na szereg pytań które się nasuwają (bądź nie) przy czytaniu kolejnych rozdziałów. Uważam że książka przeznaczona jest dla każdego, kto chce się nauczyć programować. Bardzo dużo przykładów, tłumaczonych czytelnikowi linia po linii.
    Książka ta wprowadzi nas w solidne podstawy języka cpp. Jej uzupełnieniem była kiedyś seria Pasja C++, lecz nie wiem jak to obecnie wygląda.
  2. Thinking in C++ oraz Thinking in C++ Tom 2 – możliwa do pobrania w formie ebook’ów ze strony domowej autora. Autor jest równie niesamowity w cierpliwym i przyjaznym tłumaczeniu zagadnień jak autor wspomniany wyżej. Bardzo dużo przykładów, bardzo dobre wprowadzenie w świat obiektów. Drugi tom wprowadza w bardziej zaawansowane wykorzystywanie cpp. Olbrzymim plusem jest oczywiście inicjatywa udostępnienia wersji elektronicznych swoich (wybranych) książek – jedyną przeszkodę może stanowić znajomość języka angielskiego…

„Nie od razu Rzym zbudowano” i do tematyki programowania należy podejść z olbrzymią dozą samozaparcia i co najważniejsze: przepisywać kod do używanego IDE i kompilować. Zmieniać. Kompilować. Dzięki temu nasza wiedza będzie nie tylko teoretyczna (która nie będzie ugruntowana) ale również praktyczna (wyłapiemy wtedy bardzo szybko błędy składniowe, utrwalimy sobie słowa kluczowe języka, wzorce tworzenia metod, klas – jednym słowem praktyka).

Czytaj dalej

26 Czerwiec, 2008 Posted by | books, cpp | , , | Dodaj komentarz