Autor wpisu: batman, dodany: 12.08.2011 09:00, tagi: javascript
W dziesiątej, jubileuszowej można by rzec, edycji rozdawania książek, mam dla was JavaScript: The Good Parts.
Książka napisana jest w języku angielskim i zawiera autograf autora – Douglasa Crockforda.
Książkę otrzyma osoba, która odpowie na pytanie: “Dlaczego JavaScript?”. Czas nadsyłania odpowiedzi do końca weekendu, czyli do końca dnia 14.08.2011.
Powodzenia!
Autor wpisu: bastard13, dodany: 12.08.2011 00:41, tagi: php
- Enkapsulacja, czyli atrybuty klas powinny być prywatne. Dlaczego? Krótko i rzeczowo jest to wyjaśnione tutaj.
- Gdy już mamy atrybuty klasy, trzeba zastanowić się do czego ta klasa będzie wykorzystywana i na tej podstawie należy zdefiniować metody publiczne, czyli te, które będą wykorzystywane przez inne klasy.
- Jeżeli nie planujesz w obecnej chwili, aby klasa była rozszerzana, to wszystkie metody, które nie są wykorzystywane poza klasą powinny być prywatne. Jeżeli zakładasz, że "może w przyszłości", to również zostaw je jako prywatne. Kod nie jest stałym bytem, może ewoluować, a więc jeżeli zajdzie potrzeba, to zawsze możesz go rozszerzyć lub zmienić.
- Jeżeli klasa będzie rozszerzana, to metodami chronionymi powinny być jedynie te, które są potrzebne w klasie pochodnej, a nie wszystkie niepubliczne.
- Jeżeli klasa pochodna powinna mieć dostęp do atrybutów klasy, do których nie ma akcesorów, to nie oznacza, że należy zmienić widoczność atrybutów na protected. To oznacza, że można dodać chronione settery i/lub gettery.
- Zastanów się trzy razy zanim podejmiesz decyzję o zmianie operatora private na protected w metodach, dziesięć razy jeżeli chcesz to zrobić z atrybutem.
- Gruntownie przemyśl decyzję o wyciągnieciu metody na zewnątrz, czyli zmianie operatora na public. Rób to tylko wtedy, gdy metoda jest rzeczywiście potrzebna poza klasą.
- Rzadko istnieje rzeczywista potrzeba zmiany operatora widoczności atrybutu z private na mniej restrykcyjny - protected. Jeszcze rzadziej zachodzi potrzeba upublicznienia atrybutu.
Autor wpisu: Kamil, dodany: 11.08.2011 17:59, tagi: javascript
Autor wpisu: batman, dodany: 11.08.2011 10:00, tagi: php
PHPFog jest chmurą dedykowaną dla PHP, oferującą możliwość bezproblemowego wdrażania i utrzymywania aplikacji. Do dyspozycji otrzymujemy predefiniowane konfiguracje dla frameworków takich jak Zend Framework, Kohana, CakePHP oraz aplikacji typu WordPress, Drupal czy Joomla. Jedyną wadą PHPFog jest jego cena, która zaczyna się od 29 dolarów miesięcznie. W cenę wliczony jest hosting aplikacji, bazy danych 100GB na transfer danych, repozytorium Git, współdzielony SSL oraz domeny typu wildcard.
Firma stojąca za PHPFog – AppFog – otrzymała dofinansowanie w wysokości 8 milionów dolarów na dalszy rozwój chmury. Pieniądze zostaną przeznaczone na poszerzenie listy obsługiwanych frameworków oraz aplikacji. Co więcej, AppFog planuje stworzenie chmury obsługującej takie technologie jak Node.js, Ruby, Python, Java oraz .NET.
Pozostaje mieć nadzieję, iż dofinansowanie pozwoli obniżyć koszt utrzymywania aplikacji w chmurze. Obecnie jedynie cena powstrzymuje indywidualnych użytkowników przed korzystaniem z chmury na większą skalę.
źródło: gigaom.com
Autor wpisu: batman, dodany: 10.08.2011 08:00, tagi: php
Nginx jest lekkim serwerem przeznaczonym do serwowania statycznych plików. Nic nie stoi na przeszkodzie, aby uruchomić na nim PHP. Co więcej, w przypadku Windowsa możemy niewielkim nakładem pracy, przygotować przenośny serwer działający nawet z pendrive’a. I co najważniejsze – nie musimy nic instalować.
Zaczniemy od pobrania Nginx, ze strony http://nginx.org/en/download.html (ściągamy najnowszą stabilną wersję dla Windowsa). Następnie pobieramy PHP w postaci archiwum ZIP – http://windows.php.net/download/. Serwer oraz PHP rozpakowujemy do katalogów nginx i php, które wcześniej utworzyliśmy w dowolnym miejscu (nawet na pendrivie).
Następnie w pliku nginx.conf, znajdującym się w katalogu nginx/conf, wyszukujemy zakomentowany blok rozpoczynający się od location ~ \.php$ { i go usuwany. W jego miejsce powinien trafić następujący kod:
location ~ \.php$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; }
I już. Serwer mamy skonfigurowany i gotowy do działania. Jedyne co musimy teraz zrobić, to uruchomić PHP by nasłuchiwało połączeń przez CGI (polecenie wydajemy w katalogu php)
php-cgi -b 127.0.0.1:9000
oraz uruchomić serwer (polecenie wykonujemy w katalogu nginx)
nginx
Teraz możemy utworzyć w katalogu nginx/html plik, np index.php, dodać do niego funkcję phpinfo() i uruchomić wpisując w przeglądarce adres http://localhost/index.php.
Autor wpisu: Śpiechu, dodany: 09.08.2011 23:25, tagi: php
W dzisiejszym odcinku weźmie udział „najwspanialszy z kiedykolwiek stworzonych silnik do walidacji danych w PHP” — Validation. Projekt rozwija groźnie brzmiąca grupa programistów o nazwie Respect z Brazylii. Mam nadzieję, że po tym wpisie nie wyląduję w lesie wyciągnięty z bagażnika jakiegoś starego Mercedesa…
Projekt spełnia normy, które są oczywiste przy czytaniu kodu takich gigantów jak Zend Framework 2 czy Symfony, a więc używanie namespaces, drzewiasta struktura klas i katalogów, kompatybilność ze standardowym autoloaderem klas SplClassLoader, własne rozszerzenia wyjątków. Jedyny zgrzyt to poziom dokumentacji. Automat raczej nie da rady w pełni wygenerować typów parametrów metod i zwracanych wartości. W nagrodę za to dostępnych jest dziesiątki testów jednostkowych. Co jak co, ale walidator sprawdzający czyjeś dane sam powinien być gruntownie sprawdzony
Powszechnie wiadomo, że w PHP nie można użyć konstrukcji typu
new Obiekt()->metoda();
Zamiast tego można stosować metody statyczne, które w rezultacie zwrócą nam obiekt lub też można zastosować tak lubianego przez was Harrego Pottera. Twórcy biblioteki czarują często i gęsto.
Autorzy Validation proponują używanie w następujący sposób:
// deklarujemy uzywany namespace i robimy alias do klasy Validator use Respect\Validation\Validator as v; // mozemy albo najpierw przygotowac obiekt walidatora $walidator = v::string()->between('a', 'c'); // albo tez bezposrednio uzywac w instrukcjach warunkowych, np. if (v::numeric()->positive()->validate($cos)) echo 'prawda'; //i potem uzywac do sprawdzania jednej z trzech metod: // zwroci tylko true albo false $walidator->validate($cos); // wypluje wyjatek z pierwszym bledem $walidator->check($cos); // wypluje wyjatek ze wszystkimi bledami $walidator->assert($cos);
Warunków, które możemy sprawdzać jest kilkadziesiąt. Można popatrzeć po plikach. Z ciekawszych to wymieniony wyżej
between()
dla zakresu znaków,
in(array('wartosc1' , 'wartosc2))
dla dozwolonych wartości oraz konstrukcja
v::each(v::warunek())->validate(array('wartosc1','wartosc2'));
dla sprawdzenia wszystkich wartości w tablicy. Ponadto można tworzyć kompozyty różnych warunków za pomocą
v::allOf($walidator1,$walidator2);
(jeżeli wszystkie muszą przejść) oraz