Archive for August, 2009

PHP MVC

Acest articol se doreste a fi primul din seria articolelor legate de PHP MVC – ce este, de ce ai vrea sa il folosesti si pe care dintre ele, si in cele din urma, cum.

Sar peste explicarea acronimului si trec direct la “de ce MVC?”, mai exact “de ce PHP MVC?” desi ideea poate fi extinsa si la celelalte limbaje de progamare.

Ai nevoie sa lucrezi cu MVC (PHP) daca…

  • Ai o experienta destul de mare cu PHP si esti la curent cu tot ce e nou in fiecare versiune de PHP incepand cu PHP 5 (macar superficial)
  • Te-ai saturat sa copiezi acelasi HTML in fiecare pagina, ca apoi cand vine vorba sa schimbi ceva la design trebuie sa actualizezi HTML-ul din toate cele 1000 de pagini ale siteului tau
  • Te-ai saturat ca atunci cand iei cod de la un site precedent in vederea implementarii lui la un alt site, sa modifici alte zeci de linii de cod pentru a ajunge la rezultatul dorit
  • Atunci cand vrei sa schimbi o simpla interogare SQL vezi si HTML si PHP, distragandu-ti atentia si obosindu-ti ochii
  • Vrei sa te apuci serios de WebDevelopment
  • Vrei sa scoti bani frumosi din WebDevelopment
  • Vrei sa faci o forma HTML si sa o validezi, fara sa scrii nici macar un pic de HTML (unless… esti mai cu motz cum sunt eu, si trebuie neaparat sa ai grija si de artificii CSS :]), fara sa faci 1000 de if-uri care sa valideze inputul utilizatorului in vederea depistarii potentialelor atacuri si blocarii lor, fara sa ai pe aceeasi pagina atat afisarea erorilor cat si validarea inputului si de asemenea nu vrei sa mai iti pierzi timpul afisand si erorile si populand in acelasi timp forma cu valorile deja trimise de utilizator, pentru a nu-l enerva si a-l face s’o stearga de pe siteul tau pentru ca nici macar bunavointa de a-i memora in campuri ce valori a bagat nu ai avut-o (da da, ai auzit bine, exista ceva care iti va usura munca asta fooooaarte mult)
  • Vrei ca o forma HTML cu tot cu validarea ei si actiunile luate in urma acestei validari sa nu fie scrie in mai multe fisiere, cu peste 100 de linii de cod in total, ci vrei ca toata afacerea sa te coste maxim 10 linii de cod
  • Vrei sa ai codul PHP separat de HTML intr-o maniera mai organizata decat ai putea-o crea tu de la 0
  • Vrei sa faci aplicatii sau siteuri care sunt validate cu succes de W3 XHTML Validator
  • Vrei ca siteurile tale sa fie vazute cu ochi mai buni de motoarele de cautare pentru ca folosesti XHTML valid si nu un simplu HTML ciobanesc, urat si greu de citit
  • Vrei sa te acomodezi cu modul in care ti se cere sa lucrezi atunci cand te duci sa te angajezi ca webdeveloper
  • Vrei ca oricine sa-ti poata intelege codul, ca si tu la randul tau sa poti intelege mai usor codul altora, intrucat orisice chestie in PHP “pur” poate fi scrisa intr-un fel de un programator, si intr-un alt fel de un alt programator iar uneori poate fi cu mult mai greu de inteles asta in PHP “pur” decat in cazul in care cei 2 programatori s-ar folosi de conventiile unui MVC
  • Te-ai saturat sa scrii o gramada de linii de cod HTML + PHP + MySQL ca sa poti face o simpla chestie precum un login
  • … si inca odata – daca dimineata servesti PHP, la pranz servesti PHP, seara servesti PHP, noaptea servesti PHP si intre mese servesti PHP :)

Ok, stiu ca ultima poate i-a speriat pe multi dintre voi INSA NU asta ii era scopul. Ideea este ca nu te poti apuca direct de un MVC fara sa ai ceva mai mult decat cunostinte de baza in limbajul de programare respectiv.

Lista de mai sus cu “de ce MVC” o voi tot updata cu sau fara ajutorul vostru, al prietenilor etc.

Asadar, din cele de mai sus putem trage concluzia ca un MVC…

  • iti permite sa faci mai multe cu mai putin cod ca simplu programator (desi in spatele scenei se afla tone de linii de cod, si care nu sunt intocmai neimportante pentru programator, cel putin NU atata timp cat acest programator vrea mai multe de la MVC)
  • a fost proiectat intocmai pentru a spori productia si mentenanta de aplicatii intr-un timp foarte scurt
  • este mai usor de spart in bucati, de a lua aceste bucati si a le implementa in alta parte salvand timp pretios
  • este foarte util atunci cand mai multi programatori creeaza si menteneaza aplicatiile facute in stil MVC
  • ceea ce vede utilizatorul este total separat de procesarea informatiilor si stocarea datelor

Astfel ajungem si la explicare acronimului MVC.

MVC = Model View Controller. Desi sunt multe definitii oarecum complexe pe net, eu voi defini asa cum cred eu ca este mai bine si anume un ansamblu in care, la nivel de programare, ceea ce vede utilizatorul este total separat de procesarea informatiilor si de locul unde se afla aceste informatii.

Cu alte cuvinte, cand vreau sa modific felul in care se afiseaza informatia utilizatorului ma voi duce in VIEW (aici practic vorbim de simple HTML-uri, printre care se regasesc simple afisari PHP – echo-uri). Cand vreau sa modific felul in care este procesat inputul utilizatorului in vederea afisarii unei informatii ma voi duce in CONTROLLER. Si in fine, accesarea datelelor se face prin MODEL.

Altfel spus…

  • VIEW = ce vede utilizatorul
  • CONTROLLER = cum s-a ajuns la ceea ce vede utilizatorul (procesele – bazate sau nu pe inputul/informatiile legate de identitatea utilizatorului – din spatele VIEW)
  • MODEL = partea care se ocupa cu citirea/scrierea de informatii intr-un mediu de stocare (de cele mai multe ori aici ne referim la o baza de date, dar poate fi de asemenea un fisier sau un orice alta sursa de stocare deja existenta sau definita de programator)

Inainte sa incepem

Am vorbit mai sus de faptul ca nu e foarte ok sa ai 1000 de pagini care implementeaza acelasi layout, dar care este copiat in fiecare dintre aceste pagini si este foarte enervant apoi sa modifici aceste pagini cand vine vorba sa schimbi designul (lucru care poate parea neobisnuit pentru unii, sa schimbi designul).

Sunt foarte multi care folosesc un master page. Adica din fisierul index.php se indexeaza si restul paginilor, astfel vedem linkuri de genul http://exemplu.ro/index.php?pagina=contact. Daca nu ai lucrat cu un master page atunci ai face bine sa faci niste google-ing pe tema asta (PHP master page) inainte sa te apuci de MVC, pentru ca in mare aceasta varianta se apropie mai mult de acest stil de lucru.

Temerile incepatorilor sunt nejustificate

La inceput, sa lucrezi cu un PHP MVC iti poate da falsa impresie ca ceea ce faci intr-un astfel de MVC este cu mult mai greu decat ai face-o intr-un simplu fisier .php si asta deoarece codul se imparte in mai multe fisiere si – ma crezi sau nu – are logica (imi amintesc ca inca de la inceput incercam sa gasesc tot felul de hibe la stilul MVC din simplul motiv ca mi se parea greu, insa vorba lui Brancusi – “Lucrurile nu sunt greu de facut. Greu este sa te pui in postura de a le face.“)! O alta chestie pe care ii poate speria pe incepatori este faptul ca se lucreaza foarte mult cu clase. Ei bine, tot ceea ce tine de MVC-uri este OOP (objecte oriented programming), adica programare orientata pe obiecte. Desi am lucrat si prin VB si prin C++ si chiar si in PHP cu clase si obiecte, va spun ca mi-a fost frica inca de cand am aflat ca mai tot ce tine de PHP MVC e strans legat de clase si obiecte. Am ajuns insa la scurt timp dupa asta, la concluzia ca ma speriam degeaba. Chiar daca nu esti mare expert in clase si obiecte in PHP, inveti fortat si din mers despre acestea, si ma crezi sau nu, ajunge chiar sa-ti placa – nu de alta, dar sunt indispensabile si incredibil de utile :P .

Zend MVC

PHP MVC-ul pe care il recomand si cu care acum aprox. 2 saptamani am inceput sa lucrez cu el si cu care cred ca voi lucra multa vreme de acum incolo este Zend MVC. Zend MVC se foloseste de Zend Framework. Acest framework este, pe scurt, o librarie cu clase PHP pe care Zend MVC le implementeaza in scopul de a “se realiza”. Practic, Zend MVC reprezinta un ansamblu de foldere si fisiere, in intermediul carora se intializeaza “cu cap” obiecte de tipul claselor din Zend Framework, intr-o asa maniera incat programatorul, tinand cont de cateva conventii de partajare si numire a fisierelor/claselor/metodelor definite de acesta, sa poata incepe sa-si construiasca propria aplicatie.

… cam atat pentru inceput. Sunt convins ca nu v-a fost de prea mare ajutor intrucat am “aberat” mult nu am dat niciun exemplu, dar acest post este un material orientativ pe care este bine sa il recititi dupa ce gustati din exemple… asa se clarifica totul, incet dar sigur :) . Multa bafta si va mai astept p’aici :) … nu stiu inca sigur cand voi incepe, cert e ca va mai dura putin pentru ca am de gand sa-l fac cat mai usor de inteles.

Google’s utils – sau – cum poti stoca fisiere mari in contul de Gmail

Nu cred ca este cineva care sa nu-si smulga parul din cap pentru ca nu a facut backup, pana chiar si la o mica chestie. Ca multi altii si eu am pierdut multe, dintr-o simpla formatare facuta in graba sau intr-un exces de entuziasm cauzat de vreun nou sistem de operare furnizat de microshit. Dupa ce in urma cu cateva luni am pierdut cam 2 ani de munca (recuperati din fericire in cele din urma… dar nu in totalitate, ci cam 70%) si cateva mii de poze, m-am gandit serios la alternative de backup.

Am facut niste cautari serioase si am gasit cateva chestii interesante chiar la Google. In primul rand:

Google Notebook – aparent e o banalitate… dar unde alt undeva poti stoca fisiere text, retete, bancuri, liste cu filme vazute, mini todo-uri ale proiectelor samd, daca nu chiar aici si chiar cu contul tau de gmail?

Google Calendar – pentru cei care folosesc TODO’s dar si pentru cei care nu au folosit in viata lor, dar si-au impus o organizare mai buna in viata lor dezorganizata. Cel mai important aspect este ca primesti SMS-uri de la Google cu ce trebuie sa faci la ora cutare! Acum poti primi SMS inainte cu 1h sa pleci la munca/facultate/liceu/etc. Si cum romanul e al dracului de inventiv, de ce sa nu faci share la calendarul tau cu anumiti prieteni, si sa trimiti SMS-uri gratis, sub forma de task-uri?:D

GSpace – oficial, cei care au facut acest add-on pentru Mozilla Firefox nu au nicio treaba cu cei de la Google. Ca sa fiu succint: prin intermediul acestui add-on te poti folosi de cei +7GB pe care ti-i ofera Gmail pentru a-ti stoca muzica, pozele, etc. Un alt avantaj este ca poti downloada fisierele uploadate prin intermediul Gspace, chiar din contul de Gmail pentru ca aceste fisiere sunt trimise ca email-uri. Singura problema pe care am intampinat-o a fost viteza de upload, cu care sper sa nu aveti prea mari probleme… dar chiar si asa, cine iti mai da GRATIS pe net acum +7GB ?!

P.S. in mod clar am renuntat la Gspace dat fiind uploadul si mi-am cumparat aceasta jucarie in varianta de 250GB :) 160RON si face toti banii (si ca sa fiu sigur ca microshit nu’si bate joc de mine si imi sterge ceva chiar si de pe hardul asta pe care il folosesc ca backup, ii scot alimentarea cat timp nu am nevoie de el)

Site personal

In curand voi lansa mult asteptatul, mult ganditul si mult photoshopatul site personal, unde voi putea in sfarsit arunca tot felul de chestii + un portofoliu, sper eu baban :D . Un site pe care voi face serios SEO si alte chestii de genul :P .

Si prin ‘mult photoshopat’ sa nu intelegeti ca l-am facut incredibil de hightech (desi n’ar fi exclus sa schimb doar layoutul cu unul hightech pe care l-am schitat acum cateva zile) – nu. Asa e cand esti si webdesigner si webdeveloper. Mai intai fac layoutul in Photoshop, continui tot in Photoshop sa realizez modul in care va arata fiecare pagina, de la cea mai nesemnificativa pana la cea mai importanta si mai plina de continut (evident, vorbesc aici doar de continut Lipsum), ma apuc apoi de laboriasa munca de decupare a layoutului si de a transformare a lui in XHTML, si in final urmeaza codingul propriu zis.

Zend!

Ei bine, guess what – Zend Rullz!

Avand in vedere lipsa documentatiei pe tema Zend Framework, care lipseste cu desavarsire pe veb-ul romanesc (e doar o afirmatie a carei natura ‘booleana’ nu o stiu, nu am cautat, nu voi cauta, zend.com are tot ce imi trebuie), m-am hotarat sa fac ceva gen “Cum sa incepi sa lucrezi cu MVC-uri, mai exact cu Zend, care rullz!” imbinat cu “Inveti odata cu mine, invat odata cu tine” si cu “Exemple din Zend Framework + alte chestii practice”.
Evident, pentru multi povestesc aici abureli… like wtf? cine ar vrea sa stie ceva despre MVC-uri?! Ei bine sunt convins ca sunt o gramada acolo. Si desi zend.com ofera tot ce ar avea nevoie, trebuie sa ai putin capu’ mare la unele chestii, foarte multa ambitie si sa nu dormi ceva mai mult timp daca chiar vrei sa faci ceva cu el. Toate astea insa lasati-le pe mana mea.

Cu ocazia acestui post fac o noua categorie – Zend, unde voi pune tot ceea ce tine de Zend Framework, Zend MVC, Zend Studio etc.

http://www.gsmarena.com/htc_touch_pro-2413.php

I’m back :)

Dupa o scurta pauza de … hmm, 1 an si ceva? :) ) … sa zicem ca am revenit :) .

io - lacul morii

Sincer, nu-mi puneam mari sperante intr-o orisicat de mica reusita a acestui blog, motiv pentru care (sau mai bine zis, unul dintre motive) am uitat incet incet de el. De atunci insa au trecut multe, foarte multe as putea
zice. Dar asta nu conteaza asa mult. Ceea ce conteaza e ca i’m back si ‘ready to rock’ ^^. Multumesc celor de la arLug.ro, datorita carora in urma primirii unui pingback request am revizualizat acest blog si am vazut cat de mult a fost vizitat postul legat de instalarea Ubuntu – acum poate vechi si nefolositor, dat fiind faptul ca de atunci au mai aparut cateva versiuni (desi instalarea in sine a ramas cam aceeasi din multe puncte de vedere), dar cu toate astea mi-am adus aminte ca acesta a fost singurul la care am lucrat cu adevarat si se pare ca a meritat efortul.

Ce am mai facut?

Tin sa readuc aminte (mai mult pentru mine :) ) ca de cand n-am mai scris s-au intamplat multe… doar niste hinturi: bicla, bere si alte alcoale, multa carte (multa mate :x ) combinata cu actualizari in cataloage virtuale – rezultate evident cu bani de buzunar, multe ore in fata PC-ului, cateva chestii “la sentiment” :) ), niste fitness, construirea unei bicle de la 0 cu un buget de ~1600 RON – de care sunt mandru acum, ceva mai mult fitness, alte cateva mii de km cu bicla, un job de 2 saptamani rezultat cu doar 300E, alte cateva proiecte cu mult mai lejere si mai banoase decat jobul de care am zis inainte (despre care o sa vorbesc mai in detaliu alta data, cand voi detalia ce inseamna sa fii manager), ceva mai multa munca fizica care intrece orisice antrenament la sala, rezultata cu niste piese de mobilier gratis,  cateva majorate (printre care si al meu) rezultate evident cu multa mahmureala, un PDA (HTC Touch Pro :D ), milionar in datorii si plin de entuziasm sa fac rost de alti bani sa-i pot arunca iar pe prostii (oare?)… Si iata-ma deci acum si aici cu noi idealuri, pasiuni si motivatii :) … SI (repet) CHEL! (la figurat, evident).

Am mai scris in acest timp pe m4niac.wordpress.com cateva postulete si un postuloi