Notka z badań

Ostatnio cały czas spędzam nad składaniem rozprawy i szlifowaniem tez w celu ich prezentacji. Szczerze jest to niebanalne wyzwanie. W czasie tych 3 lat, sporo się działo, powstało parę ciekawych opracowań i artykułów. Większość jest jeszcze w recenzjach. W końcu znalazłem problem badawczy, aktualnie jestem w dalszym ciągu na etapie implementacji oprogramowania do jego zbadania. Wszystko jest na papierze, teraz należy to sprawdzić w praktyce. Co z tego wyjdzie, kto wie. Chyba właśnie na tym polega nauka i badania, że do końca nie wiadomo co z tego wszystkiego wyniknie. Na początku jest mgliste pojęcie o pewnych sprawach i zjawiskach, na szczęście wraz z zawężaniem problemu, mgła niewiadomej się trochę rozwiewa. Najważniejsze jest teraz zebranie wszystkich materiałów oraz otrzymanych wyników ze wstępnych analiz w jedną całość. Nie ma co zwlekać, trzeba ruszać z powrotem do badań nad raportami.

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.

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…