Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM

Autor wpisu: Tomasz Kowalczyk, dodany: 20.07.2011 00:02, tagi: symfony, framework, php

Witajcie ponownie. Ostatnio pracuję nad pewnym projektem opartym o symfony, w związku z czym po raz kolejny mam okazję pomęczyć się trochę z jego wszystkimi zawiłościami. Dzisiejszy problem trochę mnie zdziwił, ponieważ nie spodziewałem się tego typu restrykcji ze strony frameworka, stąd też tradycyjnie szukałem błędu nie tam, gdzie powinienem. Na szczęście udało mi się [...]

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:

  1. Ściągnąć instalator do katalogu PHP z aktualnie używaną wersją
  2. Otworzyć wiersz poleceń, przejść do katalogu zawierającego ściągniętą paczkę i wpisać php go-pear.phar
  3. 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:

  1. 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
  2. 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:

  1. Przechodzimy do opcji i ustawiamy ścieżkęUstawianie ścieżi do PHPUnit w NetBeans
  2. Przechodzimy do właściwości bieżącego projektu i ustawiamy folder testowy (wpierw musimy go stworzyć w drzewie katalogów)Ustawienie katalogu z testami w własciwościach projektu
  3. Ustawiamy boostrap i konfigurację PHPUnitKonfiguracja PHPUnit i bootstrapPo 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
  4. 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 ;)  Ł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

Czym byłyby nasze programy, strony internetowe, skrypty i inne twory wyobraźni, gdyby nie czcionki, które wdzięcznie wyświetlają powierzoną im treść? Na to pytanie nie ma jednoznacznej odpowiedzi, aczkolwiek każdy zgodzi się, że gdyby nie mnogość krojów pisma, nie bylibyśmy w stanie tak zręcznie sterować wyglądem produktu, sugerując użytkownikowi końcowemu niewerbalne znaczenie danego tekstu. Dlatego dzisiejszy [...]

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.

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

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

Pracując z wieloma technologiami codziennie zachwycamy się możliwościami różnego rodzaju oprogramowania. Kolejne wersje funkcji, bibliotek, frameworków to bezsprzecznie nasz żywioł, w którym słychać tylko głosy mówiące: "a widziałeś, co nowego wprowadzono w wersji 2.0?". Oczywiście rozwój pojedynczych narzędzi jest ważny, aczkolwiek należy mieć na uwadze fakt, iż najpiękniejsza w tym wszystkim jest harmonia, którą osiąga [...]

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/

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