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 »

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

Centos 5.5 – stawiamy serwer web

Muszę przyznać, że Centos (aktualnie 5.5) to od niedawna moja ulubiona dystrybucja na serwer web.
Przedstawię krótkie „how to” w temacie postawienia na tej dystrybucji serwera www.

Wszystkie polecenie będą wykonywane z poziomu konsoli, z poziomu root’a.

Zainstalujemy podstawowe pakiety oraz zaktualizujemy system:

yum update
yum install yum-utils mc
Czytaj dalej »

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

Zenedith on Facebook

Ponieważ nie jest to oczywiste, chciałem poinformować was, że można śledzić moje wpisy na facebook’u: http://www.facebook.com/zenedith

Pomimo, że nie pojawiają się tam żadne artykuły, to bardzo często wypisuję tam linki do ciekawostek dev (szczególnie webdev).

19 Wrzesień, 2010 Posted by | Uncategorized | | Dodaj komentarz

PHP5 dla Centos 4.8

Centos to kolejna z dystrybucji linuxa, która oparta jest na Red Hat przy czym jest ona darmowa. Jest to bardzo stabilna dystrybucja, która szczególnie dobrze nadaje się na serwery (www, dns, mail) i jest przy tym szczególnie stabilna. Pomimo, że istnieją nowsze wersje Centos (serii 5), postanowiłem wskazać jak bez przesiadki możemy cieszyć się na tej dystrybucji php w wersji 5.3 (i nowszymi) gdy dostępna domyślnie jest wersja 4.3.9.

Instalacja wersji 5.1.x

W celu instalacji wersji php pomiędzy 5.3 a 4.3, możemy posłużyć się poleceniem:

yum install php-devel --enablerepo=centosplus

lub przy update:

yum update php-devel --enablerepo=centosplus

Instalacja wersji 5.3.x

Jeśli chcemy korzystać z nowych wersji php, musimy przejść przez następujące kroki:

  • wget http://download.fedora.redhat.com/pub/epel/4/i386/epel-release-4-9.noarch.rpm
    
  • wget http://rpms.famillecollet.com/enterprise/remi-release-4.rpm
    
  • rpm -Uvh remi-release-4*.rpm epel-release-4*.rpm
    
  • cd /etc/yum.repos.d/
    
  • yum --enable remi update php
    

Należy pamiętać o tym, że wszystkie dodatkowe rozszerzenia php muszą być instalowane z podaniem repo remi, np. doinstalowując bibliotekę gd:

yum --enable remi install php-gd

Opracowano na bazie blogów:
Imthiaz Blog
Ivan Villareal

9 Lipiec, 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

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 Posted by | debian, web | , , | 3 komentarzy

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

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

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

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 Posted by | web | , | 3 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 Posted by | cpp, debian | , , | Dodaj 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 : 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 Posted by | debian, 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 komentarzy

Follow

Otrzymuj każdy nowy wpis na swoją skrzynkę e-mail.