No. 7, Decembrie 2012 • www.todaysoftmag.ro TODAY TSM SOFTWARE MAGAZINE

How to Web 2012 has reached its end. Thank you all for attending! Made in România Realizări și viziuni la finalul anului 2012 Istoria IT-ului Clujean (II)

SEO prin Rich Snippets Dezvoltarea software-ului financiar cerinţele platformelor de tranzacţionare Liferay Service Builder vs. Spring Roo Pledoarie pentru PHP Platforme de rulare alternative pentru PHP Windows Azure Mobile Services Startup cu bani puțini Startup - TxTFeedback Care sunt cu adevărat castraveții grădinarului ISV? 10 principii de arhitectură software(II) Persoană fizică autorizată noțiuni introductive Gogu Introducere în Grails (II) Arta & IT: depășirea cadrului convențional prin stimularea creativității

6 26 How to Web 2012 has Platforme de rulare reached its end. Thank you alternative pentru all for attending! PHP Oana Călugar Attila-Mihaly Balazs

7 29 Realizări si viziuni la finalul Care sunt cu adevărat anului 2012 castraveţii grădinarului ISV? Ovidiu Mățan Mihai Nadăș

8 31 Made in România Introducere în Grails (II) Ovidiu Mățan Tavi Bolog

10 34 Istoria IT-ului Windows Azure Clujean (II) Mobile Services Marius Mornea Radu Vunvulea

12 36 SEO - Cum putem creşte 10 principii de design CTR prin Rich Snippets? (fabulă) - partea II-a Radu Popescu Ștefan Baritchii

14 39 Dezvoltarea software-ului Startup cu financiar cerinţele platforme- bani lor de tranzacţionare putini Cristian Ruja Dragoș Andronic

17 41 Liferay Service Builder vs. Startup Spring Roo - TXTFeedback Vlad Hosu Dragoș Andronic

20 43 Leadership Persoană fizică autorizată Situaţional noţiuni introductive Andreea Pârvu Delia Coman

23 45 Pledoarie Arta & IT: depăsirea pentru cadrului convenţional prin PHP stimularea creativitaţii Ioan Bercea Delia Coman

46 Gogu si Mioriţa Simona Bonghez, Ph.D. editorial

Editorial

Ajunși la final de an, aruncăm o privire în urmă și facem bilanțul. A fost un an întreg de pregătiri, negocieri, optimizări de procese și multe planuri. O parte dintre ele le-am realizat iar altele vor fi puse în producție în perioada următoare. Am pornit cu ideea de a promova lumea IT-ului în mare parte necunoscută publicului local și cred că am realizat acest lucru. În cele șapte ediții din anul acesta am avut 160 articole și un total de 56 de autori care au fost publicați. Am avut peste 8,000 de vizitatori unici, cu un total de 27,000 pagini vizionate, în condițiile în care mulți cititori au descărcat direct revista în format pdf. În topul orașelor conduce Clujul cu aproape jumătate din numărul de acce- sări urmat de București și Timișoara. Menționez seria de evenimente organizate cu ocazia lansării revistei și care s-au bucurat de mare succes. Toate acestea nu s-ar fi putut realiza Ovidiu Măţan, PMP fără cei patru sponsori de bază: ISDC, Small Footprint, 3 Pillar Global și Endava. De [email protected] asemenea mulțumim Skobbler iar în acest număr Ullink pentru suportul acordat. Nu în ultimul rând, toate acestea nu s-ar fi întâmplat fără suportul cititorilor revistei cărora Fondator și CEO al Today Software Magazine le mulțumim! Privind în urmă, aș vrea sa enumăr și cele mai importante evenimente la care am par- ticipat și care reprezintă o referință pentru dezvoltarea de software românesc: IT Camp, Business Day Cluj și How To Web 2012. Trebuie să observ că nici unul dintre acestea nu sunt la prima ediție, ceea ce ne demonstrează din nou importanța predicției și a lecției învățate. Ce ne dorim în anul următor? Publicarea lunară a revistei, publicarea în Apple Newstand și realizarea unui nou website. Idei sunt multe și credem că vă vom surprinde în mod plăcut. Numărul 7, continuă câteva articole începute în numărul trecut: 10 principii de design și Introducere în Grails, precum și seriile Made in România și Istoria IT-ului Clujean. Avem și Realizări și viziuni la finalul anului 2012 de la trei persoane importante din business-ul românesc. Software-ul financiar reprezintă un subiect care nu a fost abordat până acum și vom încerca să avem o serie de articole pe aceasta temă. Un accent special cade pe limbajul PHP având două articole pe această tema în acest număr. O descriere a două framework-uri RAD: Liferay Service Builder vs. Spring Roo. TXTFeedback este un startup clujean. Dragoș, co-fondator al acestuia ne explică cum ne putem face un startup cu fonduri proprii minime, dar folosind diferite programe pe care statul român le pune la dispoziție. De asemenea, ne va povesti despre cum vrea să îmbunătățească servici- ile de customer support prin produsul dezvoltat de ei. Care sunt cu adevărat castraveții grădinarului ISV ne arată provocările și soluțiile business-ului clujean și nu numai. Un articol inedit este legătura între programatori și streets art printr-un eveniment specific. În încheire, vă sugerez să nu uitați de Gogu și Miorița , o lectură rapidă, agreabilă și plină de învățăminte. Sărbători fericite și multe împliniri în 2013!

Ovidiu Măţan

Fondator și CEO al Today Software Magazine

4 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Redacţia Today Software Magazine Lista autorilor numărului 7

Oana Călugar Attila-Mihaly Balazs Fondator / Editor in chief: Ovidiu Mățan [email protected] [email protected] [email protected] Customer Care Code Wrangler @ Udacity @ Weebly Trainer @ Tora Trading Editor (startups și interviuri): Marius Mornea [email protected] Cristian Ruja Andreea Pârvu Graphic designer: Dan Hădărău [email protected] [email protected] [email protected] Product Team Manager Recruiter în cadrul Endava @ ULLINK și trainer specializat în dezvoltarea abilităților si Colaborator marketing: Ioana Fane competenețelor de leadership [email protected] Ovidiu Măţan, PMP Radu Vunvulea Traducător: Cintia Damian [email protected] [email protected] [email protected] Fondator și CEO al Today Software Magazine Senior Software Engineer @iQuest Reviewer: Tavi Bolog [email protected] Marius Mornea Simona Bonghez, Ph.D. [email protected] [email protected] Reviewer: Adrian Lupei Fost senior software developer [email protected] in cadrul Nokia, în prezent Speaker, trainer şi consultant în fondatorul platformei Mintaka managementul proiectelor, Research Owner al Confucius Consulting Produs de Today Software Solutions SRL Vlad Hosu Dragoș Andronic [email protected] [email protected]

str. Plopilor, nr. 75/77 Senior Developer CTO Cluj-Napoca, Cluj, Romania @ ISDC @ TXTFeedback [email protected] Tavi Bolog Mihai Nadăș www.todaysoftmag.ro [email protected] [email protected]

www.facebook.com/todaysoftmag CTO Development lead @ Yonder twitter.com/todaysoftmag @Nokia

ISSN 2284 – 6352

Radu Popescu Delia Coman [email protected] [email protected]

economist, trainer QA şi Web designer si antreprenor @ Small Footprint

Ioan Bercea Rodica Manolache [email protected] [email protected]

Senior Web Developer Marketing & PR Specialist @ 3Pillar Global @ .msg systems Romania Copyright Today Software Magazine

Reproducerea parțială sau totală a articolelor din revista Today Software Magazine fără acordul redacției este strict interzisă.

www.todaysoftmag.ro www.todaysoftmag.com

www.todaysoftmag.ro | nr. 7/2012 5 conferințe

How to Web 2012 has reached its end. Thank you all for attending!

ând intri pe 2012.howtoweb.co, te întâmpină aceste cuvinte: How to Web 2012 has reached its end. Thank you all for attending! La o lună după conferință, încă sunt inspirată de câteva dintre speech-urile pe care le-am auzit și de oamenii pe care i-am Ccunoscut. Și chiar îmi pare rău că a durat doar două zile și s-a sfârșit. How to Web a avut loc la București, în 7-8 noiembrie. După luni întregi de planificare, orga- with the worried team, the people who care • it could divide your team nizare, așteptare, program supra-încărcat -- there are live humans behind the software • if you don’t like this kind of lifestyle și sute de ore de comunicare, organizato- • Resources to make it happen: rii, Bogdan Iordache și echipa sa, au trăit Max Niederhofer, Partner @Accel Part- • culture momentele frumoase în care au văzut ners -- Building Big in Europe • communication reușita evenimentului și au primit aplauze There are many obstacles to building • network pentru eforturile lor. Ca susținător How to billion dollar companies in Europe: struc- • presence Web, am trăit puțin din agitația premer- tural, regulatory, industrial. But the biggest gătoare evenimentului, când am ajutat la barrier to building a big company in Europe Pe lângă cele două zile de conferință, trimiterea mesajului despre How to Web is the one in our heads. startup-uri românești și internaționale celor care ar trebui să știe despre el. Asfel Listen -- most great entrepreneurs are înscrise în competitia Startup Spotlight au încât să minimizez numărul celor care vor great listeners. avut parte de patru zile de workshop-uri, spune după ce le voi povesti despre eveni- Take pride in what you do. Everything sesiuni de pitching, sesiuni de mentorat, ment: dacă aș fi știut că e atât de interesant, that’s worth doing, is worth doing well. întâlniri cu 12 acceleratoare de business aș fi venit și eu. Pentru că How to Web e internționale și premii cash de 20.000 USD. atât de interesant și important pentru par- Christian Boos - Founder & CEO @Arago Cei care nu erau într-un start-up, și-au tea aceasta a Europei și mai ales pentru acei AG -- Particle Collision in Code Space - dorit imediat să înceapă sau să lucreze într- oameni din România care lucrează cu, tră- API meets Big Data un startup! iesc și respiră tehnologie. 79 times more CPU power than used in Impresia după două zile de How to Mai jos sunt cele mai importante idei Apollo Missions -- on one iPhone. Web: există oameni care au reușit - deci, pe care le-am auzit: Your platform can not handle infinite nu e imposibil; putem învăța de la cei mai exploration and your users will not under- buni, chiar aici în România; speak-erii sunt Phil Libin, CEO @Evernote -- The power stand the mechanics behind your data foarte deschiși să împărtășească - trebuie of innovation processing. doar să avem curiozitatea să îi întrebăm; Advice on building a company and a Example: Big Data-based IT modelling să lucrezi cu tehnologia e grozav, pentru că tech business: don’t do it, it’s tough. If you do and pricing app: mars-o-matic.com schimbările și inovația sunt singurele con- it, do it for the right reason. Build something stante și avem de învățat tot timpul. for yourself. You have to be good at math to Mark Pascarella, CEO @UberVU -- The Dacă toți participanții au plecat cu ceva be an entrepreneur. pains of growth nou invățat la How to Web, cumulat, e un Why consider global growth? bun pas înainte pentru antreprenoriatul David Bizer, Talent Geek @HackFWD -- • Follow the money: US, China, Brazil, tech românesc. The Culture Club Japan, China -- go where the money For startup, everyday meetings are like is air. You need to gain support for your idea • 21% disposable income spent online Oana Călugar from your colleagues. in US, UK, Canada, Australia [email protected] Product-focused culture: It’s empowering • Global expansion means: Customer Care la Weebly to be asked to look at what’s possible, not told • huge markets @ 3Pillar Global Romania how to do it. If you’re not embarrassed by the • access to talent Sunt fascinată de impactul first version of your product, you’ve launched • access to partner & platform pozitiv pe care antreprenorii și startup-urile îl au în lume și sunt too late • access to capital pasionată să cresc comunitățile • Expansion may not be good for you: de startup-uri din România. David Noel, Community Manager @ Din experiența celor 4 ani în • if you don’t speak the language domeniul IT în marketing, vânzări SoundCloud • if you’d rather be a big fish in a small și customer care am învățat ce How to Build a Community: Three pond functionează și ce nu atunci când dezvolți și lansezi produse Confessions Humanize customer care; when • if your product doesn’t translate to software, și sunt promotoarea our service is down, respond with a picture local market metodologiilor „Customer Development” și „Lean Startup”

6 nr. 7/2012 | www.todaysoftmag.ro business TODAY SOFTWARE MAGAZINE

Realizări și viziuni la finalul anului 2012

m avut ocazia să îi întrebăm pe Marius Ghenea, Andrei Pitiș și Voicu Oprean despre realizările din 2012 și ce viziune globală au pentru 2013. Totodată am descoperit și părerea lor despre industria de software românească. Aceste mini interviuri au fost realizate cu ajutorul Business Days, www.businessdays.ro, mulțumim pentru ajutorul acordat Codruței Nicolescu, director executivA ADESCO.

Q:Care sunt principalele Q: Ce părere aveți despre piața de dezvoltare și partener principal la HowToWeb, realizări proprii în 2012? software românească? cel mai mare eveniment de Tech din regiune. Ixia a oferit premiile pentru Principalele realizări în Cred că încă nu este o piață valorificată Startup Spotlight, un concurs cu 32 cursul acestui an au fost la potențialul său real, pentru că în con- de companii participante selectate Marius Ghenea legate de lansarea unui tinuare produsele și serviciile de valoare din peste 120 de aplicanti din toate Business angel nou program educațional, adăugată mică (call-center, outsourcing) țările din jur. numit BusinessDrive, realizează cea mai mare parte a volume- • tot cu ANIS, participarea la schema program care este adresat atat antrepre- lor din piața de IT românească, în timp ce de ajutor de stat pt companiile cu norilor din companii mici și medii cât și situația ideală ar fi ca firmele IT românești componentă inovatoare/ Tech de managerilor din companii medii-mari, să se orienteze din ce în ce mai mult pe peste 20%, schema inițiată de comi- dezvoltarea regională unora dintre com- producția de software original care să poată sia de IT&C din AmCham. paniile din portofoliul meu de investiții, fi apoi scalat și să realizeze valori adăugate cum ar fi extinderea mall-ului online mari pentru acele companii, dar și pentru Q:Care credeți că vor fi principalele linii de FashionUp în Bulgaria, creșterea semnifi- mediul economic românesc în ansamblu. evoluție în 2013 pe plan mondial? cativă a cifrelor de afaceri la practic toate Cu toate acestea, au apărut în ultimii ani companiile în care investesc ca business- semne bune din acest punct de vedere în Pe plan mondial, 2013 va marca apariția angel și la sfârsit dar nu în cele din urmă, IT-ul românesc, mai ales că barierele de de noi competitori în piața de echipamente faptul că am început activitatea în consiliul intrare pe piețe globale sunt în scădere, mobile. Microsoft tocmai a scos pe piața de administrație al liniei aeriene naționale, odată cu apariția site-urilor de agregare, Surface, Amazon e posibil sa introducă un Tarom, în scopul redresării cât mai oportunităților din cloud sau platformelor telefon pe măsura ce tableta lor Fire este rapide a acestui mare brand românesc. de aplicații gen appstore. din ce în ce mai prezenta. Nokia nu cred ca și-a spus ultimul cuvânt. De asemenea, e Q:Care credeți că vor fi principalele linii de Q:Care sunt principalele de așteptat ca interactiunea om-computer evoluție în 2013 pe plan mondial? realizări proprii în 2012? să fie din ce în ce mai strâns legată de mobi- litate, dacă acum doar mailurile sunt și pe Pe plan mondial, cred că și 2013 va fi, ca • Clevertaxi, investiția calculator și pe telefon sau tableta, din ce în și anul curent, un nou an al antreprenori- angel de la sf lui 2011 a ce, odată cu creșterea penetrării tehnologii- atului, în sensul că cele mai mari progrese lansat produsul așa cum lor de tip Cloud, o să vedem și documentele ale economiei globale vor fi susținute sau Andrei Pitiș era planificat și a început pentru orice device. chiar definite de afaceri antreprenoriale Președinte ANIS sa genereze revenue pozi- noi, care în același timp vor continua să tionandu-se ca leader de Q: Ce părere aveți despre piața de dezvoltare conteze în cea mai mare măsură pentru piața software românească? crearea de noi locuri de muncă. Verticalele • o noua investiție de tip angel în cu dezvoltarea cea mai semnificativă vor i-Rewind, un produs inovativ paten- Piața de dezvoltare de software românească fi cele de IT (în principal Internet mobil tat la nivel mondial care urmează a fi continuă să crească pe fondul existenței și aplicații bazate pe Internet mobil, ca și lansat în curând specialiștilor calificați, dar care, mai ales echipamentele conexe, cum ar fi tablete și • TechMind, agenția de headhunting datorită ofertelor externe, nu mai sunt deloc smartphone-uri), energie verde (eoliana, pt software engineering a devenit ieftini. Observăm din ce în ce mai mulți solara/fotovoltaică, alte forme de energie breakeven și a început să crească. antreprenori din IT se orientează către dez- regenerabilă), protecția mediului (pro- • Co-fondat împreuna cu Radu G. și voltarea de produse proprii și atacă chiar duse și servicii ecologice, reciclare), dar Bogdan I. și lansat TechAngels, pri- piețe externe. Piața de aplicații mobile va și bio-tehnologie și zona business-ului de mul grup de angels în tehnologie din crește în continuare. E-commerce-ul româ- sănătate (mai ales servicii medicale pentru România nesc cred că va avea o creștere exploziva pe populația în îmbătrânire). • ca Președinte ANIS am adus Ixia ca măsura ce oamenii sunt mai obisnuiți cu

www.todaysoftmag.ro | nr. 7/2012 7 business business

cardurile și politica de returns este din ce București, Oradea, Ploiesti, Budapesta, crescut de 5 ori în 2012 fată de 2011 iar rit- în ce mai bună. Chișinău mul se va menține cu siguranță și în 2013, - Lansare Smailo Web Energy – prima cererea externă fiind tot mai mare. Tot o Q: Care sunt principalele tableta Smailo creștere mare au înregistrat și serviciile realizări proprii în 2012? Q: Care credeți că vor fi principalele linii de de callcenter, tot mai multe firme străine evoluție in 2013 pe plan mondial? externalizând aceste servicii în favoarea - Lansarea TraficOK- firmelor românești. prima platforma soft din - Procesele de optimizare și restructu- Pe plan intern însă cererea rămâne Voicu Oprean România care integrează rare a companiilor începute în primii ani în continuare mică în comparație cu CEO Arobs și transmite informații din de criza ar cam trebui să se fi finalizat, iar potențialul și cu beneficiile. Bugetele pe trafic în timp real la nivel în 2013 ar trebui să începem să le vedem care firmele sau instituțiile din România le național și efectele. Chiar dacă mediul economic investesc în tehnologie sunt mult diminu- - Lansarea Smailo TMC – primul GPS e încă instabil, nu știm cum va evolua ate iar 2013 nu pare să fie spectaculos din din România cu soluție TMC (Traffic moneda euro și care vor fi repercursiunile acest punct de vedere. Singurele soluții soft Message Channel) preinstalată asupra țărilor membre UE, investitorii sunt care au înregistrat o creștere a vânzărilor pe - Consolidarea și extinderea rezervați, etc., sunt și vor fi domenii care plan intern sunt cele dedicate reducerii cos- operațiunilor în Ungaria și R. Moldova vor înregistra creșteri atât în servicii căt și turilor sau optimizării activităților cu efecte -Creșterea numărului de clienti la peste în producție. și rezultate pe termen foarte scurt. 1500 doar în România Q: Ce părere aveți despre piața de dezvoltare - Contracte noi pentru dezvoltare soft software românească? în țări precum SUA, Canada, Finlanda, Piața de soft din România a crescut Ovidiu Măţan, PMP Suedia și Norvegia constant în ultimii 5 ani chiar dacă nu atât [email protected] - Dezvoltarea unei versiuni noi a pro- de spectaculos ca și în trecut însă este vorba Fondator și CEO al dusului OptimallSFA pentru terminale despre o creștere sănătoasă bazată pe busi- Today Software Magazine mobile cu sistem de operare Android ness-uri eficiente. Segmentul aplicațiilor - Peste 300 de angajati în Cluj, Iași, pentru terminale mobile spre exemplu a

Made in România

ceasă rubrică inițiată în numărul anterior prezintă în acest număr o altă companie producătoare de jocuri din Cluj-Napoca. Este un domeniu de interes mai ales din perspectiva inovației românești. Compania a pornit inițial oferind servicii de out- Asourcing, dar ulterior a renunțat la ele focusul focusul fiind acum 100% dezvoltare de noi aplicații.

DEA Studios e un start-up înființat în 2007 de către Daniel Tamas și Tudor Rad, doi tineri antre- prenori și foști freelanceri pe web development, respectiv SEO. Dacă la început firma s-a axat pe contracte de outsourcing pe web design, SEO și game development azi ne concentrăm doar pe produseI proprii și ne-am creat o rețea de portaluri de jocuri Flash care strânge 9 milioane de vizite în fiecare lună. La începutul anului 2012 am cumpărat ceea ce azi e proiectul nostru principal,www. enjoydressup.com, luându-l cu noi in echipa de management și pe ownerul site-ului, Paul Muresan.

www.ideastudios.ro Q: Descrieți ultimul produs lansat Tudor: Ultimul nostru produs e www.gamolition.com, lansat în Martie 2012 și e un portal flash axat pe jocuri de băieși. Lucrând timp de 4 ani doar în nișa de girl gaming am simțit nevoia să diversifi- căm gama de jocuri pe care le producem cât și traffic pool-ul portalurilor noastre. Incentive-ul a fost dublu: deschiderea unei piețe noi și faptul ca ne-am săturat să desenăm și să codăm doar rochițe roz și freze cu bucle în fiecare săptămână. :)

8 nr. 7/2012 | www.todaysoftmag.ro business TODAY SOFTWARE MAGAZINE

Q: Descrieți tehnologiile folosite Tudor: Exclusiv Adobe Flash și Adobe Illustrator. Momentan încercăm o schimbare treptată către mobile și vom folosi Adobe Air pentru a porta o parte din cele peste 300 de jocuri create de noi pe Android. M-au întrebat mulți de ce nu facem shift-ul către mobile mai repede, că acolo sunt banii, că Flash-ul e pe moarte, samd. Motivul e simplu, avem o bucată deloc mică din piata Flash internațională și de aici ne câștigăm pâinea. Mobile-ul rămâne direcția tehnologică principală dar nu vreau să dăm pasărea din mână pe Angry Bird-ul de pe gard, cel puțin până strângem niște date din piață cu produsele noastre exploratorii.

Q: Care au fost principalele provocări care au apărut în dezvoltarea produsului și ce soluții ați găsit ? Tudor: Suntem într-o industrie cu trafic masiv și principala dificultate a fost lipsa noastră de experiență în management-ul unor site-uri cu conținut viral, care odată la câteva săptămâni prindeau spike-uri care puneau server-ul la pământ. Eu nu am participat activ la dezvoltarea lor dar colegii mei Daniel și Paul au făcut o treaba extraordinară în a optimiza site-urile și serverul pentru traficul nostru în continuă creștere. O altă provocare tehnologică e trecerea de la Flash la mobile - chiar dacă Adobe Air începe să devină o variantă tot mai interesantă pentru portare înca sunt destule pro- Tudor Rad bleme și e nevoie de extensii user-made pentru a folosi anumite funcționalități, cum ar fi integrarea [email protected] Facebook, utilizarea de microtranzacții în jocuri, integrarea reclamelor etc. Suntem în plin proces de Co-fondator la IDEA Studios, învățare și încă nu știm exact limitele Air-ului dar ne dă speranța faptul că sunt deja jocuri portate Tudor Rad și-a început cariera în cu Air pe Appstore și Google Play, jocuri care rulează și functionează la fel de bine ca și cele scrise online marketing acum 10 ani, lucrând ca freelancer pe proiecte în cod nativ. de copywriting, SEO și PR. Acum el e un „Jack-of-all-trades” în cadrul firmei, ocupându-se de game Q: Câteva cuvinte despre companie production, recrutări, vânzări Tudor: Pe lângă ceilalți 2 colegi ai mei din management, avem o echipa de 5 programatori Flash, 5 și game design însă marea lui pasiune rămâne construcția și graficieni și 6 content manageri care se ocupa de PR-ul portalurilor de jocuri și alte proiecte secun- managementul unei echipe. dare. Lăsând la o parte rețeaua noastră de site-uri, care a ajuns la niște cifre respectabile, cel mai mare motiv de mândrie al meu e că am reușit să construim o echipa. Suntem tineri toți și poate nu avem foarte multă experiență dar colegii mi-au demonstrat de multe ori ca sunt uniți și la bine și la greu :) E un sentiment incredibil că în condițiile economice și sociale din România să poți crea produse proprii și o echipă entuziastă fără infuzii de capital extern și fără să semnezi contracte cu Diavolul (sau Statul Roman).

Q. Care este următorul produs la care vă gândiți să îl lansați ? Tudor: Acum punem la punct detaliile pentru un joc mai complex de fete, pe care să îl lansăm simultan în Flash și pe Android (poate și pe Appstore, încă testăm). Cred că nișa jocurilor de fete e încă destul de slab reprezentată la nivel de mobile gaming și experiența noastră din Flash ne-ar putea ajuta să creăm produse la un standard calitativ care să ne dea acel „edge” de care ai nevoie pentru a reuși în orice industrie. În 2012 am pornit cu un singur site care avea ~2 milioane de useri activi pe lună iar target-ul pentru sfârșitul anului era să ajungem la 10 milioane (target pe care l-am ratat la o mustață de 1 milion). În 2013 ne propunem să ajungem și să ne stabilizăm la 15 milioane de vizite și să avem cel puțin 5 produse de calitate pe mobile.

www.todaysoftmag.ro | nr. 7/2012 9 istorie comunități

Istoria IT-ului Clujean (II) Ce putem învăța din trecut?

n numărul trecut am lansat o mulțime de întrebări, unele filozofice, unele statistice, unele punctuale, altele deschise, majoritatea cereau răspunsuri complexe și o cercetare aprofundată. Prin urmare am început cercetările cu latura mai accesibilă, cea tehnică, descoperind în scurt timp, că istoria ei profită de abundența de informații care formau cultul marilor realizări populare, specific mediuluiÎ politic în care s-a născut IT-ul românesc. În această direcție am beneficiat și de sprijinul cititorilor, îi mulțumesc cu această ocazie domnului Marius Muntean pentru materialele trimise.

În contrast, perspectiva socială este m-a asigurat că necesitatea, un dicționar, îmi spun starea vremii, câte calorii am mai săracă în informații, iar personajele cu extrasele de cod în engleza și multă deter- ars, ce vitamine să beau dimineața și ce roluri importante pe scena istorică sunt tot minare, i-au permis să învețe, în regim au mai postat prietenii pe rețelele sociale. mai greu de găsit și de provocat la discuții. autodidact, rusa. Dovadă stau cele aproxi- Să mă bucur că Google sau Wikipedia nu Prin urmare, am cerut ajutorul domnu- mativ 500 de titluri din pivnița dânsului. îmi trimit rezultatele prin poștă, pe Kindle lui Ioan Salomie, profesor universitar la Pe locul doi, titlurile de articole și nu primesc cărțile în rusă, iar dacă vreau UTCN, care mi-a acordat o întâlnire plină poșta clasică: exista la anumite instituții, pot să mă înscriu la un curs MOOC și să de amintiri, nostalgie, dar și date și perso- gen ITIM, câte un abonament la revista interacționez direct cu liderii din aproape naje importante de la începuturile IT-ului „Current Contents”, ce lista săptămânal orice domeniu. românesc. Întâlnirea a decurs exact cum titlurile ultimelor articole publicate în În al doilea rând, să nu mai fiu supărat mă așteptam, a generat mai multe între- jurnale științifice. Mergeai în vizită, citeai pe procesele de proprietate intelectuala, de bări, decât răspunsuri, iar cantitatea de titluri și încercai să îți faci o idee despre fiecare dată când o multinațională încearcă informații și personaje nou apărute merită ce a mai apărut nou, care sunt direcțiile să își atribuie apa caldă și cuvântul mamă. un articol dedicat și mult mai consistent generale, iar dacă un articol îți trezea în Ajunge raportarea la perspectiva istorică, să decât mi-am propus în acest număr. mod deosebit atenția începea provocarea văd ce impact masiv a avut furtul sistema- Am să mă opresc asupra unei de a găsi adresa autorului și de a începe o tic de informație și distribuirea acesteia în curiozității: accesul la informație. Încercând corespondență prin care îl rugai să îți tri- întreg blocul sovietic, nerespectând copy- să identific sursele de cunoaștere, într-o mită o copie print a articolului. Câteodată, right-ul, dar respectând principiul politic perioadă lipsită de Internet, dar îngrădită după cheltuieli cu poșta internațională și că în război, chiar și în cel rece, totul este de granițe politice mult mai solide, am așteptări lungi, descopereai că articolul permis. Să nu credeți ca instig la furt, doar descoperit trei soluții ușor nonconfor- nu îți este folositor, dar era important să subliniez că oamenii găsesc întotdeauna căi miste și cam greu de imaginat pentru un mulțumești frumos și să întreții relații de de a accesa informația, și căi de a profita de contemporan. colaborare. pe urma ei. Ceea ce la un moment dat pare Pe primul loc, filiera rusă: exista la Pe locul trei, xerox-urile: existau în o generație de hoți de proprietate intelec- Librăria Universității o broșură a editurilor intreprinderile mari, câteva foto-copi- tuală, odată cu trecerea timpului se poate rusești, ce conținea toate titlurile traduse atoare și câteva doamne în a căror grijă transforma într-o generație de programa- din engleză în rusă și se înnoia o dată la erau alocate. Ținea de un anumit fel de tori competenți care permit celor furați două săptămâni. Practic tot ce se publica diplomație să întreții relații cordiale cu acum 20 de ani să își recupereze pierderile internațional, mai ales în SUA, era tradus aceste doamne, astfel încât, când aflai că a și să scoată și profit din outsourcing. în termen de șase luni. Dacă te interesa apărut o carte valoroasă prin Iași, București un titlu, îți scriai numele în dreptul lui sau Timișoara, și dădeai o fugă cu trenul, să și în aproximativ o lună, la prețul unei o împrumuți pentru o săptămână, să ai cine beri, primeai exemplarul identic cu ediția să îți facă rapid și ieftin o copie. copiată (Addison-Wesley, John Wiley, În încheiere, aș dori să vă zic ce am Marius Mornea etc). Singurele dezavantaje erau: faptul învățat eu din cele de mai sus. În primul [email protected] că trebuia să înveți rusă și să accepți fur- rând să trec peste senzația de saturație pe Fost senior software developer tul intelectual masiv realizat de editurile care o resimt de la bombardamentul con- in cadrul Nokia, în prezent rusești, care nu aderau la nici un fel de stant cu informație. Să ignor pantofii sport, fondatorul platformei Mintaka copyright internațional. Domnul profesor frigiderele, oglinzile și televizoarele, care Research

10 nr. 7/2012 | www.todaysoftmag.ro comunități TODAY SOFTWARE MAGAZINE

Comunităţi IT Cluj-Napoca

n locul introducerii obișnuite, în acest număr vreau să vă vorbesc despre CodeRetreat. Din motive de spațiu, nu intru în detalii despre ce este (googleit), în schimb vreau să vă zic cum este. Este foarte fain! Efectiv am simțit plăcerea de a fi inginer, pus în fața unei probleme, fără presiunea banilor și a deadline-urilor, cu unicul scop de a încerca să o rezolv. Mai mult de atât, am avut ocazia săÎ încerc soluții în trei limbaje de programare diferite, cu oameni diferiți, cu constrângeri progresive care cresc dificultatea și obligă la schimbări de strategie, iar din 45 în 45 de minute câte o sesiune de discuții cel puțin la fel de interesantă ca și cea de scris cod. O analogie foarte bună este mersul la sala de fitness, unde iți lucrezi mușchii, obosești, uneori e greu și frustrant, dar tot timpul pleci cu aceea energie pozitivă și stare generală de relaxare și bine. Și tot ca la sală, pentru a fi în formă ii nevoie de exerciții periodice, iar eu cred că sesiuni frecvente de CodeRetreat vor aduce programatorii clujeni în vârf de formă.

Transylvania Java User Group Calendar Comunitate dedicată tehnologiilor Java. Website: http://www.transylvania-jug.org/ Decembrie 18 Data înfiinţării: 15.05.2008 / Nr. Membri: 514 / Nr. Evenimente: 40 AgileWorks Remote Open Space http://www.meetup.com/The-Cluj- Romanian Testing Community Napoca-Agile-Software-Meetup-Group/ Comunitate dedicată QA. events/95100482/ Website: http://www.romaniatesting.ro Data înfiinţării: 10.05.2011 / Nr. Membri: 554 / Nr. Evenimente: 1 Decembrie 20 Knotch Launch & Party - Recomandat TSM GeekMeet Cluj http://www.facebook.com/events/105223946314179/ Comunitate dedicată tehnologiilor web. Website: http://geekmeet.ro/ Ianuarie 2 Data înfiinţării: 10.06.2006 / Nr. Membri: 519 / Nr. Evenimente: Monthly Meetup 13 (Cluj) http://www.meetup.com/Tabara-de-Testare-Cluj/

Cluj.rb Ianuarie 8 Comunitate dedicată tehnologiilor Ruby. Socialization Meetup Website: http://www.meetup.com/cluj-rb/ http://www.meetup.com/Cluj-Semantic-WEB/ Data înfiinţării: 25.08.2010 / Nr. Membri: 130 / Nr. Evenimente: 31

The Cluj Napoca Agile Software Meetup Group Comunitate dedicată metodelor Agile de dezvoltare software. Website: http://www.agileworks.ro Data înfiinţării: 04.10.2010 / Nr. Membri: 290 / Nr. Evenimente: 17

Cluj Semantic WEB Meetup Tabara de testare Comunitate dedicată tehnologiilor semantice. Comunitate dedicată QA. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Website: http://www.meetup.com/Tabara-de-Testare-Cluj/ Data înfiinţării: 08.05.2010 / Nr. Membri: 134/ Nr. Evenimente: 19 Data înfiinţării: 15.01.2012 / Nr. Membri: 128 / Nr. Evenimente: 9

Romanian Association for Better Software OpenCofee Comunitate dedicata oamenilor cu experienta din IT indiferent de Comunitate dedicată entrepreneuri-lor, investitorilor și tehnologie sau specializare. programatorilor. Website: http://www.rabs.ro Website: https://www.facebook.com/opencoffeecluj/ Data înfiinţării: 10.02.2011 / Nr. Membri: 189/ Nr. Evenimente: 11 Data înfiinţării: 4.05.2011 / Nr. Membri: 209 / Nr. Evenimente: 35

Comunitatea TSM Menţiuni: Cluj Perl Mongers (www.cluj.pm), GeekMeet Comunitate construita in jurul revistei Today Software Magazine. (http://geekmeet.ro/), ITSpark (http://itspark.ro/default.aspx), Website: http://www.todaysoftmag.ro CodeCamp (http://www.codecamp.ro/), CodExpert (http:// Data înfiinţării: 06.02.2012 / Nr. Membri: 333 / Nr. Evenimente: 3 www.codexpert.ro/), PHPRomania www.phpromania.net/)

www.todaysoftmag.ro | nr. 7/2012 11 programare programare

SEO - Cum putem creşte CTR prin Rich Snippets?

ormatarea şi modul de afişare al rezultatelor din SERPS ţine într-o oarecare măsura şi de optimizarea realizată de proprietarul site-ului. Folosirea Rich Snippets este o tehnică de optimizarea internă a paginilor unui site şi poate avea rezultate foarte buneF în creşterea traficului organic. Faptul că un anumit rezultat iese în evidenţă aduce un avantaj celor care folosesc această metodă SEO.

Rich Snippets sunt anumite informaţii, Pentru a confirma beneficiile menţi- imagini sau linkuri care apar în cadrul unui onate mai sus, aducem în discuţie un test rezultat al unei căutari, pentru a oferii uti- realizat în urmă cu doar câteva luni de către Radu Popescu lizatorilor mai multe detalii. Toate aceste compania americana Catalyst, folosind un [email protected] elemente suplimentare vor face ca rezulta- blog cu reţete culinare. În prima lună, dupa tul respectiv să fie evidenţiat, lucru care ne folosirea Rich Snippets, situl a avut o creş- QA şi Web designer @ Small Footprint ajută foarte mult. Folosirea Rich Snippets tere a CTR de 150% fapt care demonstrează oferă câteva beneficii dintre care şa aminti potenţialul uriaş pe care îl are această teh- pe următoarele: nica SEO. • Atrag atenţia utilizatorilor asupra rezultatelor relevante într-o căutare; Utilizarea Schema.org • Oferă mai multe informaţii instante Schema.org furnizează o serie de legate de căutarea realizată; atribute HTML pe care proprietarii de • Ajută la creşterea ratei de click website-uri le pot folosi pentru a beneficia (CTR) şi reducerea bounce rate-ului; de Rich Snippets. Aceste taguri, cunoscute şi sub numele de microdata, sunt acceptate În continuare vom vedea două exemple şi folosite de cele mai importante motoare de rezultate care folosesc Rich Snippets într- de căutare printre care Google, Yahoo sau un mod foarte bun. În Figura 1, avem unul Bing pentru îmbunătăţirea calităţii căutari din rezultatele afişate pentru căutarea unui online. joc, „cut the rope” mai exact, care vine de Acest site oferă o gama largă de colec- pe situl Google Play. Acesta este un rezultat ţii de atribute care pot fi folosite pentru din categoria software care conţine ratin- următoare categorii: organizaţii, persoane, gul jocului, preţul sau şi platforma pe care evenimente, restaurante şi multe altele. rulează. Figura 2 prezintă rezultatul site- Pentru a întelege mai bine cum putem ului IMDB.com pentru căutarea „titanic”. folosi aceste taguri oferite de Schema.org, Aici putem observa că acesta conţine un vom lua un exemplu simplu. Mai jos avem, rating, nota filmului, numărul de voturi în prima parte, codul HTML simplu al unei primite precum şi detalii despre regizor pagini web personale, iar în partea a doua sau actori.

Figura 1 Figura 2

12 nr. 7/2012 | www.todaysoftmag.ro programare TODAY SOFTWARE MAGAZINE acelaşi cod în care se folosesc Rich Snippets:

Numele meu este Ioan Popa, dar prietenii imi spun Ionut.
Aici este adresa site-ului meu: www.site.ro.
Locuiesc in Cluj-Napoca si sunt inginer la SC Compania IT SRL
Numele meu este Ioan Popa, dar prietenii imi spun Ionut.
Aici este adresa site-ului meu: .
Locuiesc in Cluj-Napoca si sunt inginer la SC Compania IT SRL

După cum putem vedea, microdata sunt folosite în tagurile

şi . Atributele au rolul de a transforma simplele taguri HTML în nişte taguri semantice. În exemplul de mai sus am folosit categoria „person” pentru că în acel conţinut era vorba de o persoană. Primul lucru pe care trebuie să îl facem este să încludem tot acest conţinut, care aparţine unei singure catego- rii, într-un container (în cazul nostru un div care conţine şi clasa „pers”, pentru a-l identifica mai uşor). Apoi, în interiorul său tre- buie să specificăm categoria căreia îi aparţine tot acel conţinut (adăugând „itemscope” şi „itemtype” acesta din urmă având ca valoare linkul categoriei vizate de pe Schema.org). Paşii următori presupun includerea elementelor care oferă informaţii despre persoană în alte mici containere (span-uri în cazul acesta) ce vor conţine şi atributul „itemprop” cu valoarea corespunzătoare.

Informaţii despre autor folosind Google+ Există şi un mod foarte simplu de folosire a Rich Snippets pentru afişarea unor informaţii despre autorul unui site, care nu necesită cunoştinţe de HTML. În Figura 3, pentru căutarea “radu popescu” rezultatul al treilea conţine cateva informaţii despre mine, fiind evidenţiat printr-o fotografie şi numele autorului. Pentru a putea adauga informaţii despre autor în SERPS, folo- sind metoda Google+, trebuie să parcurgem doi paşi simpli:

1. Pe paginile la care dorim să afişăm informaţiile despre autor, se va crea un link către profilul Google+ de unde dorim sp pre- luam informaţiile despre autor. Linkul va trebui să conţină ID-ul profilului şi parametrul rel=author precum în exemplul de mai jos:

Google+ Google+ 2. În contul de Google+, la secţiunea “Contributor To section” trebuie să adaugăm un link nou, spre situl în care am adaugat codul de la punctul 1.

Aceste informatii nu vor aparea imediat dupa parcurgerea acestor paşi. Trebuie să aşteptăm până la trei săptămâni pentru a se actualiza rezultatele noastre, dar putem totuşi testa dacă am parcurs corect paşii de implementare folosind tool-ul urmator: http://www.google.com/webmasters/tools/richsnippets

www.todaysoftmag.ro | nr. 7/2012 13 requirements

Dezvoltarea software-ului financiar cerinţele platformelor de tranzacţionare

um te-ai simţi dezvoltând software folosit de cele mai mari instituţii financiare din lume, software cu ajutorul căruia se tranzacţionează miliarde de euro pe zi? CResponsabil? mândru? fericit? toate acestea la un loc :) ?

Încercăm în rândurile de mai jos să sur- până vineri între 9-17). prindem care ar fi cerinţele funcţionale şi • High Throughput/Performace - non-funcţionale ale unei platforme de tran- capabilă sa proceseze un număr zacţionare, şi modul de realizare a acesteia, mare de tranzacţii/ordine pe durată Cristian Ruja pentru a asigura parametrii de înaltă cali- îndelungată, pentru a putea asigura [email protected] tate ceruţi de acest gen de software. utilizarea şi funcţionalitatea în con- diţii optime a sistemului (ex. 1000 Product Team Manager Cerinţele non-funcţionale ale plat- @ ULLINK mesaje/sec, ~10 milione mesaje pe formei de tranzacţionare zi) pe durata perioadei de tranzac- Cerinţele nonfuncţionale sunt cerinţe ţionare (ex. de luni până vineri între care specifică criteriile de evaluare ale unui 9-17) sistem. Acestea sunt de obicei numite şi • Low latency - întârzieri minime cerinţe de calitate ale sistemului. - întârzierea produsă de acestă plat- Cele mai importante cerinţe non-func- formă trebuie să fie minimă, pentru ţionale ale unei platforme de tranzacţionare a asigura accesul cât mai rapid al sunt: ordinelor de tranzacţionare pe plat- • Reliable - De încredere - se referă formele burselor (ex. ~50µs). la a avea un produs sofware care să • Load balancing, hot failover & funcţioneze întotdeauna fără între- highly availablility (ex. 99.999%) ruperi/erori (pe parcursul timpului - capacitatea de a funcţiona întot-

cât sunt bursele deschise, ex. de luni deauna având cel putin două servere

14 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

astfel încât în cazul în care unul este oprit, celălalt va pre- lua responsabilitatea de a procesa ordinele, toate acestea făcându-se într-un mod transparent pentru client. • Disponibilitate 24 ore “follow the sun” – platforma trebuie să fie disponibilă 24h de-a lungul fusurilor orare, începând cu bursa din Tokyo, continuând cu cea din Londra, şi cu cea din NewYork. • Scalabilitate ridicată – arhitectura trebuie să fie şu or sca- labilă pentru a răspunde la creşterea numărului de pieţe şi clienţi, distribuiţi în jurul globului. Cerinţele funcţionale ale platformei de tranzacţionare Una dintre funcţionalităţile cheie ale platformei de tranzacţio- nare este aceea de a servi ca un nod de conectivitate multiprotocol „multiprotocol connectivity hub” asigurând conectivitatea între participanţii din piaţă. Diferite pieţe (burse) acceptă protocoale diferite de conectare, deci platforma trebuie sa fie capabilă să lucreze cu diferite proto- coale pentru a se conecta şi ruta într-un mod inteligent mesajele către destinațile finale (burse, brokeri, aplicaţii de tranzacţionare, sisteme de management al ordinelor sau către alte reţele prin intermediul protocolului FIX sau alte protocoale customizate sau API-uri. Protocol FIX (http://www.fixprotocol.org/) este cel mai folosit protocol în acest domeniu. Pe lângă diferite versiuni ale acestuia, platforma trebuie să fie usor extensibilă pentru a suporta API-uri specifice. Câteva cerinţe non-funcţionale referitoare la conecti- vate: întârzieri minime pentru procesarea şi rutarea orderelor (ex ~50µs); trafic foarte mare (ex 1000 mesaje/sec, ~10 milioane mesaje pe zi) „HighTouch Trading solution” - soluţie care acoperă activi- (ex. capitalizarea pe un instrument să nu depășească 80% tatea de zi cu zi a brokerilor. Tinta pentru aceste soluţii este de pentru un client) a lucra cu ~10000 ordere pe zi, capacitate maxima de procesare manuală - folosită pentru a înlocui „biletele de hârtie”, cu tichete Scopul este de a verificaş i valida în timp real ordinele şi pozi- electronice, pentru a executa ordinele clienţilor, care vor fi trimise ţiile deţinute (long/short/net) pe diferite pieţe. la traderi pentru a fi procesate. De asemenea, se vizează şi distri- Toate acestea trebuie să se execute cu impact minim de timp buirea mai ușoară a informației în timp real intre toţi membrii (ex: 3µs timpul necesar pentru validare). echipe (vânzare, traderi, clienţi). Aceasta trebuie să lucreze în timp Middle Office management se ocupă cu tratarea ordinelor real şi cu toate clasele de bunuri (acţiuni, produse derivate, Forex, executate în piaţa, mai exact cu alocările către clienţi şi confirmă- etc). Important este să transmită rapid şi sigur ordinele şi să tri- rile acestora. Informaţiile de alocare sunt date prin instrucţiuni mită instant răspunsul către clienţi. (modul în care se distribuie cantităţile executate între clienţi). O alta funcţionalitate la modă este tranzacţionarea automata Confirmările reprezintă acordul primit care certifică că tranzacţia cu ajutorul algoritmilor. Pe lângă algoritmii standard soluţia pune reprezintă ceea ce a cerut clientul. Aceste validari se pot face si la dispoziţie un API pentru a permite clienţilor adăugarea de algo- prin accesul la alte sisteme care ofera aceste informatii. ritmi proprii. Ultimul pas este în a agrea modul de livrare/decontare care are Low Touch Trading Solution – acoperă partea de acces rapid particularităţi specifice depinzând de burse, clienţi şi instrumen- şi direct la pieţe şi include routare inteligentă şi cautarea de lichidi- tele tranzacţionate. Produsul este de asemenea răspunzător pentru tăţi precum şi căutarea preţului optim pe pieţele disponibile. Este calculul comisioanelor şi taxelor (incluzând comisionul pieţelor) responsabil și cu managementul riscului, şi posibilitatea de moni- care trebuie facturate către clienţi. torizare şi procesare automata a tutor orderelor transmise în pieţe (ex. ~10 milioane ordine pe zi). Cum se dezvoltă o platformă de tranzacţionare Managementul riscului este altă componentă obligatorie a Care sunt paşii necesari pentru a crea o platforma de platformei de tranzacţionare fiind reglementata legal în pieţele trazacționare de înaltă calitate? financiare mature. Primul pas este de a strânge la un loc specialişti de top din Pe lângă aceasta, brokerii trebuie să fie capabili să filtreze tran- arii diferite: analişti de business, arhitecţi software, dezvolta- zacţiile clienţior pentru a verifica două tipuri de reguli: tori, ingineri de asigurare a calităţii şi a lucra împreună folosind • Contractuale: clienţii trebuie să respecte regulile impuse de metodologia SCRUM. A avea o echipa de specialişti de înalta per- brokeri (ex. suma tranzacţiilor zilnice pentru un client să formanţa nu este destul. Este de asemenea nevoie să ascultăm şi să nu depaşească 10 milioane $) reacţionăm la nevoile clienţilor: analiştii de business culeg nevoile • Conformitate: clienţii trebuie să respecte regulile pieţelor clienţior şi le suprapun în contextul produselor şi a platformei. De

www.todaysoftmag.ro | nr. 7/2012 15 requirements arhitectură Dezvoltarea software-ului financiar asemenea ei determină cerinţele specifice acesta sa ajunga la testare, Care este reţeta de succes în ale clienţior şi eventualele diferenţe dintre • continuous integration - proces care dezvoltarea unei platforme de produse şi nevoile acestora. În această fază, asigura testarea/integrarea automata tranzacţionare? arhitecţii de sistem vin cu sugestii pentru a aplicatiei. Din 2001 clienţii ULLINK s-au bazat a defini arhitectura produselor, defini- pe noi şi ne-au ajutat să dezvoltăm şi să rea API-urilor pentru comunicarea între Testarea finală închide ciclul de dez- livrăm produsele noastre stabile dezvoltate produse şi componente. Scopul este de a voltare; Țintele pentru asigurarea calității folosind cele mai moderne tehnologii dis- menţine omogenitatea produselor şi com- sunt: ponibile în domeniu. Clienţii beneficiază ponentelor pentru o uşoara extindere şi • validarea funcţionalității, testând de platforma de tranzacţionare modulară mentenanţa ulterioara. cerinţele funcţionale ale clienţilor. şi scalabilă ULLINK lucrând cu toate tipu- Definirea şi granularizarea cerinţelor • verificarea funcţionalitatii anteri- rile de bunuri valorice, asigurând acces funcţionale pentru fiecare produs în parte oare pentru a evita regresiile. extrem de rapid, managementul riscului, este responsibilitatea „Product Owner- • validarea performantei asigurând acces direct la pieţele financiare (DMA) şi ului”. Echipa de dezvoltare estimează cerinţele non-funcţionale, tranzacţionarea prin algoritmi. Cu aproape efortul necesar pentru implementarea • validarea platformei integrate, tes- 300 de experţi distribuiţi în 8 birouri (New funcţionalităţilor cerute încercând să tând interacţiunea dintre produse. York, Sao Paulo, London, Paris, Cluj- identifice posibile riscuri referitoare la Napoca, Hong Kong, Tokyo, Sydney), în performanță, calitate sau regresie. Se folosesc în mare parte suite de teste crestere :), cu mult profesionalism, multă În faza de implementare, în perma- automate acoperind partea funcţională şi muncă, pasiune pentru tehnologie şi dis- nenţă focusul este pe calitate înaltă. Pentru testele de performanţă. tracţie, ULLINK are cunoştinţele necesare a păstra nivelul înalt de calitate folosim cele Metodologia SCRUM este foarte şi expertiza de a dezvolta şi ajuta clienţii de mai bune practici din domeniu: potrivită pentru dezvoltarea acestui tip de pe întreaga planetă 24h/zi. • unit tests – testare automata a produse prin adaptabilitatea şi raspunsul Inovatia este „sarea şi piperul” presă- codului, imediat la schimbare. rate peste aceste produse şi procese. • code review - proces prin care mem- brii echipei revad codul inainte ca

Figura 2 - diagrama detaliată a componentelor

16 nr. 7/2012 | www.todaysoftmag.ro arhitectură

Liferay Service Builder vs. Spring Roo

.A.D. sau Rapid Application Development este un numitor comun în ziua de azi atunci când vorbim despre metodologii de development. Pe scurt, această metodologie presupune adunarea de cerințe funcționale șiR non-funcționale prin workshop-uri sau metode de comunicare cât mai rapide,

prototipizare și reutilizabilitatea com- integrați în aplicație ponentelor implementate. Pentru a • Compatibilitate: aspecte de inte- îndeplini cu succes această metodologie grare cu tehnologia Liferay în ceea ce privește timpul de dezvoltare Vlad Hosu al aplicațiilor, multe companii folo- Meta date - Liferay Service [email protected] sesc unelte pentru generare de cod. Builder Senior Developer Conceptul de Vendor Lock-in este Beneficiază de un plugin de @ ISDC menit să atragă atenția asupra decizii- simplu și intuitiv pentru a rula unealta. a lucrat In ultimii trei ani lor tehnice vis-a-vis de ușurința cu care O alta variantă este folosirea Ant sau pe tehnologii de portal si putem integra un generator de cod în Maven pentru rulare. Ea vă oferă un xml solutii e-commerce. tehnologia pe care o folosim dar și de pentru configurare care, vă va genera dificultatea cu care putem customiza pentru fiecare entitate câte un domain sau chiar elimina anumite componente model, layer de persistență și de servicii. generate. Este o practică extrem de Totodată el va genera automat și metode comună; așa face Oracle, așa face IBM, de CRUD și metode utilitare pentru așa face Apple, pe scurt, așa fac toți. găsirea de entități dupa proprietățile Pentru a detalia acest concept am acestora. Aceasta acoperă majoritatea ales un studiu de caz: Spring Roo vs straturile necesare, mai puțin cel de pre- Liferay Service Builder. Amândouă sunt zentare. În schimb, oferă integrare cu unelte pentru generare de cod, amân- servicii web JSON si SOAP.

două sunt compatibile cu Liferay. Din Pentru această analiză vor fi folosite Vlad Hosu următoarele criterii: TSM • Meta date: capacitatea de cus- • Calitatea codului generat: cu respect la standarde de codare, ex. Oracle Code Conventions (http:// www.oracle.com/technetwork/ java/codeconv-138413.html) • Documentație • Vendor Lock-out: cât de ușor vă scăpați de codul generat sau să-l Figura 1 - Structura serviciului Liferay Builder

17 nr. 7/2012 | www.todaysoftmag.ro arhitectură Liferay Service Builder vs. Spring Roo

Atributul de package-path din tag-ul „service-bilder” este folosit pentru numele pachetului de bază al codului generat. Tag-ul „namespace” este folosit pentru denumirea tabelei în baza de date, iar în cazul acesta va fi tsm_Articol. Atributele de „local-service” și „remote-service” de pe tag-ul „entity” sunt folosite pentru spe- cificarea persistenței locale și respectiv, dacă doriți și generarea de servicii web JSON și SOAP. Specificarea tag-ului „fin- der” va genera API si Implementare pentru obținerea unei liste de Articole in funcție de câmpul „autor”. Desigur se poate custo- Security: „perform tests” este pentru a testa integra- miza mult mai mult. • project --topLevelPackage ro.tsm rea entității generate în proiect. Comanda • jpa setup -- provider HIBERNATE „perform eclipse” este pentru configurarea Meta date - Spring Roo --database MySQL workspace-ului. Dacă aveți STS, nu mai Pentru a configura Spring Roo aveți • entity jpa --class ~.domain.Articol este nevoie de rularea acestei comenzi. nevoie de STS (un Eclipse pentru Spring), o --testAutomatically Altfel ea sau trebuie rulată sau este nece- altă variantă este să alegeți consola. Pentru • field string --fieldName titlu --notNull sară instalarea unui plugin adițional pentru consolă, va trebui să definiti pentru fie- • field string --fieldName descriere mavenizarea proiectului. care task câte o comandă. Veți identifica --notNull multe taskuri repetitive care ar putea fi • field string --fieldName autor Calitatea Codului abstractizate. Din punctul meu de vedere --notNull Este important de menționat că acest configurarea nu este atât de vizuală, pre- • field number --fieldName likeCount atribut nu contează decât dacă veți avea cum o diagrama sau un xml. Un aspect --type java.lang.Long nevoie să intrați in codul generat. Alfel, cel negativ este: la fiecare fișier .java generat, • finder add --finderName findArtico- mai probabil sursele generate vor ajunge Roo mai adaugă și un fișier AspectJ, asta leByAutor --class ~.domain.Articol într-o librărie externă. înseamnă de două ori mai multe fișiere, • perform tests deci o mentenanță dificilă pentru custo- • perform eclipse Calitatea Codului - Liferay Service mizarea anumitor componente. Un aspect • web mvc setup Builder foarte important este ca Roo poate genera • web mvc all --package ~.web Dacă punem un Sonar (vezi http:// și stratul de prezentare la domeniul definit. • security setup www.sonarsource.org/) pe el vom găsi la Un mare atu față de Liferay Service Builder. fiecare metodă câte un Major cel puțin. Același exemplu, referitor la entitea Precum exmplicam anterior, dacă Spre exemplu: Articol se va putea genera cu Roo folosind veți avea mai multe entități va trebui să • Prinderea de throwable in urmatoarele comenzi și în plus vom avea repetați pentru fiecare dintre ele pașii excepții stratul de web, test de integrare și Spring referitori la definirea acestora. Comanda } catch (Throwable t) { • Castarea neverificată

AdditionalInformationClp oldCplModel = (AdditionalInformationClp) oldModel; Modul în care se generează o entitate, este destul de complex și nu este conce- put decât pentru a face parte dintr-un API (aceasta pentru a avea capacitatea de a suporta bazele de date majore ca și MSSQL, PostgreSQL, MySQL șamd). Aici nu includem si layer-ul de srvicii, care mai adauga in API înca opt clase: (http://www. liferay.com/community/wiki/-/wiki/Main/ Service+Builder) Figura 2 - Structura serviciului Spring ROO Calitatea Codului - Spring Roo

18 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Oferă un cod care respectă best-pra- Vendor Lock-out - Liferay Service Builder pic diferită, anume container-ul de Spring tice-urile impuse de Oracle si Google(pe Trebuie rescris totul pentru a ajunge la este în Liferay și injecția de bean-uri se partea de front-end) un cod Java extensibil, utilizabil si ușor de face într-un mod diferit din plugin. Acest Totodată, în orice moment aveți oca- întreținut dar având in vedere că Liferay demers presupune o configurare suplimen- zia de a scoate o metodă din starea de cod generează API-ul detașat de implementare, tară la Spring Roo pentru a-l putea folosi. generat în cod customizat ceea ce aduce un oricând se poate scrie o altă implementare beneficiu destul de puternic. într-un alt plugin dar asta nu vă va ajuta Concluzii niciodata la scoaterea codului generat. Pe În concluzie, puteți să folosiți Service Documentație - Liferay Service Builder scurt, Liferay Service Builder oferă un con- Builder-ului atunci când nu se consi- Beneficiază doar de o pagină de Wiki tract pentru servicii și pentru model iar deră partea de Vendor Lock-out, Calitatea – documentație inexistentă. De altfel, veți asta este suficient în majoritatea cazurilor. Codului sau Documentația; acest lucru putea găsi foarte multe informații legate de presupune că nu vă puneți problema schim- această unealta și pe forumuri. Liferay are Vendor Lock-out - Spring Roo bării tehnologiei pe parcusul proiectului o comunitate destul de mare și în creștere. Unealta poate translata tot ceea ce este și că aveți suficiente cunoștințe vis-a-vis În cazul unui parteneriat cu Liferay în fișierele AspectJ în cod Java. Aceasta de acest tool. Pe de altă parte, Spring Roo beneficiați de tot suportul necesar pentru oferă un grad de extensibilitate ridicat. vă oferă o satisfacție mai mare în ceea ce a folosi această unealtă. privește calitatea codului sau documentația Compatibiliate dar veți avea și un risc, în funcție de proto- Documentație - Spring Roo Este important de menționat că aspec- tipizarea aplicației. Roo are parte de o documentație des- tele de integrare pot să genereze o pierdere tul de bogată prin comparație. În ceea ce de timp mai mare decăt beneficiul genera- privește forumurile, comunitatea Roo este torului de cod în sine. Pe scurt, pot apărea înca destul de restransă. probleme de prototipizare. Totodată integrarea cu Spring este un

WE HIRE IN GOOD COMPANY

PROJECT MANAGER

.NET DEVELOPERS

JAVA DEVELOPERS

JAVA ARCHITECT

.NET ARCHITECT

WE DO PROJECTS OUR CUSTOMERS ISDC WITH IMPACT. WE ARE IMPRESSED ENGINEERS

DELIVER RESULTS, BY OUR AWESOME YOUR RALUCA SIMONA NOT RESOURCES. TECH TEAMS. DREAMS! HIREME HELLO @ISDC.EU @ISDC.EU ISDC.EU/CAREERS

www.todaysoftmag.ro | nr. 7/2012 19 HR

Leadership Situațional

prima oară când scriu despre Leadership. Am avut o oarecare reticiență în a aborda aceast subiect, deoarece toată lumea vorbește despre Leadership și toată lumea își dă cu părerea despre ce înseamnă să fii lider. Orice afirmație legată de aceastăE temă poate fi ușor controversată pentru că sunt atâtea teorii dezvoltate, încât mereu poți aduce contra-argumente. Încă de la început aș vrea să creez așteptarea că acest articol este personal și este bazat pe experiența mea ca lider în cadrul unei organizații studențești, unde scopul principal era dezvoltarea noilor membri, dar și ca angajat pus în ipostaza de a avea lideri (mai mult sau mai puțin).Dacă vor apărea controverse sau dacă împărtășiți alte opinii, le încurajez, pentru că suma experiențelor noastre cu siguranță este una diferită.

Andreea Pârvu Pentru mine personal, un lider știe doar împreună cu angajații se poate obține [email protected] Recruiter în cadrul Endava să se adapteze fiecărui situații și fiecărui performanța pe care toți stakeholderii angajat. Oamenii au stări și trăiri diferite implicați în proces o așteptau. A fost tipul și cu siguranță factori motivaționali atât de de manager și lider care a știut cum să variați încât este recomandabil să îi tratezi valorifice potențialul fiecăruia dintre noi și de cele mai multe ori ca individualități nu care a înțeles întotdeauna nevoile noastre. ca grup. Se întâmplă ca soluțiile care pot fi În ciuda faptului că mulți dintre noi eram implementate pentru o persoană pot avea novici în domeniul în care activa compa- impact negativ asupra altora. nia, a știut cum să ne lase să învățăm din Înainte de a intra în teoria Leadership- propriile greșeli, dar și cum să ne susțină ului Situațional, aș vrea să subliniez în situațiile în care terțe părți interveneau diferența care există între a fi lider și a fi în echipa noastră. A fost un lider și un manager. manager care echipei noastre i s-a potrivit La primul meu job am avut ocazia să ca o mănușă. Schimbând job-ul și ajungând am un șef, care a depășit de mult stereoti- într-un mediu organizațional complet nou, pul celor care au o poziție de conducere în am înțeles că în noul context, vechiul stil România, de a se bucura peste măsură de de leadership cu care eram obișnuită nu se acest statut, dar fără a face ceva în a depăși potrivea. Pentru prima oară am înțeles cât barierele ierarhice. De cele mai multe ori de relevant și ce impact mare poate avea un ”șeful” este cel care trebuie să aibă drep- lider asupra unor persoane dacă știe cum tate și este cel care știe cel mai bine cum să se adapteze fiecărei situații. Pentru prima trebuie să se întâmple lucrurile. Trist este dată am început să studiez mai amănunțit că angajații nu reacționează (mie perso- acest subiect și modelul care mie mi-a nal îmi plac angajații care își provoacă captat cel mai mult atenția a fost cel a lui șefii într-un mod constructiv). Dacă ar fi Harsey și Blanchart. Pe baza modelului lui să îl caracterizez pe primul meu șef, care Hersey – Blanchard, in cele ce urmează voi a fost și încă este un model pentru mine, prezenta stilurile de Leadership care sunt aș zice mereu că a fost ”Business develo- încurajate și implementate în funcție de per, people enhancer, team creator”, pentru motivația și experiența fiecărui membru al că întotdeauna a avut în vedere business- echipei. ul și obținerea profitului, ținând cont că

20 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

Lider vs. Manager Liderii prin definiția lor sunt Managerii sunt cei care căutători de riscuri, ei văd în sunt mai puțin dispuși să își Liderii, au ”followers”, persoane Managerii au subordonați provocările pe care le întâm- asume riscuri și încearcă pe care îi urmează pentru că, cred datorită unei poziții pe care pină, oportunități și profită pe cât posibil să evite conflic- cu tărie într-o viziune pe care o ocupă în organigramă. cât posibil de ele. tele, fără a lua în considerare liderul știe cum să o trans- În aceste condiții angajații că uneori situațiile conflic- mită. Ei iși manifestă dorința sunt nevoiți să îi asculte pe tuale pot da naștere unor voluntară de face parte din manageri, pentru că altfel soluții cu impact pozitiv. implementarea acelei viziuni. pot fi penalizați. Mai mult decât atât, managerii spun Stilul de Leadership DELEGATIV Situațiile controversate din angajaților ce au de făcut. Rolul lider-ului este unul scăzut, deoarece angajații au și istorie, demonstrează că une- expertiza și motivația necesară pentru a îndeplini cu succes ori liderii pot avea și un impact sarcina de lucru. Este încurajat ca angajații să dețină controlul, negativ, nu doar pozitiv, dar iar liderul întervine fie când este solicitat, fie în situații de criză. puterea cu care au reușit să își Deciziile îi aparțin în totalitate angajatului, care cunoaște deja transmită viziunea și să îi atragă foarte bine sarcinile de lucru. Este etapa în care angajații pot primi pe ceilalți este impresionantă în noi responsabilități, poate chiar de Leadership. ambele cazuri. Stilul de Leadership DIRECTIV Liderii manifestă autoritate prin Managerii manifestă auto- Rolul lider-ului este unul ridicat, fiind direct responsabil de trăsăturile personalității lor. ritate prin puterea care le îndeplinirea sarcinilor. Membrul echipei, având motivația ridicată Sunt persoane carismatice cu este dată de poziția din și nivelul de cunoștințe scăzut, liderul este cel care ia deciziile și o comunicare foarte bună, care organigramă. comunică sarcina de lucru și o explică foarte în detaliu pentru ca reușesc să atragă. angajatul să înțeleagă și să știe ce are de făcut. Sunt exact primele săptămâni ale unui angajat la un loc de muncă, când entuziasmul Liderii sunt orientați spre oame- Managerii sunt orientați lui este peste măsură, iar fiecare sarcină îi dă prilejul să fie motivat nii, pentru că ei creează acele spre sarcină și pe ceea ce este că o poate îndeplini. relații personale cu ”follower- de realizat, mai mult decât ii”, înțelegându-le nevoile și ce spre crearea unei relații cu Stilul de Leadership COACHING îi determină să se implice atât angajații și înțelegerea nevo- Este unul dintre cele mai dificile stiluri de Leadership, deoarece de activ în implementarea unei ilor lor. angajații trec print-o perioadă de demotivare în care și nivelul lor viziuni. de expertiză este unul scăzut. Rolul liderului este dublu în această De menționat este faptul că situație, fiind direct responsabil de creșterea motivației, dar și de liderii deși sunt orientați către creșterea expertizei, astfel este necesar să fie atent la modul în care relații, ei au mereu în vedere comunică sarcina și la timpul pe care îl dedică angajatului. Este sarcina pe care urmează să o cea mai periculoasă etapă a Leadership-ului situațional, deoarece realizeze. riscul de a părăsi echipa este unul destul de ridicat. Această etapă se întâmplă la puțin timp după angajare, când angajatul motivat

www.todaysoftmag.ro | nr. 7/2012 21 HR programare Leadership Situațional

promovare profesională. Și acestea sunt doar câteva exemple de modalități prin care angajații pot fi motivați. Pentru a identifica și mai bine nivelul de satisfacție, se pot utiliza instrumente de evaluare a motivației: chestionare, intervi- uri și discuții individuale, focus grupuri. Teoretic vorbind, e simplu, în schimb când vine vorba despre implementare este mai dificil, dar cred că rezultatele care ar urma să se obțină ar fi deosebite. Cine nu și-ar dori să aibă un job la care să vină cu plăcere în fiecare dimineață? Nu cred în compania ideală sau în jobul ideal, dar cred cu tărie că e e necesar să îți înțelegi responsabilitățile, să le faci cu plăcere, să faci parte dintr-o echipă (nu dintr-un grup de oameni) cu o viziune și obiective de la începutul perioadei începe să se îndo- și vârsta pe care angajații o au, deoarece comune, cu un manager care să fie mai iască de capacitățile lui, într-un context și o influențează factorii motivaționali. (Ex: (1) mult decât o persoană într-o poziție ierar- echipă nouă. angajații tineri (25 – 30 ani) sunt motivați hică, pentru că în felul acesta se poate trece de programele de dezvoltare și de cât de mai ușor peste situațiile mai puțin plă- Stilul de Leadership SUPORT mult investește compania în crearea unui cute care pot fi întâmpinate. Am ocazia să Rolul liderului este de a facilita plan de carieră al lor, (2) angajații trecuți întâlnesc zilnic lideri din toate cele patru discuțiile și deciziile, care se încurajează a de vârsta de 30 ani sunt motivați de posi- categorii mentionate mai sus. Văd lideri fi luate de către angajat, care deja a ajuns la bilitatea unui program flexibil sau munca directivi, care sunt acolo să ofere cele mai un nivel de expertiză destul de ridicat. De de acasă, pentru a putea petrece mai mult detaliate explicații despre cum se reali- acestă dată liderul este cel care stimulează timp cu familia, (3) angajații mai în vârstă zează o sarcină și cum ajung la nivelul în pozitiv fiecare reușită a angajatului pentru (45 – 55 ani), care au ajuns la un nivel de care sarcina este înțeleasă și realizată ulte- a-i crește nivelul de motivație. expertiză ridicat pot fi motivați de impli- rior cu ușurință. Văd lideri care motivează Pentru ca aceste stiluri de Leadership să carea lor în pregătirea și dezvoltarea celor angajați și care sunt preocupați de nevoile fie implementate cât mai bine este necesar mai tineri). Sunt câteva aspecte, de care este lor de dezvoltare și contruiesc împreună cu ca fiecare lider să își cunoască îndeaproape recomandabil să se țină cont. angajații un plan de carieră. Văd lideri care fiecare membru al echipei. Sistemul de recompensare pentru scot ce e mai bun din oameni prin feedback Nivelul de expertiză este simplu de creșterea motivației, este din nou unul dife- și suport continuu. Văd colegi care sunt identificat, deoarece încă din prima clipă în rit. Majoritatea companiilor pun accentul capabili la rândul lor să devină lideri pen- care angajatul începe la noua companie se pe motivația financiară, care însă nu este tru cei cu mai puțină experiență și cărora le știe gradul de cunoștințe teoretice și prac- totul și care poate acoperi primele 2 nivele sunt delegate roluri și responsabilități mai tice pe care le deține. Evoluția este simplu ale piramidei lui Maslow, dar cu celelalte 3 mari. Văd o organizație care crește frumos de urmărit, prin constanta monitorizare ce se întâmplă? Răspunsul este simplu, se pentru că oamenii din interiorul ei cresc a modalității prin care își îndeplinește pot folosi alte tipuri de recompense: frumos. sarcina, prin ajutorul pe care îl solicită cole- • Recunoașterea publică a Vă doresc succes și dacă doriți să vă gilor sau liderului. De aceea este necesară o contribuției fiecărui angajat prin oferirea documentați mai în detaliu: Management evaluare a performanțelor pentru a se ana- de medalii, titluri sau avansări în funcție; of Organizational Behavior (10th Edition) liza evoluția fiecărui angajat. • Programe de recunoaștere: by Paul Hersey, Kenneth H. Blanchard and Nivelul de motivare este însă mai greu angajatul lunii (prin criterii clar definite), Dewey E. Johnson (Jul 28, 2012). de identificat, deoarece este necesară cre- sărbătorirea succeselor; area unei relații de încredere cu angajatul • Premii speciale pentru realizări și înțelegerea factorilor care îl motivează și deosebite, din nou prin oferirea de medalii îl ajută să devină productiv. Un sistem de si titluri; referință poate fi arhicunoscuta teorie a • Beneficii extra-salariale; lui Maslow. Este important de ținut minte • Oportunități de dezvoltare și

22 nr. 7/2012 | www.todaysoftmag.ro programare TODAY SOFTWARE MAGAZINE

Pledoarie pentru PHP

HP este un limbaj de programare dedicat dezvoltării paginilor și aplicatiilor web. Numele lui este un acronim recursiv însemnând PHP: Hypertext Preprocessor, Pnume adoptat după lansarea versiunii 3.0. Prima versiune creată în 1994 de Ca urmare a acestui succes și a faptului Rasmus Lerdorf, a fost scris în C și a fost că se dezvoltau nu numai pagini web ci şi o suită de scripturi pentru a monitoriza aplicații web, a fost nevoie de îmbunătățirea vizitele către pagina personală a acestuia performanței, astfel luând naștere versiu- (Personal Home Page Tools). Cu timpul nea 4.0 în anul 2000, în spatele careia apare Ioan Bercea acesta a adus mai multă funcționalitate pentru prima dată motorul . [email protected] suitei de scripturi, astfel încât aceasta era Versiunea 5.0, cea mai matură până în capabilă de conexiune la baze de date, ofe- prezent, bazată pe motorul Zend Engine Senior Web Developer @ 3Pillar Global rind astfel utilizatorilor capabilitatea să 2.0, a fost lansată in 2004, și aduce supor- dezvolte pagini de web dinamice. Dupa o tul pentru programarea OOP în PHP. Pasionat dezvoltator web, un geek perioadă în care a experimentat cu diverse Împreună cu câteva proiecte foarte apro- atent la noutatile din domeniu si care vede fiecare proiect o incercare. noi functionalități, a revenit în 1995 cu o piate de limbaj: PEAR si PECL, PHP-ul 10 ani experienta in dezvoltarea web, versiune rescrisă a PHP-ului. aduce o multitudine de facilități, librării și si am lucrat cu PHP, Perl, si ASP. Am lucrat in principal pe proiecte Limbajul a fost intenționat a fi asemă- extensii.. web, aplicatii web, in detrimen- nător cu C in structură, pentru a putea fi Aşadar, după această scurtă introducere tul paginilor web simple. Am perseverat si am continuat sa ușor adaptat de dezvoltatorii initiați cu C, în limbajul PHP nu putem nega că a făcut dezvolt folosind limbajul PHP, limbaj Perl si alte limbaje similare. dezvoltarea web accesibilă utilizatorilor. pe care il recomand in dezvoltarea În 1996 noua versiune 2.0 cuprin- proiectelor de orice dimensiuni. dea suport pentru DBM, mSQL şi Integrarea cu serverele web Postgres95, cookies, upload de fisiere și alte Integrarea PHP-ului cu serverele web functionalități importante paginilor web a cunoscut o varietate de modele. Primul dinamice. dintre ele, CGI, a fost baza de la care s-a În 1997, , plecat în dezvoltarea şi adaptarea acestui și Rasmus Lerdorf s-au decis să rescrie și să limbaj de programare. Modurile prin care îl transforme într-un limbaj de programare acest limbaj de programare a fost integrat matur/modern, având ca rezultat versiunea in serverele web sunt: CGI/FastCGI/SAPI 3.0, o versiune care a avut un mare succes pentru Apache, CGI/FastCGI/ISAPI pen- în rândul dezvoltatorilor de web acoperind tru IIS produs de Microsoft, și FPM pentru 10% din serverele web pe internet. noul si promițătorul web server nginx,

www.todaysoftmag.ro | nr. 7/2012 23 programare diverse Pledoarie pentru PHP

server web cu o crestere majoră în ultima ridicat continuă să țină PHP-ul ca limbaj de Oricum Python este un limbaj popular, perioadă datorită performaţei crescute și programare preferat in relație cu alte lim- care câștigă din ce in ce mai mulți adepți stabilităţii ridicate. baje de programare. în ultima perioadă datorită eleganței aces- CGI – Common Gateway Interface, tui limbaj, fapt exemplificat prin folosirea înseamnă că de fiecare dată când serverul PHP vs alte limbaje acestui limbaj de către Google. web primeşte o interogare pentru o pagina PHP, acesta încarca un process nou de PHP, PHP vs. Perl PHP vs ASP: acesta procesând cererea și oferind înapoi PHP a avut ca prototip limbajul Perl, PHP-ul utilizează o structură a limba- rezultatul serverului web, care la rândul lui deci şi sintaxa este asemănătoare, prin jului asemănătoare cu C/C++ pe când ASP îl trimitea browserului web. O îmbunătățire urmare PHP-ul are trăsături comune cu una asemănătoare cu Basic, iar perfor- a fost făcută cu FastCGI, astfel că nu la fie- Perl-ul. Dar PHP-ul a fost de la bun înce- manţa PHP-ului este una ridicată pentru că care request să se creeze un proces nou, put un limbaj de programare pentru web, rulează in zone de memorie dedicate (CGI/ ci acesta sa fie refolosit pentru alte cereri. pe când Perl-ul a fost creat ca un limbaj de FastCGI). Un proces de reciclare a fost de asemenea scripting. implementat, astfel că aceste procese aveau PHP vs Ruby: o perioadă fixă de viață determinată de PHP vs Python Ruby si prin framework-ul Rails, și-a numarul de cereri sau perioada de timp de PHP și Python sunt cele mai popu- atras foarte mulți adepți de la lansare. viață a procesului. lare limbaje de programare pentru web in Mulţi programatori PHP migrează după Integrarea ca modul în serverul web această perioadă. Sintaxa PHP-ului este câţiva ani înspre acest limbaj, dar de fapt Apache(SAPI) a fost încă o variantă în asemănătoare cu limbajul C, oricine care migrează nu spre un limbaj de programare care PHP-ul a fost integrat în serverul web, a lucrat cu C asimilează acest limbaj intr- ci spre un duplex: limbaj de programare cu PHP-ul devenind o componentă activă un timp foarte scurt. Sintaxa limbajului un framework. a serverului web și nu mai era un proces Python este bazată pe identare și este și ea Ambele sunt puțin deficitare, la capito- separat. Pentru serverele Windows, IIS foarte simplă, asemănătoare pseudo-codu- lul documentaţie, dar PHP-ul are avantajul aceasta poarta numele de ISAPI. lui. Folosind limbajele PHP, Perl, Ruby ai de longevității pe când la Ruby, aceasta nu a Cea mai nouă și cea mai avansată cele mai multe ori mai multe soluții pentru mai putut ține faţă creşterii rapide și are metodă de integrare, FPM (FastCGI a implementa o anumită funcționalitate, cateva lacune in documentație. Process Manager), este mai mult decât un pe când folosind limbajul Python nu este Trendul în folosirea PHP-ului pentru simplu FastCGI, prin facilitățile pe care așa încurajând dezvoltatorii să rezolve de la site-urile web rămâne încă unul crescător, această tehnologie le aduce: control fin al bun inceput o problemă folosind cea mai de la 77.2% dintre site-uri web in decem- procesului PHP care rulează, capabilitatea bună soluție. brie 2011, la 78,5% in decembrie 2012. de a controla numărul de procese în funcție PHP-ul deține o listă mai mare de de incărcarea serverului, controlul acestor utilitare de profiling, debuging, framework- Avantaje procese prin pornirea acestora sub diferiţi uri, extensii si librarii open source, facând Fără a intra în polemici şi fără a începe useri și multe altele. munca dezvoltatorului una mai ușoară, un război al limbajelor de programare ser- Dezvoltarea continuă şi interconecta- acestuia revenindu-i doar alegerea instru- ver side, putem uşor distinge avantajele rea cu serverele web în vederea creșterii mentului necesar în rezolvarea problemei alegerii PHP-ului ca limbaj de programare performanței si al unui nivel de securitate cu care se confruntă. pentru un proiect web: un număr mare de

24 nr. 7/2012 | www.todaysoftmag.ro diverse TODAY SOFTWARE MAGAZINE

experți în comparație cu celelalte limbaje, o adaptate la noile cerințe în materie de este un caz special, nu doar datorită documentaţie bogată, o comunitate mare şi performanță, securitate și scalabilitate. complexității acestuia, a încercărilor și a multitudinea de resurse de ajutor (librarii, Framework-uri mature ca și obstacolelor tehnice prin care trec echipele extensii, framework-uri moderne) Zend Framework ajunse amandouă la ver- (dezvoltare, deploy, QA) de la Facebook, Dezvoltatorul web nu este definit de un siunea 2.x, utilizează noile facilități puse la dar și prin modul de rezolvare a unei pro- limbaj de programare, acesta fiind doar un dispoziție de limbajul de programare. bleme specifice proiectelor de o asemenea instrument al muncii sale. Când proiectul În paralel, dezvoltarea librariilor amploare. o cere, el poate alege un alt instrument sau ORM(Object Relational Mapping) folosite Performanța PHP-ului a devenit motiv chiar mai multe, poate chiar mai eficient(e) de aceste framework-uri ține pasul cu noile de ingrijorare în cadrul echipei dupa cres- pentru respectivul proiect. necesități. Printre cele mai importante terea masivă a utilizării portalului, și au Doctrine, Propel și ZendORM au progresat, ajuns la a face o alegere între a inlocui PHP Dezavantaje si chiar există o concurență constructiva sau a găsi o altă metodă de imbunătățire a PHP-ul ca limbaj de programare are între ele, spun constructivă, pentru ca acestei performanțe. o istorie destul de lungă, iar de-a lun- aceasta declansează o creștere importantă Și astfel a apărut proiectul HipHop, gul timpului a cunoscut multe rescrieri, a performaței acestora. acesta fiind lansat in 2010 ca proiect open îmbunătățirii și fixuri. Unele dintre cele Framework-ul Symfony, s-a remarcat source pe github, sub licență PHP 3.0. mai numeroase erau din categoria secu- de la apariție ca fiind un framework HipHop pentru PHP este un instrument ritate. Dar acestea sunt probabil legate care promovează un design si o struc- de transformare a codului PHP în cod de procesul prin care versiunile de PHP tura care permite o dezvoltare rapidă a cod sursă, realizându-se astfel o reducere erau inițial lansate, un proces care a fost aplicațiilor (RAD). Symfony încurajează a utilizării CPU pe serverele Facebook schimbat recent. Deși este un limbaj de dezvoltatorul să respecte un set de bune de până la 6 ori. O îmbunătățre mai mult programare open source, PHP-ul are mai practici în dezvoltarea aplicatiilor web. De decat masivă, care este acum disponibilă nou un grup organizat denumit PHP/QA asemenea o comunitate în creștere si activa comunității PHP. Team, care are ca scop principal susținerea face ca acest framework sa fie unul foarte dezvoltatorilor printr-o calitate ridicată a atractiv pentru dezvoltarea de aplicații web. Yahoo versiunilor lansate. În momentul de față, Symfony se Un alt caz demn de menţionat este Pe de altă parte PHP-ului, i se poate definește a fi: un framework PHP, o filozo- Yahoo, la care în anul 2002 s-a inceput tre- reproșa câteva elemente de neconsistență: fie si o comunitate. cerea de la un sistem proprietar scris în C/ numele neconsecvent al funcțiilor, ordi- Unul dintre framework-urile CMS, C++ la PHP. nea nefirească a parametrilor unei funcții, a anunțat anul acesta că de la versiu- anumite soluții adaptate care pot fi puțin nea 8.0 va folosi componente Symfony, ceea Viitorul stangace. La un anumit nivel, acest limbaj ce demonstrează că Symfony e un model de Relativ recent au fost lansate versiuni cere mai multă atenție dezvoltatorului, urmat și oferă pe lângă un framework com- noi, 5.2, 5.3, 5.4 si 5.5-Alpha, prin care se tocmai datorită flexibilității mari pe care o plet pentru dezvoltarea aplicațiilor web, si continuă o îmbunătățire majoră a limba- oferă acest limbaj. alte resurse și inovații integrabile indepen- jului de programare. S-au adăugat acestuia dent în alte proiecte web. suport pentru Namespace-uri, „traits”, Framework-uri Am dat ca exemplu acest framework, „late static bindings”, „generators”, alături Ca o consecință a creșterii prezentei datorită experințelor mele plăcute cu el. de îmbunătăţiri mai mici şi defecte fixa- PHP-ul ca limbaj preferat al dezvoltatorilor Experiențe nelipsite de incercări sau pro- tei. Versiunea 6.0, care deocamdată se lasă web, au apărut numeroase framework-uri vocări şii chiar de-a dreptul interesante. puţin aşteptată, promite un suport nativ dedicate diverselor tipuri de web site-uri Una dintre calitățile pe care le văd la complet pentru Unicode în PHP și este incă și/sau applicații web. Au fost acoperite acest framework, pe lângă resursele bogate in dezvoltare. majoritatea domeniilor: de la e-commerce, ca documentație, pluginuri, bundle-uri, blogging, pagini de socializare până la code snippets, tutoriale (chiar video), este Concluzie infrastructura aplicatiilor web complexe faptul că acest framework oferă dezvol- PHP-ul ca limbaj de programare activ, prin framework-urile de tip MVC (Model/ tatorului mai mult timp pentru a rezolva în dezvoltare, are o fundație solidă, un View/Controller). problemele de arhitectură, de design al istoric bogat, o comunitate activă și inova- Wordpress, ca un framework de tip noului produs, în detrimentul la a scrie toare. Librarii, extensii, framework-uri și CMS (Content Management System), a cod în cantități industriale. Pentru orice module se dezvolta intr-un ritm continuu ușurat dezvoltarea multor website-uri de problemă există o soluție deja scrisă, lăsând si accelerat oferind dezvoltatorului web o tip blog, făcând din nou, web-ul accesibil dezvoltatorul să rezolve doar probleme spe- paleta întreagă de alegeri în proiectarea și nu numai experților, sau dezvoltatorilor, cifice proiectul. implementarea unei soluții complete. PHP dar și editorilor de conținut informational rămâne înca principalul limbaj de progra- de pe net. Framework-uri ca Magento si Cazuri celebre mare folosit pentru web. osCommerce dedicate magazinelor online au adus și ele o infrastructura pentru o Facebook multime afaceri de retail online. Pe lângă numeroase și cunoscute mari Framework-urile de tip MVC sunt în website-uri realizate în PHP (Wikipedia, continuă dezvoltare, apărând noi versiuni Yahoo, Digg, etc) este și Facebook, care

www.todaysoftmag.ro | nr. 7/2012 25 programare management

Platforme de rulare alternative pentru PHP

HP este un limbaj dinamic, disponibil pe o multitudine de platforme folosind interpretorul standard. Există totuşi alternative la acest interpretor care oferă dife- rite caracteristici care pot să fie avantajoase în anumite circumstanţe. Acest articol îPşi propune să ofere o prezentare sumară a opţiunilor existente cu o prezentare teoretică şi o parte practică. Partea practică constă în rularea unui test de performanţă sintetic din distribuţia PHP şi testarea unui site WordPress cu Apache Bench .

Platforma de testare a fost o maşină vir- valorile teoretice ale altor platforme tuală cu 4 procesoare i7 2.4GHz cu sistemul mai exotice; de operare Ubuntu 12.10 Server / Windows Attila-Mihaly Balazs 7 Pro şi 1G de memorie. S-a folosit o Interpretorul standard PHP disponibil [email protected] instalaţie de WordPress 3.4.2 populat cu pe php.net este scris în C şi execută codul Code Wrangler @ Udacity conţinutul site-ului transylvania-jug.org. sursă în doi paşi: Trainer @ Tora Trading Baza de date folosită pentru WordPress a • parsează codul sursă şi generează o fost MariaDB 10.0 sub Linux şi MySQL 5.5 serie de -uri care reprezintă sub Windows. funcţionalitatea conţinută în fişierul Testele de performanţă au fost repetate original. de mai multe pentru a vedea dacă rezulta- • execută bytecode-ul cu ajuto- tele sunt stabile şi reproductibilie. În cazul rul interpretorului şi generează platformelor care folosesc tehnologia JIT rezultatul. s-a executat o etapă de “încălzire” ca să mă asigur că a rulat procesul de compilare. Această strategie de execuţie suge- rează o posibilitate de optimizare evidentă: Interpretorul standard memorarea bytecode-ului generat şi evi- • Uşurinţa configurarii/utili- tarea parsării repetate a sursei dacă acesta zarii: uşor (de multe ori vine nu s-a modificat. Această optimizare este preconfigurat); implementată de mai multe librării cunos- • Cost: gratis; cute sub denumirea de “PHP opcode • Platforme suportate: *nix, cache” sau “PHP accelerator” dintre care Windows, Mac OS X, ... am testat patru (o listă mai detaliată poate • Avantaje: uşurinţa de folosire, com- fi găsită pe Wikipedia): patibilitate aproape perfectă, spor • APC - Alternative PHP Cache, de performanţă peste 50% (în cazul • XCache, opcode cache-urilor); • eAccelerator, • Dezavantaje: Sporul de perfor- • Zend Server. manţă este mic comparativ cu

26 nr. 7/2012 | www.todaysoftmag.ro management TODAY SOFTWARE MAGAZINE

Primele trei opţiuni sunt open-source (teoretic); server”, cea ce înseamnă că se ocupă de şi gratis, iar a patra este un produs comer- • Dezavantaje: numărul restrâns toate aspectele rulării aplicaţiei, nefiind cial al companiei Zend Technologies care de plaforme suportate, numărul necesar folosirea unei alte aplicaţii (de include mai multe facilităţi cum ar fi moni- restrâns de plugin-uri (extensions) exemplu, Apache ca şi server web, Squid/ torizarea performanţei, depanare uşurată suportate , nu toate funcţiile PHP Varnish pentru reverse proxy, un database şi aşa mai departe. Pentru testare s-a folo- sunt suportate (de exemplu nu este connection pooler, etc), toate aceste roluri sit Apache 2.2 în modul mpm-prefork suportat preg_replace). fiind îndeplinite de . Modulul din cu mod-php. Am testat scurt şi varianta Resin responsabil pentru rularea codului FastCGI dar n-am observat o diferenţă de Hip-Hop VM este un mediu de rulare PHP se numeşte Quercus. performanţă (acesta fiind zise, testul s-a pentru PHP folosit de cei de la Facebook Cei care au folosit alte application ser- concentrat exclusiv asupra performanţei pentru rularea codului PHP din spatele vere Java gen Tomcat se vor simţi acasă. de execuţie a PHP-ului - într-o situaţie site-ului Facebook. El a fost scris pentru Ceilalţi vor avea nevoie de puţin timp de mai puţin artificială este foarte posibil să că acceleratoarele (opcode cache-urile) acomodare. Avantajul cel mai mare oferit existe diferenţe substanţiale între cele două clasice nu ofereau sporul de performanţă de Resin este integrarea uşoară a codului alternative). dorit dar în acelaşi timp compania n-a vrut Java cu PHP (din codul PHP pot fi instan- O alternativă testată separat (a se să schimbe limbajul de programare folo- ţiate clase Java, apelate metode Java etc). vedea “IIS 7.5 cu PHP 5.4.9” mai jos) este sit. Ca proiect, Hip-Hop a trecut prin mai Totodată este o soluţie demnă de luat în WinCache care oferă facilităţi similare. multe faze : calcul în cazul unei companii unde există Este sponsorizat de Microsoft şi este spe- • iniţial, transforma codul PHP în multă expertiză pe partea de Java şi trebuie cific pentru platforma Windows / server-ul cod C++, care era compilat cu GCC folosite câteva aplicaţii PHP. IIS. . Proiectul era numit HPHPc în Cel mai mare dezavantaj este faptul că Am rulat testele şi în prezenţa extensiei această fază, nu foloseşte librăriile standard PHP, ci le de securitate Suhosin şi nu a fost obser- • compilarea folosind HPHPc cu GCC reimplementează pe toate în Java (iar setul vat nici o degradare de performanţă. Acest era lentă (comparativ cu modul de funcţiilor reimplementate nu este încă lucru exemplifică faptul că securitatea nu lucru obişnuit “salvează şi rulează” complet). Există două versiuni a serveru- trebuie neapărat să deterioreaze alte carac- a unui dezvoltator PHP). Din acest lui: cel open source, disponibil gratuit şi cel teristici (cum ar fi performanţa). motiv s-a creat HPHPi care avea ca comercial pe bani. Performanţa îl situează Cum se poate vedea din rezultatele de scop rularea codului într-un mediu în mijlocul soluţiilor testate. la finalul articolului, aceste soluţii oferă un asemănător cu cel de producţie, dar spor de viteză de peste 50% în cazul exe- fără ca programatorul să aştepte tot IIS 7.5 cu PHP 5.4.9 cuţiei repetate de cod PHP dinamic. Dacă procesul de compilare, • Uşurinţa configurarii/utilizarii: codul respectiv este executat o singură • în faza curentă se lucrează la crearea mediu / dificil; dată, ele nu oferă nici un avantaj, ba chiar unei maşini virtuale numit HHVM • Cost: pe bani (IIS, Windows) / gratis încetinesc puţin procesul de execuţie (cum care să optimizeze codul folosind (PHP); se poate vedea în coloana “bench.php” din tehnologia JIT. • Platforme suportate: Windows; tabelă unde valoarea cea mai mică găsim în • Avantaje: disponibilitatea tuturor cazul în care n-am folosit nici un opcode Instalarea s-a realizat folosind pache- extensiilor standard, integrare cu cache). tele precompilate pentru Ubuntu 12.04 tehnologii Windows (COM, Active Menţiune: aceste soluţii sunt generale (compilarea eşuează momentan pe Ubuntu Directory, etc); funcționând pentru orice tip de site care 12.10) şi indicaţiile pe blog-ul “HipHop for • Dezavantaje: cost, procesul de con- se foloseşte de PHP. Pentru cazuri specifice PHP” . Anumite plugin-uri de WordPress figurare complicat. există soluţii care pot să aducă un spor de au trebuit dezinstalate pentru că folosesc performaţă mult mai mare faţă de solu- funcţii nesuportate de HHVM. Rezultatele Există mai multe metode pentru instala- ţiile generice. De exemplu instalând un obţinute au fost mult sub aşteptări. rea interpretorului standard sub Windows: plugin de cache-ing pentru WordPress am manual, folosind WebPI , pachete gen putut să reduc timpul de execuţie pentru Caucho Resin XAMPP , etc. Pentru acest test s-a ales ApacheBench la 0.08 secunde (o îmbunătă- • Uşurinţa configurarii/utilizarii: instalarea manuală pentru că WebPI insta- ţire de peste 80x fată de cel mai bun opcode mediu-uşor; lează PHP 5.3. S-a instalat şi WinCache cache!). • Cost: gratis / pe bani; 1.3.4 pentru o performanţă mai bună • Platforme suportate: Windows, (WinCache nu este instalat de WebPI). Hip-Hop VM de la Facebook Linux, Mac OS X, etc; Au fost întâmpinate mai multe dificultăţi • Uşurinţa configurarii/utilizarii: • Avantaje: performanţă sporită, clus- în timpul procesului de benchmarking, cel mediu (există pachete precompi- tering, scalabilitate, integrare uşoară mai deranjat fiind prezenţa unui timp mort late pentru anumite distribuţii de cu sisteme Java; approximativ 2 secunde la fiecare cerere Linux); • Dezavantaje: numărul de extensii HTTP, cea ce a rezultat în valori foarte • Cost: gratis; limitată, cost. proaste la prima rulare a testului. Cauza a • Platforme suportate: *nix; fost o problemă de DNS şi a fost rezolvat • Avantaje: performanţă sporită Caucho Resin este un “application cu ajutorul opţiunii “skip-name-resolve” în

www.todaysoftmag.ro | nr. 7/2012 27 programare business Platforme de rulare alternative pentru PHP

configuraţia de MySQL şi prin modificarea sursei de Wordpress în • php.js - este o implementare parţială a unui compilator sensul utilizării de conexiuni persistente. PHP-la-Javascript. Acest lucru creaeză fundaţia la cazuri de folos interesante (cum ar fi rularea codului PHP direct IIS 7.5 cu 3.0 într-o pagină web sau pe partea de server cu Node.js), dar • Uşurinţa configurarii/utilizarii: mediu / dificil; momentan nu poate să parseze nici măcar bench.php. • Cost: pe bani (IIS, Windows) / gratis (PH); • Roadsend PHP şi Roadsend PHP Raven - sunt două • Platforme suportate: Windows, Linux (prin Mono); compilatoare PHP înrudite care nu mai sunt dezvoltate în • Avantaje: disponibilitatea tuturor extensiilor standard, mod activ şi nu sunt compatibile cu versiunile curente ale posibilitatea de a folosi extensii native, compilate pen- librăriilor folosite. tru Windows, integrare cu .NET, integrare cu tehnologii • Pipp - este implementarea de PHP pentru ParrotVM, o Windows (COM, Active Directory, etc); maşină virtuală creată pentru “compilarea şi executarea • Dezavantaje: cost, procesul de configurare complicat. bytecode-ului limbajelor de programare dinamice”. Nu este dezvoltat în mod activ şi nu este compatibil cu librăriile Phalanger este o implementare a limbajului PHP pe platforma curente. .NET de la Microsoft. Este un proiect open source şi poate fi folosit • PHP4Mono - a fost dezvoltat în 2005 în cadrul unui pro- pe mai multe platforme / cu mai multe servere web (Apache sub iect de diplomă. Dezvoltarea s-a oprit în 2006, iar varianta Windows, IIS sub Windows, Apache sub Linux cu Mono). Dintre curentă nu este capabilă să compileze bench.php. ele, varianta cu IIS este cea mai uşoară de configurat, de aceea s-a • Project Zero / IBM sMash - un proiect de la IBM care nu ales testarea ei. mai pare să fie suportat. Era un runtime scris în Java care Pe lângă presupusul avantaj de viteză, Phalanger mai are câteva avea ca avantaj faptul că putea să folosească direct extensiile avantaje: native de PHP prin JNI. • integrarea strânsă între .NET şi PHP (din PHP poate fi ape- lat cod .NET şi invers), Concluzii • include un compilator care poate să genereze executabile Nu există o soluţie generală care să funcţioneze pentru orice din fişiere PHP (care depind the framework-ul .NET şi fel de aplicaţie PHP. Tehnologiile / platformele merită considerate librăriile Phalanger), dacă există o necesitate de a oferi o funcţionalitate specifică lor • poate să folosească extensii native, compilate pentru (de exemplu integrare cu Java sau .NET) dar nu oferă un avantaj Windows daca nu este disponibilă varianta “managed” a de performanţă. În acelaşi timp folosirea lor presupune un grad acestora. ridicat de familiaritate cu platforma respectivă (de exemplu WEB- INF/ sau web.config) şi nu este recomandată celor care n-au mai Alternative netestate folosit platforma pentru alte aplicaţii. Opţiunile analizate în detaliu au fost cele uşor accesibile şi Punctul de pornire ar trebui să fie unopcode cache (proba- suportate în mod activ de comunitate. Insă o multitudine de pro- bil APC sau eAccelerator) şi module specifice aplicaţiei pentru iecte care nu se încadrează în aceste categorii, dintre care vom cache-ing (cum ar fi W3 Total Cache sau WP Super Cache pentru enumera: Wordpress). • TalariaTech - un produs comercial, site-ul lor conţine foarte puţine detalii. Vorbeşte despre un câştig de perfor- manţă de 10x “pe aplicaţii reale gen WordPress sau Drupal”. Rezultatele testelor de performanţă • php-llvm - este o extensie care generează cod nativ din byte- code-urile de PHP folosindu-se de proiectul LLVM . Este în stare incipientă a dezvoltării, n-am reu- şit să-l compilez. • phc - the open source php compi- ler - se bazează pe acelaşi idee ca şi versiunea iniţială de la Hip-Hop (transcrierea codului PHP în cod C++ şi compilarea lui cu GCC). Din păcate versiunea curentă nu poate fi compilată sub Ubuntu 12.10. • Hippy VM - proiect open-source bazat pe PyPy. A fost gândit ca şi un test de performanţă, nu are acces la extensiile PHP, nu oferă un mod de a fi integrat cu un ser- ver web.

28 nr. 7/2012 | www.todaysoftmag.ro business TODAY SOFTWARE MAGAZINE

Care sunt cu adevărat castraveții grădinarului ISV?

u mai este o surpriză pentru nimeni că trăim timpuri hiperdinamice în care rit- mul impus de noile tendințe și tehnologii creează un mediu favorabil celor care Nsunt capabili să se adapteze rapid, anticipând pozițiile pe care piața le va adopta. Organizațiile se află astfel sub presiunea fel de clară. Întrebarea care apare este - care de a-și crește gradul de agilitate, iar după sunt cu adevărat „castraveții” producătorilor cum am învățat în ultimele câteva dece- de soluții software standard? Sau altfel spus, nii cel mai eficient mod de a realiza acest are sens ca un ISV să-și externalizeze proce- deziderat este prin concentrarea eforturilor sul de dezvoltare al propriului produs? Mihai Nadăș organizației asupra aspectelor care con- [email protected] tează cu adevărat și totodată externalizarea Provocările unui ISV CTO funcțiilor ce pot fi gestionate mai eficient de Pentru a răspunde corect la această între- @ Yonder către experți externi acesteia. bare, întâi trebuie să privim puțin asupra

CTO la Yonder, în rolul său fiind principalelor provocări pe care companiile responsabil de activitățile R&D și Dilema ISV le au în noul context de dezvoltare al creșterea nivelului de inovație al produselor partenerilor Yonder. Provocarea constă în a diferenția produselor software. funcțiile critice, ce conferă unicitate valo- rii de piață a organizației, de cele ce pot fi Flexibilitate externalizate. Grădinarul nu va cumpăra Condiția de adaptare necesită flexibi- castraveți de la alt grădinar, fiindcă ar litate în alocarea de resurse de dezvoltare. însemna să-și limiteze potențialul și valoa- Optimul poate fi atins doar cu echipe ce vari- rea adăugată, deci implicit și marja de profit, ază în timp ca mărime, iar această situație e însă va fi întotdeauna interesat să cumpere dificil de realizat în momentul în care cos- echipamentele, tehnologia de cultivare, turile cresc de la an la an. Oportunitățile de îngrășămintele, pesticidele, fungicidele extindere și optimizare a produselor sunt și semințele de la furnizori specializați. neglijate din cauza presiunii care vine din Producătorii de soluții software standard partea pieței și a concurenței. Ideile noi tre- (companiile ISV) se confruntă cu aceeași buie sa aștepte în lista de priorități, iar de dilemă, însă complexitatea ușor mai mare multe ori ajung să fie implementate cu întâr- decât în cazul legumiculturii determină ca ziere, ratându-se astfel ocazii de dezvoltare granița dintre produsul final, procesul de și reducere a costurilor. dezvoltare și tehnologia folosită să nu fie la

www.todaysoftmag.ro | nr. 7/2012 29 business Care sunt cu adevărat castraveții grădinarului ISV?

Inovație procesului de dezvoltare are de suferit, iar analogie simplă cu Cloud Computing m-a Tehnologia evoluează într-un ritm cu costurile finale ajung să fie semnificativ dus cu gândul la DaaS - Development as a care echipa de dezvoltare tradițională nu mai mari decât optimul. Service. Credem că reprezintă cu fidelitate poate ține pasul astfel încât să aibă atât esența a ceea ce poate fi o nouă tendință în o viziune în ceea ce privește aplicabili- DaaS piața software și anume specializarea unor tatea noilor tendințe și tehnologii cât și Lista de mai sus reprezintă un set companii în direcția în care servesc produ- experiența în implementarea practică a comun de provocări pentru mai toate cătorii de soluții software standard într-un acestora. Consecința se rezumă la întarzi- companiile ISV cu care intru în con- mod transparent, dar complet externalizat erea ciclurilor de modernizare care implică tact, indiferent de mărime. Soluția pe procesul de dezvoltare (SDLC). costuri și limitarea de oportunități noi. De care am găsit-o ca fiind cea mai potrivită pildă, Cloud Computing este o paradigma de fiecare data constă în externalizarea care inevitabil va dicta noua ordine în responsabilității de rezolvare a acestora. Legături externe următorul deceniu, însă chiar dacă tehno- Motivul este unul cât se poate de sim- • innovation.tss-yonder.com logia din jurul acesteia este disponibilă pe plu - „castraveții” companiilor ISV sunt • mihainadas.com piață de cel puțin 5 ani prea puține compa- produsele pe care le vând pe piață. Acest nii și-au definit o strategie clară de adopție. lucru înseamnă că ceea ce este cu adevă- Va apărea un moment nu foarte îndepărtat rat esențial pentru aceste companii este în care se va trece pragul de adopție critică, să înțeleagă și să aibă o viziune asupra iar cei care nu vor fi beneficiat de pe urma a ceea ce așteaptă piața, să structureze avantajelor oferite de noul model în acel aceste cerințe și în final să vândă produ- moment vor avea de suferit. sul. Procesul prin care cerințele identificate ajung să fie concretizate într-o nouă ver- Eficiență și predictibilitate siune de produs poate fi și conform Procesul de dezvoltare a soluțiilor observațiilor făcute de-a lungul timpului. software este unul complex și expus ris- La fel cum în 2020 prea puține companii curilor. De cele mai multe ori rigoarea vor mai cumpăra infrastructura de calcul este sacrificată în favoarea atingerii ter- pe care o vor gestiona în regim propriu, menelor limită, iar aceasta are impact alegând în schimb modelul IaaS, la fel asupra calității și gradului de satisfacție a companiile ISV trebuie să înceapă să se clientului final. Totodată, din cauza lipsei gândească la un model similar pentru unui grad ridicat de maturitate, eficiența dezvoltarea tehnică a produselor lor. O

30 nr. 7/2012 | www.todaysoftmag.ro programare TODAY SOFTWARE MAGAZINE

Introducere în Grails (II)

ă creem acum pagina de login a aplicației noastre. Cum am specificat la început, Grails folosește convenții. Acest lucru înseamnă că dacă avem o clasă domeniu numită “User” , va trebui să ai un “UserController” controller. Dacă în controller existăS o acțiune, ca și “login”, va trebui să ai un view numit “login” în folderul grails-app/ views/user.

Pentru crearea de view-uri, Grails oferă ale unui user pe care l-am creat în BootStrap. un script: generate-views com.todaysoft- Loginul este cu succes și suntem redirectați mag.gsn.User, dar pentru moment putem spre /message/list, dar deocamdată nu este

Tavi Bolog crea view-urile de mână. nici o acțiune și view associate cu acest url și [email protected] Numele fișierului estelogin.gsp (acro- vedem pagina de eroare a Tomcat-ului. nim pentru Groovy Sever Pages) și vom Development lead @ Nokia adăuga un form la el. Listingul fișierului este aici: https://github.com/tavibolog/ GrailsSocialNetwork/blob/master/grails- app/views/user/login.gsp. Acesta este un fișier HTML cu taguri Pentru a evita, vom adăuga acțiunea adiționale specifice Grails. Acestea sunt des- “list” în MessageController:

tul de asemănătoare cu alte template-uri de def list() { def allMessages = Message.list() view-uri, așa că nu se va insista prea mult. def myMessages = Message. findAllByUser(session.user) Un lucru de menționat este parametrul “url” [allMessages: allMessages, al form-ului Grails, care este folosit pentru myMessages: myMessages] specificarea controller-ului și acțiunii care } trebuie să se execute când form-ului este Această acțiune va returna toate postat. instanțele Message și toate mesajele use- Să pornim aplicația acum, rulând rului curent. După un login cu succes, comanda run-app și accesând http:// obiectul reprezentând userul curent este localhost:8080/GrailsSocialNetwork . Se setat pe sesiunea aplicației și poate fi folosit observă că aplicația este redirectată spre în controllere. Ambele operații sunt posi- pagina de login: http://localhost:8080/ bile datorită GORM. Actiunea va returna GrailsSocialNetwork/user/login. Datorită o mapă care va conține două liste și le vom filtrului pe care l-am creat, Grails a redirec- afișa pe ambele înview-ul asociat: “list.gsp”. tat aplicația spre UserController și acțiunea Câteva lucruri de menționat: “login”, care a afișat pagina “login”. Dacă • Numele cheii și valorii în mapa retur- încerci să te autentifici cu o combinație inco- nată este identic, dar aceasta e doar rectă de utilizator și parolă, se observă un obișnuință și nu este nici o restricție mesaj de eroare afișat de aplicație: “Wrong aici. username and password!”, pentru că în acest • În Groovy, cuvântul cheie “return” nu caz, acțiunea “login” afișează pagina de login este obligatoriu, dar ultima expresie căreia îi transmite modelul, care este de fapt care poate fi evaluată este considerată o mapă. In cazul nostru mapa conține o valoarea returnată. cheie “message” și valoarea asociată (mesa- • În mape se pot pune tipuri de date jul de eroare). Apoi, în view-ul de “login”, diferite, dar fiți atenți când le citiți. verificăm existența variabilei “${message}” și o afișăm ca eroare. “model” este implicit Listingul view-ului este aici: https:// in fișierel GSP, deci nu trebuie apelat în mod github.com/tavibolog/GrailsSocialNetwork/ explicit. blob/master/grails-app/views/message/list. Să folosim acum credențialele corecte gsp

www.todaysoftmag.ro | nr. 7/2012 31 programare Introducere în Grails (II)

Câteva lucruri de menționat: obiect Message care va fi pasat înapoi “save” în a accepta doar HTTP POST, • Obiectul session este folosit pentru a view-ului. în timp ce celelalte acțiuni nu au nici o

afișa userul current logat în aplicație. def create() { restricție. [message: new Message(params)] Sintaxa “session?.user” este folosită } static allowedMethods = [save: „POST”] pentru a verifica dacă obiectul “ses- Acțiunea “save” este cea care realizează sion” este null înainte de a accesa postarea mesajului și se ocupă de validare Unit testing “user”-ul. și redirectări: Grails creează în mod automat clase de

• Flash.message este un mesaj infor- def save() { unit test pentru fiecare controller, serviciu, def message = new Message(params) mativ folosit pentru a afișa un domeniu, filtru, etc creat. În acest capitol def user = User.findById(session.user.id) rezultat al unei operații anterioare. user.addToMessages(message) vom discuta despre scrierea și rularea unit if (!message.validate()) { Se va vedea mai jos cum un astfel de render(view: „create”, model: testelor. Grails creează testele în folderul [message:message]) mesaj este creat în controllere. “test”. Testele pot fi “unit” și “integration” return • G:link afișează un link spre acțiunea } (mai există și o a 3-a categorie, funcționale, if (!user.save(flush:true)) { “create”. Pentru că nu este specificat render(view: „create”, model: dar acestea folosesc alte framework-uri [message: message]) nici un controller, acțiunea trebuie pentru a testa folosind request-uri HTTP). }else{ să existe în MessageController (con- flash.message = „Message posted with success!” Testele de integrare au valoare în testarea redirect(action: „list”) trollerul current). } integrării componentelor aceleași aplicații • G:each este folosit pentru a itera } sau integrarea cu componente 3rd party. Nu peste liste de obiecte. Lista este Să vedem ce se întâmplă aici: vom insista cu acestea, dar vom menționa declarată în parametrul “in” și se • Creăm un obiect Message din para- că ele pot fi rulate din consola Grails, folo- poate defini și un nume de varia- metri request-ului veniți din view-ul sind: test-app –integration sau test-app bilă în “var” pentru a fi folosită în “c r e a t e”, –integration . Și că testele de integrare sunt este nici o variabilă definite, “it” este mesajul cu el, mult mai încete decât unit testele datorită numele predefinit. Pentru a afișa un • Validăm mesajul. În acest moment contextului de care au nevoie. mesaj postat, apelăm metoda toS- constrângerile pe care le-am definit Unit testele sunt partea mea favorită tring() implementată pentru clasa vor fi evaluate și în caz de erori vom din testare, pentru că sunt rapide, izolează o Message: avea atributul “errors” are obiectului problemă în cod foarte rapid, nu depind de

String toString() {message + „ on „ + date + updatat cu erorile respective, alte sisteme care să ruleze și ajută la testarea „ by „ + user} • Dacă validarea nu este cu succes, corner-case-urilor (folosind mocking). care folosește toString() din clasa User vom re-afișa view-ul “create” cu Să scriem câteva unit teste, începând cu (observați din nou ca folosirea lui “return” erorile pe care le avem (partea de MessageController class. Acesta are o clasă nu este obligatorie): internaționalizare a mesajelor va fi de test asociată, MessageControllerTests:

String toString() {userName} discutată în articolul următor), @TestFor(MessageController) class MessageControllerTests { Acum vedem toate mesajele prieteni- • Dacă validarea este cu succes, per- def messageController @Before lor nostril afișate și de asemenea le putem sistăm modificările și cerem GORM public void setUp() {messageController = new MessageController()} vedea pe ale noastre. Un ultim lucru pe care să golească buferul tranzatiilor sale, void testRedirectOnIndex() { îl vom implementa este crearea unui nou • Dacă persistarea nu este cu succes, messageController.index() assertTrue response.redirectedUrl == mesaj pentru a ne putea ține prietenii la vom re-afișa vieweul “create cu ero- „/message/list”

curent cu ceva facem acum. rile pe care le avem, } Pentru aceasta vom crea acțiunile “cre- • Dacă totul este ok, aplicația va fi } ate” și “save” în MessageController și view-ul redirectată spre lista de mesaje, Să vedem ce se întâmplă aici: asociat aici: grails-app/views/message/cre- afișând un mesaj de tip “flash”. • Annotarea @TestFor mar- ate.gsp. Listingul este aici: https://github. Aceste mesaje pot fi folosite pentru chează ca acest test este pentru a capta atenția utilizatorului. MessageController, • Metoda setup functionează ca și în Un alt constraint care poate fi adăugat, cazul lui JUnit (este executată înain- ajută la restricționarea tipurilor de requ- tea fiecărei metode de test datorită est-uri HTTP pe care le poate accepta o annotări @Before), • testRedirectOnIndex este metoda de test (dacă începe cu “test” nu com/tavibolog/GrailsSocialNetwork/blob/ este nevoie de annotarea @Test, dar master/grails-app/views/message/create. annotarea poate fi folosită la rândul gsp. ei), Acțiunea “create” este folosită pentru a • Testul apelează metoda “index” prelua eventuali parametri când se afișează acțiune a unui controller. Aceasta este sim- a controllerului care execută un view-ul. Este destul de basic, doar pasând plu de realizat în Grails – exemplul de mai redirect, parametric din request pentru a crea un jos arată cum se poate restricționa acțiunea • Testul verifică redirectarea spre

32 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE

controller-ul și acțiunea așteptată datelor de test. Grails 2.0.4 și Groovy 1.8. (response este un obiect disponibil • functia mockDomain este folosită În articolul următor vom conti- în teste). pentru a mock-ui clasele specificate nua discuția despre Grails: validatori în annotarea @Mock. Acesta este customizați, împachetare, persistență, libră- Să trecem acum la UserControllerTests, foarte folositoare pentru că oferă rii de taguri, internaționalizare, mapări de testul pentru UserController: suport pentru o serie de metode url și mai mult Groovy.

@TestFor(UserController) injectate (e.g. findBy*). @Mock(User) class UserControllerTests { • verificările folosesc obiecte noi: Bibliografie def userController @Before session – sesiunea curentă, model public void setUp() {userController = new UserController()} – modelul returnat înspre un view, • http://grails.org/documentation

void testWrongUserNameOrPassword() { view – view-ul care trebuie afișat. • http://www.springsource.org/ request.method = „POST” params.username = „notfound” downloads/sts-ggts def user = new User(firstName: „John”, lastName: „Doe”, userName: „jdoe”, Concluzii și pașii următori password: „passwd”) Grails a ajutat echipa noastră să crească mockDomain(User, [user]) userController.login() drastic viteza de development și a dus la o assertTrue view == „/user/login” assertTrue model.message == mai bună utilizare a aptitudinilor echipei. „Wrong username or password!” Să înveți Grails a fost distractiv și rapid, dar } void testLoginWithSuccess() { bineînțeles că încă mai invățăm mai ales request.method = „POST” params.username = „jdoe” când ne lovim de probleme nu chiar așa de params.password = „passwd” def user = new User(firstName: „John”, “groovy”. lastName: „Doe”, userName: „jdoe”, password: „passwd”) Personal cred ca am luat o decizie bună mockDomain(User, [user]) în folositea Grails pentru proiectul nostru userController.login() assertTrue response.redirectedUrl == și recomand folosirea Grails în orice proiect „/message/list” assertTrue session.user.userName == „jdoe” web. Cred că în acest moment frameowor- } } kul este destul de matur pentru a fi folosit cu Să vedem ce se întâmplă aici (în plus rezultate foarte bune în proiectele voastre. față de testul precendent): Proiectul demo GrailsSocialNetwrok, • Annotarea @Mock denotă că acest creat pentru acest articol este disponi- test va folosi obiecte mock. bil aici: https://github.com/tavibolog/ • Obiectul request poate fi accesat în GrailsSocialNetwork. A fost scris cu STS teste și îl putem folosi în preparea 3.1.0 și Eclipse 3.8.1 în CentOS 6.3, folosind

www.todaysoftmag.ro | nr. 7/2012 33 tehnologii

Windows Azure Mobile Services

umărul de persoane care deţin tablete sau telefoane mobile din noua generaţie este din ce în ce mai mare. În ziua de azi aproape orice familie are cel putin un dispozitiv de acest fel. O mare parte din aplicaţiile desktop au fost sau urmează săN fie portate pe acest gen de dispositive. În momentul de faţă putem să vedem de la Office la jocuri extreme de complexe pe tablete sau telefoane.

Pe langă aplicaţia în sine care trebuie momentul de față avem trei platforme Radu Vunvulea să o dezvoltăm, de foarte multe ori avem care sunt suportate native: Windows [email protected] nevoie şi de un backend. Chiar dacă este Phone 8, Windows Store (aplicaţiile pen- ceva foarte simplu, precum un storage tru Windows 8) şi iOS. Exact, avem suport Senior Software Engineer @iQuest, proiectele pe care de date, este necesar să investim timp în nativ şi pentru iOS. Ce întelegem prin lucrează sunt de tip LoB, în general aceasta zona. suport nativ? Avem la dispoziţie o com- folosind ultimele tehnologii În ajutorul nostru vine Microsoft cu o ponentă prin intermediul căreia putem să Microsoft. Face parte din grupul entuziaștilor, motiv pentru care soluţie în cloud - Windows Azure Mobile accesăm datele noastre. ii place să fie la curent cu tot ce Services. Această colectie de servicii ne Windows Azure Mobile Services oferă apare nou in domeniul IT, in spe- cial din punct de vedere software. ajută să dezvoltăm într-un timp foarte trei tipuri de servicei, expuse pritr-un API scurt partea de backed, fără să fie necesare în format REST: cunosţinte despre SQL, Web Services sau • Data – stocare de date, securitate. • Users – autentificare utilizatori, Imaginaţi-vă că în momentul de faţă • Push – trimite notificări la utilizator. putem să dezvoltăm partea de storage a datelor în Windows Azure în mai puțin Vă propun în urmatoarea partea a de 10 minute. Tot ce trebuie să facem este articolului să analizăm la fiecare serviciu să ne creăm o clasă care să stocheze datele în parte. Vom începe cu Data. Prin inter- noastre şi o tabelă în Mobile Services. De mediul acestui servicu putem să stocăm pe portal putem să ne copiem local un orice fel de date în Windows Azure şi să le proiect care este configurat pentru soluţia accesăm de pe o aplicaţie mobila extrem de noastra – nici o configurare în plus nu mai usor. este necesară. Datele pe care le putem stoca în aceste Prima întrebare care ne vine în minte tabele pot să fie de orice timp. Singura con- este ce fel de platform sunt suportate. În diţie care există este ca aceste date să fie

34 nr. 7/2012 | www.todaysoftmag.ro TODAY SOFTWARE MAGAZINE serializabile. Pentru cei din lumea .NET modificarea şi rularea sa este extrem de Toate datele disponibile de la iden- acest lucru se traduce cu orice entitate care simplă. Dacă scriem scriptul direct în por- tify provider sunt returnate, iar în cazul este decorată cu atributul DataContract. tal vom observa că există suport pentru în care operaţia eşuează (de exemplu Fiecare entitate trebuie să aibă o proprie- IntelliSense, ceea ce poate să ne fie de un credenţiale invalide) o eroare de tip tate denumita „Id” de tip integer. Aceasta real folos. Foarte multe librării care exista InvalidOperationException ne este arun- va fi folosită pentru a identifica unic fiecare pentru NodeJS sunt disponibile în acestă cată. Odata ce un utilizator este autentificat, entiate în parte. Fiecare entitate poate să locatie. Putem, de exemplu, să facem requ- fiecare operatie care va fi facută prin inter- aibă mai multe proprietăţi de tip value type. est-uri spre diferite servicii fără nici un fel mediul Windows Azure Mobile Services Datele sunt stocate sub forma unei baza de de probleme. va conține datele despre utilizator. De date non-relaţionare. Din această cauză, În următorul exemplu, verificăm exemplu, în momentul în care un utiliza- dacă aveți referinţe între diferite obiecte ca lungimea numelui să fie de cel puţin tor execută un insert pe o tabela, în cadrul este necesar să le încărcaţi separat pe baza trei caractere, în caz contrar aruncăm o scriptului de pe server putem să adaugăm id-ului. excepţie. o proprietate cu id utilizatorului.

În momentul în care adaugăm o pro- function insert(item, user, request) { function insert(item, user, request) { if (item.name.length < 3) { item.userId = user.userId; prietate nouă, nu este necesar să schimbăm request.respond(statusCodes.BAD_REQUEST, request.execute(); ‚The name of the student is to short.’); } definiţia la tabel. Acest lucru se face auto- } else { mat. Toate datele care sunt trimise pe fir request.execute(); Push Notifications pot să fie folosite } sunt în format JSON, iar paginarea este } când avem nevoie să facem push cu dife- suportată nativ. Există şi câteva lucruri la care trebuie să rite date spre aplicaţie. Un scenariu când Fiecare tabel pe care îl creăm în Mobile fim atenţi. De exemplu, nu putem să avem am avea nevoie acest mecanism este dacă Services pe lângă nume poate să aibă variabile globale sau să ne încarcăm libra- dorim să facem update la un tile sau să drepturi de access diferite pentru fiecare riile noastre. Putem să ne definim metode, trimitem la utilizator notificări despre operaţie în parte (Insert, Update, Delete, dar acestea trebuie să fie în cadrul scrip- vreme. Un lucru interesant este că Push Read). Cele patru tipuri de drepturi pe care tului. În schimb, nimic, nu ne opreşte să Notifications nu este suportat şi pentru le putem folosi sunt: apelam un alt serviciu sau să încarcăm date aplicaţiile scrise pentru iOS. Windows • Anybody with the application key care sunt stocate şi în alte tabele. Din cauza Azure Mobile Services a fost integrat cu – orice utilizator care foloseşte apli- că aceste scripturi pot să fie setate doar Apple Push Notifications. caţia poate să execute operaţia pe din portal, managmentul acestora într-un La începutul articolului am spus că cea tabel. source control poate să fie problematic. mai mare parte din librariile pentru NodeJS • Everyone – orice utilizator care are Această funcționalitate este extrem de sunt disponibile când definim scripturile pe credenţialele de access la Mobile puternică deoarece putem să avem valida- operaţiile CRUD de pe table. Pe o operaţie Services poate să execute operaţia, rea datelor înainte ca acestea să fie salvate in de insert pe o tabelă putem să trimitem o chiar dacă acest lucru nu îl facem tabele. Totodată cănd un utilizator doreste notificare la client şi să facem update la tile. din cadrul aplicaţiei noastre. să execute un query putem să adaugăm un Iată cum se poate face acest lucru:

• Only authenticate users – doar uti- nou filtru care să limiteze datele care sunt function insert(item, user, request) { request.execute({ lizatorii care s-au autentificat pot să returnate. success: function() { request.respond(); execute operaţia pe tabel. Orice aplicaţie care stochează date sendNotifications(); } • Only scripts and admin – operaţia are nevoie de un mecanism de identifi- }); poate să fie executată doar de către care a useri-lor. Windows Azure Mobile function sendNotifications() { push.wns.sendToastText04(channel.uri, { administratori sau de către scripturi Services ne oferă servicul de autentificare. text1: „Hello kitty” }; (este foarte utilă pentru operaţiile de Prin intermediul acestui serviciu avem un } tip delete sau update). mecanism de autentificare build-in. Nu mai } este nevoie să ne implementăm propriul Toate serviciile prezentate mai sus pot Pe lângă această funcţionalitate, fie- nostru mecanism. să fie folosite cu succes în cazul în care care operaţie în parte, pe partea de server, În acest moment avem patru provideri avem o aplicaţie care are nevoie de un poate să aibe ataşat un script. Prin inter- suportaţi: Windows Live, Google, Facebook backend pentru a stoca date, a permite uti- mediul acestui script putem să executăm si Twitter. Din păcate, în momentul de faţa, lizatoriilor să se autentifice sau dacă avem orice fel de acţiune, înainte ca comanda să nu vă puteti defini un provider propriu în nevoie să facem push de date spre utilizato- se execute pe tabel. Putem să modificăm cadrul acestui serviciu. Dar pentru o apli- rii noşti. Curba de învătare este extrem de comanda pe care clientul o trimite, putem caţie normală aceşti 4 provideri ar trebuii bună, fiind nevoie de mai puţin de o zi pen- să validăm datele, putem chiar să verifi- să fie sufiecienţi. tru a învăța cum se folosesc aceste servicii. căm userul şi dacă dorim să facem reject Pentru fiecare provider pe care vreţi să Windows Azure Mobile Services este la request. îl folosiţi în cadrul aplicaţiei voastre este contine o colecţie de servicii care ne poate Setarea acestor scripturi se face de pe necesar să configuraţi din portal applica- ajuta în procesul de dezvoltare a aplicaţiilor portal, iar limbajul folosit este JavaScript. tion id/key, împreuna cu secret key. Odată pentru dispozitive mobile. Pe lângă acest Deşi pare ciudat, Microsoft, a ales să folo- ce aţi facut acestă configuraţie, puteţi să lucru complexitatea aplicaţiilor noastre sească acest limbaj din doua motive. Primul folosiţi mecanismul de autentificare. În va scadea, deoarece nu mai avem nevoie motiv este că acest limbaj este cunoscut de următorul exemplu putem să vedem cum să scriem cod pentru a ne defini diferite către aproape orice dezvoltator (iOS, Web, se face acest lucru din C#: servicii.

.NET). Pe lângă acest lucru, JavaScript var currentUser =App.MobileService.LoginAsync (MobileServiceAuthenticationProvider. este un limbaj dinamic, din această cauză Facebook);

www.todaysoftmag.ro | nr. 7/2012 35 arhitectură management

10 principii de design (fabulă) - partea II-a

. Şi pentru că zebrele nu au cercuri pe ele dar majoritatea au linii puţin curbate care curg frumos, una dupa cealaltă, de-a lungul trupurilor lor, creatorii lor s-au gândit imediat şi la dependenţe ciclice 6(Această secţiune vorbeşte despre cum ar trebui să evităm dependenţele ciclice cu câteva exemple din lumea zebrelor)

7. Şi pentru că în general nimeni nu se prinde prea repede de ce Stefan Baritchii zebrele au dungile în felul în care [email protected] le au, creatorii lor au decis să documenteze acest lucru pentru Technical Lead @ 3Pillar Global Romania ca generaţiile viitoare să înteleagă totul mai uşor. (Această secţiune povesteşte despre cum să scrii comentarii bune astfel încât fiecare utilizator Ştii povestea despre zebra care îşi mâncă de zebre să le înțeleagă în viitor) propria coada? Desigur că nu. Pentru că era vorba despre un şarpe şi nu de o zebră. Dar O mulţime de oameni se holbau la ai prins ideea. Rezultatul este unul destul de zebre şi nu aveau nici o idee de ce sunt ciudat, pentru că nimeni nu poate prezice ele aşa cum sunt, gândindu-se că ar fi fost deznodământul într-o astfel de poveste. foarte frumos dacă cineva ar fi explicat acest mister pe undeva (în afară, bineînţe- În lumea software a avea o dependenţă les, de National Geographic). ciclică înseamnă că ai o bibliotecă A care depinde de un serviciu care se află într-o La fel este şi cu softul. Exista momente biblioteca B. În biblioteca B ai un alt servi- când singura bucată de cod care defineşte ciu care e dependent de altceva în biblioteca un concept nu conţine nici o explicaţie. A. Şi ştim cu toţii că în lumea soft nu există Sunt atât de multe momente când vrei să o doar bibliotecile A şi B. Există multe, multe modifici şi în acel moment simţi cum por- altele. Acum imaginează-ţi că într-o zi ţile iadului se deschid larg. Sună familiar? schimbi ceva în una din ele şi o instalezi doar pe aceasta. Vei fi ca în Matrix când Neo stătea în faţa lui Morfeu, acesta ofe- rindu-i să aleagă între o pastilă albastră şi una roşie. Dar spre deosebire de ce se întâmplă în film, tu le vei lua pe amândouă. Pentru a evita scenarii care nu există, asigură-te că modu- lele nu se apelează reciproc şi nu depind fiecare dintre ele de celălalt modul.

36 nr. 7/2012 | www.todaysoftmag.ro management TODAY SOFTWARE MAGAZINE

Când scrii cod nedocumentat gân- bine, de aceea programatorii nu au încercat rafinându-şi comportamentul, fără însă a deşte-te la următoarele întrebări: niciodată să creeze zebre - ar fi prea dure- afecta lucrurile pe care le ştia face deja. Ce se întâmplă dacă un apel la un ser- ros pentru ele, iar programatorii iubesc Astfel, surprize de a avea zebre cu viciu de-al tău este împărțit în apeluri la zebrele) pătrate în loc de dungi vor fi eliminate. alte module și tu nu știi asta? Cât de uşor Dar programatorii creează software. Şi Atâta timp cât ai ceva ce funcţionează şi (rapid) ar fi pentru cineva să şî i dea seama programatorilor ar trebui să le pese dacă serveşte principiului pentru care a fost ce face acea bucată de cod? Va fi o zi in care soft-ul lor ar este şu or de testat, atât white- proiectat nu trebuie să laşi pe cineva să îl acest cod va deveni parte de bază a pro- box cât şi black-box. Pentru a concluziona, altereze, pur şi simplu pentru că e... per- iectului sau cel puţin pentru una sau mai testarea black-box este o metodă de tes- fect! Dar dacă altcineva ar dori să adauge multe componente? Va fi extins la o func- tare bazată pe funcţionalitatea aplicaţiei lucruri în plus, acest lucru ar trebui să se ţonalitate nouă? (testerul nu tebuie să ştie modul în care poată face uşor. (notă: încearcă să substitui Dacă există vreun dubiu în a răspunde componentele interne comunică între ele, acum ideea de zebră cu clasă, pachet etc) la aceste întrebări, atunci documentează cum ar fi de exemplu corelaţia dintre datele interfeţele, serviciile şi, mai mult, docu- de intrare şi datele de ieşire ale componen- Principiul Single responsibility mentează motivul pentru care ai făcut telor), în timp ce testarea white-box este o Fiecare zebră ar trebui sa aibe o singură anumite lucruri în felul în care le-ai facut metoda de a testa comportamentul intern sarcină, şi acea sarcină ar trebui încapsulată în cod. Documentează detalii precum: al unei aplicaţii. complet de zebra. • dacă o valoare păstreaza secunde De aceea o numim zebra (îți aduci sau milisecunde, 9. Şi pentru că zebra nu este un simplu cal aminte de principiul, păstrează lucrurile • ce reprezintă o variabilă de tip boo- dungat, spunem că o zebră este o zebră ade- simple și clare? Nu dorim sa avem un lean dacă primeşte valoarea null, etc. varată dacă urmăreşte anumite principii de lucru care să reprezinte zebraSiVanator. proiectare. Nu. Sunt doua lucruri separate care ser- Lucrează împreună cu alţi programatori (În această secţiune vom povesti câteva prin- vesc unui scop separat. Așadar fii sigur că pe aceeaşi bucată de cod şi lasă-i să întrebe cipii de proiectare de bază - principiul open/ entitățile tale (clase, metode) respectă acest ce nu înteleg. Răspunsurile la întrebările lor close, single responsibility, stable abstraction principiu. pot constitui o documentatie perfectă. şi cum le putem aplica pe o zebră) Principiul Stable abstraction: 8. Şi pentru că o zebra nu are doar o culoare Deşi câteva star-uri pop s-au chinuit Orice concept de bază care e puţin ci două, zebra a fost proiectată pentru a fi toată viaţa să devină zebre nu au reuşit probabil să se schimbe într-un model de testată pentru ambele culori: negru şi alb. pentru că erau ori negri ori albi. Ei nu proiectare ar trebui să rămână abstract. (În această secţiune se povesteşte despre tes- puteau fi ambele pentru că, spre deosebire Da, nu e nici o glumă aici. Pentru tarea black box şi white box cu referire la de zebre, ei nu aveau habar de principiile că acest principiu e destul de serios. Nu cum poate fi testată o zebră în acest fel) de proiectare. abstractiza lucruri decât dacă ştii că abs- tractizarea acoperă destul de multe cazuri Zebrelor le place să creadă că sunt Principiul Open/Close: Orice zebră ar care sunt puţin probabil a se schimba. Dacă animale semi-transparente când stau pe trebui să poată învăţa să facă lucruri noi, abstractizezi de prima dată un cod te poţi un fond negru. Pentru a le dovedi că nu e adevarat, ar trebui să fie stabilit un proces de testare (Quality Assurance). Aceasta înseamnă verificarea că zebra are toate calităţile (şi nimic mai mult decât cele) specificate într-un document de specificare funcţională. Zebrele sunt negre şi albe. Tot așa, în lumea testării există două concepte: testare black box şi testare white box. Testarea black box se referă la testarea zebrei din exterior ei. Asta înseamnă (cu ceva indul- genţă din partea testerului) că aplicând o testăre black-box pe o zebră împăiată (un fel de zebră prototip) se vor obţine exact aceleaşi rezultate ca şi în cazul testării unei zebre normale. Pe de altă parte, testarea white-box se referă la testarea zebrei din interiorul aces- teia. Aceasta înseamnă că ar trebui să fii în stare să testezi dacă o zebră are un ficat şi nu o mixtură de rumeguş înăuntrul ei. (Ei

www.todaysoftmag.ro | nr. 7/2012 37 arhitectură business 10 principii de design (fabulă) - partea II-a

trezi cu multă activitate de întreţinere ulte- Pot să-ți iau zebra? de astfel de cazuri, nimeni nu îţi va aduce rior, deci multi bani cheltuiți/multe resurse Se zice că dacă pierzi un avion ai putea clienţii inapoi daca cardul lor de credit alocate. Şi zebrele te vor urî pentru asta. să iei o zebra pentru că alearga la fel de se poate vedea de pe lună. Asigură-te ca rapid ca avioanele. Dar și adorm des pen- bazele tale de date sunt protejate de parole, 10. Şi când te gândeşti la o zebră te gândeşti tru că sunt extenuate. Prin urmare pentru ca firewall-urile sunt configurate bine, ca la un animal care arată drăgut, sprinten, viu, a parcurge distanta de la un capat la altul parolele raman numai la tine, conexiunea care trăieşte în hoardă. Dar trebuie să ne asi- ar trebui să împrumuți alta. Dar poți să iei http este securizată(asta înseamnă că tre- gurăm de câteva lucruri când il proiectăm. zebra altcuiva? Bineințeles. REUSABILITY buie sa vezi https inloc de http). Si fii sigur (Aceasta secţiune explică cum termeni ca te lasă să folosești zebra altcuiva. ca certificatul de securitate este emis de scalabilitatea, disponibilitatea, performanţa, cineva de incredere. robusteţea, securitatea, reutiliabilitatea intră Ai intrat cu zebra într-un bar? în lumea zebrelor) Dacă ai face aşa ceva ai afla că sunt Cât de rapid aleargă zebra ta? foarte insetate. Cu cât le dai mai multă apă Ai simțit vreodată că vrei să sari pe Aşa cum Prozac-ul şi Xanax-ul iţi fac cu atât iţi golesc galeata. Robusteţea este câmpii cu gravitație asemănătoare celei de mai mulţi prieteni în viaţa reală, zebrele abilitatea sistemului să continue procesa- pe lună (sau că aceea din desenele animate erau acum gata să vadă lumina zilei. rea de requesturi şi să efectueze tranzacţii ieftine chinezesti)? Ți-ai imaginat vreodată Adevărul din păcate nu este acesta. Pentru la fel de bine atunci când se măreşte numă- sărind în astfel de câmpuri cu o zebra? că trebuie verificate nişte lucruri cu privire rul de utilizatori ai sistemului ca si când are (Atunci chiar trebuie să consulți un psihia- la: puţini. Robusteţea poate avea un impact tru, sau să te trezești pentru că documentul negativ asupra scalabilităţii nu s-a terminat încă). Perfomanța se referă Este zebra ta în stare să crească? Este la cât de rapid poți să faci zebra să alerge așa capabilă să alerge în turme? Este zebra ta ferită de lei? încât să atingă super viteze ca să ajungă pe Asta este scalabilitatea. Daca vezi o Înainte de această poveste au fost creati lună (că acolo să poți sări pe câmpurile cu zebră mare, apoi aceeaşi zebră mai mare, leii. Ştim că ei există şi că sunt deghizaţi în gravitație mică). De obicei câtorva clienți le atunci avem de-a face cu scalabilitate ver- zebre. este impusă performanța de audit-uri așa ticală. Dacă la un moment dat în timp Proiectează lucrurile pe care le faci că întreabă-i înainte să te apuci de muncă consideri că o zebră nu e suficientă pentru având în vedere securitatea lor. Nu vrei dacă au ceva SLA-uri pe care trebuie sa le tine şi vrei două zebre, atunci e vorba de ca cineva sa se dea pe gheata în baza ta iei în considerare. SLA-urile impuse după scalabilitate orizontală. Pentru că o zebră de date. De fapt în nici unul din nivelele development nu sunt deloc binevenite. nu poate fi mai mare decât planeta noastră, aplicației. Deşi există legi care te protejează întotdeauna gândeşte-te cum poţi proiecta sistemul astfel încât să fie scalabil pe ori- zontală. Scalabilitatea verticala înseamnă să pui un procesor mai mare, mai mult RAM, mai mult harddisk într-un singur calcula- tor. Scalabilitatea orizontală înseamnă că ai nevoie ca soft-ul tău să ruleze pe mai multe calculatoare.

Se joaca zebra cu tine tot timpul? Dacă nu o face, e nefolositoare sau cel puţin deranjantă. Ai nevoie de o zebră care să răspundă imediat. Asa vor și clienții softului tau. Ei sunt dornici să-ți utilizeze soft-ul. Trebuie să fie available tot timpul, chiar și când dormi sau faci deploy-uri în producție. Așa ceva numim availability. Poate fi de asemenea realizată prin redundanţă (ai o alta zebră care face exact ce face prima, şi astfel poţi să fii sigur că dacă una din ele merge la grătar, cealaltă va sta şi se va juca cu tine). Dacă adopti o astfel de solutie de a avea componente redundante şi failover, o componentă poate eşua şi avea impact negativ asupra robusteţie.

38 nr. 7/2012 | www.todaysoftmag.ro business TODAY SOFTWARE MAGAZINE

Startup cu bani puțini

ând porneşti un startup, de obicei, resursele pe care le ai la dispoziţie: bani, timp, oameni, îţi sunt limitate şi provocarea ta e să scoţi cât mai mult din acestea. Ştiţi povestea: porneşti într-un garaj/apartament cu doi oameni si 1000 $ şi peste cinciC ani te listezi la bursă şi apari în top fortune 500.

Ok - nu ştiu să vă spun cum să faceţi patru salariaţi, angajaţi pe perioadă

Dragoș Andronic aceasta dar vă pot spune despre câteva pro- nedeterminată. Traducere: pentru [email protected] grame adresate startup-urilor menite să vă patru salariati nu se plătesc ~21% dea o mana de ajutor in realizarea viselor. reprezentand CAS (partea angaja- CTO torului). Scutirea se aplică cât timp @ TXTFeedback Programul pentru stimularea salariul e <= decât salariul mediu înfiinţării şi dezvoltării microintre- pe economie. Pentru ce e peste sala- prinderilor de către întreprinzătorii riul mediu (diferenta) se vor plăti și tineri. acești 20%. Acesta e numele complet al programu- • scutirea la plata taxelor pentru înfi- lui - pe scurt, mai cunoscuţii 10000 EUR inţarea & înmatricularea firmei. nerambursabili. Programul s-a desfăşurat Traducere: îţi economiseste ~500 în ultimii doi ani şi cel mai probabil se va RON şi câteva drumuri. relansa în 2013 (nu e nimic sigur în pri- vinţa aceasta, dar probabilităţile sunt mari Detaliile complete despre program/ – în primăvară se va şti). În 2012 progra- eligibilitate/condiţii contractuale se mul a fost lansat în 15 Februrie şi fondurile pot găsi pe site-ul AIPPIMM (Agenţia programului au fost de 31000000 RON (~ pentru implementarea proiectelor şi 6900000 EUR) distribuiţi după principiul programelor pentru IMM-uri). http:// „primul venit, primul servit”. www.aippimm.ro/categorie/programe/ Dosarele valide, ce întruneau toate con- programul-pentru-stimularea-infiintarii- diţiile şi aveau punctajul nesar, primeau si-dezvoltarii-microintreprinderilor-de- fonduri începând cu martie 2012 - cam catre-intreprinzatorii-tineri-/. 30 de zile a durat procedura de validare a Mai jos vom încerca să răspund la dosarului. câteva întrebări frecvente:

Ce facilităţi ai prin acest program? Care sunt condiţiile pentru intrarea în • accesul la o „alocaţie financiară program? nerambursabilă” de până la 10000 Pentru a fi eligibil fondatorul/fonda- EUR, ce reprezintă maxim 50% din torii trebuie sa indeplineasca concomitent valoarea cheltuielilor eligibile (fără condiţiile: TVA). Traducere: faci un plan de • au până la 35 de ani afaceri, unde, dacă doreşti 10000 • sunt la prima firmă (nu au mai deţi- EUR, trebuie să vii şi tu cu minim nut o altă firmă şi nu au mai fost 10000 EUR + Taxe (TVA sau altele) asociaţi la altă firmă) pe cheltulielile eligibile (mai jos • planul de afaceri întruneşte minim detaliez ce înseamnă cheltuiala 60 de puncte din 100 (mai jos eligibilă). detalii). • garanţii pentru contractarea unui credit de până la 80000 EUR. Cum intru în program? Care sunt pasii? Traducere: pentru mai multe detalii 1. Înfiinţarea unde noi firme de tip legate de ceea ce înseamnă aceasta Societate cu Răspundere Limitată e cel mai bine să vă adresaţi unei Debutanta (SRL-D). Trebuie să fie o bănci. Majoritatea băncilor au cre- firmă nouă - o firmă deja existentă dite speciale pentru firmele din acest nu poate beneficia de program. program şi vă vor răspunde la între- Firma poate avea unul sau mai mulţi bări mai bine decât aş face-o eu. asociaţi - dacă are mai mulţi toţi • scutirea de la plata contribuţiilor de asociaţii trebuie să fie la prima firmă asigurări sociale datorate de angaja- şi să aibă < 35 ani. Câteva drumuri tori, potrivit legii, pentru veniturile la Registrul Comerțului si la Finanțe aferente timpului lucrat de cel mult sunt suficiente (din experienta, cel

www.todaysoftmag.ro | nr. 7/2012 39 business Startup cu bani puțini mai mult timp îți consumă aproba- că din planul total de afaceri trebuie face vor trebuie făcute prin „licitaţie” - trei rea și înregistrarea sediului social). să aveţi minimm 40% investiţii. oferte comparative + proces verbal de atri- 2. Depunere dosar + plan de afaceri pe • localizarea activităţii (sediu social): buire a câştigătorului. Aceasta înseamnă siteul AIPPIMM (detaliez mai jos ce mediu rural (e.g. Floreşti) 10p, paperwork la care trebuie să fii atent pen- cuprinde dosarul). mediul urban (e.g. Cluj) 5p tru că altfel s-ar putea să nu îţi fie aprobate 3. Dacă din partea ta doreşti să o • utilizarea noilor tehnologii şi pro- deconturile. Partea bună e că monitorizarea acoperi printr-un credit - acum e movarea societăţii informaţionale: te obligă la disciplină financiară – aspect momentul să soliciţi creditul. În dacă faceţi soft atunci aveţi 10p, dacă esențial al unei firme sustenabile. Un alt momentul când creditul a fost apro- nu, atunci cel mai probabil aveţi 5p lucru la care trebuie să fii atent e să nu bat trebuie anunţat AIPPIMM ca să • schema de finanţare: credit bancar contezi pe decont ca şi fond de rulaj - din treacă mai departe dosarul. 20p, fără credit 10p. E încurajată păcate nu poţi fi sigur de intervalul de timp 4. Se analizează dosarul şi dacă se preluarea unui credit, astfel încât în care statul îţi va rambursa banii așa că aprobă trebuie să depui partea ta de valoarea investiţiei să fie cât mai în planul de afaceri să previzionezi destule capital. mare. fonduri proprii încât să poți acoperi toate plățile curente. Detalii despre înființarea unui S.R.L-D Trebuie să ajungeţi la minim 60p. De se găsesc la http://www.firmatineri.ro/ exemplu, o firmă ce produce software (20p) Ce se întâmplă dacă afacerea nu merge? etape.html + 3 angajaţi (15p) + investii 40% (10p) + Trebuie să restitui banii? la Cluj (5p) + promovează societatea infor- Banii non-investiții (salarii, conta- Care sunt obligaţiile celor ce intră în maţională (10p) + fără credit 10p ar avea bilitate, hosting, chirii, etc.) nu trebuie program? 70 de puncte. restituiţi. Toate condițiile/obligațiile se găsesc în Achiziţiile tip „investiţii” (hardware, ghidul solicitatului. Cele mai importante le Pe ce poate fi cheltuită finanţarea (chel- licente software, spatii comerciale, mobila) redau mai jos: tuieli eligibile)? pe care le faci prin program vor fi concesi- 1. să menţină angajaţi cel puţin doi În finanţarea pot fi incluse: investiţii onate statului - dacă firma da faliment, ele salariaţi cu normă întreagă cu (hardware, mobilă, domeniu web, licenţe for reveni statului. contract de muncă pe durata nede- software,etc.), salarii, hosting, cheltuieli cu termintă pe toată durata prezenţei contabilul şi protecţia muncii, etc. . Lista De unde pot obţine consultanța pentru în program (3 ani sau cand cifra de completă se găseşte în ghidul solicitantului întocmirea dosarului? afaceri depaseste 500000 EUR). (http://www.aippimm.ro/files/articles_ Cel mai uşor e să apelaţi la AIPPIMM. 2. să reinvestească minim 50% din files/37/5794/ghid-tineri---2.doc). Sediul din Cluj e pe Horea nr 13, iar per- profitul anual. sonalul de acolo vă poate răspunde la toate 3. să depună la AIPPIMM toate actele Important de reţinut despre Alocatia întrebările pe care le aveţi. necesare monitorizării (există moni- Financiara Nerambursabilă Puteţi apela şi la o firma de consul- torizare şi toate achiziţiile trebuie să 1. Contribuția proprie trebuie depusă tanţă pentru întocmirea dosarului (http:// se desfăşoare pe model „licitaţie cu de la început (cei 10000 eur + TVA) consultanţi.finanţare.ro/) - costurile de cel puţin trei oferte”). şi va rămâne blocată –> va trebui să consultanţă putând fi cuprinse în proiect. dispui de o suma destul de consis- Atenţie la costurile consultatului pentru ca tenta “up front”. pot fi destul de mari - comparaţi mai multe Care sunt criteriile după care se judecă 2. Finantarea e tip decont: tu faci chel- oferte înainte de a alege un consultant. planul de afaceri? tuelile si apoi ceri decontul -> până Din experienţa personală e bine să Pentru 2012 criteriile au fost: la urmă vei avea nevoie de 20000 vorbiţi cu cineva care a trecut prin proiect • domeniu de activitate a S.R.L.- D: EUR + TVA urmând ca 10000 EUR înainte - vă poate ajuta să întocmiţi dosarul Producţie (20 puncte), Servicii să ţi se înapoieze. şi vă poate sfătui ce cheltuieli să includeţi (15p), Comerţ şi alte activităţi (10p). în proiect. Dacă doriţi să dezvoltaţi un produs Avantaje şi dezavantaje ale programului software aveţi 20p. Banii nerambursabili sunt bineveniţi Alte intrebari? • număr de locuri de muncă create într-un startup, dar trebuie văzuţi ca o sursă Citiți ghidul solicitantului. Faceți (normă întreagă): >= 4 20p, >=3 de suplimentare a fondurilor deja existente o vizită la AIPPIMM și discutați cu 15p, >=2 10p. Dacă susţii că vei şi nu ca şi „fonduri de startup” - după cum consultanții lor. Google it: sunt destul de avea trei salariaţi, atunci vor tre- explicam, trebuie să ai/aveţi toţi banii pe multe forumuri de discuții legate de acest bui să apară trei salariaţi cu normă care doriţi să îi cheltuiţi „up front” pentru program. De exemplu acesta. întreagă pe statul de plată. că finanţarea vă va fi decontantă, după ce Dacă aveţi gânduri serioase legate de • ponderea investiţiilor din cheltu- cheltuielile au făcute. În momentul când înfiinţarea unui startup software vă încura- ielie aferente planului de afaceri: intraţi în program, o sumă destul de mare jez să vă documentaţi în legătură cu acest >80% 20p, >60% 15p, >40% 10p. (partea ta + TVA) vă trebui depusă într-un program, principalul beneficiu fiind (imho) Ce se consideră a fi investiţie: achi- cont CEC şi va rămâne blocată acolo -> ca fondurile nerambursabile - banii aceştia ziţie terenuri/spaţii comerciale, să te afecteze cât mai puţin trebuie să faci vin cu câteva condiţii stricte şi vă angajează hardware, mobilă, mijloace trans- cheltuielile cele mai mari (e.g. hardware + pe termen lung dar pot fi “o gură de oxigen” port, licenţe soft, mărci comerciale, licenţe) în cel mai scurt timp. Tot proiectul în activitatea unei firme. francize, etc. E important să reţineţi este monitorizat: achiziţiile pe care le vei

40 nr. 7/2012 | www.todaysoftmag.ro startup TODAY SOFTWARE MAGAZINE

Startup - TXTFeedback

xtFeedback este o platformă de comunicare între clienţi şi magazine. Accentul cade pe conversaţii în timp real - tip întrebări şi răspuns - scopul fiind rezolvarea problemei apărute într-un timp cât mai scurt. Platforma a fost realizată şi finan- ţatăT în proporţie de 100% în Cluj.

Când am început dezvoltarea doreşti să oferi feedback magazinului/ser- TxtFeedback dorinţa a fost să creştem cali- viciului: casieră a fost nepoliticoasă cu tine, Dragoș Andronic tatea experienţei de client a unui magazin te-a deranjat că a trebuit să aştepţi la casa [email protected] sau serviciu. 10 min sau, dimpotrivă, ai fost impresionat

CTO de căldură cu care chelnerul te-a tratat şi @ TXTFeedback Problema adresata doreşti să comunici asta restaurantului. Te găseşti într-un magazin de retail, te În astfel de momente, doreşti un mod plimbi printre rafturi căutând un anumit rapid şi uşor de folosit prin care să îţi faci produs/brand (e.g. foi de sushi) şi nu ştii vocea auzită. Metodele deja existente s-ar înspre ce raion/raft să te îndrepţi. Sau ajungi putea să nu te ajute/să nu ţi se potrivească la raionul de electronice şi aici te aşteaptă - e.g. caietul de sugestii e (în opinia mea) nenumarate de produse similare, cu descri- depăşit şi după ce felul în care ai fost tra- eri care îţi spun prea puţin (e.g. specificaţii tat ţi-a displăcut nu doreşti să mai stai de tehnice) şi ai nevoie de un angajat (specia- vorbă cu un alt angajat, ci doar să ieşi cât list) care să te poată îndruma prin jungla mai repede din magazin/restaurant/hotel. specificaţiilor tehnice către produsul potri- vit ţie. Platforma TxtFeedback Întrebări de genul „aveţi foi de sushi? Prin TxtFeedback încercăm să oferim o La ce raion?” sau o solicitare de genul „am soluţie la astfel de scenarii. nevoie de cineva care să mă ajute la raionul O dată ce un magazin/hotel/restaurant de electronice” ţi-ar salva timp şi efort. Sau a achiziţionat serviciul TxtFeedback veţi

www.todaysoftmag.ro | nr. 7/2012 41 startup economic Startup - TXT Feedback vedea prin magazin afişe/pliante/etc. cu şi un mobile website în A SP. n e t MVC 3 „product oriented”. un mesaj de genul: şi un app de android. În back-end avem o maşină linux ce rulează un server de Planuri de viitor Dacă aveţi întrebări sau doriţi să comunicare customizat, dezvoltat în Java, La nivel de business: ne concentrăm oferiţi feedback trimiteţi un sms şi o bază de date MsSql. pe extinderea vânzărilor – abordăm în la numărul XXXXXXX sau acce- La platformă au lucrat doi developeri principal pieţele din Europa de vest atât saţi t3xt.me/@demo de pe smartphone şi ajungând de la 0 la varianta beta în cinci prin vânzări directe cât şi indirecte, prin noi vă vom răspunde în cel mai scurt timp” luni, iar de la 0 la release 1.0 în 7 luni. Pe reselleri. lângă platforma de produs a mai trebuit Tehnic: ne aşteptăm la o creştere acce- SMSul trimis sau mesajul scris creat şi site-ul de prezentare – care a mai lerată a numărului de clienţi în următoarea în site-ul web va ajunge la un necesitat încă două luni de dezvoltare, perioadă aşa că principala provocare va fi angajat al magazinului care vă fiind folosit Wordpress ca şi CMS. scalarea platformei tehnologice şi a proce- va răspunde la întrebare instantŞ “foi de selor interne (maintenence şi suport). sushi se găsesc la raionul de peşte, avem Investiţie un întreg raft pentru sushi”, „un coleg va fi Până acum în startup au fost investiţi Despre Ab Mobile Apps la raionul de electronice în 2 minute” sau ~ 30000 EUR, banii provenind de la fon- Ab Mobile Apps este un startup fon- „ne pare rău că nu aţi fost mulţumit de datori şi prin programul de sprijinire a dat de doi clujeni „naturalizaţi”, Dragoş atitudinea casierului - la ce casa aţi fost?”. tinerilor întreprinzători. Andronic şi Bogdan Oros, din dorinţa de a Am plecat de la o echipă de trei oameni demonstra că „silicon valley al României” Ca şi client, primeşti un răspuns în Cluj şi am ajuns în prezent la cinci – nu e doar o sintagmă catchy ci o realitate. şi te simţi apreciat de companie, patru în Cluj şi o persoană pe vânzări în În prezent echipă din Cluj numără pentru că vocea ta s-a făcut auzită Germania. patru persoane împărţite 50/50: develop- şi problema ta adresată. Ca să reducem costurile încercăm ment şi marketing/vânzări. În Germania să realizăm totul in-house dar unde ne echipa e reprezentată de doar o persoană, Ideea produsului dăm seama că nu avem destulă experi- cu focus pe vânzări. Ideea unei astfel de platforme - con- enţă, externalizăm: e.g. partea de UX şi vorbire în timp real cu magazinul/hotelul/ design o realizăm cu ajutorul unui desig- restaurantul, prin SMS sau web - a venit de ner, partea de administrare IIS/hosting e la aplicaţii similare deja existente pe piaţa subcontractată. din state, o piaţă mai matură din punctul de vedere al customer service-uli şi al ser- Provocări viciilor oferite pe această nişă. Multe, diverse şi continue. Am preluat ideea, am rafinat-o, am Privind în urmă, provocările tehnice analizat fezabilitatea unui astfel de produs par cele mai mici – partea de dezvoltare a & business în Europa şi, în momentul când business-ului: poziţionarea pe piaţă, mar- am decis că există potenţial şi că avem ketingul şi vânzarea propriu zisă fiind cele resursele şi cunoştinţele necesare imple- mai dificile. mentării, ne-am apucat de lucru. Aceasta ilustrează într-un fel şi realita- tea IT a Clujului – oameni bine pregătiţi Detalii de dezvoltare & arhitectură tehnic, care sunt în stare să găsească solu- Platforma a fost dezvoltată pe mai ţii la mai toate problemele, ce trebuie să multe tehnologii & limbaje cuprinzând se metamorfozeze în oameni de business (în acest moment )- un dashboard web dacă vor să facă pasul de la outsourcing la

42 nr. 7/2012 | www.todaysoftmag.ro economic TODAY SOFTWARE MAGAZINE

Persoană fizică autorizată noțiuni introductive

e vorbeşte din ce in ce mai mult despre antreprenoriat, freelancing sau start-ups, de aceea cred că ar fi binevenite informaţii despre un aspect poate mai puţin cunoscut persoanelor care doresc să desfăşoare activităţi comerciale pe cont propriu, anume taxeleS şi impozitele, precum şi alte aspecte financiar-contabile pe care un antreprenor trebuie să le ia în considerare.

Cea mai simplă formă de autorizare www.onrc.ro/romana/formulare_pf.php pentru desfăşurarea activităţilor comerciale Documentele necesare sunt: în Romania este Persoana Fizică Autorizată. • Cererea de înregistrare; Delia Coman Prin activitate comercială se înţelege: fapte • Dovada verificării disponibilităţii şi [email protected] de comerţ, prestări de servicii (altele decât rezervării numelui (original); economist, trainer si cele considerate profesii libere – avocaţi, • Carte de identitate sau paşaport antreprenor cu o bogata expe- notari publici, medici, experţi contabili, (fotocopie certificată olograf de rienta in activitatea financiara, dobandita in companii mari din auditori financiari, consultanţi fiscali, arhi- catre titular privind conformitatea diverse sectoare: IT hardware tecţi sau traducatori) sau practicarea unei cu originalul); si software, telecomunicatii, servcii BPO, servicii financiare meserii. • Copie după diploma de studii, sau Persoana fizică autorizată este forma alte documente care să ateste pre- de înregistrare a persoanelor fizice care gătirea profesională, dacă este cazul; doresc să desfăşoare şi să obţină venituri • Specimen de semnatură; din activităţi independente. Practic te poţi • Informaţiile din cazierul fiscal; înregistra ca persoana fizică autorizată pen- • Documente care atestă dreptu- tru oricare dintre activităţile prevăzute în rile de folosinţa asupra sediului codurile CAEN existente în România, cu social(copie legalizată sau copie cer- excepţia câtorva care necesită autorizaţii tificată de parte). Acest document speciale sau există legi care interzic desfă- poate fi unul din următoarele: act de şurarea unor activităţi de către persoanele proprietate, contract închiriere sau fizice autorizate. contract de comodat; • Cartea funciară pentru sediul social Cum se autorizează o Persoană fizică - se obţine de la Oficiul de Cadastru Înregistrarea ca PFA se face la Registrul şi Publicitate Imobiliară; Comerţului din localitatea în care se doreşte • În cazul în care sediul va fi într-un desfăşurarea activităţii. Informații, precum bloc de locuinţe, va fi nevoie şi de şi modele ale cererilor ce trebuiesc comple- Acordul vecinilor, semnat de către tate se găsesc pe situl Oficiului National al toţi vecinii cu care sediul respectiv Registrului Comerţului (ONRC): http:// are pereţi comuni;

www.todaysoftmag.ro | nr. 7/2012 43 economic Persoană fizică autorizată noțiuni introductive

• Cerere de înregistrare care atestă în decursul anului respectiv (anul înregis- declaraţii 220, sunt modificări ce apar în dreptul de folosinţă asupra spaţiului; trării). Pe baza acestei sume, persoanele oricare dintre informaţiile pe care decla- • Dovezile privind plata taxelor/tari- fizice autorizate care optează pentru siste- raţia le conţine, iar acestea sunt: felor legale: taxele de registru; mul real, vor calcula şi plăti impozitul pe • Domiciliul fiscal (adresa); • Declaraţia-tip pe propria răspundere venit din activităţi independente în cursul • Cod CAEN; care să ateste îndeplinirea condiţii- anului. • Înregistrarea ca plătitor de TVA, fie lor legale de funcţionare prevăzute În toate informaţiile disponibile din prin depășirea plafonului, fie din de legislaţia specială din domeniul alte surse veţi găsi menţionata declaraţia decizia contribuabilului; sanitar, sanitar-veterinar, protecţia 070, care ar trebui depusă impreună cu • Angajarea unei/unor persoane cu mediului şi protecţia muncii. declaraţia 220. Pentru persoanele fizice contract individual de muncă; autorizate care au obţinut certificatul de • Încetarea activităţii. Din anul 2012, ONRC a introdus posi- înregistrare de la Registrul Comerţului, bilitatea unor operaţiuni online: rezervarea aceasta declaraţie de înregistrare fiscală, Dacă se doreşte modificarea opţiunii numelui, plata taxelor. Aceste servicii se pot 070, nu mai este necesară, deoarece înregis- de determinare a venitului net, se depune accesa de pe site-ul https://portal.onrc.ro/. trarea se face automat pe baza informaţiilor declaratia 220 pâna la 31 Ianuarie a anu- Este indicat să verificaţi totuși informa- transmise de catre Regitru Comerţului lui fiscal. ţiile pe site-ul ONRC înainte de a merge către Administraţia Finanţelor. la ghişeu, pentru că există posibilitatea ca Opţiunea de a determina venitul net pe în timp să apară modificări. De aseme- Modificări ulterioare înregistrării fiscale baza datelor din contabilitatea în partidă nea, dacă dintre cererile menţionate nu se Modificările ulterioare ale datelor din simplă (adică în sistem real) este obligatorie găsesc pe situl ONRC, atunci acestea tre- declaraţia de înregistrare fiscală trebuie pentru contribuabil pe o perioadă de 2 ani buie cerute de la ghişeul de informaţii de la aduse la cunostinţa organului fiscal com- fiscali consecutivi şi se consideră reînnoită Registrul Comerţului. petent din subordinea Agenţiei Naţionale pentru o nouă perioadă, dacă contribu- După ce toate documentele s-au depus de Administrare Fiscală, în termen de 30 abilul nu solicită determinarea venitului la Registrul Comerţului, se asteaptă câteva de zile de la data producerii acestora, prin net anual pe baza normelor de venit, prin zile pentru eliberarea certificatului de completarea şi depunerea declaraţiei de completarea corespunzătoare a declarației înregistrare. menţiuni, care este aceeaşi declaraţie care de venit estimat şi depunerea formularului s-a depus iniţial (220), doar că se bifează la organul fiscal competent până la data de Înregistrarea fiscală a PFA pe prima pagină opţiunea „Declaraţie de 31 ianuarie inclusiv. După eliberarea ceritficatului de menţiuni” şi nu opţiunea de „Declaraţie Mai multe informaţii despre veniturile înregistrare de către Oficiul Registrului iniţială”. din activităţi independente se găsesc în Comerţului, în termen de 15 zile de la În cazul în care se încetează condiţiile ghidul pentru persoanele fizice lansat de data înscrisă pe certificat, trebuie depus la care au generat înregistrarea fiscală, contri- Contzilla.ro. Ghidul se adresează oricărei Direcţia Finanţelor Publice declaraţia 220. buabilii au obligaţia de a preda organelor persoane fizice care obţine venituri din Declaraţia, împreuna cu instrucţiunile de fiscale, în vederea anulării, certificatul de activităţi independente şi este un instru- completare, se găseşte la acest link: http:// înregistrare fiscală, odată cu depunerea ment util care te ghidează pas cu pas, în static.anaf.ro/static/10/Anaf/formulare/ declaraţiei de menţiuni. toate etapele necesare înregistrării, orga- decl_220_2008.pdf. În cazul modificărilor intervenite în nizării contabilităţii şi planificării celei mai Declaraţia 220 se completează în 2 datele declarate iniţial şi înscrise în certi- bune variante fiscale pentru activitatea ta. exemplare, se semnează şi împreună cu o ficatul de înregistrare fiscală, contribuabilii Conţine exemple practice şi soluţii pentru copie după certificatul de înregistrare şi o depun, odată cu declaraţia de menţiuni, şi a-ţi asigura un start bun al afacerii tale. copie după cartea de identitate se depune certificatul de înregistrare fiscală, în vede- Ghidul conţine modificările legislative afe- la Direcţia Finanţelor Publice în localitatea rea anularii acestuia şi eliberării unui nou rente lunilor iulie- august 2012. în care persoana fizică a fost înregistrată. certificat. http://www.contzilla.ro/2012/09/ Practic în această declaraţie se stabileşte Declaraţia de menţiuni este insotită venituri-din-activitati-independente-mini- sistemul de impozitare (real sau normă de de documente care atestă modificările ghid-pentru-persoanele-fizice/ venit), formă de organizare (individual sau intervenite. în asociere), plus se mai declară o sumă Modificările care necesită depunerea estimată ce urmează a fi realizată de PFA declaraţiei de menţiuni, adica a unei noi

44 nr. 7/2012 | www.todaysoftmag.ro eveniment TODAY SOFTWARE MAGAZINE

Arta & IT: depasirea cadrului conventional prin stimularea creativitatii

ă lăsăm deoparte cifrele și datele. Dincolo de cifra de afaceri și tehnologii, adevăratele motoare ale firmei sunt oamenii, creativi- tatea lor și modul în care aceștia cooperează pentru a oferi serviciile sau sistemul software dorit de client. Soluțiile software au fost de multe ori factorul inovator care au transformat serviciile convenționale de business, oferind plus valoare semnificativă clientului.S

În timp ce operațiunile specifice unui în forma ei tradițională cât și variantele fiecare coleg din echipa msg, pe fun- anumit domeniu, precum automotive, asi- moderne ale acesteia). Festivalul a avut loc dalul ‚melodiei preferate’ a fiecăruia. gurări sau bancar sunt standard, platforma în Cluj Napoca, pe durata a trei săptămâni • Expoziție foto în Shto College software care stă la baza lor face diferența 5-28 octombrie 2012, și s-a manifestat Bar, sub același nume: „Discover între un serviciu inovativ și unul standard. prin concerte, workshop-uri și competitii. msg through the five senses”. Și un Astfel depășirea cadrului conventional și TiMAF a avut ca idee centrală 13 arte și cocktail „,msg”, pe întreaga perioada promovarea creativității și inovației a deve- descoperirea acestora prin cele 5 simțuri: a event-ului despre care vă zicem nit unul dintre target-urile urmărite de listen, view, feel, taste, scent. doar că a fost vișiniu toate companiile de software. Deși ca imagine și structură msg • Un stand (msg corner) “nonconfor- systems și TiMAF diferă, noi am găsit ca mist” (vezi imagini mai jos), realizat și bază comună interesul pentru depășirea în totalitate în spiritul artelor stra- cadrului convențional și stimularea dale, în cadrul Lounge-ului TiMAF creativității ca și sursă a inovației. Astfel, din Piața Unirii. ne-am adaptat sloganul la ăntreaga cam- panie de promovare din cadrul TiMAF: “descoperă msg systems” prin cele 5 simțuri. Dincolo de liniile de cod sunt oame- În IT tendința este utilizarea nii. Inovația în IT, ca în oricare alt șabloanelor (framework-uri, platforme sau domeniu presupune depășirea cadrului pattern-uri) și utilizarea „best practices”. convențional, exprimarea creativității per- Acestea definesc căi standard de rezol- sonale în realizarea muncii zilnice. În acest vare a unor probleme și devin de multe ori sens am încercat să ne aducem aportul pro- obisnuință în activitatea unui dezvoltator priu de creativitate prin prezența noastră software. A face un job de programare per- ca și partener în cadrul TiMAF, chiar dacă formant, calitativ dar în același timp plăcut, acest lucru a implicat modificarea imaginii înseamnă a-ți pune amprenta asupra ceea standard a msg systems. A fost un proiect ce realizezi, iar acest lucru presupune crea- în care am încercat să devenim creativi tivitate personală. într-o zona care nu ne este caracteristică Acesta idee stă la baza asocierii și împli- și în același timp să prezentăm imaginea Promovăm o cultură a imaginației, cării msg systems, o companie germana cu noastră, a firmei, aducând în prim plan explorării creative. O cultură modernă a peste 30 de ani experiență în software, în colegi din cadrul echipei. dezvoltării de software, bazată pe creativi- TIMAF (Transilvania International Music Pentru prezența în cadrul festivalului, tate și inovație, care să îi ofere clientului cea & Art Festival, care promoveaza arta, atât am realizat: mai bună modalitate a-și crea sau adapta • Un sistem software online, brand produsul sau serviciul într-o piață dina- msg, prin intermediul căreia vizi- mică, în continuă schimbare. tatorii au posibilitatea să cunoască angajații firmei și preferințele per- sonale ale acestora, într-un context mai neobișnuit. Cu un design 100% Rodica Manolache „street arts”, cu informații despre [email protected] gustul, mirosul, filmul preferat al Marketing & PR Specialist colegilor – cei interesați au avut @ .msg systems Romania posibilitatea de a intra în contact cu

www.todaysoftmag.ro | nr. 7/2012 45 diverse

Gogu și Miorița

- Mama lui de cioban mioritic – se Liniștea care se trezi Gogu spunând cu voce tare. Se uită lăsă era un răspuns repede în jur să vadă dacă are de dat sau evident. nu explicații cuiva. Se liniști însă când văzu - Măi băieți, din că nimeni nu părea să-l bage în seamă, câte văd eu, încă nu toți erau adânciți în studiul documentației avem o problemă, primite, toți mohorâți... Mda, nimeni nu dar sunteți pe cale pare prea fericit de lista de cerințe primită. să o creați. Cum să accepți așa ceva? Mama lor de Gogu înlemni: resemnați... Continuă să citească emailul, Dacă iar îi apare din ce în ce mai mohorât; din când în când zâmbetul ăla mai mormăia ceva ca pentru sine. șăgalnic, acum, în - Ce e atmosfera asta de înmormân- mijlocul tragediei tare?! Intrarea Șefului îi luă pe toți pe noastre generale, nepregătite. Văleu, cum vă uitați la mine! mă împușc! gândi. Ce-aveți toți?! S-a confirmat oficial sfârșitul De fapt nu, îl lumii? Nu vă faceți griji, nu vine, a rămas împușc întâi pe el, înzăpezit pe drumurile din Moldova, dup-aia mă împușc hă-hă-hă... Se opri însă imediat, era clar pe mine, măcar să că nimeni nu-i împărtășea voia bună. mor împăcat... Schimbă imediat tonul : Ce s-a întâmplat? - Gogule, te văd Cum nimeni nu părea să aibă nici cea nedumerit. Hai să mai mică intenție de a răspunde, Gogu își vedem, care este drese vocea: de fapt problema - Au venit cerințele de la client... noastră? - Ah, super tare. Au reușit deci să le tri- - A noastră, mită în timp util... Se prinse însă imediat: Șefu’, că a lui matale Sunt varză, nu-i așa? Și ai nostri ce-au spus? văd că nu e! Ei nu, nu spuse asta Gogu cu nu e validă. Ia gândiți-vă voi, câți ciobănași - Păi aici e problema, Șefu’! se băgă voce tare, doar o gândi. Puse în cuvinte aveam? Unul singur? Nu prea, în baladă Mișu în discuție. „Ai noștri” nu sunt sigur doar durerea lui cea mare: sunt trei, nu-i așa? Și ce fac ceilalți doi? că sunt ai noștri. Au înghițit totul pe motiv - Problema e că ai noștri băieți au Planuri, măi băieți! Ceilalți doi complo- că e prea târziu, că asta e, bine că le avem acceptat documentul! Și e aproape inuti- tează! Adică s-au întâlnit, au discutat, au și pe acestea, ce-o fi o fi, n-avem ce face, lizabil. Formulările sunt vagi, incomplete, analizat situația turmelor, numărul oilor lasă că le descurcăm noi că suntem băieți unele cerințe se bat cap în cap, sunt și calitatea lor, și-au stabilit niște obiective deștepți – adică noi, cei de la dezvoltare. inconsecvențe în terminologia folosită, și priorități și au făcut un plan de acțiune - Nu că asta n-ar fi adevărat... nu se nu există nici o prioritizare, plus că în loc pentru atingerea obiectivelor... Așa că, măi putu abține Gogu. Dar chiar și-așa, avem să descrie cerințe, ei dau soluții... Gogu băieți, dacă vă place Miorița asta, ia lăsați de lucrat cel puțin o săptămână la ele! Doar își trase răsuflarea și continuă cu și mai voi ciobănașul resemnat și preluați rolul la clarificare... mare năduf: Cum poți accepta așa ceva?! celorlalți, faceți o analiză rapidă a docu- Voci de aprobare se auziră din tot biroul Ei n-au citit documentul? Cum să-l tri- mentului primit și trimiteți înapoi către „ai care se animă subit. De unde nimeni nu mită așa către noi? Ca în Miorița! Asta ne noștri” cererile noastre de îmbunătățire. părea dispus să spună nimic, ca la semnal se caracterizează: ne împăcăm cu ce avem, ne Știu că e mai ușor să ne plângem, dar nu încălziră toți și fiecare își dădea cu părerea resemnăm. Și asta înseamnă că noi vom schimbăm nimic dacă nu ne mobilizăm. asupra documentului trimis. Comentariile lucra ca salahorii... Așa că, la treabă băieți! Hai s-avem soluții curgeau de peste tot, unii blamau docu- - Stooop! Iar începem? Șefu’ era dispe- și acțiune în Miorița asta a noastră! mentul și autorii lui, alții își vărsau năduful rat: Repet întrebarea, a răspuns cineva la asupra colegilor care îl acceptaseră, majo- email?! Ce e cu Miorița asta de n-o lăsați în ritatea însă se și vedeau deja lucrând mult pace? Îmi pare rău să vă dezamăgesc, băieți, și degeaba, ore întregi de muncă irosită, dar Miorița asta a noastră nu e relevantă Simona Bonghez, Ph.D. eforturi zadarnice, străduințe, supărări, pentru noi toți. Recunosc, unii dintre noi [email protected] dezamăgiri, frustrări... avem tendința de a accepta orice și a ne lăsa Speaker, trainer şi consultant în - Stooop! Aproape că răcni Șefu’, dis- în voia sorții. Comentăm, dăm mărunt din managementul proiectelor, perat să acopere vacarmul creat. A răspuns buze, dar acceptăm situația și mergem îna- Owner al Confucius Consulting cineva la email? inte resemnați. Dar nu toți, generalizarea

46 nr. 7/2012 | www.todaysoftmag.ro

sponsori

powered by