Ciekawe miejsca w sieci

Dzisiaj nic o rozwiązaniach tych czy innych… Dzisiaj po prostu mam do polecenia, blog kolegi po PHPowym fachu, z którym miałem możliwości i przyjemność realizować parę ciekawych projektów. Na pewno w miarę czasu znajdziecie na nim garść   informacji. Zachęcam więc do jego regularnego, mniej lub bardziej, odwiedzania. Zapiski blogowe możecie znależć na stronie http://dev.kardasz.eu/. Ponadto zachęcam do zapoznania się z przez niego rozwijanym frameworkiem w ZFie pt. Nweb Framework. Miłej lektury.

PHP – co robić gdy musimy wymusić typy

Jak wiadomo PHPe nie jest językiem o silnym typowaniu. W wyniku tego do funkcji możemy przesyłać praktycznie wszystko. Często brak wstępnego określania typu parametrów w deskryptorze metod/funkcji pogarsza jakość i czytelność kodu. Osobiście czytając czyjś kod lubię wiedzieć co przyjmuje funkcja/metoda tzn. jaki konkretny typ parametrów one przyjmują. Dość często powstaje różnego rodzaju pomieszania typów, czyli wchodzi string potem przemieniany jest na inta a na wyjściu na dodatek możemy dostać obiekt… Ponadto w PHPe pomimo bogatej proceduralnej biblioteki do obsługi łańcuchów znaków nie istnieje jej wersja obiektowa, a szkoda… Z tego też względu pokusiłem opisać szkicowe rozwiązanie umożliwiające połączenie przyjemnego z pożytecznym tj. utworzenie klasy osłonowej na typ String ułatwiającej operację na obiektach tego typu. Rozwiązanie to daje:
1. Możliwość pośredniego rzutowania na dobrze zdefiniowany typ String
2. Możliwość sprawdzania typu String przez interpreter, tego czy przekazujemy prawidłowy parametr do funkcji/metody
3. Ustala konwencję w kodowaniu i aplikacji.
W miarę możliwość w następnych dniach postaram się opisać prezentowane rozwiązanie. Póki co ograniczę się do przedstawienia samego kodu. Czytaj dalej

PHP – co robić gdy potrzeba coś przeciążyć?

Jednym z najbardziej dla mnie niekomfortowych żeczy w PHPe jest brak możliwości przeciążania czy to funkcji czy też metod w kontekście OO.  Jak wiadomo związane jest to z brakiem m.in. ścisłej kontroli typów. No cóż rzeczywistość jest jaka jest i trzeba do niej się dostosować. Najczęściej pojawiającym się zabiegiem w celu implementacji „przeciążania” metod jest użycie magicznych metod. Sposób takiej implementacji można podejrzeć w wpisie „Method Overloading in PHP5” na blogu Caught in a Web. Osobiście nie przepadam za tego rodzaju rozwiązaniami. Tak więc w wolnym czasie zacząłem główkować i kombinować jak to można by był zrobić troszkę inaczej. Z przemyśleń narodził się pomysł aby do „przeciążania”  (pseudo przeciążania) wykorzystać namespace (opis dostępny w manualu PHP oraz na stronie z poradnikami IBMa „Create better namespaces in PHP”). Pomysł bazuje na prostych zasadach:

– wykorzystaniu  bazowej przestrzeni nazw dla metod podstawowych które będą przeciążane, zaimplementowane lub nadpisane w klasach potomnych. Najlepiej wykorzystać abstrakcje,

– wykorzystaniu predefiniowanych przestrzeni nazw  do enkapsulacji przeciążanych klas i ich metod,

– zamknięcie przestrzeni bazowej i predefiniowanej w jednym pliku (daje to swego rodzaju konwencję utrzymania kodu i jego standaryzację w obrębie realizowanego projektu). Ewentualnie można odpowiednio sobie porozbijać klasy na pliki. Opisu tego rozwiązania jednak nie dokonałem i jedynie skupiłem się na podstawowej strukturze – jeden plik.

Przykładową implementację całości rozwiązania bazującego na ww. zasadach przedstawiłem poniżej. Miłego czytania i zapoznawanie się z pomysłem.  Czytaj dalej

Web services dla PHP

Właśnie, web serwisy ważna technika w codziennej pracy programistycznej… Właśnie sobie przypomniałem, że istnieje framework dla PHPa to tworzenia web serwisów i generowania WSDLa z odpowiednio otagowanej klasy. Bliższe szczegóły możecie znaleźć na stronie WSF PHP | WSO2, natomiast mały wstęp pokazujący co i jak i w dodatku po polsku można odnaleźć na „Jak napisać w PHP własny Web Service korzystając z rozszerzenia WSF / WSO2.”. Powodzenia i miłego programowania.

Do generowania WSDLa podobno nadaje się Webservice Helper znajdujący się na jool.ln ale tego rozwiązania nie stosowałem, jeśli ktoś miał z nim do czynienia to zachęcam do podzielenia się doświadczeniem.

Korpusy, korpusiki czyli języka polska i nie tylko

Jako, że zajmuje się w głównej mierze ostatnio analizą i przetwarzaniem tekstów także chciałbym podać jak zawsze kilka ciekawych miejsc które warto odwiedzić i na których odnaleźć będzie można dalsze szczegółowe informacje na niniejszy temat.  Jednym z takich miejsc jest strona o korpusach polskich i nie tylko. Dowiecie się na niej czym one są i do czego służą, więcej informacji na http://www.korpusy.net/. Jak już dokonamy zapoznania się z informacjami o korpusach warto też do swego przybornika dorzucić takie narzędzia jak lematyzer. Jest to nieocenione narzędzie w analizie tekstów polskich. Na szczęście takie narzędzie jest dostępne na rynku, więcej szczegółów na blogu Dawida Weissa. Odnajdziecie na nim zagadnienia związane z analizą korpusów języka polskiego. Jeśli dalej nasza analiza ma dotyczyć płytkiego przetwarzania i analizy tekstu to polecam darmowe pakiety do eksploracyjnej analizy danych: Weka oraz i rapidminer.  Pakiety te są dobrze opisane istnieje do nich bogata literatura oraz poradników wszelkiej maści wraz z rozbudowaną platforma użytkowników która doradza na forach. Zachęcam do zapoznania się z zagadnieniami analizy tekstów.

Testowanie ZF

Blog i wpis warty polecenia – jak pisać unit testy i testować ZFa. Lektura warta uwagi i prześledzenia – „Automated Testing Using Zend Framework, Part 1

Dobre nawyki programowania w PHP

Co prawda już trochę „wiekowy” artykuł, ale wart polecenia ze względu, że rozwiązania tam przedstawione są ponad wiekowe. Polecam więc zapoznać się z zawartością artykułu „7 dobrych obiektowych nawyków dla programistów PHP„. Zachęcam do zaznajomienia się z pozostałą bazą artykułów dotyczącą programowania na serwisie IBM.

MongoDB słów parę kilka

Przy projektowaniu baz danych w szczególności dla większych i bardziej złożonych projektów, przydają się narzędzia graficzne czy to do projektowania bazy czy też administracji. Aktualnie dla MongoDB są dostępne cztery narzędzia do administrowania i zarządzania tą bazą danych, są nimi:

– konsola MongoDB – odpowiednik konsol postgreSQL czy MySql

– GitHub – służy do wizualizacji i zarządzania klastrami

– futon4mongo

– phpMoAdmin – coś na wzór popularnego phpMyAdmin

Bliższe szczegóły i linki do ww. projektów można znaleźć w poście A Couple of Nice GUI Tools for MongoDB.

Dodatkowo, szperając po sieci odnalazłem wzmiankę na temat obiektowego mapowania dokumentów do MongoDB przez Doctrine 2.0. Zainteresowanych odsyłam na stronę bloga Doctrine MongoDB Object Document Mapper.

mongoDB czyli nie relacyjna baza danych

Ciekawych rozwiązań projektowym pośrednim między ang. key/value stores a relacyjnymi bazami danych jest projekt mongoDB. Natknąłem się na niego czytając post „ORMs and relational databases: powerful tools or dumb ideas?”. Jak zawsze zachęcam do zapoznania się z materiałami na temat tego rozwiązania. Bliższe szczegóły na temat projektu i jego zastosowania można znaleźć na stronie producenta mongoDB jak i szperając po wyszukiwarkach, polecam „marchewkę„. Poniżej podaję też namiary na parę interesujących   wpisów, artykułów na temat mongoDB:

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

Zarządzanie danymi w bazie MongoDB

MongoMapper Indy.rb Presentation

Postscriptum osobiście mażę o obiektowej bazie danych dla PHPa aby można było porzucić różnego rodzaju  ORMy i składować swoje modele biznesowe prosto do bazy danych bez mapowania, tak jak to mogą robić programiści w JAVIE lub C# w bazie db4o. Póki co jednak zostają ORMy lub mosty między PHPem a JAVa myślę jednak, że to jeszcze nie to…

Książkowe de ja vu

Właśnie przeżyłem de ja vu czytając Beginning Databases with PostgreSQL: From Novice to Professional, Second Edition (Beginning from Novice to Professional) autorstwa Neil Matthew i Richard Stones. Książka jest utrzymana na dobrym poziomie. Wszelkie zagadnienia związane z bazą postrgreSQL wyjaśnia bardzo przejrzyście. Dostępny jest kod oraz jego opis. Nie brakuje także porad samych autorów co do stylu oraz tworzenia baz danych. Dla osoby zaczynającej przygodę z postrgreSQL pozycja jak najbardziej obowiązkowa. Niemniej czytając ją miałem uczucie, że zawarte w niej treści już gdzieś widziałem i czytałem. Moje przeczucie mnie nie zawiodło, książka jest utrzymana w tym samym stylu oraz układzie treści jak inna pozycja literaturowa obu ww. autorów a mianowicie Bazy danych i MySql od podstaw która jest dostępna w polskiej wersji językowej. Do zapoznania się z jej treścią również zachęcam. Czytelnicy zaczynający przygodę z bazami danych zarówno z MySQL jak i postgreSQL nie powinni być zawiedzeni czytając obie wymienione wyżej pozycje literaturowe a Ci bardziej zaawansowani zawsze mogą się czegoś dodatkowego dowiedzieć i pogłębić swoją wiedzę. W tym drugim przypadku jednak mogą to być tylko pewne momenty w których myśli się o swoich aplikacjach w stylu: „faktycznie tak można to było napisać”, „to można było by zastosować” etc. Niemniej myślę, że książka ta powinna znaleźne się na półce domowej biblioteczki specjalisty jako dobre dopełnienie elektronicznych manuali, internetowych for oraz blogów specjalistów.