piątek, 28 listopada 2008

Software Developer's Journal 12/2008 - moje wrażenia

Nie sądziłem, iż po tak długi(e)j przerwie przyjdzie mi napisać kilka gorzkich słów na temat wydawnictwa, którego broniłem w komentarzach do artykułu na blogu Jacka Laskowskiego (patrz: Wrażenia po NetBeans Day 2008 w Gdańsku).

Wówczas napisałem, iż powinniśmy wziąć się do roboty i przekazać własne artykuły do tegoż wydawnictwa zamiast narzekać. Siłę swojego apelu odczułem na sobie dzisiaj, gdy przyszło mi zapoznać się z najnowszym numerem - 12/2008.

Początek nie był najgorszy - wśród aktualności udało mi się wyłuskać informacje o języku wspierającym proces projektowania aplikacji - Microsoft M, nowościach w MS Visual Studio 10 i premierze dacie premiery kolejnej wersji SQL Server'a. Pozostałe aktualności były raczej mało związane z programowaniem, ale traktuję ten dział jako możliwość poszerzenia horyzontów.

Pierwszy artykuł (pomijając opis konferencji) dotyczył znanego w świecie Pythona szkieletu aplikacyjnego Django. Autor - Tomasz Kropiewnicki - w czytelny i ciekawy sposób wprowadza do opisywanej przez siebie technologii. Jedyne opisywana przez niego warstwa widoków mi przypomina raczej warstwę kontrolera, jako że jej funkcjonalność nie musi ograniczać się do generowania treści na stronie. Zaiste jednak artykuł warto przeczytać, traktując go jako odskocznie od świata Javy.

Jednak kolejne artykuły wywołały we mnie zdziwienie. Po django jesteśmy bowiem uświadamiani jak założyć macierz typu mirror (RAID 1). Pomijam sam fakt, iż większość nowych płyt głównych obsługuje RAID w trybie fake-raid (realizowany programowo na poziomie BIOSu), a osoby które nie kupują drogich płyt głównych nie inwestują również w wiele dysków. Jednak wydaje się, iż ten artykuł jest świetnym materiałem na Linux+.

Jeśli jednak pominiemy ten artykuł dalej czeka nas kolejna "niespodzianka" - 3 artykuły o grach. Rozumiem, iż nie samą pracą człowiek żyje. Sam lubię uruchomić jakąś grę od czasu do czasu, ale od informacji o tego typu oprogramowaniu nie szukam w SDJcie. Jako że i te gry są dla Linuksa to artykuły powinny znaleźć się znów w Linux+.

Na szczęście dalej mamy już powrót do programowania. I takich artykułów programiści raczej oczekują. Więc jeśli ktoś z Nas wpadnie na ciekawy pomysł - przekazujmy naszą wiedzę innym :)

poniedziałek, 16 czerwca 2008

DB2 w PHP (środowisko Windows)

Dość często tworząc aplikacje internetowe oparte na języku PHP ograniczamy się do platformy LAMP (Linux, Apache, MySQL i PHP). Czy jednak jest to jedyne rozwiązanie dostępne na rynku i czy nie mamy żadnej alternatywy?
W ostatnich latach wielkie korporacje wydały bezpłatne alternatywy swoich serwerów baz danych. Ich licencje pozwalają na wykorzystanie zaawansowanych silników zarówno do niekomercyjnych jak i komercyjnych celów, stawiając jedynie ograniczenia na platformy sprzętowe (a dokładniej rzecz ujmując na wykorzystywane zasoby). Poniżej chciałbym skupić się na wykorzystaniu jednej z owych baz danych - IBM DB2 Express-C.

W tej części skupimy się na instalacji całego środowiska na platformie systemowej Windows, natomiast w wolnym czasie postaram się dodać informacje na temat instalacji rozszerzenia php_ibm_db2 w środowisku Linux.

Z czego będziemy korzystać:


Po rozpakowaniu pliku z instalatorem serwera danych uruchamiamy program setup. Na ekranie pojawi się Setup Launchapd, w którym będziemy mogli zapoznać się z informacjami o nowej wersji, instrukcją migracji z poprzednich edycji DB2 czy wymaganiami systemowymi. Wybierając opcję Install a product możemy zainstalować nowe środowisko bazy danych. Po zaakceptowaniu licencji, wybieramy standardową opcję instalacji (Typical) i na 4 kolejnych ekranach zatwierdzamy domyślne wartości. Następnie będziemy poproszeni o podanie nazwy i hasła dla tak zwanego właściciela instancji. Warto zachować użytkownika dedykowanego - db2admin - i podać dla niego hasło zgodne z aktualną polityką bezpieczeństwa w systemie (bądź domenie).
Po udanej instalacji przy pomocy konsoli Pierwsze Kroki (First Steps) będzie możliwe stworzenie przykładowej bazy danych SAMPLE.

UWAGA Jeśli ktoś nie stworzy przykładowej bazy w tym miejscu będzie tego mógł dokonać z poziomu specjalnej powłoki systemowej (db2cmd) przy pomocy polecenia db2sampl -sql -xml

Kolejnym krokiem będzie instalacja serwera Apache i PHP. W przypadku serwera WWW ogranicza się ona do zaakceptowania standardowych opcji instalacyjnych. Następnie należy rozpakować paczkę php-5.x.x-win32 do katalogu c:\PHP, a także z paczki pecl skopiować plik php_ibm_db2.dll do katalogu c:\PHP\ext.

Czas na konfigurację całości. Tworzymy kopię pliku php.ini-dist o nazwię php.ini w katalogu c:\PHP i poddajemy ją edycji. W sekcji Paths and Directories ustawiamy wartość extension_dir na "c:\PHP\ext", w Dynamic Extensions dodajemy wpis

extension=php_ibm_db2.dll

a na końcu pliku

[IBM DB2]
ibm_db2.instance_name=DB2

gdzie DB2 jest nazwą zainstalowanej przez nas instancji.

Pozostało dołaczyć PHP do Apache. W tym celu przechodzimy do katalogu konfiguracyjnego Apache (u mnie C:\Program Files\Apache Software Foundation\Apache2.2\conf) i poddajemy edycji plik httpd.conf dodając na końcu:


# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "C:/php"


Zanim wystartujemy serwer Apache warto przygotować sobie dwa pliki w katalogu htdocs (u mnie C:\Program Files\Apache Software Foundation\Apache2.2\htdocs). Pierwszy o nazwie test.php postaci:

<?php
phpinfo();
?>

i plik db2test.php postaci:

<?php
$database = 'SAMPLE';
$user = 'db2admin';
$password = 'twoje_haslo';

$conn = db2_connect($database, $user, $password);

if ($conn){
echo "Connected";
db2_close($conn);
}
?>


Teraz pozostało jedynie uruchomienie serwera i sprawdzenie poprawności wyświetlania stron: http://localhost/test.php i http://localhost/db2test.php. Na pierwszej z nich powinny zostać wyświetlone zainstalowane moduły php, między innymi dodany przez nas ibm_db2. Na drugiej, jak łatwo się domyślić, wyświetli się napis Connected po nawiązaniu połączenia z bazą danych SAMPLE.

Skoro mamy skonfigurowane środowisko możemy zapoznać się z listą funkcji, oferowanych przez moduł ibm_db2. Pełen spis znajdziemy na stronie http://uk2.php.net/manual/pl/ref.ibm-db2.php.

Jednak jak mawiają dobry programista to leniwy programista. Pojawia się zatem pytanie czy nie można pominąć całego procesu konfiguracji i zainstalować gotowej paczki. Rozwiązaniem jest serwer Zend Core 2 for IBM dostępny na stronie www.zend.com/en/products/core/downloads . Pozwala on na dużo prostszą instalacje środowiska zawierającego Apache HTTP 2, PHP5 (z Zend Optimizerem) i DB2 Express-C 9.