2014
05.26

Witajcie,

Chciałem was oficjalnie poinformować, że nie pojawi się więcej tutoriali na temat PHP, Zend Framework i Doctrine.

Nie zajmuje się tym już od ładnych kilku lat i nie zanosi się na to, żebym się jeszcze kiedyś zajmował. Pisanie o PHP było by stratą czasu.

Zamiast PHP pojawią się posty o SalesForce.com, Java, JavaScript, HTML5 i CSS3.

Pozdrawiam!

2014
05.26

Moja malinka przysporzyła mi ostatnio trochę problemów. Z przyczyn znanych tylko mi :) potrzebowałem zmienić adres MAC mojej karty sieciowej (AWUS036H polecam!). Każda próba zmiany adresu powodowała wyświetlenie następującego błędu:

failed: Device or resource busy

Powodów może być kilka:

  1. interfejs nie został wyłączony
  2. w tle działa jakiś manager sieci
  3. ifplugd!

Nieświadomość punktu 3 zmarnowała mi 2 godziny.

A teraz do rzeczy!
Co zrobić żeby zmienić MAC naszej karty sieciowej (odpowiednio):

  1. sudo ifdown wlan0
  2. np: sudo pkill wicd, sudo pkill network-manager
  3. sudo service ifplugd && sudo pkill ifplugd

Kod do skopiowania dla leniwych:

sudo ifdown wlan0
sudo service ifplugd stop
sudo pkill ifplugd
maccchanger -a wlan0
sudo ifup wlan0
2012
01.01

Dalsza część tutoriala będzie korzystała z systemu kontroli wersji GIT. Nie musicie się z nim zapoznawać, żeby pomyślnie ukończyć tutorial. Polecenia podane są „na tacy”. Wystarczy przepisać.

Pobieramy Doctrine 2

Aby móc z niego korzystać musimy go najpierw pobrać. Ja wykorzystam repozytorium GIT.
Przechodzimy do katalogu głównego naszej aplikacji i wydajemy następujące polecenia:

git submodule add git://github.com/doctrine/doctrine2.git vendor/Doctrine
cd vendor/Doctrine/
git checkout 2.1.x
git submodule init
git submodule update

Pobiorą one Doctrine 2 (ORM, Common oraz DBAL).

Autoloader Doctrine 2

Doctrine 2 ma swój własny autoloader. Musimy go więc zarejestrować. Zarejestrujemy go obok autoloadera Zenda.

Czytaj więcej >>

2011
12.26

W momencie pisania artykułu ZF jest w wersji beta2. Znaczy to mniej więcej tyle, że coś może nie działać jak trzeba oraz coś może przestać działać przy wydaniu wersji kolejnych. Niemniej jednak będę uaktualniał ten artykuł jeśli do wydania wersji stabilnej rozwiązanie zawarte w tym artykule przestanie działać. Cały tutorial zostanie zrobiony na systemie Ubuntu Server 11.10. Po znalezieniu plików konfiguracyjnych odpowiadających tym z tutoriala, powinien on działać również na innych wersjach systemu Linux jak i na systemie Windows.

A teraz do rzeczy!

Czego nam trzeba?

ZF2 do działania potrzebuje:

  • PHP 5.3.3 (lub kolejne wersje)
  • mod_rewrite

Ponieważ w zamiarach mamy stworzenie systemu CMS instalujemy architekturę LAMP lub WAMP.
Domyślny pakiet PHP w Ubuntu zawiera PHP w wersji 5.3.5. WAMP dla Windowsa zawiera PHP w wersji 5.3.8. Spełniają więc potrzeby ZF2.

Jeśli chodzi o mod_rewrite potrzebna nam jest konkretnie opcja „AllowOverride All”. Nie musimy tego robić pod Apache. Możemy użyć dowolnego serwera www który posiada opcję równoważną do mod_rewrite (Lighttpd, ngix).

Konfiguracja domeny

Teraz przejdźmy do konfiguracji środowiska tak, aby nasza aplikacja uruchamiała się po wpisaniu domeny „zftutorial.dev”.

Czytaj więcej >>

2011
12.21

Instalacja Doctrine

Właśnie uświadomiłem sobie o bezsensowności pisania o instalacji samego Doctrine.

Dlaczego?

Ponieważ jest przepiękny tutorial na oficjalnej stronie Doctrine, a do mojego tutoriala i tak trzeba napisać kawałek aplikacji, żeby pokazać działanie. I tu brakuje nam ZF.

Co więc będzie?

Zrobimy własny system CMS w oparciu o ZF oraz Doctrine.
Po świętach pojawi się artykuł o tym jak to zrobić. Z każdym artykułem nasz CMS będzie się rozrastał o nowe elementy z ZF oraz Doctrine.

2011
11.30

Tutorial dla Doctrine i Zenda

Pisanie tutoriala pochłania ogromne ilości czasu. Dla przykładu podam wam, że opisanie instalacji Zenda tak, żeby było to zrozumiałe i oczywiste zajmuje co najmniej 3 godziny.

Instalacja wszystkiego od podstaw.
Wypisywanie dokładnie krok po kroku co się robiło.
Analizowanie czy ktoś może tutaj popełnić błąd.
Analizowanie czy ktoś może mieć problemy ze względu na konfiguracje.
Redagowanie tekstu.
Wypisanie zwrotów i treści które mogą być niejasne.
Objaśnienie niezrozumiałych zwrotów, ew. zastąpienie czymś bardziej zrozumiałym.
Redagowanie tekstu przez żonę :D

Ostatnio naprawdę nie miałem czasu się tym zająć. Jedyny wolny dzień w tygodniu wolę spędzić z rodziną i taki jest efekt, że nic się tutaj nie pojawia bo brakuje czasu. Artykuł traktujący o instalacji Doctrine jest w połowie drogi. Może do weekendu go dokończę ;)

2011
11.30

Mieliście kiedyś problem ze sprawdzeniem czy adres URL jest poprawny?

Możemy niby napisać jakąś prostą funkcję jeśli wiemy dokładnie co się tam znajdzie. Ale czy będziesz pamiętać o możliwości przekazania parametrów logowania? portu? dostania się poprzez adres IP a nie domenę?

No właśnie…

W PHP mamy niby funkcje parse_url ale w manualu PHP wyraźnie napisane jest:

Ta funkcja nie służy do sprawdzania poprawności podanego URL

Co więc począć?

Z lenistwa i niechęci do studiowania anglojęzycznej dokumentacji zacząłem szukać w internecie idealnego wyrażenia regularnego, które sprawdzi dla mnie poprawność adresu URL. Szperałem i szperałem aż trafiłem tutaj. Mathias włożył sporo trudu w odnalezienie i przetestowanie wielu wyrażeń regularnych. Postanowiłem więc zaufać jego testom (po co robić coś co ktoś już zrobił) i wybrałem najlepsze z wyrażeń regularnych wg. jego testów.

Nie ufałem mu jednak na tyle, żeby w ciemno kopiować co mi w przeglądarce wyskoczyło.

Postarajmy się więc zrozumieć co poniższe wyrażenie może oznaczać:

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iu

Długie jak cholera (502 znaki). Wyczytać stąd nic się nie da, poza tym, że obsługuje tylko protokoły http, https i ftp. Pomogę wam jednak w zrozumieniu tego co się tutaj dzieje.

Czytaj więcej >>

2011
02.27

Instalację Zend Framework (ZF) dobrze by zacząć od zrozumienia modelu MVC oraz pobrania Zenda :)
O modelu MVC przeczytasz tutaj.
ZF pobieramy z oficjalnej strony. Na potrzeby tego tutoriala pobierzmy wersję „Full”. Poniższy tutorial będzie opierał się na wersji 1.11.3.

Konfiguracja domeny

Teraz przejdźmy do konfiguracji środowiska tak, aby nasza aplikacja uruchamiała się po wpisaniu domeny „zftutorial.dev”.

Dla użytkowników Linuksa:

Opis oprę o dystrybucję Ubuntu 10.04 LTS.
Do pliku /etc/hosts dodajemy naszą domenę.
A więc:

echo "127.0.0.1 zftutorial.dev" >> /etc/hosts

Następnie tworzymy plik /etc/apache2/sites-available/zftutorial.dev i o zawartości:

<VirtualHost *:80>
        ServerName zftutorial.dev
        DocumentRoot /var/www/zftutorial.dev/public
        <Directory /var/www/zftutorial.dev/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

Na koniec dodajemy konfigurację naszej domeny do apache:

a2ensite zftutorial.dev

Dla użytkowników Windowsa:

Do pliku C:\Windows\System32\drivers\etc\hosts dodajemy wiesz:

127.0.0.1 zftutorial.dev

Poniższy przykład podany zostanie dla aplikacji WAMP.
W katalogu głównym apache (np. C:\wamp\bin\apache\Apache2.2.17) edytujemy plik conf\extra\httpd-vhosts.conf i na końcu dodajemy:

<VirtualHost *:80>
        ServerName zftutorial.dev
        DocumentRoot C:\wamp\www\zftutorial.dev\public
        <Directory C:\wamp\www\zftutorial.dev\public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

mod_rewrite

Jeśli nie mam włączonego modułu „rewrite”, którego ZF wymaga do działania to trzeba będzie go włączyć. Mod rewrite jest nam potrzebny, żeby uzyskać „przyjazne linki” oraz do podstawowego routera ZF (domena/moduł/kontroller/akcja).

Linux:

a2enmod rewrite

Windows:

Klikając w trayu ikonkę WAMPa możemy wybrać moduły apache które chcemy włączyć. Jeśli nie jest włączony klikamy oczywiście w moduł „mod_rewrite”.

Konfiguracja ZF Tools

Dla użytkowników Linuksa:

alias zf.sh=/ścieżka/do/ZendFramework/bin/zf.sh

Dla użytkowników Windowsa:

set PATH=%PATH%;C:\ścieżka\do\ZendFramework\bin

Zakładanie projektu ZF

Dla użytkowników Linuksa:

Uruchamiamy terminal i przechodzimy do katalogu /var/www. Następnie tworzymy nowy projekt poleceniem:

zf create project zftutorial.dev

Dla użytkowników Windowsa:

Uruchamiamy konsolę i przechodzimy do katalogu C:\wamp\www. Następnie tworzymy nowy projekt poleceniem:

zf create project zftutorial.dev

W dalszej części przykłady podane będą dla systemu Linux. Dla platformy Windows zmieni się jedynie ścieżka do katalogu naszej aplikacji. Dla systemu Linux /var/www/zftutorial.dev. Dla systemu Windows C:\wamp\www\zftutorial.dev.

Kopiujemy biblioteki ZF

Kopiujemy biblioteki ZF(/ścieżka/do/ZendFramework/library) do /var/www/zftutorial.dev/library i restartujemy serwer apache.

Test

W pasek adresu przeglądarki wpisujemy „zftutorial.dev”. Jeśli pojawi nam się powitalna strona ZF to znaczy, że zrobiliśmy wszystko poprawnie. Jeśli nie to napiszcie proszę w komentarzach jakie problemy napotkaliście. Postaram się pomóc.

2011
02.13

Zend Framework (ZF) to darmowa, zorientowana obiektowo aplikacja dla PHP 5. ZF jest często nazywany ‚biblioteką komponentów’, ze względu na wiele prawie nie powiązanych komponentów których wedle uznania można używać jako spójną całość lub niezależnie. ZF dostarcza również zaawansowaną implementację modelu Model-View-Controller (MVC), który może zostać użyty do stworzenia podstawowej struktury aplikacji opartej o ZF.

Czytaj więcej >>

2011
01.26

add-apt-repository: command not found

Jeśli w Ubuntu po wpisaniu polecenia:

add-apt-repository

dostajecie błąd:

add-apt-repository: command not found

Wystarczy doinstalować pakiet:

 python-software-properties

Robimy to poleceniem:

sudo apt-get install software-properties-common

Wersje przed 12.10:

sudo apt-get install python-software-properties