konto usunięte

Temat: Prosty Polski framework ?

:) Jarek - czemu niemiło? Nie widzę w swojej wypowiedzi niczego niestosownego. Napisałem, żeby zwrócić uwagę, że Paweł również jest autorem jakiegoś frameworka a zaczął swoją wypowiedź pytaniem "Po co kolejny?". Pisanie swojego frameworka i poznawanie już tych istniejących to świetna sprawa i tyle. Żaden flame nie był moim zamiarem.

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Nie chodzi o to, żeby robić jakiś flame, bardziej na razie chodzi o fun.

Wypiszmy sobie cechy idealnego frameworka, podyskutujmy.

Idealny dla mnie != idealny dla ciebie.
I to jest główny problem.

Dla przykładu - z Symfony 2 podoba mi się kilka rzeczy ale reszta już nie, z Zend'a podobnie i tak dalej.
Więc sobie łączę to co mi się podoba :)

Już pomijam fakt, że podczas pisania można się sporo nauczyć/douczyć/pomyśleć/przemyśleć (niepotrzebne skreślić).Michał Wachowski edytował(a) ten post dnia 09.05.11 o godzinie 16:56
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Okay racja - idealnego w 100% nie da się napisać, jedno jest wiadome - to ma być framework do pisania aplikacji działających w środowisku internetu opartych o PHP.

To nie chodzi o to żeby to był "mój" framework jak ktoś napisał wcześniej, bo swój to już mam od 8 lat i napisałem w nim ponad 100 projektów.

Chodzi w tym wszystkim o to aby odnieść jakąś wspólną korzyść z luźnej współpracy - bo nawet jeżeli framework nigdy nie powstanie sama dyskusja może być korzyścią.

Pytanie tylko co jest bardziej wartościowe - dyskutowanie tutaj w trochę przypadkowym wątku, czy dyskusja bardziej uporządkowana.

Dlatego nie chciałbym teraz tutaj prowadzić dyskusji w tym wątku, jak już dodam więcej tematów/contentu na grupie frameworka to napiszę na tej grupie info/zaproszenie do dyskusji.

Oczywiście jak ktoś ma chęć/zapał to może się tam udzielać już teraz.

Na razie z mojej strony uprzejmy EOT ;-)Tomasz Zadora edytował(a) ten post dnia 09.05.11 o godzinie 17:05

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
:D GL to taka przerwa między linijkami kodu.

W takim razie założyłem bardzo wstępnie grupę http://www.goldenline.pl/forum/php-dreamframework <- zapraszam
> zainteresowanych.

Dreamframework to taka nazwa robocza - bo jak na razie to tylko sen ;-)

ja osobiście odpadam Tomku, ale dzięki za zaproszenie

konto usunięte

Temat: Prosty Polski framework ?

jeśli chodzi o zapytania na prv odpowiem wszystkim w ciągu kilku dni

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Chodzi w tym wszystkim o to aby odnieść jakąś wspólną korzyść z luźnej współpracy - bo nawet jeżeli framework nigdy nie powstanie sama dyskusja może być korzyścią.

ja osobiście nie wierzę w publiczne tworzenie rzeczy przełomowych :-)

programiści są trochę jak artyści, skryci, perfekcjoniści
Pytanie tylko co jest bardziej wartościowe - dyskutowanie tutaj w trochę przypadkowym wątku, czy dyskusja bardziej uporządkowana.

ani to ani to

trzeba zbudować team, a do tego potrzebny jest lead, który zapali wizją resztę i reszta, która będzie na tyle zmotywowana by pójść za leadem
Dlatego nie chciałbym teraz tutaj prowadzić dyskusji w tym wątku, jak już dodam więcej tematów/contentu na grupie frameworka to napiszę na tej grupie info/zaproszenie do dyskusji.

osobiście - życze powodzenia, ten sposób działania kłóci się jednak z moimi motywami
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Szkoda, dzięki za przedstawienie swojego punktu widzenia :)

konto usunięte

Temat: Prosty Polski framework ?

Polski projekt/Polski framework stworzony przez ludzi z 4programmers.net

http://coyote.boduch.net/

Kilka osób mówiło że jest dobry :P ...

konto usunięte

Temat: Prosty Polski framework ?

Znacie powiedzenie że gdzie jest 3 programistów tam jest 4 pomysły i 5 sposobów realizacji ? Jak kilku programistów zacznie ze sobą dyskutować to jedyny efekt będzie taki że czas realizacji wyniesie dodatkowe +5 miesięcy :P

Idealny framework jak ktoś tu napisał - nie istnieje. Znam trochę Zenda i mi się kompletnie nie podoba. Później pozaglądałem troszkę w Symfony i muszę powiedzieć że też mi nie podszedł. Owszem, kilka elementów mi się spodobało ale ogólne wrażenie raczej miałem kiepskie.

W firmach gdzie pracowałem, stosowano autorskie rozwiązania. I tak o ile z jednej nie wyniosłem nic co by mi się spodobało o tyle w innej kilka pomysłów już mi się spodobało.

Miałem kilka fajnych (chyba) pomysłów własnych.

I tak Zend + Symfony + poznane rozwiązania autorskie + własne pomysły + parę eksperymentów które robiłem + chęć zrobienia czegoś w czym po 20 min tłumaczenia, ktoś tylko znający trochę OOP mógł napisać właściwie co chce == Mój Pierwszy Framework (planuje go nazwać MPF :P).

Właściwie ma on tylko 2 zalety:
1. Pisze mi się w nim BARDZO wygodnie
2. Jak ktoś go kiedyś obejrzy to może coś z niego wyniesie i stworzy swój subiektywnie zajebi*** framework :-)

A na poważnie to tworząc FW trzeba mieć na uwadze parę rzeczy.
1. Upraszczanie elementów nie może być prowadzone w nieskończoność bo możemy przekroczyć granicę w której programista traci kontrole nad wynikiem swojej pracy i jest skazany na pomysły twórców. Dlatego należy zachować balans między ułatwieniami a elastycznością.

2. Wydaje mi się że najlepszy framework to taki który potrafi współpracować z innymi. Dlatego też np napisałem sobie loader zgodny z PSR-0 który obsługuje "kwiatki" z mojej głowy jak np przestrzeń "Module" która z PSR-0 się troszkę kłóci założeniami ale poza tym nie ma problemu z ładowaniem bibliotek Symfony, Zenda i każdej stworzonej właśnie zgodnie z PSR-0. Zresztą te które zrobiono inaczej idzie niewielkim nakładem pracy przerobić.
Jak wymyślimy "swoją super hiper strukturę katalogów" gdzie loader załaduje coś po wpisaniu 3 literek (widziałem taki twór) to się obudzimy w sytuacji gdzie nie wspomożemy się cudzym kodem i musimy go albo przerabiać albo pisać własne biblioteki.

3, Najlepszy framework to prosty framework. Im jest on bardziej skomplikowany tym jest gorszy. Framework to szkielet któremu ktoś może chcieć poprzetrącać kości. Powinien mieć możliwość zrobienia tego bez obawy że całość się zawali. Powinien mieć on prostą i jasną strukture.

4. Biorąc pod uwagę konkurencję - FW PHP może być komercyjnym rozwiązaniem tylko w jednym wypadku - jeżeli autorzy na bieżąco dostarczają do niego nowe biblioteki i rozwiązania.
I tak o ile na początku chcę mieć wygodny zestaw do pracy z nim o tyle pod koniec trwania wykupionej licencji chce być w stanie napisać aplikację która potrafi kontrolować promy kosmiczne NASA (no może troszkę przesadzam :P). Ja osobiście nie lubię toku rozwoju jaki przyjął ZF czy Symfony gdzie (mogę się mylić, nie śledzę ich zbytnio) nowa wersja to mała rewolucja. Wolę by FW były poddawane procesom ewolucji.Dariusz Półtorak edytował(a) ten post dnia 11.05.11 o godzinie 07:50
Łukasz C.

Łukasz C. Senior Technical
Architect

Temat: Prosty Polski framework ?

imho:

1) framework nie jest od tego zeby "pisalo sie wygodnie", framework jest od tego zeby duzy projekt ze skomplikowana logika naklepac jak najszybciej bez odkrywania kola od nowa

2) prostota w informatyce to najczesciej rozwiazania naiwne, a wiec nieoptymalne i mysle ze frameworkow rowniez sie to tyczy przykladowo ktos robil by "prosto" i stworzyl by model uzytkownika do autoryzacji:

User, find, update, delete, i cos tam jeszcze

natomiast dla mnie dobry framework mialby cos takiego

User, UserDAO, AbstractDAO, AbstractStorage, DbStorage, MySqlStorage, PgSqlStorage, MockStorage etc...

czyli wszystkie warstwy rozdzielone, latwo mozna dodawac nowe warstwy i kod sie nie powtarza, w podobny sposob jest napisany Zend i dlatego jest taki rozrosniety (nie wspominajac o javie), zalety to latwosc testowania i prostsze utrzymanie projektu ktory rozwija sie latami.

konto usunięte

Temat: Prosty Polski framework ?

Łukasz C.:
imho:

1) framework nie jest od tego zeby "pisalo sie wygodnie", framework jest od tego zeby duzy projekt ze skomplikowana logika naklepac jak najszybciej bez odkrywania kola od nowa

A czy jedno ma wykluczać drugie ? Żeby coś "naklepać jak najszybciej", najlepiej pisać w czymś w czym pisze się wygodnie. Bo jeżeli dobrze rozumie Twój punkt widzenia to chyba zaprzeczasz samemu sobie. Jak chcesz w niewygodnych spodniach szybko biegać ? Taka dygresja.

2) prostota w informatyce to najczesciej rozwiazania naiwne, a wiec nieoptymalne i mysle ze frameworkow rowniez sie to tyczy przykladowo ktos robil by "prosto" i stworzyl by model uzytkownika do autoryzacji:
User, find, update, delete, i cos tam jeszcze

natomiast dla mnie dobry framework mialby cos takiego

User, UserDAO, AbstractDAO, AbstractStorage, DbStorage, MySqlStorage, PgSqlStorage, MockStorage etc...

czyli wszystkie warstwy rozdzielone, latwo mozna dodawac nowe warstwy i kod sie nie powtarza, w podobny sposob jest napisany Zend i dlatego jest taki rozrosniety (nie wspominajac o javie), zalety to latwosc testowania i prostsze utrzymanie projektu ktory rozwija sie latami.

Nie zgodzę się z Tobą. Mylisz prostotę rozwiązania z prymitywizmem. Proste nie oznacza kiepskie. Proste znaczy łatwe do użycia i zrozumienia. Kiedy jest łatwe w użyciu i zrozumieniu, na ogół jest łatwe w utrzymaniu.
Nie chodzi o prostotę rozwiązania. Dane rozwiązanie może mieć takie cuda że Ci mogą nobla w każdej kategorii za nie przyznać. Ale kiedy posadzisz przy tym jakiegoś programistę to ma on załapać o co chodzi, zatrzeć ręce i brać się do pracy zamiast siedzieć i dochodzić Twoich hakerskich sztuczek.
Więc możesz mieć User, UserDAO, AbstractDAO, AbstractStorage, DbStorage, MySqlStorage, PgSqlStorage, MockStorage itp itd etc. Po prostu programista-klient który pracuje z Twoim kodem nie powinien mieć trudności w posługiwaniu się nim oraz nie powinien się namęczyć żeby zrobić z nim coś bardziej skomplikowanego.

Jako że widzę że motam, podam Ci najlepszy przykład. Z języka C++ w tym wypadku. Zobacz sobie WinAPI i pobaw się nim. A potem spróbuj QT.
Jak zobaczyłem WinAPI to zwątpiłem w siebie. Tak chorego i niewygodnego narzędzia dawno nie widziałem. Mimo że możliwości ma duże.
Teraz wziąłem QT. Jest subiektywnie, niewymiernie lepsze, prostsze w użyciu, łatwiej się w nim pisze i w ogóle polubiłem tą bibliotekę tak że nie wyobrażam sobie nawet korzystania dzisiaj z WinAPI. Co nie znaczy że mechanizmy które się za QT kryją są proste. Ale jako klienta-programistę mnie nie dotyczą.

W przeciwieństwie do WinAPI, przy QT bardzo szybko załapałem strukturę elementów, stwierdziłem że zapis jest bardzo intuicyjny a aplikację którą postanowiłem zrobić wykonałem znacznie szybciej w QT przy którym byłem zielony niż w WinAPI które trochę znam i parę rzeczy w nim napisałem. Masę rzeczy mogłem nawet napisać z głowy zamiast zaglądać w manual tylko dlatego że zapis "czegoś" był dla mnie po prostu oczywisty.Dariusz Półtorak edytował(a) ten post dnia 11.05.11 o godzinie 08:58
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Dariusz Półtorak:
[...]Dlatego też np napisałem sobie loader
Ja np. w ogóle unikam autoloaderów klas, wolę wszystkie klasy w procesie konwersji aplikacji z formatu dev do produkcyjnego pakować do jednego pliku.
3, Najlepszy framework to prosty framework. Im jest on bardziej skomplikowany tym jest gorszy.[...]

To zależy co masz na myśli, framework jak najbardziej w swoim wnętrzu może być skomplikowany, ale teraz można mieć narzędzia które mimo to pozwolą w prosty i przyjemny sposób tworzyć w nim aplikację.

Mam tu na myśli ten swój FW na bazie którego powolutku może będę publicznie tworzyć jego nową wersję.

Jest dla niego stworzone swego rodzaju IDE oparte o przeglądarkę - gdzie np. (nawiązując do poprzedniego tematu autoloadera) mam listę klas i skojarzonych z nimi plików (jedna klasa - jeden plik). Na etapie developingu mogę sobie indywidualnie grzebać w każdym pliku/klasie osobno ale później podczas generowania wersji produkcyjnej wszystkie są łączone do jednego pliku.

Tak samo mam np. do tego IDE podpiętą bazę danych i jeżeli np. dodam nową tabelę albo cokolwiek zmienię w bazie, mogę kliknąć "introspekcja bazy" i to narzędzie wykryje mi wszelkie zmiany w bazie i odpowiednio, automatycznie zmieni różne rzeczy w aplikacji.

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Dariusz Półtorak:
[...]Dlatego też np napisałem sobie loader
Ja np. w ogóle unikam autoloaderów klas, wolę wszystkie klasy w procesie konwersji aplikacji z formatu dev do produkcyjnego pakować do jednego pliku.

Powiem Ci że też tak kiedyś robiłem z prostego względu - __autoload jak i sam php wydajnością nie grzeszyły. Ale:
1. PHP przyśpiesza z wersji na wersje
2. Jak uruchomisz sobie APC to autoloader śmiga a wczytywanie plików drastycznie spada. Najlepszy przykład otrzymałem od mojego znajomego z poprzedniej pracy. Ich CMS wczytywał ponad prawie 70 plików. Po zastosowaniu APC wczytuje chyba z 5. Więc to już nie problem raczej.
3. Dobre IDE jak np PHP Storm podpowiada mi przestrzenie nazw więc tak czy siak mam wszystko jak należy
4. Nie muszę dołączać plików ręcznie za każdym razem jak potrzebuje nowej klasy
5. Nie muszę ładować ogromnego zbioru klas
6. Mogę rozszerzać bez problemu zbiór klas które zawarłem zwyczajnie kopiując nowe pliki
7. Klient takiego FW może dorzucać nowy kod bez grzebania w plikach które stworzyłem
8. Mogę sobie tylko dla określonego fragmentu projektu np wymienić klasę Form bardzo łatwo. W Twoim wypadku było by to bardziej kłopotliwe.
9. Wersja developerska nie różni mi się znacząco od produkcyjnej więc w wypadku uruchamiania projektu właściwie nie mam dodatkowej pracy.
10. Przerzucam katalog z Symfony lub ZF i działa.
3, Najlepszy framework to prosty framework. Im jest on bardziej skomplikowany tym jest gorszy.[...]

To zależy co masz na myśli, framework jak najbardziej w swoim wnętrzu może być skomplikowany, ale teraz można mieć narzędzia które mimo to pozwolą w prosty i przyjemny sposób tworzyć w nim aplikację.

Prawda. Do czasu kiedy FW nie odpowiada Twoim potrzebom i chcesz wprowadzić własne modyfikacje. Wszystko co zaciemnia kod jest złe. Najlepsze przykłady to wzorce projektowe. Są elastycznie, nietrudne do zrozumienia i przede wszystkim proste w założeniach.
Zresztą żadne dobre rozwiązanie które znam nie było skomplikowane.

Mam tu na myśli ten swój FW na bazie którego powolutku może będę publicznie tworzyć jego nową wersję.

Jest dla niego stworzone swego rodzaju IDE oparte o przeglądarkę - gdzie np. (nawiązując do poprzedniego tematu autoloadera) mam listę klas i skojarzonych z nimi plików (jedna klasa - jeden plik). Na etapie developingu mogę sobie indywidualnie grzebać w każdym pliku/klasie osobno ale później podczas generowania wersji produkcyjnej wszystkie są łączone do jednego pliku.

Pytanie - jaki jest tego zysk ?

Tak samo mam np. do tego IDE podpiętą bazę danych i jeżeli np. dodam nową tabelę albo cokolwiek zmienię w bazie, mogę kliknąć "introspekcja bazy" i to narzędzie wykryje mi wszelkie zmiany w bazie i odpowiednio, automatycznie zmieni różne rzeczy w aplikacji.

Też nie ma problemu. Elementy strony takie jak np mapper mam zapisane w szablony. Raz zarwałem nockę żeby nawet ten generator wpisać do obsługi błędów w aplikacji. I tak uruchamiając skrypt PHP, analizowana była baza danych i na podstawie jej struktury jest generowany mapper.
A wieczór spędziłem nad tym by w wypadku gdy spróbujesz wywołać nieistniejący mapper, autoloader był w stanie rozpoznać co to za klasa o którą prosisz. Następnie wykorzystując połączenie z bazą danych, zrzuca strukturę tabeli i generuje mapper oraz obiekt danych tej tabeli. Wszystko dlatego że trzymałem się ustalonego nazewnictwa przy mapperach oraz tabelach w bd.

I pomijając tą zabawkę która daleka jest jeszcze od ideałów, samo rozwiązanie jest debilnie proste. Jedno zapytanie + wyciągnięcie danych + określenie walidatorów na typy pól i wykorzystanie szablonu tpl do wygenerowania pliku klasy.

--------------------------------------

W skrócie: kieruję się zasadą KISS.Dariusz Półtorak edytował(a) ten post dnia 11.05.11 o godzinie 13:58
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Generalnie mam na myśli sytuację kiedy projekt ma kilkaset klas a nie np. 50.
Dariusz Półtorak:
[...]
2. Jak uruchomisz sobie APC to autoloader śmiga a wczytywanie plików drastycznie spada. Najlepszy przykład otrzymałem od mojego znajomego z poprzedniej pracy. Ich CMS wczytywał ponad prawie 70 plików. Po zastosowaniu APC wczytuje chyba z 5. Więc to już nie problem raczej.

Lepiej jeżeli APC ma do kontroli jeden plik niż kilkaset :) (ja jeszcze robie apc_stat na 0).

4. Nie muszę dołączać plików ręcznie za każdym razem jak potrzebuje nowej klasy

Tak czy inaczej w jakimś rozbudowanym środowisku wprowadzasz gdzieś nazwę klasy.
5. Nie muszę ładować ogromnego zbioru klas

W jakim sensie ładować ?
6. Mogę rozszerzać bez problemu zbiór klas które zawarłem zwyczajnie kopiując nowe pliki
7. Klient takiego FW może dorzucać nowy kod bez grzebania w plikach które stworzyłem

Zawsze można zrobić dodatkową furtkę do tego typu rzeczy.
8. Mogę sobie tylko dla określonego fragmentu projektu np wymienić klasę Form bardzo łatwo. W Twoim wypadku było by to bardziej kłopotliwe.

Dlaczego ? Założyłeś pesymistycznie, że byłby to kłopotliwe :)
9. Wersja developerska nie różni mi się znacząco od produkcyjnej więc w wypadku uruchamiania projektu właściwie nie mam dodatkowej pracy.

Konwersja z dev do prod. to proces całkowicie automatyczny - kliknięcie w jeden link "generuj".

Wersja developerska od produkcyjnej potrafi się mocno różnić - np. w wersji developerskiej nie wysyłam nigdzie maili tylko symuluje wysłanie i mail jest zapisany do pliku, tak żebym mógł sobie zobaczyć jak dla danej osoby będzie wyglądał mail. Nie muszę się bawić w kombinacje wysyłki do siebie etc.

[...]
Jest dla niego stworzone swego rodzaju IDE oparte o przeglądarkę - gdzie np. (nawiązując do poprzedniego tematu autoloadera) mam listę klas i skojarzonych z nimi plików (jedna klasa - jeden plik). Na etapie developingu mogę sobie indywidualnie grzebać w każdym pliku/klasie osobno ale później podczas generowania wersji produkcyjnej wszystkie są łączone do jednego pliku.

Pytanie - jaki jest tego zysk ?

Zysk jest taki, że mając uporządkowaną listę klas możesz teraz różne rzeczy z tym robić automatycznie przez formularze zamiast kopiować ręcznie etc.

Chociażby określenie jakichś zależności dla modułów, grupowanie klas, automatyczna masowa zmiana czegoś w wybranych klasach etc.

[...]
Też nie ma problemu. Elementy strony takie jak np mapper mam zapisane w szablony. Raz zarwałem nockę żeby nawet ten generator wpisać do obsługi błędów w aplikacji. I tak uruchamiając skrypt PHP, analizowana była baza danych i na podstawie jej struktury jest generowany mapper.
[...]

Widzisz - sam idziesz w kierunku stworzenia takiego środowiska. Nie wiem jak wygląda Twój generator - być może to jest zwykły skrypt, w pewnym momencie uznasz, że to za mało i będziesz chciał mieć system gdzie tego typu rzeczy będą bardziej zintegrowane, gdzie będzie można tworzyć projekty osadzone w Twojej wersji farmeworka, moduły etc.

Tymczasem ja mam takie narzędzie od lat (które robi o wiele więcej rzeczy), chciałbym się nim podzielić z innymi - dlatego zacząłem temat tego "PHP Dreamframework" tak żeby wspólnie uczynić to narzędzie jeszcze lepszym.

Jednak być może Tomasz Grzechowski ma rację - z uwagi na takie a nie inne cechy charakteru programistów jest to trudne :)

EDIT:

Jeszcze jedna sprawa, są dwie osobne rzeczy:
1. Generator aplikacji
2. Wygenerowana aplikacja

Jeżeli w generatorze mam np. listę 150 klas, to w wygenerowanej apliakcji mam tylko jeden plik z wszystkimi klasami który jest dołączany, nie ma nigdzie listy tych 150 klas :)

Podobnie z innymi sprawami - wiele danych z generatora nie jest w wygenerowanej aplikacji, wygenerowana aplikacja ma być jak najmniejsza i jak najszybsza.Tomasz Zadora edytował(a) ten post dnia 11.05.11 o godzinie 14:32

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Generalnie mam na myśli sytuację kiedy projekt ma kilkaset klas a nie np. 50.
Dariusz Półtorak:
[...]
2. Jak uruchomisz sobie APC to autoloader śmiga a wczytywanie plików drastycznie spada. Najlepszy przykład otrzymałem od mojego znajomego z poprzedniej pracy. Ich CMS wczytywał ponad prawie 70 plików. Po zastosowaniu APC wczytuje chyba z 5. Więc to już nie problem raczej.

Lepiej jeżeli APC ma do kontroli jeden plik niż kilkaset :) (ja jeszcze robie apc_stat na 0).

Nadal nie widzę specjalnie różnicy. Poza tym zauważ że gdy dołączysz 150 plików to wczytasz kod ze 150 plików. Lepiej chyba żeby aplikacja zajmowała tyle pamięci ile potrzebuje w chwili wywołania.
Sugeruję odpalić Xdebug i sobie zrobić małe profilowanie aplikacji.

4. Nie muszę dołączać plików ręcznie za każdym razem jak potrzebuje nowej klasy

Tak czy inaczej w jakimś rozbudowanym środowisku wprowadzasz gdzieś nazwę klasy.

No właśnie nie. Wszystko się dzieje z automatu.
1. Lista modułów owszem znajduje się w bazie ale tylko na potrzeby administracyjne. Tzn masz listę modułów które "dopuściłeś" do panelu administracyjnego.
2. Biblioteki dodatkowe są wywoływane na żądanie. Znaczy jak wczytasz sobie \TomaszZ\MySuperXML to go dostaniesz poprzez autoloader. A ze względu na wsparcie w phpStorm dla przestrzeni nazw, podpowiedzi świetnie działają przy wczytywaniu klas w ten sposób.
5. Nie muszę ładować ogromnego zbioru klas

W jakim sensie ładować ?

Znaczy interpreter nie ładuje mi 150 klas kiedy potrzebuje ich tuzin...
6. Mogę rozszerzać bez problemu zbiór klas które zawarłem zwyczajnie kopiując nowe pliki
7. Klient takiego FW może dorzucać nowy kod bez grzebania w plikach które stworzyłem

Zawsze można zrobić dodatkową furtkę do tego typu rzeczy.

Ale po co robić furtkę skoro sam mechanizm został ładnie opisany przy propozycji PSR-0 i się świetnie sprawdza ? Nie mówiąc o tym że wystarczyło troszkę zmian i spełnia całkowicie moje potrzeby, jak również radzi sobie z kodem zewnętrznym z ZF itp.
Dodatkowo sam PSR-0 staje się coraz popularniejszy i widzę coraz więcej rozwiązań pisanych zgodnie z założeniami tej propozycji. Przez to wystarczy że wrzucę sobie ten kod do katalogu lib modułu lub katalogu aplikacji, no i mam co trzeba.
8. Mogę sobie tylko dla określonego fragmentu projektu np wymienić klasę Form bardzo łatwo. W Twoim wypadku było by to bardziej kłopotliwe.

Dlaczego ? Założyłeś pesymistycznie, że byłby to kłopotliwe :)

Ponieważ masz gotowy zestaw klas. W moim wypadku dorzucam plik do projektu, dopisuje w kodzie gdzieś "$klasa = new dostawca\klasa" i aktualizuje 2 pliki.
W Twoim wypadku najpierw będzie trzeba zadbać o to by nazewnictwo klas było unikalne, później trzeba wpisać co trzeba do kodu, potem wygenerować plik wyjściowy i dopiero aktualizować wersję produkcyjną. Wg mojej opinii - przekombinowane.
A już sobie nawet nie wyobrażam w systemie jak Twój dołączenia np formularzy jakie widziałem w jednym projekcie. Klasa form + koło tuzina różnych typów inputów plus tyle samo validatorów na nich. Normalnie wystarczy przekopiować plik i korzystać z klas. W twoim wypadku procedura jest znaaacznie dłuższa.
Popraw mnie jeżeli się mylę. Może nie do końca zrozumiałem Twoją koncepcję.
9. Wersja developerska nie różni mi się znacząco od produkcyjnej więc w wypadku uruchamiania projektu właściwie nie mam dodatkowej pracy.

Konwersja z dev do prod. to proces całkowicie automatyczny - kliknięcie w jeden link "generuj".

Wersja developerska od produkcyjnej potrafi się mocno różnić - np. w wersji developerskiej nie wysyłam nigdzie maili tylko symuluje wysłanie i mail jest zapisany do pliku, tak żebym mógł sobie zobaczyć jak dla danej osoby będzie wyglądał mail. Nie muszę się bawić w kombinacje wysyłki do siebie etc.

[...]
Jest dla niego stworzone swego rodzaju IDE oparte o przeglądarkę - gdzie np. (nawiązując do poprzedniego tematu autoloadera) mam listę klas i skojarzonych z nimi plików (jedna klasa - jeden plik). Na etapie developingu mogę sobie indywidualnie grzebać w każdym pliku/klasie osobno ale później podczas generowania wersji produkcyjnej wszystkie są łączone do jednego pliku.

Pytanie - jaki jest tego zysk ?

Zysk jest taki, że mając uporządkowaną listę klas możesz teraz różne rzeczy z tym robić automatycznie przez formularze zamiast kopiować ręcznie etc.

Chociażby określenie jakichś zależności dla modułów, grupowanie klas, automatyczna masowa zmiana czegoś w wybranych klasach etc.

Troszkę nie rozumie tego stwierdzenia. Możesz rozwinąć ?
Zauważ że jak klasa X zostanie wczytana a sama poprosi o klasę Y bądź też po prostu sprawdzi czy klasa Z istnieje to autoloader wczyta Ci zarówno X jak i Y i Z.


[...]
Też nie ma problemu. Elementy strony takie jak np mapper mam zapisane w szablony. Raz zarwałem nockę żeby nawet ten generator wpisać do obsługi błędów w aplikacji. I tak uruchamiając skrypt PHP, analizowana była baza danych i na podstawie jej struktury jest generowany mapper.
[...]

Widzisz - sam idziesz w kierunku stworzenia takiego środowiska. Nie wiem jak wygląda Twój generator - być może to jest zwykły skrypt, w pewnym momencie uznasz, że to za mało i będziesz chciał mieć system gdzie tego typu rzeczy będą bardziej zintegrowane, gdzie będzie można tworzyć projekty osadzone w Twojej wersji farmeworka, moduły etc.

To nie tak. Chodzi o to że wszystkie mappery mają parę linii kodu który musisz w nie wpisać. Znowu przy obiektach danych trzeba określić pola i ich typy które przełożą się na validacje jaka zostanie nałożona w chwili jak spróbujesz np zmienić wartość imie.
Jako że zarówno w BD jak i PHP stosuje określone nazewnictwo, zrobiłem sobie mechanizm któremu podaje dane do BD i ten generuje mi co trzeba. Pierwotnie zrobiłem taki w pierwszej firmie gdzie pracowałem (taki pomysł kolegi po fachu) a później zaadaptowałem to do swojego rozwiązania. I warto było. Obecnie mappery i obiekty danych to jakieś 80 klas.
Żadnej nie napisałem ręcznie. Do kilkunastu z nich dopisałem parę dodatkowych metod.
Podobnie moduły. Jak tworzysz nowy moduł, ma on określoną strukturę katalogów i podstawowy zestaw plików (łącznie z manifestem który zawiera nazwę i opis w paru językach + informacje o zależnościach). Dobrze jest odpalić komendę z konsoli żeby mi skrypt wygenerował całość zamiast robić to ręcznie.

Tymczasem ja mam takie narzędzie od lat (które robi o wiele więcej rzeczy), chciałbym się nim podzielić z innymi - dlatego zacząłem temat tego "PHP Dreamframework" tak żeby wspólnie uczynić to narzędzie jeszcze lepszym.

Prawidłowo. Chętnie się przyjrzę. Nie jestem Alphą i Omegą. Bardzo chętnie zaglądam w cudze żeby się czegoś nowego nauczyć.

Jednak być może Tomasz Grzechowski ma rację - z uwagi na takie a nie inne cechy charakteru programistów jest to trudne :)

No niestety. Każdy ma swoją filozofię, każdy ma swoje podejście. To o czym piszesz nie do końca mi pasuje bo swego czasu zrobiłem stwór podobny do tego co opisujesz. Nie sprawdził się, był niewygodny dla mnie itp. W momencie jak zautomatyzowałem wiele elementów właśnie z pomocą PSR-0 i paru pomysłów własnych oraz zapożyczonych - udało mi się zrobić coś w czym pracuje mi się bardzo przyjemnie.
Najlepiej rzucić programistom kod, przeczekać flamewar i dyskusje wyższości X nad Y a potem wyłapać co ciekawsze pomysły i je wprowadzić.

EDIT:

Jeszcze jedna sprawa, są dwie osobne rzeczy:
1. Generator aplikacji
2. Wygenerowana aplikacja

Jeżeli w generatorze mam np. listę 150 klas, to w wygenerowanej apliakcji mam tylko jeden plik z wszystkimi klasami który jest dołączany, nie ma nigdzie listy tych 150 klas :)

Podobnie z innymi sprawami - wiele danych z generatora nie jest w wygenerowanej aplikacji, wygenerowana aplikacja ma być jak najmniejsza i jak najszybsza.

Ale nadal zaczytuje Ci cały kod który ona wykorzystuje przy wywołaniu widoku. Jak profilowałem swoje rozwiązanie żeby zobaczyć jak się będzie prezentować pod względem wydajności, zwróciłem uwagę że miałem miejsca gdzie wczytywane było +30 klas a były takie momenty że wystarczyło tylko 8. Jak włączyłem APC to właściwie mało co nie leciało z cache.

Pozdrawiam

konto usunięte

Temat: Prosty Polski framework ?

Dariusz Półtorak:
Znacie powiedzenie że gdzie jest 3 programistów tam jest 4 pomysły i 5 sposobów realizacji ? Jak kilku programistów zacznie ze sobą dyskutować to jedyny efekt będzie taki że czas realizacji wyniesie dodatkowe +5 miesięcy :P

Dla tego wynaleziono lead / moderacje
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Dariusz Półtorak:
[...]
Nadal nie widzę specjalnie różnicy. Poza tym zauważ że gdy dołączysz 150 plików to wczytasz kod ze 150 plików. Lepiej chyba żeby aplikacja zajmowała tyle pamięci ile potrzebuje w chwili wywołania.
Sugeruję odpalić Xdebug i sobie zrobić małe profilowanie aplikacji.

Zgadzam się i trochę nie rozumiem, bo przecież piszę, że ja NIE wczytuje ze 150 plików, tylko 150 plików łączę w jeden i aplikacja z tego jednego korzysta :)

150 plików jest tylko dla generatora, on je łączy razem w jeden plik i robi to tylko podczas procesu generowania aplikacji.

[...]
2. Biblioteki dodatkowe są wywoływane na żądanie. Znaczy jak wczytasz sobie \TomaszZ\MySuperXML to go dostaniesz poprzez autoloader. A ze względu na wsparcie w phpStorm dla przestrzeni nazw, podpowiedzi świetnie działają przy wczytywaniu klas w ten sposób.


Ok tutaj się nie wypowiem bo nie znam tego środowiska ale coraz więcej dobrych rzeczy o nim czytam więc chyba się zainteresuje (na razie "jadę" na Netbeans).

[...]> > W jakim sensie ładować ?

Znaczy interpreter nie ładuje mi 150 klas kiedy potrzebuje ich tuzin...

Pisząc o 150 klasach mam na myśli takie z jakich się korzysta a nie jakieś niepotrzebne.

Oczywiście mogą być odsłony strony gdzie tylko kilka klas będzie potrzebnych, nie wszystkie, ale to nie ma wielkiego znaczenia w sytuacji kiedy korzysta się z APC.
6. Mogę rozszerzać bez problemu zbiór klas które zawarłem zwyczajnie kopiując nowe pliki
7. Klient takiego FW może dorzucać nowy kod bez grzebania w plikach które stworzyłem

Zawsze można zrobić dodatkową furtkę do tego typu rzeczy.

Ale po co robić furtkę skoro sam mechanizm został ładnie opisany przy propozycji PSR-0 i się świetnie sprawdza ? Nie
[...]

Ok to już kwestia stylu, ale czemu nie - można by nowy FW przystosować do tego standardu.

[...]
Dlaczego ? Założyłeś pesymistycznie, że byłby to kłopotliwe :)

Ponieważ masz gotowy zestaw klas. W moim wypadku dorzucam plik do projektu, dopisuje w kodzie gdzieś "$klasa = new dostawca\klasa" i aktualizuje 2 pliki.

Tutaj musiałbym pokazać jak działa generator, to naprawdę jest wygodne - niczego nie trzeba nigdzie dopisywać po za formularzem w systemie generatora.

W Twoim wypadku najpierw będzie trzeba zadbać o to by nazewnictwo klas było unikalne

O to dba generator, jeżeli wprowadzisz nazwę klasy która już
istnieje to dostaniesz informacje :) To jest dość inteligentny system.

>, później trzeba wpisać co
trzeba do kodu, potem wygenerować plik wyjściowy i dopiero aktualizować wersję produkcyjną. Wg mojej opinii - przekombinowane.

To nie tak działa.
A już sobie nawet nie wyobrażam w systemie jak Twój dołączenia np formularzy jakie widziałem w jednym projekcie. Klasa form + koło tuzina różnych typów inputów plus tyle samo validatorów na nich. Normalnie wystarczy przekopiować plik i korzystać z klas. W twoim wypadku procedura jest znaaacznie dłuższa.

Nie :D Ja naprawdę nie po to tworzę ten system od paru ładnych lat, żeby sobie utrudniać życie - to system w który mi niesamowicie przyspiesza pracę a nie spowalnia.
Popraw mnie jeżeli się mylę. Może nie do końca zrozumiałem Twoją koncepcję.

Nie ma problemu, ja swoją koncepcję wyjaśniłem w niewielkiej części.


[...]
Zysk jest taki, że mając uporządkowaną listę klas możesz teraz różne rzeczy z tym robić automatycznie przez formularze zamiast kopiować ręcznie etc.

Chociażby określenie jakichś zależności dla modułów, grupowanie klas, automatyczna masowa zmiana czegoś w wybranych klasach etc.

Troszkę nie rozumie tego stwierdzenia. Możesz rozwinąć ?
Zauważ że jak klasa X zostanie wczytana a sama poprosi o klasę Y bądź też po prostu sprawdzi czy klasa Z istnieje to autoloader wczyta Ci zarówno X jak i Y i Z.

Nie chodzi o proces ładowania pliku, tylko bardziej zaawansowane sprawy.

Masz np. jakiś element projektu (tabela SQL) który chciałbyś szybko skopiować do innego projektu i ten element jest powiązany z innymi elementami - w tym przypadku z klasami.

Otwieram wizarda kopiowania, i dokonuje kopii: tabeli SQL do bazy docelowego projektu oraz wszystkie inne powiązane rzeczy i nie muszę się bawić w kopiowanie ręczne etc.

Widzisz - sam idziesz w kierunku stworzenia takiego środowiska. Nie wiem jak wygląda Twój generator - być może to jest zwykły skrypt, w pewnym momencie uznasz, że to za mało i będziesz chciał mieć system gdzie tego typu rzeczy będą bardziej zintegrowane, gdzie będzie można tworzyć projekty osadzone w Twojej wersji farmeworka, moduły etc.

To nie tak. Chodzi o to że wszystkie mappery mają parę linii kodu który musisz w nie wpisać. Znowu przy obiektach danych trzeba określić pola i ich typy które przełożą się na
[...]

Ok nie do końca zrozumiałem.

[...]
Prawidłowo. Chętnie się przyjrzę. Nie jestem Alphą i Omegą. Bardzo chętnie zaglądam w cudze żeby się czegoś nowego nauczyć.

Mój plan jak na razie jest taki, że tego prywatnego frameworka i generatora nie udostępniam bo nie ma sensu bez dokumentacji/tutoriali.

Stworzyłem grupę do dyskusji nad nowym FW: http://www.goldenline.pl/forum/php-dreamframework i chciałem najpierw stworzyć dokumentację/listę życzeń nowego FW i później go tworzyć, z tą uwagą że wrzucę tam wiele koncepcji z tego prywatnego FW, łącznie z główną koncepcją pod tytułem 2 podstawowe elementy:

1. FW
2. Generator oparty o FW do generowania aplikacji opartych o FW

Z tej dyskusji chyba jak na razie nici, w każdym razie wstępnie zarezerwowałem sobie czas na jesień na tworzenie kolejnej wersji swojego FW, i zastanawiam się czy nie robić go publicznie ale nie przez GL tylko przez bardziej dedykowane narzędzie (np. wiki) pozwalające na stworzenie lepszej struktury całej dokumentacji/tutoriali etc i na to o czym pisał Tomek Grzechowski.

Być może wtedy znajdą się chętni do poświęcenia trochę czasu na jego budowanie - jeżeli nie w sensie kodu tylko chociaż dyskusji.

Pozdrawiam


Dzięki za dyskusję i również pozdrawiam.

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Dariusz Półtorak:
[...]
Nadal nie widzę specjalnie różnicy. Poza tym zauważ że gdy dołączysz 150 plików to wczytasz kod ze 150 plików. Lepiej chyba żeby aplikacja zajmowała tyle pamięci ile potrzebuje w chwili wywołania.
Sugeruję odpalić Xdebug i sobie zrobić małe profilowanie aplikacji.

Zgadzam się i trochę nie rozumiem, bo przecież piszę, że ja NIE wczytuje ze 150 plików, tylko 150 plików łączę w jeden i aplikacja z tego jednego korzysta :)

150 plików jest tylko dla generatora, on je łączy razem w jeden plik i robi to tylko podczas procesu generowania aplikacji.

Różnica między Twoim a autoloaderem jest taka:
- ty wczytujesz plik ze 150 klasami i korzystasz z 20 klas
- autoloader wczytuje tylko te 20 plików klas z których korzysta, pozostałe 130 ignoruje
Tomasz Zadora

Tomasz Zadora programuję

Temat: Prosty Polski framework ?

Michał Wachowski:
[...]
Różnica między Twoim a autoloaderem jest taka:
- ty wczytujesz plik ze 150 klasami i korzystasz z 20 klas
- autoloader wczytuje tylko te 20 plików klas z których korzysta, pozostałe 130 ignoruje

Rozumiem, tylko, że ja NIGDY nie wczytuje 150 plików tylko JEDEN zawierający 150 klas :)

konto usunięte

Temat: Prosty Polski framework ?

Tomasz Zadora:
Michał Wachowski:
[...]
Różnica między Twoim a autoloaderem jest taka:
- ty wczytujesz plik ze 150 klasami i korzystasz z 20 klas
- autoloader wczytuje tylko te 20 plików klas z których korzysta, pozostałe 130 ignoruje

Rozumiem, tylko, że ja NIGDY nie wczytuje 150 plików tylko JEDEN zawierający 150 klas :)
Czytasz co piszę?

Następna dyskusja:

Framework PRADO




Wyślij zaproszenie do