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 python-software-properties
2011
01.16

Ostatnio przenosiłem tego bloga na inny serwer. Wiązało się to zmianą domeny, zmianą ścieżek wewnętrznych, przeniesieniem bazy danych oraz zmianą prefiksu tabel w bazie danych.
Ku mojemu zdziwieniu po zalogowaniu do panelu oczom moim ukazał się napis:

Nie posiadasz wystarczających uprawnień, by wejść na tę stronę

W internecie nie znalazłem rozwiązania na ten problem i zajęło mi trochę czasu rozwiązanie problemu. Postanowiłem więc opisać krok po kroku w jaki sposób przenosimy wordpressa.

1. Kopiujemy pliki bolga w nową lokalizację

W moim przypadku do pobrania plików z FTP użyłem programu FileZilla. Wgrywanie plików na nowy serwer wymagało połączenia się przez protokół SCP, użyłem więc programu WinSCP. Oba podane programy są darmowe.

2. Edytujemy plik wp-config.php

Plik wp-config.php znajduje się w katalogu głównym naszego WordPress’a.
Zmieniamy w nim następujące linie:

/** Nazwa bazy danych, której używać ma WordPress */
define('DB_NAME', 'wordpress');

/** Nazwa użytkownika bazy danych MySQL */
define('DB_USER', 'wordpress');

/** Hasło do bazy danych MySQL */
define('DB_PASSWORD', 'password');

/** Adres serwera MySQL */
define('DB_HOST', 'localhost');

/** Prefix dla tabel Wordpress'a */
$table_prefix  = 'blog_';

3. Edytujemy konfigurację w bazie danych

W tabeli options edytujemy pola o nazwie (option_name):siteurl oraz home.
Wstawiamy w nie jako wartość aktualny adres bloga.

4. Zmieniamy prefix tabel WordPress

Jeśli zachodzi potrzeba zmiany prefiksu należy pamiętać jednej rzeczy. Poza zmianą nazw tabel TRZEBA zmienić wszystkie wpisy w tabelach options oraz usermeta, których nazwa ma przedrostek identyczny jak stary prefix bloga. W nazwach rekordów zamieniamy stary prefix na nowy.

Wpisujemy adres naszej strony i viola! Mamy przeniesionego bloga.

2010
12.31

Wiadomo, że dużym ułatwieniem przy pracy w linuksowej konsoli jest klawisz <Tab>.
Podwójne wciśnięcie listuje dostępne ścieżki a pojedyncze je uzupełnia oszczędzając nam wpisywania wszystkiego z palca.

Można jednak tą funkcjonalność znacznie rozszerzyć tak aby <Tab> uzupełniał nam również parametry i komendy konsolowych programów. Na przykład wystarczy wpisać: aptitude i i raz wcisnąć <Tab> a bash automatycznie uzupełni komendę do: aptitude install

Aby mieć tak przyjaznego basha należy zainstalować pakiet bash-completion:

aptitude install bash-completion

Jeśli posiadamy Debiana trzeba jeszcze edytować plik /etc/bash.bashrc i odkomentować w nim linie:

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

W Ubuntu ten pakiet jest domyślnie skonfigurowany.