Framework romanesc!?

Ai un proiect pe care l-ai realizat în PHP? Doreşti să propui un proiect pe care să îl realizăm în cadrul comunităţii?

Moderatori: cristi, icsfails, Moderatori

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 09, 2008 9:40 am

dechim scrie:@mihaitha rogu-te (poate nu-i chiar offtopic) detaliaza un pic
"Strong Type Hinting, God-like power pentru programator ". Cu referire la framework. Ms

$a = new S ('asta_e_un_string');
$a->replaceToken ('e', 'a_fost_si_va_ramane');
$a == S ('asta_a_fost_si_va_ramane_un_string');

Pe scurt:
- in loc de tipurile de date normale, fw-ul accepta tipurile de date: O, B, I, F, S, R (object = can contain all, boolean, integer, float, string, resource) si inca cateva tipuri de date complexe, asupra carora actioneaza.
- ce se elimina: verificari peste verificari de variabile (method entry contracts) si bug-uri de inter-method communication. ($b->metoda ($a->altaMetoda)) ... insa $b->metoda se asigura ca $a->altaMetoda ii returneaza tipul de data CORECT, altfel apare mesaj de eroare si identificam bug-ul: DIN FAZA DE PROGRAMARE, ba chiar design as putea spune ... lucru care:
- adauga: enooooooorm de multa stabilitate cu performance loss neglijabila. (e 5/10x mai incet, dar faptul ca nu se face nici o copiere de valoare, totul fiind pasat prin referinta, exceptie cand s-ar clona obiectul si tehnicile de cache elibereaza serverul de stres, ducand aplicatia aproape de performanta codului nativ)

De ce o abordare de genul: programatorul se concentreaza asupra a ceea ce face metoda nu asupra faptului ca tre sa verifice ca un parametru sa fie de "tipul de data cutare" ... Intr-o aplicatie scalabila aceste verificari vin ca o nevoie naturala, la care noi raspundem deja, iar bugurile din acest domeniu se auto-raporteaza.

Luam caz:
$c->metoda1($b->metoda2 ($a->metoda3 ($param)));

metoda3, trebuia sa retunreze un integer catre metoda2 din b, insa s-a schimbat ceva intre timp si in loc sa returneze un string castable, codul e facut de asa natura incat returneaza un string, care casted da mereu 0, ceea ce face ca $c->metoda1 sa nu se executa normal, sau sa se execute, dar ciudat ...
Cat timp ar lua sa gasim un astfel de bug? Enorm. Cui i-ar fi trecut prin cap ca undeva $a->metoda3, nu mai intoarce ce trebuie.
Ce se intampla in cazul nostru: in momentul in care programatorul a schimbat return-ul in altceva decat ce asteapta $b->metoda2, BIG GREEN SCREEN OF DEATH la imediatul refresh. Asta ajuta la identificarea bug-ului cu 0 brain-power, lucru care e o efectiva placere sa ai un cod care stie sa se diagnosticheze singur.

Hope I was enlightening ... :) Cautati SPL_Int, SPL_Bool, un modul PECL dezvoltat de Marcus Boerger @ co-auther of PHP, si veti intelege de ce s-a mers pe acest tip de abordare. (think of the possibilities)


Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

dechim
Senior Member
Mesaje: 1486
Membru din: Mar Mai 10, 2005 11:53 pm
Localitate: Drobeta Turnu Severin

Mesajde dechim » Dum Noi 09, 2008 2:53 pm

Multumesc
Da' in cazul : $c->metoda1($b->metoda2 ($a->metoda3 ($param)));
daca metoda3 nu mai intoarce ce trebuie si metoda2 "nu-si da seama" inseamna ca e prost conceputa, cum adica (!?!) ea (metoda2) nu-si verifica parametrii inainte de ai folosi ? Uneori este nevoie sa se verifice parametrii chiar mai precis, fiind un subset din tipul de baza.
Nu vad nici un avantaj prin asta in cazul dat, totusi, daca inteleg bine, o variabila declarata de un anume tip si-l pastreaza pana la un cast explicit si daca este folosita neadecvat intr-o expresie "sistemul" returneaza eroare. Daca-i asa e "wow" !
Iar referitor la tipurile de date consider ca limitarea la un subset nu-i tocmai un lucru de laudat, pierzi din mobilitatea pe care o are PHP-ul doar pentru ca sunt destui programatori care folosesc un numar restrans de tipuri. Daca voiau, cei ce au conceput PHP-ul, sa nu fie asa foloseau C-ul ca scripting, nu se mai complicau cu inca un limbaj.
Facand asta framework-ul nu va fi universal, el se va preta numai la un anumit tip de aplicatii.
Si acum sa ma contrazic: as renunta la integer si float si as folosi NUMERIC(NR_DIGITI_INTREG,NR_DIGITI_ZECIMALE), in caz de overflow as emite avertisment.
@Abbadon, n-am criticat si sper sa nu te deranjeze ce am zis, mi-am spus parerea care-i controversata si in mintea mea.
Dati-i bataie, rau nu poate fi !

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Dum Noi 09, 2008 8:38 pm

1. sunt de acord cu RA. Dar nu sunt de acord cu ideea de logo a lui Abbadon, mai degraba m-as gandi sa fie ceva derivat din asta:
Imagine
(the eye of Ra). Anyway, astea sunt deja detalii minore.

2. dechim, sunt de acord ca pierzi flexibilitatea specifica PHP-ului prin Soft Type Hinting, dar poate cu acest framework poti atrage programatorii care au lucrat pe limbaje Strong (ASP.NET, JSP) spre PHP...

3. cu ocazia asta mi-a mai venit o varianta de nume in mecla: "Bridge"

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 09, 2008 9:45 pm

Ya, I know. That's the revolutionary part. :) Sunt greu de inteles unele avantaje, pana cand programatorul nu se afla in fata unei aplicatii medii/mari, unde, o metoda care sa fie bug-proof e automat ceruta.

Aici intervine si experienta. Prima versiune n-a avut suport pentru tipuri de date, iar codul a inceput sa escaledeze rapid, ceea ce a facut sa se repete ideea de 'method-entry-contracts' in fiecare metoda, lucru care a dus la o verificare si reverificare de parametrii de care ar fi fost nevoie doar o singura data: la intializare si la schimbarea valorii ...

Ce vreau sa spun cu aceste method entry contracts:
- daca $b->metoda ($a->altaMetoda) ... atunci pentru a fi sigure legat de tipurile de parametrii primite $b->metoda si $a->altaMetoda fac ceea ce se numeste 'method entry contract' adica, if (is_int ()) sau ce tip de parametru asteapta si alte verificari. Asta inseamna ca pt. un lant de 10 metode care se cheama intr-un context se fac 10 verificari de parametrii (oh my God) iar valoarea este in mod normal transmisa prin copiere, nereferentiata.
- in loc sa se mai puna if (is_int ()) sau eu stiu ce alte verificari de genul, programatorul castiga flexibilitate in gandire. Stie ca sistemul ii va raporta eroarea de parametru, si scapa de verificari inutile si 'return FALSE' la sfarsit de metoda. Din experienta dezvoltand fw-ul am observat ca avand incredere in sistem ca-mi va raporta acest tip de bug-uri, m-am concentrat numai pe aspectul de "business logic" al codului, decat pe verificari inutile de parametrii de care am scapat prin STH.

Oricum, in concluzie, se poate argumenta pro si contra. Insa trebuie sa recunosc, dpdv. al logicii unui cod, mi-a fost mai simplu sa dezvolt o aplicatie stiind ce parametrii primesc si tipul lor de data, in timp ce stiam ca sistemul se va ocupa de raportea bug-urilor.

Ah, pe langa asta: avand obiecte cu rol de tipuri de data in loc de tipuri de data concrete, avem urmatorul avantaj:
- sa zicem ca avem un algoritm generic care face o criptare cu seeding pe un string;
- sa zicem ca acest algoritm are 3, 4, 5 functii cu if-uri, cu for-uri, cu dude ...
- ne-ar trebuii cateva functii PHP (spaghetti code) ca sa le implementam;
- oare nu e mai usor $a->metodaAiaCareCripteaza ($param) ... ?! Si atunci: oferim un pachet de servicii complet :) ... algoritmi comuni cuplati cu tipul de data asupra caruia actioneaza. (conceptul e mai mult valabil in cazul array-urilor, dar ca idee)

Eh si alte avantaje. :) Sunt si dezavantaje, ca la orice fw de altfel, dar nesemnificative in comparatie cu avantajele.

Pfiu ... am obosit scriind.

Apropo, 3 voturi pt. RA. Cred ca deja se stie numele. Care se baga la realizarea unui logo .svg (ca sa-l putem exporta la diferite dimensiuni) ... ?! Cea mai buna idee e ca RA sa se inteleaga din "ochiul lui Ra" ... sa fie usor lizibil ... :)
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 09, 2008 10:33 pm

Imagine
Imagine
Imagine
Imagine
Imagine
Imagine
Imagine
Imagine
Rezolutie max:
- 4096, am si SVG-ul deja facut.
- variante salvate, non blurred, black color;
- de aici s-a putut pornii pe varianta colorata: rosu, galbe, albastru.

Ce e cu soarele din logo? E de fapt un "Gear" din Inkscape (SVG drawing program) si se potriveste cu ideea RA == Gears, mecanism, masinarie, stuff. Gen 'KDE Gears' ... :) face cumva sa se lege "the eye of RA", de "fw-ul RA", prin faptul ca "gears" de obicei ofera la subinteles ideea de automatism, de masinarie.

Astept pareri despre logo ... Care din ele e mai reusit? :)

Apropo, un motto pentru ca tot am mentionat ca ideea fw-ul e revolutionara, ar putea fi ceva in genul la:
- revolutionary architecture;
- revolutionary algorithms; (my vote for this one)

My respect for Birkoff si ideea lui pt. "RA" :) ... >:D< :)

Va rog votati care din cele de mai sus sa fie logo-ul ...
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Lun Noi 10, 2008 9:42 am

Cand ti-am dat link-ul spre eye of Ra m-am gandit la ceva mai subtil, eventual ochiul in interiorul unui soare/gear/whatever. Inchipuie-ti ca faci un favicon de 16/16 din sigla asta - se mai intelege ceva?

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Lun Noi 10, 2008 11:01 am

Pt. favicon nu trebuie sa fie neaparat EXACT aceasi sigla. Plus ca n-am folosit link-ul de mai sus ci un SVG de pe Wikimedia Common, pe care am inceput pe urma sa-l modific.

Iar aici sunt niste propuneri. You can vote on which one you like ...

Apropo, am luat ultimul logo, pus la 16 x 16 si n-a iesit prea rau (scuzati transparenta, me on Linux + Compiz Fusion effects):

Imagine
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Lun Noi 10, 2008 11:47 am

corect, nu arata rau.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Lun Noi 10, 2008 5:04 pm

Legat de inteles, trebuie doar sa se vada ca seama ca forma cu logo-ul marit. Ce e bine momentan e ca avem un nume si putem alege un logo si o descriere a initialelor R.A.

Ok: lucruri stabilite:
- azi cumpar domeniul, o sa vad ce tipuri de nume am la dispozitie. Daca nu pot lua ra.ro/ra.org (neaparat vreau ceva simplu sa fie usor memorabil), vor incerca variantele lungi raphpframework.ro/raphpframework.org ...
- pana Vineri v-a fi online, atat site-ul, linkurile de donwload, accesul read-only @ SVN, un forum de discutii pt. cei ce vor fi promovati la rangul de comitteri pe cod si alte tipuri de utilizatori (rakimon is the boss, pe mine ma doare capul sa stau sa fac community management).

Am rugamintea la cei ce citesc acest thread sa-si dea cu presupusul fata de variantele de logo sau daca n-au ce face si mor de plictiseala, sa-si arate ei creatiile. Daca nu, voi alege eu unul.

EDITAT:
- am achizitionat domeniul: raphpframework.ro (variantele scurte gen ra.ro n-au fost disponibile). Ar fi trebuit .org, insa e dezavantajos ca pret sa platesc anual o taxa pt. domeniul .org, facand calculul ca o sa traiesc 60 de ani de acum inainte. Domeniu .ro e lifetime :P (how long that may be) ... De asemenea, cunvintele "php" si "framework" speram sa ajute la clasarea buna in rezultate pentru cei ce cauta "php framework" :) ... Asta legat de partea SEO friendly ...

Altfel zic, lucrurile merg, pas cu pas ... Asta mi-aduce aminte de o veche zicala: "You can't rush genius at work!" :D
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Mar Noi 11, 2008 7:32 pm

Bifam:
- domeniu: DA
- hosting: DA (shared, dar are prioritate, deoarece imi apartine serverul)
- website: in dezvoltare Rakimon inca (faze finale). Trebuie sa reiau discutiile cu el si sa le puna ce-a lucrat pe web.
- echipa: din cei prezenti, DA. Ii voi contacta individual pentru utilizatori/parole.
- hei :) chiar mai asteptam oameni. Ma bucur ca usor, usor lansam codul asta sub GPL pana la sf. de saptamana si ca starnit deja un minim de interes.

:) Slogan de la C.E.C.: "Hai ca se poate ..." :). Interesant sa vezi ca si in Romania mai sunt cativa oameni de calitate care isi pot dedica 5% din timp unor proiecte open-source.
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Mar Noi 11, 2008 9:10 pm

recomandare

1. ia spatiu si la http://sourceforge.net/ si tine la ei svn-ul
2. gandeste-te la distributia sarcinilor pentru proiect, cine se ocupa de cutare si cutare, cine se ocupa de intretinerea site-ului, de traducerea textelor, cine se ocupa de dezvoltare, cine se ocupa de testare etc...
documentarea codului daca ai baieti buni care stiu sa scrie cod si remarci de calitate, o poti face automat cu phpdocumentor...
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Mar Noi 11, 2008 9:47 pm

Birkoff scrie:recomandare

1. ia spatiu si la http://sourceforge.net/ si tine la ei svn-ul
2. gandeste-te la distributia sarcinilor pentru proiect, cine se ocupa de cutare si cutare, cine se ocupa de intretinerea site-ului, de traducerea textelor, cine se ocupa de dezvoltare, cine se ocupa de testare etc...
documentarea codului daca ai baieti buni care stiu sa scrie cod si remarci de calitate, o poti face automat cu phpdocumentor...

Incepator nu sunt (phpdocumentor/Proj. Manag). Legat de SVN @ SourceForge, ma mai gandesc, avand in vedere ca aici am 3 tipuri de backup pe care le pot activa individual sau pe toate. (arhi-cunoscutul RAID mirror, si 2 copieri/arhivari locale si respectiv SSH remote) ...

+ ca e o diferenta intre a avea un server mentenabil aproape dedicat proiectului la care pot fi aduse imbunatatiri si alta e sa se conecteze toata lumea la SVN-ul de la sourceforge. (pe langa aspectele de conexiune, care aici ar fi metropolitane) ...

Si iti dai seama, voi discuta cu fiecare in parte care din atributii le convine, insa urmatorii pasi sunt urmatorii:
- website pus online;
- publicare download de cod;
- primele mini-tutoriale, care sa-i ajute sa inteleaga arhitectura;

Great things, take time ... sadly :P ...
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Vin Noi 14, 2008 7:26 pm

Bifam:
- domeniu: OK;
- server: OK;
- website: Va fi pus online in noaptea asta, zilele urmatoare, sa vedem;
- SVN: OK, cand se pune website-ul, SVN-ul va fi in picioare;

Yey. :) Lucrurile merg.
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 2:34 pm

SVN Read access granted @ http://raphpframework.ro/svn/RA/ ... enjoy. Website will be up soon.
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.

Avatar utilizator
Abbadon
Average Member
Mesaje: 56
Membru din: Mie Mai 18, 2005 8:59 am
Localitate: in LAMP !
Contact:

Mesajde Abbadon » Dum Noi 16, 2008 5:34 pm

S-au dat drumul la "inscrieri" (conturi de utilizator @ SVN si @email) pt. cei ce au zis "DA" invitatiei. :) Majoritatea celor care m-au contactat, au conturi de WRITE pe SVN si automat, un e-amil @raphpframework.ro
Doua lucruri m-au umplut neincetat de o isterie meta-fizica: un ceas care sta si-un ceas care umbla.


Înapoi la “Proiecte”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 17 vizitatori