Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
Ajmo malo ozbiljnije :)

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side
View previous topic :: View next topic  
Author Message
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 01.09.2008 22:18    Post subject: Ajmo malo ozbiljnije :) Add user to your forum ignore list Reply with quote

Stvarno nisam znao kako pametnije nazvat temu, tak da j**i ga Wink

Ok, imam jednu ideju koja mi se vrti po glavi vec duze vrijeme, ali me zanima koliko je smislena u teoriji, a uz to mozda ova tema potakne malo ozbiljnije rasprave o web programiranju na ovom podforumu, cega vec duze vrijeme fali.

Ne znam koliko se od vas bavi razvijanjem u ruby ekosistemu, ali postoji jedna stvar koja je jako kul i sexy Wink a to je rSpec story runner (ili cucumber), koja se trenutno koristi za testiranje koda, a kojuubi ja volio probati iskoristit za generiranje koda.

Ideja je da napišeš "story" o tome od čega se site/projekt sastoji, znači definiranje domain/application dijela aplikacije u tekstualnom obliku. Nakon toga, parser bi iz toga generirao modele, napravio nekakav pametan auto discovery relationshipa i iz svega toga generirao bazican REST server koji bi zapravo bio pametniji interface prema bazi ili repositoriju podataka (idealno bi bilo imati plugable backende za razne baze ili tipove persistent storagea (mysql, bigtable, simpledb ili couchdb...svejedno).

Taj REST server bi sadrzavao svu bazicnu application/bussines/domain logiku, ukljucujuci validaciju, generiranje XML ili JSON responsea, routing i sve ostalo, i bio bi zasebni entitet kojem bi pristupali preko REST api-a i frontend (site) i backend (admin aplikacija)

Trenutno mi je cilj napraviti taj generator za PHP paltformu, pa me zanima jel ima ko kakvu pametnu ideju ili kritiku.

Note: ovo je trenutno čisti vaporware, i postoji velika vjerojatnost da će i ostati, ali stvarno mi treba neki offprojekt na kojem ću zapravo programirati neki ku**c Wink

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
Adrian



Joined: 02 Apr 2004
Posts: 692
Location: Around & about

PostPosted: 02.09.2008 01:42    Post subject: Add user to your forum ignore list Reply with quote

Da, prema tako nečemu smo se mi namjerili usmjeriti razvoj treće verzije Butlera.
Cakephp je inicijalno bio neki "port RoR-a na PHP" ali je solidno razvijen u svom originalnom smjeru. Ne znam da li si vidio no njegov "baker" aplikacija je super stvar, pogotovo ako se namjeriš izmjeniti template i proširiti ga sa framework na application razinu koda koji producira.

Opisi su zajebana stvar, mislim da oni nisu toliko bitni, iliti, možeš kroz konzolu (baker) u 5 minuta izdefinirati modele i odnose među njima. Samo ju treba još natjerati da radi taj neki REST-an, apijevski, modularan kod i imaš nešto premoćno.

Moja teorija je da se može to postići ako staviš na papir, izdefiniraš sve moguće slučaje vrsta podataka i funkcija koje ti mogu trebati, prepoznaš nekih n patterna i onda ih složiš kao dodatne template (cijeli mvc za front i back u kompletu kao template)... poslije samo štancaš jedan od tih...

možebit kenjam, al ako budem dovoljno uporan, utrošit ćemo mi neko vrijeme ganjajući takav nekakav gral u idućem doglednom periodu vremena.

Al tema je ko prstom u govno u ovo doba... Laughing

_________________
The quest for certainty blocks the search for meaning. Uncertainty is the very condition to impel a man to unfold his powers.
http://origami.hr
Back to top
View user's profile Send private message Visit poster's website
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 02.09.2008 07:50    Post subject: Add user to your forum ignore list Reply with quote

Hm, htio bi izbjeci definiranje modela u klasicnom smislu, Zato sto jedan resource se moze siriti preko vise modela (SQL tablica). Zato bi htio taj dio napraviti higher level tako da se pristupa resourceu, a ne direktno modelu.

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
jojo



Joined: 27 Jan 2005
Posts: 1591
Location: insula aurea

PostPosted: 02.09.2008 08:22    Post subject: Add user to your forum ignore list Reply with quote

samo ću konstatirati da ovom forumu zaista fali sulien. otkad njega nema sve je manje i sličnih tema...

_________________
deviant / malomorgen / videoholik / cimer fraj
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
fun.ky



Joined: 05 Jan 2006
Posts: 365
Location: Mostar

PostPosted: 02.09.2008 08:59    Post subject: Add user to your forum ignore list Reply with quote

Do prije par mijeseci smo aktivno koristili cakephp, ali sada smo razvili svoj framework XER (čita se ekser Smile - PHP i JS framework) , uskoro će izaći prvi veći portal razvijen isključivo sa XER-om).

Također planiramo da ga izbacimo kao open source, a zašto je bolji od trenutne konkurencije:
- Više jezičnost podržana u jezgru frameworka (vezano za više jezičnost, možete definisati ako nema prevoda na odabranom jeziku, dali da vam vraća osnovnu verziju ili ne)
- Validacija se podesi na kontroleru i automatski se validira i na klijent i na server strani.
- Svi pozivi koji idu reko XER.Ajax-a se registriraju i automatski se vraća samo osnovni izgled (bez layout-a), a ukoliko se JS isključi na browseru, poziv se normalno izvršava i opet su informacije dostupne.
- Način na koji su prevodi riješeni (što se tiče baze) je optimiziraniji već na ostalim frameworcima na kojima sam radio.
- Sigurnost je riješena na jednostavan i siguran način, na grupi korisnika ili korisniku definirate koje akcije smije izvršavati a koje ne.
- Dobro riješene rute
- Prevodom naziva modula i akcije se automatski prevode i rute, tako da ako imate articles modul gdje se nalazi akcija view prevodom kontrolera dobijete
hr/vijesti/clanak
en/articles/view

odnosno ako vam stranica nije više jezična, onda za podešeni jezik i za prevod koji želite dobijete rutu bez prefix-a jezika
vijesti/clanak/naziv-clanka

odnosno ako želite da ne stoji ni vijesti ispred možete imati
clanak/naziv-clanka

Napravljen je i XER.ORM tako da se insert i updatei podataka u bazu radi na isti način $this->Model->save($objekt);
ako u objektu pk ima vrijednost onda je update, ako ne onda je insert po default-u

Čitanje podataka iz baze i pretvaranje u objekat je dosta jednstavno isto: $obj = $this->Model->find($uslov);
Sve ovo opet daje / spašava podatke na osnovu odabranog jezika.

+ cijeli framework je težak 200KB - php 160, js 40 i oboje je napisano Objektno orijentisano.

- Možda sam otišao od teme, al mislim da je dobro da sam i ovo predstavio Smile

_________________
There is no style definition for good music!
Back to top
View user's profile Send private message Visit poster's website Twitter profile
Adrian



Joined: 02 Apr 2004
Posts: 692
Location: Around & about

PostPosted: 02.09.2008 09:43    Post subject: Add user to your forum ignore list Reply with quote

@fun.ky:
Da, ne zvuči loše, no sve to se može s cakeom dobit, a opet moći koristit masu novih stvari koje izlaze za cake.

Inače, većinu tih stvari smo mi izbrijali na cakeu na cms razini.

No, ovdje je više riječ o nekom ekstremno brzom i kvalitetnom razvoju aplikacija iliti apstraktnijem načinu proizvodnje koda, ne o ajax funkcionalnostima koje podržava takav kod.


@retro_one:
Čuj, to se može fino i preko modela, samo ga definiraš bolje. A i više mi zvuči da je direktan pristup sadržaju lower level nego higher level. Ili nisam dobro shvatio što misliš pod "direktan pristup resourceu"?
Gdje bi vršio validaciju (automatsku validaciju), održavanje relacija među tablicama i sl.?

_________________
The quest for certainty blocks the search for meaning. Uncertainty is the very condition to impel a man to unfold his powers.
http://origami.hr
Back to top
View user's profile Send private message Visit poster's website
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 02.09.2008 09:52    Post subject: Add user to your forum ignore list Reply with quote

Validacija se radi na modelu naravno, ali ono na sto sam mislio je da treba izbjegnut 1:1 mapiranje resourcea na tablicu (mislim da je i Damien Katz - autor CouchDB-a pisao o tome), zato što resource može preko relacija (has_one, has_many) postojati u više tablica.

Tu dolazi onaj dio o pluggable backendima prema persistent storageu, tebi se ne bi ništa na REST interfaceu promijeniti ako se prebacis sa mysqla na couchdb ili neki drugi persistent storage.

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
Adrian



Joined: 02 Apr 2004
Posts: 692
Location: Around & about

PostPosted: 02.09.2008 12:41    Post subject: Add user to your forum ignore list Reply with quote

Ti si probao cakephp koristit?

_________________
The quest for certainty blocks the search for meaning. Uncertainty is the very condition to impel a man to unfold his powers.
http://origami.hr
Back to top
View user's profile Send private message Visit poster's website
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 02.09.2008 12:56    Post subject: Add user to your forum ignore list Reply with quote

Jesam, ali dosta davno, i imao sam osjecaj da previse pokusavaju glumiti ruby kroz php, ne znam mozda su se stvari promijenile sad.

Ali, totalno si krivo shvatio smisao ovoga. Ovo ne bi bio full stack MVC framework, nego bi bio nabrijaniji Model layer. Znaci oces pristupati tome iz curla ili iz Cake php aplikacije, meni svejedno. Htio bi imati sav domain logic na jednom mjestu, kojem se moze pristupiti iskljucivo preko REST apija. Isto tako bi napravit high level fieldove koji bi se mapirali u bazi na osnovne fieldove (integer, varchar ili datetime), ali koji bi uz to imali zakacen nekakav behavior (npr. PhoneNumber field, koji radi validaciju formata automatski). Generator bi napravio i client side i server side validaciju (počeo sam raditi na JS libraryu koji validaciju radi na objektu, a ne na fieldovima, ako te zanima mogu staviti url). View dio ne bi postojao, nego bi se za to brinula aplikacija koja bi imala svrhu "presentera".

Takav pristup bi omogućio potpun separation of concerns, i omogućio bi neograničenom broju razlicitih aplikacija da pristupa istom domain modelu.

Naravno, treba vidjeti kako bi to funkcioniralo u praksi, ali cini mi se kao zanimljiva ideja za istrazivanje Wink

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
Adrian



Joined: 02 Apr 2004
Posts: 692
Location: Around & about

PostPosted: 02.09.2008 14:08    Post subject: Add user to your forum ignore list Reply with quote

Jesu krenuli s tom spikom, da, ali su dosta stvari veća napravili i inercijom su otišli dosta dalje već od ror-a.

Nisam ni shvatio tvoju ideju kao mvc framework, samo mi je malo nejasno s čime/kako bi implementirao takav model, iako zvuči odlično. Zvuči mi kao da će tek onda trebati još razviti masu ostalih stvari koje bi vrtile ostalu logiku/prezentaciju a koje bi mogle efikasno surađivati s model layerom. Malo je to sve skupa kompleksno za razgovor bez pive i pljuge... Smile

JS validacija je zakon za podić UI na neku bolju user-friendly razinu, ali opet, kako raditi tu istu validaciju kad nema JS-a? Da li bi složio da se validira na model-layeru na serveru prema predefiniranim pravilima ovisno o vrsti high-level fielda, pa da se JS nakači na to i napravi istu stvar samo direktno u browseru, ili?

Baci link, da se igramoooo.... baš me zanima kako radi... thnx

_________________
The quest for certainty blocks the search for meaning. Uncertainty is the very condition to impel a man to unfold his powers.
http://origami.hr
Back to top
View user's profile Send private message Visit poster's website
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 02.09.2008 14:20    Post subject: Add user to your forum ignore list Reply with quote

http://github.com/retro/javascript-object-validator/tree/master

najbolje ti je pogledati testove da skuzis kako radi, ali to je jos uvijek proof-of-concept kvaliteta Smile

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
fun.ky



Joined: 05 Jan 2006
Posts: 365
Location: Mostar

PostPosted: 02.09.2008 14:30    Post subject: Add user to your forum ignore list Reply with quote

Adrian wrote:
....JS validacija je zakon za podić UI na neku bolju user-friendly razinu, ali opet, kako raditi tu istu validaciju kad nema JS-a? Da li bi složio da se validira na model-layeru na serveru prema predefiniranim pravilima ovisno o vrsti high-level fielda, pa da se JS nakači na to i napravi istu stvar samo direktno u browseru, ili? ....


To je već što sam naveo da imamo u frameworku i radi baš na taj način (kada ima js onda ide na klijent strani, a na server strani se izvršava svakako, korisniku je prikazana na isti način informacija, bez obzirao išao na server po to ili ne)

Znači šta sada vi želite ovdje, nešto što će generisati code, ili Bussines logic layer koji će vrtiti svu logiku aplikacije i opsluživati presenter sa tim informacijama...

_________________
There is no style definition for good music!
Back to top
View user's profile Send private message Visit poster's website Twitter profile
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 02.09.2008 14:33    Post subject: Add user to your forum ignore list Reply with quote

fun.ky wrote:
Adrian wrote:
....JS validacija je zakon za podić UI na neku bolju user-friendly razinu, ali opet, kako raditi tu istu validaciju kad nema JS-a? Da li bi složio da se validira na model-layeru na serveru prema predefiniranim pravilima ovisno o vrsti high-level fielda, pa da se JS nakači na to i napravi istu stvar samo direktno u browseru, ili? ....


To je već što sam naveo da imamo u frameworku i radi baš na taj način (kada ima js onda ide na klijent strani, a na server strani se izvršava svakako, korisniku je prikazana na isti način informacija, bez obzirao išao na server po to ili ne)

Znači šta sada vi želite ovdje, nešto što će generisati code, ili Bussines logic layer koji će vrtiti svu logiku aplikacije i opsluživati presenter sa tim informacijama...


Da, vidio sam, ali to je samo mali dio funkcionalnosti koji me zanima, to je vise convenience nego killer feature Smile

Ako nije problem da objasnis na koji nacin to rjesavate, jel imate nekakav convert iz php u js ili što? Kako riješavate kompleksniju validaciju, npr. ako je ispunjen parametar "A", validiraj parametar "B", koji je u suprotnom optional field?

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
klompa



Joined: 10 Oct 2006
Posts: 164

PostPosted: 02.09.2008 19:32    Post subject: Add user to your forum ignore list Reply with quote

retro_one wrote:
Kako riješavate kompleksniju validaciju, npr. ako je ispunjen parametar "A", validiraj parametar "B", koji je u suprotnom optional field?


maybe nesh tipa- --

<script>
var action = confirm ("....");
window.location = "B.php?action=" + action;
</script>

dok bi u B.php, stajalo nesh tipa:

<?php
if (action) {
/* Do something */
}


else {
/* Do something else */
}
?> Wink
Back to top
View user's profile Send private message
fun.ky



Joined: 05 Jan 2006
Posts: 365
Location: Mostar

PostPosted: 02.09.2008 20:14    Post subject: Add user to your forum ignore list Reply with quote

Quote:
Ako nije problem da objasnis na koji nacin to rjesavate, jel imate nekakav convert iz php u js ili što? Kako riješavate kompleksniju validaciju, npr. ako je ispunjen parametar "A", validiraj parametar "B", koji je u suprotnom optional field?


Kada kreiramo neko input polje koje treba validirati (inače za kreiranje svih elemenata forme koristimo svoje helper-e (klase koje pomažu za kreiranje form elementa, rada sa slikama i sl).

Iz primjera se najbolje uči, pa evo primjera kako to izgleda kod nas

Code:

echo $Html->input('user_email', array('error' => array('msg' => 'Poruka koju zelite da prikazete prilikom validacije'))

msg ispisiva poruku bez obzira o kojoj vrsti se validacije radi, a ako na polju ima više vrsta validacije i želite za svaku definisati poruku, onda ide msg-valid-email => 'Poruka', msg-not-empty => 'poruka' itd...

ukoliko je u kontroleru podešeno da se radi validacija, onda se prilikom ispisivanja input polja kreira i poziv na JS koji će validirati taj element.

u kontroleru možete podesiti

Code:

$validate = array('el_a' => array('validate_if' => array('el_b' => 'checked'), 'LENGTH' => 4, 'NOT_EMPTY')

Što opet provjerava jel zadovoljen validate_if uslov i ako jeste onda tek da vrši validaciju el_a inače ga ne provjerava.

Komunikaciju između JS i PHP validacije vršimo na 2 načina. Prvi je jednostavniji, gdje koristimo isit regex na obje strane (definisano u php-u kao konstanta recimo
Code:
$validate = array('el_a' => VALID_STRING);
)

u php-u konstantu imamo definiranu kao
Code:

define('VALID_STRING', '/^[a-zA-Z0-9_\-\.]+$/');


što generiše sljdeći JS

Code:

Validator.attach("el_a", {"userREGX" : /^[a-zA-Z0-9_\-\.]+$/});


A u drugom, naprednijem postoji mogućnost eksporta pravila, koji se definišu u php-u i poslije se izvoze kao niz pravila za validaciju za JS. Opet pišu se samo na jednom mjestu a koriste i na klijent i na server strani. Ova druga pravila su definisana za 90% mogucih scenarija, tako da se ni tu nema šta pisati, a opet korisnik ima mogućnost pisanja svoj pravila za validaciju.

_________________
There is no style definition for good music!
Back to top
View user's profile Send private message Visit poster's website Twitter profile
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 03.09.2008 08:23    Post subject: Add user to your forum ignore list Reply with quote

Hm, IMHO validacija ne spada u kontroler nikako.

Nekako mi se čini da su stvari u tom vašem frameworku previše isprepletene. Kolko sam skužio, vi na svakom controlleru koji pristupa modelu morate definirati validaciju?

Edit: Ne znam da li si pogledao ovaj link koji sam poslao na svoj Validation library, ali ono što je cilj tog librarya je da se napravi i decoupling Validacije sa forme, tako da se i sa clientske i sa serverske strane validacija radi na objektima. IMHO to je puno čišći i flexibilniji način.

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
fun.ky



Joined: 05 Jan 2006
Posts: 365
Location: Mostar

PostPosted: 03.09.2008 08:47    Post subject: Add user to your forum ignore list Reply with quote

Trenutno je u kontroleru, i ja se slažem da bi trebala biti na model-u, al nisam bio zadužen za taj dio, tako da je trenutno na kontroleru, a svakako je plan u narednim danima validaciju prebaciti na model.

Kako misliš da su stvari previše isprepletene, nisam siguran na što točno misliš,a da - trenutno validaciju moraš definisati na svakom kontroleru (ako je želiš koristiti).

Framework je još u alpha verziji tako da ima mjesta za napredovanje sigurno - i bit će ispravki dosta do beta verzije Smile

Pogledao sam tvoj validator, i sve mi je to ok, samo postavi primjer sa formom pa da vidim kako ustvari radi.

Poz

_________________
There is no style definition for good music!
Back to top
View user's profile Send private message Visit poster's website Twitter profile
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 03.09.2008 09:09    Post subject: Add user to your forum ignore list Reply with quote

fun.ky wrote:
Pogledao sam tvoj validator, i sve mi je to ok, samo postavi primjer sa formom pa da vidim kako ustvari radi.

Poz


Složim neki primjer danas Wink

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group