Projekty

GRAD “drobne” zmiany

Postanowiłem dokonać przebudowy systemu modeli. Zasada działania będzie podobna, natomiast zmieni się nieco podejście i idea – mam nadzieję, że bardziej sensowna. Chciałbym odróżnić pojęcia “wynik” i “model”. W tej chwili “model” staje się wynikiem po pobraniu jednego wiersza, a po pobraniu wielu wierszy jest tylko listą wyników. Jest to mylące. Poza tym potrzebna jest większa konfiguracja klucza głównego. Należy poprawić integrację z PDO (w tej chwili mało logiczne jest “debugowanie” – gdyż do pdo odwołanie jest bezpośrednie. Poprawić trzeba mechanizm wyjątków, gdy uruchamiany jest z innego typu requesta (np tekstowego), poprawić system podstron zastępczych, np: “nie znaleziono strony” – czyli jak widac szykują się zmiany i poprawki, które zobaczymy w wersji 3.5 – kiedy? Mam nadzieję, że wkrótce 🙂

kolejne “bajery” GRAD’a

Cały czas pracuję nad frameworkiem ale niestety mam na to bardzo mało czasu – ważne jest to, że framework wspomaga już “żywy organizm” dzięki temu wszystkie funkcjonalności można testować “w realu” a nie tylko syntetycznie.

Już teraz wiem, że powstaną różne metody organizacji swojego projektu wg naszego ulubionego stylu i potrzeb. W tej chwili te 2 metody to:

  1. budowa zdarzeniowa – czyli akcje i layout
  2. budowa page’owa – czyli strony złożone z modułów

Ewentualnie dojdzie do tego coś “pomiędzy”. Chciałbym aby dało się organizować w ramach jednego projektu kilka różnych layoutów zawierajacych funkcjonalności zamknięte w modułach – myślę, że to będzie dobre rozwiązanie gdyż GRAD pozwoli na jeszcze bardziej elastyczne i swobodne projektowanie wg swojej ulubionej metody.

Poprawki wersji 0.3 mają się już ku końcowi zatem omawiane zmiany pojawią się w wersji 0.4 🙂 Może w końcu uda mi się framewok pokazać 🙂

Będzie GRAD 0.3!

Trochę się obsunęło wszystko… ale wersja 0.3 ujrzy światło dzienne bankowo. Do tej wersji zamierzam także przygotować już bardziej kompletny tutorial oraz demo.

Zapraszam do dokumentacji – najważniejsze zmiany

Gdy tylko uporam się z moimi bieżącymi projektami udostępnie framework.

GRAD 0.2.1

Po kilku przemyśleniach doszedłem do wniosku, że bez pewnych dodatkowych możliwości elastyczności się nie obejdzie – jednocześnie starałem się aby nie wpływało to na wydajność. Celem jest oczywiście zwiększenie prostoty i funkcjonalności… jeżeli coś miałoby zwolnić system to będę szukał innych rozwiązań. Do zapowiadanej wersji 0.2 dodaję zatem numerek 0.2.1 i jest na chwilę obecną oficjalne oznaczenie.

GRAD 0.2.1

zmieniono:

  1. plik Application został usunięty z katalogu application i przeniesiony na ten sam poziom do katalogu appservice dzięki czemu może korzystać z tych samych opcji co MVC. Stworzenie tego pliku jednocześnie przestało być wymagane.
  2. katalog z serwisami “application” został zamieniony na “service”
  3. NestedTree (z racji tego, że nie jest elementem frameworka) przeniesiono do katalogu podrzędnego o nazwie “tools” – i w tym katalogu będą się znajdowały różne dodatkowe podsystemy. Być może to w przyszłości się zmieni.

nowe funkcjonalności:

  1. Utworzona została klasa “GRAD” (klasa wróżka) która będzie statyczna i będzie niosła ze sobą różne przydatne funkcje – dostępne w każdym miejscu. W tej chwili dzięki niej możemy zaczytać moduł oraz toolsa
    GRAD::getModel(‘nazwa_modelu’); GRAD::getTool(‘nazwa_toolsa’); – myślę, że jej funkcjonalność będzie z czasem rozwijana.

poprawiono:

  1. Ogólna optymalizacja w związku z wprowadzonymi zmianami.

GRAD i AJAX

Podczas tworzenia frameworka zastanawiałem się jak najprościej i najwygodniej zrobić w frameworku obsługę ajaxa. Wymyślałem i wymyślałem i w końcu przyszło mi do głowy rozwiązanie najprostsze z możliwych: “Nie wymyślać nic”.

Przygotowałem artykuł w którym przedstawiam wady i zalety pewnych rozwiązań oraz sposób użycia AJAX’a korzystając z frameworka GRAD.

Zapraszam serdecznie do artykułu i jak zwykle czekam na Wasze komentarze.

Powoli… ale do przodu

Nie kryję, że GF (GRAD Framework) jest mocno wzorowany na Zend Framework i stanowi jego skromniejszą podróbkę. Po pierwsze dlatego, że ma on (ZF) dużą szansę przetrwać w świecie frameworków, po drugie jest całkiem dobrze przemyślany – oczywiście, zawsze można coś zrobić lepiej… a po trzecie… chciałbym stworzyć ultraszybki, nieobciążający serwera i nieprzeładowany “featuresami”, z których 90% nie jest wykorzystywana. W tej chwili GF oferuje funkcjonalność front kontrolera, kontrolera akcji, widoku, modelu, rejestru, wyjątku, obsługi requestów, bazy danych i debugger’a – a to już jest całkiem sporo.

Co jakiś czas będą się pojawiały także różne dodatkowe modele. Pierwszym z nich jest NestedTree. Jest to idea wyświetlania obiektów pogrupowanych w relacje na zasadzie “dziecko – rodzic” na zupełnie innej zasadzie. Tutaj drzewa są grupowane w przedziały dzięki czemu wyciąganie informacji z takiego drzewa odbywa się na podstawie jednego zapytania (bez żadnych dodatkowych zapytań – potrzebny nam tylko przedział) – funkcjonalny model jest już gotowy i powinien być rozszerzony do właściwego modelu, gdyż sama klasa obsługuje poruszanie się po niezbędnych parametrach. Wystarczy rozszerzyć klasę o tablicę kolumn takiego modelu (tak jak w standardowym modelu) aby w pełni funkcjonalnie korzystać z tego rozwiązania. Oczywiście przy okazji prezentacji frameworka postaram się przygotować jakiś przykład gdyż jestem zwolennikiem tego rozwiązania.

Założenie frameworka jest takie, że kosztem elastyczności i konfigurowalności… uzyskamy solidny i mocno stojący na ziemi framework, który wymusza pewien sposób pisania.. a przez to zyskujemy prostotę, czytelność i prędkość (GF nie będzie buforował całego procesu generowania strony – dzięki temu uzyskamy dużą prędkość przeglądania)

Z racji tego, że framework jest rozwijany w zasadzie tylko przez jedną osobę i na razie pozostaje wewnętrznym dobrem gruby goblix mogę sobie na takie rzeczy pozwolić – czas pokaże czy to był dobry krok.

Wersja 0.2 zbliża się dużymi krokami. Chciałbym do tej wersji zawrzeć i poprawić niektóre elementy:

  • Poprawić czytelność trasowania wyjątków
  • Dodać obsługę modułów (dodatkowo przerobić rewriter)
  • Dodać obsługę helperów
  • Dodać obsługę layoutu

Jest to oficjalny plan funkcjonalności, które powinny ukazać się do wersji 0.2. Wtedy także zaprezentuję framework na zewnątrz.

Pozdrawiam.

GF 0.1.1 już jest!

Testowa wersja framemorka, w którego skład wchodzi obecnie tylko kontroler jest przystosowana do uruchamiania zdarzeń z plików klas i akcji na podstawie requestów. Framework jest testowany i pojawi się na stronie po zatwierdzeniu wersji 0.2

Kontroller potrafi obecnie

  1. Uruchamiać funkcje z klas po analizie danych requestu
  2. Zbierać parametry z requestów
  3. Przepisywać wybrane zmienne na wywołanie akcji w kontrolerze

Framework i framework…

Przy okazji budowy własnego frameworka warto zapoznać się z już istniejącymi aby wykorzystać/podpatrzeć dobre pomysły i unikać jak ognia tego co jest złe 🙂 Kilka najpopularniejszych:

Prado jest bardzo rozbudowanym i eleganckim frameworkiem, jednak przeznaczony jest dla naprawdę cierpliwych i dobrze zaznajomionych z nim ludzi. Pisanie w Prado wymaga jednak nauczenia się w zasadzie całkowicie nowego języka. Nie zmienia to faktu, że Prado zapewnia obsługę praktycznie każdego elementu strony jaki przyjdzie nam stworzyć… no ale coś za coś. Polecam go osobom, które pisały w ASP.NET – poczują się jak w domu. Na stronie znajduje się też całkiem fajny kurs.
Prado: http://www.pradosoft.com
Kurs: http://www.pradosoft.com/documentation

Zend jest stale rozwijającym się frameworkiem i przechodzi bardzo gruntowne zmiany. Do niedawna pojawiały się spekulacje, że pisanie w Zend jest jak samobójstwo ponieważ tak intensywnie się zmienia. Dziś mamy już stabilną wersję, ktorą można pobrać ze strony producenta i śmiało pisać. Niestety nie ma wielu “kursów” ale za to na stronie znajduje się pełna dokumentacja.
Zend: http://framework.zend.com
Kurs: http://framework.zend.com/manual/videos

Symfony jest frameworkiem bardzo dobrze udokumentowanym i posiadającym bogatą bazę wiedzy, przykładów i kursów. Programista dosyć często korzystać musi z konsoli wywołań skryptów do różnych operacji (np budowanie modelu danych (Prado też to potrafi), tworzenie szablonu projektu wraz z operacjami CRUD ). Dzięki temu można zautomatyzować proces projektowania z procesem wdrożenia. Nie ma potrzeby robić modelu bazy danych w kodzie projektu a potem “grzebać” w bazie danych. Można to jednym poleceniem zsynchronizować. Symfony ma dosyć sztywną strukturę katalogów co osobiście mi się podoba bo wymusza porządek w kodzie. Åšwietnym pomysłem jest uruchamianie programu w środowisku developerskiem – wystarczy w kodzie nie odwoływać się do index.php tylko np do frontend_dev.php. Taka operacja uruchomi nasz kod wraz z ładną konsolą z raportami, informacjami o serwerze, o połaczeniach z bazą danych itd – świetne narzędzie. Podsumowując: Symfony wydaje się czerpać to co najlepsze z obu rozwiązań dlatego warto przyjrzeć mu się bliżej.
Symfony: http://www.symfony-project.org
Kurs: http://www.symfony-project.org/doc/1_0/

Jeżeli znajdziecie jakieś fajne kursy do w/w możecie je zamieścić w komentarzu a ja je dodam 🙂

Mimo wszystko Zend Framework jest bardziej przyjazny programiście PHP, gdyż w zasadzie nie tworzy żadnych nowych “magicznych” języków. Jest to po prostu zbiór całkiem fajnych klas i funkcji, które ktoś napisał za nas – i to osobiście bardziej mi odpowiada. Symfony z kolei usprawnia wiele procesów i je automatyzuje… czasami wręcz bez pisania ani jednej lini kodu PHP na etapie projektowania – co tak naprawdę jest dobrym rozwiązaniem ponieważ kapsułkuje rozwiązania i rozwiązuje zamysł projektowy – potem dopiero zaczyna się właściwe pisanie kodu. Prado jest bardzo fajnym frameworkiem, ale zdecydowanie potrzeba dużo czasu na jego opanowanie. Zend wydaje się w miarę prosty ale brakuje w sieci przykładów przez co ciężko go opanować. Symfony wydaje się czerpać plusy z obu tych rozwiązań – pozostawiając jednocześnie programiście wolną rękę -mimo wszystko jednak, potrzeba dużo czasu na jego opanowanie.
Jeżeli czas pozwoli to postaram się przeprowadzić parę kursów z różnych frameworków dla osób, które chciałyby się czegoś nauczyć – czas pokaże 🙂

Pozdrawiam i do usłyszenia wkrótce.

Framework II – projekt rozpoczęty

Projekt framework’a dla aplikacji www rozpoczynamy w lutym

Specyfikacja:

  • PHP 5
  • Wyjątki
  • Konfiguracja struktury katalogów
  • Niezależność systemu bazodanowego
  • Debugowanie
  • System szablonów
  • Parsowanie requestów
  • Zgodność z normami dokumentacji kodu

Bliższe informacje pojawią się wkrótce. Framework I pojawi się wkrótce na stronie.

Koniec projektu kasyno?

Projekt kasyno powoli zmierza ku końcowi. W lutym projekt zostanie zamrożony. Prawa autorskie zostają odsprzedane firmie trzeciej.

Go to Top