28. 11. 2005. | #31 |
Ivan Dilber
Sir Write-a-Lot
|
osnovni princip svakog inzenjerstva, pa i softverskog je da moraju da postoje prakticna opravdanja zasto se nesto radi na odredjeni nacin...tako da pokusaj da budes argumentovan kad dajes izjave kako taj i taj nema pojma, cisto da ovo ne bi bio obican flejm war, nego konstruktivna rasprava..
Ja sam koristio Smarty dosta, pre toga sam templejt sistem iz phpLib-a, a pre toga koristio sam TT2 za perl (vrlo slican koncept), a pre toga smo imali sopstveni templejt endzine napisan u perlu i C-u kao cgi (koristen za cleverform.com dok sam jos radio tamo)... tako da nije da sam neko kome su templejti strana stvar, i naravno da podrzavam upotrebu templejta, samo sto sam tek nedavno postao svestan da je PHP zapravo jednostavan, ali vrlo efikasan templejt endzine sam po sebi... Dakle nije pitanje uopste da li koristiti templejte ili ne, nego da li praviti templejte u PHP-u direktno, ili koristiti Smarty koji ce automatski da ti izgenerise templejte, koji su isto tako u PHP-u (ali vrlo cudnom i prilicno neefikasnom u poredjenju sa rucno kreiranim) Ako se covek samodiciplinuje da od php-a u templejtima koristi iskljucivo echo varijabli, if-else, petlje i poziva funkcija, i uz to koristis skracenu sintaxu za php onda nema velikog gubitka na citljivosti templejta ne-programerima. Ostaje druga velika prednost Smartija sto on ima gomilu gotovih funkcija, ali to su vecinom obicne php funkcije koje se vrlo lako mogu odraditi i u cistom php-u...nista te ne sprecava da napravis (vecina nas to vec ima) svoju biblioteku util funkcija koje ce se onda pozivati iz templejta. Isto vazi i za pluginove, nikakav problem da ugradis i to u svoj sistem ako ti se svidja, to su ionako samo jedan include i jedan niz koji registruje callback funkcije, nije neka pamet... Ostaje jos pitanje kesiranja, koje naravno mozes opet da odradis direktno...jedna stvar koju ne znam kako bi moglo da se laku uradi je Smartijeva mogucnost da keshira samo delove templejta, to je odlicna stvar...ali realno vecina ljudi koje ja znam uopste ne koristi kesiranje u Smartiju... I na kraju bottom line je da smarti olaksava stvari utoliko sto ima puno toga uradjeno, pa ga zato ja i dalje koristim (jer sam lenj da pravim sve iz pocetka), ali definitivno (IMHO) ne stoji tvrdnja da ne moze da se uradi ili da je losije onako kako autor onog clanka ili Ilija tvrde... Petre, naravno da bih voleo i da procitam neku tvoju kontra-argumentaciju...nemam nista protiv da me ubede da nisam u pravu, ako zaista nisam...ali onda daj neke konkretne stvari, cinjenice, a ne metode srpskih politicara... Poslednja izmena od ivanhoe : 28. 11. 2005. u 00:49. |
28. 11. 2005. | #32 |
Python Ambassador
Master
|
Disclamer: Pun odgovor ću napisati ujutru
Najveći problem za mene, kao nekog ko uči da postane inženjer, nije ni čitljivost koda, ni perfomanse, ni keširanje, ni... Ono što mene interesuje je sigurnost. Ako koristiš php direktno kao template jezik samo tražiš nevolju - čovek koji sređuje html markup onda može: 1. Da promeni ponašanje aplikacije - jako zeznuta stvar. 2. Da uz pomoć introspekcije sazna neke osetljive stvari o aplikaciji - zna prilično da zaboli ako tako skonta lozinke ili, perish the thought, olakša reverse engenering tvoje enkriptovane aplikacije. 3. ... (More to come after a good night sleep)
__________________
Python Ambassador of Serbia |
28. 11. 2005. | #33 |
Ivan Dilber
Sir Write-a-Lot
|
ok, to stoji za sigurnost (to je i Ilija pomenuo uostalom), ali to vazi iskljucivo za varijantu gde prvo imas neke korisnike koje ne poznajes, drugo oni mogu da menjaju templejte. To je jako specificna sredina, gde pored php-a postoji opasnost od milion drugih stvari (pristup tudjim fajlovima, javascript napadi..)
Ali 99% projekata nisu takvi, uglavnom radis sam ili sa jos par ljudi na sajtu, a korisnici (ako postoje uopste) neimaju nikakav pristup templejt sistemu....a ljudi sa kojima radim ionako imaju pass za ftp i bazu, kako da rade bez toga...Jedino da kazes da ce neko nevestom upotrebom php koda da nesto zezne, ali kao sto rekoh fora je da se praktikuje disciplina sta sme da ide u templejte. Ako samo prikazujes podatke i pozivas high-level funkcije nema sta da se zezne slucajno (ili bar isto toliko moze da se zezne iz Smartija, zar ne?) |
02. 12. 2005. | #34 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
kao sto ivanhoe rece, a i koliko je meni poznato, smarty ima {php} tag, pomocu kog u template mozes da ubacis php kod koji hoces. toliko o smartiju i sigurnosti ako se gleda iz tog ugla. druga je stvar to sto neko ko menja smarty template najverovatnije mora i da ga uploaduje, a da bi ga uploadovao, najverovatnije ce imati pristup ili celom vhost root-u, ili makar direktorijumu koji sadrzi ceo template koji se edituje - tu dolazimo do pitanja - hoces li nekom kome ne verujes dozvoliti da pravi template za tvoju state-of-the-security aplikaciju? kada je neko paraoican, onda je paranoican na svim poljima...
ja sam za sebe odradio neki mini-template engine, koji je na neki nacin imitacija smartija, ali samo u odredjenoj meri. taj moj engine guta sirov php, ali ima neke osnovne skracenice koje smarty koristi (tipa, varijabla se ispisuje sa {$var}, postoje if/else/elseif, foreach strukture, vise-dimenzionim array-ima moze da se pristupa kroz {$var.lvl1.lvl2....}, itd), ali to su samo neke skracenice da ucine kod preglednijim. dalje, sam template engine podrzava template injection, tako da je moguce spucati template iz baze (umesto iz fajla na disku), engine ga renderuje i to lepo zapise u fajl na disku, tako da sledece pozivanje istog template-a (u slucaju da nije promenjen) samo include-uje php kod. nisam napravio pravo smartijevo keshiranje, jer po meni to ima smisla samo (i samo) ako je sajt zaista (jako) posecen. dakle, mislim da parsiranje template-a nije ni izbliza posao kao na primer generisanje grafikona i ostalih slika pomocu gd-a gde je cachiranje gotovo "a must". nista revolucionarno, ovo sam opisao samo u slucaju da je nekom potrebno nesto brzo i jednostavno (i nedovoljno testirano, da bih ga proglasio robusnim), a opet funkcionalno. (/me looks at ivanhoe's post #7 since 1.5 months ago..)
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams |
02. 12. 2005. | #35 |
Direktor Kombinata
Invented the damn thing
Datum učlanjenja: 07.06.2005
Poruke: 2.669
Hvala: 44
119 "Hvala" u 64 poruka
|
Smarty ima jednu jako zgodnu stvar: resurse. Plus možeš limitirati potencijalno nesigurne "tagove" ({php} npr). Zato sam ga koristio kao osnovu za template sa kojima korisnici dolaze u kontakt (kroz admin aplikacije). Sve ostalo je stari dobri PHP.
__________________
activeCollab - Project Management and Collaboration Tool iz domaće kuhinje | area51.rs - Blog Poslednja izmena od Ilija Studen : 02. 12. 2005. u 17:39. |
02. 12. 2005. | #36 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
ma smarty ima dosta jako zgodnih stvari
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams |
02. 12. 2005. | #37 |
Python Ambassador
Master
|
Ccc, em što me čitate šta pišem, em što ne čitate dokumentaciju:
1. Smarty ima jednu lepu promenljivu klase koja se (suprise, suprise) zove $security tako da sve te priče o php injection padaju u vodu ako znate da konfigurišete smarty. Nasuprot tome, želeo bih da vidim kako ćete u svojim "mixed PHP/HTML kod" template-ima da zabranite izvršavanje arbitrary php koda. 2. Zextra, keširanje je odluka vezana za poboljšanje perfomansi. O merenju perfomansi i poboljšanja u istim sam ti već dao savet. 3. Ako ne shvatate koje su to prednosti koje dobijate korišćenjem Smarty-ja (ili čak bilo kog drugog template engine-a) u odnosu na mixed PHP/HTML kod, savetujem Vas da pažljivo pročitate ovaj članak. Ako bude bilo nedoumica slobodno postavite pitanja, ali tek nakon što ste pročitali celokupan članak. 4. I, molim Vas, dosta mi je argumenata nepotkrepljenih činjenicama: - Smarty src je preveliki. Smarty biblioteka kod mene na disku zauzima 310KB (317.636 bajta za picajzle). Da li to predstavlja problem za kapacitet na disku na Vašem web hosting nalogu? Čisto sumnjam. Doduše, može predstavljati problem da se dotična biblioteka prenese na server, ali to ne morate raditi svaki put kada vršite ažuriranje sajta. - Smarty je prespor. Just the facts Jack. Napravi benchmark-e, ostavi kod istih i rezultate pa ćemo da uporedimo koliko je veliko to usporenje koje Smarty unosi. - Moja home-made XY biblioteka je bolja/lepša/brža od Smarty biblioteke. Ne isključujem mogućnost, samo da li bi bio ljubazan da podeliš tvoj kod sa nama i ostatkom sveta - bilo bi lepo kad bismo mi mogli to isto da uvidimo i onda koristimo ono što nam je bolje/lepše/brže.
__________________
Python Ambassador of Serbia |
03. 12. 2005. | #38 |
Ivan Dilber
Sir Write-a-Lot
|
aman Petre, a da ti procitas sta ljudi ovde zapravo pisu ??
Uporno izigravas advokata upotrebe templejta, a naravno da svako normalan podrzava upotrebu templejta, pa niko to ne dovodi u pitanje... samo je pitanje da li ti treba poseban jezik za to, kad vec imas php? To nije isto kao pisanje html/php spageta... ako cemo pravo onda samo XML/XSLT templejti imaju smisla, sve ostalo su spagete ovako ili onako... Sto se ostalih komentara tice: Koliko cesto pravis sajt sa korisnicima kojima neverujes, a mogu da menjaju templejte? Evo ja sam radio puno toga (radim web programiranje od 2000-te i od toga zivim), i jos nikad nisam pravio takav sajt... jedino CMS-ovi za vise korisnika imaju taj problem, a takvih projekata ima sveukupno da ih na prste prebrojis... meni bar jos niko nije nudio da uradim neki, ti ako si radio, bas bih voeo da cujem ? naravno da u takvoj sredini neces dozvoliti direktnu upotrbu php-a, ali realno je u takvoj sredini i upotreba Smartija securtity risk, pogleda change log za Smarty pa ces videti prilican broj security propusta koji su pronadjeni vremenom...kad god koristis neki opste poznat sistem(CMS, template engine, etc..), onda znatno povecavas sanse da te neko uhakuje... za zextrin licni templejt endzine niko nije cuo sem njega, niko nije video kod, samim tim manje su sanse da neki klinac iskopa na IRC-u uputsvo kako da dropne bazu... pogledaj sta se desilo staroj Zoni, zbog rupa u IPB-u... Sto se perfomansi Smartyija tice on je najbrze sto moze da se postigne takvim pristupom, ali ne treba biti genije pa shvatiti da automatski generisani php ne moze da se meri sa rucno pisanim, da ne pominjemo sav glue kod koji mora da se ubaci, i overhead zbog kreiranja Smarty objekta... u vecini sajtova to i nije neki problem, ja koristim Smarty godinama bez ikakvih problema, ali da budemo iskreni ja bas i nisam pravio neke heavy-duty sajtove...ljudi koji jesu pravili takve sajtove kazu da treba izbegavati Smarty za to, zbog overhead-a i ja cenim njihovo misljenje...that's all.. |
03. 12. 2005. | #39 |
Boris
Grand Master
Datum učlanjenja: 01.12.2005
Lokacija: Novi Sad
Poruke: 775
Hvala: 5
156 "Hvala" u 2 poruka
|
dakle, Petre, tebi smarty odgovara, nekom drugom (npr. meni) delimicno odgovara, a nekom trecem ne. e sad, ako ti pokusavas da ubedis nekoga kako treba da koristi smarty (a on to bas nece jer nije bio u stanju da procita kompletnu dokumentaciju), zasto TI lepo ne pokusas da razuveris njega po pitanju, recimo, te iste brzine koja je problematicna u ovom slucaju, time sto ces naci argumente u korist smartija i kontra-argumente u korist neceg sto taj hoce da koristi? mislim, ovo je cist flame-wars, ako cemo iskreno. to me podseti kako sam ja svojevremeno pokusavao da sve neke ljude ubedim da je perl zakon jezik
dakle - koristiti tpl engine ili ne je samo stvar izbora. uzgred, brzina je vrlo vrlo relativna stvar... p.s. procitao sam tvoj predlog po pitanju optimizacije skripti, tnx.
__________________
"It’s important to have goals when you pet. Otherwise you’re just rubbing another mammal for no reason." - Scott Adams |
24. 12. 2005. | #40 |
expert
Master
Datum učlanjenja: 20.12.2005
Poruke: 730
Hvala: 0
0 "Hvala" u 0 poruka
|
Sad me flejmujte ako treba:
PHP je sam template engine. Koliko je koriscenje Smartyja bezbedno, to je pitanje, jer je to opensource program i reversing koda nije problem, kada vec govorimo o radu u timu. Dizajner moze da ubaci PHP preko nekog exploita u Smarty, i BTW zasto dizajner mora da pise HTML uopste? Ne moze li to webdeveloper? Uz takvo resenje rada u timu, nema problema sa insertovanjem PHP/SQL-a kako bilo, uz Smarty ili bez njega |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Zašto ne radi 301 redirekcija? | pcigre | Regular expression i htaccess | 7 | 09. 04. 2008. 13:13 |
Zašto, bre? | bluesman | Obaveštenja, predlozi i pitanja | 64 | 10. 09. 2007. 11:22 |
Zašto? Zato! | bluesman | Opušteno | 3 | 25. 01. 2006. 18:10 |