Posts tagged GRAD

Prime

Tak to jest, że czasem aby pójść dalej trzeba zawrócić i wybrać inną drogę. Tak samo jest z rozwijaniem umiejętności, projektów i celów sobie postawionych. GRAD Framework był rozwijany tylko przeze mnie a inicjatywa postała z chęci lepszego zrozumienia Zend Framework. ZF rozwija się bardzo szybko, rośnie do niebagatelnych rozmiarów i często przy pierwszym “starciu” z nim można się przerazić. GRAD rozwijał się w taki sposób, że “to co jest fajne w zendzie” starałem się zaimplementować do GRADA jednak nie korzystając w ogóle z tego jak kod w Zendzie jest napisany. Myślę, że mogę śmiało stwierdzić, że część rzeczy działa nawet lepiej i na pewno szybciej. GRAD Framework przyjął się bardzo dobrze w kilku środowiskach developerskich (zawodowych i amatorskich). Otwarcie projektu na innych pozwoliło mi na spojrzenie na framework z dystansu, dowiedziałem się wielu rzeczy o usability oraz o rzeczach, które w nim działają słabo lub czego w nim brakuje.

Z kolei z inicjatywy dalszych badań nad frameworkami takimi jak Code Igniter czy później Kohana, oraz badań nad frameworkiem Symfony, zrodziła się idea podobna do “GRAD’owej” a mianowicie Luna Framework. Niestety okazało się przy dalszym badaniu, że idea wykracza poza to do czego ludzie się przyzwyczaili przez co była zbyt “niestandardowa” aby programista chętnie do tego przysiadł i zgłębił jego założenia. Robienie kolejnego framework’a który robi wszystko inaczej wydała się bez sensu dlatego projekt porzuciłem.

Kilka miesięcy potem analizując ponownie GRAD’a, Lunę oraz powstający system CMS (który kiedyś zaprezentuję) oraz analizując kierunki którymi podąża ZF oraz to jak rozwija się PHP stworzyłem ideę zintegrowanego systemu pod nazwą Prime. W tej chwili pracuję nad rozwojem frameworka wykorzystującym komponenty w zwarty sposób. Tzn, idea polega na czymś zupełnie przeciwnym do założeń ZF. Framework stanowi całość – nie ma w nim w zasadzie rzeczy opcjonalnych. Dzięki temu system działa bardzo szybko i zajmuje niewiele pamięci. Ponadto pozwala na dzielenie swoich komponentów między wieloma aplikacjami. Podobnie jak w GRAD system będzie pozwalał na uruchamianie wielu aplikacji na tym samym czasie. Ponadto zintegrowany system będzie szybszy i czytelniejszy. (Zaprezentuję wkrótce porównanie wydajności).

W kolejnej serii artykułów zaprezentuję sposób w jaki zaimplementowane są poszczególne elementy systemu a na końcu dojdziemy do pełnej integracji całego komponentu.

Postaram się zaprezentować w kolejnych odcinkach:

  1. Prezentacja poszczególnych części systemu i wyjaśnienie ich najważniejszych elementów
  2. Tworzenie projektu w NetBeans IDE
  3. Podłączanie do swojego projektu pakiet frameworka Prime
    a) Tworzenie “externala” dla projektów wersjonowanych w SVN
    b) Tworzenie zrzutu (checkout) dla projektów, które nie są wersjonowane
  4. Uruchomienie “Hello world” opartego o framework
  5. Zaawansowane funkcje systemu

Info! Będę używał do prezentacji środowiska NetBeans tylko dlatego, że mi ono odpowiada. Do zrealizowania i zrozumienia tematu możesz używać dowolnego innego środowiska (np Eclipse) czy nawet zwykłego edytora z kolorowaniem składni (np Notepad++). Podobnie z SVN. Możesz użyć samodzielnego klienta (np Tortoise SVN) do ściągania repozytorium. Ja używam NetBeans dlatego, że jest tam “All in One”. Jeżeli, na którymś etapie pojawią się problemy to oczywiście chętnie pomogę.

Zapraszam do artykułów

  1. Request

Nowy projekt – Luna

Luna logoLuna to nazwa mojego nowego projektu. Jest to (podobnie jak GRAD) framework PHP. Luna jest dedykowana do zastosowań bardziej profesjonalnych.

Założenia polegają m.in. na wyciągnięciu wszystkiego co najlepsze z istniejących rozwiązań i wkomponowanie ich w jeden prosty i szybki framework (podobnie jak GRAD tylko, że bardziej pro). Główne założenia:

  • MVC
  • Modele danych
  • Kontrolery i akcje
  • Obsługa błędów i zdarzeń
  • Benchmark
  • Router

To tyle z najważniejszych rzeczy. Luna będzie bardziej rozbudowana co nie znaczy wolniejsza niż GRAD. Najważniejsze z punktu widzenia projektowego będzie stworzenie elastycznego routera i sensownego modelu danych.

Szczegóły i historia opracowania projektu znajduje się w dziale Projekty

Źródła skryptu Emotors 1.0

Witam. Dziś mam do zaprezentowania ciekawostkę. Zamieszczam w pełni działajacy lecz bardzo stary skrypt giełdy samochodowej, który robiłem jeszcze przy praktycznie znikomej znajomości PHP.

Skrypt pisany jest w PHP4 i uwaga: trzeba mieć włączone Register globals 🙂 Skrypt nie powinien być odpalany na środowiskach produkcyjnych gdyż jest zbyt stary i byłby niestabilny. Nie ponoszę za skrypt żadnej odpowiedzialności i nie udzielam wsparcia. Jest to tylko i wyłącznie ciekawostka

Dla chętnych skrypt emotors

Umieszczam skrypt ze względu na to iż produkuję Emotors 2.0 Jeśli dobrze pójdzie to również trafi on tutaj. Silnikiem głownym będzie oczywiscie GRAD Framework.

Nowy GRAD komponent: Form

Zawziąłem się w sobie i w końcu postanowiłem zrobić porządnie i wygodnie znienawidzonego przeze mnie elementu w programowaniu stron WWW: formularzy.

Poszperałem, poczytałem i mnie więcej doszedłem do ogólnego zarysu i idei. Składnia powinna nieco przypominać tę z framework’a Zend – jednakże mechanizm działania opiera się zupełnie na innej zasadzie.

Założenia są następujące: Ma być szybko, prosto i automatycznie.

Pierwsza wersja ukaże się wraz z wersją 0.4, o której pisałem już jakiś czas temu. Wersja 0.4 obfitować będzie przede wszystkim w:

  1. Optymalizację funkcji i metod zapytań
  2. System sekcji
  3. Komponenty (pierwszy z nich to wspomniany Form)
  4. Optymalizacje i uproszczenia w kodzie

W ogólnej postaci Grad Framework posiada już elementy wersji 0.3 i 0.4. Postaram się dokończyć założenia i w końcu opublikować działający kod – z którego będę zadowolony.

GRAD 0.3 – postępy

Ostatnio sprawy zawodowe przybrały mocno na sile przez co kompletnie nie miałem czasu zająć się stroną i projektami. Udało mi się jednak wdrożyć w framework system obsługi sekcji. Po tą “tajemniczą” nazwą kryje się bardzo prosta rzecz – a mianowicie: dodatkowy poziom drzewa katalogów. Obrazując to prościej:

W tej chwili przykładowy request:

/konto/logowanie

uruchomi kontroller kontoController i funkcję logowanieAction. To czego mi brakowało to pewien dodatkowy abstrakcyjny stopień grupowania funkcjonalności – i tak narodziło się pojęcie sekcja. Przykładowo:

tworzę katalog o nazwie “autor” i wewnątrz niego dopiero tworze kontrollery:

controllers/
—- indexController.php
—- kontoController.php
—- panel/

—- autorController.php
—- ustawieniaController.php

itd. W ten sposób można zgrupować pewne duże fragmenty funkcjonalności nie zabierając miejsca w kontrolerze – który przecież ma odpalać się błyskawicznie – bez przedzierania się przez setki niepotrzebnych kilobajtów. Zatem odpalenie jakiejś funkcji w sekcji mogłoby wyglądać tak:

/panel/autor/aktywacja

i to wszystko. Prosta rzecz a jakże przydatna. System sam znajduje czy dana “sekcja”  istnieje – jeśli tak to korzysta z danego poziomu drzewa.

logo GRAD

grad-logoLogo framework’a GRAD. Zostało już przygotowane o wiele wcześniej ale jakoś nie miałem okazji go wrzucić i pokazać więc czynię to teraz.

Po kliknięciu możecie obejrzeć je w lepszej rozdzielczości.

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ć 🙂

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.

Go to Top