MongoDB – Ruch NoSQL przyszłością baz danych?

Każdy z nas korzystał już chyba z relacyjnych baz danych. Nawet jeżeli nie było to MySQL, PostgreSQL czy Oracle to prawdopodobnie spotkaliście się z nimi na zajęciach z informatyki, gdzie był prezentowany Microsoft Access. Nie sposób przedstawić zalet i korzyści wynikających z teorii relacyjnych baz danych i matematycznego podejścia do przechowywania danych.

Niestety czekają nas także liczne ograniczenia. Mnie osobiście zawsze bolało zderzenie obiektowych systemów z relacyjnymi danymi, gdzie bardzo często dochodziło do zastosowania ORM-a (nigdy nie lubiłem, nie lubię i chyba już nie polubię tego rozwiązania nawet pomimo tego, że Doctrine 2.0 szykuje się całkiem smakowicie). Nie przedłużając zbytnio, w końcu wyłoniła się grupa przeciwników systemów RDBMS i standardu SQL z takimi projektami jak Amazon SimpleDB, Cassandra (używane przez Facebook i wkrótce także Digg), CouchDB czy MongoDB.

Continue reading

Posted in Bazy danych, Biblioteki, MongoDB, MySQL, Narzędzia, PHP | 10 Comments

Zanim włączysz edytor

Aby nasz kod stawał się coraz lepszy, elastyczniejszy, bardziej przejrzysty powinniśmy stosować wiele różnych narzędzi. Ich dobór powinien zależeć od wymagań projektu, gdyż nie zawsze potrzebujemy wytaczać armaty na proste Hello World. Generalnie ich dobór w dużej mierze będzie zależał od docelowego odbiorcy. Projekty możemy podzielić na 3 główne grupy:

  • własne – pisane na potrzeby chwili, do rozwiązania dręczących nas problemów
  • na zlecenie – pisane w pojedynkę, ale gdzie wpływ na naszą pracę ma zewnętrzna osoba
  • pisane w grupie – czy OpenSource, czy komercha, nasz kod wpływa na innych, a kod innych na nasz

Można to także traktować jako swego rodzaju rozwój. Jako młodzi adepci sztuki programowania zaczynamy od dłubania w domowym zaciszu, powoli otwieramy się na świat i przyjmujemy nowe wyzwania. Rozwija się także nasz warsztat. Problem jedynie w tym, żeby przechodząc między poszczególnymi poziomami nie kastrować siebie jako programisty. Bo jasnym jest, że wielokrotnie będziemy chodzili w górę i w dół tej listy.
Continue reading

Posted in Dobre nawyki, Narzędzia, Organizacyjne, PHP | Leave a comment

Szczęśliwego Nowego Roku

a co by był lepszy niż poprzedni: wydrukować i powiesić na ścianie. Wzorce projektowe GoF w pigułce. Niech Wasz kod elastyczniejszym będzie.

Posted in PHP, Wzorce projektowe | 1 Comment

Design by contract

Dla osób znających temat z innych języków, tytuł może wydawać się nieco na wyrost. PHP nie ma takich narzędzi, by móc ten język nazwać w 100% zgodnym z podejściem programowania kontraktowego. Przynajmniej nie w rozumieniu znanym z implementacji Eiffel czy D 2.0.

Możecie się ze mną zgodzić lub też nie, opinie w światku są różne, jednak dla mnie „zakontraktowanie” funkcjonalności elementu to najzwyklejszy interfejs. W taki sposób podejście „design by contract” postrzegam nie tylko ja, ale także ludzie zorganizowani wokół Zend Framework w wersji 2.0.

Continue reading

Posted in Dobre nawyki, PHP, Projektowanie, Teoria, Wzorce projektowe | 6 Comments

Dependency Injection Container

Kiedy przychodzi zarządzać coraz większą i większą ilością obiektów (pomyśl o frameworkach czy CMS-ach) bardzo szybko możemy zaobserwować pewną niedoskonałość wstrzykiwania zależności z zewnątrz. Musimy za każdym razem inicjować obiekt i zadbać o część jego funkcjonalności. Gdy zaczynamy się z tym borykać w wielu miejscach aplikacji czas pomyśleć o kolejnym kroku – Dependency Injection Container.

Continue reading

Posted in Biblioteki, Dobre nawyki, PHP, Projektowanie, Teoria, Wzorce projektowe | 1 Comment

Dependency Injection

To co odróżnia programistę od dobrego programisty to umiejętność projektowania aplikacji, przewidywania drogi, jaką pójdzie rozwój projektu i pozostawienie sobie furtki do łatwych modyfikacji w przyszłości. Początkujący bardzo często mylą sobie naukę programowania z nauką tworzenia dobrego kodu. Szczególnie widoczne jest to wśród programistów PHP, gdzie do nauczenia się podstaw języka wystarczy kilka wieczorów. Dzisiaj chciałbym rozpocząć serię postów, które mam nadzieję pomogą przy tworzeniu takiego kodu, który będzie łatwo utrzymać i wykorzystać w przyszłych projektach.

Zakładam, że czytelnik zaznajomiony jest z ideą OOP. Wie, co to klasy, obiekty, metody. Wie, co powinna reprezentować sobą klasa, a co obiekt.

Continue reading

Posted in Dobre nawyki, PHP, Projektowanie, Teoria, Wzorce projektowe | 4 Comments

Inne podejście do testowania – lime 2

Zauważyłem, że w ostatnim czasie darzę dziwnym uwielbieniem projekty spod skrzydeł Fabiena Potenciera. I chociaż symfony 1 nie lubię, nie lubię przyjętej przez Sensio Labs konwencji nazewniczej (sfCamelCase) to ich najnowsze produkty zmierzają dokładnie w takim kierunku, w jakim widziałbym szansę dla PHP. Mieliście o Twigu, mieliście wzmiankę o Templating Component który znajdzie zastosowanie w Symfony 2, odwoływałem się trochę do Doctrine.

A dziś przyszedł czas na odświeżony framework do testowania – lime. I polecam go nie z powodu uwielbienia dla bibliotek wyżej wspomnianej firmy, ale dlatego, że to nieco inne podejście do testów, jakie znamy w PHP Continue reading

Posted in Biblioteki, Nowinki, PHP | Leave a comment

Systemy szablonów

Gdyby ktoś dwa dni temu zapytał mnie o system szablonów w PHP prawdopodobnie użyłbym wszystkich poznanych środków perswazji, aby „wyleczyć” go z takich bibliotek. Zarzekałem się, że PHP zostało stworzone do wypełniania HTML-a danymi i że tak naprawdę nic więcej nie potrzeba. A to, że w głębi duszy przeklinałem każdy dzień spędzony przy tworzeniu szablonów niespecjalnie wpływało na moją opinię. Nie wiem, jakaś męka w imię wyższej sprawy czy coś.

W każdym razie ten stan minął po przeczytaniu ostatniego wpisu na blogu Fabiena Potenciera (twórca symfony, a także wielu świetnych komponentów które znajdują u mnie zastosowanie na co dzień – o tym jednak w innym wpisie). Czy jesteście zwolennikami ułatwiania sobie życia takimi metodami, czy też uważacie za bezsensowną naukę kolejnego „języka”, naprawdę gorąco zachęcam do przeczytania. Continue reading

Posted in Biblioteki, PHP, Teoria | 5 Comments

Czym jest REST?

W ostatnim czasie ciężko przeoczyć dumne nagłówki krzyczące o kolejnych RESTfulowych aplikacjach czy frameworkach. Zapewne zastanawiasz się, czy możesz wpleść styl REST (Representational State Transfer) w swoją aplikację i jakie będą tego wymierne korzyści? Odpowiedź na pierwsze pytanie brzmi – oczywiście, ale raczej tylko wtedy, gdy Twoja aplikacja otwiera się na świat dzięki zewnetrznemu API. Dostosowując je do tego stylu z pewnością ułatwisz pracę programistom chcącym wnieść coś do Twojego projektu.

Continue reading

Posted in PHP, Teoria | 4 Comments

Nowości PHP 5.3: $class::staticMethod()

Przyjemne usprawnienie napotkane zupełnie przypadkiem (chociaż ten już nie był taki miły). Dotychczas, chcąc wywołać statyczną metodę klasy, której nazwę mieliśmy zapisaną w zmiennej, musieliśmy to zrobić w niezbyt elegancki sposób:

<?php
class MyClass {
  static public function staticMethod() { echo "Hello!"; }
}

$class = 'MyClass';
call_user_func(array($class, 'staticMethod'));

// As of 5.2.3
call_user_func($class . '::staticMethod');

Udogodnienie dostarczone z aktualizacją pozwala nam zrobić to w znacznie przyjaźniejszy i bardziej naturalny sposób.

$class::staticMethod();
Posted in Nowinki, PHP | Leave a comment