Posted in php, programowanie on sierpień 3rd, 2011 by Wojciech Soczyński – 36 Comments
Pewnie zastanawiacie się co ma wspólnego Babilon z PHP i programowaniem w ogólności. Ktoś może sobie pomyśleć, że chodzi może o kryptonim jakiegoś nowego frameworka, albo też odkryłem w sobie talent prozaiczny i zamierzam pisać fantasy osadzone w czasach Hamurabiego.
read more »
Posted in php, programowanie on sierpień 2nd, 2011 by Wojciech Soczyński – 8 Comments
Od jakiegoś czasu w zbiorze propozycji nowych „ficzerów” do PHP znajduje się RFC pod tajemniczą nazwą „Weak references”. W czym właściwie jest rzecz i czym są owe „słabe referencje” ? Cały pomysł został zaczerpnięty przez autorów z Javy, C# i Pythona. Rozwiązuje on problem związany ze zwalnianiem pamięci i garbage collectorem. Problem, kiedy mamy zbyt dużo referencji do jakiś obiektów i nie zostają one nigdy zebrane przez GC. Słaba referencja, w przeciwieństwie do standardowej „mocnej” nie powoduje zwiększenia licznika ilości referencji, po którym GC rozpoznaje, czy może już dany obiekt usunąć z pamięci.
Kiedy się to może przydać ? Prosty przykład, stosujemy wzorzec obserwator. Obserwowany obiekt zwany też podmiotem rejestruje subskrybentów, których będzie powiadamiał o zmianie swojego stanu. Takich subskrybentów może być bardzo wielu. Może się zdarzyć, że któryś subskrybent mógłby już zostać usunięty z pamięci przez GC, gdyby nie ta ostatnia referencja, którą trzyma podmiot. W efekcie przy wielu obiektach subskrybentów, tracimy niepotrzebnie pamięć. Rozwiązaniem jest zastosowanie słabej referencji. Dzięki niej, w momencie, gdy wszystkie inne zewnętrzne referencje do danego subskrybenta wygasną zostanie on od razu zebrany przez GC.
Implementacja zaproponowana w RFC postuluje stworzenie klasy SplWeakRef. Jej zastosowanie będzie wymagało tylko przekazania do jej konstruktora zmiennej do obiektu, który ma być słabą referencją.
class Foo {}
$foo = new Foo; //reference count 1
$bar = $foo; //reference count 2
$slabaReferencja = new SplWeakRef($foo); //reference count 2
Jestem ciekaw co sądzicie o tej propozycji ? Osobiście wydaje mi się dość ciekawa, natomiast chyba pole zastosowań jest naprawdę bardzo małe, a potencjalnie może być ten „ficzer” bardzo niebezpieczny w rękach początkujących programistów. Osobiście zamiast tego mechanizmu, wolałbym możliwość deklarowania klas tak, by ich obiekty były przekazywane przez kopię, tak jak typy proste. Moim zdaniem dużo bezpieczniejsze rozwiązanie a efekt podobny.
Posted in php, programowanie on lipiec 20th, 2011 by Wojciech Soczyński – 3 Comments
Kilka dni temu – 14 lipca, światło dzienne ujrzała nowa odsłona PHP 5.4 – alpha 2. Można ją ściągnąć z http://downloads.php.net/stas/ w wersji „czystej” oraz z http://windows.php.net/qa/ jako binarny plik dla Windows. Kolejna alpha przewidziana jest za 3 lub 4 tygodnie, teoretycznie powinna się pojawić 4-tego sierpnia. Najważniejsze nowości jakie przyniosła ta wersja to przede wszystkim:
O innych nowościach i zmianach możecie przeczytać w logu.
Posted in php, programowanie on lipiec 19th, 2011 by Wojciech Soczyński – 5 Comments
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. read more »
Posted in php, programowanie on lipiec 15th, 2011 by Wojciech Soczyński – 7 Comments
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
. read more »