Beanstalk w Symfony2
paź 17th
Beanstalk to bardzo prosta i szybka kolejka wiadomości. Jest świetnym rozwiązaniem, aby wykonywać długo trwające żądania użytkownika (do tego został zresztą zaprojektowany). Doskonałym przykładem kiedy powinno się użyć kolejki wiadomości, to np. masowe wysyłanie wiadomości do użytkowników systemu (e-mail, sms). Pojedyncza operacja wysłania wiadomości do użytkownika nie jest złożona i zajmuje najwyżej kilka sekund. Jednak przy wysyłaniu wiadomości do kilkuset tysięcy użytkowników, czas obsługi żądania jest zbyt długi, żeby ktokolwiek w rzeczywistości mógł wykonać treść żądania przed zakończeniem połączenia HTTP. Oczywiście można kolejki obchodzić na różne sposoby (crond, pooling bazy danych). Pytanie tylko w jakim celu utrudniać sobie życie? Komunikacja z serwerem kolejek beanstalk odbywa się poprzez TCP i wymianę danych ASCII, a do komunikacji powstała cała masa bibliotek w wielu językach programowania.
Web do kwadratu – polski projekt OpenSource oparty na Symfony2
wrz 13th
Projekt webdokwadratu ma na celu przedstawić osoby odpowiedzialne za kształt polskiego Internetu (tak, do nich te pretensje, że jakiś blog nie działa, albo, że gdzieś się czegoś nie da ;-). Projekt ciekawy z wielu względów. M. in. możemy zobaczyć tych ludzi, którzy przyczynili się do rozwoju sieci, a przy okazji poznać czym się interesują, zaklikać do nich na twitterze czy facebooku.
Dostęp do kontenera dependency injection z klasy repository
wrz 4th
Użycie KnpPaginatorBundle do stronicowania rekordów jest bardzo dobrym pomysłem. Jednak pokazany w dokumentacji przykład jest zapisany w kontrolerze. Zapewne spora część osób wolałaby pobieranie danych z bazy danych zawrzeć w plikach modelu. W tym wypadku w pliku repository dla danego entity. Problem jest z dostępem do serwisu paginatora – domyślnie kontener DI nie jest dostępny z klasy repozytorium.
Symfony2 Launch Party
lip 28th
W Gliwicach, przy siedzibie XSolve odbyło się całkiem udane Launch Party. Był grill z kiełbaskami, piwo i paluszki :-) Michał Pipa opowiadał o powstaniu projektu Symfony2 i przekonywał, że Symfony2 „rządzi„. Po prezentacji pozostało trochę czasu na piłkarzyki i rozmowy o projektach. Pojawiło się sporo osób, a dla tych, których nie było fotorelacja:
Symfony2 launch party też w Polsce!
lip 27th
W czwartek 28.07 swoją premierę będzie miała druga wersja frameworka Symfony! Spontaniczna akcja na blogu Symfony2 zaowocowała również organizacją imprezy w Polsce. Zapraszamy wszystkich związanych z Symfony, PHP na spotkanie przy grillu w siedzibie XSolve.
Programowanie przez var_dumpowanie
cze 2nd
Ulubiona konkurencja wśród programistów PHP. Nie będę tu opisywał możliwości wykorzystania xdebuga, vima z dodatkiem do debugowania, czy jakiejkolwiek innej ludzkiej formy tworzenia oprogramowania. Będzie o tym jak to zrobić w najbrzydszy z możliwych sposobów (jak się później okaże w bardzo kolorowy sposób). var_dump! Funkcja PHP opisywana tak:
Podstawy UML: diagram klas
kwi 23rd
Diagram klas (class diagram) obrazuje bloki z jakich zbudowany jest dowolny system programowany obiektowo. Z reguły zawiera ogólny opis atrybutów i metod, nie skupia się na szczegółowych implementacjach, jak en parametrów metody. W przeciwieństwie do opisanego wcześniej diagramu przypadków użycia, diagram klas nie służy do komunikacji z klientem. Rzadko kiedy klient jest na tyle techniczny, żeby można było z nim rozmawiać na poziomie klas. To po co to robić? Hmm… wiele by można wymieniać, ale dla mnie najważniejsze są takie dwa:
Uzupełnianie kodu PHP w Vim
mar 25th
Ludzie (programiści?) wymieniając jako „muszę to mieć” w IDE, generują długą listę życzeń. Jednak z reguły na jej początku pojawia się autouzupełnianie. Nazywane także code completion, autocompletion, intellisense. Zwał jak zwał. Chodzi o metodę podpowiadania składni kodu źródłowego. Na stackoverflow w temacie najbardziej brakujących funkcjonalności w Vim jedna z pierwszych odpowiedzi zawiera:
Autocomplete with inline documentation support for methods/properties
O zgrozo! Dla takich ten artykuł. Oczywiście wiele środowisk potrafi podpowiadać, ale jeśli do listy dorzuci się szybkie, stabilne działanie IDE, dostępność (np. na serwerze), to lista kandydatów znacznie się kurczy, o ile nie zostaje pusta. Królestwem środowisk graficznych takich jak Eclipse, Netbeans czy ZendStudio (można by wymieniać długo), jest mnogość dostępnych w nich funkcji (m.in. autouzupełnianie). Więcej >
Warunkowa konfiguracja DocumentRoot w Apache
mar 14th
Od dawien dawna korzystam z konfiguracji Apache, która umożliwia uruchamianie kolejnych serwisów pod zadaną subdomeną poprzez stworzenie odpowiedniego katalogu. Dla przykładu: w katalogu /var/www/ tworzę katalog marcin.dryka.pl i jest on serwowany przez apache po wywołaniu adresu http://marcin.dryka.pl. Tak naprawdę to bardzo prosta konfiguracja VirtualHosta. Po uruchomieniu modułu Apache o nazwie vhost_alias możemy zamiast konfiguracji z DocumentRoot, wykorzystać VirtualDocumentRoot z opcją %0, która odpowiada wpisanemu hostowi (w tym przykładzie %0 ma wartość marcin.dryka.pl). Co jednak jeśli ktonfigurację chciałbym odrobinę rozszerzyć? Chciałbym, aby główny katalog był wybierany warunkowo. Jeśli klient jest spoza mojej sieci lokalnej (lub dowolnej innej, ale określonej) powinien dostać się tylko do strefy publicznej. Natomiast jeśli znajduje się wewnątrz sieci oraz katalog prywatny istnieje, to on powinien zostać wybrany jako katalog główny serwera.
Uzupełnienie: Podstawy UML: Diagram przypadków użycia
mar 1st
UML to przede wszystkim narzędzie do komunikacji. Aby tę komunikację ułatwić, umieszczam tutaj prezentację uzupełniającą wpis Podstawy UML: Diagram przypadków użycia. Zakres materiału jest bardzo podobny, jednak prezentacja została uzupełniona o Enterprise Architecta, czyli krótką instrukcję, jak wykonać proste diagramy w tym oprogramowaniu.