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:
- w ustawieniach karty sieciowej mamy: NAT
- lub mostkowa karta sieciowa (bridged)
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 »
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).
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
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:
- svn – standardowo dostępna jest starsza wersja svn,
- 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?
- 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;)
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/
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 »
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:
- 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,
- 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 »
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 »
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.
