Názory k článku
Ruby on Rails: Úvod
Ruby on Rails
celé vláknoTaky bych docela uvítal výměnu informací o "složitějších" metodách použití, protože jednoduché základy jsou skutečně k dispozici na webu v takřka kompletní podobě. (Viz. například Four days on rails :-)).
rails je pro "programátory nové doby"
celé vláknoPřijde mi to jako framework pro "programátory nové doby". Dřív jsme se nikdy nepozastavovali nad tím, že si musíme většinu kódu napsat sami. Taky se časem dobereme k výsledku a má to tu výhodu, že po každém projektu programátor znalostně naroste, má plnou kontrolu nad celým projektem, kterému zcela rozumí a nebyl problém upravit úplně cokoliv.
Dnešní mladí programátoři mají zcela jiný styl práce. Po obdržení zadání nejdřív spustí google, natahají neskutečné množství knihoven, které "by se mohly hodit" a podobných hotových aplikací. Potom bezmyšlenkovitě a roboticky jen lepí kus toho a kus onoho dohromady, aniž by všemu zcela rozuměli ("dyť to funguje"). Vůbec nad ničím nepřemýšlejí a zdaleka nemají nad projektem plnou kontrolu. Když něco nefunguje, tak nemůžou najít chybu ve změti cizích a vlastních bugů a jsou zcela ztraceni. Ale nevadí jim to.
Podobně se pracuje i v Rails. Něco vygeneruju, sem šáhnu, tam šáhnu a je to hotové. Když chci něco jinak, tak to přece nebudu předělávat, radši to nechám jak to je, aby se to náhodou nerozbilo.
Tenhle způsob práce je pro mě zcela nepřijatelný. A dovolím si tvrdit, že dokážu dojít ke stejnému cíli v podobném čase. V praxi se totiž zadání často tak liší, že se na ně snažit napasovat "univerzální řešení" není uskutečnitelné. A na společné věci si každý normální programátor napíše v krátkém čase své jednoduché knihovny, které jsou jeho stylu práce šité na míru.
Nemusíte se mnou samozřejmě souhlasit, moje názory se mohou lišit i jinde. Například o Smarty si myslím, že to je strašný pokus. Tvrzení, že v šablonách mohou být ify a whily, je zcela nesmyslné. Pokud totiž kód obsahuje jakoukoliv logiku, při každé úpravě šablony bude muset být zapojen i programátor (kromě kodéra) a útrpně pomáhat lepit celek.
Re: rails je pro "programátory nové doby"
celé vláknohttp://www.jcorporate.com/
Re: rails je pro "programátory nové doby"
celé vláknoRe: rails je pro "programátory nové doby"
celé vláknoRe: rails je pro "programátory nové doby"
celé vláknoNikdy jsem si cizi reseni nestahoval z internetu, naopak jsem premyslel, jak bych si mohl ulehcit praci v PHP s SQL napsanim vlastniho "frameworku", ale po objeveni RoR jsem tuto potrebu ztratil, vymyslel bych znovu neco, co jiz existuje v mnohem lepsi podobe, nez jake bych dosahl sam. Nezanedbatelnou vyhodou RoR je kvalita kodu framewoku, myslim, ze srovnani s postahovanyma knihovnama z netu to skutecne nesnese.
Neposledni argument pro RoR je, ze se stejnak v praxi pouziva ruzne firemni framworky postavene nejlepe na jinych framworcich a Java je teto zbesilosti zrovna nejlepsim prikladem....btw: jak mi bylo receno, kdyz jsem ze uchazel o praci u jedne z vetsich ceskych firem, "Skoleni naseho firemniho frameworku je velmi dulezite pro zapracovani, trva 6 celych dni a bez absolvovani byt jedineho dne se vam muze stat, ze nic nepochopite....." - znamena to snad, ze k tomu ani nemaji dokumentaci? ;D
Nakonec se bavime jen o urovni abstrakce. Kdyz to prezenu, tak se muzem rovnou vratit k assembleru, vzdyt vyssi jazyky nam jen brani skutecnemu pochopeni programovani.... Mirnejsi priklad je pouziti napr C++ bez stdlibrary - stromy, zasobniky by mel take kazdy umet naprogramovat sam...a co kdyz to uz umi, musi porad pouzivat svoji ne uplne vylazenou implementaci?
Re: rails je pro "programátory nové doby"
celé vláknoale prosil bych - je nutné šířit slovo "vylazenou"? Co to má znamenat? Je to snad nějaká odvozenina od "vymazlenou"? Slovo "vyladěnou" zní snad málo spisovně a odborně?
Re: rails je pro "programátory nové doby"
celé vláknoAno i ja respektuju jine nazory, snad nevyplynul z me reakce opak.... Pomaha x otravuje - napr na vytvoreni administrace je to uzasny nastroj, pro aplikaci s velkym poctem pristupu nevim. Jde jen o konkretni souvislosti, ale na tom se verim shodujeme.
Zajimave jak casto verejna diskusni fora, nehlede na zamereni, zabredavaji do reseni spisovne cestiny ;]
Do ted jsem "ladění - lazení" a "sedění - sezení" povazoval za obdobny priklad dublet....po kratkem hledani clanku na toto tema jsem pochopil, na co narazite. Ano nevedel jsem to, cely zivot mam napr kytaru "nalazenou" a ne "naladenou", protoze mi to tak neleze z huby....Jiz se tesim na nova pravidla pravopisu, ktera dozajista posunou spisovnnou cestinu bliz skutecnosti stejne tak, jako to udelala pred par lety.
Re: rails je pro "programátory nové doby"
celé vláknoNo je treba vice cist literaturu a vubec se tak nejak sebevzdelavat vseobecne a ne jen pouze v Ruby :) Pro cestinu je treba cit uplne stejne jako pro programovani. Chybna cestina obvykle signalizuje nepozornost a sklon k rychlym resenim bez dohlednuti jejich dosahu dale, nez za uzaviraci zavorku kodu :)
Re: rails je pro "programátory nové doby"
celé vláknoTak trochu flamu:
Dřív jsme se nikdy nepozastavovali nad tím, že si musíme většinu kódu napsat sami.
Jistě, ani já jsem se v dávných dobách nepozastavoval nad tím, že si pro velké pole musím alokovat diskovou stopu a vyřešit si "swapování" mezi diskem a 64 KB RAM. Možná jsem líný programátor nové doby (nikoliv už mladý), ale to, že se mi o swapování nyní stará OS (a v 99.9 % naprosto uspokojivě), mi zcela vyhovuje a netoužím mít nad tím plnou kontrolu. BTW, jak můžete dělat v Javě, když tam nemůžete nijak zvlášť moc ovlivnit správu paměti (GC)? Nebylo by lepší staré dobré C, kde máte nad alokací a uvolňováním paměti plnou kontrolu (malloc a free)?
A na společné věci si každý normální programátor napíše v krátkém čase své jednoduché knihovny, které jsou jeho stylu práce šité na míru.
Většina webových (a asi i mnoho newebových) aplikací pracujících s relačními databázemi s výhodou užije ORM. Nemyslím, si, že by bylo rozumné a efektivní, aby si to psal každý sám pro všechny možné databáze, přesto že by měl pak nad tím plnou kontrolu.
Tvrzení, že v šablonách mohou být ify a whily, je zcela nesmyslné.
Doporučuji výborný teoretický článek http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf o tom, co je a není nutné v template enginech. Implementace těchto myšlenek jako "minimální" rozumné template engine je pak StringTemplate a stejně je tam if a v podstatě i cyklus (tedy jen foreach, nikoliv while)
Re: rails je pro "programátory nové doby"
celé vláknoRe: rails je pro "programátory nové doby"
celé vlákno- šablona musí být validní a kompletní XHTML dokument
- šablona musí vypadat stejně jako vygenerovaná stránka
- v šabloně musí být vzorová data (žádné $blabla.blabla$)
Re: rails je pro "programátory nové doby"
celé vláknoNechápu ani, jak by v šablonách mohla fungovat vzorová data místo nějakého uvedení názvu proměnné, jejíž hodnota se má dosadit. Pokud například je v textu "1.12.2005", jak pak poznáte, že to není text, ale vzorová data, kam se má dosadit třeba aktuální datum a jak odlišíte, že při jiném výskytu "1.12.2005" se má dosadit třeba datum poslední aktualizace stránky? Navíc to ani není přehledné. Napsat v těchto případech třeba $today$ a $page.last_modified_on$ mi přijde logičtější.
Re: rails je pro "programátory nové doby"
celé vláknoŠablona pak může být xhtml validní i bez dolarů ;)
S problémem include versus xhtml validita plně souhlasím.
Re: rails je pro "programátory nové doby"
celé vláknoStejně nevidím (pro sebe) žádnou výhodu v tom, že by moje šablona měla být hezké validní XHTML. Snad kromě toho, že bych si ji mohl přímo prohlížet a "ladit" v prohlížeči. To ale v dnešní době, kdy se spíše značkuje jen "struktura" dokumentu a formátuje se přes CSS, mi nepřijde tak významné.
Re: rails je pro "programátory nové doby"
celé vláknoXHTML validita se beztak nejlepe zjistuje, ze do validatoru zadate url.
Re: rails je pro "programátory nové doby"
celé vláknoRe: rails je pro "programátory nové doby"
celé vláknoeste k tomu
"Vůbec nad ničím nepřemýšlejí a zdaleka nemají nad projektem plnou kontrolu."
ja pri kodovani JAVY tiez velmi nerozmyslam. jednoducho rozdelim vsetko pred zacatim kodovania na male kroky a kod ide sam. zeby TAO?
www.canonical.org/~kragen/tao-of-programming.html
Re: rails je pro "programátory nové doby"
celé vlákno(Naopak java je diky overheadu naprosto nepouzitelna na projekty male - nebo na "klasicky" web, ve kterem se pousti program zvlast na kazde zobrazeni stranky).
Jinak, co se tyce jednoduchych knihoven, neni dulezite je napsat, ale pochopit. Osobne si taky myslim, ze napsat je je nejjednodussi metoda jak je pochopit, ale nekteri asi nebudou souhlasit.
databáze - pohledy, funkce
celé vláknoRe: databáze - pohledy, funkce
celé vláknoRe: databáze - pohledy, funkce
celé vláknoPrehled obdobnych frameworku
celé vláknoRuby - Rails
Python - Django
PHP - Symfony
Osobne preferuji Django.
Re: Prehled obdobnych frameworku
celé vláknoRuby totiz neovladam, ale ruby on rails sa mi celkom pozdava.
Inak na vacsie a komplikovanejsie veci je velmi dobra kombinacia java+xml+xslt+xpath. Uz konecne aspon nepovedia cloveku, ze je streleny, ked cosi take vypusti z ust :)
Re: Prehled obdobnych frameworku
celé vláknoPři takovém způsobu vývoje se programátor s kodérem nemusí vůbec potkat (ano, kodér musí samozřejmě ovládat xlst).
A imho je to vhodnější i na menší věci.
Re: Prehled obdobnych frameworku
celé vláknoLen ten marketing ma dostal, ako je RoR jednoduche. V xslt je niekedy babracka vyrobit sablonu. Tak si chcem skusit, nejaky ten "easy" framework na domovsku stranku:)
Re: Prehled obdobnych frameworku
celé vláknoPython - Subway
Osobne preferuji TurboGears :-))
dobra kniha o RoR
celé vláknoSam webove aplikace moc nedelam, seznamil jsem se s RoR jen ze zvedavosti a musim rict, ze jsem se naucil spoustu uzitecnych kousku - vrele doporucuji!
Re: dobra kniha o RoR
celé vláknovyborny framework
celé vláknoRe: vyborny framework
celé vláknoRe: vyborny framework
celé vláknoPro pripad, ze by nekdo chtel oponovat: Jak se v XSLT napise "zopakuj tohle 12x" ? A "zopakuj s mensi odlisnosti" ? Dobre, udelat cyklus v C preprocesoru taky neumim, ale taky si myslim ze by se to hodilo ...
Re: vyborny framework
celé vláknoRe: vyborny framework
celé vláknoTim se ukecanost XML snizila z libovolne na konstantni nasobek, ale hrozne je to porad. A myslim, ze az budu priste potrebovat nejake XSL, poradne si otestuju schopnosti konstrukce 'xsl:template name=' ...
Re: vyborny framework
celé vláknoTu první námitku jsem nějak nepochopil, stačí přece změnit atribut method v xsl:output. Máte tam druhou verzi, která generuje XML - sice se z nějakého důvodu v Mozille nezobrazí XML struktura, jenom vlastní text (asi se s XSLT počítá hlavně pro generování HTML), ale stačí si zobrazit zdrojový kód výběru a uvidíte ji.
Já přece nepopírám, že XSLT je ukecané, také ho obvykle na generování HTML na serveru nepoužívám, protože znám lepší způsoby jak trávit čas. Jenom jsem opravoval váš argument očividně vycházející z neúplných znalostí.
Re: vyborny framework
celé vláknoWhoa. Zobrazit zdrojovy kod vyberu ... a ja myslel, ze to jde delat jen s extensions ...
Prominte, zapomel jsem: diky za doplneni znalosti. Skutecne me tato konstrukce nenapadla, prestoze v jinych jazycich jsem uz rekurzi misto while-cyklu pouzival. Kdyz jsem se nad tim zamyslel, prislo mi ze to bude asi proto, ze nemam praxi v pouzivani konstrukce 'xsl:template name=' (pouzival jsem hlavne 'xsl:template match=').
Myslel jsem, ze na ukecanosti XSLT se shodneme.
Re: vyborny framework
celé vláknoRe: vyborny framework
celé vláknoTakže asi XSLT 2.0 neumí a u XSLT 1.0 to nefunguje.
Re: vyborny framework
celé vláknoRails v porovnání s PHP?!
celé vláknoPripominky k clanku
celé vláknoNa uvod bych rad rekl, ze ocenuji autorovu snahu priblizit RoR "masam". Je to rozhodne zasluzna cinnost ... jen mi prijde, ze by to slo udelat s mensim mnozstvim chyb.
Pokusim se popsat jen nektere z nich (ty do oci bijici):
Nevim, jestli to byl autoruv zamer a nebo proste jen "prehmat", ale ten priklad se zkracovanim metod je syntakticky nespravny. I kdyz bych akceptoval, ze si autor vymyslel metodu checkbox, ktera v RoR API neexistuje (existuji dve podobne -- check_box a check_box_tag, ale obe maji uplne jinou signaturu), tak me zarazi zjevna syntakticka chyba -- pouziti lokalnich promennych (checked, size) misto symbolu (:checked, :size).
Dalsi podivna vec je myslim informace o views. Ve view se nepouziva jen <%=, ale take <% a bylo by dobre upozornit na ten rozdil (bez = se vysledek expression nevypisuje do vystupu). Navic by nebylo od veci zminit "h" a jeho vyznam pri ochrane proti XSS.
Dalsi velmi zavadejici informace je myslim: Kontrolér řeší logiku. V podstatě řídí posloupnost zobrazování stránek a výměnu dat mezi nimi. To je myslim uplne "mimo misu". Controller neridi posloupnost zobrazovani stranek. Controller zpracovava requesty uzivatelu, vola metody prislusnych modelu a zobrazuje vysledky volanim prislusnych views. Controller nema tuseni o nejakem "flow" mezi akcemi/strankami.
Za drobny prohresek proti obecne uznavanemu CodingStyle bych navic povazoval i pouziti { ... } misto do ... end (v prikladu listovani zaznamu z modelu). Stejne tak pouziti "deprecated" metody find_all misto find(:all) pusobi mirne neserioznim dojmem.
Re: Pripominky k clanku
celé vláknopokusím se k tomu něco napsat.
1. V úvodu jsem chtěl nastínit principy Rails, nikoli jejich konkrétní metody. Vymyslel jsem "checkbox", abych na ní demonstroval, že Ruby akceptuje jak ukecaný, tak neukecaný zápis. Že jsem u symbolů opomněl dvojtečky, je samozřejmě chyba, nicméně účel nebyla ta metoda, proto nemá podtržítko.
2. Ke konkrétnímu použití značek <% a <%= se dostanu až v konkrétním kódu, v úvodu jsem nechtěl popisovat detaily, takže jsem jen zmínil, že značky existují.
3. Mohl jsem to lépe formulovat, přesto bych polemizoval o tom "flow". Chápu ho osobně přesně tak, co dělá controller. Jinými slovy nevím, co jiného než controllr by v Rails řídilo "flow". Je to controller, který zareaguje na akci a podle parametrů rozhodne, co bude zobrazeno, což osobně chápu jako "flow".
4. Příklad listování záznamů: chtěl jsem demonstrovat pouze extrahované použití modelu v nějakém skriptu, nikoli jak se takový model použije v controlleru, takže v příkladu používám pro názornost i metodu puts, která v controlleru nemá co dělat. Kdybych to nevyextrahoval, musel bych uvést, že by se plnila proměnná v controlleru a procházela by se ve view, což by, myslím, lidi, kteří Rails nikdy neviděli, pouze mátlo.
Ale jinak díky za připomínky ;-)
dalsi Rails tutorial
celé vláknorails forum
celé vláknoRails forum podruhe
celé vláknoHosting Ruby On Rails
celé vláknoWebhosting založený na RoR naleznete na www.4smart.cz

