Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Nette Framework: Chytré šablony

Mastodont
Mastodont (neregistrovaný) 85.132.159.---
7. 4. 2009 7:06 Nový

Syntaxe

celé vlákno
... Pokud by proměnná obsahovala HTML kód a chtěli bychom ji vypsat bez jakékoliv trasformace, stačí přidat vykřičník: {!$item->name}. ...

Tipnul bych si, že většina programátorů si pod tímto zápisem představí úplně něco jiného než vypnuté escapování. A to je IMHO největší problém u D.G. - on naprosto kašle na logiku syntaxe, viz Texy, která je totálním galymatyášem nejrůznějších typů závorek apod.

Co třeba noescape($item->name) .. nebo filtr @@$item->name | noescape@ ..
v6ak aura:72
7. 4. 2009 7:35 Nový

Re: Syntaxe

celé vlákno
Toto je dost sporná věc. Už proto, že kdo používá CBF, ten bude většinou chtít vypisovat obsah proměnných a ne negovat boolean a vypisovat v surovém stavu (bez převodu na ano/ne apod.).
Ale je pravda, třeba taková dvojtečka (to mě tak letmo napadlo) by byla asi lepší.
RuDa
RuDa (neregistrovaný) ---.znojmo.cz
7. 4. 2009 8:33 Nový

Re: Syntaxe

celé vlákno
Já zase docela chápu, proč je tam ten vykřičník. Když udělám šablonu pro šéfa, který si ji třeba později chce upravit k obrazu svému, tak on pochopitelně nic neví o nějaké negaci, pro něj vykřičník znamená "pozor, (potenciálně) nebezpečná akce" (a přesně to jsem mu také řekl).
Tzn. v (pod)šabloně může přesouvat, přidávat nebo ubírat vyjmenované parametry (např. {$zbozi->popis} ), jejichž seznam dostal, ale případné vykřičníky musí napřed konzultovat. :-)
Peter Helcmanovsky aura:79
7. 4. 2009 9:07 Nový

Re: Syntaxe

celé vlákno
Ja myslim ze idealni sablony nemaji mit s programovanim nic spolecneho (proc, kdyz jde jenom o formu zobrazeni?). Takze ten vykricnik mi v tomhle kontextu nevadi, spis mi vadi ze jako linemu programatorovi se mi nechce ucit dalsi "jazyk" sablon, co znamena ze idealni sablony by meli mit i minimalni syntax (ktera samozrejme umoznuje maximum moznosti).

Z tohohle letmeho pohledu na sablony Netty to vypada ze se k tomu idealu blizi alespon tak jako jine sablonovaci systemy, i kdyz neni nad zkusenosti z velkeho projektu, tam se teprv ukaze.


Co by mne osobne zajimalo mnohem vic je reseni podpory prekladu, jak by se pan tvurce Netty vyporadal s touhle ulohou tak aby to bylo pokud mozno efektivni na vsech urovnich, t.j. zatez serveru, srozumitelnost kodu a moznost nechat prekladat stranky lidi kteri o programovani nic nevi a veci jako escapovani & nebo jmena promennych jim nic nerikaji. (ze je naucim neprekladat jmena promennych, s tim se pocita, ale vysvetlovat jim kompletni zaludnosti syntaxe ruznych specialnich znaku nelze, takze idealni system prekladu tyhle veci pred nimi ukryje natolik, aby nemohli nic pokazit)

Osobne si myslim ze sablony jsou jakymsi prvym krokem k tomuhle idealu, ale zajimalo by mne jak by resil konkretni implementaci takoveho systemu, kdy si uzivatel nastavi ve svem profilu svuj jazyk a pak se mu web zobrazuje ve zvolenem jazyce.
romansklenar
romansklenar (neregistrovaný) ---.net.upc.cz
7. 4. 2009 17:11 Nový

Re: Syntaxe

celé vlákno
Podpora pro překlady je v Nette taky, volá se zápisem: {_'text to translate'} či {!_'text to translate'}. Co dělá vykřičník, to už asi uhádnete ;)

Nette ale nikomu nenutí používát nějaké konkrétní translatory/adaptéry, vyžaduje jen, aby implementoval rozhraní ITranslator, takže se dost dobře dá použít i ten ze Zendu, příklady implementace se dají nalést ve fóru. Podpora pro překlady je i ve formulářích, které jsou zmíněny některém z předchozím dílu seriálu.
KLoK
KLoK (neregistrovaný) ---.kve.cz
7. 4. 2009 9:13 Nový

Re: Syntaxe

celé vlákno
No to je prave dost vyhoda, protoze pro tvorbu sablon nepotrebujete programatora a staci Vam clovek se znalosti html a jednoducheho sablonovaciho jazyka. Pokud muzete plytvat programatorskym potencialem na tvorbu sablon, tak si toho luxusu uzivejte.

Navic velka cast programatoru je schopna delat ve vice jazycich a tohle jim urcite problem cinit nebude

A zaverem: neni problem vzit sablonovaci system pana Grudla a prepsat si jeho "CurlyBracketsFilter" na "DoubleAtFilterWithEscapeCalledByFunctionFilter"
Jarda
Jarda (neregistrovaný) ---.65.142.82.ip.b26.cz
7. 4. 2009 9:16 Nový

Re: Syntaxe

celé vlákno
Ale vůbec ne, ta syntaxe je IMHO vynikající a naprosto snadno přejde do krve.
Mě osobně přijde podstatně hezčí a lepší než například syntaxe Smarty. Navíc se
dá CurlyBracketsFilter velice snadno rozšířit o další makra a filtry. Opravdu nevím, proč bych měl psát noescape($item->name) .. nebo filtr @@$item->name | noescape@ - to je úplně psycho :)
v6ak aura:72
7. 4. 2009 9:46 Nový

Re: Syntaxe

celé vlákno
Ještě dodám, že noescape mi přijde jako nejhorší zde zmíněné řešení - vypadá to jako volání funkce, což není možné zde použít.
Jarda
Jarda (neregistrovaný) ---.65.142.82.ip.b26.cz
7. 4. 2009 10:03 Nový

Re: Syntaxe

celé vlákno
No a co se týče Texy a údajného galimatiáše - svou matku jsem naučil psát Texy (potažmo tedy validní html/xhtml) během 10 minut (narozdíl od wordu nebo Wysivyg editorů) - a ta opravdu není kodér ni programátor :)
Mastodont
Mastodont (neregistrovaný) 85.132.159.---
8. 4. 2009 19:39 Nový

Re: Syntaxe

celé vlákno
Super, matka jako universální argument :-)))) Tak se zkuste zamyslet, proč se světě rozšířily různé varianty BBCode namísto třeba Markdown - jestli to náhodou nebude tím, že mají jednoduchou a hlavně konsistentní syntaxi.
Jarda
Jarda (neregistrovaný) ---.65.142.82.ip.b26.cz
9. 4. 2009 9:46 Nový

Re: Syntaxe

celé vlákno
Máma řikala, že BBCode stojí za prd. :-)

Ne, ale vážně, každý co potřebuje, ale mě přijde Texy syntaxe šitá
na míru BFU (a mě taky). Zase tolik pravidel tam není, ne? :)
uživatel si přál zůstat v anonymitě ---.net.upc.cz
8. 4. 2009 22:48 Nový

Re: Syntaxe

celé vlákno
Jiste, mne se taky pise mnohem lip v ruznych wiki syntaxich, uz jen proto, ze onen Word skoro neovladam ...

Nicmene je fakt, ze Texy syntaxe je podle me docela zverstvo :/
kulda
kulda (neregistrovaný) ---.karneval.cz
2. 2. 2010 15:03 Nový

Re: Syntaxe

celé vlákno

Naopak, Texy syntaxe je velmi elegantní. Sám jsem si dělal před pár lety vlastní wiki a vymýšlel vlastní syntaxy, aby byla co možná nejjednodušší… a když jsem pak viděl syntaxi Texy, byla mnohem jednodušší a intuitivnější něž ta moje.

yossarian
yossarian (neregistrovaný) ---.ecommerce.cz
7. 4. 2009 13:51 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Ano, aneb nechme program delat neco, co neni explicitne receno, a nedelat to jedine pokud si rekneme. Cesta do pekla^2, neb clovek co pouziva toto v ramci 'zachovani bezpecnosti' bude vedet jeste vetsi lautrhovno o tom, proc je escapovani dulezite a k cemu se zrovna tady pouziva. Fuj.
KLoK
KLoK (neregistrovaný) ---.kvenet.cz
7. 4. 2009 14:10 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
A proto ze nekdo nevi k cemu to escapovani je, tak bude lepsi mit nezabezpecenou aplikaci. A neni to cesta do pekel^3?
David Grudl aura:76
7. 4. 2009 14:19 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Samozřejmě to explicitně řečeno je. V dokumentaci, v tomto článku. {$xxx} vypíše escapovanou proměnnou. Lze to říct explicitněji?
yossarian
yossarian (neregistrovaný) ---.ecommerce.cz
7. 4. 2009 14:45 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
A ted mi ukazte cloveka, ktery o moznych XSS exploitech nevi, a pritom vi co znamena escapovana promenna.

Porad si myslim, ze by kod mel delat to co po nem chce programator, a ne delat to, co si mysli, ze by se programatorovi mohlo hodit, potom vznikaji bastly jako Sharepoint od M$.

Pane Grudl, je pekne ze se snazite zvysit bezpecnost, ale pouze lepite zaplaty na rany aby nebyly videt, misto reseni samotne priciny. (coz priznavam, nebude asi uplne jednoduche, jestli vubec mozne.)
Jarda
Jarda (neregistrovaný) ---.65.142.82.ip.b26.cz
7. 4. 2009 15:17 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
>Porad si myslim, ze by kod mel delat to co po nem chce programator, a ne delat to, co si mysli, ze by se programatorovi mohlo hodit, potom vznikaji bastly jako Sharepoint od M$.

A to se tady neděje? Když chci používat šablony, tak je používám ne? Kdyz použiji {$var} tak právě proto, že vím, že $var bude escapovaná a právě proto jsem to použil.
Nechce se mi psát echo htmlspecialchars($var). Opravdu nějak Váš příspěvěk nechápu.
Borelioza
Borelioza (neregistrovaný) 158.194.169.---
7. 4. 2009 15:21 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
> Porad si myslim, ze by kod mel delat to co po nem chce programator

A odkud prosím berete přesvědčení, že programátor NECHCE, aby se to automaticky escapovalo? To je nějaký axiom nebo dogma…?
Jarda
Jarda (neregistrovaný) ---.65.142.82.ip.b26.cz
7. 4. 2009 15:25 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
> Pane Grudl, je pekne ze se snazite zvysit bezpecnost, ale pouze lepite zaplaty na rany aby nebyly videt, misto reseni samotne priciny. (coz priznavam, nebude asi uplne jednoduche, jestli vubec mozne.)

No a tohle je úplně směšné! Co že nám to tu vlastně sdělujete? Že je pan Grudl lepič záplat? Že je mnohem lepší řešit příčinu? Ale že to možná nejde? A máte pro nás ještě nějaký názor?
David Grudl aura:76
7. 4. 2009 17:39 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Nepochopil jste princip.

Je zbytečné se rozčilovat, zkuste si článek přečíst ještě jednou, nebo úplně nejlépe, vyzkoušet si to na svém počítači a rychle pochopíte, jak je řešení příjemné a užitečné.
v6ak aura:72
7. 4. 2009 15:36 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Pokusím se rekonstruovat ideu:
1. programátor/kodér potřebuje proměnný text na základě vnějšího vstupu.
2. Často je potřeba to nějakým způsobem escapovat.
3. Obě varianty by si zasloužily trošku zkrátit.
---
Jako logické řešení se nabízí tedy k oboum variantám nabídnout kratší varianty a to tak, že se obě budou zapisovat jinak. Sedí?
Další věcí je, že si o to programátor musí říct sám pomocí CBF, protože nikde není psáno, že to musí chtít vždy.
Tak co, pokud jsem z toho vynechal syntaxi, vidí na tom někdo něco špatného?
Jakub Vrána aura:47
7. 4. 2009 15:45 Nový

Kontextově závislé escapování

celé vlákno

Escapování závislé na kontextu je chytré (a v Nette elegantně implementované), opsal to dokonce už i Google :-).

Pro úplnost bych dodal, že automatické escapování funguje jen v kontextu HTML textu, HTML atributu uzavřeného do uvozovek nebo apostrofů, CSS ve značce <style> a JavaScriptu ve značce <script>. Pokud by nějakého blouda napadlo uživatelský vstup použít třeba na místě názvu HTML značky, tak to fungovat nebude, stejně tak nebude fungovat JS a CSS ošetřování uvnitř atributů style a on* (to už by smysl dávat mohlo, ale lepší je to vyčlenit mimo HTML kód).

David Grudl aura:76
7. 4. 2009 17:42 Nový

Re: Kontextově závislé escapování

celé vlákno
To je dobrá poznámka a váhám, jestli podporu pro style="..." a on*="..." přidat. Asi přidám.

(S tím Googlem jsi mě dostal. Takže nejenom Microsoft kopíruje Nette ;-)
David Grudl aura:76
8. 4. 2009 3:37 Nový

Re: Kontextově závislé escapování

celé vlákno
Byla to makačka ale je to tam ;)
Jakub Vrána aura:47
8. 4. 2009 13:49 Nový

Re: Kontextově závislé escapování

celé vlákno
Ještě jsem to trochu upravil. Jednak to nebylo HTML kompatibilní kvůli case-sensitivitě atributů a jednak se to nechalo chytit na známý chyták <p title=">">, kde > uvnitř ohraničené hodnoty atributu neukončuje značku.
David Grudl aura:76
8. 4. 2009 14:00 Nový

Re: Kontextově závislé escapování

celé vlákno
Díky, teď se může jít Google klouzat ;))

ps. Taky bych se šel klouzat. Kde se dá jít v tuhle roční dobu klouzat?
danaketh aura:72
7. 4. 2009 19:16 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Já si myslím, že pokud to situace/rozpočet dovoluje, tak by šablony měl dělat někdo jiný ale ne programátor. Ten by se měl soustředit na aplikaci jako takovou a kodérovi šablon pak jen předat seznam proměnných nebo se s ním předem dohodnout co mu bude posílat.

Kodér přece nepotřebuje vědět o nějakém XSS, escapování a bůhví o čem ještě. Potřebuje znát HTML a syntaxi Nette šablon... Pak mu stačí říct, že když přidá před proměnnou !, vypíše se mu čisté HTML. Osobně považuji XSS, stejně jako SQL Injection a další možné útoky, za záležitost aplikace a programátora. Šablona je pouze výpis dat, sama o sobě už nemá nic ošetřovat, jen vypsat co dostane. Ošetřit to má aplikace.

Nette data implicitně ošetřuje a je to tak správně. Představte si, že předáte šablony někomu jinému a on by tam místo {!$var} našel nějakou šílenost... Zabije vás :) Takhle mu stačí říct, že ! vypíná escapování, případně mu ukázat co tím je myšleno. Hotovo, tečka.

Šablony jsou přece k výpisu dat, ne k dalšímu programování...!

Ikdyby David nakrásně vymýšlel zcela nová pravidla programování, převracel PHP vzhůru nohama a tvrdil, že nejlepší webovky uděláte Assemblerem, tak je to jeho věc. Nikdo vás Nette používat nenutí.

BTW: Nedávno jsem se ucházel o práci v jisté firmě a mezi požadavky byla znalost Nette frameworku. Takže buď tam zaměstnávají tupce nebo Nette opravdu má něco do sebe ;)

Kdyby se každý držel zaběhlých postupů tak urputně jak to tu někteří předvádějí, tak ještě dneska sedíme v jeskyni a šutrem škrábeme obrázky na její stěnu :))
Martin Hassman aura:30
7. 4. 2009 19:35 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Nedávno jsem se ucházel o práci v jisté firmě a mezi požadavky byla znalost Nette frameworku.

A bude hůř, to je jen začínající trend (nemyslím konkrétně jen Nette, ale obecně frameworky nebo pomocné nástroje).

danaketh aura:72
7. 4. 2009 19:48 Nový

RE: Nette Framework: Chytré šablony

celé vlákno
Ani mi to moc nevadí. Stejně už pár měsíců zkouším CodeIgniter a Cake, tak k tomu připojím i Nette. S frameworkem je práce většinou rychlejší a člověka práce víc baví, když se může soustředit jen na psaní specifických částí.
v6ak aura:72
7. 4. 2009 21:56 Nový

Znalost XSS autorem šablon

celé vlákno
Ten, kdo dělá šablony by IMHO měl znát XSS.
1. Pokud zná HTML, nemělo by to pro něj být problém.
2. Na XSS je řada možností, vč. url.
3. Srovnání s SQL Injection nesedí - SQL se typicky používá v modelu, zatímco HTML, JS, CSS (...) v šabloně/statické. To je asi hlavní odlišnost.
Karel Hák
Karel Hák (neregistrovaný) 85.13.99.---
6. 6. 2009 16:47 Nový

Hezká URL v Coffe Machine

celé vlákno

Dobrý den,

zkoušel jsem přetvořit router tak, aby vytvářel „hezká“ url, avšak nepodařilo se mi to, proto bych se chtěl zeptat jak na to.

Změněný kód v bootstrap.php:
// Step 4: Setup application router
$application->setRouter(new SimpleRouter(‚Machi­ne:default‘));
$router = $application->getRouter();

// přidáme routu, objekt Route do MultiRouteru
$router[] = new Route(‚<presen­ter>/<action>/<co­in [0–9]+>‘, array(
‚presenter‘ ⇒ ‚Machine‘,
‚action‘ ⇒ ‚default‘,
‚coin‘ ⇒ NULL,
));


Vygenerovaná url je však ve tvaru: http:
test.local­host/machine/de­fault/5?do=in­sert

kamil
kamil (neregistrovaný) ---.netbox.cz
12. 11. 2009 15:20 Nový

Šablonovací systém Grudly

celé vlákno

Líbí se mi že Grudly je podobný Smarty a navíc řešít třeba výpis v JS :)
good work

Zasílat nově přidané příspěvky e-mailem