PDA

Pogčedajte punu verziju : Izbor PHP Framework


dootzky
27. 08. 2007., 17:51
ok - pretrazio sam forum na nekoliko nacina, i nisam nasao odgovor koji mi treba, pa cu biti "blunt" i pitacu tacno ono sto me zanima:

koji PHP Framework vi koristite, i zasto?

vidim da je u fokusu ili CodeIgniter, ili CakePHP, ili Symphony, a svi ostali "zaostaju", (ili mi se barem tako cini? o.O), ali me zanima kako i koliko ce to meni ubrzati rad u ovom smislu ->

ocu da:

1) imam reusable module, tipa userControl, accessCheck za svaku stranicu i sl, i da to samo implementiram u svoja CMS resenja bez razmisljanja, i kasnije prosirujem dozvole po potrebi

2) reusable table control.

ovo pod 2) je ruzno receno, ali grubo, ko god da je radio sa frejmworkom, zna sta je "SCAFFOLDING".

dakle, imam tabelu "proizvod", koji ima polja u bazi, npr:
- item_id, int, PK, autoinc.
- item_name, varchar (255)
- item_price, int
- group_id, int, FK

i sada da ocu da imam "brzi nacin" za klasicnu kontrolu: VIUD (View Insert Update Delete).

scaffolding radi tacno TO, ali "nije preporuceno" za korisnike, vec samo za debugovanje developera. :-/

evo konkretno, nisam bio lenj, danas sam procitao kompletnu literaturu i dokumentaciju za CodeIgniter, ali nekako nisam siguran da li mogu da "utilizujem" takvo resenje za sebe, da mogu da "stancam" CMS relativno brzo i lako, a specificne stvari bi svakako pisao od nule :)

jel' moze neko da mi kaze da li postoji framework za mene, koji bi mi omogucio tacno to? jel' CodeIgniter moze da radi TO? da pravim nezavisne module i kasnije kada pravim novi CMS, imam klasican kostur, ubacujem sve sto mi treba a ranije sam napisao, i posle eventualno prosirujem stvar za specificne zahteve klijenta.

hvala na vremenu, izvinjavam se ako sam ponovio temu, i hvala sto ste citali ovako dug post, hteo sam da budem eksplicitno precizan. :) :1040:

Bojan Zivanovic
27. 08. 2007., 19:12
Sto se tice stavke pod broj 2, predlazem da probas ATK (http://www.achievo.org/atk), malo je cudan, ali kada se naviknes bukvalno sam odradjuje posao ;)
Jako praktican za Admin panele i slicne stvari. Generise view/add/edit/delete/list stranice, s tim sto svaki detalj mozes da promenis u hodu, mozes da dodajes svoje stranice, i sve to radi jako lepo (iz mog licnog iskustva)

dootzky
27. 08. 2007., 20:16
yo Bojane :)

vidis, interesantno, jos jedan moj kolega koristi i preporucuje ATK.
i video sam iz prve ruke sta on moze da uradi i kako, i bas za TO mi i treba neki framework, koji ce da mi ubrza izgradnju CMSova maximalno! :)

hvala za predlog, znam za Achievo ATK, ali sada cu ga svakako razmotriti jos ozbiljnije! :)

any more thoughts?
mislim - jesi li naisao mozda na jos neki frejmwork koji ti omogucuje da radis upravo to isto, samo na neki manje slozeni nacin, i da recimo nisi nasilovan da koristis frejmove i sl?

(generalno, meni je ideja u glavi ova: imam svoj KOMPLETNI cms, imam SVOJ userAuth klasu, imam svoj izgled, smarty - sve. ali za dosadne i ponavljajuce "edit Table" fazone, sa klasicnim insert, update, delete i view all sa filterima i sl -> da imam neki frejmwork :) jel' trazim previse? ^_^ )

BrainDamage
27. 08. 2007., 23:42
Uf, posle 2 godine "framework"-ovanja, strpljenje mi je stvarno na izmaku. Neces naci nijedan koji ti odgovara ni blizu 100%, uvek ce nesto da ti fali, ili ces vuci gomilu koda koji ti ne treba, ili ces nakon X projekata skontati da to moze drugacije/bolje... kako god, kad-tad moraces da se zavuces u tudji kod i tudji nacin razmisljanja da bi uradio nesto sto je mozda banalno, ali dok ukapiras sve - izgubices mnogo vise vremena nego da si pravio sve sam.

Mozda zvuci kenjatorski ovo "radi sam", ali ako vec imas svoj kod i znas sta ti treba - zasto onda ne zasednes jos malo pa i ovo uradis onako kako bas tebi odgovara da funkcionise, a ne da pravis mutante :)

Eh, puste srece da sam vreme koje sam bacio na testiranje svega i svacega iskoristio za svoj "framework"... :) :(

teknoledge
27. 08. 2007., 23:46
Evo iz prve ruke :), radim sa CodeIgniter-om vec par projekata i prilicno sam zadovoljan. Za auth postoji lib koji se zove freakauth (http://www.4webby.com/freakauth/) i odlicno radi. Sto se tice scaffolding-a (CRUD), odlicna biblioteka je rapyd (http://www.rapyd.com/) (official library), ili bolje reci framework u okviru framework-a :). Ova kombinacija je idealna za to sto trazis, cini mi se...

CodeIgniter je trenutno "najbolji" framework iz vise razloga:

mega easy to deploy (PHP4+)
radi prilicno brzo
logican i jednostavan
extra dokumentacija
gomila plugin-ova
...


...sve u svemu po mom misljenju no. 1 ;)

dootzky
28. 08. 2007., 01:55
hmmm! odlicni odgovori. :)

@ brainDamage -
pa pazi, iskreno - ja sam se smorio, jer godinu ipo dana pisem svoje CMSove od NULE, bukvalno od PRVE linije koda, naravno, ustedim tu-i-tamo neke klasicne fore koje mi se provlace i koje imaju smisla, pa sam pravio svoje klase za autentifikaciju korisnika, i to je proradilo fantasticno, sada samo to koristim, itd itd itd, ali kapiram - hej - kad vec "profesionalci" rade tako,mozda bi i ja trebao da probam, right..? Right? :)

bottom line - hvala za iskustvo, i ja sam se vec upleo u testiranje i prilagodjavanje, i iskreno gubi se puno snage i vremena, a projekti stoje, i to je najgore, ali vidis - ja sam VEC NAPRAVIO svoj neki mini-univerzalni-form-editor, gde tipa samo prosledim kroz 4-5 linija ime tabele, koja polja ocu da editujem, i ostalo se samo pravi. dobijem "view/insert/update/delete" opcije, klasican pregled, i sve je vrlo fleksibilno , i najlepse od svega- to je MOJE resenje! :D yey! :)
problem? nije bas "lepo", i mislim da moze bolje, pa sam zato i krenuo u pohod da vidim kako su to "muskarcine" uradile, pa da naucim nesto, i da poboljsam svoje, ili da prosto preuzmem njihov rad, ako je zaista toliko bolji od mog. :)

ali svakako ti HVALA na insight-u. :1040: dobro je da znam da nisam "lud" ako hocu da koristim svoje klase i module koje jednom napravim kako treba, a ne zelim da uskacem u voz sa ostalima. :) ipak - za sada bi voleo da probam jos par komada, da vidim kako sve to radi, pa da se odlucim ;)

@teknoledge

extra. vidis, neki ljudi imaju drugacije misljenje, i stavljaju druge FWove na prvo mesto, ali cini mi se da se 'pravi momci' skupljaju bas oko CIa.
ja sam danas procitao KOMPLET dokumentaciju, sve sam skapirao, sad mi ostaje samo da se igram malo i da se osilim, i da vidim prednosti/mane takvog kodiranja :)

naravno, imperativ je da integrisem smarty u CI, ali vec sam video da je i to moguce, tako da to nece biti problem :1094:

a to sto si rekao, za "rapyd" - ako je TO ono sto sam trazio - castim te sa .. ma sa cime god oces! :D ustedecu i rad i vreme i trud i zivce i ubrzacu se i standardizovacu se itd itd itd.. naravno - ajde da ne skacem k'o magare pred rudu, prvo da VIDIM sta je to tacno i da ga testiram.

i naravno, hvala ti na vremenu da mi das upravo onaj info koji mi je trebao za CI :)

extra. prosto - i love this forum.
i should definetly hang out more here. :)

i evo ga interesantan link, za simpaticnu gomilicu FWova, pa da se uporede malo:
http://www.phpwact.org/php/mvc_frameworks

laku noc,
poz,
d

p.s. jel' sam ja lud, i ne mogu da pronadjem RSS feed za ovaj forum, ili on zapravo ne postoji? voleo bi da mogu da pratim sve nove teme preko RSSa, jer je tako beskonacno puta lakse i brze, uvek mogu brzo da se prebacim na ThunderBird i da vidim sta se novo desava na forumu.. :) ch33rzS!

BrainDamage
28. 08. 2007., 02:43
Imas u address bar-u u Firefoxu ikonicu za rss, ili zaviris u source :D Elem:
http://www.devprotalk.com/external.php?type=RSS2

I, nisam mislio da svaki posao kreces od nule, nego da imas gotove klase s kojima odmah mozes da pocnes raditi na konkretnom poslu, bez puno "predigre". Nista, gledaj, testiraj, izvuci najbolje i najlakse za sebe kako god to bilo - full tudji kod, pola-pola... :)

Bojan Zivanovic
28. 08. 2007., 03:38
any more thoughts?
mislim - jesi li naisao mozda na jos neki frejmwork koji ti omogucuje da radis upravo to isto, samo na neki manje slozeni nacin, i da recimo nisi nasilovan da koristis frejmove i sl?

Ne moras da koristis frejmove, imas teme bez frejmova, znam da na njihovom forumu postoje uputstva, nisam probao.
Opet, ATK deluje malo slozeno, ali kada ga provalis mislim da nema jednostavnijeg nacina, i da CodeIgniter s Rapyd varijantom ne moze ni da mu pridje (radio sam i s tim, da ne bude da pricham napamet ;))
CodeIgniter je odlican inace (koristim ga za normalne projekte), al za brzo pravljenje tih admin stvari ATK je bez premca.
Jedina mana ATK-a je nesto manje dokumentacije, al to dopunjava Wiki/Odlican forum/sam sors uostalom ;)

dootzky
28. 08. 2007., 10:19
@brain -> thx za RSS feed ;)

@bojanZ -> i'm on it, citam od jutros :) will report back with some usefull insight, i hope :cool:

Ilija Studen
28. 08. 2007., 10:27
Sav taj automatizam:

1. Ima svoju cenu
2. Ti je omča oko vrata ako hoćeš nešto radikalnije da promeniš

Zato su mi generatori draži (koji na osnovnu modela samo slože kontrolere i viewove pa kasnije sam preklapaš kako ti se sviđa). Mislim da Cake koristi taj pristup.

Generator odradi dosadni deo, ti samo prekrojiš kako misliš da je najbolje - pretumbaš kontrole, dodaš malo JS-a i sve složiš na način kako misliš da bi najbolje radilo, a ne kako tvoj framework misli da bi trebalo da radi. Generisani interfejsi su uglavnom đubre. To radi ali je često ružno, nepraktično i uz samo par manjih izmena može mnogo da se unapredi, a za to ti treba kontrola i dobro poznavanje kako stvari funkcionišu. Tačno se vidi razlika kada je nešto generično, a kada je u nešto uloženo malo sivih ćelija.

Što se u potpunosti automatizovanog backenda tiče prekočio bih PHP i koristio Django. Dokazano lepo radu i pod jačim saobraćajem, napravljen je pre svega za izradu CMS-ova pa je ste strane max upeglan, odlično dokumentovan i ima stvarno jak community. Bonus je sam Python. Kada su CMS-ovi u pitanju Django šije sve i jedan javno dostupan framework na sve i jednoj platformi.

dootzky
28. 08. 2007., 11:18
yo Ilija :)

ja sam tebe vec malo maltretirao na ovu temu, pa mi je drago da si se i ovde ukljucio! :)

anyway, svakako si u pravu, ja sada pokusavam da generalizujem sve svoje radove, tj. da ih apstraktujem, da vidim sta mi se konstantno ponavlja, i da to sredim i spakujem u module, i da ih onda sam pozivam po potrebi. :)

dakle, pokusavam da vidim jel' mi je bolje/lakse/brze/efektivnije/ispravnije da napravim efektivno "svoj fw", ili barem nesto slicno, sto ce sluziti meni i samo meni, za brz i modularan razvoj CMSova,

ILI:

prosto da se prilagodim nekom od vodecih fw-ova, i da ih maksimalno tweakujem prema sebi i svojim potrebama. :)

vidis, cini mi se da je CodeIgniter maximalno jednostavan, da ne kazem trivijalan, i onda mi mozda bas on moze odraditi deo posla, jer vec postoji napisana gomila stvari kao sto je "auto form validator", ili tipa neki simple JS kalendar, kontrola tabela i sl...

svakako ne treba zavisiti od ni jednog frejmworka, jer onda em moras da mu se prilagodjavas na besumucno niskom nivou, ili ako oni odluce da promene nesto, a tebi se bas ne svidja - imas problem :P

ajde citam i dalje, javljam sta sam uradio, svakako ocu da vam kazem moj finalni zakljucak na kraju :)

dootzky
28. 08. 2007., 11:39
e, ok - mislim da sam upravo ovo trazio:


An elegant way to create CRUD interfaces (like CI scaffolding feature, but totally customizable)


to je "rapyd". :)
MOZDA, ali samo MOZDA sam na pragu necega :)
link za rapyd, ako je neko zainteresovan da pogleda: http://www.rapyd.com/

* props za teknoledge-a, on me je uputio na ovaj link :)

ali da ne mislite vi ostali da vas zezam ili ignorisem vase komentare - ocu da VIDIM kakav je rapyd, pa onda da vidim mogu li sam nesto slicno da izvedem :)

javljam dalje napretke :)

teknoledge
28. 08. 2007., 12:00
e, ok - mislim da sam upravo ovo trazio:



to je "rapyd". :)
MOZDA, ali samo MOZDA sam na pragu necega :)
link za rapyd, ako je neko zainteresovan da pogleda: http://www.rapyd.com/

* props za teknoledge-a, on me je uputio na ovaj link :)

ali da ne mislite vi ostali da vas zezam ili ignorisem vase komentare - ocu da VIDIM kakav je rapyd, pa onda da vidim mogu li sam nesto slicno da izvedem :)

javljam dalje napretke :)

Evo da se ukljucim ponovo :)

Rapyd je malko komplikovan za shvatiti iz prve ali je prilicno mocan. Kao sto je Ilija rekao, postoje ogranicenja naravno ali kad ga skontas kako radi, uz malo "hack-ovanja" core-a (mislim na rapyd) mozes da napravis sta ti padne na pamet :1039:

Koristim ga za vec peti projekat i otprilike uradim ceo admin deo za dva dana i to sa skinovanjem kako mi se svidja. Konkretno ranije dok nisam koristio CI + rapyd, trebalo mi je barem 3 puta vise vremena da napravim isto.

Nemanja Avramović
28. 08. 2007., 14:08
Ja od skoro koristim CI, tako mi traže pa moram da se prilagođavam, ali za rapyd nisam znao... izgleda korisno... videćemo kad ga upoznam bolje :)

Petar Marić
28. 08. 2007., 14:26
Što se u potpunosti automatizovanog backenda tiče prekočio bih PHP i koristio Django. Dokazano lepo radu i pod jačim saobraćajem, napravljen je pre svega za izradu CMS-ova pa je ste strane max upeglan, odlično dokumentovan i ima stvarno jak community. Bonus je sam Python. Kada su CMS-ovi u pitanju Django šije sve i jedan javno dostupan framework na sve i jednoj platformi.
Smem li da te citiram? ;)

Ilija Studen
28. 08. 2007., 14:50
^ Naravno.

merjadok
28. 08. 2007., 16:01
Evo i jedan Java programer mora da prizna da je odusevljen čitavom koncepcijom istog.

jablan
28. 08. 2007., 16:08
I jedan C# programer... ;)

dootzky
28. 08. 2007., 17:47
phuuuhhhhh..... people -> usradoh se (sa oprostenjem), dok sam pretrazio GOMILU frejmworka, i moram da se slozim donekle sa Ilijom:

- STA CE MI FRAMEWORK? ili ako ti treba - napisi ga SAM! :) da ne bi zavisio od njih i ucio sta moze a sta ne i sl. :P

a sta meni esencijalno treba? CRUD. user auth. i jos CRUDa. :)

vec sam nasao neke CRUD code generatore, mozda to mogu ili da koristim, ili da vidim kako su napisali kod, pa da napravim licno svoj templateCrud i resim se muke :)

evo npr linka:
http://www.phpobjectgenerator.com/

mada je to mozda malcice i neozbiljno resenje, ja razmisljam da napisem svoju klasu, gde bi samo rekao koju tabelu ocu da radim, koja polja, kojeg su tipa ta polja, i eventualno neka slozenija vezivanja sa FKovima i to je to..

mozda neko vec zna za slicnu klasu? znaci - ne treba mi ceo frejmwork. :)
vec koristim izuzetno lagan i koristan i poslusan smarty, sve mi radi kako treba, sve kontrolisem - ali CRUD mi je ocigledno bio potreban.

any thoughts?

kako vi resavate, npr. kada u CMSu pravite kontrolu proizvoda? (bilokojih).
ili kontorlu grupa proizvoda, sa orderingom i sl? ili kontrolu korisnika i sl?

mora da koristite NEKE napredne fore? :) please! :D vec 4 dana citam/radim/ucim ovo, poludedoh!! (jel' to uopste rec?) :D

dootzky
28. 08. 2007., 17:50
cisto da ne bude zabune, konceptualno mislim na nesto ovako:

http://www.oxyscripts.com/manuals/symfony/scaffolding.html

samo BEZ frejmworka, ocu da to uradim sa klasom koju mogu da implementiram i kontrolisem po potrebi :)

McChoban
31. 08. 2007., 09:26
Neko je vec preporucio Cake, pa da podrzim.

Cake ima svoj codegenerator, znaci moze on i da scaffolduje, ali ne mora - moze na osnovu tvojih parametara da ti izgenerise view i controller koji posle menjas kako hoces.
Dalje framework ima relativno elegantno organizovan MVC, poprilicno jasnu filozofiju, i iako nema prebudzene biblioteke dodataka kao neki drugi, ima sve osnovne stvari koje su neophodne, ukljucujuci tu i razradjen i detalan ACL (access control layer).
I sami templejtovi za view-e su cist html + php, izgledaju dosta citljivo, tj nece ti nedostajati smarty mnogo.
Plus postoje helperi koji omogucavaju pravljenje formi sa sve validacijom ocas posla. (A sve to naravno moze i da se izgenerishe).

Jedina velika mana je sto postoje 2 verzije, "stabilna" 1.1 i alpha 1.2.x,
ova prva je pomalo zastarela, a druga je nekompatibilna s prvom, a dok prva ima jadnu dokumentaciju, druga ima jos jadniju.

Na sajtu postoji i "bakery", sto je nesto izmedju wikija, code repositorija i zbirke tutoriala, samo je krs organizovan, pa treba dosta zivaca da nadjes to sto ti treba i snadjes se u nakaradnoj filozofiji organizacije takve vrste sajta...


PReporucujem da odvojis jedno nedelju dana i natenane se igras sa frameworkom, i isprobavas razne stvari, pitas na irc kanalu ako bas zagusti (ljudi su zaista predusretljivi i kanal je prepun, tako da brzo dobijas odgovor).

Dakle, jadna dokumentacija, ali mocan i dosta fleksibilan code generator sa lepom filozofijom. I po defaultu podrzava "lepe" url-ove. Mislim da mu treba dati sansu, samo kao sto rekoh treba se naoruzati strpljenjem i odvojiti neko vreme za ucenje, ne zbog tezine nego zbog dokumentacije.

dootzky
31. 08. 2007., 17:02
gledam cake, izgleda ok, ali je dokumentacija zaista ocaj :P
cak i na njihovom "wikiju", sada je to valjda za njih "Bakery" -> tamo pise "If you are really desperate you can read this mess, or help us fix it.."

tako nesto :) zasu! :)

anyway -> uspeo sam :P
napravio sam svoje 2 klase za pomoc prilikom CRUDa, ali nisam presrecan resenjem, nije me ubrzalo onoliko koliko sam ocekivao. radio sam juce 14h straight. 8h, pa pauza, pa jos 5-6h.. :P oci mi ispadose.
ali je uspelo, proradilo je na kraju.

kazem - ipak, morao bi to jos da sredim, ali generalno radi.
imam 2 klase: Form i Field.
bazicno -> napravim novu formu, u njoj drzim niz Field-ova, i onda imam built-in funkcije u klasi Form, tipa "validate()" gde se za svako polje, u zavisnosti od njegovog tipa podatka proverava validnost unosa, ili da li je required ili ne, i naravno imam funkciju tipa "showForm()", koja ce da ispise komplet formu, u tabeli, sa sve pocetkom i krajem forme, kao i dugmadima submit i cancel :P

i to radi, kazem, uspelo je, imam i univerzalni "View" cele tabele iz baze, i default akcije, sortiranja, brisanja, stagod - i to je to :)

ali interesantno, NIJE ME TOLIKO UBRZALO? :P
moracu ocigledno jos da proradim. :)

eto, cisto sam hteo da vam javim da sam uspeo da napravim nesto svoje (sto je ipak profunkcionisalo), ali da cu takodje da nastavim da se koncentrisem na neki od frejmworka, ako nista drugo - radi ucenja i razmisljanja :)

veliki poz, i hvala svima na pomoci! :)

McChoban
01. 09. 2007., 02:25
Ako sam ukapirao, ti si uradio code generator? Ili je u pitanju neka virtualizacija podataka, tj pravis neki meta-kod koji bi ti olaksao rad?

Iako meta-kod zvuci jako elegantno, licno sam za dobro napravljen generator "pesackog" koda. Naravno "pesackom" kodu nista ne smeta da bude OO i prijatan za oko i upotrebu. Ponekad je keep-it-simple-and-stupid najbrzi nacin da se posao zavrsi - a kao sto rekoh to sto je simple i stupid ne mora da znaci da je brljotina :)

A sto se vremena tice - ne znam da li pricas o tome da si potrosio gomilu vremena da napravis tvoje CRUD-klase ili mislis da sama usteda prilikom koriscenja istih nije neka?

dootzky
01. 09. 2007., 14:54
yo covek! :)

pa pazi - napravio sam ... code generator. da. :) klasu koja ce da generise formu, elemente forme i ostalo, dakle pripremi mi kompletan HTML kod i logiku rada, sa sve new/edit/delete opcijama i pregledom tabele i sl.

i slazem se sa tobom, u pravu si kada kazes da je nekada peske nesto i brze/lakse/bolje/pouzdanije uraditi. prosto - zapleo sam se malo :) precenio sam se, ali sam ipak uspeo u onome sto sam hteo. jedina mana projekta je bila sto nisam mogao da isplaniram upotrebu klase, pre nego sto je napravim, ali sada i to radi, i sve je ok. :) a ono sto ti kazes - za vreme -

- potrosio sam 4 dana da napravim CRUD generator, ali isto tako ne vidim veliku razliku u "brzini kodiranja" sa tim klasama, i peske. :)

mislim - ok - postoji razlika, svakako, ali to vreme koje ustedis da pises rucno svaki element forme i sl - izgubis kasnije jako lako kada se zakomplikuje stvar sa nekoliko FKova ili slicnih specificnih combo/checkbox opcija, koje moras rucno da popunjavas i da budzis klasu :P

sve u svemu - mozda je peske brze, ali gledam da se automatizujem.
citam i radim i ucim svakako CI + Rapyd, cisto da bi video njihov pristup, pa cemo videti sta ce biti :)

McChoban
02. 09. 2007., 16:54
E pa to. I ja sam bas nedavno pisao neki svoj code generator, jer sam shvatio da mi za cake treba vremena, kojeg nisam imao... Pa shvatih da cu brze napisati code generator nego da sve radim peshaka ili da se mucim sa, jeli, frameworkom kojeg ne znam.
Verovatno svaki normalan php developer ima svoj (pseudo)framework ili bar prirucni generator koda, samo sam ja malo bio van php-sveta pa sam zardjao (zato sad ne mogu ocima da vidim onaj moj stari ne-objektni kod, pa smatram da je to bila prednost :) )

kaspar
02. 09. 2007., 21:40
Evo da prilozim i ja svojih par centi.

U globalu frameworke mozes da podelis po stepenu automatizacije koju ti pruzaju i, takodje u globalu, je taj stepen automatizacije povezan sa nivoom slobode koju ti omogucavaju u smislu organizaovanja samih elemenata od kojih pravis svoju aplikaciju. Takodje razlikuju se znacajno i po kvalitetu implementacije, dokumentacije, organizacije ...

Po automatizmu Cake prednjaci, iza njega je CI a posle toga na zacelju nepravedno zapostavljeni Zend :) Ja poslednjih nekoliko meseci radim u Cake frameworku i mogu da podelim detaljnije iskustva o njemu, CI sam video ali nisam detaljnije ulazio u problematiku a za Zend se sve vise interesujem.
Cake je port Railsa na PHP i samim tim tezi funkcionalnostima koji trenutno ima Rails, sam potencijal PHP-a je drasticno manji od Ruby-ja pa mi se cini da su nacin na koji se implementiraju resenja u Cake-u jako konfuzni i nepregledni. Ovo je veoma vazno jer zbog nedostatka dokumentacije i potrebe da se stalno ulazi u kod da bi se videlo kako odredjeni metodi u stvari funkcionisu. Za svakog neiskusnog programera u PHP-u ovo je prosto nemoguca misija.
Druga stvar koja kod Cake ne valja je to sto verzija 1.2.x.x obecava puno funkcionalnosti ali za sada je kvalitetno implementiran jako mali broj njih, u sustini ovo nije ni cudo jer je jos uvek u alpha verziji ali ipak za nekog ko zeli da koristi iste funkcionalnosti treba naglasiti da one uglavnom rade ali znaju nekada da debelo namuche.
Ono sto ipak izdvaja Cake kao framework jeste implementiran ActiveRecord koji omogucava da se na jednostavan nacin prave relacije izmedju tabela i automatski izvlace podaci iz zavisnih tabela. Poslednjih par nedelja sam radio na nekim behaviorima za Cake kako bi na efikasan nacin implementirao multijezicnost i uvideo da je sama implementacija sloja ka bazi jos uvek nedovrsena i malo zbunjujuca za nadogradjivanje jer mi se cini da ne postoji sistematicnost u implementaciji pa se u pojedinim kontekstima kod ponasa potpuno drugacije od onoga sto ja od njega ocekujem.
Sto se generisanja sadrzaja tice u poslednjih par commita je dodata mogucnost da se kreiraju templejti za CRUD viewe tako da se to sada moze prilagoditi dizajnu pogotovo za admin deo gde se dizajn prakticno prenosi sa projekta na projekat.
U globalu Cake jako moze da podigne produktivnost za programere ili timove koji se baziraju na implementaciji sajtova jer se dosta koda koji se kreira na projektima moze da ponovo koristi, komponente, helperi, view-i, takodje postoji i dosta kod koji moze da se nadje po internetu, mada iskreno mislim da je uglavnom jako loseg kvaliteta i ja sam najcesce video ideju i napisao svoj kod umesto da uzimam tudje komponente, behaviore ...
Sto se tice razvoja neke globalne logike aplikacije izvan MVC frameworka Cake mi deluje veoma skuceno, primer je recimo implementacija CMS-a u kome bi MVC deo bio samo element za izvrsenje akcija a logika aplikacija stajala iznad toga, u Cake mislim da je to jako tesko izvesti zbog doslovnog pracenja principa "Convention over Configuration" koji prakticno namece neke principe po kojima moras da se ponasas ako zelis da stvari rade. Mozda ja jos uvek nisam shvatio nacin na koji mogu ovo da uradim bezbolno.

U poslednje vreme se sve vise interesujem za Zend framework koji je nesto za sta predvidjaju da ce da ostavi PHP u zivotu :). Uglavnom su PHP programeri jako malo koristili OO model koji je dosao sa PHP5, inace sam PHP5 nije nesto preterano uspeo da preuzme dominaciju od PHP4 ali to je neka druga prica. Zend Framework koristi sve potencijala OO modela i sam po sebi zahteva 5.1.4 ili cak 5.2 pa navise da bi radio jer koristi PDO drajvere i ostale PHP novotarije :) Ono sto sam o Zendu uspeo da zakljucim je da pruza veliku slobodu za projektovanje logike na visem nivou iznad MVC koncepta jer praktivno tera korisnika da koristi MVC kao element svoje aplikacije a ne da mu aplikacija bude u MVC konceptu. Kod je jako kvalitetan, baza profesionalnih developera koji ucestvuju u razvoju je siroka i ozbiljna a i zajednica mi se cini sve veca. Zend za sada nema implementiran ActiveRecord (bar kako sam ja shvatio) ali mislim da postoje neke nezavisne implementacije. Ono sto je vidljivo kao sloj ka bazi koji bi se koristio u kombinaciji sa ZF je Doctrine ORM PHP sloj http://www.phpdoctrine.org/ koji je trenutno u 1.0RC1 verziji.

CI nisam probao ali mislim da je on negde izmedju Cake i ZF po automatizaciji, cini mi se da je dosta kvalitetniji kod od Cake-a i da ima dosta bolju dokumentaciju ali ne tako veliku bazu korisnika.

Krajnji zakljucak:
za brzu implementaciju jednostavnih sajtova sa osnovnim funkcionalnostima treba koristiti Cake jer znacajno podize produktivnost i ponovno koriscenje koda.
Za nesto ozbiljnije kao sto je recimo izrada proizvoda na kojem bi se zasnivao razvoj firme ipak mislim da za sada treba pribeci nekom drugom resenju. Mozda se sa vremenom Cake dovoljno razvije ali mislim da ce Zend da ga pregazi na polju ozbiljnih PHP aplikacija veoma brzo.


Koliko teksta a slika nigde :)

Misha
25. 09. 2007., 18:55
Meni CakePHP deluje kao mrtav projekat!!!

CakePHP je mozda najbolja kopija Ruby on Rails-a u PHP svetu. Dok Zend Framework ide nekom svojom putanjom, koja cini mi se vise odgovara "jeziku" kakav je PHP.

Pocetkom ove godine sam krenuo da ucim Cake za neki projekat ali odustao kad sam shvatio da tada nisu bile zavrsene jos neke bitne stvari, a i da je poprilicno bugovit kad nesto zaista krenes da pises u njemu.

S druge strane njegova implementacija ActiveRecord patterna se ispostavila kao poprilicno impresivna. Samo zbog toga, sam lepo uzeo i napisao jednu PHP skripticu, koja spideruje stranu na CakePHP siteu gde moze da se vidi koliko je jos ticketa ostalo do sledece verzije CakePHP-a ... stavio skriptu da se pokrece CRON-om na moj site i da mi salje emailom broj tiketa dvaput mesecno ... pa reko kad to malo odraste da mu se ponovo posvetim ...

Zakljucak nije bas happy za Cake ... U proteklih devet meseci broj tiketa konstantno oscilira oko 250!!! Tekuca verzija je ista kao i pre 9 meseci ... razlika je u trecem broju verzije ... i tako ...

Inace ja sam do pre godinu dana koristio CodeCharge za pisanje web aplikacija (custom CRUD-oliki code) a vec godinu dana koristim Drupal za sve ...

Em je strava kao CMS em je vremenom postao zavidan framework. Trenutno u njemu pisem totalnu custom web aplikaciju za "All American Football League" site, za menagerovanje prijava igraca, nimalo jednostavna zvercica. Vec je napisano brdo strana sa totalno custom logikom, koristim Drupal iskljucivo na nivou framework-a ... i vrlo sam zadovoljan ... ako nekog zanima mogu da podelim iskustva i detalje o tome ...

Cheers ljudi!
Misha

robi-bobi
26. 09. 2007., 11:41
imam prijatelje koji bi da sami prckaju svoje sajtove, zbog toga sam ga pre nekog vremena i razgledavao

nije li to gotov cms (all-in-one), a ne framework?

naravno ukoliko je napisan dobro, ti bi mogao da ga koristis kao framework

kazi neka iskustva, a pitanja ce sama doci :)

dootzky
26. 09. 2007., 12:39
pa, vidis, i ja sam stekao isti utisak, tj. da je Drupal gotovo resenje, kao ... phpNuke, Joomla, i slicna poznata imena.

drupal NIJE framework, quote sa sajta: "Drupal.org is the official website of Drupal, an open source content management platform."

dakle, drupal je dobar, ali to je 'samo' jos jedan CMS. :)

a framework je nesto sasvim drugo, zar ne? ;)

McChoban
26. 09. 2007., 14:13
Mislim da je covek mislio na framework oko kog je CMS slozen. Nisam gledao Drupal, tako da necu da lupam.

Inace, ovo sto Misha kaze za Cake nije daleko od istine - projekat se vec neko duze vreme, na zalost, ne pomera s mrtve tacke...
Ne bih da ponavljam koliko me nervira sve ostalo oko Cake-a, tako da sam definitivno odlucio - radim svoj framework, pa makar bio i bangav.
Vec sam napravio neki codegenerator za activerecord, koji ce naravno biti zesce doradjen jer imam nekih cool ideja, a takodje sam osmislio i strukturu i kako ce to da funkcionishe... Prvom prilikom ga radim, samo da u'vatim vremena.

Misha
26. 09. 2007., 21:16
"Drupal.org is the official website of Drupal, an open source content management platform."

... je bukvalno prva recenica sa Drupal site-a jelte, dok sam ja moj komentar dao iz perspektive nekog ko je "malkice vise" zasao u Drupal pricu :-)

Da, kao sto vec rekoh Drupal je CMS koji je vremenom postao i strava framework. Inace dootzky, cinis golemu gresku sto Drupal stavljas u isti kos kao i Joomlu i phpNuke. To jednostavno ne mere ... phpNuke je pregazilo vreme i on vise nije u igri, a Joomla je toliko lose napisana da je sa stanovista programera al totalno neupotrebljiva.

Evo da potkrepim tvrdnju da Drupal jeste I framework sa nekoliko detalja:

- FORM API, deo Drupala koji olaksava pisanje custom formi, sve sa validacijama i custom logikom.

Ogromna stvar za mene je i sto postoji standardan nacin za pisanje custom form elemenata. Recimo za moj tekuci Drupal projekat sam napravio novi Drupal form element koji koristis iz FORM API-ja kao i sve ostale ugradjene elemente. Izgleda kao obican select element, stim sto ima <Other> opciju. Kad kliknes tu opciju pojavi se textbox desno od select elementa u koji mozes da uneses sta god hoces. Niste svesni koliko je lako ovo bilo napisati, a sad mogu da ga koristim na prirodan nacin i u buducim projektima. Isto tako sam napisao i svoj custom file upload, sa automatskim pravljenjem i prikazivanjem thumbnail-a za slike za neki raniji projekat, koji iskoristih i u ovom. Sto jebe kevu koliko je korisno moci raditi!

- TABLE f-ja, olaksava pisanje custom tabela sa podacima, sve sa sortiranjem i paggingom.

- DB abstraction layers, ima DB f-je koje automatski vrse zastitu od SQL injection napada, i koje su DB agnosticne. Znaci kad pozelis da predjes sa MySQLa na PostgreSQL to ti je poprilicno olaksano.

- HOOKS, za mene THE killer feature Drupala. Drupal dolazi sa 50-tak hookov-a, a i ti kao programer mozes da pises nove. Na primer postoji hook_form_alter(). Sa tim hook-om imas moc da izmenis BILO KOJU formu na site-u, Drupalovu ili iz nekog third party modula, sve jedno. Recimo mozes da izbacis/ubacis element iz forme, da ubacis dodatnu logiku koja ce se izvrsiti za zeljenu form operaciju, da ubacis dodatne validacije. U mom tekucem projektu sam zahvaljujuci ovome tako izmenio login/register forme Drupala da ih ne biste prepoznali (evo pogledajte: http://www.allamericanfootballleague.com/players/ , kliknite Yes za malo JS-a)

Kad sam istrazivao kojim putem da idem, vrlo ozbiljno sam seo i uporedio: CakePHP, Symfony, Rails, Django, Zend Framework i Drupal. Ispalo je da Drupal ima najbolji balans svega onoga sto ja mislim da framework treba da ima. A on cak i nije zapocet kao framework ... sto bi rekli izgleda smesno al deluje! :-)

Al niste svesni koliko je Drupal razvijena platforma! Jednostavno nema sanse da detaljnije opisem sve ono sto ima:

- TAXONOMY, ogroman pod API za kategorisanje bilo cega!
- SEARCH, ogroman pod API za indeksiranje i pretrazivanje bilo cega na site-e!
- LOKALIZACIJA I INTERNACIONALIZACIJA, i statickog i dinamickog sadrzaja.
- FILES, IMAGES, pod API-ji za rad sa file-ovima (private download ...) i slikama (resizing, croping ...)
- USERS & USERS AUTHENTICATION, ogroman pod API za rad sa korisnicima

Za mene isto golema stvar ... dokumentacija ... jedna od najboljih koje sam ikada video u open source svetu ... http://drupal.org/handbooks ... plus ima nekoliko knjiga, jedna od njih namenjena bas programerima, koju sam procitao i preporucujem: "Pro Drupal Development"

Da nisam naleteo na Drupal verovatno bih i ja pisao nesto od nule ... ovako pisem reupotrebljive module za Drupal koji odgovaraju mojim programerskim preferencama. Vec imam napisane module sa brdo dodatnih funkcionalnosti za rad sa bazom, file-ovima, stringovima i form-ama. Recimo za nekoliko sati sam uspeo da napisem formext modul, koji mi omogucava da preko web interface izgenerisem FORM API strukturu za bilo koju tabelu u bazi. Sad zahvaljujuci tome (i drugim nekim stvarima) mogu da napisem CRUD za bilo koju DB tabelu za nekih 2 minuta!

Tako da da ... definitivno preporucujem Drupal bas kao framework!

nixa
26. 09. 2007., 21:27
Pravo je pitanje , koliko si ti vreman uložio da naučiš kako Drupal funcioniše, da prilagodiš svoj način razmišljanja prema njemu ?

U suštini mogao si da uzmeš i typo3, imap bi mnogo veće perfomanse ... ali vreme je bitna stavka

Misha
26. 09. 2007., 21:52
Stvarno ne vidim zasto be learning curve bilo "pravo pitanje"?!?! To je samo jedno od pitanja koje sam ja postavio sebi kad sam birao platformu. Istina zbog njega sam odustao od Rails-a trenutno, jel bi to znacilo da treba da naucim Ruby, Rails, Rails biblioteke.

Prilagodjavanje nacina misljenja nije bio problem al uospte. Imam ja svoje stavove definitivno, al isto tako nisam ni tvrdoglava budala ... ako naletim na nesto sto je superiornije u odnosu na moj dotadasnji nacin razmisljanja rado ga usvajam. I to se dogadjalo upravo sa Drupalom ... Za mene je pravlje pitanje koliko je aplikacija dobro napisana, kolliko je to dobar inzenjering ... ako jeste prilagodjavanje nije stavka al uospte ... A to je upravo slucaj sa Drupalom ...

Ne zaboravi da je Drupal VRLO lagana aplikacija, zip file sa instalacijom ima 733KB, koliko (puta vise) ima Typo btw? :-) Meni typo nije cak usao ni u uzi krug izbora, deluje kao zesci bloatware ... sto opravdava nekom enterprise etiketom ...

Dakle sto se learning curve-a tice, ja sam Drupal naucio radeci prvi projekat za klijenta ... sto je trajalo nekih 2 nedelje ... Shvatio da tu neceg ima, skino "Pro Drupal Development" sa neta, procitao prvih desetak poglavlja celih, za nekih 2 nedelje laganog citanja uz redovan posao ... ostale citam po potrebi ... i to je to ... vec potvrdjeno da je vreme bilo dobro ulozeno!

Misha
26. 09. 2007., 21:56
E da ... bre oklen ti ideja da Typo3 ima bolje performanse od Drupala :-)??? Jel imas neke konkretne podatke/testove, voleo bih da vidim ...

Evo ti nekih site-ova koji koriste Drupal:
http://appel.nasa.gov/
http://www.playboy.de/
http://www.mtv.co.uk/
http://usmagazine.com/
http://www.observer.com/thepoliticker/

Ne bi reko da bi iko od njih uzeo nesto sto nema dobre performanse.

noviKorisnik
26. 09. 2007., 22:33
Ok, smiri loptu malo :-) ... postoji takav listing sigurno i za Typo3, a Google kaže: http://www.google.com/search?q=typo3+vs+drupal

Misha
26. 09. 2007., 23:13
Hmmmmm hvaaaaaala :-) al vise bi voleo da cujem sta nixa ima da kaze o tome nego google ... a sa listom sam samo hteo da pokazem da je to zapravo malo nebitna poenta sa njegove strane ... mislim bila bi bitna da Drupal ima katastrofalne performanse sto nije slucaj ocigledno

A da uzmem da koristim nesto tako kompleksno kao typo morao bi da bude bar 10x brzi!!! ... posto je toliko puta veci ;-)

ja se malo i zezam u razgovoru btw ... slobodno preuzmite loptu :-)

nixa
27. 09. 2007., 02:44
ne radi se o tome, ne radim ni sa jednim cms "framework" , nego mislim da Drupal nije rešenje koje može da reši sve probleme ( i ako može, bila bi velika budževina ... )

dootzky
27. 09. 2007., 10:32
interesantno kako se prica razvila u pravcu Drupala.. pogledacu to malo detaljnije, posebno taj handbook, tako se najbolje vidi kako su razmisljali momci koji su ga pisali.. i naravno da je drupal "brzo" resenje, ali pitanje je ovo sto kaze Nixa -> koliko brzo TI mozes da se adaptiras njemu? ;)

ajde probacu ga malo temeljnije, da ne pricam u prazno, pa se javljam sa reviewom par dana kasnije :P

teknoledge
27. 09. 2007., 10:38
Jos jedan downside za drupal, drastichno je sporiji od slichnih resenja. Za bilo koji veci site sa 100.000 + pageviews per day trebace ti standalone database server zbog gomile query-ja koje izvrsava za render svake strane.

Misha
27. 09. 2007., 10:55
"drastichno je sporiji od slichnih resenja" ?!?!

Ljudi odakle vam ovakvi zakljuci? :-) Ovo ne moze da bude dalje od istine ...

Niti broj querija koji se izvrsava moze da bude indikacija brzine site-a ... Recimo sta mislis teknoledge-u da li je isti query koji ima JOIN naspram obicnog SELECT-a? I kolika je razlika ...

Inace Drupal ima plus strava kesiranje plus throttle module koji sluzi fine tuneovanje performansi ... znaci ako imas stranu koja je maltene staticka, mozes da namestis da se i izvrsava brzinom staticke ...

Misha
27. 09. 2007., 11:02
He he, pa dootzky definitivno bi bilo pametno da zadjes dublje od frontpage-a u tematiku o kojoj raspravljas :-)))

Pogledaj handbooks al pogledaj i source code ... ja sam se recimo u strartu iznenadio koliko su mali moduli koji rade ne tako male stvari ... i koliko je dobro iskomentarisan source code ...

Vec sam odgovorio koliko je meni trebalo da naucim Drupal i zasto mislim da prilagodjavanje misljenja nije issue za mene al uopste ... vec da li je arhitektura dobra ili ne ... da se ne ponavljam ...

Ako hoces mogu da ti sibnem online i onu Drupal knjigu ... jos bolja od handbooka za upoznavanje istog sa programerske tacke gledista ...

Misha
27. 09. 2007., 11:15
ne radi se o tome, ne radim ni sa jednim cms "framework" , nego mislim da Drupal nije rešenje koje može da reši sve probleme ( i ako može, bila bi velika budževina ... )

:1092: E pa sad ... Nista ne moze da resi SVE probleme. Ni Typo, ni Drupal, ni CakePHP, ni PHP kad smo vec kod toga ... al ni pisanje code-a od nule nije najbolje resenje za SVE probleme ovoga sveta ... meni je to nekako jasno samo po sebi ...

Al valjda je jasno i da koriscenje frameworka ima svoju svrhu, a razlike medju njima definitivno postoje ... ne poznajem te nixa al nekako mi skaces sa teme na temu bez da zavrsis i jednu nit ragovora ... Kao eto recimo zasto Typo ima bolje performanse od Drupala?!?! :1051: :)

Mislim zaista bi voleo da cujem neke konkretne argumente ako ih imas naravno ... a sad ova nova tema koju si zapoceo ... da li ima svrhu koristiti framework, nekako mi nije zanimljiva i tu se necu upustati u razgovor ... posto je meni ocigledno da ima

teknoledge
27. 09. 2007., 12:06
"drastichno je sporiji od slichnih resenja" ?!?!

Ljudi odakle vam ovakvi zakljuci? :-) Ovo ne moze da bude dalje od istine ...

Niti broj querija koji se izvrsava moze da bude indikacija brzine site-a ... Recimo sta mislis teknoledge-u da li je isti query koji ima JOIN naspram obicnog SELECT-a? I kolika je razlika ...

Inace Drupal ima plus strava kesiranje plus throttle module koji sluzi fine tuneovanje performansi ... znaci ako imas stranu koja je maltene staticka, mozes da namestis da se i izvrsava brzinom staticke ...

Ne znam sto srchanis toliko kao da si ti napravio Drupal :)... Elem, ako pogledas case studies videces sta developeri prichaju. Drupal je extra za nekog ko trazi CMS + framework ali ima i mana zbog toga kao sto sam pomenuo.

:1064:

Misha
27. 09. 2007., 12:32
Ne znam sto srchanis toliko kao da si ti napravio Drupal :)... Elem, ako pogledas case studies videces sta developeri prichaju. Drupal je extra za nekog ko trazi CMS + framework ali ima i mana zbog toga kao sto sam pomenuo.

:1064:

:-) srchanim? Pre bi bilo da se cepanim od smeha samo ne vidis :-))) Pogledacu case studdy, samo zaboravio si da das link?!?! Ja sam od onih sto vole da se prica argumentima ... sorry :-)

Stvarno ne znam sta si nacuo i zasto si u zabludi da ima "drasticno" losije performanse od drugih CMS-a/Frameworka ... ili da su performanse al ikakav problem ...

Vec sam ti objasnio da postoje caching i throttle, vidim ne zanimaju te detalji oko toga nego aj jos jednom da ponovis tvrdjnu ... jel mislis da ce postati istina ako vise puta ponovis sta li :-)

Rails ima zaista uocljivo losije performanse od konkurencije al to ne sprecava ljude da ga koriste posto je al toliko bolji u mnogo cemu drugom, jer kada dodjes do toga da imas 100000 poseta dnevno imaces para za jos jedan server ... i za programera koji zna kako da podesi caching, throttle, opcode cache ... i tako ... kakve crne performanse ...

Ok, ovaj thread postaje dosadan polako :1056: :)

teknoledge
27. 09. 2007., 13:05
:-) srchanim? Pre bi bilo da se cepanim od smeha samo ne vidis :-))) Pogledacu case studdy, samo zaboravio si da das link?!?! Ja sam od onih sto vole da se prica argumentima ... sorry :-)

Stvarno ne znam sta si nacuo i zasto si u zabludi da ima "drasticno" losije performanse od drugih CMS-a/Frameworka ... ili da su performanse al ikakav problem ...

Vec sam ti objasnio da postoje caching i throttle, vidim ne zanimaju te detalji oko toga nego aj jos jednom da ponovis tvrdjnu ... jel mislis da ce postati istina ako vise puta ponovis sta li :-)

Rails ima zaista uocljivo losije performanse od konkurencije al to ne sprecava ljude da ga koriste posto je al toliko bolji u mnogo cemu drugom, jer kada dodjes do toga da imas 100000 poseta dnevno imaces para za jos jedan server ... i za programera koji zna kako da podesi caching, throttle, opcode cache ... i tako ... kakve crne performanse ...

Ok, ovaj thread postaje dosadan polako :1056: :)

Cepanis, srchanis, sta god... Vidim da si od onih geek-ova koji "brane" odredjene applikacije po svaku cenu ko da su im deca...

Case study: http://drupal.org/node/116578
Web site: http://teamsugar.com/
Quote:

1) Drupal has a hard time scaling with the number of modules and a lot of modules that a social network would want, e.g., the og module, are really bad performers. We get a lot of hits on the "my unread" page and it's absolutely brutal. Views also generate atrocious SQL which will pound your database into oblivion if you don't actively monitor the situation. We do not, for example, have a view for each block on the team homepage — the SQL is hand-written.

When you're creating web applications you're typically going for one of three things: speed/scalability, flexibility, or maintainability. Drupal is high on flexibility, average on maintainability, and poor on speed, in my opinion. If your priority is maintainability then I'd go for one of the RAD environments like Rails or CakePHP. If speed is your priority then I'd write your own lightweight framework, or whatever, and do it yourself.


Sad ces verovatno da kazes kako nisu optimizovali query-je, lose su napisali custom module, spori su im serveri, itd...

Ovo stvarno postaje dosadan thread jer si ga ti smorio.... :1039:

Misha
27. 09. 2007., 13:41
E ovo vec ima "neku" tezinu, za razliku od onoga sto si do sada rekao. Al vidis kako znas i sam sta sve moze da bude razlog losim performansama ... i da to nije SAMO pitanje frameworka ... kao sto rekoh to je u startu promasena poenta za ovaj thread

Secas se, covek je pitao koji frameworci se koriste u praksi i zasto ... ja sam mu dao malo konkretniji odgovor zasto ja koristim Drupal, zar nije trebalo i ti da uradis slicno, kao ono znas!?!? Vidis ja bi rado procitao tvoje argumente zasto ti koristis ono sto koristis, makar to bio i code od nule ... a ovi kvazi argumenti protiv, i jedan komentarcic ... jesu smor al zesci ...

Dakle ako koristis Drupal kao framework (bez mnogo tudjih modula), na tebi je koliko ce ti code brz biti, kao uostalom kao i kad pises aplikaciju od nule. Stim sto ovde imas nekoliko ugradjenih modula koji ti pomazu da boostujes performanse i ogroman koristan dobro istestiran API koj mozes da koristis.

A decu i karakterizacije sta je ko probaj da zaobidjes ... To mi je malo trulije nego biti geek na devprotalk forumu ...

Bojan Zivanovic
27. 09. 2007., 13:47
Istina je da je Drupal bio dosta spor, sto su Drupal developeri osetili na svojoj kozi (drupal.org se raspadao usred prevelikog broja korisnika).
Medjutim, aktivno se radi na smanjivanju broja kverija i boljem kesiranju, tako da je iz verzije u verziju situacija sve bolja.. Sestica donosi velika pobojsanja sto se performansi tice, tako da definitivno vredi pogledati.
Inace, slazem se da Drupal ima odlican framework, sam kod je prva liga.

McChoban
27. 09. 2007., 17:59
Ok, evo naterali ste me da pogledam drupal... A te knjige, jesu li validne za 6-cu?

Misha
27. 09. 2007., 18:44
Medjutim, aktivno se radi na smanjivanju broja kverija i boljem kesiranju, tako da je iz verzije u verziju situacija sve bolja..

To si u pravu Drupal se razvija stvarno impresivnom brzinom. Recimo CodeIgniter maltene razvija jedan (vrlo pametan) covek, CakePHP njih nekoliko, dok se oko Drupala vrti jedan poprilicno veliki community ocigledno kompetentnih ljudi ... i to se vidi, i u ispoliranosti source-a i dokumentaciji i sl. Cak i to mi je mnogo bitnije od nekih mutnih prica oko performansi ...

A o performansama Drupala cini mi se ima raznih misljenja zato sto ljudi koriste module preterano, da ne bi slucajno nesto rucno napisali, pa se posle pitaju zasto je to sporo. Iz mog iskustva ako ga koristis kao framework tih problema zaista nemas.

Ok, evo naterali ste me da pogledam drupal... A te knjige, jesu li validne za 6-cu?

Knjige su pisane za 5-icu, 6-ca nece izaci jos nekoliko meseci. Drupal community ti jos podrzava i 4.7 inace ... Tako mislim da slobodno mozes da citas ovo sto ima, nista pogresno neces procitati ... a stvarno je detaljno opisana arhitektura i principi dobrog dizajna web aplikacija ...

andrejpav
14. 11. 2007., 23:18
Ma kakav Drupal kao framework, vBulletin je prava stvar za to! ;)

Salim se, ali samo da spomenem od cega se sastoji moj framework: PEAR + Smarty. PEAR moze da se poredi sa Zend-om, samo sto duze postoji. Zend je kao kopija PEAR-a posto ima skoro iste klase (sa mozda nekim dodatcima).

Sad sam uzeo malo Symfony da ucim posto sef hoce da malo preradimo i iskoristimo askeet aplikaciju. (Askeet je slicna aplikaciji Yahoo Answers.) Koliko vidim, pisanje tog askeet-a nije nista lakse/brze/sigurnije/preglednije nego kad bi koristio PEAR. Samo je drugaciji nacin organizovanje koda... Mislim da to moze da se kaze i za ostale MVC frameworks koje sam video i koji su spomenuti na ovoj temi.

Misha
14. 11. 2007., 23:52
:)

Organizovanje code-a, ORM/Active record, convention over configuration, generatori, raznorazni pazljivo integrisani helperi (form, ajax) ... sve to cini te nove Rails-olike frameworke ... al onda naravno svaki od njih stavi naglasak na nesto drugo pa je kao jedinstven ... Symfony je prvenstveno mocan, koristi mnoge druge nezavisne PHP projekte ... al reko bih i najkomplikovaniji u PHP svetu frameworka ... Meni se nije svidela kolicina konfiguracionih file-ova koje moras da pises i na kom nivou ...

peroperje
01. 12. 2009., 02:54
.. Recimo CodeIgniter maltene razvija jedan (vrlo pametan) covek....

...kako si samo dosao do ovog zakljucka...

Misha
01. 12. 2009., 09:38
Da je pametan sam zakljucio gledajuci code/arhitekturu CI ako se to pitas :)

http://www.ohloh.net/p/4692/contributors

Izgleda da danas ima 4 ozbiljnija contributora koji rade na CI... I da intenzitet commita nije preterano velik: http://www.ohloh.net/p/4692/commits

Al s'obzirom na obim frameworka sasma dovoljno...

peroperje
01. 12. 2009., 11:52
iza CI stoji firma EllisLab,Ci je open source i oko sebe okuplja veoma veliku zajednicu(nemam sumnje da tu ima veoma pametnih ljudi)....

Tesko da bi jedan(ili tri ,cetiri) covek mogao postici sve ono sto stoji iza Codeigniter-a

...ali ok...ako ti tako kazes

Misha
01. 12. 2009., 14:42
Ma jok, mnogo impresivnije stvari su postizali pojedinci od Code Igniter-a, al nista cudno... Zapravo nije ni 4 za 2009... ako se pogleda statistika commita u 2009 samo njih dvoje su aktivno commitovali... Odnos ljudi koji koriste open source projekat i onih koji aktivno rade na njemu je uvek vrlo disproporcionalan, nemoj da te zbuni broj krajnjih korisnika...

Ti ne mozes da poverujes da CI radi dvoje ljudi, mene ne cudi posto je projekat poprilicno trivijalan, sto mu ne smanjuje vrednost naravno...

S'druge strane recimo ja ne mogu da se nacudim da je ovo napravio maltene jedan covek: http://cappuccino.org/

Lik je napravio gigantski framework i totalno novi programski jezik koji se kompaljira u JavaScript! Sa njim je napravio web verziju PowerPointa: http://280slides.com/Editor/. I plus je napravio IDE za sve to: http://280atlas.com/what.php

Pogledaj dubinu i obim koji obuhvata API:
http://cappuccino.org/learn/documentation/annotated.html

Znaci kako bre?!?! Kako su dodjavola njih dvojica uspeli sve ovo da iskuckaju za godinu i nesto dana!?!?

nixa
01. 12. 2009., 14:47
^ Capuccino je čudo, mene je doduše strah da baziram nešto na njemu baz iz tog razloga :)

Misha
01. 12. 2009., 14:58
@nixa Da znas!!! ja sam se zestoko lomio da li da krenemo da ga koristimo... I da nije cinjenice da bi svakom morao da objasnjavam sta je Objective-J i koliko je on u sustini bolji od cistog JS, sto mi 90% njih ne bi poverovalo, definitovno bi ga vec poceli koristiti a ovako smo se odlucili za ExtJS...

Btw, ako si zainteresovan da napisemo nesto u Cappucinu onako sa strane laganica, cisto vezbe radi ja sam za :)

aleck
17. 02. 2010., 21:35
Jedno iskustvo - nije baš Cappucino, ali je sličan koncept. Mi sad u firmi za web osnovu koristimo interni framework baziran na Script#-u, koji kompajlira C# u Javascript.

Moje lično iskustvo je da je to poprilično njesra. Pišeš u jednom jeziku a kad nešto ne radi onda debug u drugom. Ako taj drugi ne znaš, možeš da se slikaš. Pojedine konstrukcije iz C#-a izgledaju prilično drugačije u Javascriptu (sintaksa za for-in petlju mi je dušu pojela, pošto nisam znao C# kada sam kretao u priču).

Script# je dobio podršku za Webkit i Operu pre nešto jače od godinu dana. Da Nikhil to nije tada dodao, pošteno bi se pušili šta da radimo, verovatno bi pisali sami. Imali smo sreće, a to baš nije nešto na šta bi da računam pri bilo kakvom projektu.

Pristalica sam toga da se svaki deo bilo kog sistema piše u jeziku/frameworku namenski pravljenom za to. Javascript za klijent, ObjC/C#/šta već za server.

A da ne pričam što sve što već ima u nekom namenski pravljenom JS libu moraš sam da napraviš ponovo. Svaki put kada nešto vizuelno lepše treba da se uradi u ovom našem projektu, kukam za jQueryjem samo tako.

Jednostavno - kad se odlučiš na nešto ovako, osuđen si na to da sve moraš da pišeš sam. Samo pogledaš šarolikost plugina za jQuery, pa pogledaj da li tako nešto ima za Cappuccino / Script# i odgovor kojim putem ići se sam nameće (barem meni).

Da ne bude zabune - mene fascinira znanje i umeće ljudi koji su radili te stvari. Ali iskreno mislim da je bolje da su to upotrebili za nešto drugo.

jablan
17. 02. 2010., 22:14
Može jedno pitanje: koja je prednost pisanja toga u C#, pa prevođenje u JS? JavaScript je poprilično moćan jezik.

xippi
17. 02. 2010., 22:24
to je valjda fora, da ne izlazis iz jezika. rails ti recimo omogucava da pljujes js pisuci ruby. meni se ovaj koncept generalno ne dopada zato sto najcesce gubis sve prednosti jezika koji generises

jablan
17. 02. 2010., 22:33
meni se ovaj koncept generalno ne dopada zato sto najcesce gubis sve prednosti jezika koji generises
Pa to.

Al' Rails i nekako (prvo, nisi prinuđen na to da se JS generiše tako, drugo, Rubi je konceptualno mnogo bliži jezik JS-u pa se prevođenjem ne gubi toliko), ali C#...

Doduše, GWT postoji već dugo, jel ima neko iskustva s njim?

Misha
17. 02. 2010., 22:44
@aleck U pravu si, obe zamerke su ti na mestu. Samo zaboravljas da oni tu apstrakciju nisu pisali jel im se moze nego sa razlogom :) Tj pored tih mana koje si naveo, ima i velikih prednosti pa je na tebi da vidis sta ce u tvom slucaju prevagnuti...

Cappuccino je napravljen da olaksa pisanje desktop like web aplikacija... Moj neki feeling je da ako bi ovo (http://280slides.com/Editor/) pokusao da napises u jQuery, da bi imao toliko bugova, konceptualno neadekvatnih problema za jQuery da bi ti nedostatak pravog debugera za Cappuccino posle bio mnogo manji problem.

Recimo mnogo popularniji i zreliji predstavnik toga sto Cappuccino radi je GWT. Ovi sto napravise Google Wave se kunu da bi taj zadatak bio maltene nemoguc da nije bilo GWT-a (java -> javascript)...

Btw kad se dogodi neki picvajz u JQuery komponenti takodje mozes da dobijes kripticne debug poruke koje iziskuju poprilicno truda da bi se rastumacile, posto ne zaboravi da je i JQuery apstrakcija nad JS...

Sto se tice toga da Cappuccino ima mnogo manje komponenti, to je posledica cisto toga sto su se skoro pojavili... A i brate 80% onog sto postoji za JQuery je neupotrebljivo... Meni se nebrojano puta dogodilo da je JQuery komponenta toliko lose napisana da kad je stavis u postojeci projekat sve puca u 10! Tako da ni to nije bas tako velika prednost...

Misha
17. 02. 2010., 22:51
Može jedno pitanje: koja je prednost pisanja toga u C#, pa prevođenje u JS? JavaScript je poprilično moćan jezik.

Recimo, jel te ne nervira podrska za OO koncepte koju JS ima? Zar nije lepse raditi u jeziku koji ima pravu podrsku za OOP?

jQuery je zaista dobar za web siteove koje hoces da zacinis sa dinamicnoscu... al pisati web aplikaciju je malo drugacija prica, koriste se drugacije paradigme... nema strana nego ima prozora i dijaloga, prava modularizacija code-a postaje izuzetno bitna... itd

xippi
18. 02. 2010., 01:35
Ovi sto napravise Google Wave se kunu da bi taj zadatak bio maltene nemoguc da nije bilo GWT-a (java -> javascript)...


svaki ciga svoga konja hvali :)

Recimo, jel te ne nervira podrska za OO koncepte koju JS ima? Zar nije lepse raditi u jeziku koji ima pravu podrsku za OOP?

jQuery je zaista dobar za web siteove koje hoces da zacinis sa dinamicnoscu... al pisati web aplikaciju je malo drugacija prica, koriste se drugacije paradigme... nema strana nego ima prozora i dijaloga, prava modularizacija code-a postaje izuzetno bitna... itd


ja ne znam sta podrazumevas pod OO konceptima, ali u js-u je to odradjeno jako dobro. sama funkcija je prva instanca objekta, znaci ne pisu se klase nego prototip funkcije koji se kasnije nasledjuje. moguce je praviti privatne i public metode (ovo se resava scope-om). jquery kao takav je upravo objekat, koji u sebi ima metode koje vracaju izmenjen prosledjen element... u stvari je samo niz helper funkcija koje omogucavaju da se javascript pise jednostavnije. on je sam zamisljen modularno, koristi sizzle.js koji sluzi kao nezavisan selector engine (omogucava da se koriste css3 selektori i moze se dropovati u bilo koji drugi lib), a sam jquery source je podeljen na nekoliko zasebnih modula ajax.js, manipulation.js... prilikom builda se od svih ovih zasebnih fajlova/modula pravi jedan fajl koji se minificiran servira klijentu (skini sa gita jq source, videces o cemu pricam)

druga stvar... ovo sa paradigmom ne razumem ;) postoji jquery user interface biblioteka koja omogucava da se u browser (stranu/kako god da je zoves) ubace kontrole preko kojih je moguce praviti web app. takodje je svaku od tih kontrola moguce prosirivati po sopstvenim potrebama (kao i bilo koji drugi jquery objekat/metod). ocigledno je da nikada nisi pisao jq aplikaciju tako da zaista ne znas o cemu pricas :)

da se vratim na topic ;)

meni se od php fw-ova jedino svidaju codeigniter i kohana... bas zato sto su zamisljeni kao helper metode za lakse pisanje standardnih php stvari (ci kao port railsa na php, a kohana kao php5 only verzija ci-a). kohana ima jos prednost jer je i sam view objekat, sto ci-u jako fali. po mom misljenju web app treba da se sastoji iz odbro osmisljenog server side dela (u kom god jeziku) kome frontend pristupa preko jasno definisanog apija. u tom slucaju je potpuno nebitno da li je frontend html+js, flash... sve ove combo varijante (generisanje jezika) su mi smor

dejanr
18. 02. 2010., 01:42
sve ove combo varijante (generisanje jezika) su mi smor

Vidi ovaj combo jambo ninju od jezika lunascript: http://www.asana.com/luna

Salu na stranu, malo oftopic ali jako zanimljiv projekat. Naime lunascriptom opisujes aplikaciju, i on generise server i client stranu.
A ako pogledate i ko je u kompaniji (http://www.asana.com/company), vidi se da ce biti nesto od toga :)

xippi
18. 02. 2010., 02:07
havarija....ko god da stoji iza ovog frankenstajna od jezika :)

return <table>
<tr><td>
messages.map(renderMessage)
</td></tr>
<tr><td>
<img src=(session.user.small_pic_url) />
<div>
<input data=session.user.name /> <b>' (your nickname)'</b>
<form onsubmit=postMessage>
<input data=session.new_comment hasFocus=true />
</form>
</div>
</td></tr>
</table>;


ovo me podseca na onaj spageti php... skrolas 2 sata kroz echo za view dok ne nadjes funkciju koja ti treba :)

degojs
18. 02. 2010., 05:00
ja ne znam sta podrazumevas pod OO konceptima, ali u js-u je to odradjeno jako dobro.

Npr. kako se radi sa interfejsima (definisanje, korišćenje)?

Misha
18. 02. 2010., 07:55
svaki ciga svoga konja hvali :)

E znao sam da se neko nece dati prevariti i da ce ovako reagovati :1064: Pa nisu valjda ovi iz Googlea takve cige da hvale i kad razloga nema? :) Ono sto oni hvale je prednost koriscenja Jave nad JS u tako velikim projektima, a to ne da stoji... Kako god da okrenes jel znas ti za neku aplikaciju kompleksnu kao Google Wave koja je napisana u cistom JS? Sta mislis zasto ih nema?

ja ne znam sta podrazumevas pod OO konceptima, ali u js-u je to odradjeno jako dobro

Legendarna recenica :) Ne znam sta je Kartagina al uostalom smatram da to treba razrusiti :) ma gde dobro odradjeni! Koji jos ljudski jezik koristi prototype based pravljenje klasa? i dao si upravo primer jedne od rogobatnosti, nacin kako se prave public/private/privileged clanovi... cista havarija ;)

ovo sa paradigmom ne razumem ;) postoji jquery user interface biblioteka...
Pored komponent based paradigme ima tu jos svasta (http://en.wikipedia.org/wiki/Programming_paradigm)

Pogodio si, nisam koristio jQuery za pisanje aplikacija, vrlo svesna odluka, jesam za ubacivanje zanimljivih kotrola u postojece siteove... Al za full web aplikacije sam odabrao ExtJS... Posto nije dovoljno da nesto postoji, mora i da lici na nesto.

Uporedi broj/ozbiljnost ExtJS komponenti (http://www.extjs.com/deploy/dev/examples/) / klasa (http://www.extjs.com/deploy/dev/docs/) i JQuery UI komponenti. Pogledaj recimo Tab kontrolu, jQuery UI za nju ima 7 eventa, Ext ima 40-tak... jQuery UI nema mikroskopski delic mogucnosti ExtJS-a u globalu...

web app treba da se sastoji iz odbro osmisljenog server side dela (u kom god jeziku) kome frontend pristupa preko jasno definisanog apija
U potpunosti se slazem, fenomenalna recenica! Kakva je podrska za data-binding sa serverom u jQuery-ju? Ext ima direct (http://www.extjs.com/blog/2009/05/13/introducing-ext-direct/) tehnologiju za to, ili mozes svaku komponentu da vezes za REST url, jednom linijom codea... Ne, ne, cisti AJAX nije nacin ako si to hteo da kazes :) Cisti AJAX na velikom projektu posle 10-te data binded komponente postaje cisto mucenje...

A sta cemo za ozbiljnije programerske teme, kao memory management? Kako to resavas u cistom JS/jQuery? Da pogadjam, ne resavas?!?! :1074: Samo nacin kako barata sa komponentama sto se tice memorije bi bio dodovljan razlog da se odlucim za Ext umesto jQuery-ja... Onda management stanja aplikacije, history, pa layout management... Kako sve to radi jQuery UI? Reko bih da ne radi nikako :p

Ako se ne varam u jQuery UI moras da pises HTML kad hoces da ubacis komponentu? Ako je to jedini nacin (nisam siguran), samo to je za mene deal breaker. U Ext-u ako neces ne moras al uopste da se spustas na DOM/HTML/CSS nivo... al zesci productivity booster...

Cuj ti njega nikad nisam pisao JS aplikaciju! Pa sta radim poslednjih 6 meseci nego to sto radim :1042:

ivanhoe
18. 02. 2010., 11:37
Recimo, jel te ne nervira podrska za OO koncepte koju JS ima? Zar nije lepse raditi u jeziku koji ima pravu podrsku za OOP?


s druge strane, jel te ne nervira kad nemas poptunu kontrolu nad kodom koji pravis, nego nesto tamo automatski generise kod, i onda dobijes 50 linija umesto 3, i za neku prostu stvar moras da izvodis vratolomije, jer se programer nije setio da ce ti mozda to trebati? Uvek se setim onih alata za generisanje SQL-a, koji su bili jako popularni pre 10-tak godina i nemogucih, kilometarskih upita koji su se tako dobijali.

Tako da, svako za ima svoje protiv, stvar je u tome sta radis i sta ti je prioritet

bluesman
18. 02. 2010., 11:37
Mister, jel' ti to hoćeš da kažeš da je jQuery sranje? I da ti je potreban neki super-cool memory management u javascriptu? Šta praviš, gmail? Ili sam ja nešto propustio?

Često vidim ljude koji pričaju bolje je ovo, ono, ima još i ovo-ono a na kraju kada pogledaš kod svodi se na show / hide / toggle div :) Ne kažem da je ovo slučaj, nego čisto kao primer ljudi koji olako pljuju po nečemu što ne nikada nisu ni koristili. To je kao kada bih ja pričao da je Lamborghini sranje u odnosu na Ferarri, jer nema ovo-ono a u stvari meni je dovoljan i Fiat Punto za prevoz od tačke A do tačke B.

Misha
18. 02. 2010., 12:15
s druge strane, jel te ne nervira kad nemas poptunu kontrolu nad kodom koji pravis, nego nesto tamo automatski generise kod,...

Tako da, svako za ima svoje protiv, stvar je u tome sta radis i sta ti je prioritet

To se slazem sa problemom generisanog code-a... samo kad govorimo o Cappuccinu il GWT tu se misli na full framework-e a ne na generatore code-a, ne mozes bas tako da ih izjednacujes... Al totalno se slazem da zavisi sta radis, to i pricam zapravo... jQuery nije za web aplikacije desktop tipa... Zasta su Cappccino i GWT prvenstveno napravljeni...

@bluesman No Mister, necu da kazem da je jQuery sranje... a propustio si kontekst u kome pricamo o izboru frameworka... jQuery je prelep framework i recimo Drupal ga koristi na totalno pravi nacin... samo mislim da nije za web aplikacije bas si lep primer dao, GMail tipa.

Web aplikaciju (RIA aplikaciju) ne cine samo UI kontrole ko sto rece xippi nit toggle div pobogu :)

jablan
18. 02. 2010., 13:07
Npr. kako se radi sa interfejsima (definisanje, korišćenje)?
Što bi jedan jezik sa duck-typingom uopšte imao nešto poput interfejsa?

xippi
18. 02. 2010., 13:42
Npr. kako se radi sa interfejsima (definisanje, korišćenje)?

http://mattprokes.com/2008/11/17/fully-working-javascript-first-class-interfaces-are-possible/

xippi
18. 02. 2010., 14:32
Cuj ti njega nikad nisam pisao JS aplikaciju! Pa sta radim poslednjih 6 meseci nego to sto radim :1042:

citaj pazljivo, rekao sam da nikad nisi pisao jq aplikaciju. sta si ti radio poslednjih pola godine nije moj problem :)

Ono sto oni hvale je prednost koriscenja Jave nad JS u tako velikim projektima, a to ne da stoji... Kako god da okrenes jel znas ti za neku aplikaciju kompleksnu kao Google Wave koja je napisana u cistom JS? Sta mislis zasto ih nema?


grendmadrs and frogs. java je server side jezik, a javascript client side... to sto su oni izabrali javu + js (gwt) je njihova stvar... to je isto moglo da se napise u ruby+flash/flex ili bilo kojoj kombinaciji client i server side tehnologije

Pogledaj recimo Tab kontrolu, jQuery UI za nju ima 7 eventa, Ext ima 40-tak...


ako ti fali neki event uvek mozes da ga bindujes.


Ext ima direct (http://www.extjs.com/blog/2009/05/13/introducing-ext-direct/) tehnologiju za to, ili mozes svaku komponentu da vezes za REST url, jednom linijom codea...

moje misljenje o ovom se podudara sa ovih prvih par komentara

As pablo says, yes i understand this as getting tied to Ext. Making server code to work only with one frontend(ExtJS), doesn’t look too fancy for me. If i want to make another frontend, lets say in Delphi for windows to get the same data its used in the server i would have to make other normal ajax functions to get that working in the other frontend.
But if you are going to use only ExtJS for the front end i can see that its good to use this.

generalno nemam nista protiv extjs-a, samo kazem da ne poznajes jq dovoljno da bi pricao o njemu... a bottomline je da je sve ovo i dalje samo javascript ;)

Misha
18. 02. 2010., 15:21
@xippi A jesi ti napisao ikad vecu RIA aplikaciju u jq-u? Tj jel znas za neku jq RIA aplikaciju u rangu/tipa Google Wave-a, 280slides.com etc?

Ako je ovaj iz citata koristio Ext pa zakljucio da te Ext tera da pises server code koji je vezan samo za njega, onda je taj lik zivi dokaz da i ljudi koji koriste nesto ponekad ne znaju sta pricaju :)

Bas nasuprot, aplikacija koju pisemo koristi REST na serveru (Zend Framework ga generise), sto ce reci serverski code nije vezan za Ext, zapravo to mi je bilo vrlo bitno da bude tako i jedan od razloga zasto sam odabrao Ext.

xippi
18. 02. 2010., 15:25
@xippi A jesi ti napisao ikad vecu RIA aplikaciju u jq-u? Tj jel znas za neku jq RIA aplikaciju u rangu/tipa Google Wave-a, 280slides.com etc?


kad smo kod toga upravo pisem ria u rangu 280slides preko jq/jqui-a koji mi pruza samo osnovu na osnovu koje pisem dalju logiku. dobices beta invite za koji mesec :)

Misha
18. 02. 2010., 15:37
kad smo kod toga upravo pisem rai aplikaciju u rangu 280slides preko jq/jqui-a koji mi pruza samo osnovu na osnovu koje pisem dalju logiku. dobices beta invite za koji mesec :)

Gimme gimme! :) Extra znaci radimo slicnu stvar sa razlicitim pristupom! Bice zanimljivo ako bi razmenili iskustva za koji mesec...

Break a leg sa projektom!!! Prove me wrong! :)

P.S. Nego jel znas za neki vec postojeci veci RIA projekat u jQuery-ju? :)

degojs
18. 02. 2010., 15:49
Što bi jedan jezik sa duck-typingom uopšte imao nešto poput interfejsa?

Jednostavno želim da imam mogućnost da definišem ugovor, kao i da jednostavno testiram da li prosleđeni objekt ispunjava potrebne uslove iz istog (vrlo jednostavno ako imaš interfejs).

@xippi:
sve to tako nešto može kao, ali to je u stvari workaround. Kao i mnoge druge stvari u JavaScript-u. To je onda natezanje, šta da se radi, drugo nema, pa onda.. Vidiš na šta to liči tamo, taj linkovani primer, uporedi sa bilo kojim 'normalnim' jezikom.

Npr. kako obezbeđuješ da klasa ne može da se nasleđuje?

A sta cemo za ozbiljnije programerske teme, kao memory management? Kako to resavas u cistom JS/jQuery? Da pogadjam, ne resavas?!?!

Što bi rešavao upravljanje memorijom na sistemima gde se to dešava automatski?

Pošto si pomenuo Javu u pozitivnom svetlu, poznato ti je da je tamo upravljanje memorijom takođe automatsko?

Misha
18. 02. 2010., 15:58
kad smo kod toga upravo pisem ria u rangu 280slides preko jq/jqui-a koji mi pruza samo osnovu na osnovu koje pisem dalju logiku. dobices beta invite za koji mesec :)

BTW, sad si me zainteresovao... Nasa neka osnovna organizacija se sastoji od Ext Viewport objekta (kontejner koji zauzima ceo browser prozor) u koji onda programski stavljamo druge kontejnere i komponente... znaci ceo projekat ima samo jedan maltene prazan HTML file, sve ostalo je hijerarhija objekata i event handlera vezanih za njih, nema trunke HTML-a/DOM-a. U tom smislu jel tvoja organizacija slicna sa JQ-om il ne?

Predpostavljam da za layout management i ostalo sto JQ nema koristis third party pluginove... il se trudis da ih ne koristis da sve sam pises?

Il da ovaj razgovor nastavimo uz :beer: :1045: Mene bas EXTRA u poslednje vreme zanima RIA development tako da na tu temu placam :beer::beer::beer::beer::beer:

Misha
18. 02. 2010., 16:03
Što bi rešavao upravljanje memorijom na sistemima gde se to dešava automatski?


Automatski osim kad se to ne dogodi :) Garbage collector u Javi je nesto na sta mozes da se oslonis... nazalost to ne vazi za JS... Zato su tvorci Ext-a kao jedan od najbitnijih dodataka na jezik ubacili lazy instanciranje komponenti i napredniji garbage collection istih. IE je posebno lenj po pitanju izbacivanja djubreta...

Naglasak je naravno na VELIKIM RIA aplikacijama... taj problem se tek tada manifestuje...

bluesman
18. 02. 2010., 16:19
"Izbor PHP Framework"?

Ko mu dade takvo ime? Nije gramatički ispravno a i taj koji je pokrenuo ovu temu je omašio temu - uopšte ne pričamo o tome. Znači naslov teme je offtopic :)

degojs
18. 02. 2010., 16:27
Automatski osim kad se to ne dogodi..

To nije problem JS-a, već onog ko je implementirao upravljanje memorijom, itd. Npr. Chrome može da to radi bolje, a IE6 lošije.

xippi
18. 02. 2010., 16:32
Predpostavljam da za layout management i ostalo sto JQ nema koristis third party pluginove... il se trudis da ih ne koristis da sve sam pises?


pazi, jq je samo set helper funkcija a jqui samo set kontrola, implementacija je na developeru :) postoji sasvim fin third party layout plugin (http://layout.jquery-dev.net/) koji omogucava pravljenje viewportova i ostalog o cemu pricas. ovo moje je sa druge strane sasvim custom tako da layout manager pisem sam. imam blanko html, u koji ubacujem templejtovane objekte (predefinisan, konfigurabilni html), pri cemu se trudim da sve to bude kompatibilno sa themerollerom

a ovaj razgovor dalje definitivno uz pivo ili na drugoj temi :)


btw ajd stvarno neka neko splituje topic... od 6te strane gde smo poceli da pricamo o kapucinu :)

xippi
18. 02. 2010., 16:35
Znači naslov teme je offtopic :)


ovo cu da ti ukradem i stavim u signu :)

jablan
18. 02. 2010., 19:59
Jednostavno želim da imam mogućnost da definišem ugovor, kao i da jednostavno testiram da li prosleđeni objekt ispunjava potrebne uslove iz istog (vrlo jednostavno ako imaš interfejs).
Je l' ti kontaš uopšte da je interfejs kao OO koncept nužno zlo, tj. predstavlja workaround da bi se u statički tipiziranim jezicima koji ne podržavaju višestruko nasleđivanje odradile neke stvari koje se u duck typingu podrazumevaju?

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto (kao ovaj lik sa xippi-jevog linka, mada i on koliko vidim više razonode radi), pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan. Mada i to nema puno smisla pošto dinamički jezici obično nemaju "potpise metoda" u C-smislu reči, odnosno metode mogu da prime i vrate uslovno rečeno bilo šta. To je feature, a ne bug. :)

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već... ;)

degojs
18. 02. 2010., 20:47
Šta? LOL

"Interfejsi su nužno zlo u jezicima koji ne podržavaju višestruko nasleđivanje..."?

Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.

Jednostavno, izuzetno kratak način da objaviš ugovor (skup funkcija i svojstava).

Ako je nekom uopšte potrebna striktna kontrola toga da li neki objekat odgovara nekom interfejsu, najmanji je problem implementirati tako nešto, pošto je refleksija kod dinamičkih jezika isto po pravilu ko dobardan.

Hahha, "ako je nekom uopšte potrebna.." :D

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?

Ako ćeš tako, sve može da se odradi na okolni način, ali možemo i da osnovne računske operacije obavljamo direktno baratajući registrima na procesoru, šta će nam bilo kakva apstrakcija.

Drugim rečima, ako želiš da ti se kodiranje svodi na "definisanje ugovora", onda i dalje kodiraš u VB.NETu ili čemu već...

Kakvo "programiranje koje se svoji na definisanje ugovora"? To bi trebalo da znači nešto konkretno? Drugim rečima, poštedi me komentara sa visine ako nemaš šta konkretno da kažeš.


Inače, odgovor sam potražio i našao sam, umesto ovakve besmislene priče sa tobom. Stvar može da se reši drugačije u JavaScript-u, prostim prototype nasleđivanjem, slično kao što se C++ čisto virtuelne klase koriste u zamenu za interfejse. Otprilike ovako:

function IDuck() {
}
IDuck.prototype = {
duck : function() {},
walk : function() {}
}

function Guska() {
}

Guska.prototype = new IDuck();

var g = new Guska();

alert ( g instanceof IDuck ); // true!

degojs
18. 02. 2010., 21:00
U stvari, nije baš tako jednostavno kao ovo gore, jer to opet ne garantuje da objekat zaista ima vlastitu implementaciju definisanih metoda. Oh, well.. mene mrzi dalje da tražim :D

jablan
18. 02. 2010., 21:27
Ne, interfejsi se koriste i jednostavno da bi objavio ugovor koji strane moraju da ispoštuju.
O gospode... Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan". Sa druge strane, u rantajmu se ta provera radi vrlo lako i nije neophodan nikakav veštački language construct da bi se to izvelo, već se to radi sa postojećim konceptima (npr. običnim metodama).

Taj "ugovor" o kome pričaš zapravo nema veze sa koderom. U pitanju je ugovor sa kompajlerom, tj. jedini način da ti kompajler dozvoli da pozivaš iste metode na objektima različitih klasa. Drugim rečima, pisanje interfejsa je tvoja obaveza, a ne privilegija.

Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita... :)

Aha, znači treba da ispitujem:

1. da li x može da hoda?
2. da li x može da trči?
3. da li x može da radi x, y i z?
4. da li x ima svojstvo "visina"?
....
Nego da pitamo kratko: da li objekt može da se tretira kao "čovek" (gde smo unapred definisali svojstva i funkcije koje "čovek" podržava)?


Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš, i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:


# unapred definišemo svojstva i funkcije:
sve_sto_covek_mora_da_podrzava = [:hodaj, :trci, :x, :y, :z, :visina]
# pa pitamo kratko
objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava


Viđu mađije! Bez interfejsa! :)

degojs
18. 02. 2010., 21:50
Vidi: taj ugovor kod interpretiranih jezika nema nikakvu težinu jer ne postoji kompajler koji se buni ako "ugovor nije ispoštovan".

LOL Pa da, neće se buniti kompajler, buniće se runtime kad pukne :D


Ne, ne treba da ispituješ, ali niko ti ne brani da to radiš,

Kako ne trebam kad trebam? Šta će biti ako pokušam da pozovem funkciju koje nema? Svašta.

i to ne tako kako mali perica zamišlja, serijom nekih if-ova, možda pre ovako:

Tako sigurno ne, jer to nije JS. Ili grešim?

Kako rekoh, već sam sam pronašao odgovor koristeći prototype nasleđivanje po uzoru otprilike na pomenute virtuelne metode/klase iz C++, a ispitivanje sa instanceof.

I evo upravo sam ga i naterao da proradi (čini mi se :D), negde u prethodnom primeru je bio typo ili tako nešto.

ivanhoe
18. 02. 2010., 21:51
Postoje neke js biblioteke za contracte, recimo ova (http://kinsey.no/blog/index.php/2010/02/03/jscontract-code-contracts-for-javascript/)

mada, to je sve realno potrebno uzasno malom procentu ljudi, javascript nije u startu ni zamisljen za takve stvari, zamisljen je da bude uzasno flksibilan i lak za rad, i u tom smislu je 99% vremena i na 99% posto realnih web projekta daleko bolji jezik od recimo vbscripta ili ne daj boze jave, koja je IMHO uzasno smoran jezik. E sad, ako neko planira da pravi web verziju photoshopa u js, ili da pravi simulacije big banga u php-u, ili vec tako nesto, to je onda ipak vise problem njegovog loseg izbora alata, nego sto je to problem samog jezika... just my 0.02 pare

degojs
18. 02. 2010., 21:58
^Ivanhoe, sve dok JS jeste takav kakav jeste, neće ni biti u situacijama da mu trebaju takve stvari, slažem se.

Sad je to više problem kokoške i jajeta.

Ali pazi, da imaš izbor da koristiš nešto drugo, pitam te da li bi koristio JS? I kada bi JS bio napredniji, garantujem ti da bi već odavno koristili isti još više i to sa uživanjem. Nažalost, MS i Yahoo i još neki su nedavno značajno usporili dalji razvoj JS-a pozivajući se na kompatibilnost, itd. Šta da se radi..

degojs
18. 02. 2010., 22:55
@jablan, čisto da isteramo mak na konac:

objekat_pera.podrzava? sve_sto_covek_mora_da_podrzava

Ovaj, sta je "podrzava" gore? Ne vidim nigde to definisano? Je l' to obaveza programera ili runtime sad razume i srpski, pored danskog?

jablan
18. 02. 2010., 23:10
Ok, s obzirom da si prešao u "ad hominem" mod, ja prelazim u "from a distance people can't tell who is who" mod pa te neću udostojiti odgovora.

Inače, ta funkcija bi se u JS-u implementirala nekako ovako:


Object.prototype.haveMethods = function(methodList) {
for(var i=0; i<methodList.length; i++) {
if (typeof(this[methodList[i]]) != 'function') {
return false;
}
}
return true;
};

/* i onda na degojs-ovom primeru: */
g.haveMethods(['duck', 'walk']); /* vraca true */
g.haveMethods(['duck', 'walk', 'talk']); /* vraca false */

degojs
18. 02. 2010., 23:13
Nemoj ti meni kako bi se implementiralo u JS pomocu "objekti u JSu su asocijativni nizovi", pa moze tako bilo gde (refleksija, itd) da se proveri..

Inace, tvoje pominjanje ad hominem nesto mi ne pase, s obzirom da si poceo gore sa ovakvim stvarima, sigurno ne ja, npr: "Mislim, ja kapiram da ti to znaš, pišem ovo zbog omladine koja ovo čita...", pa onda mali Perica i tako dalje.

Druga je stvar sto ti ne umes da ukapiras da bi neko proverio da li objekat podrzava skup funkcija pre nego bi pozvao neku funkciju.. Tvoj problem.

Znaci nakon sto pocnes prvo nekog da ismejavas, iako upravo ti gresis, sad jos i lazes i meni pripisujes takvo ponasanje prvom. Lepo.

Interesantno da kad ti nesto tebas da isprogramiras, neku pomocnu funkciju, onda to nije problem, a? Ali ako u Javi ili PHP-u treba da se malo programira, onda je to "sve samo ne elegantno, ekspresivno, itd".

PHP podrzava interfejse, koliko mi se cini :)

Imam i ja savet za omladinu: pre nego pozovete neku funkciju, ne bi bilo lose znati da li funkcija uopste postoji na objektu.



Inace, imamo deal, ja cu tvoje poruke ubuduce da ignorisem, pokusaj i ti moje.

jablan
18. 02. 2010., 23:31
Ali ako u Javi ili PHP-u treba da se malo programira, onda je to "sve samo ne elegantno, ekspresivno, itd".
Dakle, ti tvrdiš da ne postoje manje i više ekspresivni jezici? Pa C# je živi primer jezika koji je u poslednjih 10-ak godina prošao kroz par verzija, svaka je za magnitudu ekspresivnija od prethodne. Možda treba da probaš da ubediš ljude iz MS-a da su se džaba cimali, jer je sve to isto...

PHP podrzava interfejse, koliko mi se cini :)
Verovatno ovdeprisutni PHP-ovci ne mogu da žive bez njih, koliko su korisni... :)

Imam i ja savet za omladinu: pre nego pozovete neku funkciju, ne bi bilo lose znati da li funkcija uopste postoji na objektu.
Ovo zapravo i nije preterano dobar savet... U originalnoj OO paradigmi, metode (odn. kako ih ti zoveš, funkcije) samo su "uputstva" objektima kako da obrađuju poruke koje dobijaju od drugih objekata. Pojmovi sa kojima se zapravo barata su poruke, a ne metode. U tom smislu, uopšte nije neophodno da objekat ima definisanu metodu da bi znao kako da hendluje neku poruku koja mu je upućena.

Inace, imamo deal
Bojim se da ga nemamo. :)

ivanhoe
19. 02. 2010., 00:51
Nemoj ti meni kako bi se implementiralo u JS pomocu "objekti u JSu su asocijativni nizovi", pa moze tako bilo gde (refleksija, itd) da se proveri..

heh, mene je jednom prilikom, u vreme news grupa, Douglas Crawford iznapusaovao kad sam nekom nesto pomagao i upotrebio izraz asocijativni niz za neki objekat ... ne, molicu lepo, JS nizovi su objekti koji samo simuliraju pristup preko sintaxe za asocijativne nizove... bem li ga ako znam i danas koja je fundamentalna razlika, ali posto je on u medjuvremenu postao velika JS faca, rekoh da se pohvalim da mi je odrzao lekciju :P

degojs
19. 02. 2010., 02:20
Pa tako cu i ja jednog dana da se hvalim da mi je jablan rekao

metode (odn. kako ih ti zoveš, funkcije)

Jer, ko je ikad video tu kljucnu rec u npr. JavaScriptu? Ma nema, prividja mi se.. func.. sta?

ivanhoe
19. 02. 2010., 21:53
hehe, kad smo vec kod price o JS, jeste videli WTFJS (http://wtfjs.com/page/2), ima stvarno umobolnih stvari u javascriptu...

EDIT: Jel moze neko da mi objasni kako se ovo desava?

(x=[].reverse)() === window // daje true
([].reverse)() === window // daje naravno false

ivan.skugor
21. 02. 2010., 17:14
E sad, ako neko planira da pravi web verziju photoshopa u js

http://mugtug.com/sketchpad/

:1074:

ivanhoe
21. 02. 2010., 17:33
ima sam pre na pameti neke filtere tipa Unsharp mask :)

kodi
21. 02. 2010., 19:15
uh, pa to je matoro...
http://www.nihilogic.dk/labs/imagefx/

2008. valjda.. :D