Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Marek, dodany: 11.04.2012 09:44, tagi: php, apache

Teraz trochę o logwatch’u. Jest to program, który dostarcza mi codziennie rano logi z serwera WWW do czytania przy porannej herbacie. Domyślnie logwatch skanuje wszystkie logi Apache wg zapisu w pliku konfiguracyjnym /usr/share/logwatch/default.conf/logfiles/http.conf:

LogFile = httpd/*access_log
LogFile = apache/*access.log.1
LogFile = apache/*access.log
LogFile = apache2/*access.log.1
LogFile = apache2/*access.log
LogFile = apache2/*access_log
LogFile = apache-ssl/*access.log.1
LogFile = apache-ssl/*access.log

Aby rozszerzyć sprawdzanie logów o inne pliki należy utworzyć plik /etc/logwatch/conf/logfiles/http.conf

i umieścić w nim namiary na konkretne pliki, np.

# konfiguracja dla niestandardowych plików
LogFile = /var/log/apache2/test/access.log
LogFile = /home/hekima/log/test2/access.log
LogFile = /home/hekima/log/test3/access.log

Żeby szybko przetestować zmiany wystarczy odpalić:

sudo logwatch --mailto=moj@e-mail.pl

Autor wpisu: zleek, dodany: 05.04.2012 14:22, tagi: zend_framework, php

Zapewne wielu z Was spotkało się z problemem sortowania polskich znaków podczas pobierania danych z bazy, szczególnie gdy mamy ustawione porównywanie znaków na utf8_general_ci. Sztandarowym przykładem może być tutaj lista województw, gdzie standardowo województwo łódzkie będziemy mieli na samym końcu. Rozwiązaniem tego problemu jest wskazanie zestawu znaków dla określonej kolumny, którą wskażemy w sekcji ORDER [...]

Autor wpisu: Marek, dodany: 04.04.2012 18:29, tagi: php

Pewnie niewielu z nas będzie pracować w jednej firmie do 67 roku życia. Czasy, w których pracownik był związany z przedsiębiorstwem przez 25 lat powoli odchodzą w niepamięć. Co zrobić gdy nagle z firmy odchodzi pracownik, który miał mnóstwo kont w różnego rodzaju dedykowanych systemach CMS, odbierał maile wysyłane z formularzy zamieszczonych na stronach WWW itp.? Pocztę byłego pracownika można przekierować na innego, ale trzeba również posprzątać w serwisach www. Rzeczywistość na ogół nie jest różowa – serwisy pisane są w różnych frameworkach, niektóre mają już swoje lata, adresy e-mail moderatorów wpisane są w wielu plikach konfiguracyjnych.

To jak znaleźć wszystkie wpisy dotyczące nieaktywnego konta e-mail i zamienić je poprawnym adresem?

Założenia:

  • odszedł od nas pracownik o mailu michael.jordan@test.pl
  • chcemy przepisać wszystkie namiary na jego pocztę na innego pracownika: marcin.gortat@test.pl
  • dla uproszczenia wszystkie serwisy znajdują się w katalogu: /var/www/

Najpierw wyszukajmy wszystkich wystąpień adresu e-mail naszego byłego pracownika:

grep -r 'michael.jordan@test.pl' /var/www/ 2> /dev/null

Przykładowy wynik:

/var/www/abc/config/test.php:$config['e-mail'] = 'michael.jordan@test.pl';
/var/www/a/b/c/plik.php:$config['moderators'] = 'michael.jordan@test.pl,kobe.bryant@test.pl';

Jak widać powyżej, znaleźliśmy wpisy z poszukiwanym adresem e-mail. Polecenie grep -r wyświetla najpierw ścieżkę do pliku, potem znak dwukropka i po nim wiersz ze znalezioną frazą.

Teraz przejdźmy do sedna i zmieńmy wszystkie wystąpienia michael.jordan@test.pl na marcin.gortat@test.pl:

grep -r 'michael.jordan@test.pl' /var/www/ 2> /dev/null \
| cut -d ':' -f 1 \
| xargs sed -i 's/michael.jordan@test.pl/marcin.gortat@test.pl/g'

Krótkie wyjaśnienie:

  • w pierwszej linii wyszukujemy rekurencyjnie wystąpienia michael.jordan@test.pl w katalogu /var/www/ a wszelkie komunikaty o błędach wysyłamy w czarną dziurę ;)
  • z otrzymanego wyniku wyciągamy  jedynie nazwy plików używając jako separatora kolumn znaku ‘:’
  • taki wynik podajemy  jako argument dla polecenia sed, za pomocą którego dokonujemy właściwej zamiany ciągów znaków

I to tyle – tymi  prostymi poleceniami zamieniliśmy w plikach danej lokalizacji wszystkie wystąpienia niechcianego adresu pożądanym.

 

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: d3ut3r, dodany: 04.04.2012 03:45, tagi: zend_framework, php

Dziś chciałbym przedstawić Wam w jaki sposób tworzyć kontrolery i akcje w Zend Framework zanim jednak zaczniemy potrzeba nieco teorii o tym co to jest kontroler i akcja :) tak więc zapraszam do czytania.

1. Czym są kontorlery

Najprościej mówiąc kontroler to część aplikacji której zadaniem jest odebranie danych od użytkownika oraz ich analiza.

2. Czym są akcje

Akcja to część składowa kontrolera, każdy kontroler w ZF powinien posiadać przynajmniej 1 akcję która nazywa się indexAction jest ona wywoływana jako akcja domyślna.

To tyle jeżeli chodzi o teorie :) oczywiście czytając to pierwszy raz możesz czuć się nieco zagubiony, mam jednak nadzieję że pod koniec wpisu wszystko będzie już jasne. W poprzednim wpisie “Zend Framework pierwsze starcie” pokazałem w jaki sposób wygenerować projekt o nazwie helloZend dziś dalej będziemy pracować na tym projekcie.

Ostatnim krokiem przed pracą z kodem będzie skonfigurowanie naszego projektu do pracy w trybie development co pozwoli nam w czytelny sposób śledzić ewentualne błędy w kodzie. Rozpoczynamy od edycji pliku .htaccess  z katalogu public naszego projektu. Po otwarciu pliku w pierwszej linii wpisujemy:

SetEnv APPLICATION_ENV development

Skoro wprowadziliśmy już wszystkie wymagane zmiany, mniej więcej wiemy co to kontroler a co akcja pora przejść do praktyki. Zaczniemy od pewnego faktu dotyczącego poprzedniego projektu helloZend otóż linki:

robią dokładnie to samo. W przypadku 1 linku nie podajemy żadnych parametrów zatem system wywołuje domyślny kontroler (index) oraz domyślną akcję (index). Link drugi określa kontroler którego chcemy użyć (w naszym przypadku index) oraz sam dobiera domyślną akcję. Link trzeci jest pełnym linkiem i określa on zarówno kontroler jak i akcję. Możemy zatem powiedzieć, że ogólny schemat linków dla projektów ZF wygląda tak: http://example.com/kontroler/akcja

3. Tworzenie kontrolerów

Kontrolery naszej aplikacji przechowywane są w katalogu application/controllers domyślnie są tam 2 pliki: IndexController.php oraz ErrorController.php możemy dodawać nowe kontrolery do naszej aplikacji wydając komendę:

zf create controller nazwa_kontrolera domyslna_akcja moduł
  • nazwa_kontrolera – raczej nie trzeba tłumaczyć ważne aby nazwa była intuicyjna i odzwierciedlała to czym kontroler będzie się zajmował, jeżeli np tworzymy kontroler dla newsów nazwijmy go news
  • domyslna_akcja – parametr ten ma domyślną wartość 1 i określa czy wraz z utworzeniem nowego kontrolera chcemy aby system wygenerował domyślną akcję index
  • moduł – parametr określa moduł do którego należeć będzie kontroler.

Czas przejść do czynów, do naszego projektu helloZend dodamy kontroler który nazwiemy pierwszy w tym celu będąc w katalogu projektu wydajemy polecenie:

zf create controller pierwszy

dzięki temu w katalogu controllers naszej aplikacji pojawił się plik o nazwie PierwszyController.php jeżeli otworzymy wspomniany plik zobaczymy, że skrypt wygenerował dla nas całą strukturę łącznie z akcją index(metoda o nazwie indexAction).

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 02.04.2012 08:00, tagi: sql

Poprzedni quiz przygotowany przez Nettuts+ nie wyszedł mi zbyt dobrze. Na szczęście zrehabilitowałem się w quizie o SQL, zdobywając 100%. Napiszcie w komentarzu jak Wam poszło.

quiz_sql

Autor wpisu: Tomasz Kowalczyk, dodany: 30.03.2012 00:09, tagi: javascript, php

Wracamy na poważnie. :) Jakiś czas temu miałem problem z usuwaniem „niewidzialnych znaków” ze stringa w PHP. Mam na myśli oczywiście wszystkie te, które normalnie zapisujemy jako „slash-coś” – \n, \r, \t i tak dalej. W dzisiejszym wpisie pokażę Wam … #LINK#

Autor wpisu: batman, dodany: 28.03.2012 09:00, tagi: zend_framework

Zend Framework to jeden z najpopularniejszych frameworków PHP, który poznawałem jako jeden z pierwszych. Z wersji na wersję przybywało w nim funkcjonalności, zamieniając go ze zbioru luźno związanych komponentów w pełnoprawny framework MVC (z małym przymrużeniem oka). Od ponad roku programiści z niego korzystający czekają na wersję oznaczoną numerem 2, która ma przywrócić blask nieco zaśniedziałej chwały. Czy to się uda? Ciężko stwierdzić. Obecnie mamy możliwość sprawdzenia jak sobie radzi trzecia beta Zend Frameworka 2. Niestety dokumentacja jest tak samo kiepska jak w przypadku ZF 1 i większość informacji musimy wyszukiwać w sieci lub kodzie.

Co się zmieniło? Wszystko. Jeśli znacie aktualna wersję Zend Frameworka, to i tak będzie musieli uczyć się go na nowo, a aplikacje napisane w oparciu o pierwszą wersję, nie będą działać z wersją drugą. Jest tak dlatego, ponieważ ZF 2 został podzielony na moduły, które w pierwszej wersji były traktowane po macoszemu. Od drugiej wersji każdy moduł, to niezależny byt, który można bez żadnego problemu wyjąć z jednej aplikacji i wstawić do innej. Co więcej, moduły można pakować do archiwum phar, przez co ich utrzymanie i użycie będzie jeszcze prostsze. Moduły stały się pojemnikami na wszystko co chcemy zamknąć w obrębie jednej przestrzeni nazw. I tak, moduł może zawierać specyficzne biblioteki, zasoby (css, javascript, pliki graficzne), całą aplikację MVC, konfigurację – wszystko jest niezależne od innych modułów. Pozwoli to na budowanie klocków, z których będzie można tworzyć modułowe aplikacje.

Spore zmiany zaszły również w obsłudze requestu od momentu jego przesłania do aplikacji, do wygenerowania odpowiedzi. Pamiętacie jak to wyglądało w ZF 1? Pluginy, action helpery, metody w kontrolerze, boostrap i cała magia z tym związania. W ZF 2 już tego nie ma. Teraz mamy eventy, przy pomocy których możemy podpiąć się pod większość etapów obsługi żądania. Od strony programisty za wiele się nie zmieni. I tak trzeba napisać kod, który robi coś w określonym momencie, ale od strony “bebechów”, twórcy ZF 2 odwalili kawał dobrej roboty.

Podobnie wygląda sprawa wstrzykiwania zależności. Z wierzchu nie widać za bardzo co się zmieniło, ponieważ nadal musimy bawić się wielowymiarowymi, zagnieżdżonymi tablicami przekazywanymi do jakiegoś obiektu. Jednak jeśli zajrzymy pod maskę, znajdziemy coraz popularniejsze w PHP DI (dependency Injection). Podobnie jak w przypadku eventów, DI również zostało dobrze przemyślane.

Kolejną sporą zmianę zauważymy w widoku. Teraz akcja kontrolera zwraca obiekt typu ViewModel, który odpowiedzialny jest za ustawienie szablonu, pliku widoku i przekazanie zmiennych. Ciekawie wygląda opcja zagnieżdżania, pozwalająca osadzić jeden ViewModel wewnątrz innego, co w rezultacie pozwoli na wpływanie na zawartość dowolnego elementu szablonu.

Przejrzałem Zend Frameworka 2 dosyć pobieżnie, przebrnąłem przez Quick Start i stworzyłem kilka modułów w ramach treningu, jednak już teraz mogę powiedzieć, że szykuje się nam porządnie wykonany framework. Nie przeprowadzałem żadnych testów wydajnościowych, w końcu cały czas mamy do czynienia z betą, obawiam się jednak, że ZF 2 może być wolniejszy od swojego poprzednika. Jest to mocno subiektywne odczucie i nie powinniście się nim sugerować podczas wybierania frameworka. Ogromnym plusem ZF 2 jest podzielenie wszystkiego na niezależne moduły, co na pewno przyczyni się do powstania ogromnej bazy paczek podobnych do gem-ów powszechnie wykorzystywanych w Railsach. Przynajmniej taką mam nadzieję. Ile poczekamy na stabilną wersję ZF 2? Nie wiem. Zgaduję, że chłopaki czekali na PHP 5.4 i w jednej z kolejnych wersji beta zobaczymy rozbudowany komponent Zend_Tool, pozwalający na uruchomienie aplikacji opartej na ZF 2 bez konieczności posiadania jakiegokolwiek serwera. Nieważne jaka by nie była przyczyna opóźnień, czekam na finalną wersję z niecierpliwością.

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.