Autor wpisu: sokzzuka, dodany: 19.07.2011 15:57, tagi: php
Jak wszyscy (albo i nie) wiedzą, na co dzień korzystam z Netbeans IDE. Niedawno w pracy zmieniliśmy tryb rozwijania oprogramowania na taki, który obejmuje między innymi metodykę TDD (Test Driven Development). Wobec tego faktu, powstała konieczność tworzenia i uruchamiania testów jednostkowych. Netbeans wspiera obie te czynności zapewniając przyjemny graficzny interfejs dla wszystkich związanych z tym operacji, jak również generator plików testów dla klas. Ten mały tutorial ma pokazać, jak w kilku prostych krokach zainstalować PHPUnit oraz zintegrować go z Netbeans IDE.
Pierwsze co musimy zrobić, to zainstalowanie menedżera paczek „PEAR„. Jest on potrzebny do ściągnięcia PHPUnit wraz z zależnościami. Nie jest to konieczne do rozpoczęcia testów z PHPUnitem, natomiast, jako, że PEAR jest standardowym repozytorium bibliotek dla języka PHP warto się z nim przy okazji zapoznać.
By zainstalować menedżera paczek PEAR, należy wykonać następujące kroki:
- Ściągnąć instalator do katalogu PHP z aktualnie używaną wersją
- Otworzyć wiersz poleceń, przejść do katalogu zawierającego ściągniętą paczkę i wpisać
php go-pear.phar
- Instalacja menedżera pakietów odbędzie się automatycznie, na końcu instalator poprosi nas o sprawdzenie wszystkich ustawień i ścieżek, z ciekawostek powiem, że jeżeli będziemy chcieli zmienić ustawienie miejsca gdzie znajduje się
php.exe
to wyskoczy nam ładne windowsowe okienko wyboru pliku (a jednak się da!)
W tym momencie powinniśmy mieć zainstalowanego menedżera paczek. By zainstalować PHPUnit, należy wykonać następujące kroki:
- W konsoli wpisać (może być konieczność przejścia do katalogu z pehapem):
pear channel-discover pear.phpunit.de pear channel-discover components.ez.no pear channel-discover pear.symfony-project.com
- Zainstalować PHPUnit
pear install -o phpunit/PHPUnit
Przełącznik-o
powoduje, że zostaną zainstalowane automatycznie wszystkie wymagane zależności. Podczas instalacji zdarzyło mi się, że nie można było zainstalować niektórych potrzebnych paczek, ponieważ były w wersjach „beta”. W takim przypadku należy zainstalować je ręcznie wpisując:pear install nazwa_paczki
Mając już zainstalowanego PHPUnit, możemy go skonfigurować do pracy z Netbeans:
- Przechodzimy do opcji i ustawiamy ścieżkę
- Przechodzimy do właściwości bieżącego projektu i ustawiamy folder testowy (wpierw musimy go stworzyć w drzewie katalogów)
- Ustawiamy boostrap i konfigurację PHPUnit
Po co są nam potrzebne oba pliki ? Dzięki boostrapowi będziemy przede wszystkim ustawić własny autoloader. Natomiast configuration.xml daje nam dostęp do wielu ustawień PHPUnit
- Przykład boostrapa:
function load($className) { $path = str_replace('_', DIRECTORY_SEPARATOR, $className); $path = '../src/' . $path . '.php'; if (file_exists($path)) { require $path; } } spl_autoload_register('load');
Mocno polecam rejestrację autoloadera przez spl_autoload_register, ponieważ zdaje się PHPUnit ma własny autoloader i jest to najprostszy sposób by nie wchodzić z nim w konflikt.
Gdy już mamy wszystko zrobione możemy cieszyć się takimi oto udogodnieniami jak:
- generowanie szkieletów testów
prawyklik na plik -> tools -> create PHPUnit test
- automatyczne uruchamianie testów (
alt+f6
) - ładne okienko z podsumowaniem
Mam nadzieję, że ktoś skorzysta z tego małego tutoriala i będzie bez przeszkód oddać się unit testom
Autor wpisu: Tomasz Kowalczyk, dodany: 17.07.2011 13:45, tagi: css
Autor wpisu: singles, dodany: 16.07.2011 18:55, tagi: javascript, php
Pisałem niedawno na temat inicjatywy DevMeetings – serii darmowych szkoleń dla developerów. Otóż to, Panowie robią świetną robotę w całej Polsce, ale ostatnio poszli jeszcze dalej. W ich głowach narodził się DevCamp. A co to takiego, po co to komu, i jakie są tego wyniki dowiecie się czytając dalej.
Zbieranie sił
Jakie było me zaskoczenie, kiedy 1 czerwca dostałem zaproszenie na coś, co kryło się pod nazwą DevCamp. Pozwolę sobie zacytować treść tego zaproszenia, które od razu przybliży wam cel tego przedsięwzięcia:
Co to jest? 3-dniowy event o charakterze “R&D-Campa”, na ktory zapraszamy najbardziej doswiadczonych JavaScript Developerow oraz Backend-Developerow i rozgryzamy najbardziej zaawansowane kwestie zwiazane z SSJS.
Po co? Koncentrujemy sie na niebanalnych i trudniejszych zagadnieniach zwiazanych z SSJS, jakie wystepuja w “prawdziwych”, komercyjnych projektach, udostepnionych produkcyjnie. Nasz cel: po DevCampie jestes w stanie implementowac produkcyjna aplikacje w SSJS: od wyboru technologii, po deployment na srodowisko live i monitoring aplikacji.
Kilka przykladowych tematow:
Jak migrowac baze mySQL do CouchDB lub MongoDB
Jak przekonac management do uzywania SSJS w firmie
Badanie wydajnosci: Node vs RingoJS vs V8CGI vs Java vs PHP – zarowno testy obciazajace I/O, jak i CPU
Security aplikacji opartych o SSJS, m. in. zgodnosc z OWASP10; Single SignOn, autentykacja / autoryzacja
Zdecydowałem się, czego nie żałuję i tak na początku lipca wylądowałem we Wiejcach, gdzie przez najbliższe 3 dni odbywała się totalna burza mózgów na temat SSJS.
Autor wpisu: sokzzuka, dodany: 15.07.2011 09:08, tagi: php
Jedną ze świetnych i unikalnych cech języka Scala, której PHP nie posiada są tzw implicit conversions zwane też przez oficjalną dokumentację „widokami” (views). Podobny mechanizm zaimplementowany jest w C#, chociaż szczegółów szczerze powiedziawszy nie znam .Przejdźmy jednak do rzeczy. Czym jest widok/implicit conversion ? Jest to technika niejawnego rzutowania za pomocą funkcji zdefiniowanej przez użytkownika. Przydaje się ona gdy chcemy np. rozszerzyć wbudowaną w język klasę o swoje metody. Funkcję konwertującą definiujemy poprzez dodanie słowa kluczowego „implicit” przed deklaracją funkcji.
Poniżej przykład implicit conversion na wbudowanej klasie „String”, dzięki któremu dodajemy do niej znaną z PHP metodę „stripslashes”:
Najpierw definiujemy nową klasę stringów nazwaną „MyString”:
class MyString(val value: String){ def stripslashes():String = { return this.value.replace("\\\\","") } }
Następnie definiujemy funkcję konwertującą:
implicit def stringToMyString(string: String) = new MyString(string)
Czas na testy. Najpierw klasycznie, bez użycia widoku:
val test1 = new MyString(" aaa \\\\ "); println(test1.stripslashes) //wyświetli aaa
Z użyciem widoku:
val test2 = " aaa \\\\ " println(test2.stripslashes) //wyświetli aaa
Jak widać, dzięki technice widoków możemy łatwo wzbogacać wbudowane typy (i nie tylko) o nowe funkcjonalności, czyniąc kod bardziej przyjaznym. Zasięg implicit conversion jest zależny od kontekstu w jakim został zdefiniowany – jeżeli zdefiniujemy go klasie to ma zasięg do klasy, jeżeli w paczce to do paczki.
Technika implicit conversion jest w pewnym stopniu podobna do zgłoszonego kiedyś do PHP ficzeru zwanego autoboxingingiem, z tą różnicą, że mechanizm implicit conversions jest mniej „magiczny” oraz ma wyraźne granice zasięgu działania. Uważam, że jest również lepszy od otwierania klas znanego z języka Ruby, oraz Javascriptowego przyłączania metod do prototypu, z powodów takich samych jak wymienione wcześniej.
A wy co o tym sądzicie ?
Autor wpisu: Tomasz Kowalczyk, dodany: 15.07.2011 01:39, tagi: php
Autor wpisu: batman, dodany: 13.07.2011 08:00, tagi: javascript
Poprzedni quiz przygotowany przez serwis Nettuts+ dotyczył jQuery i większych problemów raczej nie sprawił. Kolejna odsłona quizu dotyczy czystego JavaScript i jeśli ktoś na co dzień nie siedzi w tym języku, to może stanowić nie lada wyzwanie. Większość pytań, jeśli nie wszystkie, jest podchwytliwa i trzeba dobrze się zastanowić nad odpowiedzią. Za pierwszym razem osiągnąłem wynik 82,35%. Jak wam poszło?
Quiz znajdziecie pod adresem http://net.tutsplus.com/quizzes/nettuts-quiz-3-javascript/