V Nette bych uvítal

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jiriknesl
Člen | 56
+
0
-

Uvítal bych několik nových vlastností. Všechny jsou spíš na delší diskuzi, než by se někdo pustil do implementace:

  • scaffolding (vygenerování metod list/update/edit/delete z existující db tabulky)
  • předvytvořený modul admin (všetně jednoduchého Login controlleru) třeba jako součást examples
  • začlenění dibi do Nette
  • naprogramování migrací do dibi.
Jod
Člen | 701
+
0
-

Scaffolding portebuje na generovanie nejaké ORM, ktoré nette nemá, dibi k tomu podla Davida zatiaľ nesmeruje. Ale niečo také jednoduché bez databázových väzieb by sa dalo spraviť.

Admin modul závisí od databázy a jej väzieb. Opäť scaffolding. Login/Auth presenter v examples už je (Akrabat)

Myslím, že dibi je s Nette krásne kompatibilné a neni ho problém s Nette spojiť. Nette necháva volnú ruku vo výbere databázového layeru, napríklad nejakého ORM.

Pridávam sa k requestu migrácii do dibi =) , je to super vec a ulahčilo by to vývoj aplikácii (viď Ruby on Rails).

ViliamKopecky
Nette hipster | 230
+
0
-

Praktické by bylo mít nějaké hromadné balíčky, například Nette+dibi, Nette+dibi+Texy!, kde by vždy byly nejnovější verze všech tří knihoven, zasazené do doporučené adresářové struktury.

romansklenar
Člen | 655
+
0
-

jiriknesl napsal(a):

  • předvytvořený modul admin (všetně jednoduchého Login controlleru) třeba jako součást examples

O něčem na tento způsob, ale chytnutého za opačný konec (tzn. nástroj pro jednoduchou tvorbu administrace) se tu již šustlo.

enoice napsal(a):

Praktické by bylo mít nějaké hromadné balíčky, například Nette+dibi, Nette+dibi+Texy!, kde by vždy byly nejnovější verze všech tří knihoven, zasazené do doporučené adresářové struktury.

Toho není těžké docílit: já když vyvíjím, tak to dělám tak, že v adresářích libs mám jen hardlinky na knihovny které potřebuju, a ty si updatuju z svn. Integrace knihoven do Nette je většinou zásah jen v bootstrapu nebo configu, když ví člověk jak. Ale začátečníkům by se to třeba mohlo hodit – kdo ví.

Jod
Člen | 701
+
0
-

No ja som toto pochopil hneď ako prvé :D .
Prípadne sa môže spraviť v dokumentácii návod, nejak takto:
Knižnice ako dibi, texy, zend do libs a includnúť do bootstrap.php :D :D :D

Ale v pohode by bolo normálne pod download pridať ďalšie knižnice (dibi, texy) vo forme linku na aktuálnu verziu downloadu (niečo ako ../lastest) a pripísať niečo ako: Vyskúšajte aj ďalšie srandy :D

jiriknesl
Člen | 56
+
0
-

Jod napsal(a):

Scaffolding portebuje na generovanie nejaké ORM, ktoré nette nemá, dibi k tomu podla Davida zatiaľ nesmeruje. Ale niečo také jednoduché bez databázových väzieb by sa dalo spraviť.

Není nutný ORM. Stačí cokoliv, co dokáže popsat strukturu databáze, kardinalitu vazeb (ani to není až tak nutné) a co svede create/read/update/delete a to klidně i bez ActiveRecordu.

Třeba CakePHP používá na všechno pole, žádné objektově relační mapování. A jistě to není jediný framework.

>

Admin modul závisí od databázy a jej väzieb. Opäť scaffolding. Login/Auth presenter v examples už je (Akrabat)

Login/Auth z Akrabatu používám. Já měl na mysli nejen toto, ale i strukturu, kde se definuje struktura menu, na které položky jaké cílí, taky nějaký základní pěkný layout administrace.

Zajímavě to má udělané třeba Django(http://docs.djangoproject.com/…/tutorial02/?…)

>

Myslím, že dibi je s Nette krásne kompatibilné a neni ho problém s Nette spojiť. Nette necháva volnú ruku vo výbere databázového layeru, napríklad nejakého ORM.

Právěže dibi je s Nette tak pěkně kompatibilní, že by se mohlo klidně dodávat s ním. :)
K Zend frameworku taky dostaneš uživatelsky neintuitivní Zend_Db a nic ti nebrání si to přeplácnout třeba phpDoctrine (nebo klidně dibi) :)

>

Pridávam sa k requestu migrácii do dibi =) , je to super vec a ulahčilo by to vývoj aplikácii (viď Ruby on Rails).

Ono to má i další klady.

Třeba jestli používáš k vývoji SVNko, tak při prohlížení logů hned vidíš: „Aha, tady se upravovala datababáze tak a tak.“ Místo toho, abys musel CREATE TABLE a ALTER TABLE vypisovat přímo do komentářů k SVN.

Navíc pokud používáš něco na deployment na server (já používám řádově zesložitěnou variantu tohoto: http://www.knesl.com/…windows.html) tak ti to může provádět migrace automaticky i na serveru, jakmile to zjistí, že přibyla nová.

Jod
Člen | 701
+
0
-

No ak má niekto čas to spraviť =)

Navíc pokud používáš něco na deployment na server (já používám řádově zesložitěnou variantu tohoto: http://www.knesl.com/…windows.html) tak ti to může provádět migrace automaticky i na serveru, jakmile to zjistí, že přibyla nová.

Za mňa toto vie spraviť editor Coda.

Editoval Jod (17. 12. 2008 9:14)

A.
Člen | 87
+
0
-

Zasadne nesouhlasim ani v jednom bode :-). Vsechno to jsou zbytecnosti, ktery framework jen nabobtnaji, znepruhledni apod. Navic si to kazdy preci chce udelat sam a poradne. Kdyz jsem takto vyzkousel django, poblil jsem se.

jiriknesl napsal(a):
Navíc pokud používáš něco na deployment na server (já používám řádově zesložitěnou variantu tohoto: http://www.knesl.com/…windows.html) tak ti to může provádět migrace automaticky i na serveru, jakmile to zjistí, že přibyla nová.

Nevim, jak je ten clanek o deploymentu star, trochu objevuje ameriku. Kazdopadne, nechavat na serveru .svn adresar, dostupny webserveru, je docela bezpecnostni riziko.

jiriknesl
Člen | 56
+
0
-

A. napsal(a):

Zasadne nesouhlasim ani v jednom bode :-). Vsechno to jsou zbytecnosti, ktery framework jen nabobtnaji, znepruhledni apod. Navic si to kazdy preci chce udelat sam a poradne. Kdyz jsem takto vyzkousel django, poblil jsem se.

Záleželo by na tom, jak těžko by se to učilo a aby tě nikdo nenutil to používat.

V Djangu taky nemusíš použít tu jejich administraci a můžeš si to všechno napsat sám (což s použitím Modelformů neni až takový problém).

jiriknesl napsal(a):
Navíc pokud používáš něco na deployment na server (já používám řádově zesložitěnou variantu tohoto: http://www.knesl.com/…windows.html) tak ti to může provádět migrace automaticky i na serveru, jakmile to zjistí, že přibyla nová.

Nevim, jak je ten clanek o deploymentu star, trochu objevuje ameriku. Kazdopadne, nechavat na serveru .svn adresar, dostupny webserveru, je docela bezpecnostni riziko.

Ad objev Ameriky: většina známých pořád ještě nahrává aktualizace tak, že si pustí Total Commander a kopírují soubor po souboru.

To je složitější.
.svn jsou v lokálních kopiích a ve verzi, kterou vidí klient před spuštěním.
Do ostrého webu se dělá export a sync (a pár dalších věcí, jako mazání tempu, cache…).

Logicky nemůžu vynášet z firmy celé řešení, to bych mohl odskákat, ale můžu ukázat koncept a zbytek si každý ohne tak, jak potřebuje.

David Grudl
Nette Core | 8218
+
0
-

jiriknesl napsal(a):

Uvítal bych několik nových vlastností. Všechny jsou spíš na delší diskuzi, než by se někdo pustil do implementace:

  • scaffolding (vygenerování metod list/update/edit/delete z existující db tabulky)
  • předvytvořený modul admin (všetně jednoduchého Login controlleru) třeba jako součást examples
  • začlenění dibi do Nette
  • naprogramování migrací do dibi.

Jojo, to je takový další level webového frameworku. V současné době Nette pokrývá V&C vrstvy, M se dotýká pouze zlehka (validace formulářů, Authorizator a Authenticator), nebo nabízí nějaké obecné podpůrné třídy.

Posunout se dál je docela výzva. Totiž, nemám rád tu „database centric way“, kterou jde třeba Ruby nebo CakePHP. Mám za to, že controller/presenter by měl být co nejjednodušší. V podstatě by měl jen vyměňovat data mezi modelem a view. Pokud by platilo, že model == relační databáze (byť třeba namapovaná do objektů, tedy ORM), tak samozřejmě stačí omrknout strukturu databáze a můžu generovat model (tj. třídy mapující db do objektů) a presentery.

Jenže v reálném světě se model a databáze jen z 80–90 % překrývají. Takže je potřeba použít sofistikovanější řešení. Což je samozřejmě oříšek, není se moc kde inspirovat. Ale uvědomuju si, že se to nějak vyřešit musí.

jiriknesl
Člen | 56
+
0
-

Posunout se dál je docela výzva. Totiž, nemám rád tu „database centric way“, kterou jde třeba Ruby nebo CakePHP.

Rád, nerad. Hlavní je, aby byla práce hotová rychle a aby si programátor za rok netrhal vlasy. Ne? :)

Mám za to, že controller/presenter by měl být co nejjednodušší. V podstatě by měl jen vyměňovat data mezi modelem a view.

To je pravda, 90 % činnosti controlleru by určitě mělo být jen spojování controlleru a modelu.

Pokud by platilo, že model == relační databáze (byť třeba namapovaná do objektů, tedy ORM), tak samozřejmě stačí omrknout strukturu databáze a můžu generovat model (tj. třídy mapující db do objektů) a presentery.

Jenže v reálném světě se model a databáze jen z 80–90 % překrývají. Takže je potřeba použít sofistikovanější řešení. Což je samozřejmě oříšek, není se moc kde inspirovat. Ale uvědomuju si, že se to nějak vyřešit musí.

To je velké úskalí aktuálních frameworků. Totiž když už se snažíme psát objektově, měly by být modely v projektu specifikované podle class diagramu, ne podle er-diagramu, jak je zvyklostí např. v Cake, Akelosu, RoR a dalších.

Snažím se to řešit tak, že mám pro všechny tabulky v db třídy, ale mimo model exponuju jen ty třídy, které jsou v class diagramu a jen ty metody, které jsem si sám napsal při použití zděděných metod.

Problém je v tom, jak to zachovat jednoduché a zároveň čisté. Zle to řeší snad všechny frameworky, které jsem poznal (přenášejí ActiveRecord do controlleru místo toho, aby přenášely logiku do modelu).


Ostatně proto jsem to i psal, že je vše zatím jen otázkou na diskuzi.

David Grudl
Nette Core | 8218
+
0
-

jiriknesl napsal(a):

Posunout se dál je docela výzva. Totiž, nemám rád tu „database centric way“, kterou jde třeba Ruby nebo CakePHP.

Rád, nerad. Hlavní je, aby byla práce hotová rychle a aby si programátor za rok netrhal vlasy. Ne? :)

Jasně, proto něco existovat musí.

Snažím se to řešit tak, že mám pro všechny tabulky v db třídy, ale mimo model exponuju jen ty třídy, které jsou v class diagramu a jen ty metody, které jsem si sám napsal při použití zděděných metod.

Problém je v tom, jak to zachovat jednoduché a zároveň čisté. Zle to řeší snad všechny frameworky, které jsem poznal (přenášejí ActiveRecord do controlleru místo toho, aby přenášely logiku do modelu).

To je přesně ono. Přitom existuje velmi snadné, šikovné a geniální řešení. …jen na ně přijít!

jiriknesl
Člen | 56
+
0
-

To je přesně ono. Přitom existuje velmi snadné, šikovné a geniální řešení. …jen na ně přijít!

phpDoctrine a Propel to řeší tak, že vygenerují Base třídy a z nich použiješ třídy odvozené. Když se změní struktura db, tak ti migrace přegeneruje základní třídy a ty tvé fungují dál.

Šlo by vygenerovat třídy podle DB a další podle Class diagramu, které ponesou logiku a budou používat ty vygenerované třídy.

Ty class diagram třídy mohou mít behaviours (elegantní způsob, jak nechat dělat třídu jednu věc a zároveň rozšiřovat její schopnosti) jako je CRUD, Tree, hasOne, hasMany apod.


Ostatně jak se dnes nosí two-step view, může být i two-step model.


Problém nastává ve chvíli, kdy už se všechno rozháže do tolika souborů, že člověk vlastně neví, kde má hledat.

xmn
Člen | 6
+
0
-

Ahoj, jsem v Nette uplny novacek, zatim jen ctu dokumentaci, forum a priklady ale napada mne ze k ORM by se mohl dat pouzit Nette.Annotations – tedy jako zaklad a vychozi smer. Silne mi to pripomina atributy z C# – tedy pokud jsem to spravne pochopil.

M.