Aplikace pro Quickstart – brainstorming
- Honza Marek
- Člen | 1664
Proč by měl quick start používat Nette\Image? Vždyť je to na použití naprosto jednoduchá třída. V quick startu by se čtenář měl naučit takové ty věci jako MVP, formuláře a tak.
- srigi
- Nette Blogger | 558
Suhlasim s gawanom. Blog je vhodny preve preto, ze sa da v nom pokracovat. Je mozne pridavat dalsie fnce (napr. Search, multilang, twitter feed) – to novacika velmi taha.
RSS citacka je taka jednoucelovka, kde novacik nebude vediet co tam ma dalej doprogramovat.
+1 pre blog/CMS.
- Honza Marek
- Člen | 1664
Je potřeba si ujasnit účel quick startu.
- Přijde člověk, který zvažuje používat Nette. Tak ho ohromíme desítkami užitečných funkcí ve frameworku (Mail, Image, …).
- Přijde člověk, který se chce naučit používat Nette. Jasně a stručně mu vysvětlíme základy.
Řekl bych, že b je správně.
- Panda
- Člen | 569
gawan napsal(a):
… každý by chcel vedieť „best practice“ a základ dobre navrhnutého CMS v nette, aby si ho mohol ďalej dopĺňať vlastnou funkcionalitou.
Možno ako quickstart by mohla byť nejaká zjednodušená verzia nelly alebo niečoho podobného s ukážkou ako správne písať rozšírenia a takto by si komunita mohla časom vytvoriť vlastné kvalitné CMS. Zdá sa mi, že je dobré, keď sa robí niečo praktické, čo by sa aj dalo využiť, nielen „akademický“ príklad, potom si to bude mať každý chuť aj vyskúšať naprogramovať.
Na to není v quickstartu místo. Aplikace by měla být jednoduchá a jít přímo k jádru věci, pokud bych měl správně navrhovat systém, na kterém půjde postavit kvalitní CMS, tak těch několik kapitol, do kterých se má QS vejít, zaplním jen tím návrhem.
Ano, bylo by dobré mít něco, v čem půjde dál pokračovat, ale zase toho prvotního návrhu nesmí být moc.
A jen tak mimochodem – pokud chce komunita vytvořit vlastní kvalitní CMS, co jí brání ho vytvořit? Je k tomu opravdu potřeba quickstart, který je určen hlavně začátečníkům?
Jak říká Honza Marek – B je správně.
- westrem
- Člen | 398
Honza Marek napsal(a):
Je potřeba si ujasnit účel quick startu.
- Přijde člověk, který zvažuje používat Nette. Tak ho ohromíme desítkami užitečných funkcí ve frameworku (Mail, Image, …).
- Přijde člověk, který se chce naučit používat Nette. Jasně a stručně mu vysvětlíme základy.
Řekl bych, že b je správně.
Ano b) je spravne. Podla mna su vsetky ostatne featuresy v Nette (Image, Mail, ..) vcelku jednoducho pouzivatelne a po chvilke sa s nimi clovek nauci robit. Naopak co robi problem zaciatocnikom je pochopenie principu MVP a casto si kladu prave tu otazku „Kam umiestnit toto?“, „Robim to dobre ked to pisem sem a takto?“.
Podla mna zakladom Quick startu by mala byt aplikacia (nech uz sa vyberie akakolvek), ktora
- ukazuje co a ako robit prave v Nette
- oboznamuje teda „citatela“ s nejakymi best-practise v Nette
- ukazuje funkcionalitu (nie Mail, Image, ..) ale
- pouzitie modulov (na co sluzia, linkovanie, relativne, absolutne)
- dobry navrh presenterov a view Presenter/View
- rozdelenie pravomoci action a render metod (nejak pekne ukazat co sa ma robit v action a ako to zapada do cyklu presenteru a co kludne nacpat do render metody)
- spravne pouzivanie formularov (ako vytvarat – tovarnicka, ako spracovavat data – onClick pripadne onSubmit eventy ..)
- vyuzitie komponent (nejaka ukazkova komponenta s vlastnou sablonou, spracovanim signalu apod – aby si clovek povedal, aha toto nemusim robit natvrdo do 2 presenterov ale ide to spravit lahko ako reusable komponentu) (toto mne dost chybalo pri zacinani s Nette a stale v tom tak trochu tapem, ako ukazkova pekna komponenta je napr Davidov Visual Paginator)
- takyto quickstart je dobry z 2. hladisk
- zaciatocnik ziskava dobre navyky ktorych sa vo vecsine pripadov potom drzi dalej
- pokrocily user, ktory napr. ma bohate skusenosti s PHP ale prechadza na Nette z niecoho ineho rychlo vidi co a ako a kde spravit a moze mu to pomoct k rychlejsiemu prechodu (no novu Nette vieru :))
- David Grudl
- Nette Core | 8218
Od 1. 9. používá Twitter autentifikaci OAuth, pro kterou není nativní podpora v PHP a je třeba používat knihovny třetích stran. Z tohoto důvodu bych jej asi vyřadil.
- 22
- Člen | 1478
Můžu se taky přidat s názorem?
Podle mě by QS měl sloužit stejnému účelu, jako jiné QuickStarty..
ať už vezmu QS pro Blender nebo skončím u QS pro PHP a Ajax. Tedy QS by
neměl být ani tak příklad, jako spíš teoretický úvod do tvorby aplikací
v OOP s využitím Nette.
Jestli bude QS rozpitvaný Blog nebo jiná aplikace, je v podstatě úplně
nepodstatné. Raději bych viděl Blog aplikaci v tutoriálech a z QS na ni
eventuelně odkazoval.
Tedy do v QS bych raději uvedl pár příkladů mezi řešením problému
v strukturovaném programování a jak to řešit v OOP a ještě rychleji
s Nette.
QS by měl být spíše lákadlem a zdůvodněním pro čtenáře, proč
přejít ze strukturovaného programování aplikací na OOP architekturu a
proč k tomu využít právě Nette. Jestli tam nutně chcete mít aplikaci,
tak spíš potom z důvodu vysvětlení OOP přístupu od klasiky nebo třeba
nějaký typický příklad usnadnění práce.
Na Nette stejně většinou přechází lidi z klasickýho PHP a ne ze Zendu,
takže bych to spíš zaměřil někam sem.
Takže předem je potřeba si spíš ujasnit, pro koho Nette vlastně je a tím pádem i QS? Je to:
- je to začátečník v PHP?
- je to člověk, který mastí aplikace bez OOP a chtěl by poskočit výše?
- je to člověk, který ovládá OOP základy a Nette chce používat jako kadeřník hřeben?
- je to profesionál, který už zná všechny běžné PHP frameworky a Nette mu chybí do počtu?
Domnívám se, že drtivá většina bude někde mezi variantou 2–3.
Co tím chci říct?
Jestli má být QS jen další komentovaná aplikace, tak je to jen další
tutorial. Ona vůbec dokumentace celá je jaksi rozpolcená. Koukal jsem na
např. na Texy a tam mi ty informace přijdou mnohem kompaktnější. Rozhodně
chválím Nette API, ale dodnes se v něm plně neorientuji :-) a to je to, co
je pro mě v dokumentaci jaksi problém a ani pozlacené QS to nevyřeší.
Existuje Příručka programátora, která je jistě užitečná a potřebná
věc, ale často nemá návaznost na API.
Proč není API řešeno obdobně, jako jQuery API?
Já osobně bych tedy raději viděl okomentované API s příklady, než QS typu Blog aplikace. Tzn. dotáhnout příručku programátora do stavu, že z API mě to hodí na příklad z příručky programátora a opačně. To je jeden z hlavních problémů Nette, které má spoustu úžasných funkcí a vychytávek, ale o polovině z nich nemám ani tušení a zřejmě se o nich možná ani nikdy nedozvím, co mají dělat nebo dělají a to je asi špatně, stejně jako je špatně ztrácet hodiny času z testováním funkcí metodou pokus-omyl.
Například API pro interface IComponent https://api.nette.org/…mponent.html
K čemu mi to je, když nevím, kde můžu toto rozhraní použít?
Nešlo by aktivitu zaměřit spíše tímto směrem nebo mám nějakej zmatenej pohled a stanovisko?
- Panda
- Člen | 569
22 napsal(a):
Můžu se taky přidat s názorem?
Jasně!
Podle mě by QS měl sloužit stejnému účelu, jako jiné QuickStarty..
ať už vezmu QS pro Blender nebo skončím u QS pro PHP a Ajax. Tedy QS by neměl být ani tak příklad, jako spíš teoretický úvod do tvorby aplikací v OOP s využitím Nette.
Dovolím si oponovat. Pokud si přeložíme pojem Quick Start, dostáváme se ke slovnímu spojení „rychlý start“. A tak by to opravdu mělo být. QS by měl uživatele rychle a především názorně provést tvorbou první aplikace. Začátečník nechce číst dlouhé teoretické elaboráty o tom, proč zrovna Nette a co v něm je skvělého. On to chce vidět.
Onen teoretický úvod by měl být spíše první kapitolou nějakého průvodce.
- Panda
- Člen | 569
22 napsal(a):
Problém je, že v QS stejně nepokryješ všechny možnosti a v tutoriálech je už solidní výběr z aplikací + přiklady v distribuci. Tedy problém je spíš v chybějící teorii, nevím, jestli u mě nebo obecně, nikoliv v nedostatku komentovaných aplikací v Nette.
Pokrýt všechny možnosti by ani nemělo být cílem Quick Startu. V QS by se měl člověk dle mého soudu rychle a hlavně prakticky seznámit se základními kameny Nette. A těmi kameny jsou Model, View, Presenter.
Pokud by se mi podařilo napsat nějaký obstojný QS, tak bych rád (pokud čas dovolí) pokračoval v psaní dalších příkladů a tutoriálů. Je tu spousta hezkých nápadů na aplikace a byla by škoda je nevyužít, takže teď se vybere jedna pro Quick Start a na některé další dojde řada později.
- jakubkulhan
- Člen | 55
Asi ještě upřesním, co jsem měl na mysli pod RSS čtečkou. Vycházím z kostry QuickStartu:
- Síla šablon: v presenteru se nasypou data do šablony
(
$this->template->channel = simplexml_load_file("https://forum.nette.org/cs/feed.php");
) a v šabloně vypíšou ({foreach $channel->item as $item}…{/foreach}
). - Model a databáze: vytvoří se dvě třídy –
Channel
aItem
.Channel
bude zapouzdřovat jeden kanál, jeho název atp., bude umožňovat prozkoumávat kanál podle URL (zase s využitím SimpleXML a HTTP stream wrapperu), bude implementovatIterator
(bude se iterovat nad seznamemItem
ů).Item
zaopouzdřuje položku kanálu, obsahuje její název, text atd. Presenter se upraví, aby používalChannel
aItem
($this->template->channel = Channel::discover("https://forum.nette.org/cs/feed.php");
).Channel::discover($url)
načte data z dané$url
a z nich vytvoří novou instanciChannel
. Ta nakešuje instanceItem
. - Formuláře snadno a rychle: upraví se
Channel
, aby mohl kanály ukládat do databáze. V databázi bude uložen název kanálu (získaný z XML zdroje), URL a datum poslední přečtené položky. Presenter bude mít dvě akce – výpis všech kanálů (získá z databáze zavoláním metodyChannel::getAll()
) a výpis položek kanálu. K výpisu všech kanálů se přidá formulář pro přidávání. Ve výpisu položek kanálu budou dvě tlačítka – „obnovit“ a „označit za přečtené“. „Obnovit“ načte nové položky a uloží je do keše. „Označit za přečtené“ změní u kanálu v databázi datum poslední přečtené položky na tu nejnovější ve výpisu, vymaže všechny položky z keše a přesměřuje na výpis kanálů. - AJAX: výpis kanálů a výpis jednoho kanálu se sloučí do jedné stránky. Výpis položek bude snippet a kliknutím na odkaz na kanál se zavolá server a snippet se překreslí správným výpisem s tlačítky „obnovit“ a „označit za přečtené“ pro daný kanál. Formulář pro přidávání kanálu se bude odesílat AJAXově, seznam kanálů se obalí snippetem a přidání kanálu aktualizuje tento snippet.
- URL a routování: přiznám se, že u tohodle moc nevím. Bylo by možné se vrátit zpět k nezAJAXovatělé aplikaci a tam upravit URL. Či říct „a teď si představte, že uživatel nemá Javascript“ a rozšířit aplikaci tak, aby fungovala i bez JS.
Implementačně to není vůbec nic složitého (s tím souvisí to, že je to funkčně chudé – ale je to QuickStart) – využívalo by to jen Nette, dibi a PHP věci (SimpleXML / zabudovaný HTTP stream wrapper).
A ne, RSS čtečku vážně nepotřebuju :-)
Nicméně souhlasím s tím, že pro nějaký QuickStart to není typická
aplikace, a třebas pro to ukázání routování asi ani moc vhodná (i když
on už není takový rozdíl ukazovat to na adresách typu
/blog/muj-super-clanek
, nebo
/ctecka/http-forum-nette-org-feed-php
).
A nemyslím si, že by QuickStart měl sloužit jako základ pro další
aplikace. Jeho úlohou by mělo být ukázat, co se s frameworkem dá dělat.
Víte, proč podle mě (mimo jiné) třebas u Railsů začínají blogem?
Protože ActiveRecord. ActiveRecord je jedna z hlavním složek Railsů a
místo toho, aby člověk psal
SELECT title, content FROM articles WHERE id=1
, napíše jen
Article.find(1)
. Pro mě, když jsem zkouknul první screencast,
tohle bylo hlavní lákadlo. Nette žádné ORM neobsahuje, proto bych se omezil
na co nejmenší využívání databáze, její jednoduchost. U Nette jsou
podle mě nejzajímavější šablony, formuláře a snippety, ty bych
zdůrazňoval.
- Ondřej Mirtes
- Člen | 1536
Ja mam, mozna trochu mimozni, dotaz – proc jako tema pro quickstart nemuze poslouzit CD-collection?
- ic
- Člen | 430
Já když jsem dělal první nette web jen abych se s tím naučil tak jsem dělal ‚zkracovač odkazů‘ http://bit.ly a další podobní… dneska má pomalu každý web svoji zkracovací službu. Ale i na ten quick start by se to mohlo hodit… je to jednoduché a dá se na to nabalit hodně dalších přídavných funkcí.
- Blizzy
- Člen | 149
pekelnik napsal(a):
Nápad na zkracovací službu není špatný… nadruhou stranu to není ani quick start – spíše takový ligthning start :) Na druhou stranu kdyby k tomu byl i sdíleč na clipboard a uploader obrázků… :)
Zkracovač je příliš jednoduchý a rychlý? Podle mě zkracovač vůbec není příliš jednoduchý pro quick start aplikaci, a to ani v nejosekanější formě. Jeho problém by mohl být maximálně ten, že je to nudné a člověk si z toho neodnese tolik know-how pro psaní dalších aplikací.
Rád bych připomněl, že Davidův quick start byla tabulka naplněná daty, a sám si pamatuju, že než jsem to přečetl a zprovoznil, když jsem s Nette začínal, zabralo to skutečně hodně času.
Podle mě čím jednodušší, tím lepší… Není potřeba vytvářet kompletní aplikaci, na kterou si pak každý může navázat a přidat x featur. Přece jenom Django má taky „jen“ anketu a ten tutoriál rozhodně nepatří mezi krátké.
Editoval Blizzy (12. 9. 2010 18:01)
- ic
- Člen | 430
Zkracovač je sice jednoduchý, ale dá se hodně ztížit, pokud by se už někdo nudil… dájí se udělat časově omezené odkazy, odkazy s omezením na počet průchodů, jen na určité IP, nebo naopak některé IP vyloučit, ochrana heslem a tak dále, s tímhle vším už by to trvalo mnohem déle, takže pokud by byl obyčejný zkracovač příliš jednoduchý, dal by se o něco obohatit.
- Blizzy
- Člen | 149
Ondřej Mirtes napsal(a):
CD-collection, haló! :)
CD-collection (původně akrabat) je kopie jednoho z nejznámnějších Zend Framework tutoriálů: Getting Started with Zend Framework od autora Zendu, Roba Allena.
Editoval Blizzy (12. 9. 2010 18:18)
- David Grudl
- Nette Core | 8218
Cifro napsal(a):
Wow, 3 strany threadu o brainstormingu pre QS. Za ten čas už by ten quickstart s blogom bol hotový :))
Vůbec není od věci ty další nápady zpracovat, rád je přidám do distribuce do příkladů. Takže kdo budete mít chuť, klidně se do toho pusťte!
- PJK
- Člen | 70
bojovyletoun napsal(a):
Nápadu je kopa, příklady se dají sehnat z jiných framerorků Yii – hangman
Jj, to je dobrá věc, na tom by se dalo krásně ukázat několik věcí. Možná to udělám…
- Kurtas
- Člen | 109
Zdar, toz jsem si rikal ze si dnes osaham nette. Reknu Vam rozchoit quickstart Todolist dle navodu je pomalu nadlidsky ukon pro nekoho kdo nette vydi poprve.
Stahl jsem si aktualni verzi Nette Framework 2.0-beta pro PHP 5.3 … vykopiroval sandbox a pustil se do toho … jen pripojeni dibi do DB mi vzalo pres 8hod! Bo syntaxe nastaveni config.ini (v nove verzi config.neon) neodpovida nove verzi, o tom ze musí byt „stejne odradkovani v config.ini“ v manualu ani carka ..... dale problem bootstrap kde se vola nova instance Nette\Configurator a diky tomu jak jsem jsem aspon pochopil Environment::getConfig(‚database‘) vracelo stale null :(
Fakt pakarna, po 12h jsem tuto primitivni app nerozhodil a dnes to vzdavam. Mozna je nette nejrychlejsi, nebezpecnejsi, ale taky bohuzel hodne spatne zdokumentovany aspon pro zacatecniky :(
Primlouvam bych se aby v kazdem novem releasu Nette bylo v examples funkcni TodoList
- Vyki
- Člen | 388
Kurtas napsal(a):
Fakt pakarna, po 12h jsem tuto primitivni app nerozhodil a dnes to vzdavam. Mozna je nette nejrychlejsi, nebezpecnejsi, ale taky bohuzel hodne spatne zdokumentovany aspon pro zacatecniky :(
Dnes údajně měla vyjít nová dokumentace. Jestli to dneska už nekplapne, tak by to ale mělo být v dohledné době. Jestli bude kvalitní rád si na ni počkám :o) Nesji v tom sám, kdo v tom má nyní trochu guláš. Dodělávam nyní jeden projekt a mám dev verzi ještě než se změnilo DI. Už to ani měnit nebudu, ale na tu dokumentaci čekám díky velkému množství změn také jako na slitování.
- David Grudl
- Nette Core | 8218
Dokumentaci vypustím někdy v noci, každopádně její součástí zatím nebude quick start.
- Majkl578
- Moderator | 1364
Za tu dobu, která uplynula od napsání tohohle QS se toho dost změnilo… Aktuálně by potřebovat zrevidovat a následně některé části kompletně přepsat nebo vyházet. Koncepčně mi ale přijde navržený dobře.
Chtělo by to tedy aktualizaci a dopsání posledních chybějících kapitol. Otázkou je, jestli dibi nahradit za Nette\Database nebo jej ponechat.
Jak bych měl trochu času, podíval bych se na to, pokud se do toho nikdo nepustí dřív (popř. se mnou). Tedy pokud David neplánuje vlastní. (Prozatím jsem tam přidal info hlášku.)
- David Grudl
- Nette Core | 8218
Uff, jsem nečekal, že zmergovat ty dvě databáze bude takový ojeb :-( Musím ráno na školení, tak to nebudu hrotit, dokumentace bohužel dnes ještě nebude.
- Pavel Kouřil
- Člen | 128
Pokud školíš dnes Nette, tak bys mohl použít základ školené aplikace zrovna pro QS, ne? :)
Editoval Pajka (2. 6. 2011 10:59)
- Pavel Kouřil
- Člen | 128
To je tak, když se člověk probudí moc brzo a jde psát na fórum. :D
Jo, loov to pochopil správně.
- Darkry
- Člen | 101
+1
Nette twitter – To se mi líbí asi nejvíc, jednoduché, rozšířitelné, ukazující krásně výhody nette, AJAX
todo-list – dá se na tom hodně ukázat a přitom je to jednoduché (možná ale až moc)
osobní organizér
rezervační systém – zajimavá myšlenka
Editoval Darkry (2. 6. 2011 16:50)
- Filip Procházka
- Moderator | 4668
Tak se do toho pusťte, ty příklady se samy nenaprogramují a články samy nenapíší. :P
- wodCZ
- Člen | 49
Teoreticky hovořit v QS o tom, co by se mohlo kde možná jak použít mi
příjde ne moc výhodné pro začátečníka. Pro mě osobně by byla aplikace
v QS úžasná věc, na které by se ukázalo jak v praxi využít jaké
funkce. Jak co funguje a jak se co aplikuje.
Nejnadšenější bych byl za nějaký screencast ze školení, ale to by asi
nebylo moc výhodné pro pana Davida. Ovšem pro začátečníky s Nette by to
byl nejlepší zdroj informací.
- maio
- Člen | 7
jantichy napsal(a):
Z toho důvodu jako nejlepší, nejprůhlednější a nejméně opruzoidní ze své podstaty vidím velice jednoduchý BLOG nebo jednoduchý KATALOG. Všechno ostatní už je poměrně dost specifické a odvádí pozornost od demostrace Nette k přemýšlení nad samotnou aplikací.
+1 pro BLOG
- 22
- Člen | 1478
nestačí tyto tutoriály?
https://pla.nette.org/…tvarime-blog
https://pla.nette.org/…ivajici-ajax
btw: pokud si projdete všechny oficiální tutoriály, tak věřím tomu, že člověk je schopen v Nette už napsat něco složitějšího.