Mateusz Kamiński

  • Permalink for 'Mateusz_Kami__ski/2011/07/11/Zend_Framework_1.11.8'

    Zend Framework 1.11.8

    Dodany: lipiec 11, 2011, 11:12am CEST przez matipl

    Zend FrameworkBardzo lubię wprowadzony w zeszłym roku Bug Hunt Days organizowany przez zespół ZF co miesiąc.

    Dzięki polowaniu na błędy 7 lipca ukazała się kolejna wersja Zend Framework. Tym razem naprawiono prawie 40 błędów w frameworku.

    Czy jest sens być na bieżąco? Oczywiście, aktualizacje w ramach tej samej gałęzi są bardziej ważne, niż aktualizacja wersji głównej.

    W Zend Framework 1.11.8 odkryto np. że nie zawsze poprawnie działa Zend_Session::regenerateId. Poprawiono również problem w Zend_Validate, który zwracał fałsz gdy adres e-mail kończył się kropką (mało spotykane przypadek, ale jednak).

    Changelog 1.11.8

    Download ZF 1.11.8

  • Permalink for 'Mateusz_Kami__ski/2011/05/09/Zend_Framework_1.11.6'

    Zend Framework 1.11.6

    Dodany: maj 9, 2011, 9:40am CEST przez matipl

    Zend FrameworkPrzed weekendem zespół Zend Framework wydaÅ‚ kolejny zestaw Å‚at dla frameworka – 1.11.6 oraz kilka krytycznych z linii 1.10 (.9). Kolejny efekt polowania na błędy…

    Najpoważniejszy poprawiony błąd to błąd bezpieczeństwa, który dotyczy MySQL PDO w Zend_DB. Błąd pojawił się wraz z PHP 5.3.6+ i umożliwiał SQL Injection poprzez przekazywanie dowolnych znaków do DSN (więcej informacji).

    Poza tym z ważniejszych problemów naprawiono:

    • Zend_Config_Yaml (nie ignorowano komentarzy)
    • błąd w routowaniu, gdy URL posiadaÅ‚ zakodowany slash
    • helper Redirector posiadaÅ‚ hardkodowane parametry akcja/moduÅ‚/kontroler
    • insert() nie zwracał last_insert_id w przypadku pustego istniejÄ…cego klucza w insert data
    • uporano siÄ™ z brakami dot. IPv6 (np. w Zend_Validate_Hostname).

    I wiele innych. W sumie w Zend Framework 1.11.6 naprawiono ponad 60 błędów. Dla ciekawskich pełny changelog.

  • Permalink for 'Mateusz_Kami__ski/2011/02/08/Zend_Framework___obs%c5%82uga_wielu_j%c4%99zyk%c3%b3w'

    Zend Framework ? obsługa wielu języków

    Dodany: luty 8, 2011, 9:01am CET przez matipl

    Zend Framework Wstępnie chciałem napisać o lokalizacji, aby zaprezentować Wam jak można wykorzystać application.ini zamiast tworzyć własne zasoby (resource). Ale z drugiej strony może nie każdy wie jakie to proste w dzisiejszych czasach zrobić serwis wielojęzyczny z tłumaczeniem nie tylko statycznych napisów, ale również nawigacji czy lokalizacją kwot.

    Do tłumaczeń korzystam z gettext (pliki .mo i .po). Moje pliki językowe znajdują się w project/languages i wygląda to tak:

    matipl@host:~/project/languages$ ls
    en_GB.mo  en_GB.po  pl_PL.mo  pl_PL.po
    

    Gdy mamy stworzone własne tłumaczenia pora na skonfigurowanie zasobu translate w application.ini:

    resources.translate.registry_key   = "Zend_Translate"
    resources.translate.adapter        = "gettext"
    resources.translate.content        = APPLICATION_PATH "/../languages/"
    resources.translate.options.scan    = "filename"
    resources.translate.disableNotices = false
    resources.translate.options.logUntranslated = false
    resources.translate.locale        = "pl_PL"
    

    W ten oto sposób możemy już korzystać z plików lokalizacyjnych opartych o Zend_Translate (skonfigurowany zasób znajduje siÄ™ w Zend_Registry::get(‘Zend_Translate’)). Niestety nie wie on z jakiej wersji jÄ™zykowej (pl czy en) chcemy skorzystać.

    W tym celu stworzyłem plugin Zextend_Controller_Plugin_Locale, który pobiera wybrany (lub domyślny) język użytkownika i konfiguruje Zend_Translate. Dodatkowo mówimy widokowi i nawigacji, że ma się wspierać przez Zend_Translate z tym konkretnym językiem, który skonfigurowaliśmy.

    class Zextend_Controller_Plugin_Locale extends Zend_Controller_Plugin_Abstract
    {
    
        public function routeShutdown(Zend_Controller_Request_Abstract $request)
        {
            $view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
            $locale = new Zend_Locale(Zextend_Lang::getActiveLang());
            Zend_Registry::set('Zend_Locale', $locale);
    
            $translate = Zend_Registry::get('Zend_Translate');
            $translate->setLocale($locale);
    
            $view->getHelper('translate')->setTranslator($translate);
            $view->navigation()->setTranslator($translate);
    
            Zend_Form::setDefaultTranslator($translate);
    
            Zend_Registry::set('Zend_Translate', $translate);
    
        }
    
    }
    

    Na koniec wystarczy włączyć nasz plugin w application.ini:

    resources.frontController.plugins.locale = "Zextend_Controller_Plugin_Locale"
    

    Teraz możemy już swobodnie korzystać z tłumaczeń na naszej stronie, np. w widoku wywołując:

    <h2><?php echo $this->translate('Contact') ?></h2>
    

    Dla sÅ‚owa „Contact” musimy mieć oczywiÅ›cie odpowiedni wpis w plikach *.po. Dla wersji PL:

    msgid "Contact"
    msgstr "Kontakt"
    

    Po stworzeniu tłumaczenia pamiętajmy o wygenerowaniu pliku .mo komendą: msgfmt -o pl_PL.mo pl_PL.po.

    Na koniec dodam, że w danych czasach sporo rzeczy robiłem poza application.ini. Chociażby przeciążałem zasób Db, aby wprowadzić SET NAMES UTF8, czy też w index.php wpisywało się dyrektywy PHP. A obecnie?

    resources.db.adapter          =  "pdo_mysql"
    resources.db.params.host      =  "db-1.project.pl"
    resources.db.params.username  =  "project"
    resource.db.params.password    = 'password'
    resources.db.params.dbname    =  "project"
    resources.db.isDefaultTableAdapter = true
    resources.db.params.driver_options.1002 = "SET NAMES UTF8;"
    
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    
  • Permalink for 'Mateusz_Kami__ski/2011/02/06/Zend_Framework___wersja_mobilna'

    Zend Framework ? wersja mobilna

    Dodany: luty 6, 2011, 1:26pm CET przez matipl

    Zend FrameworkW październiku 2010 roku wspominałem Wam, że wraz z pojawieniem się Zend Frameworka w wersji 1.11.0 ułatwiono nam dostosowanie aplikacji opartej o ZF dla moblinych przeglądarek.

    Dzięki pomocy Raphaela w frameworku pojawiły się m.in. Zend_Http_UserAgent oraz Zend_View_Helper_UserAgent. Dzisiaj chciałbym szybko Wam pokazać jak w łatwy sposób wykryć czy mamy doczynienia z mobilną przeglądarką (zbliża się wersja bilancio dla mobilnych).

    WURFL, czyli powtarzamy kroki z manuala

    Zasób UserAgent korzysta z zewn. biblioteki – WURFL (Wireless Universal Resource File). ÅšciÄ…gamy wersjÄ™ 1.1 i rozpakowujemy w dowolnym miejscu. W naszej aplikacji tworzymy /library/wurfl-php-1.1 i kopiujemy tam katalog WURFL (reszty ze Å›ciÄ…gniÄ™tej paczki tutaj nie potrzebujemy).

    Aby zakończyć ten krok musimy jeszcze skopiować plik z informacjami o urządzeniach mobilnych. Plik wurfl-latest.zip znajduje się w paczce, w ścieżce tests/resources/. Tworzymy katalog w naszej aplikacji /data/wurfl oraz /data/wurfl/cache (w tym miejscu będzie przechowywał zawartość pliku zip). Do /data/wurfl kopiujemy plik wurfl-latest.zip (kopiujemy również web_browsers_patch.xml). W skrócie (project to nazwa naszego projektu ZF):

    
    wget "http://downloads.sourceforge.net/project/wurfl/WURFL%20PHP/1.1/wurfl-php-1.1.tar.gz?r=&amp;ts=1296984042&amp;use_mirror=sunet" -O wurfl-php-1.1.tar.gz
    
    tar -xvf wurfl-php-1.1.tar.gz
    
    mkdir project/library/wurfl-php-1.1
    
    mkdir project/data
    
    mkdir project/data/wurfl
    
    mkdir project/data/wurfl/cache
    
    chmod a+w project/data/wurfl
    
    cp -R wurfl-php-1.1/WURFL project/library/wurfl-php-1.1/
    
    cp wurfl-php-1.1/tests/resources/wurfl-latest.zip project/data/wurfl
    
    cp wurfl-php-1.1/tests/resources/web_browsers_patch.xml project/data/wurfl
    
    Konfiguracja WURFL

    Pliki mamy skopiowane, skonfigurujmy teraz samego WURFL. Zróbmy to wg tutorialu:

    <?php
    $resourcesDir            = dirname(__FILE__) . '/../../data/wurfl/';
    
    $wurfl['main-file']      = $resourcesDir  . 'wurfl-latest.zip';
    $wurfl['patches']        = array($resourcesDir . 'web_browsers_patch.xml');
    
    $persistence['provider'] = 'file';
    $persistence['dir']      = $resourcesDir . '/cache/';
    
    $cache['provider']       = null;
    
    $configuration['wurfl']       = $wurfl;
    $configuration['persistence'] = $persistence;
    $configuration['cache']       = $cache;
    

    Konfiguracja chyba jest jasna? Wskazujemy głównie miejsca plików, które wcześniej kopiowaliśmy.

    Na koniec konfiguracja projektu Zend Framework. Jak ostatnio wspominaÅ‚em we wpisie Zend Framework i Symfony – subiektywnie, obecnie jesteÅ›my w stanie zrobić wiÄ™kszość w application.ini. W takim razie dodajmy do niego informacjÄ™, że chcemy skorzystać z UserAgent i powiedzmy, gdzie umieÅ›ciliÅ›my WURFL, który jest odpowiedzialny za „rozszyfrowanie” danych o urzÄ…dzeniu mobilnym:

    resources.useragent.wurflapi.wurfl_api_version = "1.1"
    resources.useragent.wurflapi.wurfl_lib_dir = APPLICATION_PATH "/../library/wurfl-php-1.1/WURFL/"
    resources.useragent.wurflapi.wurfl_config_file = APPLICATION_PATH "/configs/wurfl-config.php"
    

    W tym momencie zasób UserAgent już działa i możemy z niego korzystać.

    Plugin

    Nasza cała aplikacja ma uwzględniać urządzenia mobilne dlatego stworzymy plugin, który w przypadku wersji mobilnej zmieni nam layout na mobilny:

    class Zextend_Controller_Plugin_Mobile extends Zend_Controller_Plugin_Abstract
    {
    
        public function routeShutdown(Zend_Controller_Request_Abstract $request)
        {
            $bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
            $userAgent = $bootstrap->getResource('useragent');
            $device = $userAgent->getDevice();
            if($device->getType() == 'mobile') {
                Zend_Layout::getMvcInstance()->setLayout('mobile');
            }
        }
    }
    

    $device udostępnia nam nie tylko typ urządzenia (getType()), ale również jego szerokość ekranu (getPhysicalScreenWidth());
    W bilancio będzie to po prostu przekierowanie na osobą domenę (pobierana z application.ini z app.mobileUrl), ponieważ udostępniona funkcjonalność będzie różnić się od standardowej wersji:

    class Zextend_Controller_Plugin_Mobile extends Zend_Controller_Plugin_Abstract
    {
    
        public function routeShutdown(Zend_Controller_Request_Abstract $request)
        {
            $config = Zend_Registry::get('config');
            $bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
            $userAgent = $bootstrap->getResource('useragent');
            $device = $userAgent->getDevice();
            $mobileUrl = $config->app->mobileUrl;
            if($mobileUrl && $device->getType() == 'mobile') {
                $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
                $redirector->setGoToUrl($mobileUrl);
                $redirector->redirectAndExit();
            }
        }
    }
    

    Zaznaczę, że dla obsułgi wurfl-latest.zip potrzebujemy rozszerzenia ZIP w PHP. Możemy plik rozpakować, ale wtedy nie skorzystamy z cachowania.

  • Permalink for 'Mateusz_Kami__ski/2011/02/03/Symfony_i_Zend_Framework___subiektywnie'

    Symfony i Zend Framework ? subiektywnie

    Dodany: luty 3, 2011, 10:05am CET przez matipl

    Zend FrameworkPrzed majem 2010 roku w świecie PHP poruszałem się głównie z pomocą Zend Frameworka. Kilka lat wcześniej był to autorski framework (netEngine) oraz firmowe frameworki. Z perspektywy czasu uważam, że złe było rozwijanie własnych narzędzi, zamiast pomóc społeczności. Taki zbiorowy projekt jest świetny:

    • bardzo szybko rozwijany
    • zawsze znajdziesz osobÄ™, która zna framework (a Twój lub firmowy?)
    • spora baza tutoriali w Sieci
    • popularny = groźny (wykryta dziura w Australii może spowodować ciężki tydzieÅ„ w Twojej firmie)

    Od maja pracujÄ™ głównie z wykorzystaniem Symfony (1.4). Z mojego punktu widzenia przedstawia on odmienne podejÅ›cie do sprawy. W Symfony da siÄ™ sporo rzeczy ustawić z góry, dobry cmd line, a mnóstwo mamy out of box. Ale rozwijanie Symfony o wÅ‚asne dodatki czy helpery nie jest przyjemnoÅ›ciÄ…. Symfony odbieram jak takiego WordPressa – sprawdza siÄ™, ale jego kod pozostawia wiele do życzenia (przeplatanie jÄ™zyka proceduralnego z obiektowym).

    Najgorszy minus Symfony 1.4 ? Mimo, że jest długo na rynku i jest najnowszą stabilną wersją Sieć prawie o nim milczy poza oficjalną dokumentacją. Jeśli przyjdzie zmierzyć się Tobie z nietrywalnym problemem lepiej od razu przejrzeć kod źródłowy frameworka niż szukać w Google.

    Od grudnia znów pracujÄ™ z Zend Framework, przy okazji projektu bilancio. Wrażenia ogólne – bosko, w koÅ„cu czujÄ™ siÄ™ jak w domu. Mam tyle obiektów ile dusza zapragnie. A Google bardzo jest pomocne. Najgorszy byÅ‚ poczÄ…tek przy powrocie z Symfony.

    Nadal nie widzÄ™ dobrze opisanego application.ini w Sieci, a można obecnie przez niego pozbyć siÄ™ nadpisywania wiÄ™kszoÅ›ci zasobów (ach czasy ZF < 1.0). Dodatkowo wydaje mi siÄ™, że formularze w Symfony „szybciej mi szÅ‚y”. Chociaż irytujÄ…ce jest, że w wiÄ™kszoÅ›ci wypadków wypluwaÅ‚ inputy, zamiast peÅ‚nego tagu form (Å‚atwiej obudować w ZF jak siÄ™ potrafi). No i te magiczne url_for() w Symfony (w zależnoÅ›ci od parametru wywoÅ‚uje rózne inne funkcje).

    Po pierwszym tygodniu pracy z Zend Framework nie chcę się z nim znów rozstawać, Symfony to naprawdę nieprzyjemne środowisko. A przy okazji projektów ZF może w końcu zacznę dzielić się jakimiś drobnostkami z Wami. Zobaczymy czy czas pozwoli (jak widać po blogu tutejszym ostatnio mi go brak).

    PS: Przed wczoraj został opublikowany Zend Framework w wersji 1.11.3 (30 załatanych dziur).

  • Permalink for 'Mateusz_Kami__ski/2010/12/01/Zend_Framework_1.11.1_i_WordPress_3.0.2'

    Zend Framework 1.11.1 i WordPress 3.0.2

    Dodany: grudzieñ 1, 2010, 8:09am CET przez matipl

    Zend FrameworkNo proszę, mimo czarnego listopada w Polsce na sam koniec miesiąca ukazała się połatana wersja Zend Frameworka oraz WordPressa.

    Wczoraj wieczorem ukazaÅ‚a siÄ™ wersja Zend Framework 1.11.1 (changelog) zawierajÄ…ca wyłącznie Å‚aty na znalezione błędy – łącznie 80. Nowa wersja ZF rozwiÄ…zuje m.in. problem z routingiem, poprawia obsÅ‚ugÄ™ YAML, włącza obsÅ‚ugÄ™ memcached w Zend_Cache_Backend.

    Tego samego polskiego wieczoru ukazaÅ‚a sie poprawiona wersja WordPressa z linii 3.0 – WordPress 3.0.2. Tak jak w ZF skupiono siÄ™ tutaj wyłącznie na Å‚ataniu znalezionych błędów. W sumie poprawiono 10 błędów (lista zmian), w tym dość ważny – poprawienie problemu zabezpieczeÅ„, w przypadku gdy użytkownik z poziomem Autor mógÅ‚ zdobyć dostÄ™p do serwisu. Obecnie nie ma jeszcze aktualizacji dla polskiej wersji.

    Wszystkim dotychczasowym użytkownikom ZF 1.11 oraz WordPress 3.0 zalecam aktualizację.

    Aktualizacja (3 grudnia 2010)

    W Sieci pojawiÅ‚y siÄ™ już pierwsze opisy jak wykorzystać dziurÄ™ w WordPress, gdy posiadamy tylko uprawnienia autora – WordPress: Information Disclosure via SQL Injection Attack

  • Permalink for 'Mateusz_Kami__ski/2010/11/03/Zend_Framework_1.11.0_ju%c5%bc_jest_'

    Zend Framework 1.11.0 już jest!

    Dodany: listopad 3, 2010, 7:43am CET przez matipl

    Zend FrameworkBardzo szybko moje zapowiedzi z października się ziściły. Oto wczoraj wieczorem zespół Zend Frameworka wydał finalną wersję 1.11.0.

    Jak pisałem już wcześniej głowną nowością jest obsługa urządzeń mobilnych przez ZF. Jest to tak naprawdę przymiarka do tego co będziemy mogli osiągnąć (alternatywne szablony, obrazki itp.).

    W ekipie ZF pojawiło się wiele świeżości dzięki nowym osobom. I tak oto stworzono Zend_Cloud odpowiedzialne za obsługę SimpleCloud API (wsparcie dla Amazona i Windows Azure).

    Jak wspominałem w październiku w tej wersji skupiono się bardzo na bezpieczeństwie. Naprawiono wiele miejsc z możliwymi dziurami do wykorzystania (np. za pomocą Remote Timing Attack).

    Do tego dodano obsługę Dojo, SimpleDB, eBay Findings API.

    W oficjalnej wersji zawarto również obsługę dodatkowych formatów konfiguracyjnych: Yaml i JSON. Programiści Zend Framework mają w wersji 1.11 morze możliwości do wykorzystania. I to jest piękne.

    Download: Zend Framework 1.11.0

  • Permalink for 'Mateusz_Kami__ski/2010/10/15/Zend_Framework_1.11_krok_w_przysz%c5%82o%c5%9b%c4%87'

    Zend Framework 1.11 krok w przyszłość

    Dodany: pa¼dziernik 15, 2010, 12:13pm CEST przez matipl

    Zend FrameworkKto by przypuszczał, że Zend Framework 1.11 wniesie tyle świeżości.

    Wczoraj została udostępniona jako wersja BETA1 i robi spore wrażenie.

    Wsparcie dla wersji mobilnych (Mobile Support)

    Prawdziwa rewolucja. Zend Framework 1.11 posiada wsparcie dla urzÄ…dzeÅ„ mobilnych. Wszystko za sprawÄ… Raphael Carles (CTO Interakting), który napisaÅ‚ Zend_Http_UserAgent. Nowy komponent ma za zadanie wykryć User-Agent’a oraz na tej podstawie sprawdzić możliwoÅ›ci urzÄ…dzenia mobilnego. W Å‚atwy sposób można dopisać backendy dla kolejnych urzÄ…dzeÅ„.

    Dzięki wtyczce dla Zend_Application oraz Zend_View_Helper_UserAgent w łatwy sposób możemy dostosować generowane dane wyjściowe z uwzględnieniem urządzenia, dla którego serwujemy tą treść (różne layouty, obrazki itp.).

    Zend_Cloud: SimpleCloud API

    Podczas ZendCon 2009 ogłoszono prototyp SimpleCloud API. W tej wersji mamy pierwsze oficjalne wsparcie od strony Zend Frameworka zawarte w Zend_Cloud. Dzięki temu możemy w chmurze korzystać z:

    • Document Services (Amazon SimpleDB i Windows Azure’s Table Storage)
    • Queue Services (Amazon Simple Queue Service, Windows Azure’s Queue Service, Zend_Queue)
    • Storage Services (S3, Windows Azure’s Blog Storage, Nirvanix, lokalny system plików).

    W ten prosty sposób możemy przenośić swoje dane pomiedzy różnymi adapterami. W ciągu kilku miesięcy powinny pojawić się kolejne adaptery.

    Podziękowania dla: Wil Sinclair and Stas Malyshev, którzy zainicjowali Zend_Cloud

    SimpleDB Support

    Od teraz ZF ma wsparcie dla Simple Storage Service (S3), Simple Queue Service (SQS), oraz Elastic Cloud Compute (EC2). Jest wprowadzona obsługa wszystkich operacji na SimpleDB poprzez Zend_Service_Amazon_SimpleDb.

    Podziękowania dla: Wil Sinclair

    eBay Findings API Support

    eBay od dawna posiada rozbudowane REST API pozwalające programistom tworzenie interakcyjnych aplikacji z dużą ilością danych. Nowy Zend Framework (1.11) zawiera Zend_Service_Ebay_Findings, które w pełni obsługuje eBay Findings API. Pozwala to na tworzenie zapytań przez programistów dot. szczegółów aukcji eBay z uwzględnieniem kategorii i słów kluczowych.

    Podziękowania dla: Renan de Lima i Ramon Henrique Ornelas

    Obsługa nowych formatów konfiguracji

    Od samego początku konfiguracja Zend Framework oparta jest o Zend_Config oferującego adaptery: tablic PHP, XML, INI. Od teraz do tej listy należy dodać: YAML i JSON. Wow!

    Yaml jest bardzo popularnym formatem konfiguracyjnym w frameworku Symfony. Od osoby przyzwyczajone do Yaml’i nie muszÄ… siÄ™ z nim żegnać podczas migracji na ZF.

    Tak jak wcześniejsze adaptery, tak też Zend_Config_Yaml i Zend_Config_Json pozwalają na zapisywanie konfiguracji.

    Podziękowania dla: Stas Malyshev (przy Zend_Config_Json pomagał również Sudheer Satyanarayana)

    Skracacze URL-i

    W tej wersji dodano również komponent Zend_Service_ShortUrl. Dzięki temu możemy skorzystać z zewnętrznych serwisów skracających linki.
    W tym momencie posiada wsparcie dla [jdem.cz] oraz http://tinyurl.com.

    Podziękowania dla: Martin Hujer

    Dodatkowo

    Poza tym w Zend Framework 1.11:

    • bezpieczeÅ„stwo: zaÅ‚atano kilka klas, które byÅ‚y narażone na wycieki informacji
    • wsparcie dla Dojo zaktualizowane do wersji 1.5.0
    • dodano helper widoku Zend_View_Helper_Gravatar, dziÄ™ki któremu możemy korzystać z avatarów przypisanych do użytkowników w serwisie Gravatar (dziÄ™ki Marcinie)

    Pozostaje nam tylko czekać na oficjalne wydanie. A ci którzy mają więcej wolnego czasu proszę o testy i zgłaszanie błędów. Pomożecie nam wszystkim.

  • Permalink for 'Mateusz_Kami__ski/2010/08/02/Zend_Framework_1.10.7'

    Zend Framework 1.10.7

    Dodany: sierpieñ 2, 2010, 8:42am CEST przez matipl

    Bardzo mi odpowiada to regularne i częste wydawanie kolejnych wersji Zend Frameworka.
    Dzięki temu mamy potwierdzenie, że ZF się rozwija i społeczności zależy na poprawianiu jego funkcjonalności.

    Co przynosi nam piątkowe wydanie ZF 1.10.7? Ponad 60 załatanych błędów. Ciekawsze poprawki tej wersji:

    • Zend_Db_Adapter_Pdo_Pgsql (lastInsertId)
    • Zend_Db_Table_Rowset_Abstract akceptowaÅ‚ niepoprawne indeksy
    • nieskoÅ„czona pÄ™tla w StripTags
    • PowiÄ™kszenie funkcjonalnoÅ›ci dla Google Apps -> Groups (Email Lists)
    • Metoda removePrefixPath w Zend_Loader_PluginLoader.php usuwaÅ‚a Å›cieżkÄ™ z kluczem 0
    • poprawki w Zend_Log::_constructFilterFromConfig()
    • Popsuta implementacja S3_Stream
    • problem z iconv_set_encoding() –> Zend_Service_Flickr
    • Zend_Translate – poprawienie zarzÄ…dzanie cachem

    Download: Zend Framework 1.10.7

    Zend Framework 1.11.0

    A przed nami kolejna duża wersja ZF – 1.11. Powinna ukazać siÄ™ pod koniec wrzeÅ›nia 2010. Poza poprawieniem stabilnoÅ›ci (wszelkie 1.10.X), kilka aktualizacji, normalizacjÄ™ tÅ‚umaczeÅ„ tekstów w walidatorach i kilka nowoÅ›ci.

    Lada dzień zostanie wydany 1. milestone developerski ZF 2.0. Będzie już zmigrowany na przestrzenie nazw z PHP 5.3.

  • Permalink for 'Mateusz_Kami__ski/2010/05/27/Zend_Framework_coraz_stabilniejsze___1.10.5'

    Zend Framework coraz stabilniejsze ? 1.10.5

    Dodany: maj 27, 2010, 9:52am CEST przez matipl

    W miniony weekend zakończyła się kolejna akcja The Bug Hunt Days w ramach projektu Zend Framework.

    Jest to fantastyczna, spontaniczna akcja wśród programistów PHP. Tym razem zapaleńcy zamknęli 60 błędów. Obecnie linia 1.10 wygląda bardzo stabilnie.
    Poprawiono m.in. Zend_Date::_getLocalizedToken, Zend_Paginator (problem z cachowaniem),  Zend_Filter_StripTags, Zend_Db_Table_Row_Abstract, Zend_Form_Element_Radio i wiele innych.
    Pełna lista zmian.

    Download: Zend Framework 1.10.5

  • Permalink for 'Mateusz_Kami__ski/2010/04/29/Zend_Framework_1.10.4'

    Zend Framework 1.10.4

    Dodany: kwiecieñ 29, 2010, 8:04am CEST przez matipl

    Kwiecień programiści PHP korzystający z Zend Framework będą mile wspominać.

    Na początku miesiąca przywitaliśmy wersję 1.10.3, a kończymy miesiąc z wersją 1.10.4. Najnowszą wersje, podobnie jak 1.10.2, zawdzięczamy Bug Hunt Days organizowanemu przez społeczność Zend Framework od kilku miesięcy.

    Tym razem naprawiono aż 50 błędów. Dzięki poprawkom linia 1.10 stała się bezpieczniejsza i stabilniejsza.
    Koordynator akcji Matthew Weier O’Phinney zwraca uwagÄ™ na 3, najważniejsze jego zdaniem poprawki:

    • ZF-7493 – istotna poprawa w wydajnoÅ›ci serializacji Zend_Amf (wzrost szybkoÅ›ci do 200-300% w dużych zbiorach)
    • ZF-9263 – poprawka w Zend_Loader::isReadable() (eliminacja wiÄ™kszoÅ›ci ostrzeżeÅ„ przy Å‚adowaniu strony i wtyczek pod platformami Windows)
    • ZF-9504 –  bardziej wydajne generowanie wartoÅ›ci w Zend_XmlRpc_Value

    Download: Zend Framework 1.10.4

  • Permalink for 'Mateusz_Kami__ski/2010/04/02/Zend_Framework_1.10.3'

    Zend Framework 1.10.3

    Dodany: kwiecieñ 2, 2010, 8:48pm CEST przez matipl

    Cóż za świąteczny prezent.
    1 kwietnia opublikowano kolejną wersję Zend Frameworka. Tak szybkie kolejne wydanie spowodowane było wykryciem błędu bezpieczeństwa w Dojo Toolkit.
    Z tego powodu pojawiła się wersja 1.9.8 oraz 1.10.3.

    W gałęzi 1.10 poza poprawieniem wspomnianego błędu naprawiono 80 zgłoszonych błędów. W większości są to drobne poprawki nie wpływające na funkcjonowanie całego frameworka.

    Poza tak błahymi zmianami jak dodanie opisów metod lub literówki, poprawki znalazły się w:
    Zend_Currency, Zend_Validate_CreditCard, Zend_Validate_EmailAddress, Zend_Validate_Float/Int, Zend_File_Transfer, a także usprawnienia w Zend_Validate_Sitemap_*

    Zapraszam do zapoznania się z pełną lista zmian.

    Download: Zend Framework 1.10.3

  • Permalink for 'Mateusz_Kami__ski/2010/03/10/Zend_Framework__SQLSTATE_HY000___2002__Invalid_argument'

    Zend Framework: SQLSTATE[HY000] [2002] Invalid argument

    Dodany: marzec 10, 2010, 9:25am CET przez matipl

    Tym razem krótko i banalnie, ale może komuś się przyda.
    Kilka dni temu po ręcznej instalacji PHP 5.3.2 na jednej z maszyn z Debianem i podpięciu aplikacji opartej o Zend Framework jedyne co było widać to strona błędu z wpisem w logach serwisu:

    SQLSTATE[HY000] [2002] Invalid argument

    Super, konkretny komunikat :/ A jakże, nie ma jak PHP ;) Na poczÄ…tku pomyÅ›laÅ‚em, że to może wina wersji (aktualizacja php 5.2 -> 5.3) – nie, to nie byÅ‚o to.

    RozwiÄ…zanie okazaÅ‚o siÄ™ banalne. Wspomniany błąd generuje PDO, a jest wynikiem błędnie okreÅ›lonej lokalizacji socketu MySQL przez PHP podczas kompilacji (czÄ™sto PHP uważa, że to /tmp/mysql.sock – ?).
    Wystarczy dodać w naszym php.ini informację o lokalizacji:

    ; najpierw sprawdź, gdzie jest Twój mysql.sock
    pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
    

    Może i bezpośrednio Zend Frameworka nie dotyczy, lecz PHP+PDO. Ale jeśli już da się złapać taki wyjątek, to Zend Framework powinien go zamienić na coś konkretnego.

  • Permalink for 'Mateusz_Kami__ski/2010/02/25/Zend_Framework_1.10.2'

    Zend Framework 1.10.2

    Dodany: luty 25, 2010, 9:43am CET przez matipl

    Zespół Zend Frameworka załatał kolejne 50 błędów i tym samym wydał wersję ZF 1.10.2

    Akcja została przeprowadzona w minionym tygodniu w ramach kolejnego Bug Hunt Days mająca na celu poprawę stabilności frameworka.

    Nie są to krytyczne błędy, ale niektóre bardzo uciążliwe w specyficznych sytuacjach. Poprawki, na które warto zwrócić uwagę:

    • obsÅ‚uga IDN dla .EU w Zend_Validate_Hostname
    • fetchRow() ignorowaÅ‚ limit offset
    • problem z komunikatem błędu w Zend_Validate_PostCode
    • opcja „mx” byÅ‚a ignorowana w Zend_Validate_EmailAddress
    • Zend_Validate_File_isImage obsÅ‚uguje teraz wszystkie typy obrazków
    • Zend_XmlRpc_Value_Double zaokrÄ…glaÅ‚ do 6 miejsc po przecinku

    Zapraszam do aktualizacji i zobaczenia innych poprawek w wersji 1.10.2.

    Download: Zend Framework 1.10.2 Full

  • Permalink for 'Mateusz_Kami__ski/2010/01/28/Zend_Framework_1.10.0_wydane'

    Zend Framework 1.10.0 wydane

    Dodany: styczeñ 28, 2010, 9:00am CET przez matipl

    Wczoraj odbyÅ‚a siÄ™ nie tylko premiera nowego produktu Apple (iPad), ale również Zend w koÅ„cu zamknÄ…Å‚ kolejnÄ… wersjÄ™ swojego frameworka dla PHP – ZF w wersji 1.10.0.

    ListÄ™ nowoÅ›ci opisaÅ‚em przy okazji ukazania siÄ™ wersji beta 1, dlatego nie bÄ™dÄ™ tego powtarzaÅ‚. Dodatkowo zmieniona zostaÅ‚a strona pobraÅ„ – teraz jeszcze bardziej zachÄ™ca siÄ™ nas do skorzystania z Zend Server.

    Aktualizacji nie ominęła dokumentacji projektu. Wprowadzono w końcu jasny podział na poszczególne wersje. Wprowadzono sekcję Learning Zend Framework oraz naniesiono poprawki w Reference Guide.

    Download: ZF 1.10.0

  • Permalink for 'Mateusz_Kami__ski/2010/01/26/Zend_Framework_na_hostingu_wsp%c3%b3%c5%82dzielonym'

    Zend Framework na hostingu współdzielonym

    Dodany: styczeñ 26, 2010, 1:04pm CET przez matipl

    Większość ofert hostingowych w Polsce od zawsze udostępnia nam jeden katalog, ew. możliwość wskazania dla danej domeny katalogu gdzie przechowujemy nasz projekt.
    Dzięki temu wystarczy do niego wgrać aplikację i wszystko działa.
    Kiedyś nie stanowiło to problemu, gdy cała aplikacja była w jednym worku, a za pomocą odpowiednich sztuczek nie pozwalało się na bezpośredni dostęp do plików źródłowych PHP lub konfiguracyjnych.

    Obecnie, np. z punktu widzenia osoby tworzącej z wykorzystaniem Zend Framework stanowi to problem, ponieważ domyślny układ projektu wygląda tak:

       application/
          controllers/
          views/
             scripts/
       library/
       public/
       tests/
    

    Ze wzglÄ™dów m.in. bezpieczeÅ„stwa w ZF jest wydzielony jeden katalog publiczny (public), który jest domyÅ›lnym katalogiem dostÄ™pnym z Sieci. Gdy takÄ… aplikacjÄ™ umieÅ›cimy np. na hostingu w home.pl aplikacja nam siÄ™ nie uruchomi, a każda osoba z Internetu bÄ™dzie miaÅ‚a dostÄ™p do wszystkich plików (pliki PHP nie stanowiÄ… problemu, ale już pliki INI, SQL tak). Wiele osób przegrywa plik index.php do katalogu nadrzÄ™dnego odpowiednio go modyfikujÄ…c – to błąd. Owszem, aplikacja zadziaÅ‚a, ale nie poprawi to wzglÄ™dów bezpieczeÅ„stwa.

    Problem można bardzo łatwo rozwiązać jeśli nasz usługodawca daje możliwość umieszczania plików .htaccess:

    RewriteEngine On
    
    RewriteRule ^\.htaccess$ - [F]
    
    RewriteCond %{REQUEST_URI} =""
    RewriteRule ^.*$ /public/index.php [NC,L]
    
    RewriteCond %{REQUEST_URI} !^/public/.*$
    RewriteRule ^(.*)$ /public/$1
    
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^.*$ - [NC,L]
    
    RewriteRule ^public/.*$ /public/index.php [NC,L]
    

    Wystarczy go umieścić w katalogu głównym, a on załatwi już odpowiednie przekierowania poszczególnych wywołań.
    Oczywiście jeśli mamy możliwość konfiguracji vhost-ów lub ustawienia katalogu aplikacji w inny sposób powinniśmy z niego skorzystać, zamiast cudować z htaccess.

  • Permalink for 'Mateusz_Kami__ski/2010/01/22/PHP_APC___czy_warto_korzysta%c4%87_z_opcode_caching_'

    PHP APC ? czy warto korzystać z opcode caching?

    Dodany: styczeñ 22, 2010, 8:49am CET przez matipl

    Dawno na blogu nie pisaÅ‚em nic o optymalizacji – postanowiÅ‚em odÅ›wieżyć temat.
    Obecnie bardzo wiele osób korzystających z PHP używa do tego standardowego zestawu LAMP (Linux + Apache + MySQL + PHP) i dla nich będzie ten wpis.

    W używaniu LAMP nie ma w tym nic złego. I nie zamierzam nikomu kazać zmieniać przyzwyczajeń lub uczyć się nowego oprogramowania. Za to pokażę jak łatwo można zmniejszyć zużycie zasobów naszej maszyny (szczególnie pamięci RAM) korzystając z opcode caching, czyli tzw. akceleratorów do PHP.

    Jednym z rodziny opcode caching jest APC, gdzie o sposobie jego używania już Wam pisałem. Dzisiaj chciałbym pokazać Wam, że w wypadku gdy korzystamy z frameworka powinniśmy zawsze korzystać z APC. W moim przykładzie oprę się o wyniki dla Zend Frameworka.

    Postawiłem LAMP w oparciu o aktualną wersję Debiana. Stworzyłem za pomocą Zend_Tool pustą aplikację w oparciu o ZF.
    W bazie stworzyłem jedną pustą tabelę user z polem id i name. W IndexController::indexAction w prosty sposób z niej skorzystałem i dodałem prostą metodę zliczającą zajętość pamięci w taki oto sposób:

    public function indexAction() {
        $start = $this->_memoryUsage();
        $userModel = new Model_User(); //klasa dziedziczÄ…ca po Zend_Db_Table
    
        $this->view->start = $start;
        $this->view->users = $userModel->fetchAll();
        $this->view->end   = $this->_memoryUsage();
    }
    
    protected function _memoryUsage() {
        $mem_usage = memory_get_usage(true);
        $usage = '';
    
        if ($mem_usage < 1024)
            $usage = $mem_usage . ' bytes';
        elseif ($mem_usage < 1048576)
            $usage = round($mem_usage/1024,2) . ' kilobytes';
        else
            $usage = round($mem_usage/1048576,2) . ' megabytes';
    
        return $usage;
    }
    

    Przy braku korzystania z APC na mojej maszynie developerskiej uzyskałem wynik:

    MEM start: 5.5 megabytes
    MEM end: 6 megabytes
    

    Wynika z tego, że skorzystanie z ZF wymaga 5.5 MB, i użycie dodatku w postaci  Zend_DB zjada dodatkowo 0.5 MB RAM. Czy to dużo?
    Aplikacja, która korzysta ze średniej ilości dodatków ZF w postaci helperów, bazy, formularzy, validatorów zużywa już około 30 MB pamięci

    Po tym gdy aktywowałem APC, w taki sposób jak opisywałem we wcześniejszych postach zużycie dla całej naszej aplikacji spada 3-krotnie:

    MEM start: 1.75 megabytes
    MEM end: 2 megabytes
    

    Dla wspomnianej Å›redniej aplikacji ZF owe zużycie również spada trzykrotnie do okoÅ‚o 10 MB. Jest to bardzo duży zysk. W naszym przypadku zauważcie, że posÅ‚ugujemy siÄ™ „jednÄ… instancjÄ… aplikacji”.

    PodsumowujÄ…c – warto – oszczÄ™dzamy pamięć, jak również mamy zysk na czasie wykonywania siÄ™ aplikacji.
    Każdy framework ma to do siebie, że jest zbudowany z wielu klocków (duża zaleta), ale wiąże się to również z dużą ilością plików do przeczytania i wykonania (w przypadku PHP) co opcode caching jest w stanie bardzo przyspieszyć.

  • Permalink for 'Mateusz_Kami__ski/2010/01/15/Zend_Framework_1.10.0beta1'

    Zend Framework 1.10.0beta1

    Dodany: styczeñ 15, 2010, 4:49pm CET przez matipl

    Koniec piątku przywitał nas pojawieniem się wersji beta frameworka PHP.
    Niecały miesiąc po ukazaniu się wersji alpha możemy w pełni przetestować możliwości, które przyniesienie wersja Zend Frameworka 1.10, dlaczego? Ponieważ wydanie wersji beta oznacza, że w API frameworka nie dojdzie już do żadnych zmian i lista nowości jest już zamknięta. O nowościach już pisałem, ale powtórzmy dla potomnych co pojawi się w wersji 1.10.0:

    • Zend_Barcode
    • cache: Zend_Cache_Backend_Static, Zend_Cache_Manager
    • feed: Zend_Feed_Pubsubhubbub, Zend_Feed_Writer
    • filtry: Zend_Filter_Boolean, Zend_Filter_Compress/Decompress, Zend_Filter_Null
    • logi: Zend_Log::factory(), Zend_Log_Writer_ZendMonitor
    • Zend_Markup
    • Zend_Oauth
    • Zend_Serializer
    • usÅ‚ugi: Zend_Service_DeveloperGarden, Zend_Service_LiveDocx, Zend_Service_WindowsAzure
    • walidatory: Zend_Validate_Barcode, Zend_Validate_Callback, Zend_Validate_CreditCard, Zend_Validate_PostCode
    • dodatkowe zasoby w Zend_Application zawierajÄ…ce m.in. Cachemanager, Dojo, Jquery, Layout, Log, Mail, and Multidb
    • dokonano refactoringu Zend_Loader::loadClass() (m.in. obsÅ‚uga namespaców przy autoloadingu)

    Nie będę tłumaczył co dane klasy robią, ponieważ są bardzo logicznie nazwane (no z jednym wyjątkiem, o którym pisałem). Dodatkowo przepisano Zend_Tool rozszerzając o nowe funkcje tj.

    • nowy CLI runner z obsÅ‚ugÄ… katalogu domowego i konfiguracji
    • nowi dostawcy: generowanie modeli(!), ustawienia dla DbAdapter, generator layoutów i formularzy(!)
    • domyÅ›lny projekt bÄ™dzie posiadaÅ‚ wsparcie dla logowania błędów z poziomu ErrorController

    20 stycznia ukaże się wersja RC1, a 26 stycznia ujrzymy pełną wersją 1.10.0!

    Download: Zend Framework 1.10.0 Beta 1 Full

  • Permalink for 'Mateusz_Kami__ski/2010/01/12/Zend_Framework_1.9.7_z_%c5%82atami_bezpiecze%c5%84stwa_'

    Zend Framework 1.9.7 z łatami bezpieczeństwa!

    Dodany: styczeñ 12, 2010, 11:05am CET przez matipl

    Wczoraj ukazaÅ‚y siÄ™ aż 3 wersje popularnego frameworka PHP – Zend Framework.
    Stała się rzecz niespotykana, bo ruszono wersje starsze od bieżącej i w gałęziach 1.8 i 1.7 pojawiły się również aktualizacje (1.8.5, i 1.7.9). Powodem jest poprawienie 6 błędów bezpieczeństwa, które zostały usunięte:

    • możliwy atak XSS lub wstrzykniÄ™cie HTML w Zend_Json
    • możliwy atak XSS w Zend_Service_ReCaptcha_MailHide
    • możliwe wstrzykniÄ™cie MIME-type w Zend_File_Transfer
    • możliwy atak XSS w Zend_Filter_StripTags, gdy komentarze sÄ… dozwolone
    • możliwy atak XSS w Zend_Dojo_View_Helper_Editor
    • możliwy atak XSS ze wzglÄ™du na niezgodne kodowanie

    Autorzy proszę wszystkich o jak najszybsze aktualizacje. W sumie poprawiono ponad 40 błędów. Tym samym powinna to być już ostatnia wersja przed ukazaniem się ZF 1.10.

    Download: Zend Framework

  • Permalink for 'Mateusz_Kami__ski/2009/12/22/Zend_Framework_1.10_ju%c5%bc_w_styczniu_2010'

    Zend Framework 1.10 już w styczniu 2010

    Dodany: grudzieñ 22, 2009, 10:50am CET przez matipl

    Ekipa programistów Zend Framework ogłosiła, że już 21 stycznia 2010 roku możemy spodziewać się ZF 1.10.
    Jestem dość zdziwiony kolejnym release przed wydaniem ZF 2.0, którego wydanie planowane jest na wiosnę 2010. Mimo wszystko każdy zainteresowany może w domowym zaciszu przetestować nowości w wersji alfa 1.10, w której mamy następujące nowości w pakietach:

    • Zend_Barcode wraz z Zend_Validate_Barcode
    • Zend_Cache_Backend_Static
    • Zend_Cache_Manager
    • Zend_Feed_Pubsubhubbub
    • Zend_Feed_Writer
    • Zend_Filter_Compress/Decompress
    • Zend_Filter_Null
    • Zend_Log::factory() oraz Zend_Log_Writer_ZendMonitor
    • Zend_Markup
    • Zend_Service_LiveDocx
    • Zend_Service_WindowsAzure
    • Zend_Validate_Callback
    • Zend_Validate_CreditCard
    • Zend_Validate_PostCode

    Duży refactoring przeszedł również Zend_Tool, w którym dodano:

    • nowy CLI runner z obsÅ‚ugÄ… katalogu domowego i konfiguracji
    • nowy dostawcy dla generatora modeli, konfiguracji DbAdapter, layoutów oraz generatora formularzy
    • domyÅ›lna struktura projektu teraz obsÅ‚uguje logowanie błędów z ErrorController

    W takim razie zapraszam do ściągnięcia źródeł i zobaczenia zmian.

    Download: Zend Framework 1.10.0 ALPHA

  • Permalink for 'Mateusz_Kami__ski/2009/09/23/Zend_Framework__w_2_dni_zamkni%c4%99to_103_zg%c5%82oszenia'

    Zend Framework: w 2 dni zamknięto 103 zgłoszenia

    Dodany: wrzesieñ 23, 2009, 8:36am CEST przez matipl

    Zend FrameworkTakiego wyczynu projekt Zend Framework jeszcze nie widział! W miniony czwartek i piątek (17/18 września) zamknięto aż 103 sprawy z bug trackera.

    Potrzebowano rÄ…k do pracy, szczególnie do zamykania zgÅ‚oszeÅ„ błędów, które błędami nie byÅ‚y. W tym celu od wrzeÅ›nia w każdy trzeci czwartek i piÄ…tek miesiÄ…ca organizowana bÄ™dzie impreza pod hasÅ‚em “Bug Hunt Days”.

    Wynikiem zeszłotygodniowego zamykania zgłoszeń ukazała się nowa wersja Zend Framework oznaczona numerem 1.9.3. Wersja zawiera oczywiście wyłącznie poprawki zgłoszonych wcześniej błędów (niektóre to np. wyłącznie literówki w przykładach) z ponad 40 różnych komponentów.

  • Permalink for 'Mateusz_Kami__ski/2009/09/18/Zend_Framework_Tips_Trick__DbProfiler'

    Zend Framework Tips&Trick: DbProfiler

    Dodany: wrzesieñ 18, 2009, 12:04pm CEST przez matipl

    Zend FrameworkRozmawiając ostatnio z ludźmi z branży (np. podczas interview), którzy zarzekają się, że znają i korzystają z Zend Framework okazuje się, że ich wiedza kończy się często na etapie wklepywania kodu do kontrolera.

    Dlatego postanowiłem, że różnymi banalnymi, ale użytecznymi rzeczami z ZF będę dzielił się z Wami na moim blogu.

    Wczoraj chciałem zoptymalizować bazę i musiałem zobaczyć dokładne zapytania SQL, które idą do bazy zewn. i ich czasy wykonywania.
    Z samymi zapytaniami może nie byÅ‚oby problemu dla poczÄ…tkujÄ…cego programisty z wykorzystaniem ZF – wystarczy jakieÅ› wyplucie obiektów Zend_Db_Select na ekran, ale czasy trwania ?

    Z pomocÄ… przychodzi nam pakiet Zend_Db_Profiler. Aby nie Å›miecić sobie na ekranie aplikacji, polecam zainstalować FirePHP dla Firefoksa, wtedy możemy skorzystać z Zend_Db_Profiler_Firebug i w wyniki przeglÄ…dać w konsoli Firebug’a. Poniżej przedstawiam wtyczkÄ™:

    class Zextend_Controller_Plugin_DbProfiler extends Zend_Controller_Plugin_Abstract
    {
    
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
    $db = Zend_Db_Table_Abstract::getDefaultAdapter();
    $profiler = new Zend_Db_Profiler_Firebug('DB - All Queries');
    $profiler->setEnabled(true);
    
    $db->setProfiler($profiler);
    }
    }
    

    Następnie wystarczy w pliku konfiguracyjnym naszej aplikacji (configs/application.ini) włączyć działanie wtyczki:

    resources.frontController.plugins.dbProfiler =
    "Zextend_Controller_Plugin_DbProfiler"

    Od tego momentu w Firebugu zobaczymy wszystkie zapytania SQL, które idą do bazy wraz z ich parametrami i czasami wykonywania.

    wynik w Firebug

    wynik w Firebug

  • Permalink for 'Mateusz_Kami__ski/2009/09/02/ZendFramework_i_PHPUnit'

    ZendFramework i PHPUnit

    Dodany: wrzesieñ 2, 2009, 1:54pm CEST przez matipl

    php-logoAktualna wersja Zend Framework wspomaga tworzenie testów jednostkowych. Wykorzystuje do tego znaną paczkę PHPUnit dostępną w repozytorium PEAR.

    Obecnie po utworzeniu naszego projektu opartego o ZF (zf create project nazwa_projektu) i po dodaniu automagicznie nowych kontrolerów (zf create controller nazwa_kontrolera) tworzone są automatycznie puste klasy testujące w katalogu /tests.

    Dlaczego warto korzystać z testów jednostkowych?

    UnitTesty automatyzują nam testowanie aplikacji. Dzięki nim jesteśmy w stanie natychmiast wychwycić błąd z innych części systemu, gdzie takie błędy nie powinny się pojawiać.
    Pomagają również kontrolować postęp tworzenia aplikacji, na zasadzie najpierw unitTest, poźniej implementacja, gdzie takie podejście jest używane w eXtreme Programming. Korzystając z unitTestów możemy stworzyć odpowiednie narzędzia monitorujące dany system na podstawie wyników z testów jednostkowych.

    Przygotowanie środowiska

    Aby móc skorzystać z przyjemności tworzenia testów jednostkowych najpierw musimy zainstalować paczkę PHPUnit.

    1. Najpierw zaktualizujmy na wszelki wypadek dotychczasowe pakiety PEAR’a:
      $pear upgrade-all
    2. Dodajemy nowy kanał dla PEAR:
      $pear channel-discover pear.phpunit.de
    3. I instalujemy PHPUnit z zależnościami
      $pear install --alldeps phpunit/PHPUnit

    Jeśli wszystko poszło bez problemów możemy do korzystania z PHPUnit zwiększyć dostępną pamięć dla PHP w pliku ini zmieniając wartość memory_limit na przynajmniej 64M.

    Teraz już możemy przejść do samych testów. Do tego celu posłużymy się przykładowym kontrolerem.

    1. Tworzymy kontroler Kontakt:
      zf create controller kontakt
    2. Nasza hierarchia katalogów w skrócie wygląda teraz tak:
      `-- application
       |-- configs
       `-- controllers
        |-- KontaktController.php
      |-- library
      |-- public
      `--tests
       `-- application
        `-- controllers
         |-- KontaktControllerTest.php
        |-- bootstrap.php
       |-- library
       |-- phpunit.xml
    3. Powinniśmy skonfigurować bootstrap do celów testowych, edytujemy /tests/application/bootstrap.php:
      set_include_path(implode(PATH_SEPARATOR, array(
      realpath(dirname(__FILE__) . '/../../library'),
      get_include_path(),
      )));
      
      defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../../application'));
      defined('APPLICATION_ENV') || define('APPLICATION_ENV', 'testing');
      defined('APPLICATION_LOAD_TESTDATA') || define('APPLICATION_LOAD_TESTDATA', true);
      
      require_once 'Zend/Loader/Autoloader.php';
      $autoloader = Zend_Loader_Autoloader::getInstance();
      spl_autoload_unregister(array($autoloader, 'autoload'));
      
      Zend_Loader_Autoloader::resetInstance();
      $autoloader = Zend_Loader_Autoloader::getInstance();
      $autoloader->registerNamespace('PHPUnit_');
      
    4. Pozostało nam już tylko zedytować klasę KontaktControllerTest, aby korzystało z naszego bootstrapa, i dopisania prostego testu. Po zmianach powinna klasa wyglądać tak:
      class KontaktControllerTest extends Zend_Test_PHPUnit_ControllerTestCase {
      
      public function setUp() {
      $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
      $this->bootstrap = array($application->getBootstrap(), 'bootstrap');
      return parent::setUp();
      }
      
      public function tearDown() {
      /* Tear Down Routine */
      }
      
      public function testIndexAction() {
      $this->dispatch('/kontakt');
      $this->assertController('kontakt');
      $this->assertAction('index');
      }
      
      }
      
    5. Aby nie musieć każdej klasy wywoływać osobno, możemy skonfigurować odpowiednie phpUnit. Przykładowy plik konfiguracyjny /tests/phpunit.xml może wyglądać tak:
      <phpunit bootstrap="./application/bootstrap.php"
      colors="true"
      convertErrorsToExceptions="true"
      convertNoticesToExceptions="true"
      convertWarningsToExceptions="true"
      stopOnFailure="false">
      
      <testsuite name="Test_ZF">
      <directory>./application/</directory>
      </testsuite>
      </phpunit>
      
    Pierwszy test

    Powstała klasę testującą możemy już uruchomić. Umieściłem przykładowy test (testIndexAction) sprawdzający czy znajdujemy się we właściwej lokalizacji. W tym celu udajemy się do /tests i wydajemy polecenie:

    $phpunit --configuration phpunit.xml
    PHPUnit 3.3.17 by Sebastian Bergmann.
    
    Time: 0 seconds
    OK (1 test, 2 assertions)
    

    Dzięki skorzystaniu z pliku konfiguracyjnego xml, nie będziemy musieli dokonywać żadnych modyfikacji podczas dodawania kolejnych klas testujących. Docelowo, można przygotować stronę, która przedstawi nam graficznie jakie klasy działają już prawidłowo.

    Możliwości porównań pakietu Zend_Test / PHPUnit możemy znaleźć w dokumentacji.
    Mam nadzieję, ze to małe wprowadzenie poszerzy grono programistów korzystających z Zend Framework do używania testów jednostkowych, tak bardzo przydatnych przy większych aplikacjach.

  • Permalink for 'Mateusz_Kami__ski/2009/08/25/ZF__instalacja___tworzenie_nowego_projektu'

    ZF: instalacja & tworzenie nowego projektu

    Dodany: sierpieñ 25, 2009, 2:56pm CEST przez matipl

    Zend FrameworkIle razy tworzyłeś nowy projekt na bazie Zend Frameworka? W moim wypadku odpowiedź brzmi: wiele razy.
    Za każdym razem zastanawianie się co skopiować, jakie podstawowa wersje plików zostawić, no i trzeba od nowa stworzyć hierarchię katalogów.

    Do tej brudnej roboty mamy od wersji Zend Framework 1.8 pomocnika – Zend_Tool i trochÄ™ zmienione podejÅ›cie co do bibliotek ZF.
    Aktualnie (w Zend Server w standardzie) zaleca się posiadanie jednych źródeł Zend Framework na maszynę, a nie jak było wcześniej kopiowaliśmy te kilkanaście MB do każdego projektu. Dostosujmy naszą maszynę developerską do pracy z jedną wersją ZF. Poniżej w bardzo skróconej wersji przedstawię Wam jak zainstalować ZF i stworzyć jedną linijką poleceń cały nowy projekt oparty o Zend Framework.

    Najpierw musimy sprawdzić, jaki include_path posiada nasz PHP:

    matipl@hobbiton:~$ php -i | grep include_path
    include_path => .:/usr/share/php:/usr/share/pear => .:/usr/share/php:/usr/share/pear

    Jeśli powyższe polecenie (php -i) nie działa, musimy zainstalować konsolowego klienta PHP (często paczka php-cli).
    Widzimy powyżej, że PHP przetrzymuje ładowane pliki w /usr/share/php. Ściągamy aktualna wersję ZF i rozpakowujemy z niej katalog library/Zend do /usr/share/php/Zend. Fanstatycznie, możesz teraz pozbyć się z każdego projektu osobnej kopii ZF.

    Następnym krokiem jest sprawienie, aby automagiczny skrypt Zend Frameworka działał nam z konsoli.
    W moim wypadku (Debian) posiadam katalog /usr/lib/php5, gdzie skopiowałem z paczki ZF 2 pliki:

    • bin/zf.php
    • bin/zf.sh

    AbyÅ›my mogli posÅ‚ugiwać siÄ™ skryptem “zf” bez podawania zbÄ™dnej Å›cieżki gdzie siÄ™ znajduje musimy stworzyć link symboliczny:

    ln -s /usr/lib/php5/zf.sh /usr/bin/zf

    Teraz w dowolnym miejscu naszego systemu bÄ™dziemy mogli posÅ‚ugiwać siÄ™ poleceniem “zf”, tworzÄ…c np. nowy projekt. Ale najpierw sprawdźmy czy wszystko dziaÅ‚a poleceniem sprawdzajÄ…cym wersjÄ™ Zend Framework:

    matipl@hobbiton:~$ zf show version
    Zend Framework Version: 1.9.1

    Jeśli widzimy powyższy komunikat (ew. z inną wersją) to wszystko działa i możemy przejść do stworzenia naszego projektu. Posługujemy się do tego naszym skryptem:

    matipl@hobbiton:/home/services/httpd/_dev.matipl.pl$ zf create project test
    Creating project at /home/services/httpd/_dev.matipl.pl/test

    Tak oto stworzyliśmy w pełni funkcjonalny projekt oparty o Zend Framework. Możemy do niego w jednej shella linijce dodać np. nowy kontroler wraz z potrzebnym widokiem:

    matipl@hobbiton:/$ cd test.dev.matipl.pl
    matipl@hobbiton:/test.dev.matipl.pl$ zf create controller contact
    Creating a controller at /test.dev.matipl.pl/application/controllers/ContactController.php
    Creating an index action method in controller contact
    Creating a view script for the index action method at /test.dev.matipl.pl/application/views/scripts/contact/index.phtml
    Creating a controller test file at /test.dev.matipl.pl/tests/application/controllers/ContactControllerTest.php
    Updating project profile '/test.dev.matipl.pl/.zfproject.xml'

    W ten oto sposób mamy stworzoną podstronę Contact i możemy od razu sprawdzić czy działa wchodząc na nasza-maszyna.com/contact

    Dostępne polecenia zf: create [view,controller,action,module].
    Osobiście na razie korzystam tylko z automatycznego tworzenia nowego projektu, jakoś nie mogę się przekonać do korzystania z konsolki do rozbudowy projektu.

  • Permalink for 'Mateusz_Kami__ski/2009/08/06/ZendFramework_1.9'

    ZendFramework 1.9

    Dodany: sierpieñ 6, 2009, 2:22pm CEST przez matipl

    Zend FrameworkZ końcem lipca Zend udostępnił kolejną wersję swojego frameworku dla PHP.

    Od wersji 1.8 wydanej w maju poprawiono ponad 700 błędów. Nie wiem czy się z tego powodu cieszyć, bo bardziej mnie zastanawia czemu wersja z taką ilością błędów ujrzała światło dzienne jako wersja stabilna?

    Ale poza naprawianiem starych klas dodano kilka nowości w stosunku do wersji 1.8.4, które może zwykłych programistów nie zainteresują, ale warto to odnotować:

    • Zend_Rest_Route, Zend_Rest_Controller (warstwa MVC dla serwisów REST)
    • Zend_Feed_Reader (API dla feedów RSS/Atom)
    • Zend_Db_Adapter_Sqlsrv (adapter DB dla MS SQL Server)
    • Zend_Test_PHPUnit_Db (możliwość testowania zapytaÅ„ SQL z poziomu PHPUnit)
    • Zend_Log_Writer_Syslog (logowanie od dziennika systemowego)
    • Zend_View_Helper_BaseUrl (helper zwracajÄ…cy URL bazowy aplikacji)
    • Zend_Date (dodanie obsÅ‚ugi rozszerzenia DateTime)

    Moim zdaniem powinni się skupić na większej ilości helperów i innych wspomagaczy, aby można było spokojnie używać Zend Framework, jak np. eZ.

    Download: Zend Framework 1.9

  • Permalink for 'Mateusz_Kami__ski/2009/05/27/ZF__Zend_Navigation'

    ZF: Zend_Navigation

    Dodany: maj 27, 2009, 8:43am CEST przez matipl

    Zend FrameworkJako, że w Zend Framework 1.8 pojawiÅ‚ siÄ™ nowy komponent do generowania menu, map stron itp. – Zend_Navigation chciaÅ‚em z niego skorzystać w aktualnym projekcie, aby nie wynajdować koÅ‚a od nowa.

    Ale w przypadku ZF nie jest to takie proste. Prawie wszystko co nowe w frameworku jest marginalnie opisany w dokumentacji. A nawet jeÅ›li lepiej to brak wiążących przykÅ‚adów (kontroler – widok – helper). Porozrzucane itp. Wciąż wierzÄ™, że kiedyÅ› dokumentacja ZF osiÄ…gnie taki poziom jak ezComponents, gdzie opanowanie komponentu Graph zajęło mi kilka minut.

    A wystarczyło wszystko zawrzeć w 6 prostych krokach. Ostatecznie menu zawarłem w pliku navigation.xml, mały wycinek:

    <?xml version="1.0" encoding="UTF-8"?>
    <config>
        <nav>
            <home>
                <label>Strona główna</label>
                <controller>index</controller>
            </home>
            <issue>
                <label>Sprawy</label>
                <controller> issue </controller>
            </issue>
        </nav>
    </config>

    Tak samo jak <controller/> możemy dodatkowo podać akcję, która ma się wykonać. Ewentualnie możemy podać gotowy link jako <uri/>.
    Następnie wystarczy zrobić zasób dla nawigacji:

    class Zextend_Application_Resource_Navigation extends Zend_Application_Resource_ResourceAbstract
    {
        public function init()
        {
            $config = new Zend_Config_Xml ( APPLICATION_PATH . '/configs/navigation.xml', 'nav' );
            $container = new Zend_Navigation($config);
    
            Zend_Registry::set('Zend_Navigation', $container);
    
            return $container;
        }
    }

    Zamiast podawać $config możemy wstawić gotową tablicę phpową, ale przez to zrobiłby się bałagan i trudny dostęp, gdybyśmy chcieli coś zmieniać. W naszym magicznym pliku application.ini dodajemy poniższą linijkę celem ładowania nowego zasobu:

    resources.navigation = "array()"

    Dodatkowo w zasobie Acl powiązałem role z menu, dzięki temu nie mamy linków, do których brakuje nam dostępu. Robi się to następująco, u mnie w Zextend_Application_Resource_Acl:

    Zend_View_Helper_Navigation_HelperAbstract::setDefaultAcl($acl);
    Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole('guest');

    PozostaÅ‚o nam już tylko wyÅ›wietlenie naszego menu w widoku/layoucie. Odpowiedni helper automagicznie zaÅ‚aduje sobie nasz rejestr nazwany ’Zend_Navigation’:

    <?php echo $this->navigation()->menu()->renderMenu(); ?>

    W ten sposób wygenerujemy następujący kod:

    <ul class="navigation">
    	<li class="active"><a href="http://matipl.pl/">Strona główna</a></li>
    	<li><a href="http://matipl.pl/issue">Sprawy</a></li>
    </ul>

    Finito ) Można byÅ‚oby zrobić samo generowanie ACL i nawigacji bez zabawy z XML, ale przy aktualnym projekcie jest mi to zbÄ™dne. W moich delicjach można znaleźć: Zend Framework: Documentation – Navigation i Navigation Helper.

  • Permalink for 'Mateusz_Kami__ski/2009/05/14/ZendFramework_1.8_ju%c5%bc_poprawiony'

    ZendFramework 1.8 już poprawiony

    Dodany: maj 14, 2009, 12:30pm CEST przez matipl

    Zend FrameworkRaptem 13 dni po ukazaniu siÄ™ wersji 1.8 Zend Frameworka zostaÅ‚a opublikowana kolejna wersja – 1.8.1.
    W tym czasie udało się naprawić 68 zgłoszeń! Najważniejsze poprawki:

    • zmieniona wersja Dojo w ZF (1.2 na 1.3)
    • Zend_Loader::registerAutoload() jako alias do Zend_Loader_Autoloader
    • poprawki w Zend_Application
    • generowanie modułów i elementów wewnÄ…trz modułów (Zend_Tool)
    • usprawnienia do Zend_Amf 

    Wydaje się, że Zend powoli przystosowuje się do rynku i wypuszcza nowe wersje bez dogłębnych testów przerzucając tę czynność na zwykłych użytkowników!

    Download: Zend Framework 1.8.1

  • Permalink for 'Mateusz_Kami__ski/2009/04/28/Zend_Framework_1.8_PREVIEW'

    Zend Framework 1.8 PREVIEW

    Dodany: kwiecieñ 28, 2009, 1:17pm CEST przez matipl

    Zend FrameworkW Zend Framework 1.8 szykuje się niemała rewolucja.

    Widać, że praca w zespole wrze oraz czerpią co najlepsze z innych frameworków.
    Bardzo podoba mi się stworzenie Zend_Tool dzięki, któremu łatwo utworzymy nowy projekt , kontroler, model (prawie jak w Grails). Najważniejsze rzeczy, które dojdą:

    Dodatkowo w 1.8 usprawniono:

    • Zend_Validate
    • Zend_Filter
    • Zend_Search_Lucene
    • Zend_Pdf

    Dla zainteresowanych mały tutorial o Zend_Tool.

  • Permalink for 'Mateusz_Kami__ski/2008/11/18/Zend_Framework_1.7_dost%c4%99pny'

    Zend Framework 1.7 dostępny

    Dodany: listopad 18, 2008, 10:52am CET przez matipl

    Po dÅ‚ugim czekaniu ukazaÅ‚a siÄ™ kolejna wersja frameworka dla php – Zend Framework oznaczona wersjÄ… 1.7.
    Poza połataniem dziur, doszło wiele nowości:

    • Zend_Amf z obsÅ‚ugÄ… protokołów AMF0 oraz AMF3
    • wsparcie dla edytora dijit w Dojo Toolkit
    • Zend_Service_Twitter (dostÄ™p do usÅ‚ug Twittera)
    • ZendX_JQuery w dodatkowych bibliotekach (extras)
    • metadata API w Zend_Cache
    • Google Book Search API w Zend_Gdata
    • obsÅ‚uga Open Office XML w indeksie Zend_Search_Lucene
    • poprawiona wydajność w Zend_Loader, Zend_Controller oraz komponentach serwerowych
    • Zend_Tool w inkubatorze
    • Zend_Text_Table (formatowanie tabel przy użyciu tekstu)
    • Zend_ProgressBar (paski postÄ™pu w konsoli)
    • Zend_Config_Writer (możliwość edycji plików konfiguracyjnych)
    • ZendX_Console_Unix_Process w dodatkowych bibliotekach (extras)
    • globalne parametry dla routingu
    • obsÅ‚uga formularzowego MAX_FILES_SIZE w File Transfer
    • adapter Zend_Db_Table_Select dla Zend_Paginator

    Źródło: Zend Framework 1.7.0 is now available

  • Permalink for 'Mateusz_Kami__ski/2008/09/09/Zend_Framework_1.6_ju%c5%bc_jest'

    Zend Framework 1.6 już jest

    Dodany: wrzesieñ 9, 2008, 5:31pm CEST przez matipl

    Dopiero co pod koniec lipca pisałem o wydaniu wersji RC1 Zend Frameworka 1.6, a tutaj 2 września oficjalna wersja ujrzała światło dzienne. Czego dokonano, co dodano:

    • Zend_Tool (generowanie projektu)
    • Lucene 2.3 Index File Format Support
    • Zend_Session save handler for Database Tables
    • Paginator Component
    • Figlet Support (ASCII art ?)
    • ReCaptcha Service
    • Captcha Form Element
    • Zend_Config_Xml Attribute Support
    • Zend_File_Transfer Component
    • File Upload Form Element
    • Zend_Wildfire Component with FireBug Log Writer

    Poza tym zamknięto 287 ticketów oraz udostępniono dokumentację ZF w formacie PDF.
    Prezentacja nowości w ZF 1.6

    Źródło: Zend Developer Zone

  • Permalink for 'Mateusz_Kami__ski/2008/07/23/ZendFramework_1.6_w_drodze_'

    ZendFramework 1.6 w drodze?

    Dodany: lipiec 23, 2008, 8:14am CEST przez matipl

    22 lipca ukazaÅ‚a siÄ™ wersja 1.6 RC1 znanego frameworka dla PHP – Zend Framework.
    W 1.6 bardzo wiele nowości, m.in.:

    • obsÅ‚uga sesji w oparciu o bazÄ™ danych
    • API do obsÅ‚ugi reCaptcha
    • obsÅ‚uga dla SOAP (klient, serwer, WSDL Generation)
    • obsÅ‚uga kodowania bazy danych (obsÅ‚uga Character Set w DB Adapter)
    • Zend File Transfer (komponent do obsÅ‚ugi uploadu, w przyszÅ‚oÅ›ci downloadu)
    • Paginator Component (obsÅ‚uga paginacji)
    • nowe helpery widoku (Flash, Quicktime, Object, and Page)
    • Lucene w wersji 2.3
    • integracja z Dojo (JavaScript toolkit)

    Idzie ku dobremu…

  • Permalink for 'Mateusz_Kami__ski/2007/08/13/Zend_Studio__Neon__Beta'

    Zend Studio ?Neon? Beta

    Dodany: sierpieñ 13, 2007, 7:58am CEST przez matipl

    W trakcie weekendu dostałem informację o powstaniu nowej bety Zend Studio. Roboczo nazywa się "Neon" i jak na razie jest prywatną wersją beta.

    Nowy Zend Studio (pytanie czy tak nadal się będzie nazywać) bazowany jest na platformie Eclipse i PDT.
    Najważniejsze rzeczy dot. nowego projektu:

    • bazowanie na Eclipse/PDT
      • miliony użytkowników i tysiÄ…ce developerów
      • dostÄ™p do setek wtyczek
      • podÅ›wietlanie znaczników, okienka pomocy dot. kodu
      • podstawowy debugging php
    • dodatki bazowane na Zend Studio
      • prosty w użyciu, zintegrowany, zaawnsowany debugging (lokalny i zdalny)
      • refactoring kodu
      • profiler i Code Coverage
      • obsÅ‚uga PHPUnit Testów
      • integracja z Zend Framework
      • integracja z BIRT
      • edycja WYSIWYG dla HTML-a
      • integracja z Zend Platform
    • narzÄ™dzia do migracji użytkowników z Zend Studio

    Pozostaje tylko czekać na wersję ostateczną.

  • Permalink for 'Mateusz_Kami__ski/2007/07/18/Zend_Framework_1.0_w_ko%c5%84cu'

    Zend Framework 1.0 w końcu

    Dodany: lipiec 18, 2007, 12:17pm CEST przez matipl

    Rok pracy i mamy efekt – Zend Framework 1.0. Premiera, która przeszÅ‚a prawie bez echa w Internecie.
    Najważniejsze w tym wydarzeniu jest to, że API nie będzie (mniejmy nadzieję) się zmieniać, a tylko rozbudowywać.
    W niedługiej przyszłości ma się pojawić obsługa formularzy i layoutu. Poczekamy, zobaczymy.

  • Permalink for 'Mateusz_Kami__ski/2007/07/18/Szybkie_por%c3%b3wnanie_framework%c3%b3w_dla_PHP'

    Szybkie porównanie frameworków dla PHP

    Dodany: lipiec 18, 2007, 12:06pm CEST przez matipl

    WÅ‚aÅ›nie natknÄ…Å‚em siÄ™ w Sieci na porównanie najpopularniejszych frameworków dla PHP, m.in ZF, Prado, CakePHP, Symfony. Warto przestudiować tabelkÄ™ przed dokonaniem wyboru na podstawie sÅ‚uchu.

    Aktualizacja:
    Dane w tabeli są już dość stare (patrzac na daty komentarzy z 2006 roku), np. ZF posiada już moduły od Auth i ORM

  • Permalink for 'Mateusz_Kami__ski/2007/04/01/Polska_spo%c5%82eczno%c5%9b%c4%87_ZF'

    Polska społeczność ZF

    Dodany: kwiecieñ 1, 2007, 12:37pm CEST przez matipl

    Marzec był miesiącem dość owocnym. Poza wydaniem nowej wersji ZendFramework, to w ostatnich dniach powstała polska społeczność ZendFramework.
    W skÅ‚ad portalu wchodzi: planeta ) , blog oraz forum. Gdzie blog i forum dopiero raczkujÄ…, to na samej planecie jest już dość sporo powiÄ…zanych artykuÅ‚ów na temat tego frameworka.

    Co do stworzenia planety i bloga nie mam zastrzeżeÅ„. Fajnie, że wszystkie informacje bÄ™dÄ… dostÄ™pne w jednym miejscu, a blog-a powinien mieć każdy portal jako miejsce informacji o zmianach i opiniach (takie moje zdanie). Ale co do forum to zÅ‚y pomysÅ‚. Przez to polscy programiÅ›ci PHP srasznie siÄ™ rozdrabniajÄ…. Istnieje od kilku lat forum PHP i dobrze sprawuje swojÄ… rolÄ™. A tak trzeba skakać od forum do forum. Bez sensu… 

  • Permalink for 'Mateusz_Kami__ski/2007/04/01/Zend_Framework_1.0_wkr%c3%b3tce'

    Zend Framework 1.0 wkrótce

    Dodany: kwiecieñ 1, 2007, 12:15pm CEST przez matipl

    W marcu ukazaÅ‚a siÄ™ wersja Zend Framework 0.9.0 (pod sam koniec miesiÄ™ca ukazałą siÄ™ 0.9.1 nie wnoszÄ…ca za dużo nowego). Zawiera ona już wszystkie funkcjonalnoÅ›ci, które bÄ™dÄ… w wersji finalnej 1.0.
    Samo API 1.0 nie powinno już ulec wiÄ™kszym zmianom, wiÄ™c można spokojnie zacząć zapoznawać siÄ™ z frameworkiem. Obecnie prace trwajÄ… nad wyeliminowaniem błędów z kodu oraz dopieszczaniem dokumentacji.

    Mimo tak wysokiej wersji ZF wciąż brakuje wrÄ™cz podstawowej funkcjonalnoÅ›ci. MówiÄ™ o Å‚atwym tworzeniu formularzy i ich obsÅ‚udze jak to ma miejsce w paczce PEAR: HTML_QuickForm2.
    Niestety osoby, które korzystaÅ‚y do tej pory z Zend_Filter_Input nie bÄ™dÄ… zadowoleni, ponieważ ta klasa zniknęła w wersji 0.9.0. Zamiast niej mamy dostÄ™p do Zend_Filter oraz Zend_Validate, ale niektórych adekwatnych metod z Zend_Filter_Input brakuje. WiÄ™c migracja na nowÄ… wersjÄ™ może nie być taka Å‚atwa.

    Kolejną dość ważną zmianą jest rozbicie klasy Zend na:

    • Zend_Debug
    • Zend_Loader
    • Zend_Registry
    • Zend_Version

     

    Cała lista zmian

    Mam nadziejÄ™, że w kwietniu bÄ™dÄ™ mógÅ‚ przedstawić bardziej praktyczne infomacje, ponieważ w firmie planujemy testowÄ… przesiadkÄ™ na ZF.

    Na podstawie Zend Framework Beta 

     

  • Permalink for 'Mateusz_Kami__ski/2007/01/20/Zend_Framework_0.7'

    Zend Framework 0.7

    Dodany: styczeñ 20, 2007, 12:05pm CET przez matipl

    18 stycznia ukazała się kolejna wersja ZendFramework oznaczona numerem 0.7.0. Kodu coraz więcej i funkcjonalności też.
    W nowej wersji wprowadzono gÅ‚ównie klasy do obsÅ‚ugi lokalizacji oraz internacjinalizacji. I w koÅ„cu ktoÅ› porzÄ…dnie wziÄ…Å‚ siÄ™ za polskÄ… dokumentacjÄ™.

    Lista zmian (wybrane pozycje):

    • Komponent do zarzÄ…dzania lokalizacjami (L10N)
    • komponent do obsÅ‚ugi daty i czasu z uwzglÄ™dnieniem lokalizacji
    • komponent do obsÅ‚ugi tÅ‚umaczeÅ„ (I18N) (w inkubatorze)
    • komponent do obsÅ‚ugi jednostek i ich konwersji
    • nowa prototypowa klasa do obsÅ‚ugi filtrowania i walidacji (w inkubatorze)
    • nowa klasa do zarzÄ…dzania użyciem pamiÄ™ci w aplikacjach PHP (w inkubatorze)
    • usprawnienia w komponentach: MVC, Session, Gdata, HTTP Client, Search, XmlRpc
  • Permalink for 'Mateusz_Kami__ski/2006/10/04/Zend_Framework_i_logowanie_zdarze%c5%84'

    Zend Framework i logowanie zdarzeń

    Dodany: pa¼dziernik 4, 2006, 2:27pm CEST przez matipl

    Na phpArchitect pojawił się ciekawy artykuł opisujący samą zasadę logowania zdarzeń w aplikacjach Web, jak i zastosowanie do tego Zend Framework. Zapraszam do lektury.