Arhiva pentru categoria „Programare”
Noi.respirăm (s-ar zice)
Scris pe 30 Martie 2008 la 12:43La IP am avut o libertate destul de mare în ceea ce privește alegerea proiectelor pentru care să fim notați. Iar sistemul de notare este foarte original: gradat în sume de euro (€); trebuia să obțin 150€ ca să nu-mi mai fac griji pentru restul semestrului la acest obiect și eventual să mă prezint la examen pentru a-mi mări nota finală.
Ok, aleg un proiect, caut echipă: cu Ancuța am mai lucrat la PizzaOnWeb, deci avem experiență. Mă pun pe treabă, fără să mă documentez prea bine în prealabil asupra obiectului și fără să citesc cerința printre rînduri. Oricum, scriu manual enorm de mult cod pînă ce aflu că pot folosi ceva gata făcut (un CMS, un platformă de blogging - orice). „Tare!”, îmi zic după ce scrisesem mai mult de 60% din back-end. „Nu-i nimic, măcar am cu ce să mă laud profului…”, zic gîndindu-mă la faptul că îmi va aprecia munca, stilul de a scrie cod (un singur fișier pentru back-end, cît se poate de KISS, puțin OOP) și că pot să vorbesc mult și bine despre ce și cum am făcut. Buuun…
Tema proiectului e foarte subiectivă și noi am încercat să tratăm problema într-un mod total obiectiv, fără a discrimina, deși uneori m-am trezit în paradoxuri și contraziceri foarte ciudate. În fine, nu-mi face plăcere să scriu despre asta…
Negocierea
Ajung cu saitul într-un stadiul în care putea fi prezentat, duc „produsul final” la facultate și, după ce vedem alte prezentări (nu prea reușite), urmează negocierea prețului. Băi, eu înțeleg intenția profului, de a ne forma o gîndire analitică și limbajul aferent, de a ne obișnui să ne încadrăm într-o cerință adresată într-o manieră non-tehnică, de a ne pregăti pentru a ne vinde produsul, dar a fost prea de tot. Dar să povestesc: stabilesc din start un preț de pornire de 350€, încrezător în produsul meu. Trag vreo zece minute un ultrascurt rezumat al codului și al funcționalității saitului și o las pe Anca să zică de conținut. Termină Anca și acum așteptam verdictul profului, care a urmat într-un mod total neașteptat: codul nu-l interesează, funcționalitatea și accesibilitatea nu mai sînt o problemă în ziua de azi (că tot vorbeam de discriminări), el e pro-fumat și i-ar face mare plăcere dacă țigările ar fi muuult mai toxice pentru fumători și mult mai puțin toxice pentru nefumători, nu avem mesaj, nu avem factorul șocant, nu avem aia, aia, aia… Ne-a făcut cu ou și cu oțet, cu alte cuvinte. Eu de abia mă abțineam să nu-i spun vreo două cuvinte și să-i duc aberațiile pe calea cea dreaptă, Ancuței i se umeziseră ochii, era jenant: eu vorbeam încontinuu, el vorbea încontinuu. În fine, după aproape jumătate de ceas de „negocieri” i-am spus că nu scad sub 300€ el vroia să-mi dea 150. I-am spus că „…am umplut total și exclusiv spațiul creat de cerință…”, el mi-a spus că acea cerință e formulată prost, non-tehnic (deși nu e așa) și că spiritul analitic trebuia să facă „traducerea”, cu alte cuvinte ne-am descurcat bine la o cerință formulată prost într-un mod intenționat. „Foarte fain!”, îmi zic și dau să plec, însă nu după ce am primit un „…om vedea”. Am ieșit, am dat un pumn în perete, m-am calmat, însă pe Anca a podidit-o plînsul.
Concluziile după runda întîi
- n-avem mesaj - cu toate că aveam unul (nu intru deloc în detalii) - bine, nu sîntem studenți la marketing și nu am tratat saitul ca pe un produs comercial, ci așa cum trebuia tratat, ca pe o campanie făcută de oameni pentru oameni.
- n-avem elementul de șoc - idem cu mesajul și nu am considerat că trebuie să aratăm explicit efectele fumatului pasiv (destul de macabre uneori) pentru a nu discrimina și pentru a nu înscîrbi vizitatorul
- codul nu e important - hai du-te, adică niște informație luată de pe net pusă pe un Wordpress (cca. o oră) e echivalent cu ce-am scris eu? Ok, mulțumim facultății de informatică atunci…
- accesibilitatea, interacțiunea vizitator-sait, feedback-ul, interactivitatea nu sînt elocvente - hai du-te din nou: să văd eu un nenea interesat care intră pe un sait cu scris roșu pe fundal albastru, făcut cu frameuri, scris cu monotype, serif, sans-serif și fantasy la un loc, plin de animații de prost gust, de marquee-uri și blink-uri, care merge cu chiu cu vai doar în IE, și care (culmea) conține informații banale sau furate din alte surse. Oricum, o prostie…
- indexarea în motoarele de căutare nu e importantă: printre picăturile care au umplut paharul. Păi bine, măi, dar un aflux major de vizitatori vin de pe google de pe urma căutările după cuvinte cheie: fumat pasiv, campanie, efectele fumatului pasiv etc. Nu am avut în vedere optimizarea codului și afront-end-ului, dar am folosit URL cît mai SEO-friendly, headinguri și liste imbricate pentru ierarhizare etc. Cu alte cuvinte o palmă peste bot zeului Google. Tare, nu?!
Multe alte concluzii „pertinente” notate în memorie printre multe cuvinte „de bine”.
Am negociat marți, urma să renegociem vineri (de la 18:00
- era să pierd trenul). Eu mi-am pus în gînd să nu schimb absolut nimic la sait, să nu mai scriu o linie de cod. Eram ferm hotărît, însă mi-au venit niște idei și le-am pus în aplicare. În fine, nu au fost schimbări majore (pe partea de back-end aproape deloc): un filmuleț, două imagini cu copii și cam atît.
Negocierea finală
Se pare că „schimbările” au dat roade neașteptate, pentru că am obținut cei 300€ (150 de persoană) după nici trei minute, în care i-am spus că am adăugat niște chestii noi. Atît! Am rămas mască la faza asta… Total fără comentarii.
Concluzii finale
- obiect degeaba, prof degeaba, chin degeaba, stres degeaba, nervi degeaba
- nu mai încerc să reinventez roata atunci cînd are nevoie doar de un rebranding
- echipa își are uneori rostul ei, alteori te încurcă
- nu vreau să mă fac analist software, ci programator web, CLAR?
- Komodo e un IDE bun
Produsul final
- noi.respirăm (nu cunoaște IE6 - deci NU)
- 1200 linii de cod în fișierul de bază, 300 în CSS-ul principal, cîte 60 în celelalte CSS-uri, 400 de linii jQuery (în afara fișierului framework)
- domeniul respiram.info pe numele meu
-
Tehnologii folosite :
- XHTML 1.1 (ar trebui să fie valid deși nu este din cauză timpului
)
- PHP5
- MySQL
- mod_rewrite
- JavaScript, jQuery
- CSS
- AJAX (pentru căutare)
- XHTML 1.1 (ar trebui să fie valid deși nu este din cauză timpului
- Tot codul e scris manual în Komodo Edit, imaginile sînt prelucrate în Photoshop (singura chestie comercială folosită).
Oricum, am tras destule concluzii și într-un fel mi-a prins bine.
Tehnici avansate de programare - tema 3
Scris pe 24 Martie 2008 la 16:18Temă „la cerere” :
Cerințe:
- Scrieți o aplicație care să gestioneze angajatii unei companii. Informațiile care vor descrie „obiectele” de tip angajat sînt: cod, nume, salariu.
Programul trebuie sa permită:- actualizarea mulțimii angajatilor (cel puțin adăugare)
- listarea angajatilor curenți
- salvarea acestora într-un fișier (text, binar sau xml) cu posibilitatea de restaurare
- generarea unui raport în format HTML (sau PDF, EXCEL etc) cu angajații companiei
Raportul HTML va fi de forma:
- Scrieți un program care să permită căutarea unui fișier cu un anumit nume sau care conține o anumită expresie regulată, într-un director specificat și recursiv, în subdirectoarele acestuia.
Rezolvări: Citește întreg articolul »
Tehnici avansate de programare - tema 2
Scris pe 04 Martie 2008 la 21:42Cerințe
- Clasa Rațional
Definiți și implementați clasa Rational, care să permită lucrul cu numere raționale. Clasa trebuie să conțină cel puțin doi constructori și următoarele metode :- add, sub, mul, div: adunare, scădere, înmulțire, împărțire
- simplify: simplificare
- equals, toString
- Retea sociala
Să se implementeze o Rețea socială, cu Persoane și Relații între ei (sau orice alte obiecte pe post de noduri și legături între noduri). Rețeaua trebuie să aibă metodele:- adaugă/șterge Persoană
- adaugă/șterge Relație
- numară Persoane/Relații
- conține Persoană/Relație
- obține Partiții (sau orice altă proprietate a unei rețele sociale)
- equals, toString
Comentați codul sursă și generați documentația claselor cu javadoc pentru cel puțin una din cele două probleme.
Rezolvări: Citește întreg articolul »
Tehnici avansate de programare - tema 1
Scris pe 27 Februarie 2008 la 18:26Îmi cer scuze că scriu doar despre facultate, însă doar asta mă preocupă în ultimul timp. Am un program foarte încărcat : luni, marți și miercuri zile pline, de la 8:00 la 20:00.
Că tot vorbeam de facultate, la minunatul obiect TAP se face Java, deși preferam altceva. Laboratorul îl fac cu același profesor ca și PBRul, deci e bine…
Cerințe:
-
Ciurul lui Eratostene
Să se scrie o aplicație Java care generează primele n numere prime, folosind algoritmul numit „Ciurul lui Eratostene”. n este primit ca argument la linia de comandă. Afișați timpul estimativ de execuție al algoritmului.
Să se folosească un tablou de valori de tip boolean pentru a reține pentru fiecare număr în parte dacă este prim sau nu. Pentru aflarea timpului necesar execuției unei secvențe de cod se va folosi metoda currentTimeMillis din clasa System. -
Joc de cărți
Se consideră x jucători și un pachet cu n cărți de joc. Să se scrie o aplicație care crează pachetul de cărți, îl amestecă și împarte toate cărțile jucătorilor. Cîștigă jucătorul care a primit o anumită carte „țintă”. x, n și valoarea cărții „țintă” sînt primite ca argumente de la linia de comandă. Aplicația va fi rulată de la linia de comandă.
Rezolvări:
Programare bazată pe reguli - tema 1
Scris pe 26 Februarie 2008 la 21:35Cerințe:
- Ciurul lui Eratostene
Să se scrie o aplicație Perl care determină numerele prime mai mici ca n, folosind algoritmul numit „Ciurul lui Eratostene”. n este citit de la tastatură. Se va afișa și numărul acestor numere prime.
- Joc de cărți
Se consideră x jucători și un pachet cu n cărți de joc. Să se scrie o aplicație care crează pachetul de cărți, îl amestecă și împarte toate cărțile jucătorilor. Cîștigă jucătorul care a primit o anumită carte „țintă”. x, n și valoarea cărții „țintă” sînt citite din fișier.
