Co se chystá nového v nejbližších dnech

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
David Grudl
Nette Core | 8107
+
0
-

Delší dobu se nic nového ve frameworku neobjevilo, takže zmíním, co vše se chystá a plánuje. A to v nejbližších dnech.

Začnu nejprve webem. Chystám zásadní update, který zavede editor tagů a snadné přidávání nových stránek (tutoriálů, screencastů) a doplňků. Posun od wiki k redakčnímu systému. Předpoklad spuštění začátkem týdne.

Dibi:

  • připravuju docela zajímavé rozšíření tříd DibiResult a DibiRow zejména pro tzv. NoSQL využívání databáze.
  • dále přidám mechanismus pro snadnější dolování dat z propojených tabulek. Termín nevím.
  • mechanismus, kterému pracovně říkám „předbíhání budoucnosti“ a zatím o něm prozradím jen to, že to bude bomba :-)

A nakonec Nette.

  • řeším problém Environment::setMode(), setName(), konfigurace a spol. V přepínání režimů by mělo být konečně jasno (asi tento týden)
  • řešení všech známých úskalí Route + usnadnění použití (začátkem příštího týdne)
  • nový profiler, uživatelsky rozšiřovatelný (můžete vymýšlet grafické a obsahové návrhy)
  • Guest identity, aneb identita nepřihlášeného uživatele. getIdentity() nebude nikdy vracet NULL. (termín tento týden)
  • „předbíhání budoucnosti“ v šablonách, zatím si to nechávám jako tajemství
  • …ale poskytne to zajímavé řešení pro dokonalý vykreslovač formulářů
  • s formuláři pak souvisí i posun v InstantClientScript, dotažení live validace a celkové separace JS od HTML
  • chci navrhnout postup ve věci bloků a snippetů, otevřu k tomu diskusi

To je tedy můj plán na nejbližší týdny. Nepište mi prosím, co všechno by se ještě mohlo udělat, další věci přijdou potom.

Ondřej Mirtes
Člen | 1536
+
0
-

Bylo by fajn, kdyby se ozval David Steigerwald a začal řešit ten AJAX, jak slíbil – kontaktovali jsme ho s manikem, neúspěšně :)

A taky je na GitHubu spousta vyplněných issues a ve Feature Requests spousta žádostí :)

Honza Marek
Člen | 1664
+
0
-

David Grudl napsal(a):

  • nový profiler, uživatelsky rozšiřovatelný (můžete vymýšlet grafické a obsahové návrhy)

Viděl jsi nápad „nette panel“? https://forum.nette.org/…mo-na-strace?…

David Grudl
Nette Core | 8107
+
0
-

Honza Marek napsal(a):

Viděl jsi nápad „nette panel“? https://forum.nette.org/…mo-na-strace?…

Přesně tohle mám na mysli. Máš to hotové, nebo jde zatím o nápad?

Patrik Votoček
Člen | 2221
+
0
-

bylo by super kdyby se konečně podařilo oddělit validátory od formulářů (odstranila by se duplicita – validace v modelu)

Honza Marek
Člen | 1664
+
0
-

David Grudl napsal(a):

Přesně tohle mám na mysli. Máš to hotové, nebo jde zatím o nápad?

Jo aha. Bohužel je to jen nápad.

pekelnik
Člen | 462
+
0
-

Mě by zajímal především plán v oblasti modulů.

Zejména otázka

  • bootstrapování modulů (třídy Module)
  • jmenné prostory těchto tříd
  • routování modulů

Editoval pekelnik (11. 3. 2010 23:33)

pekelnik
Člen | 462
+
0
-

Také by bylo zajímavé nějaké univerzální rozhraní pro registraci pluginů.

Jod
Člen | 701
+
0
-

pekelnik napsal(a):

  • bootstrapování modulů (třídy Module)

++1

Cifro
Člen | 245
+
0
-

pekelnik napsal(a):

  • bootstrapování modulů (třídy Module)
  • jmenné prostory těchto tříd
  • routování modulů

Moja reč. Lebo nedavno som to riešil a snažil sa využiť vstavanú modulárnosť a celú app som dal pod jeden namespace, napr. MyApp\ a vtedy to už nevedelo načitavať presentery… Riešenim bolo upraviť PresenterLoader po vzore Nelly. Na jabberi poradili že by ten namespace by mal mať tiež tvar MyAppModule\ ale to sa mi nepačilo :/

pekelnik
Člen | 462
+
0
-

pekelnik napsal(a):

Také by bylo zajímavé nějaké univerzální rozhraní pro registraci pluginů.

Mohlo by to obsahovat dokonce nějaké základní jednoduché řešení závislostí.

Zktrátka plugin by definoval, že vyžaduje Nette Framework verze 1.0 a při registraci do applikace by to zařvalo pokud by Nette bylo 0.9.

To samé by mohlo být pro závislosti mezi pluginy.

Možná je to na nový vlákno… uvidim, kdyžtak vytvořim…

Honza Kuchař
Člen | 1662
+
0
-

fajn napad a je to primo adept na anotace

pekelnik
Člen | 462
+
0
-

připravuju docela zajímavé rozšíření tříd DibiResult a DibiRow zejména pro tzv. NoSQL využívání databáze.

Tohle by mě opravdu zajímalo :)

pmg
Člen | 372
+
0
-

Ahoj Davide,

dovol mi morálně podpořit především uvedené změny v knihovně Dibi: avizovaný plán ve mě vyvolal zřetelnou představu lepších zítřků.

Rozšíření NoSQL databází je bohužel spíše hudbou budoucnosti. Běžně používaná databázová schémata ale nabízejí velký prostor pro zjednodušení relačních dotazů a já jeho realizaci považuju za klíčovou pro usnadnění vývoje aplikací.

Troufám si dále tvrdit, že tuším, co máš na mysli pod pojmem „předbíhání budoucnosti“; pro zábavu přidám md5 sum svého odhadu, uvidíme, zda jsme uvažovali podobně: b87baf176977d3c8e75da1c962944a5a. Ať už tak nebo tak, dovedu si představit, že to bude bomba.

Hodně štěstí, Davide!

pekelnik
Člen | 462
+
0
-

chci navrhnout postup ve věci bloků a snippetů, otevřu k tomu diskusi

Po prozkoumání nových snippetů jsem zjistil, že:

  1. nefungují v komponentách
  2. nefungují ve vnořených layoutech

čili: na zmíněnou diskusi se těším :)

Honza Kuchař
Člen | 1662
+
0
-

pekelnik napsal(a):

chci navrhnout postup ve věci bloků a snippetů, otevřu k tomu diskusi

Po prozkoumání nových snippetů jsem zjistil, že:

  1. nefungují v komponentách
  2. nefungují ve vnořených layoutech

čili: na zmíněnou diskusi se těším :)

To ale víme asi všichni. :)

Vyki
Člen | 388
+
0
-

V changelogu jsem nic nenašel takže asi stále nezbývá nic jiného než se jenom těšit. Snad to nebude jako s PHP 5.3 :D

David Grudl
Nette Core | 8107
+
0
-

Narazil jsem na názvoslovný problém týkající se nového profileru. Slovo „profiler“ je asi nepatřičné. Změnit na Debug Bar? Zapínat přes Debug::enableBar() mebo zapínat automaticky při Debug::enable()? (a třeba vypínat jen kliknutím na křížek?).

Implementace vlastních panelů může být řešena buď skrze callbacky nebo skrze objekty implementující určité rozhraní. Asi by byla vhodnější druhá cesta – je vhodný název IDebuggable (tj. využití existujícího interface?)

Roman Ožana
Člen | 52
+
0
-

Určitě bych aktivaci oddělil, je to praktičtější. Takže Debug::enableBar() a taky se mi více líbí myšlenka implementace rozhraní, než callbacky.

rokerkony
Člen | 122
+
0
-

rozhodně :-)
rozhraní +1
Debug::enableBar() +1 … (i když to asi budu mít stále zaplé :-D – už se těším jak pes :-D)

nějaké předběžné datum vydání??? nebo s tím čekáš na IDF?

Mikulas Dite
Člen | 756
+
0
-

Přesně tak, bude to stále zaplé (a časem se i laděnka může schovávat do toho), takže jsem pro celkový Debug::enable().

norbe
Backer | 405
+
0
-

Vypadá to suprově. Už se nemůžu dočkat :-)

Myslím že v této podobě by se to dalo využít i na jiné informace, než jen ladící (na rychlo mne napadla třeba nápověda k aktuální stránce v administraci), to by ale potom moc neodpovídalo tomu názvu Debug bar (co třeba Information bar? :)) a už vůbec ne interfacu IDebuggable (a tady něco jako IInfoPanel).

Honza Marek
Člen | 1664
+
0
-

David Grudl napsal(a):

nebo zapínat automaticky při Debug::enable()? (a třeba vypínat jen kliknutím na křížek?).

Proč ne, aspoň nikdo nebude nahrávat na web aplikaci se zapnutým debug módem (ani radvis). A taky panel pro nikoho nezůstane utajen.

Implementace vlastních panelů může být řešena buď skrze callbacky nebo skrze objekty implementující určité rozhraní. Asi by byla vhodnější druhá cesta – je vhodný název IDebuggable (tj. využití existujícího interface?)

Určitě interface. Bude asi potřeba víc metod než jedna. Cca:

interface IDebugPanel
{
	public function getName();

	public function getIcon();

	public function render();
}

IDebuggable jsem koukal má jednu metodu getPanels. To si nedovedu představit jak to využít. Kromě možnosti, že by vracela pole IDebugPanelů..

David Grudl
Nette Core | 8107
+
0
-

Zcela prvotní verze je venku. Testování může začít.

stpnkcrk
Generous Backer | 189
+
0
-

David Grudl: Sic to sem asi úplně nepatří, ale koukal jsem, že i v dibi se vlivem Nette Debug Bar objevily zakomentované namespace – existuje někde ke stažení dibi k použití s Nette namespaced verzí?

Ola
Člen | 385
+
0
-

skocourek: zkusím si tipnout, není v adresáři 3rdParty?

stpnkcrk
Generous Backer | 189
+
0
-

Ola: Ha, je! :-) Nějak mě nenapadlo hledat ji tam, díval jsem se spíš na dibiphp.com. :)

Honza Marek
Člen | 1664
+
0
-

Není nad to mít na panelu tlačítko na mazání cache.

gawan
Člen | 110
+
0
-

alebo v konzole napísať „rt“ čo mám alias na príkaz „rm -rf app/temp/*“ ;-)

pekelnik
Člen | 462
+
0
-

David Grudl napsal(a):

… Zapínat přes Debug::enableBar() mebo zapínat automaticky při Debug::enable()? (a třeba vypínat jen kliknutím na křížek?).

V jednoduchosti je síla, takže jednoznačně:

<?php
Debug::enable();
?>

…a zavření by mohlo být „minimalizací“ jenom do nějaké malé ikonky, která by se „přicucla“ k hraně obrazovky aby to šlo zase otevřít :)

kromě toho by bylo prima aby laděnka šla ovládat klávesnicí – především Open/Close třeba na F10 ?

vrana
Člen | 131
+
0
-

Předbíhání budoucnosti (aspoň jak jsem to pochopil z rozhovoru s Davidem) jsem využil v knihovně NotORM. Je to popsané pod nadpisem Limiting selected columns.

paranoiq
Člen | 392
+
0
-

@vrana: pokud jsem to správně pochopil, tak resultset si při prvním použití zapamatuje, že nebyl použit optimálně (některé sloupce se načítaly zbytečně) a napříště už o tyto sloupce databázi nepožádá… ok?

jenže je tady problém. stejný dotaz (SELECT * FROM…) mohu použít na více místech a požadovat od něj jiná data. je nějak ošetřeno tohle?

napadá mě třeba vztáhnout informaci v keši ke stopě z debug_backtrace()

update: a co když jsou některé sloupce čteny podmíněně?

Editoval paranoiq (5. 5. 2010 16:25)

vrana
Člen | 131
+
0
-

@paranoiq: Identifikátorem v cache je tabulka a seznam sloupců použitých ve WHERE. To je většinou zcela dostačující – pro detail se použije něco jako table;id, pro seznam table;id_parent,disabled nebo samotné table. Pokud se stejný dotaz (v tomto smyslu) použije na více místech, tak se bere sjednocení použitých sloupců, totéž platí pro podmíněné čtení sloupců.

Když by to náhodou někde nestačilo, tak se to pořád dá nastavit ručně pomocí select.

O debug_backtrace jsem původně taky přemýšlel, ale jednak by to zbytečně zdržovalo a jednak to není moc robustní – stačí malá změna v kódu a výstup debug_backtrace se změní, takže by se v cache držely už dávno nepoužívané záznamy.

David Grudl
Nette Core | 8107
+
0
-

Měl jsem představu takovou, že ID cache bude vytvářet přímo šablona a to jako hash cesty k souboru + čítač uvnitř šablony.

Filip Procházka
Moderator | 4668
+
0
-

Zdravím, ocenil bych nějaký jednoduchý způsob jak z tlačítka udělat odkaz…

zatím to dělám takhle

(string) Html::el('div')->style('cursor:pointer;')
	->onClick('window.location.href="'.$link.'";')

ale to se mi vubec nelibi, ten e.preventDefault() by tam mohl mít nějakou pěknou podmínku :)