Heavymind
Gdyby ludzie rozmawiali tylko o tym, co rozumieją, zapadłaby nad światem wielka cisza.

07/04/2008

Nadchodzi Symfony 1.1

Opublikowane jako: Symfony — Tags: , , , , , , — Kubek Bartosz @ 22:34

Kilka nieatrakcyjnych cech, jakie pozwoliłem sobie wytknąć framework’owi Symfony w poprzednim wpisie, pokazuje jego niedoskonałość. Cóż, trudno - ponoć nie istnieją rozwiązania doskonałe.

Jednak w przypadku tego framework’a, dużo ma się zmienić i to na lepsze. Zapoznając się z jednym z ostatnich wpisów na blogu Symfony, dowiadujemy się szczegółów nt. tego co ulec ma zmianie. Są nimi w większości:

  • całkowicie napisany od nowa Command Line Interface (CLI), wraz z solidnie rozpisanym helpem. Jest faktem że podczas procesu developerskiego, Symfony CLI jest wykorzystywany często. Jest więc to krok w dobrą stronę,
  • zbudowano nowy subframewok do budowy formularzy. Jest on całkowicie obiektowy. Konsekwencją tego zabiegu jest: wyeliminowanie View Helperów (bardzo dobrze, zalatywały PHP4 ), zastąpienie wątpliwego mechanizmu walidatorów budowanych w plikach YAML, walidatorami obiektowymi ( jako część wspomnianego subframeworka), oraz wszelka integracja warstwy widoku, oraz żądań (Request’ów) z tym systemem. Tutaj duże brawo,
  • integracja zabezpieczenia przeciw atakom Cross-site request forgery (CSRF), jako element subframeworku formularzy. W mojej opinii, mechanizmy przeciwdziałania CSRF, są bardzo ciekawym zjawiskiem jakie jest aktualnie w modzie. I dobrze, ponieważ obszar jaki pokrywają serwisy internetowe jest coraz większy. Zwiększanie bezpieczeństwa witryn poprzez propagowanie kolejnych standardów jest przez mnie jak najbardziej uznawane,
  • rozszerzono możliwości systemu cache’owania. Woila! Jedna z najgorzej przygotowanych rzeczy w wer. 1.0 została przystosowana do użyteczności. Będzie więc można:
    - łatwo usuwać cache’e innej aplikacji, niż aktualna,
    - podczas potrzeby uzyskania dostępu do grupy cache’ów w celu usunięcia ich, możemy skorzystać z znaków wieloznaczności ( wildcards ) ( zapowiada się dobra alternatywa dla tagów znanych z Zend Framework),
    - jako z miejsca składowania cache’y będziemy mogli wybrać Memcache ( przy aktualnych niskich cenach RAMu, trzymanie np aż 8GB cache’owanych danych w pamięci RAM serwera www nie jest żadnym problemem ),
    - generalnie cache w końcu będzie można zastosować nie tylko do warstwy widoku, lub całościowo MCV, ale do wszystkiego, np: warstwy modelu,
  • usprawniono pracę z konfiguracjami, tj: lepszy parser YAML, pomocne informacje o błędach w YAML, możliwość większego prze strukturyzowania warstwy konfiguracyjnej. Nie znajduję jednak tutaj żadnej rewolucji. Dotychczasowe rozwiązania były czytelne w mojej ocenie,
  • rozbudowano możliwości mapowania obiektowo-relacyjnego (ORM), wraz z aktualizacją przy tym PROPEL‘a do nowszej wersji. Co zwróciło mą uwagę, to poprawienie czytelności plików schematu YAML podczas “zrzucania” istniejącej DB do YAML, oraz dodana możliwość definiowana danych testowych w relacji wiele-do-wielu (w tzw. plikach “fixtures”, zawierających stałe dane testowe, które się exportuje do bazy danych )
  • usprawniono system routingu. Nie wiele tu do skomentowania. Dobrze, ot co!,
  • rozbudowano możliwości systemu wielojęzykowego ( i18n ). To chyba jedno z ważniejszych usprawnień! Dzięki podłączeniu silnika cache’owania, oraz dodaniu narzędzi CLI do zarządzania różnicami w treści szablonów widoku, a słownikami (XLIFF w tym przypadku), tworzenie projektu wielojęzykowego w Symfony będzie w końcu wygodne!

To większość zmian jaka idzie z nową wersją. Jak widać jest tego na tyle sporo, a w mojej ocenie zmiany mają na tyle znaczenie, są tak wspaniałe i usprawniające pracę i jej jakość, iż z własnej strony, osobie noszącej się z zamiarem nauki tego framework’a polecał bym zaczekać jeszcze. Tak by zacząć od studiowania najnowszej wersji 1.1. Opinię tę opieram na fakcie tego jak wiele z wersji 1.0 stanie się nieaktualne i nie zalecane, jak również na tym, iż dokumentacja w postaci książki “The Definitive Guide to symfony”, owszem dostępna on-line w wersji 1.1, nie jest jeszcze zaktualizowania ( przez co informacje w niej o rozwiązaniach z wersji 1.1 jest szczątkowa ).

Ostatnio opublikowana rewizja w wersji 1.1 to Beta2. Nie udało mnie się jednak dotrzeć do informacji, kiedy możemy sie spodziewać rewizji Public Release. Z pewnością będzie to jeszcze kilka tygodni, przynajmniej.



06/04/2008

Panowanie nad Symfony

Opublikowane jako: AJAX, Symfony, Zend — Tags: , , , , , , , , — Kubek Bartosz @ 19:23

Pochłonięty światem frameworka Symfony, całkowicie zatraciłem poczucie czasu i “przespałem” moment, w którym to pewnie wszyscy “wymacywali” wszystkie nowe “ficzery” Zend Frameworka 1.5. Zajęty jednak mnogością zagadnień jakie pokrywa swoją funkcjonalnością Symfony, nie sposób było zrobić inaczej.

Po bardzo dokładnym jednak zapoznaniu się z Symfony, wyrobiłem sobie własną opinię na jego temat, która w paru detalach stawia go w nie najlepszym świetle. W mojej opinii :

  • model cache’owania jest na tyle niewygodny podczas potrzeby usunięcia “nieaktualnych cache’y”, że jedynym rozwiązaniem pozwalającym użyć ten mechanizm w dużym, a nawet średnim projekcie, jest rozszerzenie go samodzielnie o “tagi”, którymi poszczególne cache można by oznaczyć (co nie było by takie łatwe uwzględniając bardzo rozbudowaną strykturę cache’owania w Symfony)
  • i18n (moduł budowania aplikacji wielojęzykowej) jest straszny. Otóż podczas pracy z nim potrzeba jest przenoszenia każdej frazy z template’a do pliku słownika, który można budować np. w formacie XML Localization Interchange File Format (XLIFF) (co akurat jest dobrym rozwiązaniem ze względu na to, że istnieją programy wspomagające pracę z słownikami w tym formacie). Jednak każdorazowa potrzeba pisania frazy w template’cie oraz ponownego zdefiniowania jej w XLIFF’ie jest niewygodna. A już na pewno nie do zniesienia jest, w razie potrzeby poprawienia frazy w oryginale ( w template’cie ), wymóg poprawiania jej w słowniku (np XLIFF). Stosując w kolejnych projektach stałe i sprawdzone rozwiązanie oparte na kluczach stałych ( np “NAVIGATION_ITEM_MEMBER_HOME” ), zastanawiam się skąd takie podejście. Owszem, są sposoby by to obejść, jednak nie w tym rzecz by trzeba było obchodzić domyślne schematy.
  • integracja JavaScript ( w tym Prototype oraz Scriptaculous ) w szablony HTML ( template’y ) poprzez zastosowanie licznych tzw View Helperów (znane zagadnienie również dla programistów Zend Framework) jest jeszcze bardziej straszne i w mojej ocenie nie do zaakceptowania! Otóż, idąc tą drogą, jako rezultat szablonu zawierającego udogodnienia web2.0 (w kontekście interaktywności JavaScript i AJAX), otrzymujemy kod HTML, licznie posiekany wstawkami “<script></script>”, czy też CDATA. Mimo więc mej znajomości wszelkich “remote” Helperów (właśnie tych od komunikacji AJAX, oraz wstawek zwykłego JavaScript) w Symfony , pasuję i wybieram tworzenie logiki po stronie klienta (JavaScript) w dotychczasowym stylu: jako osobne pliki .js.
  • ostatecznie odniosłem wrażenie, że autorzy książki “The Definitive Guide to symfony“, opisując liczne Helpery widoku (tj. input_tag(),  object_input_tag() itp.), nieraz sami próbowali na siłę przekonać samych siebie do potrzeby pisania template’u za ich użyciem. W mojej skromnej ocenie, szablony HTML, mają być szablonami HTML, a nie zbitką kodu PHP, gdzieniegdzie tylko poprzedzielaną znacznikami DIV. Tak jak w przypadku podstawowych Helper’ów widoku w Zend Framework, pachnie to sztuką dla sztuki.

Jednak to już wszystko co mogę powiedzieć złego o Symfony. Zauważyć więc należy, że by wytypować większość zalet tego framework’a, musiałbym napisać serię felietonów. Szala przeważa za tym, by traktować Symfony jako poważny framework, gotowy by pisać w nim duże, wielojęzyczne i nowoczesne aplikacje www.

Swoją drogą, framework ten w aktualnej stabilnej wersji 1.0 ma już ponad rok, co każe domniemywać , iż w nadchodzącej wersji 1.1 dużo się zmieni. I owszem, ale o tym już w następnym wpisie wkrótce.



18/02/2008

Podróże kształcą - Symfony, YAML, Propel, Prototype

Opublikowane jako: Symfony, Zend — Tags: , , , , — Kubek Bartosz @ 21:47

Kilak spraw organizacyjnych.

Dla osób, które zniecierpliwienie oczekują kolejnych artykułów, przekazuję i proszę - cierpliwości. Na zastój w publikacji zapowiadanych artykułów ma wpływ jedna szczególnie rzecz - nadchodząca wersja 1.5 Zend Framework.

Najprzód, chcę pokreślić, iż aktualnej wersji “1.5 Preview Release” (czyt. wdania zapowiadającego co będzie nowego) , nie wspieram/nie przyjmuję do wiadomości. Zespół autorów Zend Framework wyjaśnia, iż wiele metod w nowo dodanych funkcjonalnościach, może zmienić zasadę swego działania, jak również mogą zostać całkiem usunięte w części. Dlatego też niech dojrzewa swoim tempem nadchodzące wydanie tego frameworka.

Jedną z większych zmian jakie oferować mają nowe biblioteki, to spore zmiany w Zend_View. A dokładnie rzecz ujmując, autorom bibliotek rozszerzających możliwości Zend_View (tj. Zend_Layout, Zend_View_Helper_Placeholder), udało się wprowadzić ich rozwiązania jako składnik podstawowy pakietu Zend Framework w nadchodzącej wersji. Brawo im za to.

Co za tym idzie, istniejący już artykuł na łamach tej strony nt. Zend_Layout , będzie do przeróbki, a trzeci z serii który miał powstać, traktujący o widokach komponentowych, widokach częściowych itd. nie powstanie na bazie wcześniejszych, zewnętrznych i dodatkowych bibliotek. Owszem - powstać może, ale już w oparciu o przyszłą stabilną wersję 1.5.

Inna rzecz, że przygotowany materiał na artykuł drugi z serii Zend_View, traktujący o implementacji Smarty, nadal może powstać, ponieważ nie koliduje z tym co nadchodzi w nowym Zend Framework. Mam nadzieję iż będę gotów z publikacją tego artykułu przed stabilna nową wersją Zend Framework.

A między czas oczekiwania na Zend Framework 1.5, polecam poświęcić podróżom po po nowych lądach. Moim wyborem jest Symfony - ogromny framework, z równie olbrzymią społecznością używających go programistów. Pokuszę się o stwierdzanie, że jest to drugi co do rozmachu i zaawansowania framework, obok Zend Framework. Również w pełni obiektowy, posiadających wiele wspaniałych wbudowanych rozwiązań, do których Zend Framework albo już dąży w stosunku do jednych, albo jeszcze o tym nie wie że dążyć będzie, w stosunku do innych. Budowanie modułów z poziomu linii poleceń, implementacja i integracja z PROPEL‘em, który zapewnia część Modelu struktury MVC, integracja z Prototype, pełna konfigurowalność wszystkiego dzięki plikom YAML, część View modelu MVC posiadająca takie rozwiazania jak: widok layout’owy, komponentowy, częściowy itp. To wszystko od dawna już jest, doskonale udokumentowane, stabilne i gotowe na każde zastosowanie. Polecam przejście “kalendarza adwentowego” - 24 części samouczka, opisujących jak w Symfony zbudować aplikację web2.0.

Idąc więc z nurtem słów, często wypowiadanych przez mego przyjaciela: “podróże kształcą”, polecam serdecznie zapoznanie się z w/w frameworkiem. Można nabrać cennego dystansu do różnego rodzaju rozwiązań (lub ich brak), znajdujących się w naszym “upatrzonym” Zend Framework’u.



Oparte na WordPress