Sunteți pe pagina 1din 52

No. 10 Aprilie 2013 www.todaysoftmag.ro www.todaysoftmag.

com

TSM

T O D A Y S O F T WA R E MAG A Z I NE

l u d r boa p i l c Cu API
HTM B bAud e W : L5 Rad io ta: ig Da fie H a r g o i

- c i r o nn
Base

rtup a t S rii o t tig

nd e k e We

NoSQL - Introducere Provocrile unui lider (III) Istoria IT-ului Clujean (V) Comparare ntre diferite soluii NoSQL Prezentarea crii: Going Agile de Gloria J Miller Enterprise Application Development Aspect Oriented Programming

Interviu cu Tim Huckaby Bazele de date NoSQL o analiz comparativ Comunitile de practic, nvare prin aciune i explorare Recenzia crii: Thinking in Java de Bruce Eckel Provocrile unui Business Analyst WordPress i spiritul comunitii Sindromul Superman

6 Cu clipboard-ul n nori la Startup Weekend Cluj


Mircea Mare

30 NoSQL Introducere
Radu Vunvulea

8 Startup Live, un eveniment care nu trebuie ratat


Marius Mocian

33 Bazele de date NoSQL o analiz comparativ


Traian Fratean i Bogdan Fluera

9 Istoria IT-ului Clujean (V) - Proiectul Timeline


Marius Mornea

37 Big Data: Radiografie HBase


Ctlin Roman

10 Interviu cu Tim Huckaby


Mihai Ttran i Tudor Damian

39 Migrare website MVC 3 + DB n Azure


Drago Andronic

12 Liberty Technology Park Cluj


Echipa Liberty Technology Park Cluj

41 Provocrile unui lider partea III


Martin Mackay

15 HTML5: WebAudio API


Radu Olaru

43 Prezentarea crii: Going Agile


Gloria J. Miller

18 Enterprise Application Development


Lucian Ciufudean

46 Recenzia crii: Thinking in Java de Bruce Eckel


Silviu Dumitrescu

21 Aspect Oriented Programming


Knall Andreas

48 Sindromul Superman
Antonia Onaca

24 Provocrile unui Business Analyst


Daniela Haliga

50 WordPress i spiritul comunitii


Cornelia Stan

27 Comunitile de practic, nvare prin aciune i explorare


Cristina Donea

editorial

Ovidiu Man, PMP

ovidiu.matan@todaysoftmag.com Fondator i CEO al Today Software Magazine

m ajuns la numrul 10 al revistei Today Software Magazine i ne bucurm c n jurul ei se dezvolt o comunitate real care are ca pasiune comun dezvoltarea de software. Am avut o lun a mriorului cu un eveniment special, este vorba de ..even mammoths can be Agile, unde am fost alturi de Colors in Projects, re-brandingul companiei Confucius Consulting condus de Simona Bonghez. Ea este cunoscut n cadrul revistei prin seria de articole Gogu dar i ca trainer experimentat de project management. Gogu este n vacana de Pati n luna aceasta, dar avem promisiunea revenirii sale n curnd. Evenimentul a fost un real succes. n Cluj am avut 230 de participani cu muli speakeri locali dar i internaionali. A dori s o menionez pe Gloria Miller care a avut o prezentare tehnic pe tema Agile. n acest numr publicm un articol n care ea i prezint cartea Going Agile. l felicit pe Dan Suciu pentru prezentarea fcut n cadrul evenimentului, aceasta conducnd n topul de vizionrilor de pe canalul nostru de youtube cu 1,300 de minute cumulate. La o sptmn distan, n Bucureti, s-a remarcat cu o prezentare de excepie David J. Anderson, cunoscut drept printele metodologiei Kanban-ului. Am fost impresionai de simplitatea acestei metodologi i de eficiena aplicrii sale n anumite domenii cum ar fi media. Un alt eveniment deosebit al lunii martie a fost prima ediie a IT Cluster ClujInnovation Days. Evenimentul de deschidere a adus mpreun lumea de business i cea politic. S-a vorbit despre proiecte de dezvoltare local i despre modul de colaborare din cadrul unor companii globale precum IBM. Este o noutate pentru Romnia, iar interesul crescut al companiilor locale de a lua parte la acesta este un prim pas spre o mai bun nelegere i cretere comun. elul proiectului este dezvoltarea unui ecosistem ce va avea n centru inovaia prin colaborarea IT-ului i mbinarea acestuia cu diverse domenii conexe cum ar fi medicina. Planificarea evenimentelor lunii mai trebuie s considere IT Camp, un eveniment de amploare pe teme Microsoft i nu numai. Organizatorii acestui eveniment au realizat pentru TSM un interviu cu Tim Huckaby, specialist n NUI (Natural User Interface) folosind stimuli tactili, gesturi i neuronale. Avem promisiunea lor de a-l putea revedea pe Tim la Cluj i anul acesta n cadrul evenimentului. TSM pornete o nou iniiativ, proiectul Timeline, prin care vrem s punem ntr-un grafic datele despre companiile dezvoltatoare de software din Romnia. Vom reprezenta momentul de nfiinare al unei companii, proiectele principale realizate de-a lungul timpului, atingerea anumitor criterii cum ar fi numr de angajai sau cifra de afaceri. Astfel se va putea urmri grafic aceast evoluie i arta mai bine maturitatea companiilor locale i de ce nu, o istorie contemporan a acestora. La final, felicitm echipa Cloud Clipboard, ctigtoarea de la ultima ediie a Startup Weekend-ului. Ne bucurm s putem promova iniiativele romneti prin publicarea pe larg a experienelor acestora din cadrul evenimentului i le urm mult succes n continuare. De altfel, tot n luna mai, vom avea un eveniment similar dedicat celor ce vor s pun o idee n practic, este vorba de Startup Live. Mutndu-ne n sfera managementului organizaional, vom fi alturi de Dan Ionescu, www.danis.ro, n iniiativa de a stabili un set de best practice-uri pentru managementul companiilor romneti unde nu ntotdeauna se pot aplica reetele de succes ale companiilor americane. n paginile acestui numr gsii tema NoSQL abordat pe larg n trei articole scrise de autori diferii: NoSQL - Introducere, Bazele de date NoSQL - o analiza comparativa i Big Data: Radiografie HBase. Articolele tehnice continu cu HTML5: WebAudio API, Aspect Oriented Programming i Migrare website MVC 3 + DB n Azure. De asemenea, doresc s menionez recenzia crii Thinking in Java de Bruce Eckel, o carte att de cunoscut i apreciat de programatorii Java. Comunitile n diverse forme sunt prezentate n Comunitatile de practic, nvare prin aciune i explorare i WordPress i spiritul comunitii. V dorim o lectur plcut !

Fondator i CEO al Today Software Magazine

Ovidiu Man

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Redacia Today Software Magazine
Fondator / Editor n chief: Ovidiu Man ovidiu.matan@todaysoftmag.com Editor (startups i interviuri): Marius Mornea marius.mornea@todaysoftmag.com Graphic designer: Dan Hdru dan.hadarau@todaysoftmag.com Colaborator marketing: Ioana Fane ioana.fane@todaysoftmag.com Colaborator social media: Rodica Manolache rodica.manolache@todaysoftmag.com Traductor: Cintia Damian cintia.damian@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Reviewer: Adrian Lupei adrian.lupei@todaysoftmag.com Produs de
Martin Mackay

Lista autorilor
Cristina Donea
mmackay@neverfailgroup.com CEO @ Neverfail Group. HR Specialist @ ISDC cristina.donea@isdc.eu

Mircea Mare

mircea.mare@gmail.com Software storyteller @ Cloud Clipboard

Traian Frtean

traian.fratean@3pillarglobal.com Software Engineer @ 3Pillar Global

Silviu Dumitrescu silviu.dumitrescu@msg-systems. com Consultant Java @ .msg systems Romania

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

Marius Mornea

marius.mornea@todaysoftmag.com Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research

Bogdan Fluera

bogdan.flueras@3pillarglobal.com Software Engineer @ 3Pillar Global

Marius Mocian

marius@mocian.com Fondator @ Transylvania Innovation Ventures Organizator @ OpenCoffee Club Cluj-Napoca

Gloria J. Miller

gloria.miller@maxmetrics.com Fondator @ MaxMetrics

Today Software Solutions SRL


str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2284 6352

Mihai Ttran
Microsoft MVP CodeCamp

mihai@itcamp.ro

Daniela Haliga
Business Analyst @ Endava Iai

daniela.haliga@endava.com

Co-fondator ITCamp

Radu Olaru

rolaru@smallfootprint.com Senior Software Developer @ Small Footprint

Cornelia Stan corneliastn@gmail.com Copywriter/Organizator @ WordCamp Transylvania

Lucian Ciufudean
Server Automation Functional Architect @ HP Software Cluj

lucian.ciufudean@hp.com

Tudor Damian
tudy@itcamp.ro Microsoft MVP ITSpark Co-fondator ITCamp

Copyright Today Software Magazine


Knall Andreas

Reproducerea parial sau total a articolelor din revista Today Software Magazine fr acordul redaciei este strict interzis. www.todaysoftmag.ro www.todaysoftmag.com

knall.andreas@msg-systems.com Java Team Lead @ .msg systems

Ctlin Roman

catalin.roman@nokia.com Software Architect @ Nokia, Berlin

Drago Andronic
CTO @ TXTFeedback

dragos@txtfeedback.net

Antonia Onaca

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub form de antreprenor, intraprenor i antreprenor din nou

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

startups

Cu clipboard-ul n nori la Startup Weekend Cluj


ineri, ziua de mrior, 19:30. 150 de oameni ntr-un local care gzduiete nuni, de obicei. Atmosfera era destul de apstoare. De cum am intrat, am tiut c nu o s pitch-uiesc. Nu doar att, dar m ntrebam ce caut acolo. Aveam o idee, i mi-am fcut o scurt prezentare n minte n zilele precedente, dup care am lefuit-o pn a ajuns prezentarea la un minut. Iniial nu tiam dac vreau sau nu s o prezint, dar am czut de acord cu mine c o s iau decizia final cnd vom ajunge la eveniment, n funcie de atmosfer. Pure cross platform file system. Nu era o idee pentru un startup. Pentru c la momentul respectiv, nici nu tiam ce e un startup. Am aflat ulterior... e o idee care dorete s fie un produs. Nu e ceva legat exclusiv de lumea IT, ns n mediul nostru e foarte uor s faci un prototip i studiu de pia. Mai e un lucru esenial: potenial foarte mare de cretere - indice, spirale, sector i ali termeni la care m uit ca la bibelouri. Eforturile prezentatoarei de a revigora publicul i de a domina sala au avut efectul invers dorit, dar ntr-un final a nceput focul de pitch-uri (pitchfire). Au fost 36 de pitchuri. Reaciile au oscilat ntre hai, fii serios!, hmm, interesant, s-ar putea s funcioneze. Am remarcat: Catwalk15, FridgeChef, DoItForMe, CloudClipboard. n continuare, unii pitcheri s-au aezat lng afiele care le aparineau ncercnd s conving lumea s voteze ideea lor. Asta nu trebuia s se ntmple, pitch-ul trebuia s fie suficient. Dar... se pare c mult lume era hotrt s ctige. Oare chiar sta s fie secretul succesului? Sper c pn la sfritul articolului s rspund la ntrebarea asta. 17 idei au trecut de etapa de votare i echipele au nceput s se formeze. Piki (Istvan Hoka), pe care l tiam de la un CodeRetreat, se uit la mine, arat spre una din echipe, i m ntreab CloudClipboard?. Pitch-ul lui Clin ar fi pe scurt: Seamlessly copy/paste across devices. As simple as CTRL+C, CTRL+V. Nu cred c exagerez dac spun c a rostit seamlessly de cel puin o sut de ori pe durata celor trei zile.

i aa a nceput...

Mircea Mare

mircea.mare@fortech.ro Software storyteller @ Cloud Clipboard

Clin s-a dovedit de un entuziasm contagios. Ne-a primit foarte ncntat n echipa lui. Ne-am prezentat, ne-am spus pe scurt background-ul, iar pe msur ce s-au mai alturat oameni echipei, Clin ne prezenta pe fiecare. Ne-a memorat numele i lucrurile la care ne pricepem imediat. Ne-a mai i complimentat: artai ca nite tipi detepi. Astea fiind spuse, am trecut la treab. Am nceput cu un brain dump. Pe parcurs ni s-a mai alturat Kamillia (din State) i Tudor. Tudor e developer, dar i-a exprimat intenia de a fi n echipa marketing de la bun nceput. Am aflat c Tudor are deja startup-ul lui KeenSkim - cu care a participat la acceleratorul de bussiness Eleven din Bulgaria. Tudor trgea de noi, s ne concentrm pe business, pe produs, nu doar pe un feature cool. Cam greu cu apte developeri a cror expresie era: Las astea, hai s hackuim ceva!. Am convenit asupra produsului minim viabil; pentru prezentarea final s putem face copy de pe un device urmat de paste pe altul. S-au conturat echipele: marketing, backend, Android, Windows, Linux i catalistul (mai precis Clin.) Ne-am spus fiecare ideile i am dezbtut pn n jurul orei 23:30. Spre deliciul majoritii, planul era unul foarte simplu: mine scriem cod. Java, C#, Ruby,

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Publish/subscribe, Pubnub API. Localul urma s se nchid la miezul nopii aa c am rmas n faa restaurantului s povestim. Ce altceva dect... detalii de implementare. Pairing, backend, parazitare pe Google Docs sau Dropbox pentru transfer de fiiere, descoperire ntre device-uri. Smbt dimineaa am pornit cu mult energie. Pna la ora 13:00 aveam un chatroom pe Campfire, repository Github , documente cu descrierea mentorilor cu care urmam s stm de vorb i organizarea echipelor. Pe la prnz, prototipul nostru prindea contur, primele mesaje au nceput s circule pe canalul de Pubnub. Dar lsnd un pic la o parte entuziasmul tehnic, vom meniona cteva din sfaturile pertinente primite de la mentori. Ibrahim Evsan ne-a ncurajat s aflm comportamentul utilizatorilor, ce fel de informaii au n clipboard i ne-a recomandat s sumarizm ce face produsul nostru, s ajungem la un use case. Ne-a sugerat chiar i c putem construi un nou tip de search engine n jurul conceptului nostru. David Zwelke a fost genial. Irumpea cu idei i dup ct timp ne-a alocat, sunt convins c i-a fcut plcere s povesteasc cu noi. Ne-a sugerat mpachetarea produsului n Goldfish i Elephant edition, idee care a ajuns n planul final de afaceri. Ne-a oferit recomandri legate de encripie, metode de pairing (bump, QR code, Bluetooth-like pairing), securitate, aspecte legale i cum putem aduga latura social. Ne-a sugerat un punct dureros pentru care produsul nostru putea s fie o soluie: frustrarea de a nu putea mprti informaie rapid. A mai subliniat c e important s ne difereniem de competiie. A fost delicios comentariul, care a sunat cam aa: Toi tipii ai cu barb pe gt, mptimii Linux vor zice: puteam s fac pipe la clipboard prin SSH nc din 92. Dup care se uit la mine i mi spune Barba ta arat mai bine dect a lor. ine minte totul ce obinuiai s uii pn acum a fost o sugestie de motto, iar la feature-uri s adugm autofill ntre device-uri, plugin-uri, pull la lucruri predefinite. Sebastian Presecan ne-a sugerat cteva ntrebri la care trebuie s rspundem: cine ne e grupul int, cum transfer oamenii informaii acum, ct timp pierd cu asta, de ce s folosim copy/paste de la bun nceput, cum se rezolv problema n mod actual. De asemenea ne-a sugerat s evitm termenii prea tehnici, s comunicm n limbajul publicului larg. Christoph Raethke ne-a sugerat s direcionm soluia noastr ctre corporaii sau s o oferim la pachet cu soluii existente. Pe de alt parte Simon Obstbaum ne-a spus c e un issue care ine de utilizator, nu e problema unei corporaii. n jurul orei 15, echipa de marketing era n discuii cu Bradley Kirkham. i ntrerup Deci, live demo! Iniial Clin a rs, creznd c glumesc... Serios?! Piki face copy la un text de pe Mac, eu fac paste pe laptop-ul meu cu Linux, faa lui Clin se lumineaz i Bradley exclam Thats so cool! n urma discuiilor cu mentorii eu unul m-am simit descurajat. Lumea s-a artat ncntat de idee, dar chiar aveam un produs? Ne-am petrecut restul zilei discutnd i... de amar, mai cutam oarece feature-uri pe care s le mai implementm pn mine. Optimizri, vizualizarea i agregarea datelor etc. Nu s-a ales mare lucru i pe la 21:30 am pus punct. Prezentarea a mers brici, iar Christoph (Berlin Startup Academy) a venit nainte de premiere s ne invite la Berlin, indiferent de rezultatul care urma s fie anunat. Cei de la TSM au fcut un sondaj de popularitate ntre participani i am vzut c aveam n jur de dublu numrul de voturi fa de urmtoarea echipa. Am simit c lucruri ncep s se ntmple, dar tot m abineam s m gandesc c vom ctiga. Nici nu a pomenit nici unul din noi asta. Dar, poate deloc suprinztor... CloudClipboard a ctigat. Ne-am completat. Acesta a fost i motivul pentru care s-a format o echip bun; ne-am simit inteniile i am rezonat ca i abordare. Ne-am organizat repede i iniial nu ne-a psat de nimic. Pe lng asta, am avut dorina sincer s ne simim bine. Nu ne-am gndit la ctig, dar ne-am fcut bine treaba pentru c aa ne e firea. i am urmat sfaturile. Una din concluziile pe care le-a tras Clin sun cam aa: ascult ntotdeauna, nu te preface doar. Plus c ne-am distrat. Pentru prototip nu avem pairing. Eram toi conectai la acelai canal. Aa s-a nscut paste roulette. Dai paste i nu tii sigur ce obii i din clipboard-ul cui. A fost cel mai mare eveniment startup din Romnia de pna acum, iar Cristoph a afirmat pe blogul su c potenialul pe care l-a vzut la SWCluj, e precum cel din lumea startup-urilor din Germania. A intuit i foarte bine c firmele de outsourcing nu las nimic n farfurie cnd vine vorba de oameni talentai. Aadar lucrurile sunt promitoare, nu ducem lips de talent i e de ateptat s auzim din ce n ce mai des despre startup-uri. Ct despre petrecerea de dup eveniment, Cristoph a sumarizat-o cam aa: the participating geek girls had revamped into bombshells. Pentru echipa Omnipaste (redenumit din cauza unui nameclash cu o alt aplicaie) distracia ncepe cu patru zile n Berlin.

Duminic.

Tudor: Cui se adreseaz produsul? Clin: Mie.

Aceast conversaie s-a repetat de vreo trei ori. Dup un timp lucrurile a nceput s sune mai bine. O pia format din tineri profesioniti IT, n proporie 90% brbai, programatori, jurnaliti care vor s fie productivi i s lucreze organizat, n contextul n care sar des de la o idee la alta. Aveam publicul int definit, strategie de rollout ( ediia Goldfish i Elephant ) iar din punct de vedere al execuie un prototip funcional pe 3 platforme, o echip i un model de ctig clar i realist (sau mcar credibil, n orice caz.) CloudClipboard propune un proces din doi pai pentru transferul de date, iar combinaia de taste e impregnat n memoria muscular a oricrui utilizator. Un clipboard inteligent, global, sensibil la tipul de date. Exist soluii similare dar marele lor neajuns este c fac sincronizare folosind o interfa (Evernote) sau e restricionat la un OS (de pild iOS deoarecere sincronizarea se face via iCloud.) Suna bine, aa c am nceput s facem prezentarea i slide-urile. Am filmat un demo: copy la un numr de pe un telefon i paste ntr-un chat de skype. Am fcut un testdrive la prezentare lui Philip Kandall (Skobbler) care ne-a sugerat s gsim numere mai realiste legate de grupul int (numrul total de persoane care lucreaz n IT nu e credibil) i ar trebui s rafinm aspectul ast. Aadar, am studiat piaa Evernote i Dropbox i am inclus asta.

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

startups

n ultimii ani au nceput s apar i n Cluj-Napoca tot mai multe persoane interesate de antreprenoriat n zona software. Odat cu aceast tendin au aprut diferite organizaii i persoane care i ajut pe tinerii care vor s urmeze aceast cale. Una din aceste organizaii este i Transylvania Innovation Ventures (TIV). Povestea TIV a nceput n vara anului 2012, n Bucureti, la unul dintre colocviile Caesar organizate de Liga Studenilor Romni din Strintate. Acolo, Marius Mocian, organizatorul ntlnirilor OpenCoffee din Cluj-Napoca, l-a cunoscut pe Mihai Dan Nad, CTO-ul Yonder, una dintre companiile importante din industria IT Software clujean. n septembrie cei doi au pus bazele TIV, cu misiunea de a transforma oraul Cluj-Napoca pn n 2022 n polul inovaiei i antreprenoriatului n domeniile IT software i tehnologic din Romnia. Cu alte cuvinte visul fondatorilor este ca n anul 2022 orice tnr din Romnia care dorete s porneasc un startup tehnologic s vin n Cluj-Napoca, unde s gseasc toate resursele de care are nevoie pentru a reui. Unul din primele proiecte importante ale TIV este Startup Live. Acest eveniment, care se va desfura ntre 17 i 19 mai, este organizat mpreun cu Start Europe, organizaie care e n spatele Pioneers Festival, una din cele mai mari conferine dedicate antreprenoriatului tehnologic la nivel european, care se desfoar la Viena. Startup Live este un eveniment care se desfoar n peste 30 de orae europene. Dar ce este Startup Live? Este un eveniment care se desfoar pe parcursul unui weekend, n timpul cruia participanii au ocazia de a transforma o idee ntrun startup sau pot lucra la un proiect deja existent. De asemenea, ei vor avea la dispoziie mai muli mentori de la care pot primi sfaturi sau rspunsuri pentru ntrebrile lor. Mentorii sunt tineri care n ultima perioad au trecut prin experiena transformrii unei idei ntr-un produs, dar i experi tehnici din comunitatea local. Printre acetia se numr: Cosmin Mihaiu, co-fondator i CEO al MIRA Rehab, companie clujean care a primit o investiie din partea acceleratorului Healthbox din Londra; Tudor Vlad, fondator i CEO al KeenSkim, o alt companie clujean n care a nvestit acceleratorul Eleven din Sofia; Victor Popescu, fondator i CEO al Gameleon, care a ctigat Startup Live Bucureti, Innovation Award la How to Web Bucureti (cea mai mare conferin de profil din Romnia i susintor al Startup Live Cluj-Napoca), a primit o investiie din partea acceleratorului Eleven din Sofia i este prima echip romneasc care a fost selectat n cadrul acceleratorului Mozzila WebFWD; Ciprian Mardare, co-fondator i CTO al Nexi.me, care a primit o investiie din partea acceleratorului Rockstart din Amsterdam i alii. Vestea acestui eveniment nu a rmas fr ecou n comunitatea local. Yonder, unul dintre susintorii activi ai inovaiei n Cluj-Napoca, a hotrt s se alture nc de la nceput evenimentului i va asigura spaiul de desfurare. O alt surpriz plcut a fost fcut de Skobbler, companie care, dei a investit masiv la nceputul lui martie n organizarea Startup Weekend, este hotrt s susin i acest eveniment. Un alt partener important este Barandi Solutions, o mic companie local care pe lng susinerea pe care o ofer evenimentului va alege una dintre echipele participante, care va decide s continue proiectul nceput i o va ajuta s dezvolte un MVP. Mai trebuie menionat echipa Klain, care se ocup de dezvoltare web, strategii de marketing online i promovare, oferindu-ne o parte din experina lor pe parte de comunicare i prezen n social media. Acetia sunt doar o parte din susintorii acestui eveniment, lista fiind mult mai lung. Pentru mai multe informaii v rugm s urmrii site-ul oficial (http://startuplive.in/cluj-napoca/2/) i pagina de Facebook (https://www.facebook.com/ startupliveclujnapoca)
Marius Mocian
marius@mocian.com Founder @ Transylvania Innovation Ventures Organizer @ OpenCoffee Club Cluj-Napoca

Startup Live, un eveniment care nu trebuie ratat

Startup Live Cluj Napoca 17 - 19 Mai 2013


Detalii despre eveniment
StartupLiveClujNapoca

2
startuplive.in/cluj-napoca/2/

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

Klain

TODAY SOFTWARE MAGAZINE

istorie

Istoria IT-ului Clujean (V)


Proiectul Timeline
ropunerea din acest numr este foarte simpl. Vrem s construim un timeline comun al ct mai multor companii de IT din peisajul clujean. Am plecat de la ideea alctuirii unei liste, pentru popularea hrii IT (din numrul trecut), folosind surse foarte variate,

au fost validate online pe site-urile companiilor, totui sunt anse s existe unele diferene fa de brandul oficial sau cel prezent n cultura popular, cum ar fi Betfair vs. TSE Development, Nethrom Software vs. Yonder, TORA vs. Tora Trading Services, etc. Pentru a facilita feedback-ul

majore, etc. . Noi promitem s combinm toate timeline-urile primite ntr-unul singur, care s prezinte o perspectiv comun i succint asupra evoluiei IT-ului local. Considerm acest exerciiu util i individual, prin caracterul auto-explorator i rezultatul final simplu, ce poate nlocui

nestructurate, fr a ncerca s explorez exhaustiv mediul de business. De exemplu lista de membrii ai Cluster IT, ARIES, firme prezente la JobShop, anunuri pe BestJobs, contacte de pe LinkedIn, cri de vizit stivuite pe birou, etc. Iar pentru c acest proiect aparine comunitii, TSM avnd doar un rol catalizator, am decis s v prezentm aceast list iniial, nsoit de o cerere de ajutor n a o extinde i eventual corecta. Dei majoritatea numelor folosite

a luat natere wordlet-ul alturat. cartea de vizit a oricrei companii. Sper s n ncercarea de a combate ineria tipic v plac aceast provocare i s rspundei a cititorilor notri i a explora tema istoric n numr ct mai mare. a seriei, v provocm s ataai fiecrui nume din acest wordlet un timeline succint Marius Mornea al companiilor dumneavoastr. Exemple marius.mornea@todaysoftmag.com de evenimente ce pot popula acest timeline ar fi: fondarea companiei, depirea unui Fost senior software developer numr de clieni, angajai, cifr de afain cadrul Nokia, n prezent ceri, schimbarea brandului, parteneriate, fondatorul platformei Mintaka Research evenimente, lansri de produse, contracte
www.todaysoftmag.ro | nr. 10/Aprilie, 2013

interviu

Interviu cu Tim Huckaby


im Huckaby este un specialist n NUI (Natural User Interface) folosind stimuli tactili, de micare i neuronali. A fost numit Pionier al Smart Client Revolutions de ctre presa internaional i este cunoscut pentru calitatea prezentrilor tehnice pe care le susine la conferine din ntreaga lume. Va fi prezent la IT Camp unde vei putea asista timp de dou zile la trei track-uri paralele ce vor cumula peste 30 de ore de prezentri, dezbateri i workshop-uri . Tim, cnd ai nceput cariera de profesionist IT? [Tim]: depinde cum definim profesionist. n mod cert mi-am ctigat o parte din banii necesari studiilor universitare prin consultan i proiecte de dezvoltare software. Dup absolvire m-am angajat la EDS ... asta pe cnd era condus nc de Ross Perot. Ce te-a facut s alegi aceasta meserie? [Tim]: asta e o poveste interesant. Eu am studiat la un liceu catolic pentru biei. Nu studiam tmplria; studiam latina. Nu aveam calculatoare; aveam calcul diferenial i integral. Nu m-am atins de programare pn la primul curs de Pascal n facultate. M-am indrgostit de programare din cauza acelui curs. Dup aceea am urmat toate cursurile de programare din facultate, absolut toate. Eti autorul unor cri pe tehnologii Microsoft. Cum ai reuit s ai att de mult succes? [Tim]: succesul e relativ. nc mai am foarte multe de realizat pe plan profesional. nc scriu articole pentru reviste si un tutorial lunar de dezvoltare de aplicaii, dar mi-ar fi greu s scriu inc o carte. Pe acelea le-am scris pentru c lucram n echipele de produs la Microsoft. tiam produsele de la cap la coad i a fost doar o munc de a le explica. Expertiza pe care o am acum este n zona experienei utilizatorilor, NUI (Natural User Interface), implicarea utilizatorilor. E greu s scrii despre aa ceva. E mult mai eficient s o ari. Ceea ce explic de ce fac att de multe prezentri. Tu i compania ta, Interknowlogy, suntei foarte specializai pe tehnologii Microsoft. Cum reueti s rmi la curent cu tehnologia innd cont de viteza cu care progreseaz? [Tim]: nu reuesc. tiam toat platforma Microsoft de la cap la coada. Acum doar m menin la curent cu prile care m intereseaz. Am atia colegi inteligeni n companie pe care pot s m bazez, iar atunci cnd am nevoie s neleg ceva m adresez lor. Platforma Microsoft e foarte mare acum. Nimeni nu o poate ti pe de-a-ntregul. Cum i petrece Tim Huckaby o zi tipic de lucru? nc mai ai timp pentru munca tehnic? [Tim]: Cred c de asta viaa mea e foarte captivant: nu am o zi tipic. Niciodata nu repet aceeai zi. Tind s cltoresc foarte mult ceea ce mi face viaa interesant. i, evident, apare o criz n fiecare sptmn. Ct despre tehnologie: nc o iubesc. Dar, aa cum am menionat anterior, nclin s mi petrec zilele tehnice avnd o vedere de ansamblu i nu n detalii aa cum mi-am nceput cariera. Iar Interknowlogy este o companie de proiecte custom care dezvolt aplicaii pentru toate industriile, de la cercetare n domeniul cancerului, la retail, pn la NASA. Deci, munca e chiar interesant. Dar, pe masur ce avansez n vrst sunt tot mai mult angrenat n complexitatea business-ului. Iar provocrile de business sunt la fel de complexe ca cele de programare ... dac nu mai mult. Care sunt hobby-urile tale? Mai ai timp pentru ele? [Tim]: niciodat nu este suficient timp ntr-o zi ... mi-a luat 10 ani s construiesc InterKnowlogy aa cum este acum. Iar la 15 ani de via, este o companie excepional condus de oameni excepionali. Acum civa ani m-am dat la o parte din poziia de CEO i am promovat numrul 1 de atunci. Asta mi-am propus dintotdeauna. mi lipsesc rdcinile din dezvoltarea de produse, i dei nc dein InterKnowlogy i sunt preedintele companiei, nu mai sunt

Tim Huckaby
Microsoft RD, MVP InterKnowlogy

implicat n operaiunile zilnice la fel de mult. Petrec mai mult timp cu start-up-ul meu. Se numete Actus i dezvolt produse interactive de afiaj electronic (conduse prin gesturi i voce cu Kinect). Dar, cred ferm n familie i hobby-uri. Nu prea m uit la TV (cu exceptia sportului i comediei) i nu m joc pe xBox. Dar, iubesc natura. mi iau cu mine un snowboard sau o undi de pescuit la musc n fiecare cltorie de business pe care o am. Se ntmpl foarte rar s nu mi rezerv cteva ore de pescuit la musc ntr-o cltorie de business. Mi-ar place foarte mult s fac asta i n munii din Romnia. Dac ai avea din nou 25 de ani, ce ai face profesional? [Tim]: greu de rspuns. ntotdeauna mi-a plcut software-ul, dar uneori simt c mi-am ratat chemarea n tiinele naturii. Mi-ar fi plcut s fiu un biolog de teren. Din cauza pescuitului la musc tiu mai multe despre entomologie (tiinta insectelor) dect cei mai muli oameni. n plus, ntotdeauna am simit c a avea nclinaii muzicale. Nu mi s-a permis niciodat s cnt la un instrument; cred c dac mi s-ar fi permis, a fi fost bun la asta. Cnd o s m pensionez, cred c o s nv s cnt la un instrument atunci cnd nu voi skia sau

10

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

pescui.

plus, oferii conduc nebunete! i am condus n Roma ... dar nu am vzut niciodat Asta va fi a doua vizit a ta in Romnia. oferi mai nebuni dect n Romnia. O s-o Ce tiai despre ara noastr nainte de prima aduc pe Kelly i n acest an. Abia ateptm! vizit? Care e prerea ta acum? [Tim]: ei bine, sunt norocos. n ultimii Cum vezi profesionitii IT din Romnia? 15 ani Microsoft m-a trimis n toat lumea. Att bine ct i ru. Deci, am fost peste tot n Balcani, peste tot [Tim]: nu prea vd lucruri rele. Vd n Europa de Est i niciodat nu avusesem programatori entuziasmai. Avem angajai ocazia s vd Romnia. Aa c atunci cnd n Estul Europei. Este enorm de mult talent oportunitatea s-a ivit am acceptat imediat. de inginerie software n Estul Europei. Foarte interesant e c soia mea Kelly este Avnd n vedere infrastructura, economia, invitat i ea n aceste cltorii cu mine, dar cultura, etc. - poate c evoluia tehnolodin cauza copiilor i a treburilor n gene- gica a fost frnat n cteva locuri. Dar se ral, vine foarte rar. Dar, a venit anul trecut recupereaz ... rapid. Oricum, i noi avem n Romania i s-a distrat de minune. Am probleme destule n SUA. Peste tot n nchiriat o main i am condus prin ar. lume sunt probleme care frneaz evoluia Ce aventur! Hai s spunem doar c GPS-ul tehnologiei. ns tehnologia n sine nu e ne-a dus pe drumuri care sunt mai rele problema. dect cele pe care le-am vzut n Mexic. n

Mihai Ttran
Microsoft MVP CodeCamp

mihai@itcamp.ro

Co-fondator ITCamp

Tudor Damian
tudy@itcamp.ro Microsoft MVP ITSpark Co-fondator ITCamp

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

11

business

Liberty Technology Park Cluj

ste primul parc tehnologic din Romnia, un parc de idei plasat ntr-un spaiu revoluionar, creat pentru a oferi condiii excepionale de cretere i dezvoltare companiilor din domeniile IT&C i R&D ntr-un areal inedit din punct de vedere conceptual i arhitectural.

Silicon Valley, un model demn de urmat


Echipa Liberty Technology Park Cluj
office@libertytechpark.ro

Imaginai-v c facem un salt n trecut, n urm cu 60 de ani, n S.U.A, lng Standford University i privim cum sub ochii notri ia via comunitatea ce astzi este cunoscut sub numele de Silicon Valley, primul i n continuare cel mai renumit parc tehnologic dedicat cercetrii i inovaiei tiinifice. Pentru a rspunde nevoilor financiare, dar i educaionale ale centrului universitar Stanford imediat dup cel de-al Doilea Rzboi Mondial i pentru a oferi oportuniti de angajare absolvenilor, s-a propus ca o parte din terenurile aparinnd universitii s fie date spre nchiriere doar companiilor din domenii conexe, cu scopul de a deveni un parc de birouri. Iniial s-a numit Stanford Industrial Park, iar ulterior a primit denumirea de Stanford Research Park. Premisele care au stat la baza formrii conceptului de parc tehnologic i care au condus la materializarea acestuia n mai multe locuri din lume sunt legate de dorina de a angrena oameni care mprtesc aceleai interese pentru dezvoltarea domeniilor de activitate n care profeseaz ntr-un mod creativ. La loc de cinste se afl schimbul de idei i implicarea oamenilor tineri cu potenial n gsirea resurselor necesare pentru o dezvoltare fructuoas a noilor tehnologii.

Un ecosistem dinamic n inima Transilvaniei


Revenim n prezent. Suntem pe strada Grii, n Cluj-Napoca, pe platforma fostei fabrici de mobil Libertatea, locul unde s-au pus bazele parcului tehnologic Liberty Technology Park Cluj, un proiect gndit pe baza acelorai premise ca i conglomeratul Silicon Valley. Situat n Cluj-Nap o ca, cel mai important ora al Transilvaniei, Liberty Technology Park Cluj i propune s intervin n peisajul local la un nivel profund, oferind un loc n care mai multe companii din domeniile IT&C i R&D conecteaz, angreneaz i ncurajeaz oameni motivai i idei creative ntr-un flux perpetuu de dezvoltri inovatoare. Liberty Technology Park Cluj este menit s funcioneze asemeni unui ecosistem dinamic pentru companii IT&C i R&D locale i internaionale, bazat pe un concept inedit i alimentat de acea viziune aparte care face ca ideile s prind via i afacerile s prospere. Conceput pe amplasamentul fostei fabrici de mobil Libertatea, Liberty Technology Park Cluj reinventeaz identitatea acesteia utiliznd patrimoniul industrial primit odat cu terenul ntr-un mediu destinat pentru a rspunde nevoilor unei companii IT&C i R&D. Din punct de vedere arhitectural, principiul central pe

12

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

business
care l-au urmrit arhitecii de la Chapman Taylor are n vedere reconvertirea spaiilor existente ntr-un parc tehnologic ce va reflecta energia companiilor tech alimentate de potenialul uman pe care oraul Cluj-Napoca l are de oferit.

TODAY SOFTWARE MAGAZINE


companiilor din IT&C i R&D, un mediu n care accentul este pus din start pe inovaie i creativitate, pe gsirea celor mai eficiente soluii i nu n ultimul rnd pe valorificarea potenialului de resurse umane. Pentru a reui, Liberty Technology Park Cluj pune la dispoziie mai multe tipuri de spaii concepute pentru a crea locul de munc ideal. De la spaiul de birouri efectiv pn la tot ce ine de timpul petrecut n afara locului de munc, ntreg habitatul a fost gndit la standarde nalte pentru a ntlni toate nevoile unei companii din IT&C i R&D, inclusiv gama complet de servicii i faciliti premium. Parcul va integra spaii de organizare evenimente, sli de conferine, o zon de leisure ce include un restaurant cu teras, o cafenea, sal de fitness, spaii verzi amenajate, terenuri de sport multifuncionale, grdini interioare, dar i o zon de retail i ngrijire medical, toate concepute pentru a crea un habitat tech ideal. Liberty Technology Park Cluj este un proiect dezvoltat de Fribourg Development i urmrete intensificarea conexiunilor i a comunicrii ntre companii din domenii conexe prin crearea unui spaiu revoluionar ce va genera inovaie i progres.

Habitatul Tech Ideal


n cadrul acestui habitat tech o parte din eforturi se vor concentra pe crearea celui mai complex accelerator business din Romnia: Spherik. Spherik va fi prima platform de acest fel pe plan naional, menit s ajute, s creasc i s dea via afacerilor cu potenial, o platform destinat dezvoltrii i implementrii de afaceri pe plan local, dar i internaional. Cea mai mare parte a eforturilor se va concentra ns pe crearea unui mediu ct mai stabil i valoros pentru angajaii

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

13

comuniti

Comuniti IT Cluj-Napoca
intre evenimentele IT ale ultimei luni vom selecta dou, plasate la capete opuse ale spectrului de dezvoltare business, dar asemntoare prin calitatea atmosferei i mai ales a participanilor. StartupWeekend este adresat celor la nceput de drum n definirea i formarea unei afaceri. Motiv pentru care atmosfera a fost plin de agitaie i entuziasm, susinut de o concuren sntoas i politicoas ntre echipe, att ct s existe tensiunea i bucuria ctigrii. Alturi de o echip de mentori numeroas i foarte implicat, organizatorii au avut de furc doar cu succesul la Calendar public i, implicit, numrul mare de participani (provocare pe care o dorim fiecrui eveniment de profil). Cluj IT Innovation Days a Aprilie 4 semnat mai degrab a eveniment aristocratic n IT-ul local. Att Lansarea numrului 10 TSM organizarea evenimentului, dar mai ales publicul: un mixt de figuri www.todaysoftmag.ro politice, reprezentani ale celor mai mari companii IT, invitai din alte orae, profesori universitari i organizatori de evenimente Aprilie 4 majore din IT, au compus o atmosfer de business de nivel nalt. Ruby pe iOS: Introducere in RubyMotion Dovada c ecosistemul a acumulat suficient mas critic i a realiwww.meetup.com/cluj-rb/ zat saltul la un nou nivel de colaborare n comunitate. Transylvania Java User Group Comunitate dedicat tehnologiilor Java. Website: http://www.transylvania-jug.org/ Data nfiinrii: 15.05.2008 / Nr. Membri: 533 / Nr. Evenimente: 41 Comunitatea TSM Comunitate construit n jurul revistei Today Software Magazine. Website: http://www.todaysoftmag.ro Data nfiinrii: 06.02.2012 / Nr. Membri: 520 / Nr. Evenimente: 8 Romanian Testing Community Comunitate dedicat QA. Website: http://www.romaniatesting.ro Data nfiinrii: 10.05.2011 / Nr. Membri: 582 / Nr. Evenimente: 1 GeekMeet Cluj Comunitate dedicat tehnologiilor web. Website: http://geekmeet.ro/ Data nfiinrii: 10.06.2006 / Nr. Membri: 533 / Nr. Evenimente: 16 Cluj.rb Comunitate dedicat tehnologiilor Ruby. Website: http://www.meetup.com/cluj-rb/ Data nfiinrii: 25.08.2010 / Nr. Membri: 133 / Nr. Evenimente: 33 The Cluj Napoca Agile Software Meetup Group Comunitate dedicat metodelor Agile de dezvoltare software. Website: http://www.agileworks.ro Data nfiinrii: 04.10.2010 / Nr. Membri: 297 / Nr. Evenimente: 24 Cluj Semantic WEB Meetup Comunitate dedicat tehnologiilor semantice. Website: http://www.meetup.com/Cluj-Semantic-WEB/ Data nfiinrii: 08.05.2010 / Nr. Membri: 137/ Nr. Evenimente: 21 Romanian Association for Better Software Comunitate dedicat oamenilor cu experien din IT indiferent de tehnologie sau specializare. Website: http://www.rabs.ro Data nfiinrii: 10.02.2011 / Nr. Membri: 208/ Nr. Evenimente: 11 Aprilie 9 Jim Bagnola Lead the Change, Cluj-Napoca www.jimbagnola.ro/evenimente/cluj/ Aprilie 9 AgileWorks Remote Open Space www.meetup.com/The-Cluj-Napoca-Agile-SoftwareMeetup-Group/ Aprilie 10 Facebook graph search www.meetup.com/Cluj-Semantic-WEB/ Aprilie 10 Functional Programming http://lnkd.in/CijSms Aprilie 26 Romanian Progress User Group http://it-events.ro/events/romanian-progress-user-group/ Aprilie 27 Windows Azure Bootcamp it-events.ro/events/windows-azure-bootcamp-at-clujnapoca/ Mai 16-17 Romanian Testing Community Conference 2013 http://www.romaniatesting.ro/ Mai 23-24 ITCAMP 2013 - Recomandat de TSM http://itcamp.ro Joi/sptmnal OpenConnect www.facebook.com/groups/355893314491424/ Miercuri/bilunar OpenCoffee www.facebook.com/opencoffeecluj

14

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

HTML5: WebAudio API

Radu Olaru

rolaru@smallfootprint.com Senior Software Developer @ Small Footprint

n aceti ani aplicaiile online au mpins tot mai departe limitele platformei web. Probabil cu toii am fost iritai la un moment dat de aplicaiile web. Cu toii am sperat c pn la urm lumea se va liniti, se va vedea clar c webul nu poate suporta aplicaii serioase i Universul i va reveni la normal. Aplicaiile mari sunt pentru desktop, iar aplicaiile web sunt doar visele doctoranzilor entuziati de la Google. Dar apoi a aprut parc de nicieri HTML5. i HTML5 a revoluionat nu doar web-ul aplicaiilor business, ci a deschis larg porile web-ului aplicaiilor multimedia n special a jocurilor.

Noutatea multimedia

HTML5 vine cu o mare surpriz pentru dezvoltatorii de aplicaii multimedia. Deja tim pe de rost c exist tagul audio i video. Nu vom vorbi despre ele n acest articol. O examinare superficial arat c tagul audio nu este suficient pentru aplicaii serioase, fiind gndit s ascund complexitatea redrii sunetelor. Tagul asigur eventual un background muzical excelent pentru nostalgicii site-urilor din anii 90. Pentru cei ce vor s dezvolte procesoare de sunet n timp real, HTML5 descrie o interfa special: WebAudio. WebAudio permite poziionarea sunetelor ntr-un spaiu tridimensional, mixarea surselor multiple de sunet redate simultan i rutarea lor printr-un sistem modular puternic de procesare. Efectele aplicabile includ un motor de calitate nalt pentru reverberaii i simulare complet a spaiului de audiie. De asemenea, datele audio pot fi analizate n timp real. Aceste faciliti au o int foarte specific: jocurile i aplicaiile de procesare audio. Staiile de procesare audio software au fost strict de domeniul desktopului. Niciodat nu s-a pus problema ca un artist s porneasc browserul pentru a executa o performan live. Nici nu s-a crezut c va avea vreodat sens ca o claviatur MIDI s comunice cu un browser web. Ei bine, totul s-a schimbat cu apariia WebAudio.

Pentru a ridica standardul multimedia n browsere att de sus, WebAudio necesit o fundaie special. Pentru nceput, datele audio exist ntr-un thread separat de restul aplicaiei deci orice procesare este ferit de interferenele aplicaiei web. Datele audio, sursele, destinaiile sunetelor i nodurile de procesare exist ntr-un context independent, cu un timp de sincronizare independent, asigurnd pstrarea controlului asupra mai multor seturi de surse audio sincronizate. n clipa n care se instaniaz un asemenea context, deja se pot specifica surse de sunet, destinaii i se pot defini procesoare de sunet conectate n diferite configuraii:
var context = new AudioContext(); var source = context.createBufferSource(); var volume = context.createGainNode(); source.buffer = buffer; volume.gain.value = 0.6; source.connect(volume); volume.connect(context.destination); source.start(0);

Infrastructur mai sofisticat

Arhitectura este de tip plugin: sunetul este ncrcat ntr-un buffer (vom vedea mai trziu cum), buffer-ul este trimis la o surs de date, apoi la un procesor de sunet, iar n final la o destinaie. Destinaia implicit a contextului audio este cea standard configurat n sistemul de operare de obicei ieirea line out a plcii de sunet. Dincolo de sintaxa intuitiv, procesarea sunetelor este efectuat direct de driverul

www.todaysoftmag.ro | nr. 10/aprilie, 2013

15

programare
HTML5: WebAudio API
audio. Dac sistemul deine o plac de sunet profesional, driver-ul va executa instruciunile folosind hardware-ul dedicat al plcii de sunet. Dac este vorba doar de un codec, rularea va regresa spre microprocesor. Indiferent de situaie, arbitrul final este browser-ul. Modul n care browserul compileaz, execut i decide rularea instruciunilor determin soarta datelor audio. O implementare bun ns va tinde s foloseasc resurse dedicate i s evite blocajele din fluxul de procesare i redare a datelor audio. trec prin graf sunt sunete reformulate ntro form accesibil browserul-ui pentru procesare i redare ulterioar. Exist mai multe tipuri de surse audio, n funcie de metoda de achiziie a sunetului: fiier existent pe disc, sample-uri generate n cod, oscilatoare i intrri hardware ale plcii de sunet. Dup achiziia i formatarea sunetului, acesta poate fi trimis mai departe spre procesoare sau spre destinaia audio.
source.buffer = buffer; source.connect(audioContext.destination); source.start(0);

Noduri i grafuri orientate

Iniierea unui flux audio se face prin definirea unei surse de sunet. Aceasta poate fi o intrare live a plcii de sunet (un microfon), un fiier audio existent sau un sintetizator de sunet (un oscilator). Desigur, n graf pot exista mai multe surse de sunet fie generate, fie fiiere, fie live. Toate sursele de sunet pot fi redate simultan sau la cerere (la apsarea unei taste de exemplu sau la primirea unui mesaj MIDI). Mai departe sunetul poate fi trimis spre var request = new XMLHttpRequest(); request.open(GET, sound.mp3, true); diferite noduri de procesare. Procesoarele request.responseType = arraybuffer; audio includ localizare n spaiu, efecte request.onload = function() { audioContext.decodeAudioData(request. specifice sunetelor aflate la distan, efecte response, function(buffer) { // buffer conine un obiect de tip doppler, filtre, reverberaii, ecouri, altele. AudioBuffer }); Orice nod suport mai multe intrri i mai } multe ieiri, permind legturi n serie i Buffer-ul permite accesarea sample-urin paralel. lor n mod direct: Exist inclusiv un context audio offline, var buffer = audioContext.createBuffer(1, 5, 44100); deconectat de o surs hardware de redare a var bufferData = buffer.getChannelData(0); sunetelor, ce poate fi folosit pentru gene- bufferData[i] = 0.3; rarea datelor audio independent de timp. Codul de mai sus creeaz un buffer cu Contextul red sunetele ca pachet de date, un singur canal audio (mono), care conine accesibil ntr-o funcie callback: cinci sample-uri cu sample rate de 44100 callback OfflineRenderSuccessCallback = void Hz. Datele din buffer sunt accesibile ntr(AudioBuffer renderedData) un vector folosind metoda getChannelData interface OfflineAudioContext : AudioContext { void startRendering(); vector n care apoi se poate scrie. n acest attribute OfflineRenderSuccessCallback onComplete; mod se pot construi sunete folosind ecuaii } sau alte generatoare. n fine, redarea unui buffer Surse audio i conexiuni n graf audio se face folosind nodul de tip Graful de procesare audio primete AudioBufferSourceNode: informaii de la surse audio. Datele care var source = audioContext.createBufferSource();

O alt surs audio este oscilatorul. Oscilatorul codific sunetele n funcii periodice, repetate apoi la infinit astfel caracteristica sa de baz este funcia generatoare. Exist patru tipuri de oscilatoare predefinite: sinusoidal, ptrat, triunghiular isoscel i triunghiular drept. Oscilatoarele pot fi conectate n paralel pentru a comAudioBuffer pune funcii, genernd astfel sunete Buffer-ele audio codific sunetele complexe. n sample-uri , cum sunt fiierele audio. var source = context.createOscillator(); Caracteristica de baz a unui buffer audio source.type = 0; // oscilator sinusoidal source.connect(context.destination); se numete sample rate frecvena cu care source.start(0); sunetul pstrat n buffer a fost analizat De asemenea, se pot formula oscilapentru a obine informaii utile procesrii toare particulare prin compunerea mai audio. Aceste valori sunt specifice proces- multor funcii matematice ntr-un singur rii digitale audio i intr ntr-un domeniu generator: de cunotine mai vast, despre care nu vom var first = new Float32Array(100); var second = new Float32Array(100); vorbi aici. for (var i = 0; i < 100; i++) first[i] = Math. Pentru a folosi un fiier audio, acesta se sin(Math.PI * i / 100); for (var i = 0; I < 100; i++) second[i] = ncarc ntr-un buffer care apoi este conec- Math.cos(Math.PI * i / 100); tat la destinaia unui context audio: source.setWaveTable(context.
createWaveTable(first, second));

Oscillator

Live

Pentru folosirea surselor audio live cum ar fi un microfon, browser-ul trebuie s obin un flux audio de la sistemul de operare. Din acest motiv, aceste surse sunt accesibile doar din obiectul Javascript ce reprezint browser-ul:
navigator.getUserMedia( { audio: true }, function(stream) { var context = new audioContext(); var source = context.createMediaStreamSo urce(stream); }); source.connect(context.destination);

Fluxul audio nu poate fi alterat n mod direct cum este cazul buffer-elor sau a oscilatoarelor dar, ca i celelalte surse audio, poate fi conectat la oricare din nodurile procesoare definite n graf. Acest tip de surs audio depinde direct de hardware i de driverele instalate, iar achiziia datelor audio poate ntrzia sau poate interfera cu alte procese care s afecteze claritatea semnalului. Browser-ul Chrome optimizeaz n mod special achiziia datelor audio live i permite crearea unor adevrate procesoare de sunet n timp real. Implementarea se bazeaz pe rutarea execuiei ct mai rapid spre driverul audio. Dac sistemul conine o plac de sunet dedicat, prelucrarea audio va avea ntrzieri minime. n seciunea Resurse exist cteva link-uri ce demonstreaz viteza de execuie n Chrome a platformei WebAudio.

Figura 1 - Context audio

16

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Modificarea volumului audio
Exist o serie de procesoare ale semnalului audio, fiecare cu specificele ei, dar n acest articol ne vom referi doar la modificarea volumului audio. Modificarea volumului se face conectnd una sau mai multe surse audio la un nod de tip GainNode. Sursele audio pot fi cele descrise mai sus sau alte procesoare audio care primesc date audio:
var gainNode = context.createGainNode(); source.connect(gainNode); gainNode.connect(context.destination); gainNode.gain.value = 0.8;

Modificarea volumului se poate automatiza i sincroniza cu alte evenimente dependente de timp:


var envelope = context.createGainNode(); var now = context.currentTime; source.connect(envelope); envelope.connect(context.destination); envelope.gain.setValueAtTime(0, now); envelope.gain.linearRampToValueAtTime(1.0, now + 2.0);

n acest mod se pot stabili crossfade-uri ntre dou surse de sunet de exemplu.

Tendine

Situaia actual a platformei WebAudio nu este tocmai fericit. Practic ea este suportat n mod complet doar de browser-ul Chrome i doar pe desktop. Doar ultimele versiuni de Chrome de pe platforma Android 4 suport WebAudio, iar browserul implicit din Android nu este inclus aici. WebAudio mai este suportat de iOS6, de ChromeOS i de ChromeFrame. ns platforma este definit i acceptat n standardul HTML5, ceea ce nseamn c viitorul nu poate fi dect strlucit pentru dezvoltatorii de soft multimedia. Deja se pot construi sintetizatoare audio i procesoare n timp real a sunetelor analogice, iar n curnd Chrome va implementa comunicarea cu dispozitive MIDI, permind compoziia audio folosind claviaturi i alte dispozitive profesionale. i ca o inovaie, standardul WebAudio alturi de WebSockets permite pentru prima dat crearea performanelor audio n mod distribuit, pe web. Utilizatorii se pot conecta la un singur site web i pot crea mpreun, simultan, piese audio de nalt calitate prima demonstraie a acestui tandem de tehnologii fiind site-ul jamwithchrome.

Resurse i referine
http://dashersw.github.com/pedalboard.js/demo http://www.jamwithchrome.com http://kevincennis.com/mix http://www.tenthcirclesound.com/sympyrean http://docs.webplatform.org/wiki/apis/webaudio http://webaudio-io2012.appspot.com https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

17

tehnologii

Enterprise Application Development

Lucian Ciufudean
Server Automation Functional Architect @ HP Software Cluj

lucian.ciufudean@hp.com

ntr-un mod similar, firmele de software care nainte livrau aplicaii simple au nceput s se auto-intituleze ca livrnd Aplicaii Enterprise. Nu alegem calea controversat de a defini ce este o aplicaie de nivel enterprise, n schimb vom puncta cteva trsturi importante ale modului de lucru al echipelor noastre i al unei aplicaii pe care o dezvoltm n Cluj. n HP Software Cluj-Napoca, construim aplicaii cu echipe specializate : lsm programatorii i testerii s se dedice codului, n timp ce documentaia oficial a produsului este scris de Information Engineers. Avem grij ca utilizatorul s nu streseze mouse-ul i tastatura pentru a realiza ce dorete i pentru asta colaborm cu UI Design-eri. Echipa de Product Management este prima linie de contact cu clientul, ei au rolul cel mai important n crearea viziunii pentru versiunile urmtoare ale produselor. Folosim o linie suplimentar de meninere a calitii prin echipa Test Automation, a crei responsabilitate este acoperirea produselor cu teste funcionale automate (pe lng cele scrise de programatori). Recomand ca programatorii s i scrie singuri testele automate ... Recomand ca un tester independent s scrie testele de integrare - Kent Beck Ca s putem lucra eficient n SCRUM departe de clienii finali, avem cte un Functional Architect care joac rolul de Product Owner n fiecare echip. Lucrm n sprinturi scurte ca s avem posibilitatea s reacionm rapid la schimbri. Fiindc SCRUM pune accent pe ideea de

pre sfritul anilor 90 majoritatea CD-urilor ataate crtilor erau CD-uri multimedia: trei poze, dintre care un GIF animat, dac erai norocos, i un fiier audio care transformau orice CD cu 600 de pagini de text ntr-un CD multimedia. mbuntire continu, facem cursuri de specializare n SCRUM cu consultani externi recunoscui n domeniu. Dup livrare, rezolvm escalrile prin echipa de Suport i le traducem n funcionaliti noi, schimbri de fucionalitate i hot fix-uri cnd e nevoie. n aceeai idee de a ajuta clienii, echipele de Suport i Current Product Engineering (CPE) particip activ n forum-urile publice ale produselor. Interpunem ntre Client i echipa de Dezvoltare ambele echipe de Suport i CPE tocmai pentru a diminua riscul ca incidente neprevzute s interfereze cu buna desfurare a SCRUM-ului. Avem o echip dedicat denumit Professional Services care ajut clienii cu instalarea i configurarea produselor n medii complexe (vezi mai jos topologii de instalare pentru Server Automation) sau n cazul n care se dorete adaptarea diverselor aspecte ale produsului. Vrem s tim ce cred clienii despre versiunea urmtoare a produsului, aa c n cadrul Design Partner Program prezentm i le cerem prerea despre funcionalitile planificate. Dm o mn de ajutor echipelor de vnzri prin demonstraii detaliate ale versiunii urmtoare a produsului n cadrul Early Program Release. Avem sute de clieni activi care se regsesc ntre companiile mari ale lumii. Iar muli clieni nseamn mai multe cerine, o mai mare varietate a nevoilor i multe idei de funcionaliti noi pentru versiunea urmtoare: clienii sunt n definitiv cei care pun produsul la lucru ntr-un mediu real, nu doar n laborator. Nevoile de performan, scalabilitate i varietate sunt proporionale cu mrimea

18

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


i logistica acestor companii. Ca exemplu, produsul Server Automation este folosit n centrele de date ale clienilor pentru a face management la zeci de mii de servere. Suportm peste 90 de combinaii de sisteme de operare n diferitele lor versiuni instalate pe arhitecturi ca x86, x64, IA64, IBM zSeries, Solaris SPARC i PowerPC, aa nct pentru dezvoltare folosim un laborator virtualizat cu aproximativ 1500 de maini pentru a suporta aceast varietate. Prin Server Automation oferim o aplicaie pentru managementul si automatizarea centrelor de date. ncepnd chiar cu descoperirea mainilor pe reea i instalarea sistemului de operare, lista de funcionaliti continu cu instalarea i configurarea aplicaiilor, a patch-urilor, realizarea de audituri, managementul att al mainilor fizice ct i al celor virtuale i integrarea cu soluii de virtualizare de la principal administratori de sistem: i asculOracle, VMware si Microsoft. tm i tim c le place lumea Unix, aa c Instalm Server Automation n diverse simulm o consola de acest tip (SA Global Shell) prin care facem vizibil ntreaga infrastructura sub forma unui sistem virtual de fiiere. SA Global Filesystem unific pentru utilizator modelul de date din SA (servere, pachete, clienti, centre de date, politici de audit) cu coninutul serverelor (sistemul de fiiere etc.). Urmtoarele Topologie Multimaster: Noduri SA (SA Core-s) comenzi afieaz lista care asigura replicarea completa a datelor de servere vizibile utitopologii pentru a face managementul lizatorului curent i sistemul de operare al centrelor de date distribuite n mai multe unuia dintre ele: locaii. O astfel de instalare este ilustrat n $ ls /opsw/Server/@ abc.hp.com m33.hp.com gist.hp.com figura de mai jos: $ cat /opsw/Server/@/abc.hp.com/attr/osVersion Topologie Multimaster: Noduri SA Microsoft Windows 2000 Advanced Server Service Pack 4 Build 2195 (SA Core-s) care asigur replicarea complet a datelor Instalrile Satelit sunt potrivite pentru centre de date mai mici unde nu este justificat o instalare complet a unui SA Core. De asemenea, traficul dintre coreurile SA i Satelit poate fi limitat pentru a nu interfera cu traficul principal de date de la acea locaie. n imaginea urmtoare se observ un detaliu de arhitectur folosit pentru a putea conecta centre de date aflate la distane mari, n reele locale diferite: gateway-uri sunt instalate la ambele capete ale fiecrui canal de comunicare: Utilizatorii finali ai aplicatiei sunt n
www.todaysoftmag.ro | nr. 10/Aprilie, 2013

Putem expune chiar i coninutul regitrilor unui server Windows n aceast consola Unix:
$ ls /opsw/Server/@/abc.hp.com/registry/Administrator HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_ CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS

Interoperabilitatea aplicaiilor are o importan extrem n lumea enterprise, aa c expunem funcionalitatea SA printr-un API pe care-l facem accesibil urmtoarelor tipuri de clieni: Java RMI, Python, SOAP, C# i script-urilor care ruleaz n Global Shell. Folosim javadoc-ul nu doar ca metod standard de documentare a API-ului, ci i ca o modalitate de a explora i apela API-ul din browser, Twister fiind aplicaia care permite asta. Respectm utilizatorii n orice rol ar fi ei, finali sau ai API-ului, aa c un grup dedicat de programatori experimentai au misiunea s asigure compatibiltatea binar i funcionala a API-ului cu versiunile sale anterioare. Ne uitm la multe aspecte cnd testm performana produsului, iat cteva grafice

19

tehnologii
Enterprise Application Development
proiect, personal sau al companiei, singur sau n cadrul unei echipe. Ideile tale se pot materializa n functionaliti noi pentru produse, iar dac sunt ntr-adevr deosebite, te susinem s le prezini n forumul tehnic anual al HP, TechCon.

Server Automation: testarea performanei. (Not: Imaginile au fost editate pentru a terge informaiile confideniale la aceast dat)

recente pentru Server Automation produse de o echipa dedicata testarii aspectelor non-funcionale: S e r v e r Au tom at i on : t e s t a r e a performanei. (Not: Imaginile au fost editate pentru a terge informaiile confideniale la aceast dat)

Server Automation este doar una dintre cele patru aplicaii enterprise pe care le dezvolt n HP Software Cluj o echip de 150 de angajai. Aici sprijinim inovaia printr-un program global la nivel HP (InnoStream) i la nivel local n HP Software Cluj prin Vibrant Day o zi pe lun n care eti liber s lucrezi la orice

20

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Aspect Oriented Programming


O introducere i cteva idei
aradigme precum MDD (model driven development) sau TDD (test driven development) joac un rol important n dezvoltarea software n ziua de astzi, o paradigm nou, numit AOP (aspect oriented programming) a nceput s devin din ce n ce mai popular n ultima perioad. AOP are rolul de a modulariza anumite aspecte centrale ale unei aplicaii, numit n limbajul de specialitate i cross cutting concern. Urmtoarele exemple ilustreaz ntr-o manier simpl cteva situaii n care utilizarea a AOP ntr-o aplicaie software ar putea face diferena: Am preluat o aplicaie Java existent de la un alt furnizor iar aplicaia nu are implementat nici un fel de mecanism de logging. Acest exemplu va fi abordat ntro form mai simplificat. n aplicaia mea Java doresc sa validez parametrii tuturor metodelor din layer-ul de service a aplicaiei. Intenionez s rempachetez anumite excepii n layer-ul de service nainte ca acestea s fie transferate ctre client. De obicei o excepie specific Java este convertit ntr-o excepie specific aplicaiei. Desigur n practic se gsesc o sumedenie de altfel de situaii de genul celor de sus, dar cele de sus au fost alese tocmai pentru c au toate cel puin dou lucruri n comun. n primul rnd toate aceste soluii cad n aceai categorie de cross cutting concerns. Aceast sintagm acoper toate funcionalitile care sunt comune unui set de clase, dar care reprezint o funcionalite secundar a acestor clase. Pe lng exemplele prezentate anterior, adic logging i error handling, se pot admite i alte funcionaliti cum ar fi autorizarea sau aspecte legate de securitatea aplicaiilor. Rolul acestor funcionaliti nu este minimalizat, dar sunt considerate funcionaliti secundare, nefcnd parte din logica de business. n al doilea rnd, presupunnd c avem de-a face cu o aplicaie tipic enterprise, este clar c implementarea oricreia din ideile prezentate mai sus, implic de regul intoducerea de cod, n mai multe locuri din aplicaie, codul fiind aproape indentic n toate aceste locuri. Cu alte cuvinte avem un potenial mare de cod duplicat. O soluie elegant ar fi crearea a unui singur bloc de cod pentru fiecare problem prezentat i folosirea acestui bloc de cod oriunde este necesar n cadrul aplicaiei. Pentru aceast categorie de probleme, AOP poate fi soluia salvatoare. nainte de a prezenta un exemplu concret de AOP voi trece n revist noiunile care stau la baza acestei paradigme. A d v i c e . U n a d v i c e e s t e funcionalitatea noastr de tip crosscutting concernpe care dorim s o aplicm unor secvene de cod. Join Points. Un Join Point este un punct bine identificat n codul nostru, n cadrul cruia poate fi invocat un advice. Practic, n acest punct este executat codul care definete un advice. Pointcut. Un Pointcut este un mod de a cuantifica i de a identifica Join Pointurile. Aspect. Un Aspect este combinaia ntre un Advice i un Pointcut. Aceasta paradigm va avea diverse implementri n diverse limbaje de programare, n lumea Java existnd mai multe framework-uri care ofer faciliti AOP. Dintre limbajele i framework-urile care ofer faciliti AOP, ar fi de amintit urmtoarele: .NET FRAMEWORK, Java, Cobol, Javascript. Dac vorbim n particular despre Java, cele mai populare framework-uri care aduc funcionaliti AOP sunt AspectJ

Knall Andreas
Java Team Lead @ .msg systems

knall.andreas@msg-systems.com

www.todaysoftmag.ro | nr. 10/aprilie, 2013

21

programare
Aspect Oriented Programming
i Spring AOP. De reinut este faptul c implementrile AOP pot avea un model de baz uor diferit sau mai evoluat dect cel reprezentat de cele patru elemente prezentate anterior ( advice, join points, pointcut i aspect). Toate implementrile difer una de alta, unele oferind soluii complete AOP, precum AspectJ, iar altele doar funcionaliti de baz. Pentru a exemplifica acest lucru se vor prezenta cele patru tipuri de advice-uri pe care le ofer Spring AOP, descrierea lor succint fiind urmtoarea: Before advice Un advice este folosit nainte de execuia unei metode. After returning advice Un advice este folosit dup ce o metod returneaz un rezultat. After throwing advice Un advice este folosit dup ce o metod arunc o excepie. Around advice Aceast opiune mbin toate cele 3 variante descrise mai sus. Dup cum se poate bine observa Spring AOP ofer doar posibilitatea de a aduga un advice unei metode. Alte framework-uri, AspectJ fiind probabil cel mai popular, ofer i posibilitatea de a aduga un aspect membrilor de clas. Mai mult dect att, AspectJ ofer o gam larg de funcionaliti, de exemplu un Around advice pentru metode, dar doar dac acestea au un anumit tip de parametri. Continum cu prezentarea unui exemplu concret de folosire a AOP, prin implementarea AOP aparinnd framework-ului Spring. Am ales Spring, innd cont de popularitatea i simplitatea acestui framework, ceea ce permite o nelegere mai facil a exemplului dat. Exemplul se folosete de toate conceptele prezentate anterior (advice, join points, pointcut i aspect) i asigur o facilitate de logging pentru clasele de DAO dintr-o aplicaie Java enterprise. Presupunem n continuare c avem urmtorul obiect de DAO (data acces object), BookDAO, care are rolul de a citi cri din baza de date i de a insera cri n baza de date. Metoda de citire arunc o excepie specific aplicaiei n momentul n care nu a fost gsit cartea cutat.
public class BookDAO { public BookEntity findBookById(Long name) throws ItemNotFoundException { //Finding Book code } public BookEntity saveBook(){ //Saving Book code }

Entitatea Book, n forma ei simplificat arat n felul urmtor:


public class Book { private Long id; private String name; public void setName(String name) { this.name = name; } public void setId(Long id) { this.id = id; } public Long setId(){ return id; } public String geName(){ return name; } }

BookEntity bookEntity = bookDAO. findBookById(new Long(1)); bookEntity.setName(Nume nou de carte!); System.out.println(********************); bookDAO.saveBook(bookEntity); System.out.println(*********************); BookEntity bookEntity = bookDAO. findBookById(new Long(2)); } catch (Exception e) { //prinde o exceptie } } }

Dac clasa Book are o form simpl, n schimb implementarea advice-ului nostru pentru logare este puin mai complicat, implementat n clasa MyAroundMethod. Pentru a oferi un exemplu ct se poate de concret am decis s implementez un advice de tipul Around Advice. Pentru a realiza acest lucru clasa noastr MyAroundMethod va trebui s implementeze interfaa MethodInterceptor.
public class MyAroundMethod implements MethodInterceptor { @Override public Object invoke(MethodInvocation method Invocation) throws Throwable { System.out.println( Numele Metodei in care ne aflam : + methodInvocation.getMethod().getName()); System.out.println( Parametrii metodei in care ne aflam : + Arrays.toString(methodInvocation .getArguments())); System.out.println( MyAroundMethod: Interceptie inaintea + executiei metodei); try { Object result = methodInvocation.proceed(); System.out.println(MyAroundMethod : + Interceptie dupa executarea metodei); return result; } catch (ItemNotFoundException e) { System.out.println(MyAroundMethod : +Interceptie in urma aruncarii unei +exceptii); throw e; } } }

Configuraia Spring, prezent prin fiierul Spring-DAO.xml este fiierul care definete pentru exemplul nostru toate elementele AOP prezentate anterior. Cititorul care nu este familiarizat cu elementetele specifice Spring poate s neleag cu uurin punctele eseniale din acest fiier de configuraie urmrind comentariile elementelor.
<beans xmlns=http://www.springframework.org/ schema/beans xmlns:xsi=http://www.w3.org/2001/XMLSchemainstance xsi:schemaLocation=http://www.springframework. org/schema/beans http://www.springframework.org/schema/beans/ spring-beans-2.5.xsd> // Aici este definit beanul Book <bean id=BookDAO class=com.msg.Book /> // Aici este definit Advice-ul nostru ca si // bean, si este folosit la definirea aspectului <bean id=MyAroundAdvice class=com.msg.MyAroundMethod /> // // // // // // Aici definim un proxy care indic pentru beanul nostru BookDAO aspectul sau aspectele folosite. Prin setarea proprietatii target indicm beanul vizat de aspect,care este ulterior indicat prin setarea proprietatii interceptorNames.

<bean id=customerServiceProxy class=org.springframework.aop.framework. ProxyFactoryBean> <property name=target ref=BookDAO /> <property name=interceptorNames> <list> <value>myOwnAdvisor</value> </list> </property> </bean> // Aici este definit Ascpectul, care este format // din pointcut si advice <bean id=myOwnAdvisor class=org.springframework.aop.support.Regexp MethodPointcutAdvisor> // Aici este implementat pointcutul nostru <property name=patterns> <list> <value>.*URL.*</value> </list>

MainClass, precum sugereaz numele </property> // Aici definim advice-ul nostru in cadrul deja, este clasa care ruleaz aplicaia noas- // aspectului <property name=advice ref=MyAroundAdvice /> tr mic. Scenariul pe care l urmrim este </bean> urmtorul: cutm o carte din baza de date, </beans> i modificm numele i o salvm din nou n baza de date. Apoi ncercm s ncrcm Ceea ce se observ este lipsa din fiierul din baza de date cartea cu Id-ul 2, care desi- de configurare a unei liste explicite de join gur pentru a fi un exemplu reuit nu exist point-uri. Aceste puncte nu se definesc de n baza de date. regul n fiierele de configurare, ele fiind un rezultat al definirii a unui sau a mai public class MainClass { multor pointcut(uri). n cazul de fa am public static void main(String[] args) { ApplicationContext appContext = definit un pointcut folosind regular exprenew ClassPathXmlApplicationContext( new String[] { Spring-DAO.xml }); ssion Java. Aceste pointcut-uri se pot defini BookDAO bookDAO = (BookDAO) appContext n mai multe feluri, depinznd evident de .getBean(BookDAOProxy); soluia AOP aleas. Am optat pentru varitry { anta cu expresia regular pentru a ilustra System.out.printn(*******************); ct de puternic este totui aceast facilitate

22

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


de a indentifica join point-urile, cunoscut fiind puterea i flexibilitatea regular expressions Java. n cazul exemplului nostru join point-urile sunt cele dou metode definite n BooksDAO. Ceea ce se poate vedea n urma execuiei codului n consol este urmtoarea secven de mesaje.
************************* Numele metodei in care ne aflam : findBookById Parametrii metodei in care ne aflam: [Long(1)] MyAroundMethod : Interceptie nainte executiei metodei MyAroundMethod : Interceptie dupa executarea metodei ************************* Numele metodei in care ne aflam: saveBook Method arguments : [Book] MyAroundMethod : Interceptie nainte executiei metodei MyAroundMethod : Interceptie dupa executarea metodei ************************* Numele metodei in care ne aflam: findBookById Parametrii metodei in care ne aflam: [Long(2)] MyAroundMethod : Interceptie nainte executiei metodei MyAroundMethod : Interceptie in urma aruncarii unei exceptii

Aadar folosind AOP am reuit s introducem un mecanism de logare n toate clasele noastre DAO, fr a scrie mult cod, care s fie mprtiat prin toat aplicaia. Analog fiecare cross-cutting concern din aplicaia voastr poate fi implementat ntr-o manier transparent, n propria lui clas (separate de logica de business) i folosit n toate locurile n care este necesar. n ultima parte, dorim s v expunem anumite idei care s-au cristalizat de-a lungul timpului n jurul conceptului de AOP, precum i puncte de vedere pe care echipa noastr le-am acumulat din folosirea AOP. Cel mai important lucru de reinut este faptul c AOP nu este o soluie universal pentru multe din problemele care apar pe parcursul dezvoltrii software. Este o abordare relativ nou, care n unele situaii ne poate ajuta, dar n altele nu. Bineneles, sunt i dezavantaje, iar acestea sunt legate n principal de dou aspecte importante. Primul este legat de performan n momentul n care ntr-o aplicaie mare sunt folosite multe aspecte, care pot posibil interaciona. De aceea, este de preferat ca doar anumite funcionaliti ale unei aplicaii, i aici ne referim la cele cu adevrat importante, s fie modelate i modularizate cu AOP. Un al doilea dezavantaj l constituie organizarea si executarea codului, care prin introducerea AOP ngreuneaz procesul de debugging. Prezentm un scenariu, care pare a fi des ntlnit cnd se folosete o astfel de abordare. Imaginai-v o aplicaie medie spre mare, de tip enterprise, n care o serie de aspecte acoper mare parte din funcionalitatea secundar, iar membrii echipei de dezvoltare care nu sunt obinuiti cu AOP fac debugging pe o funcionalitate relativ complex. n astfel de cazuri se ntmpl Concluzie ca membrul(i) echipei de dezvoltare s nu i poat explica fluAm expus folosirea AOP pe baza unui scurt exemplu bazat pe xul codului n totalitate ceea ce poate duce la apariia unor efecte Spring AOP. Ce ar trebui s reinem? AOP este o nou paradigm, cel puin bizare la execuia codului. Misterul poate fi greu eluci- cu multiple implementri, care, dac este folosit cu cap poate dat dac aspectele nu sunt definite prin intermediul anotrilor ci aduce avantaje majore dezvoltrii software. prin fiiere de configurare bine ascunse i nefamiliare. Chiar i atunci cnd se trece peste aceste inconveniene iniiale i se folosesc tool-uri specializate, debugging-ul poate fi, prudent formulat, neplcut, iar fluxul codului n continuare greu de urmrit. n acest punct trebuie amintit c exist diferite forme sub care elemente de AOP pot fi definite. De exemplu un advice poate fi definit ca n exemplul nostru, stil old school prin intermediul unui fiier de configurare sau ntr-un mod mai actual, anume prin adnotri. Dar din nou e de amintit c aceste elemente difer de la implementare la implementare.

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

23

management

Provocrile unui Business Analyst


esponsabilitatea unui Business Analyst const n nelegerea nevoii de business, analiza i modelarea proceselor de business, asociate dezvoltrii proiectelelor software. De regul aceste proiecte sunt complexe, iar Business Analyst-ul trebuie s obin informaii din toate sursele disponibile. i nu este o sarcin uoar. ntregul proces de dezvoltare al proiectelor, pune Business Analyst-ul n situaia de a se confrunta cu o serie de provocri. Care este cea mai mare provocare? Probabil ar fi dificil de stabilit, dar am putea afirma c urmtoarele provocri au o greutate semnificativ i un impact direct, pozitiv sau negativ, n activitile zilnice ale unui Business Analyst.

Daniela Haliga
Business Analyst @ Endava Iai

daniela.haliga@endava.com

Atingerea obiectivelor propuse

De cte ori nu ai fost nevoii s organizai diverse ntlniri, avnd obiective diferite? i cumva fr s v dai seama ai ajuns n urmtoarea situaie: ne-am ntlnit, am vorbit dou ore pe subiectul stabilit i nu am hotrt nimic? Indiferent de obiectivul dorit a fi realizat (identificarea oportunitilor sau a persoanelor interesate, documentarea cerinelor, analiza proceselor) este recomandat ca nainte de orice, s avei o imagine de ansamblu asupra nevoii de business i a obiectivelor proiectului. Mai exact, unde anume v situai, sau n ce faza a proiectului suntei. E bine s tii nainte de a ncepe edina ce anume vrei s obinei n timpul propus. E bine s v concentrai pe ceea ce putei realiza, n funcie de prioriti, iar lucrurile nerezolvate care necesit o analiz mai amnunit s le stabilii ntr-o viitoare sesiune.

dein informaii importante sau care au un cuvnt de spus cu privire la soluia implementat. Simplul motiv c acestea nu vor s mprteasc informaii, ar trebui s ridice un semn de ntrebare. i este de datoria Business Analyst-ului s neleag motivele care stau la baza acestui comportament: Sunt ele rezistente la schimbare? Sunt obinuite cu modul lor de lucru i de aceea nu accept sau nu sunt confortabile cu noul sistem? Avem de-a face cu probleme legate de orgolii sau chestiuni politice? Sau pur i simplu nu neleg de ce procesul schimbrii se ntmpl cum se ntmpl. nelegnd motivele care stau n spatele acestui comportament, putei s acionai n consecin! Ceea ce trebuie s facei i funcioneaz n cele mai multe cazuri, este s ctigai ncrederea clientului. Acest lucru de regul se ntmpl dup cteva sesiuni de lucru mpreun. O dat iniiat contactul cu clientul, exist i comunicare mai bun. n cazul n care nu se poate comunica direct (se recurge la comunicare la distan), atunci este nevoie de ceva abiliti i caliti suplimentare din partea unui Business Analyst precum: atitudine pozitiv, comunicare eficient, orientare spre rezolvarea problemelor, spirit de echip, ncredere, flexibilitate,

Stabilirea unei relaii de colaborare cu persoanele interesate

Una dintre marile provocri cu care se confrunt un Business Analyst este aceea de a nltura barierele de comunicare (fie din cadrul echipei, fie din cadrul organizaiei). i pentru a reui, Business Analyst-ul trebuie s depun un efort suplimentar ca s afle rspunsuri la toate problemele. Ce se poate face n aceast situaie? Identificai acele persoane interesate care definesc nevoia de business, care

24

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


adaptabilitate. Pentru a facilita o conexiune cu clientul, putei ncerca replici de genul: ce ai mai facut, de cnd nu am mai vorbit?; cum e vremea?. Apropiai-v clientul! Ctigai ncrederea clientului i stabilii relaii de lung durat. Implicai-l activ n dezvoltarea proiectului, ascultai-l!

Investiie n cerine de calitate

Facilitarea edinelor

Avnd responsabilitate de lider, cteodat Business Analyst-ul este nevoit s ndeplineasc mai multe roluri. De exemplu s faciliteze edina i n acelai timp s noteze ideile eseniale. Se face o greeal cnd se asociaz rolul de scribe cu rolul de facilitator. Cteva trucuri care v ajut s fii eficieni: Folosii o agenda listat cu spaii libere ntre subiecte/ntrebri, pentru a putea completa cu rspunsurile corespunztoare; Folosii template-uri; Folosii acronime (NC noi cerinte); Imediat dup edin notai toate ideile importante; n timpul edinei lsai-v cteva minute pentru a verifica dac a fost acoperit tot ceea ce v-ai propus; Stabilii un timp necesar i ncercai s v ncadrai n acest timp - ce e mult stric; Concluzionai cu sublinierea ideilor principale asupra crora toat lumea s-a pus de acord - acest fapt reflect c obiectivul edinei a fost atins. De multe ori ceea ce vi s-a prut c ai neles poate s fie total diferit de ceea ce au neles ceilalti participani la edin.

Exist o fabul veche care vorbete despre ase orbi care ntlnesc pentru prima dat un elefant. Dei acetia nu puteau vedea elefantul, doreau foarte mult s tie cum arat unul. Fiecare din cei ase au pus mna pe elefant, pe o diferit parte a elefantului. Primul cuprinde cu minile un picior al elefantului i spune: A, elefantul e exact ca un copac. Nu-i adevarat, spune cel de-al doilea care inea elefantul de coad. Elefantul e ca o franghie. Cel de-al treilea orb a fost lsat mai de o parte, si replic: Elefantul e ca un perete. Al patrulea, cu mna pe tromp, se bag i el n seam i zice.Nu avei dreptate. Elefantul e ca un arpe. Al cincilea atinge colii elefantului i spune c este o sulia pe cnd ultimul, hotrt, spune c toi ceilali se neal i c elefantul e de fapt un ventilator (acesta innd elefantul de ureche)1. Morala fabulei i legtura cu tema noastr de astzi? Toi cei ase au dreptate. Elefantul are toate cele ase caracteristici descrise de ei , dar nici una nu descrie n ansamblu ceea ce reprezint un elefant, pentru c fiecare a descris elefantul din propriul lui punct de vedere. Acelai raionament se poate aplica i n cazul documentrii cerinelor. E o practic bun de urmat s dezvoltai/s analizai cerinele din unghiuri diferite. Folosii DE CE ntrebri (DE CE/DE CE acum/ DE CE nu). Evitai pot/a putea/ar trebui, sau alte ntrebri care pot conduce la un rspuns. Care este scopul? S comparai cerinele provenite de la diferite persoane interesate i s revelati erori/dupliciti sau
1 sursa: www.modernanalyst.com

interpretri diferite. Dac exist , atunci reprezint probleme ce trebuie rezolvate imediat. S-a expus anterior cum aceeai funcionalitate a sistemului poate avea nelesuri diferite, reprezentnd viziuni diferite, din perspective diferite. Acestea provin de regul din domeniul de activitate al persoanelor cheie (ntr-un fel vede produsul angajatul din departamentul de marketing i n alt fel cel din IT). Alinierea viziunilor ntr-o singur direcie reprezint o adevrat provocare, pentru c de acest lucru depinde dac proiectul va avea succes sau nu. Ce se poate face? Business Analyst-ul trebuie s realizeze o viziune de ansamblu a ntregului business, avnd mereu n vedere care este nevoia real de business ce trebuie satisfcut; s ia n considerare toate perspectivele, s cunoasc organizaia (mediul, produsul, piaa, competitorii), i persoanele interesate (care sunt, nivelul de putere/ interes), atitudinea lor vazavi de soluia implementat ( vor susine soluia sau vor fi total mpotriv i vor crea blocaje?). Business Analyst-ul trebuie s dea dovad c este un bun mediator i un bun negociator, astfel nct s faciliteze drumul spre o nelegere/compromis.

Alinierea diferitelor viziuni

Lipsa de angajament a persoanelor cheie


Participarea persoanelor interesate este esenial, cci acestea dein informaii relevante asupra business-ului, cu impact asupra dezvoltrii proiectului, dar i pentru

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

25

management
Provocarile unui Business Analyst
c trebuie s aprobe cerinele. Dac nu avem acordul lor iar colaborarea este una dificil, atunci proiectul poate fi ntr-un impas. Iat cteva situaii, mai des ntlnite, n relaia Business Analyst Stakeholders: 1. Persoane cheie neimplicate sunt cei care n trecut au fost implicai n planificarea i configurarea unui proiect care nu s-a finalizat tocmai n cele mai bune condiii, i care acum prezint temeri n asumarea responsabilitilor asupra etapei de documentare a cerinelor (dac nu s-a luat ceva n considerare?, dac am omis ceva?). Acest lucru pune i Business Analyst-ul ntr-o situaie dificil, pentru c nici el la rndul lui nu vrea ca ceva important s fie scpat din vedere. Ce se poate face? Dac este timp, folosii tehnici de descoperire a cerinelor (brainstorming, workshop-uri ) i mai puin interviuri, observri. Aceste tehnici antreneaz idei noi i creativitatea n grup. Asigurai persoanele interesate c dac ceva a aprut pe parcurs, sau nu a fost luat n considerare pn n acel moment, respectivele cerine vor primi prioritate maxim i vor fi implementate n urmtoarele versiuni/build-uri ale sistemului. 2. Persoane cheie care ajung greu la un compromis sunt cei cu personliti puternice, cu viziuni diferite asupra unei caracteristici ale sistemului. Ce se poate face? Subliniai faptul c dac nu se ajunge la un acord comun, acest lucru nseamn un risc pentru c se pierde timp, i pot s apar presiuni i frustrri n cadrul echipei. Asigurai-i c ai luat n calcul toate prerile/punctele de vedere i compromisul n sine nu le va afecta performana sau sigurana locului de munc. 3. Persoane cheie dezinteresate sunt cei care consider c proiectul nu este important. Ce se poate face? ncercai diplomaia. De exemplu, dac v adresai direct persoanei, (telefon/ e-mail): Andrei, nici un alt angajat din aceast companie nu cunoate sistemul la fel de bine ca tine. i din acest motiv, chiar avem nevoie de tine. Ai avea o contribuie semnificativ dac ai participa activ la edine, i ne-ai mprti din cunotinele tale. Aa ne putem asigura c totul este la locul lui, i funcioneaz corespunztor. Dac lipsa participrii acestui stakeholder are o influen major asupra viitorului proiectului, atunci e bine s implicai i o persoana cu putere de influen/decizie din cadrul organizaiei sau managerul de proiect. Literatura de specialitate ct i cei ce i desfoar activitatea ca Business Analyst recomand s investigm ntotdeauna cauzele problemelor, s nu tratm doar simptomele. S alegem agilitatea i nu perfeciunea, mai exact organizaiile s fie receptive la presiunile externe astfel nct s recunoasc din timp importana soluiilor oportune i relevante. Dar mai presus de toate, se recomand s fim mereu flexibili i adaptabili oricrei situaii sau audiene. Putem avea concepte, practici bune de urmat, experien, ns, pentru c este imprevizibil i pentru c poate avea un impact att pozitiv ct i negativ n toate nivelurile de funcionare, factorul uman rmne, din punctul meu de vedere, cea mai mare provocare.

Un Business Analyst tehnic sau nontehnic

Trebuie un Business Analyst s dein cunotine despre ultimele tehnologii, despre detaliile tehnice ale sistemului? i dac da, care ar fi gradul de nelegere al acestor lucruri? Ct de tehnic ar trebui s fie un Business Analyst? Prerile sunt mprite. Dar ceea ce este sigur i toat lumea este de acord cu, este c un Business Analyst ar trebui s dein suficiente cunotine tehnice sau competene tehnice ct s-i faciliteze comunicarea cu echipa de dezvoltare. n ceea ce privete relaia cu clientul, Business Analyst-ul trebuie s neleag n ce fel tehnologia poate mbunti business-ul, astfel nct s poat contribui la gsirea celei mai potrivite soluii. La fel de important este c Tehnologia nu trebuie s dicteze niciodat direcia n care merge business-ul!. Din acest motiv rspunsul la ntrebarea Este posibil s fii o persoan non-tehnic i totusi s excelezi ca i Business Analyst este cu siguran DA. Desigur, n acest caz trebuie s compensezi cu alte abiliti precum: gndire critic i analitic, comunicare eficient, abiliti de leadership.

Nu uitai

26

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

HR

Comunitile de practic, nvare prin aciune i explorare


Implicarea minii i a corpului n procesul de nvare
ei multe aspecte ale evoluiei omului sunt controversate, un lucru este unanim acceptat de ctre antropologi: Ne micm (Brain Rules, John Medina; 2008). Pe parcursul a sute de mii de ani, de la Homo Habilis la Homo Erectus i, ulterior, Homo Sapiens, creierul s-a dezvoltat parcurgnd distane ntre 10 i 20 km pe zi pentru brbai i cam jumtate n cazul femeilor, afirma antropologul Richard Whrangham. n istoria omenirii, educaia i nvarea au avut o valoare adaptativ incontestabil. nc din antichitate, procesul de nvare beneficia de o atenie deosebit, modelele i principiile utilizate fiind extrem de diverse i dinamice. Acestea stimulau imaginaia, creativitatea i implicarea nvcelului, avnd un caracter ludic, imagistic, practic, respectnd modul natural de nvare a creierului. Chiar dac nu este primul lucru la care ne gndim, decderea metodelor holistice n cadrul educaiei a nceput odat cu invenia lui Johannes Gutenberg a mainii de tiprit din 1440. Acest lucru a avut diverse repercusiuni asupra educaiei, printre care: Procesarea predominant a cuvintelor, mai puin a imaginilor; Accentuarea nvrii individuale, n defavoarea celei de tip colaborativ; Operarea cu concepte abstracte, latura practic i concret fiind redus la minim; Separarea minii i a corpului n procesul de nvare. activitate de instruire i dezvoltare reuit. Deseori trainerii se orienteaz ctre coninut i aloc aproximativ 80% din timpul total pregtirii materialelor de curs (suporturi de curs, handout-uri, slide-uri). nvarea autentic are loc n momentul n care cursantul este implicat activ, dinamic i total, mai puin atunci cnd doar audiaz o prezentare. n ISDC, motto-ul procesului de training este focalizarea ctre nvare, nu ctre instruire. De fapt, cursanii sunt cei care trebuie s fie pe scen n lumina reflectoarelor, s fie proprii stpni ai procesului de nvare. Rolul facilitatorului este s iniieze procesul de nvare i ulterior s se retrag (John Warren). De multe ori cursanii sunt tratai ca i consumatori de informaie, de cunotine, de abiliti, bombardai cu modele i teorii pe care le uit odat ieii din sala de curs. Sau nu le folosesc niciodat. Revoluia educaional propune tratarea cursanilor n calitate de creatori i stpni ai propriului proces de nvare, ai propriului coninut de informaie, de cunotine i abiliti noi. Procentul optim pentru ponderea n cadrul unei Aceste efecte se pstreaz pn n zilele experiene de nvare a activitii de prenoastre i, din pcate, sunt baza sistemu- dare versus exersrii este de 30% - 70%. lui romnesc de nvmnt tradiional. Din acest motiv programele de training Oamenii i amintesc, n medie: au beneficiat de un succes foarte mare, iar 20% din ceea ce citesc principiile i contextele de nvare necon 30% din ceea ce aud venionale au avut mare aderen n rndul 40% din ceea ce vd cursanilor. 50% din ceea ce spun 60% din ceea ce fac Predare vs. nvare autentic 90% din ceea ce vd, aud, spun i fac Predarea nu este nvare. Acest lucru Sursa : Rose, C., & Nicholl, M.J., banal, care poate fi trecut cu vederea i Accelerated Learning for the 21st Century. neglijat, este unul de baz pentru orice
www.todaysoftmag.ro | nr. 10/aprilie, 2013

Cristina Donea
HR Specialist @ ISDC

cristina.donea@isdc.eu

27

HR
Comunitile de practic, nvare prin aciune i explorare
Astfel, este extrem de important ca formatorii s creeze contextul, atmosfera, situaiile cele mai potrivite pentru a maximiza efectele trainingului. Mai mult, aplicarea principiilor de nvare accelerat are ca i efecte pozitive scderea timpul petrecut n sal (chiar la jumtate) i a costurilor de orice natur, creterea transferului, a satisfaciei, motivaiei i implicrii cursantului n munc i n aplicarea noilor cunotine. Descoperirile tiinifice asupra modului n care funcioneaz creierul nostru (Bransford, Brown & Cocking 2000; Damasio 1999; Medina 2008; Pinker 1997) determin o re-examinare a principiilor tradiionale de design, predare i livrare a programelor educaionale. i au fost obinute 46 de certificri (OCJP, Microsoft, ISTQB, SCRUM, ITIL, Prince 2 Foundation i Prince 2 Practitioner). O parte dintre evenimentele externe la care am participat n 2012 au fost QCON (Londra), NOSQL (Amsterdam), Devoxx (Antwerp), Essentials of Mule (London), Springone on the road (London), Mule Summit (Amserdam), EUROStar (Amsterdam), NEXT 2012 (Cluj-Napoca), SCRUM Gathering (Barcelona), Open Agile (Cluj-Napoca), Sakai Conference (Atlanta), Service Oriented Architecture Suite 11g Implementation (Bucuresti), Liferay Symposium (Budapest), IT Camp (Cluj-Napoca), Code Camp (Cluj-Napoca). Ulterior evenimentelor, participanii realizeaz sesiuni de transfer ctre colegii care sunt interesai i/sau ctre comunitile de practic din care fac parte. sunt inspirate din modul de organizare a breslelor. Mai nou, Seth Godin susine n cartea lui, Triburi , modul firesc de organizare i progres prin mprtire de cunotine i dezbateri a oamenilor n comuniti: Un trib este un grup de oameni conectai unul la cellalt, conectai la un lider i conectai la o idee. Timp de milioane de ani, oamenii au aparinut triburilor. Un grup are nevoie de doar dou lucruri pentru a fi un trib: un interes comun i un mod de comunicare. Seth Godin, Tribes: We Need You to Lead Us. Plecnd de la dorina i nevoia oamenilor de a aparine grupurilor, comunitile de practic aduc o nou form de nvare i transfer de cunotine n cadrul organizaiilor. Mai mult, comunitile pot aduce o contribuie semnificativ n ceea ce privete: Alinierea practicilor de succes, procedurilor i instrumentelor folosite n cadrul companiei; Maparea cunotinelor i identificarea discrepanelor / nevoilor de instruire; Cercetarea pe zone de interes i mprtirea rezultatelor n comunitate i la nivel de companie; mprtirea de informaii ntre membrii comunitii;

Cum accelerm efectele training-urilor?

Cele mai de succes programe de training se bazeaz pe faptul c nvarea implic att mintea, ct i corpul. Este un proces contient, raional, verbal, dar implic i emoiile, simurile, receptorii. Suntem exploratori naturali i puternici (...) Aceasta dorin de a explora nu ne prsete n pofida faptului c suntem vri n sli de clasa i cubicule (Brain Rules, John Medina). n cadrul training-urilor, cursanii ar trebui stimulai s: Lucreze n echipe; Creeze hri cognitive; Construiasc un model (concept, proces sau procedur); Lucreze efectiv pe calculator, punnd n aplicare ce se preda n timp real i beneficiind de feedback din partea formatorului; Discute dup fiecare exerciiu, simulare, experien. Concluzii unde se cer; Dezbat pe diferite teme de interes; Realizeze proiecte care s necesite micare, explorare i experien activ (un exemplu ar fi field trip-urile). n ISDC se deruleaz sesiuni de training i de transfer de cunotine, dezbateri, programe de certificare i se particip la conferine i evenimente externe. Numrul de evenimente de nvare structurate i organizate crete de la an la an, spre exemplu n calendarul de training din 2012 au fost gzduite 160 de evenimente, fa de 89 n 2011

Comunitile de practic

Metodele enumerate mai sus sunt doar cteva propuneri pentru accelerarea nvarii i investete cursanii cu rolul de creatori de informaie. n ISDC, una dintre cele mai populare activiti de nvare i dezvoltare, cu focus activ ctre crearea de cunotine noi, sunt comunitile de practic. Conceptual, comunitile de practic

28

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Id e nt i f i c a r e a c o mp o n e nt e l o r reutilizabile; Suportul tehnic de specialitate de la experii din comunitate. Abordarea acestei modaliti de nvare n cadrul unei companii presupune: 1. Identificarea nevoilor de transmitere a cunotinelor/practicilor i de aliniere la nivel de companie; 2. Realizarea unei liste scurte cu topicile de interes (tehnologie, disciplin sau rol) care ar aduce cea mai mare valoare adugat n cadrul companiei i ar avea cel mai mare impact; aceast etap nu trebuie s piard din vedere viziunea i strategia organizaiei; 3. Selectarea comunitilor cu cel mai mare impact; acest pas presupune punerea n concordan a managementul cu persoanele interesate. Pentru nceput, se recomand un numr mai mic de comuniti, pentru a facilita monitorizarea i dezvoltarea continu; 4. Stabilirea unui cadru de referin n care s activeze comunitile; 5. Alegerea unui sponsor/responsabil/ Product Owner din cadrul echipei de management pentru fiecare comunitate; 6. A l e g e r e a u n u i l i d e r / S C RU M MASTER al comunitii; 7. Realizarea unui plan general de abordare a activitii comunitii respective (situaia curent, misiunea i viziunea comunitii, obiectivele generale, strategia, modul n care se va msura beneficiile i progresul, activitile, metodele de nvare, etc.); 8. Stabilirea membrilor de baz ai comunitii; 9. Definirea criteriilor de selecie pentru membri noi 10. Stabilirea unui set de norme dup care funcioneaz comunitatea pentru a asigura oportunitatea egal a membrilor de a contribui n ntlniri, pentru a crete eficiena i a facilita atingerea obiectivelor propuse. Aceste norme ar trebui s conin ateptri referitoare la participare, luare de decizii, contribuie, confidenialitate, conduit n cadrul ntlnirilor. Dup cum am menionat n capitolele anterioare, pentru a transforma experienele de training ntr-o nvare autentic, este esenial creativitatea i implicarea activ a cursanilor n crearea de coninut informaional. nvarea este facilitat de explorare, iar oamenii sunt exploratori naturali. Printre metodele cele mai eficiente de nvare, dar i de management al cunotinelor dintr-o organizaie, este comunitatea de practic, o modalitate activ, motivant, creativ i, n mod cert, demn de explorat.

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

29

programare

NoSQL
Introducere

Radu Vunvulea

Radu.Vunvulea@iquestgroup.com Senior Software Engineer @iQuest

n cadrul acestui articol vom vedea care sunt avantajele i provocrile pe care le putem avea cnd dorim s folosim NoSQL. n a doua parte a articolului vom analiza i vom sublinea mai multe soluii non-relaionale i o s ncercm s vedem care sunt avantajele fiecreia. Cea mai simpl definiie pe care putem s o dm este: NoSQL este o baz de date care nu respect regulile unei baze de date relaionale (DBMS). O baz de date nonrelaional nu este bazat pe un model relaional. Datele nu sunt grupate n tabele, iar din aceast cauz nu exist nici un fel de relaie matematic ntre tabele. Aceste baze de date sunt construite n aa mod nct s poat rula pe un cluster mare. Datele care sunt stocate ntr-un astfel de storage nu au o schem predefinit. Din acest cauz, orice field nou poate s fie adugat fr nicio problem. NoSQL a aprut i s-a dezvoltat n jurul aplicaiilor web, din aceast cauz majoritatea funcionalitailor pe care le ofer sunt cele pe care o aplicaie web le are.

oSQL este unul dintre trend-urile anului 2013. Dac n urm cu trei, patru ani auzeam destul de rar de cte un proiect care s foloseasc NoSQL, n ziua de azi proiectele care folosesc baze de date non-relaionale sunt extrem de multe. definit, adugarea unui nou field se poate face foarte uor. Exist alte soluii care pot s stocheze orice fel de structur de date fr s definim un model. De exemplu cele care stocheaz datele sub forma key-valuepair sau documente. n taxonomia NoSQL, un document poate s fie vzut ca un record din bazele de date relaionale, iar coleciile le putem vedea ca tabele. Diferena principal este c ntr-un tabel vom avea record-uri cu aceiai structur, n timp ce o colecie poate s conin documente cu field-uri diferite. Bazele de date non-relaionale sunt mult mai scalabile dect bazele de date clasice. Dac dorim s scalm, ntr-o baz de date relaional avem nevoie s achiziionm servere puternice n loc s adugm n cluster cteva maini cu configuraii normale. Acest lucru se datoreaz modului n care o baz de date relaional funcioneaz, iar adugarea unui nou nod este costisitoare. Modul n care este construit o baz de date non-relaional permite o scalare pe orizontal extrem de uor. Nu doar att, dar aceste baze de date se preteaz extrem de bine la virtualizare i cloud. Lund n considerare dimensiunile bazelor de date i numrul de tranzacii care crete din ce n ce mai mult, o baz de date relaional este mult mai costisitoare dect o baz de date NoSQL. Soluii precum Hadoop pot s proceseze foarte multe date. Acestea sunt extrem de scalabile pe orizontal, ceea ce le face atractive. Referitor la costuri, o baz de date

Ce este NoSQL?

Avantaje i riscuri

Modelul unei baze de date non-relaionale este flexibil. n funcie de soluia pe care o folosim putem s avem un model de date extrem de relaxat, iar modelul poate s fie schimbat cu costuri minime. Existe nenumrate soluii NoSQL care nu au nici un fel de model n spate. De exemplu Cassandra sau HBase dei are un model

30

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

programare
non-relaional este mult mai ieftin. Nu avem nevoie de hardware custom sau cerine deosebite pentru a ne putea crea un cluster extrem de puternic. Cu nite servere normale, putem s avem o baz de date performant. Bineneles, NoSQL nu este doar miere. Majoritatea soluiilor sunt destul de noi pe pia n comparaie cu bazele de date relaionale. Din aceast cauz unele funcionaliti importante mai ales n zona enterprise pot s lipseasc business mine i business intelligent. NoSQL a evoluat pentru a ndeplini cerinele aplicaiilor web, aceasta fiind cauza principal pentru care o parte din funcionaliti lipsesc, ele nefiind necesare pe web. Asta nu nseamn c lipsesc i c nu le putem regsi, doar c nc nu au ajuns destul de mature sau nu sunt specifice problemei pe care soluia NoSQL ncearc s o rezolve. Din cauz c sunt aa de noi pe pia, multe dintre soluiile NoSQL sunt versiuni de pre-producie, care n lumea enterprise nu pot s fie folosite de fiecare dat. Lipsa suportului oficial la unele produse poate s fie un stoper pentru proiectele de dimensiuni medii i mari. Sintaxa prin care putem s interogm o baz de date NoSQL este diferit de un simplu query SQL. De foarte multe ori este nevoie s avem noiuni de programare. Numrul de experi n baze de date NoSQL este mult mai mic fa de cei din SQL. Partea de administrare poate s fie un comar, deoarece suportul pentru administratori este destul de slab la ora actual. Totodat ACID i suportul pentru tranzacii nu este des ntlnit la storage-ul de tip NoSQL. Query-urile pe care putem

TODAY SOFTWARE MAGAZINE


scrie sunt destul de simple, iar uneori storage-urile nu ne permit s facem JOIN la colecii, din aceast cauz putem s ajungem s scriem cod care s fac acest lucru. n timp toate aceste probleme vor fi rezolvate, iar ntrebarea pe care trebuie s ne-o punem cnd ne gndim la arhitectur i credem c NoSQL ne-ar putea ajuta este De ce nu?.

Cele mai folosite soluii NoSQL

Pe piaa exist nenumrate soluii NoSQL. Nu exist o soluie universal care s rezolve toate problemele pe care le avem. Din aceast cauz, n momentul n care dorim s integrm o soluie NoSQL, este nevoie s studiem mai multe tipuri de storage. S-ar putea s identificm n interiorul aplicaiei noastre mai multe cazuri a cror rezolvare s cear o soluie NoSQL. Nu este exclus ca pentru fiecare dintre aceste cazuri s avem nevoie de soluii diferite. Acesta ar aduga un plus de complexitate deoarece vom avea dou storage-uri pe care trebuie s le integrm.

MongoDB

Acesta este unul dintre cele mai folosite tipuri de storage. n acest tip de storage tot coninutul este stocat sub forma unor documente. Peste aceste colecii de documente putem s facem orice fel de interogri dinamice i s extragem diferite date. Din multe puncte de vedere MongoDB este cel mai apropiat de o baz de date relaional. Toate datele pe care dorim s le stocheze sunt inute sub forma unui hash, facilitnd regsirea informaiei. Operaiile de baz de tip CRUD funcioneaz rapid

pe MongoDB. Este o soluie bun cnd avem nevoie s stocm foarte multe date pe care trebuie s le accesm ntr-un timp foarte scurt. MongoDB este un storage care poate s fie folosit cu success. n cazurile n care nu facem foarte multe insert-uri, update-uri i delete-uri; informaia rmnnd neschimbat pentru o perioad mai lung de timp. Poate s fie folosit cu succes cnd proprietile sunt stocate ca un query i/ sau index. De exemplu ntr-un sistem de votare, CMS sau ntr-un sistem de storage a comment-urilor. Un alt caz n care poate s fie folosit este cnd stocm liste de categorii i de produse ntr-un magazin online. Din cauz c acesta este orientat spre query-uri, iar lista de produse nu se schimb la fiecare dou secunde, interogrile care vor fi fcute peste ele vor fi rapide. Un alt avantaj este auto-share-ul. O baz de date MongoDB poate s fie foarte uor inut pe 2/3 servere. Mecanismul prin care se face sincronizarea datelor este foarte bine pus la punct i documentat. Este pe poziia secund n ceea ce privete stocarea NoSQL din soluiile eCommerce. Acest storage poate s devin prietenul nostru cnd ajungem s avem date care se schimb frecvent. Dac problema pe care dorim s o rezolvm este dominat de inserri i modificri a datelor stocate atunci Cassandra este soluia noastr. n comparaie cu operaiile de inserare i modificare, orice query pe care l facem pe datele noastre este mult mai lent. Acest storage este mai mult orientat spre scrieri, dect spre query-uri care aduc date. Dac MongoDB, datele cu care lucram erau vzute ca niste documente cu un hash ataat la fiecare din ele, Cassandra stocheaz tot coninutul sub forma unor coloane. n MongoDB, datele pe care le accesm s-ar putea s nu fie ultima versiune a acestora. n schimb Cassandra ne garanteaz c datele pe care le obinem prin query-uri au ultima versiune. Astfel nct dac accesm un mail care este stocat cu ajutorul lui Cassandra, vom obine ultima versiune a

Cassandra

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

31

programare
NoSQL - Introducere
mesajului. Aceast soluie poate s fie instalat n mai multe data-center-uri din locaii diferite, oferind suport n cazul de failover sau back-up availability extrem de mare. Cassandra este un storage care poate s fie folosit cu succes i ca mecanism de logging. ntr-un sistem de acest fel avem foarte multe scrieri, iar interogrile sunt rare i destul de simple. Din aceast motiv devine soluia ideal cnd avem o soluie eCommerce, unde avem nevoie de un sistem de storage pentru coul de cumpraturi. Operaiile de tip insert i modificare se vor realiza rapid, iar fiecare interogare a datelor va aduce ultima versiune a coului de cumpraturi acest lucru fiind foarte imporant n momentul n care se face procesul de check-out. Cassandra a ajuns s fie folosit i n industria financiar fiind ideal datorit perfomanei operaiilor de tip insert. n acest mediu datele se schimb extrem de des, valoarea aciunilor fiind una nou n fiecare moment. conectivitate 24 de ore din 24. Totodat storage. este foarte util n cazul unui CMS sau CRM, unde avem nevoie de versionare i Ce ne rezerv viitorul? de query-uri predefinite. Vom vedea un numr din ce n ce mai mare de aplicaii care folosesc NoSQL. HBase Acest lucru nu nseamn c bazele de date Aceast baz de date este integrat n relaionale vor disprea. Cele dou tipuri totalitate cu Hadoop. Scopul este s fie folo- de storage vor exista i de multe ori vor sit n momentul n care avem nevoie s coexista. Aplicaiile hibride, care folosesc facem analiza la date. HBase este gndit s att baze de date relaionale ct i NoSQL o stocheze cantiti foarte mari de date, care vor fi din ce n ce mai des ntlnite. n mod normal nu ar putea s fie stocate Totodat, o aplicaie nu trebuie s folontr-o baz de date normal. seasc doar o singur baz de date. Existe Acesta poate s lucreze n memorie soluii care folosesc 2 sau mai multe baze fr nici un fel de problem, iar datele pe de date NoSQL. Un bun exemplu este o care le stocheaz pot s fie compresate. Este aplicaie eCommerce, care poate s folouna din puinele baze de date NoSQL care sesc MongoDB pentru a stoca lista de suport aceast funcionalitate. Din cauza produse i categorii, iar pentru a stoca particularitiilor sale, HBase este folosit coul la fiecare dintre clieni se folosete alturi de Hadoop. n unele cazuri particu- Cassandra. lare, cnd lucrm cu zeci/sute de milioane de nregistrri, HBase merit s fie folosit. Concluzie

Membase

CouchDB

n cazul n care majoritatea operaiilor pe care le facem sunt doar de insert i de read, fr update, atunci CouchDB este o soluie mult mai bun. Acest storage este orientat doar pentru operaii de scriere i citire. Pe lng acest lucru, avem un suport eficient pentru predefinerea de query-uri i de control a diferitelor versiuni pe care datele stocate pot s le aib. Din aceast cauz operaiile de tip update nu sunt att de rapide. Din storage-urile prezentate pn acum, acesta este primul storage care ne garanteaz ACID prin sistemul de versionare pe care l implementeaz. O alt particularitate a acestui storage este suportul pentru replicare. CouchDB reprezentnd o soluie bun cnd vrem s trecem baza de date n stare offline. De exemplu pe un device mobil care nu are conexiune la internet. Prin intermediul acestei funcionaliti, avem suport la arhitectura distribuit care s suporte replicare n ambele sensuri. Poate s fie o soluie pentru aplicaiile de pe device-uri mobile, care nu au

Aa cum i spune i numele, aceast baz de date non-relaional poate s stea n memorie. Este o soluie perfect cu laten foarte mic, iar nivelul de concuren este ridicat. Crearea unui cluster i replicarea coninutului devine un procedeu facil. Este foarte des ntlnit n backendul jocurilor, n special cele online. Foarte multe sisteme care lucreaz cu date n timp real pe care trebuie s le manipuleze sau s le afiseze utilizatoriilor folosesc ca storage Membase. n aceste cazuri Membase poate s nu fie singurul nivel de storage pe care aplicaia l folosete.

n concluzie, putem s afirmm c bazele de date NoSQL trebuie s fie parte din aria noastr de cunotine. n comparaie cu bazele de date relaionale avem foarte multe opiuni, iar fiecare din acestea face un lucru foarte bine. n lumea NoSQL nu avem un storage care s ne rezolve toate problemele pe care le-am putea avea. Fiecare storage ne rezolv anumite tipuri de probleme. Viitorul nu este doar al bazelor de date non-relaionale, dar nici al celor Redis relaionale. Viitorul este al aplicaiilor care Acest storage este perfect cnd numrul folosesc ambele tipuri de storage, n funcie de update-uri pe care trebuie s le facem de necesiti. asupra datelor noastre este foarte mare. Este un storage optimizat pentru acest fel de operaii. Se bazeaz pe un sistem foarte simplu key-value. Din aceast cauz partea de query-uri care pot s fie fcute este foarte limitat. Dei avem suport pentru tranzacii, nu exist nc suport destul de matur pentru clustering. Acest lucru poate s devin o problem cnd datele pe care dorim s le stocm nu ncap n memorie dimensiunea bazei de date este legat de dimensiunea memoriei interne. Redis devine destul de interesant cnd avem sisteme real-time, care trebuie s comunice. n aceste cazuri, Redis este una dintre cele mai bune soluii. Exist cteva aplicaii bursiere care folosesc acest

32

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Bazele de date NoSQL


o analiz comparativ
aptul c BigData e un subiect la mod este confirmat i n numrul curent al TSM n care se scrie despre acest subiect. Introducerea n BigData i conceptele specifice a fost fcut n numerele 2, 3 i 4 ale revistei. Pentru a rezuma, BigData nseamn stocarea i analiza volumelor de date mari, ncepnd cu ordinul Terra Bytes. Gestionarea unor astfel de volume de date ridic problema celor 3V n ceea ce privete Volumul, Viteza de acces i Varietatea datelor. Teorema CAP formalizeaz conCa i cerine vrem s: strngerile acestor sisteme: Consistency, inserm datele ct mai rapid Availability i Partition Tolerance. cautm dup anumite cmpuri: title, Consistency se refer la consistena tags etc. datelor din punctul de vedere al clienilor sistemului. Altfel spus toi clienii vd Totodat mai vrem ca datele s aib aceleai date, tot timpul. un nivel acceptabil de consisten i sa fie Availability este o garanie c fiecare available. request va primi un rspuns. Partition tolerance este proprieta- Analiza si modelare tea sistemului de a funciona atunci cnd Maparea modelului de date mai sus noduri din sistem cad. menionat, care va fi rafinat ulterior, este specific n funcie de strategia de stocare Conform teoremei CAP un sistem nu pe disc a fiecrei baze de date NoSQL. poate satisface simultan toate cele 3 constrngeri, dar poate excela la oricare 2 din Strategia de stocare ele. n scopul de a ne ncadra n acelai trend i de-a mprti comunitii din Key-Value (Cheie-Valoare) experiena practic acumulat pe proiecBazele de date din categoria Key-Value tele interne, v supunem ateniei un studiu precum Riak sunt conceptual dicionare de caz cu 4 dintre cele mai populare soluii distribuite i nu au o schema predefinit, NoSQL: Riak, Couchbase, Hypertable si sunt schemaless. Cheia poate fi sintetic Cassandra. sau auto-generat, iar valoarea poate fi orice: String, JSON, BLOB etc. Context si cerinte Un alt concept specific unor storage-uri Unul din clienii importani ai compa- Key-Value este bucketul: o grupare logica niei se confrunt cu o problem tehnic pentru mai multe chei-valori, nu grupeaz - are un volum imens de date pe care nu le fizic datele n acelai loc pe disc. Pot exista mai poate gestiona. Are nevoie de o soluie keys identice (cu valori diferite) n bucketNoSQL. Exist deja modelul de date: un uri diferite. compozit de POJO1 -uri. Pentru a citi o valoare este necesar Lum ca exemplu al modelului de date cunoaterea cheii i a bucketului, deoarece un articol cu reprezentarea UML: adevrata cheie sub care se pstreaz valoarea este hash(Key + Bucket). Ca i raportare la teorema CAP, bazele de date Key-Value exceleaz la A i P dar sacrific C ntr-o masur acceptabil - garanteaz eventually consistency: mai bine i ofer (pe unele noduri) date vechi, dar rapid i i garantez c datele nou inserate vor fi consistente pe toate nodurile cndva n viitor.
1 http://en.wikipedia.org/wiki/Plain_Old_Java_Object

Traian Frtean

traian.fratean@3pillarglobal.com Software Engineer @ 3Pillar Global

Bogdan Fluera

bogdan.flueras@3pillarglobal.com Software Engineer @ 3Pillar Global

www.todaysoftmag.ro | nr. 10/aprilie, 2013

33

programare
Bazele de date NoSQL - o analiz
Document
Couchbase si MongoDB sunt cele mai populare baze de date de tip document based. Sunt flexibile la tipul coninutului fiindc nu au o schema predefinit. Conceptual lucreaz cu documente de diferite forme: JSON, BSON, XML dar i BLOBs de tip PDF, XLS. n esent nu sunt dect o specializare a bazelor de date Key-Value. Un document se scrie/citete folosind o cheie. Pe lang functionalitatea Key-Value, bazele de date tip document adaug funcionaliti de gsire a documentelor bazat pe coninutul acestora. Raportat la teorema CAP, bazele de date orientate document exceleaz la C i P.

comparativ
availability, scalability, este tolerant la partitia retelei i asigur replicarea datelor n 3 locaii, se laud a fi cel mai rezilient storage Key-Value pus n producie. Pentru garantarea acestor caracteristici, Riak ofer un nivel de consisten eventual. Rezolvarea conflictelor de date este rezolvat cu ajutorul vector clock (ceas logic). Riak vine cu un mecanism de pluggable storage: poi alege ntre Bitcask6 - toate cheile n RAM sau LevelDB7 - toate cheile i valorile pe disk, dar ofer un API ce permite implementarea propriului storage. n funcie de environmentul n care se face deployment se poate face o alegere pentru optimizarea costurilor de producie. Toate nodurile dintr-un cluster comunic prin protocolul Gossip 8 de unde rezult trafic pe reea deloc neglijabil. Acest protocol de tip viral asigura monitorizarea permanent a disponibilitii clusterului i replicarea datelor.

Bazele de date columnare stocheaz pe disc ntr-o zona continu toate celulele corespunztoare tuturor row-urilor dintr-o coloan. Reprezentare pe disc RDBMS vs Columnar

Columnar
Bazele de date din categoria BigTable2 precum HBase 3 si Hypertable 4 sunt de tip columnar i au o schem ce trebuie predefinit. Datele sunt stocate n celule grupate pe coloane. Coloanele sunt grupate logic n column families. Acestea pot contine un numr teoretic nelimitat (limitat n funcie de implementarea specific) de coloane ce pot fi create la runtime sau la definirea schemei. V putei ntreba: ce beneficiu am dac stochez datele n coloane i nu n rows, aa cum fac bazele de date relaionale ? Rspuns scurt: Timp redus de cutare/ acces i agregare a datelor. Rspuns lung simplificat: Bazele de date relaionale stocheaz pe disc ntr-o zon continu un singur row dintr-o tabel. Diferite row-uri dintr-o tabel sunt stocate n locaii diferite pe disc.
2 http://research.google.com/archive/bigtable.html 3 http://hbase.apache.org/ 4 http://hypertable.org/

Pentru o nelegere mai bun propunem urmtorul caz de utilizare simplificat (fr indeci, cache etc.): Am 1 miliard de articole i vreau titlul tuturor articolelor. Bazele de date relaionale itereaz peste locaii diferite de disc pentru a colecta titlul fiecrui articol. Rezulta 1 miliard de iteraii i accese la disc. Bazele de date columnare ar necesita un singur acces la disc pentru c titlurile tuturor articolelor sunt ntr-o locaie continu pe disc, n coloana Title. Prin extrapolare n condiii reale, rezult un numr dramatic sczut de iteraii pentru bazele de date columnare. Ca i raportare la teorema CAP, Modelare bazele de date columnare satisfac C i P dar Datele sunt stocate n tuple Key-Value sacrific A. ntr-un bucket. Valorile pot fi orice: text, JSON, XML, BLOB etc. Soluii NoSQL n cazul modelului de date anterior amintit (vezi diagrama de la Context i Riak cerine), mai jos este reprezentarea JSON a articolului cu cheia: 123

Particulariti

Riak5 este un Key-Value store distribuit, open-source cu suport enterprise, dezvoltat de Basho Technologies. Este proiectat sa scaleze orizontal i s fie rezilient. Riak consider toate nodurile din cluster egale, fr master, deci nu are Single Point Of Failure. Fiindc exceleaz la
5 http://basho.com/

{ article: id: 123, title: Article title, content: This is the content, location: { country: Romania, latitude:123.45, longitude:123.45} tags: [ { name: tag1, date: 10 Mar 1981, author:John B}, { name: tag2, date: 21 Mar 1981, author:John B} ], } 6 http://do cs.basho.com/riak/1.2.0/tutorials/ choosing-a-backend/Bitcask/ 7 http://do cs.basho.com/riak/1.2.0/tutorials/ choosing-a-backend/LevelDB/ 8 http://en.wikipedia.org/wiki/Gossip_protocol

34

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Instalare
de interogare UnQL11 sau prin integrare cu Column family, Cells, RowKey nu au Se instaleaz foarte uor att local ct Hadoop12. analog i n cluster. n cluster nodurile se adaug ntr-o zona de staging i pot fi activate prin Modelare Maparea modelului compozit de date mutarea n zona commit. Pentru monitoriModelarea datelor este identic cu cea descrise n paragraful Context i cerine zare se instaleaz Riak Control. pentru Riak. s-a fcut astfel: Fiecare POJO din model, (dar nu Configurare Instalare instan) are asociat cte un column-family. Cele 2 fisiere vm.args i app.config Unul dintre capitolele la care exceleaz Fiecare membru atomic al acelui POJO cuprind toate aspectele configurrii: secu- Couchbase este instalarea. Astfel instalarea care poate fi reprezentat ca text are asociritate, cluster tuning etc. pe un cluster se poate realiza n doar cteva at o coloan din acelai column-family. Sharding-ul automat functioneaz, dar minute. De asemnea mai beneficiaz i de Membrii compui au fost la rndul lor atenie sporit la ring size si la numrul de unelte de monitorizare integrate n instala- modelai ca un column-family diferit. vnodes care trebuie din start corect confi- rea implicit. Avnd ca intrare urmatorul articol, gurate, altfel trebuie reconfigurat clusterul reprezentat ca JSON: i poate fi necesar chiar reimportarea tutu- Configurare { article: { id: 123, title: Article title, content: ror datelor. Configurarea este deosebit de rapid, This is the content, location: { country: Romania, latitude: chiar i n mod distribuit. Singura bil nea- 123.45, longitude: 123.45} tags:[ Experienta practica gr ce o primete Couchbase este dat de { name: Cool, date: 10 Mar 1981, author: John B}, Pentru majoritatea limbajelor exist limitarea de a avea sisteme eterogene din { name: TSM, date: 21 Mar 1981, author:John B} clieni care comunic prin Protobuf punct de vedere al memoriei RAM folosite. ], } sau REST. Dei au o interfa comun, Aceast limitare nu permite exploatarea la implementarea REST ofer mai multe maxim a memoriei disponibile pe fiecare Am generat urmtoarea structur de funcionaliti fa de Protobuf n defavoa- dintre noduri. coloane: rea vitezei de comunicare. REST ofer n Am ales aceast structur de reprezenplus i posibilitatea pentru query-uri ne- Experiena practic tare deoarece ofer posibilitatea de a cuta complexe de Map Reduce. Folosind Bitcask API-ul de Java ofer o interfa sim- rapid dup orice proprietate a obiectului. am avut neplceri la listarea cheilor dintr- pl i intuitiv astfel nct se poate scrie un bucket in environment de producie. cod n doar cteva minute. Documentaia n cloud, Riak comunic prin Gossip i este de asemenea suficient i fr erori. cu alte clustere - care nu aparin neaprat Bazndu-se pe stocarea datelor n memorie companiei, deci riscm data leaks. performana este foarte bun. Couchbase 9 este un storage de documente JSON. i are rdcinile n CouchDB 10 , proiect aflat sub umbrela Apache. Compania CouchOne Inc., ce oferea suport comercial pentru CouchDB, mpreun cu Membase Inc. au format Couchbase Inc. Noua soluie, Couchbase, combin modelul de date, indexarea i capabilitile de interogare CouchDB cu performana i scalabilitatea Membase. Fiind dezvoltat comercial ca proiect open-source este oferit n trei moduri de liceniere: open-source, community i commercial.

Couchbase

Hypertable Particulariti

Instalare

Particulariti
Modelul de date este de document JSON, fr relaii ntre documentele stocate n bucket-uri, limitat la 20MB/document. La nivel de cluster datele sunt pstrate n memorie, replicate, fiind consistente i salvate asincron pe disc. ntre clustere diferite datele sunt eventually-consistent. Accesul la date se poate face direct, bazat pe cheie, prin Map-Reduce, prin limbajul
9 http://www.couchbase.com/ 10 http://couchdb.apache.org/

Local se instaleaz uor, iar pe un cluster o mare parte a instalrii se poate Dup cum am menionat, este bazat automatiza, dar este de o complexitate pe filozofia Google Big Table si concureaz medie fiindc sistemul distribuit de fiiere, cu HBase. Printr-un API generic, suport HDFS trebuie configurat i pornit separat. diverse sisteme de fiiere distribuite, cel mai utilizat fiind HDFS - Hadoop Distributed Configurare File System13. HDFS este sistemul distribuit Se face pe fiecare nod n parte, de de fiiere oferit de Hadoop si inspirat din asemenea automatizat. Exist un set Google File System14. Hadoop este un pro- satisfctor de opiuni de configurare, dar iect open-source dezvoltat iniial de Yahoo! semnificaia acestor opiuni nu este suficipentru procesarea distribuit a volumelor ent documentat. mari de date. Varianta curent de Hadoop conine un ecosistem de diverse module Utilizare cu suport de la query ad-hoc pan la data Exista clieni pentru limbajele popumining i machine learning. lare de programare: Java, PHP, Python etc. Comunicarea clienilor cu Hypertable se Modelare face prin protocolul Thrift. Termenii specifici bazelor de date columnare i corespondena cu bazele de Experiena practic date relaionale sunt: Dei comunitatea este restrns, supor Namespace analog cu Database tul este bun. Se vede influena adnc Table analog cu Table a limbajului C de la interfaa low level Column analog Column a clientului, pan la API i la mesajele 11 http://www.unqlspec.org/display/UnQL/Home de eroare. n urma testelor efectuate am 12 http://hadoop.apache.org/ 13 http://hadoop.apache.org/docs/stable/hdfs_user_ observat ca este mai lent la heavy inserts guide.html 14 http://research.google.com/archive/gfs.html decat Cassandra, Riak i CouchBase.
www.todaysoftmag.ro | nr. 10/Aprilie, 2013

35

programare
Bazele de date NoSQL - o analiza comparativ
n versiunea curent, Hypertable este limitat la un numr maxim de 255 de column families deci te foreaz s-i faci un design bun la schema; flexibil pentru extensii ulterioare. Din motive practice (stabilitate, knowledge base, work-arounds), versiunea 0.20 de Hadoop este preponderent folosit, n defavoarea versiunii curente. Folosii distribuia Hadoop de la Cloudera15 pentru a va face viaa mai uoar: instalarea, configurarea simplificat i documentaia mai bun. modelul relaional. Un Column-family conine row-uri i coloane. Spre deosebire de modelul relational row-urile dintr-un column-family nu au n mod necesar aceleai coloane. Mai mult, ntrun row pot fi oricnd adugate coloane noi. super coloumns sunt o grupare de coloane. row este un rnd, unic identificat printr-un row key. secondary index desemneaz un index pe o coloan. Se numete secondary pentru a distinge indecii predefinii pe fiecare row key amintite Hector i Astyanax. Hector este cel mai rspndit client. Astyanax este un fork din Hector, realizat de Netflix, si ofer o interfa simplificat. Cassandra avnd o schem dinamic permite adugarea la runtime a orictor column-families. La crearea unui keyspace, dac nu specificm, RF implicit se alege 1. Astfel datele nu sunt replicate iar n cazul cderii unei maini datele devin indisponibile sau chiar se pierd. Pentru a nu pierde date trebuie s tim i c odat inserate datele sunt pstrate n memorie i scrise n commitlog, dupa un interval de timp configurabil. Astfel, n cazul unei probleme hardware sau software se pot pierde datele ce nu au fost scrise n commitlog. Spre deosebire de un log obisnuit, commitlog-ul trebuie tratat cu seriozitate deoarece contine date ce nu au ajuns nc s fie scrise n directorul de date, pe disc.

Cassandra

Cassandra 16 a porinit ca un proiect open-source de la Facebook, ajuns sub umbrela Apache. Implementarea mbin Instalare concepte din Amazon Dynamo17 i Google Distribuii recomandate pentru instaBigTable. Poate fi caracterizat ca un key- larea Cassandra sunt oferite de DataStax20. value store eventually consistent. Ca o particularitate negativ Cassandra necesita Oracle Java 1.6, versiune cu end of Particulariti support n februarie 2013. Instalarea pe un La fel ca Riak i Cassandra pornete de cluster Linux nu pune probleme deosebite. la conceptele publicate de Amazon n lucrarea ce descrie Dynamo. Aceast lucrare Configurare prezint designul i implementarea aleas n ceea ce privete configurarea de Amazon pentru a crea DynamoDB18, o Cassandra a fost gndit pentru a se mula baza de date highly available, ce stocheaz pe nevoile utilizatorilor. Ofer nivele difedatele n format Key-Value. rite de setare a consistency level pentru Plecnd de la Dynamo, Cassandra a operaii de scriere (5 nivele) i citire (3 renunat la vector-clocks pentru rezol- nivele). Trebuie avut atenie deoarece n varea conflictelor i a implementat o configurarea implicit Cassandra nu este strategie diferit de stocare ce se bazeaz adaptat folosirii n cluster datorit setaripe ColumnFamily. lor replication factor(RF) i consistency Se integreaz i cu Hadoop, putnd level(CL). distribui sarcinile pe grupuri diferite de Singura dificultate ntmpinat la conmaini. n acest mod putem realiza dou figurare a fost legat de crearea ring-ului. partiii - una rulnd sarcini n timp real Mainile componente ale clusterului sunt i cealalt rulnd sarcini de analiz, ce pot organizate sub forma unui ring, fiecare consuma mai mult timp. avnd alocat o anumit plaj de tokens ce le stocheaz. n documentaia versiunii Data model19 curente (1.2.0) valoarea maxim a tokenAdaptarea modelului de date este iden- ului este incorect documentat. tic cu cea menionat la Hypertable. Strategia de stocare folosit deriv din Experienta practica bazele de date columnare. Conceptele foloPentru nceput trebuie s tim cum site sunt: comunicm cu Cassandra. Protocolul folo keyspace analog database-ului din sit pentru comunicare este Thrift. Pentru a modelul relaional. Grupeaz un set de uura scrierea de aplicaii exist numeroase column-family nrudite logic. librrii client21, pentru multe limbaje de column-family analog tabelelor din programare. Aceast varietate face luarea 15 http://www.cloudera.com/content/cloudera/en/pro- unei decizii mai greoaie. n cazul Java exist ducts/cdh.html 16 https://cassandra.apache.org/ 9 librrii pentru versiunea curent. Merit
17 http://www.allthingsdistributed.com/files/amazondynamo-sosp2007.pdf 18 https://aws.amazon.com/dynamodb/ 19 http://www.datastax.com/docs/1.2/ddl/index 20 http://www.datastax.com 21 Cassandra High Level Clients: https://wiki.apache. org/cassandra/ClientOptions

Concluzie

Sistemele NoSQL sunt ntr-o faz de evoluie natural, dar sub nici o form nu nlocuiesc sistemele mature relaionale, ci le complementeaz. Exit mai multe soluii NoSQL, aparinnd unor clase diferite, fiecare adecvat unei anumite probleme. Dei ofer un avantaj competitiv, nu exist soluie NoSQL perfect pentru toate scopurile. nainte de face o alegere n acest sens trebuie atent analizate i urmrite urmtoarele aspecte: Definirea i analiza cerinelor funcionale i non-functionale precum performana, consistena, disponibilitatea, scalabilitatea, securitatea etc. Alegerea i adaptarea modelului de date optim pentru query-urile cele mai frecvente Identificarea soluiilor i eventual relaxarea unor cerine Migrarea datelor existente, dac e cazul Iteraia continu peste fazele de Proof Of Concept, Deployment, Heavy workload, Metrics, Tuning

36

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Big Data: Radiografie HBase


S spunem c avem un serviciu public de hri online, gen Nokia Maps sau Google Maps. Pentru a avea success, pe lng hri detaliate, avem nevoie i de informaii, i de coninut, care s fie disponibil pe hart. Un prim astfel de coninut sunt punctele de interes, pe scurt POI (point of interest). Este estimat c n lume sunt dou miliarde de POI-uri. Pentru a publica aceste POI-uri trebuie mai nti culese sau achiziionate din diverse surse. Foarte des se ntmpl ca acelai POI s provin din mai multe surse, fiind necesar deduplicarea POI-urilor. Mai mult, anumite atribute sunt specifice doar unora dintre POI-uri. De exemplu, restaurantele se caracterizeaz prin tipul de buctrie, numr de mese, etc, iar parcrile prin, preul pe or, numr de locuri, parcare subteran sau pe mai multe nivele. HBase este o baz de date de tip column-oriented, ale crei principale atuuri sunt consistena i posibilitatea de scalare a sistemului. A fost proiectat bazndu-se pe BigTable, o baz de date proprietar dezvoltat de Google ale crei principii au fost publicate ntr-o lucurare din 2006 numit, Bigtable: A Distributed Storage System for Structured Data. Este folosit activ n companii bine cunoscute, precum Facebook, Nokia, eBay, Yahoo i in diverse aplicaii ce necesit stocarea i analiza unor cantiti mari de date. La prima vedere, HBase pare s fie o baz de date relaionar. HBase stocheaz datele n tabele, care conin celule ce apar la intersecia dintre rnduri i coloane. Dar nu e chiar aa. Tabelele nu au relaii ntre ele, rndurile nu servesc ca nregistrri, iar coloanele sunt complet variabile. Putem vorbi despre existena unei scheme, dar rolul ei e doar s ghideze i nu s foreze. HBase deine funcionaliti care lipsesc celorlalte baze de date, precum versionarea, compresia i colectarea datelor expirate (garbage collection). Cnd o valoare nou e scris ntr-o celul existent, vechea valoare rmne indexat dup timestamp . Dac

n numrul 3 al revistei, articolul despre Big Data menioneaz un tip aparte de sisteme NoSQL: sisteme orientate pe coloan (column-oriented database). Un concept cel puin curios, ce merit studiat. Acest articol radiografiaz unul dintre sistemele ce funcioneaz pe acest concept: Apache Hbase (http://hbase.apache.org/). valorile stocate sunt foarte mari, se poate recurge la compresia lor, folosind algoritmii Gzip sau LZO. Din punct de vedere al teoremei CAP, HBase este un sistem CP (vezi articolul despre Big Data din numrul 3 al revistei). Ofer garanii puternice pentru consistena datelor. Daca un client execut o scriere cu succes a unei anumite valori, acea valoare va fi citit de toi ceilali clieni. Fiind un sistem distribuit, n cazul n care un nod din cluster se defecteaz, HBase rmne funcional. Dac un singur nod din cluster rmne funcional, atunci toate scrierile vor fi refuzate. n scop didactic HBase poate s funcioneze i n mod stand-alone, adic folosind un singur nod. Este recomandat ca pentru un cluster de producie s se foloseasc minim 5 noduri. Daca o map este o pereche de chei i valori, ca un Hashmap din Java. Un tabel in HBase e o map mai mare sau mai concret este o map de mape. Cheile sunt string-uri arbitrare ce mapeaz un rnd (row) de date. Un rnd este i el o map, n care cheile sunt numite coloane, iar valorile sunt iruri de biti neinterpretai. Coloanele sunt grupate n familii de coloane. Fcnd ca numele ntreg al unei coloane s fie format din numele grupului i numele coloanei (family:qualifier). n exemplul de mai jos: Identity:id, Identity:provider, etc.. Tabelul ofer un exemplu despre cum datele sunt modelate flexibil. n coloana Identity, se observ c pentru parcare, lipsete name , iar n Amenities, atributele salvate sunt complet diferite. HBase ofera un shell, bazat pe JRuby, ce permite interaciunea cu tabele, modificarea schemei sau aciuni mai complicate ce pot fi automatizate datorita limbajului JRuby. Pentru a crea un tabel din linia de comand vom proceda n felul urmtor:
hbase> create place ', identity, address, amenities

Acesta va crea tabelul cu numele place i avnd dou familii de coloane identity , address i amenities. Pentru a scrie o valoare se specific tabela, rndul, coloana i valoarea
hbase> put place, 1234, identity:cuisine, french

Similar se efectueaz o citire:


hbase> get place, 1234

sau

hbase> get place, 1234, identity

O lista complet de comenzi pentru Shell este disponibil aici: http://wiki.apache.org/hadoop/Hbase/Shell. Deoarece HBase a fost dezvoltat n limbajul Java, e normal ca API-ul principal s fie Java. Mai nti e nevoie de un obiect de configurare care e folosit de client pentru a se putea conecta la server. Cnd se creeaz instana, i caut proprietile de iniializare n hbase-site. xml sau n hbase-default. xml care trebuie sa fie in CLASSPATH.
private static Configuration conf = HBaseConfiguration. create();

H b a s e Ad m i n e s t e interfaa de access la metadata tabelelor i of e r f u n c i on a l it i administrative.


www.todaysoftmag.ro | nr. 10/Aprilie, 2013

37

programare
Big Data: Radiografie HBase
exist nici o alt modalitate de sortare sau indexare dup alte coloane. Dac se dorete cutarea dup altceva n afar de chei, atunci trebuie s recurgem la scanare sau s ne creeam un index propriu. Un alt minus ar fi lipsa conceptului de tip de date. Tot ce se stocheaza n HBase este interpretat ca ir de bii. Nu exist vreo deosebire ntre Date i String. HBase nu se instaleaz niciodat singur. Pentru a funciona are nevoie de Hadoop (o platform MapReduce), HDFS (un sisFolosind HTable se face conexiunea cu tabela dorit. Pentru a tem distribuit de fiiere) i Zookeper (un sistem ce coordoneaz aduga un rnd nou se folosete Put. n HBase totul se stocheaz nodurile din cluster). Mai multe despre aceste tehnologii ntr-un ca iruri de bytes. Clasa Bytes convertete orice tip Java n iruri numr viitor. de bii. Este important de reinut c HBase este soluia pentru propublic void addRecord(String tableName, String rowKey, String family, String qualifier, String value) bleme de stocare complexe din punct de vedere al dimensiunii throws Exception { try { largi i a structurii dinamice a datelor. HBase nu e o soluie pentru HTable table = new HTable(conf, tableName); Put put = new Put(Bytes.toBytes(rowKey)); probleme mrunte.
public void creatTable(String tableName, String[] familys) throws Exception{ HBaseAdmin admin = new HBaseAdmin(conf); if (admin.tableExists(tableName)) { System.out.println(table already exists!); } else { HTableDescriptor tableDesc = new HTableDescriptor(tableName); for (int i = 0; i < familys.length; i++) { tableDesc.addFamily(new HColumnDescriptor(familys[i])); } admin.createTable(tableDesc); System.out.println(create table + tableName + ok.); } }

Am putea ncheia aici radiografia HBase, dar merit menionat cum Facebook a gsit o funcionalitate ingenioas pentru HBase. Facebook folosete HBase ca o componenta central a sistemului } su de messaging, att pentru stocarea mesajelor utilizatorilor, ct i pentru a pstra un index inversat pentru cutarea mesajelor. Pentru a citi un record, se folosete Get, iar rspunsul e ncapn tabelul de indecsi, cheile sunt ID-urile userilor, coloanele sulat ntr-un obiect de tip Result sunt cuvinte ce apar n mesajele utilizatorilor, iar timestamp-urile sunt ID-urile mesajelor care conin cuvntul. public void getOneRecord (String tableName, String rowKey) throws IOException { Cum mesajele utilizatorilor sunt imutabile, intrrile n index HTable table = new HTable(conf, tableName); Get get = new Get(rowKey.getBytes()); sunt statice i ele. Conceptul de versionare nu are sens aici, dar Result rs = table.get(get); for(KeyValue kv : rs.raw()){ Facebook l folosete pentru a stoca ID-urile mesajelor. Practic, au System.out.print(new String(kv.getRow()) + ); System.out.print(new String(kv.getFamily()) + : ); ctigat o alt dimensiune pentru date.
table.put(put); System.out.println(insert recored + rowKey + to table + tableName + ok.); } catch (IOException e) { e.printStackTrace(); } } } System.out.print(new String(kv.getQualifier()) + ); System.out.print(kv.getTimestamp() + ); System.out.println(new String(kv.getValue()));

put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value));

Bibliografie:
http://hbase.apache.org/book/quickstart.html Seven Databases in Seven Weeks, Eric Redmond

Cnd nu sunt cunoscute cheile de cutare, se folosete Scanner ce ofer o interfaa de tip cursor asupra coninutului din tabel.
public void getAllRecord (String tableName) { try { HTable table = new HTable(conf, tableName); Scan s = new Scan(); ResultScanner ss = table.getScanner(s); for (Result r : ss) { for (KeyValue kv : r.raw()) { System.out.print(new String(kv.getRow()) + ); System.out.print(new String(kv.getFamily()) + :); System.out.print(new String(kv.getQualifier()) + ); System.out.print(kv.getTimestamp() + ); System.out.println(new String(kv.getValue())); } } } catch (IOException e){ e.printStackTrace(); } }

Ctlin Roman

catalin.roman@nokia.com Software Architect @ Nokia, Berlin

Rndurile din tabele sunt pstrate sortat dup chei, dar nu

38

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

programare

Migrare website MVC 3 + DB n Azure


Cred c mai multe proiecte/businessuri se confrunt cu aceast alegere numrul de comentarii la acest articol mi va dovedi dac am dreptate sau nu aa c v voi prezenta: 1. Procesul decizional/factorii care au contribuit la alegerea windows Azure ca soluie (de ce Azure i nu altceva?) 2. Procedura de migrare propriu zis ce a fost uor, ce a fost greu, ce instrumente am folosit.

e curnd am avut de luat o decizie soluia de hosting folosit de platforma noastr devenea insuficient pentru nevoile sistemului nostru sau ale clienilor notri. Am avut de ales ntre un server dedicat mai puternic, de fapt o pereche de servere + load balancing i de a trece pe un hosting tip cloud computing. MS SQL server ascuns n spatele Entity Framework. Deja se ntrevd cteva constrngeri un SQL Server necesit o main ce ruleaz un OS Windows (Windows Server sau altceva). Pentru web, portalul n ASP.net MVC cel mai facil e s folosim un Windows cu IIS se poate opta i pentru un linux dac alege s rulm aplicaia pe mono. Din moment ce baz de date ne oblig s alegem Windows ca OS, pentru a uura munca de administraie vom alege Windows/IIS ca hosting. De ce e acest aspect important? Dac alegem s construim/ nchiriem un server dedicat trebuie s instalm Windows pe aceast main n funcie de furnizorul de hosting ales ar trebui s pltim pentru licena de Windows (costurile pot fi n jur de 10 eur/lun). De obicei, ntrun serviciu de cloud (Amazon EC2, Windows Azure) putem nchiria servere dedicate (maini virtuale) ce vin cu OS-ul Windows preinstalat - nu pltim nimic pentru acest aspect. Acelai lucru se aplic n cazul SQL Server: dac alegem un server dedicat va trebui s instalm noi SQL serverul (sau s pltim pe cineva s fac asta pentru noi) i pentru aceasta vom avea din nou nevoie de licen o licen de MS SQL Server Web Edition se poate nchiria cu ~ 25 eur/lun. Sumarizand: pentru un server dedicat vom plti nchirierea serverului + licentele de instalare (cumprm sau nchiriem) se ajunge la un cost fix, usor de previzionat. Pentru serviciile de tip cloud tariful e variabil, n funcie de ce maini/instante folosim i ct de mult le folosim (ore de utilizare). Daca alegem s nlocuim un SQL server cu SQL Azure atunci vom fi taxati n funcie de traficul outbound generat. Dac tariful maina/per numar de ore de utilizare vi se pare greu de cuantificat nu suntei singurii dei furnizori de cloud computing ne pun de obicei la dispoziie price calculators, s-ar putea s nu dispunei de informaiile necesare pentru a face o estimare. Cel mai bine s facei un test real (n msura posibilitilor). Amazon i Azure pun la oferta dezvoltatorilor programe de trial: http://aws. amazon.com/free/ , respectiv http://www. windowsazure.com/en-us/pricing/freetrial/ ce sunt suficiente pentru a rula cteva teste de performan/ncrcare ce ne vor ajuta s ne facem o idee asupra costurilor. Si SQL Azure se poate incerca ca trial: http://www.windowsazure.com/en-us/ pricing/free-trial/ n momentul cand ati portat arhitectura pe cloud, rulati teste de load/performanta pana atingeti limitele pachetelor trial in momentul acesta ar trebui sa aveti destule informatii pentru a putea folosi relevant calculatoarele de pret puse la dispozitie de serviciile cloud Pe scurt: contextul (arhitectur ce trebuie migrat) are o influen direct asupra posibilitilor de migrare i asupra costurilor pe un server dedicat costurile de hosting sunt fixe, pe o soluie tip cloud sunt variabile (din punct de vedere managerial e mult mai uor s previzionezi un cost fix). Disclaimer : ca furnizori de cloud computing noi am folosit doar Amazon i Azure, n principal datorit notorietii i a facilitailor oferite startupurilor. Acest lucru nu nseamn c nu v putei orienta spre altceva: Google App Engine (https:// cloud.google.com/) sau furnizori regionali un search pe un motor de cutare v va da mai multe detalii. De asemenea, mai muli furnizori de servicii regionali ofer faciliti startupurilor dac nu gsii informaii pe site-ul furnizorului, contactai direct serviciul lor de vnzri ei v vor da toate informaiile cutate.

Fiecare arhitectur are particularitile sale, nu cutai o reet care s se potriveasc n toate scenariile, ci mai degrab cutai o soluie potrivit scenariului vostru. Doar aa putei s maximizai ROI-ul (return on investment).

Alegerea soluiei de scalare potrivit

Primul pas e s definim contextul


Ce migram mai exact? Arhitectur ce trebuia migrata de noi const n: un web portal dezvoltat n ASP.net MVC (3 i 4) avnd n spate o baz de date ce rula pe

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

39

programare
Migrare website MVC 3 + DB n Azure
Al doilea pas: know-how
Unul dintre avantajele unui server dedicat e c tu te bucuri de toat puterea oferit de acea main i, pentru moment, obii un pre mai bun per processing power alegnd un server dedicat n locul unei soluii cloud. Unul dintre dezavantajele unui server dedicat e c tu trebuie s te ocupi de administrarea acelei maini i s te asiguri c exist un plan B, C, D, s.a.m.d. n caz de crash. Echipa noast nu deinea know-howul unui system admin/db admin puteam externaliza aceste taskuri. Dac dorii s vedei cam ct v poate costa externalizarea unui serviciu de sistem admin putei verifica serviciile oferite de livehosting cu care noi am lucrat i de care suntem mulumii - https://www.livehosting.ro/Datacenter/ Servere-Dedicate/Administrare-servere. aspx. pn cnd aduceam n echip un om cu cunotinele necesare. Nici una din variante nu ne ncnt un SLA (service level agreement) strict ne oblig s avem n echipa un system admin/db admin la un moment dat, dar nu considerm c skill setul unui system admin/db admin erau prioritare echipei noastre n acest moment. n alte cuvinte: preferm s devenim mai buni n ceea ce tiam deja (dezvoltare web, mobile, linq) dect s ne dezvoltm pe orizontal nvnd s devenim system admini/ db admini. Promisiunea serviciilor de tip cloud e transparena scalrii i uurina realizrii redundanei fr cunotinele unui administrator de sistem poi configura un sistem ce respect un SLA strict i poate fi scalat cu uurin cnd va fi nevoie. O astfel de promisiune a fost pe placul nostru. i migrarea n cloud presupune dobndirea de know-how familiarizarea cu termeni noi (fiecare soluie cloud folosete o terminologie proprie), set de unelte de administrare noi i mod de lucru. Dezvoltnd o soluie bazat pe .net i folosind Visual Studio ca IDE, Azure devine soluia cloud cea mai uor de folosit din punctul meu de vedere, Microsoft a fcut o treab excelent prin integrarea Windows Azure SDK n Visual Studio aa c poi face aproape transparent deploy n cloud-ul Azure. Aproape e pentru c nainte de a face deploy va trebui s migrezi proiectul. Datorit tehnologiei folosite, Windows Azure i SQL Azure au devenit soluiile cloud cel mai uor de folosit pentru noi. Cnd am avut de a face cu website-uri cu backend php am gsit hosting-ul celor de la Amazon a fi uor de folosit (ct timp nu te sperie configurarea unei maini Linux) iar modificrile ulterioare au fost uor de fcut. V prezentm mai jos ceea ce am fcut noi pentru a vedea ct de uor i ct ne-ar costa s ne administrm singuri mainile virtuale fa de a administra o soluie tip cloud: Ne-am documentat la un nivel superficial despre ce ar nsemna s configurezi un IIS, s instalezi un load balancer, s instalezi i s administrezi un SQL server, s pui la punct un sistem de backup/ restore pe baz de date. Nu recomandm nimic n special pe aceast tem, motoarele de cutare v vor oferi toate informaiile necesare. Ne-am educat despre ce nseamn Azure i SQL Azure, cum se poate realiza un sistem redundant i ct de uor e s scalezi aici training-urile de pe Pluralsight (www.pluralsight.com) ne-au fost de un real folos i le recomand cu cldur. Cel mai important, am discutat cu persoane cu experien pe administrare servere/Windows Azure cnd eti la nceput de drum, s-ar putea s nu tii ce ntrebri trebuie s pui i aici o persoan cu experien te poate ajuta s i creezi o imagine realist legat de efortul necesar1. Not: buzz word-ul cloud a fost i el un factor n tot procesul decizional cel puin la nivel de marketing, pare mai eficient pe termen s adaugi skill set-ului tu abilitile de a lucra cu o soluie tip cloud/ a migra proiecte n cloud, dect s nvei s administrezi servere dedicate. Pe scurt: s administrezi un server nu e uor chiar dac poi externaliza administrarea pentru o perioad, va trebui fie s nvei, fie s angajezi pe cineva care s fac asta. ntr-o soluie de tip cloud vei investi timp mai mult n faza iniial pentru setarea sistemului, iar partea de redundan, scalabilitate, backup & restore s o externalizezi cloud-ului. Ambele implic costuri i tradeoff-uri noi eram relativ fr experien n oricare din aceste dou domenii, costurile privind acumularea de know how fiind similare. n cazul vostru, dac avei deja experiena cu una dintre aceste soluii, decizia poate fi mai uoar. Din analiza noastr un server dedicat ofer performane mult mai bune/per euro, dac avei experiena necesar pentru a configura/adminstra un sistem voi niv, merit mers pe o soluie dedicat. Cloud-ul face tranziia mult mai uoar pentru un programator ascunde tot ce nseamn configurare/administrare maini virtuale i procedura de scalare rmnnd c tu s te poi concentra pe dezvoltarea soluiei i nu administrarea hostingului.

Note finale
Am petrecut aproximativ trei sptmni analiznd diferite opiuni, discutnd cu oamenii, participnd la training-uri pe Azure i citind despre administrarea serverelor nainte de a alege Azure. Faptul c am putut testa Azure prin intermediul Bizspark ne-a ajutat mult n a lua o decizie. Despre cum exact am migrat baza de date pe SQL Azure, web portalul pe Windows Azure, provocrile ntlnite i tool-urile folosite n articolul din numarul viitor.
Drago Andronic
CTO @ TXTFeedback dragos@txtfeedback.net

1 doresc s multumesc: - Fostilor colegi de la Evoline care m-am ajutat cu sfaturi/informatii legate de administrare Sql Server/IIS. - Lui Radu Vunvulea de la iQuest care m-a ajutat cu sfaturi/ explicatii legate de ce si cum s-ar putea migra pe Azure.

40

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

business

Provocrile unui lider - partea III


cesta este ultimul articol din seria dedicat provocrilor unui lider, scris de Martin Mackay, numit recent CEO la Neverfail. n primul articol Mackay a prezentat strategia utilizat la Neverfail pentru a determina schimbarea. n cel de-al doilea, discut mai n detaliu cele cinci responsabiliti cheie pe care un lider trebuie s i le asume. n articolul de fa aduce n discuie cele apte comportamente cheie pe care liderul trebuie s le utilizeze pentru a fi eficient. Aa cum am menionat n numerele anterioare, n momentul de fa liderul are mult mai multe responsabiliti dect a avut n orice alt perioad. Nu numai c trebuie s in cont de nevoile investitorilor i acionarilor (care nu rezoneaz de obicei cu situaia economic global), dar totodat i angajaii au ateptri mari de la acesta. Informaiile disponibile n toate mediile permit bunelor practici din leadership s fie diseminate i citite pe toate canalele media; ca urmare, angajaii vor taxa foarte strict acele comportamente care nu se ridic la nlimea ateptrilor. Uneori, orice lider are tendina s se concentreze doar pe nevoile i dorinele lui. O lecie timpurie pe care am nvat-o n carier a fost aceea c cei mai buni ageni de vnzri trebuie s fie egoiti (sau cel puin individualiti), ns cei mai buni manageri n vnzri (i liderii de orice tip) au nevoie s fie altruiti. Egoismul nu are ce caut n comportamentul unui lider, dei uneori pare cea mai la ndemn atitudine! Unul dintre mentorii mei din industrie mi-a spus odat: Ca CEO, nu tiam dac trebuie s fiu plcut, respectat sau temut. Experiena m-a nvat c trebuie s fiu cte puin din toate trei! Cuvinte nelepte, dar sarcin dificil. Nu exist o formul pentru succesul n leadership i fiecare lider trebuie s i gseasc propriile metode. n cele din urm, dac se dovedete c este un lider autentic, va ctiga i respectul echipei sale. Totui, voi trece n revist n acest articol cele apte comportamente pe care le consider demne de urmat i care consider c definesc noiunea de leadership. Primul comportament const n a oferi, mai degrab dect a lua. Legendele despre lcomie i lipsa responsabilitii n cadrul corporaiilor circul peste tot. Citesc momentan o carte incredibil intitulat Exposure, care descrie scandalul corporatist Olympus. Directorii din cadrul corporaiei japoneze erau preocupai doar de a lua, nu i de a oferi. Iat cum sun teza a oferi, nu a lua: angajaii care se simt bine la locul de munc vor avea rezultate mai bune i vor munci mai mult; ca urmare, clienii se vor simi mai mulumii de serviciile i produsele pe care le cumpr i vor cumpr mai mult; c urmare, vor fi mai muli bani n banca. Pentru a realiz acest lucru, angajaii au nevoie s se simt implicai. Pentru a crea implicarea, leaderul trebuie s creeze un mediu de comunicare deschis i s elaboreze o direcie clar pentru companie, astfel nct angajaii s neleg direcia n care se ndreapt i s simt c sunt parte din aceast cltorie. Acest lucru nseamn c liderul trebuie s i petreac timpul oferind: direcionare, ndrumare, ncurajare, comunicare, energie, empatie. n timpuri austere liderul nu are alt as n mneca pentru a rmne credibil: n timp ce liderul mai mult ca sigur va fi recompensat mai bine ca majoritatea, este tot la fel de important ca angajaii s simt c au fost recompensai pe msur (i au ansa de a participa la succesul companiei prin sistemul de bonusuri) Un al doilea comportament dezirabil pentru cei mai buni lideri este autocunoaterea: s fii contient de ceea ce poi face, ce nu poi face i s te simi confortabil s angajezi oameni care o pot face mai bine dect tine! Acest lucru este mai uor de zis dect de fcut, pentru c presupune ca liderul s aib o stim de sine echilibrat. Gndii-v la cei mai buni lideri cu care ai lucrat: au fost mai mult ca sigur dispui s v acorde laurii pentru succesul unui proiect; v-au ncurajat ideile i v-au ajutat s le punei n practic; v-au provocat, ca s v maximizeze abilitile; v-au mprtit punctele slabe i vulnerabile; nu au avut nevoie s fie cele mai detepte persoane din ncpere! Acestea sunt caracteristicile autocunoaterii care le permit liderilor s i creeze echipe puternice. n al treilea rnd, liderii trebuie s se asigure c scopurile i strategia sunt clare: acest lucru nseamn s fii sigur c toat lumea a neles ce trebuie s fac, fr a meniona cum anume trebuie fcut. Sesizai nuanta: liderii nii i pun tot talentul n a crea strategii i scopuri asociate; nu trebuie s elaboreze ei nii strategia i obiectivele, dar s se asigure c sunt bine definite. Revenind la al doilea comportament, cei mai buni lideri au o echip care sunt mult mai capabili dect ei n orice arie de responsabilitate. Angajeaz oameni care sunt mai buni ca tine i d-le sansa s aib succes este cel mai bun sfat pe care l pot oferi. Cheia este aici c liderul devine orientat spre scopuri i nu spre sarcin. Liderii orientai spre sarcini se transform cu uurint n micro-manageri i se consider singurii capabili de a face lucrurile s mearg. Ca un exemplu, s ne uitam la Margaret Thatcher: indiferent de ce parere ai legat de politica ei, nu poi s nu admii c viziunea pe care a instalat-o n UK, curajul ei ca lider, obiectivele propuse pentru echipa i determinarea ei au fost factorii care au determinat n 1980 transformarea Marii Britanii. Declinul ei s-a produs n momentul n care a crezut c este singura capabil s pun n practic programul legislativ. A ncetat s mai lucreze cu propria echip i a nceput s-i denigreze; a uitat de scopuri i a nceput ea nsi s execute sarcinile. n cele din urm, acest lucru

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

41

business
Provocarile unui lider - partea III
a dus la excluderea ei din guvern nu de ctre opoziie, ci de ctre propriul partid. Al patrulea comportament presupune c liderii sunt capabili s comunice ca s implice. Folosesc mijloace media formale i informale pentru a prezenta detalii ale progresului i succesului nregistrat, dar i provocrile pe care afacerea le ntmpin. Cea mai eficient comunicare este aceea n care liderul spune poveti i mprtete experiene. Aceste poveti vor fi de obicei presrate cu umor autentic i auto-ironizator (dac vorbesc despre experiena liderului), dar vor folosi i analogii personal m ncnt analogiile din lumea sportului sau poveti care spun experiene similare pentru a ilustra punctele cheie. Probabil un aspect important n acest tip de comportament este acela c aceast comunicare trebuie s fie consistent: ar putea fi numit comunicare n exces, dar dac liderul s-a asigurat c strategia i obiectivele au fost clar stabilite, atunci repetarea acestora pentru atingerea scopurilor nseamn consisten. Comunicarea n scopul atingerii scopurilor nseamn c acestea trebuie s fie relevante i inspiraionale pentru angajai. De multe ori, scopurile reflect interesul liderului sau sunt limitate i nerelevante pentru angajai. De exemplu, stabilirea obiectivului de a vinde afacerea n doi ani ar putea fi relevant pentru investitori i acionari, dar mai puin relevant pentru angajai. Prezentarea unei perspective n termeni de achiziii strategice (produse, parteneri), prezena pe piaa forei de munc (clieni, reputaie), cultura companiei i etosul acesteia ca i ilustrarea indicatorilor financiari pentru a prezenta obiectiv progresul sunt o surs mai mare de inspiraie, deoarece le permite angajailor s simt c se implic s lucreze ntr-o afacere de succes din care sunt mndri c fac parte. ndeplinirea acestor scopuri strategice va rezulta ntr-o oportunitate profitabil pentru investitori, dar aceasta este consecina ndeplinirii scopurilor, mai degrab dect a unui singur scop. Pentru orice lider succesul nu las loc de arogan. Am nvat acest lucru pe propria piele n trecut, atunci cnd am fost provocat de angajatori cu ntrebri dificile i am rspuns ntr-un mod agresiv i suprasaturat: arogana mea a fost aceea c nu am permis aceast provocare din partea cuiva care nu-mi respect autoritatea. Se spune c ncrederea n tine vine dintr-o parere bun pe care o ai despre propria persoan i care este susinut i de alii, iar arogana provine din aceeai stim de sine, dar care nu este susinut de ceilali! Dac liderul poate demonstra ncrederea cu umilin, dac se pune n locul angajatului i rspunde pozitiv la orice provocare, atunci acesta va fi perceput ca unul autentic. Evident c liderii sunt mai nti de toate oameni: dac le emitei provocri i ntlnii un comportament agresiv i nerespectuos, ateptai-v la consecine neplcute! n orice caz, cei mai buni lideri las arogana deoparte i fac fa provocrilor, adversitilor i succesului ntr-o manier echilibrat. Aa cum spunea Kipling: care este, dup prerea mea, i cel mai important: integritatea. Integritatea este o combinaie de: consisten, onestitate, deschidere, autenticitate i ncredere. Demonstrai acest lucru i vor urma doar lucruri bune!

P.S. Sper c aceste articole s-au dovedit a fi att interactive ct i provocatoare. Ceea ce am ncercat s fac aici a fost s mi etalez propria filosofie i modul n care ncercm s transformm Neverfail la nivel mondial. Va funciona? Singurul test real este chestionarea propriilor angajai n legatur cu De poi fi calm cnd toi se pierd cu firea modul n care se simt s lucreze pentru noi. n jurul tu i spun c-i vina ta; Nu pot fi sigur c vom trece acest test, dar De crezi n tine chiar cnd omenirea cu siguran ne vom strdui s ndeplinim Nu crede, dar s-o crezi ar vrea; acest obiectiv ca o echip i vom face acest lucru cu plcere! Comportamenul penultim presupune ca liderii s i inspire angajaii s se implice n munca lor i n viitorul companiei i s i asume responsabilitatea pentru contribuia lor; acetia prezint totodat dovezile progresului, a contribuiiei angajailor i a tuturor aspectelor afacerii. Cu alte cuvinte, conduc cu inima i execut cu capul. n ultimul rnd, cei mai buni lideri lucreaz din greu s i implice angajaii astfel nct experiena acestora s fie memorabil; acest lucru nseamn c experiena clientului va fi memorabil i recunosc acest lucru ca fiind principalul element al unei afaceri de succes. Prin urmare, liderul are nevoie s i ctige ncrederea i respectul, astfel nct angajaii s cread n el. Liderul trebuie s i motiveze ca acetia s lucreze ca o echip, mai degrab dect o adunatur de indivizi cu interese separate. Liderul trebuie s fie suficient de abordabil, astfel nct angajaii s i poat exprima punctele de vedere, fr frica de consecine, ns trebuie s i arate i colii atunci cnd situaia o cere trebuie s existe att sentimentul c angajaii nu trebuie s i dezamgeasc liderul, dar i acela c cei care o fac nu sunt tolerai. Ca exemplu, amintii-v celebra replic a lui Arnold Schwarzenegger din filmul Minciuni adevarate, n care Jamie Lee Curtis, soia sa, descoper c e spion. Ea spune: Vrei sa spui c ai omort cu adevarat oameni? la care el raspunde: Da, dar erau cu toii ri!. Steve Jobs exprima altfel aceeasi idee: Scpai de proti! Acest Martin Mackay lucru nu nseamn concedierea tuturor mmackay@neverfailgroup.com care aduc provocri sau care contrazic, ci doar a acelora care nu mprtesc valorile CEO @ Neverfail Group. companiei. Cum poate un lider s realizeze toate acestea? Etalnd ultimul comportament

42

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

management

Prezentarea crii: Going Agile


de Gloria J Miller

ver the summer of 2012, I decided to go for the Project Management Institute (PMI) launched an agile project management certification, the PMI-Agile Certified Practitioner (PMI-ACP). PMI recommended some 10 books to read in preparation for the certification. I found the books very helpful and informative. I learned some new terms and new methods of working. Even though I have several years of experience with different agile methods, it was difficult to align those new ideas with the project management practices I was already using. I kept thinking, what now. If I started a project tomorrow, what would I do different from on my last project. Therefore, I decided to jot down my ideas and thoughts in short reference book. The book Going Agile Project Management Practices is the result.

What is the book about

Going Agile Project Management Practices is an extensive review of the literature with the content selected and influenced by my 30 plus years of experience. Agile and project management field consultants helped to review and form the structure and content of the book. They also added their expertise in the form of case studies and personal experiences. The book is not specific to any one agile methodology. It synthesizes definitions, concepts, and practices that would be applicable to an executive, manager, or project manager that wants to be informed about agile. The book is divided into four sections: A definition of agility, its benefits, and practices; a description of the agile practices as aligned with the PMI Project Management Body of Knowledge (PMBOK) GuideFifth Edition; an overview of the considerations for selecting and implementing an agile methodology; and a reference guide of selected methodologies, terms, and people. The key topics included in the book include: The applicability of agile, its benefits, and failures Description of selected methodologies (Scrum, Kanban, Lean, XP) and

the required functionality for the agreed budget. It turns out, agile projects use of functional contingencies and the review meetings to manage budget expenditure. A functional contingency is a reserve of features that may not be implemented should the project not be able to realize all product features due to budget or time constraints. The review meetings are used to evaluate progress against expectations and authorize or decline further investment in the The originality in Going Agile Project project. Management Practices book lies in its structure. First, it is a reference book or Book excerpts supporting cost pointer to guide people on getting started management with agile practices. Second, it approaches The following excerpts from Going the going agile topic from two directions: Agile Project Management Practices are adding agility to traditional projects or related to managing project scope and de-risking agile projects. Finally, it covers costs. agility in projects as a topic and not one Chapter 6 - Integration: Scope is manaspecific agile methodology. ged by prioritizing features to deliver the For example, one of the key questions most valuable features first, establishing I had about agile practices related to cost business rules for addressing changes, and management. If the agile teams are self- deciding on the iterations scope at the last managing, deciding their own definition possible moment. of done, and agreeing what scope they Chapter 7 - Scope: Functional contincan complete, how does that relate to cost gency is defined based upon the feature management? In my world, projects have prioritization. It is a reserve of features budgets that are established and agreed at that may not be implemented should the the executive level. The executive expec- project not be able to realize all product tation is that the project will deliver all features due to budget or time constraints.
www.todaysoftmag.ro | nr. 10/Aprilie, 2013

agile practices The agile techniques and skills needed for an agile coach Agile practices aligned to the Project Management Body of (PMBOK) Guide Edition 5 knowledge areas Personal experiences from agile coaches and team members A glossary of terms used in the book. Profiles of agile and management experts referenced in the book.

43

management
[Dynamic Systems Development Method] DSDM suggests that the contingency is the effort to implement any features beyond the must have features and that the must have features should represent 60% of the total project effort. In this scenario, the contingency is 40%. Chapter 8 - Time: Schedule contingency is a time buffer that is added to the schedule baseline to account for adjustments and fluctuations based upon risks or unknown events. The method for estimating the contingency will vary depending upon the estimation method used for sizing the project and a range to the velocity [the rate at which the team can deliver the features]. The simplest method is to calculate the expected project duration and add a percentage of time for contingency (e.g., 20%). For example, if the project was expected to complete in five iterations, a 20 percent contingency would have it completing in six iterations. Chapter 9 - Cost: The costs baseline includes all the costs and the contingencies, including staff costs and other costs. Since the scope is delivered in iterations, the burn rate per iteration and burn rate per size unit are perfect for evaluating the cost performance. When the budget is at risk, the functional contingencies can be used as a tool to adjust the features delivered and maintain the project within its costs (Chapter 7). Chapter 10 - Quality: The Test Plan should consider using Continuous Integration, Test Automation, and an Agile Tester as part of the quality processes. These practices are necessary to maintain a high throughput of user stories, minimize the build of technical debt, and deliver a high quality solution. Chapter 11 - Human Resources : At least 10% of the team members should be experienced with agile practices if pair programming is being used; if not, at least 25% of the team members should be experienced. Splitting teams, training, and [external] coaching are effective methods for including experience into the project team. Chapter 12 - Communication : Team space should be organized to facilitate free flowing communications amongst colocated and distributed team members. This may require adapting the facilities, using collaborative technologies, or undertaking additional activities. Chapter 13 - Risk: Risks are scheduled for resolution by placing them in the product backlog during release planning, planning the risk actions during the iteration planning, and working on risk during the project iterations. Chapter 14 - Procurement: The scope, change management, acceptance, termination, and deliverable sections of agreements should be adjusted to fit the operations of an agile project, including evolving scope, adapting to change, and early termination. Chapter 15 - Stakeholders: The project stakeholder will have different interests in the project and will come from inside and outside the organization. Map the interests of stakeholders onto the project events, artifacts, and information radiators that will be used to engage them in the project or inform them on the project status. Summarized altogether, the project budget should consider 100% of the functional scope, risks actions, quality infrastructure, facility changes (e.g., team space, collaboration tools), training and external coaching, and schedule contingencies. Change management involves establishing rules for when and how to use the functional or schedule contingencies. The project reviews become important milestones for stakeholder engagement and for monitoring and managing budget expenditure. Figure shows the budget considerations in agile projects.

Recommendations from the book for going agile

There is no one right way for organizations or projects to transition to being agile. Projects are unique undertakings, and organization have different cultures for decision-making and management controls. Therefore, the book lays out the facts, describes the agile practices, and then gives the choice to the reader on how to best approach agility depending upon their situation. The following are some things to do and to avoid for those considering adopting agile practices for the first time. Select and customize the methodology based upon the environment. Do not assume that any one methodology will work out-of the box. Spend some time to understand the method and how it would fit into your environment. Understanding it, might mean applying it in a few iterations before customizing it. Educate the leadership team. Management support is key and needed to implement and sustain agility. Invest time in getting the leadership team on board. They need to understand what changes and how they can support the team.

Define success. Define what a successful agile project looks like and manage expectations along the way. From Scrum, we learned about the term definition of done. Define and agree what it means. Otherwise, the team may think they are successful while management may not. Set-up the infrastructure. Being agile requires an investment in having infrastructure that supports quick changes. Define what infrastructure is needed and set it up. Adapt management reporting. Projects need to be evaluated more on their functional scope coverage than they do on their on-time performance. Adapt the expected management reports and performance metrics.

44

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Hold a retrospective and tune the processes. Review often what is working well and worth repeating, what could use optimizing, and what should never be repeated. There is no cookbook for going agile. Avoid software-driven approaches. Avoid new project management software solutions until after the first two or three projects. Work without introducing new project management technologies until you learn about being agile. Introducing technology too early makes the transition about the technology and not about the practices. Avoid confusion. Avoid trying to keep old practices while adapting to the new practices. It is tempting to try to keep old practices in place and not make the radical changes required. For example, going from a command and control project structure, where there is a project manager in charge, to a self-directed team means that the distributed authority can cause some uncertainty on who is in charge. Avoid trying to make the agile coach the project manager to avoid this discomfort. Agile practices do work, but they have to be given a chance. Going Agile Project Management Practices is 442 pages is available at amazon, Barnes and noble, and other e-tail outlets for 18,10 euro epub and kindle and 23,99 paperback.

About Gloria J. Miller Gloria J. Miller is the founder of MaxMetrics, a Management, and Information Technology Consulting company that is specialized in providing experts and expertise in international projects and programs. She has more than 20 years experience providing consulting in managing complex projects and realizing organizational change. Gloria has a masters degree in business administration and undergraduate degrees in computer science and electronic technology. She is a Certified ScrumMaster (CSM), a PMI-Agile Certified Practitioner (PMI-ACP), and a Project Management Professional (PMP). Maxmetrics has offices in Heidelberg, Germany and Atlanta, Georgia, USA.
www.todaysoftmag.ro | nr. 10/Aprilie, 2013

45

programare

Recenzia crii: Thinking in Java


de Bruce Eckel

ceast recenzie va fi un pic altfel. Cartea pe care o voi descrie este un clasic. Pentru ea voi scrie altfel. Este, dac-mi permitei, prima mea mare dragoste informatic. De cnd m tiu sunt pasionat de informatic. Legturile mele cu acest domeniu al tiinei i tehnologiei au rdcini n gsirea algoritmilor de rezolvare a problemelor matematice, dar nu numai. Poate c le-am pus n valoare atunci cnd am intrat la liceul cu profil informatic, dar atractivitatea a fost, aa precum am spus, mult mai veche.
Silviu Dumitrescu silviu.dumitrescu@msg-systems.com Consultant Java @ .msg systems Romania

n domeniul la dezvoltarii de soft am lucrat n multe limbaje, de la Asiris, Fortran, Cobol pna la mai modernele Pascal sau C. Fiecare a avut frumusee i utilitate la un anumit moment. Spre sfritul anului 1998 descoperisem plcerea utilizrii Delphi-ului. Cred c ncepusem s m modernizez Numeroasele tool-uri vizuale pe care le oferea, posibilitatea utilizrii formularelor de completare a proprietilor sau aciunilor mi se preau fascinante. M-am mai rzgndit apoi, cnd mi-am dat seama ct de puin flexibilitate ofereau aceste tool-uri. Fiind dornic de a fi n tem cu noutile n domeniul informatic am citit un articol despre noul limbaj Java i de buna impresie pe care o lsase n lumea dezvoltatorilor de soft. Nu tiu de ce am ncercat s dezvolt prima aplicaie n Java. Nu mi recomandase nimeni asta i nici nu tiam pe cineva care lucra n Java. Niciodat nu am tiut s explic de ce am fost atras de anumite lucruri sau persoane, poate este doar rezultatul unui impuls. Editam n Notepad, compilam i rulam n linia de comand. Atracia a fost total i de atunci au trecut 14 ani i atracia continu i se intensific. Nu pot spune c nu am mai lucrat i n alte limbaje de programare: PHP, Symfony, Smarty, JavaScript, Ruby on Rails, C, C++ sau chiar Delphi, poate i n altele de care nu mi aduc aminte acum, dar plcerea a fost unidirecional: Java.

i totui, de ce Java? Muli dintre noi tim c Java a adus unele schimbri fa de limbajele de programare ale vremurilor respective. Spre exemplu, Java permitea doar motenirea simpl, Java elimina pointerii , amd. Dar, ntreaga construcie a limbajului Java a fost orientat spre programator. Java permite implementri de aplicaii complexe, cu flexibilitate sporit, implementri ale punctelor de extensie, scalabilitate i multe altele. Exist studii prin care s-a dovedit c timpul de dezvoltare al unei aplicaii n Java este de dou ori mai mic dect n cazul folosirii limbajului C++. Muli ns, pot aduce ca minus al limbajului Java timpul de rulare al aplicaiilor. Este adevrat, interpretorul Java face multe operaii pn cnd codul compilat este executat. Acestea in printre altele de portabilitatea limbajului. Dei s-au fcut progrese importante n acest sens, pentru aplicaiile stand alone timpul de execuie este uor mrit fa de al aplicaiilor C++. Pentru aplicaii enterprise ns, acest timp este comparabil acelai cu al altor limbaje ce permit dezvoltarea de aplicaii enterprise. Thinking n Java de Bruce Eckel, a fost prima carte cu adevrat complet pe care am citit-o despre Java. De prima ediie am fcut rost, dup multe cutri, de la un prieten din Germania n format pe hartie de copiator i expediat printr-o cunotint. Cred c versiunea de Java de atunci era 1.2, maxim 1.3. Platforma enterprise nu apruse

46

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

business

TODAY SOFTWARE MAGAZINE


pagina 23, prima a acestui material. Nu srii paginile, implementai toate aplicaiile sugerate i rspundei multelor ntrebri ataate, pn la pagina cerut. Dac vi se pare mult cutai alt surs bibliografic. Totui, ajuni la pagina 410 vei avea un bagaj de cunotine nsemnat, pe care vei cldi cu siguran topicul dorit. Rmn la prerea c, dac ai parcurs ntregul material al acestei crti, poate mai puin partea de interfa utilizator, care poate fi n cazul unui dezvoltator enterprise mai puin interesant, ai dobndit cu adevrat un nivel ridicat de cunotine pentru dezvoltarea de aplicaii utiliznd platforma Java Standard 6. Nu toate lucrurile sunt roz. Bruce Eckel i creeaz o grmad de pachete, pline de instrumente pe care le folosete n exemplele crii. Rolul lor este important n ingineria softului, dar pentru cineva care se grbete s gseasc informaia cerut este destul de enervant. Repet, dac avei timpul necesar i v recomand s-l gsii, citii i nelegei instrumentele folosite de autor. Cartea abund, de asemenea, n pattern-uri. Acesta nu este un lucru ru. Folosirea pattern-urilor este urmtorul pas important pentru un dezvoltator soft, dup acela al implementrii unei aplicaii sub ideea s ias. Este recomandat s nelegei aceste pattern-uri, s vedei utilitatea lor i s le adaptai aplicaiilor voastre. Multe dintre pattern-urile prezentate sunt deja implementate n platforma enterprise . Container-ul se bazeaz pe aceste implementri. Vei nelege ceea ce a implementat container-ul i vei fi n stare s creai o aplicaie cu o calitate intern a softului ridicat. Sunt multe lucruri de spus despre aceast carte din punct de vedere tehnic. Organizat n 22 de capitole, acestea se ntreptrund ca topic-uri, completnduse. Primele sunt relativ de baz i probabil simple (generalitati OOP, sintaxa limbajului, fluxuri de control), dar tii oare s rspundei la ntrebarea: Care este ordinea n care se face iniializarea atributelor unei clase n momentul instanierii, dac avem constructor, iniializare la declarare i context de iniializare? Sunt foarte multe astfel de provocri. Dincolo de aceste basics se discut amnunit probleme precum: reflecia, coleciile, firele de execuie, inner i nested classes, manipularea erorilor, io i nio, genericele, anotaiile, garbage collector. Revin cu sfatul: facei rost de timp pentru a citi ntregul material! Chiar dac avei impresia c ceea ce avei nevoie a fost spus ntr-un anumit loc, n cele mai multe cazuri exist dezvoltri, optimizri i discuii pe soluiile anterioare. mi doresc ca fiecare dintre cei care citesc aceast carte s gseasc ca i mine plcerea lucrului n Java. Este dificil i anevoios, dar reuita este cu adevrat plin de satistacii. Sunt multe altele de adugat i de aceea atept cu mare plcere comentariile i discuiile pe aceast carte. Lectur placut!

nc, dar se putea programa n reea. Citind-o mi-am dat seama c nu tiam nimic despre Java. Au fost frustrri maxime, dar am parcurs-o toat i multe dintre conceptele prezentate le-am i neles. Ca urmare am i scris o carte despre Java, cu un prieten, n martie 2002. Voiam s transmitem i altora ce am neles noi. Uitndu-m n spate, cartea scris atunci are o abordare simplist, dar eu sunt mndru c este, probabil, printre primele din Romnia pe aceast tehnologie. Thinking n Java a fost ntotdeauna categorisit ca o carte entry, maxim middle level. Eu ns, nu am putut vreodat s o recomand cuiva care nu tie nimic despre Java. l dezarma! Cartea este foarte complet pe aproape toate topic-urile platformei standard. Din core-ul Java cred c lipsesc doar JDBC, parsarea XML-urilor i programarea n reea. Din pcate versiunile pentru platforma standard ale crii nu au fost urmate i de unele, la fel de reprezentative, pentru platforma enterprise. De-a lungul timpului am citit toate ediiile acestei cri, iar n ultimii ani mi-am petrecut mult timp actualiznd exemplele acestora la versiunea Java Standard 7. Cel mai important sfat pe care pot s l dau persoanei care citete aceast carte este: dac topicul care v intereseaz, i de care nu tii mai nimic, se afl la pagina 410, spre exemplu, nu v ducei acolo, nici mcar la nceputul capitolului, ci la

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

47

HR

Sindromul Superman
nd vine vorba de Time Management (TM) eu sunt publicul int. Problema este c nu ar trebui. Sunt trainer si psiholog de aproape 10 ani. Am livrat training-uri pe TM si am citit de la cercetri tiinifice pe TM pn la literatura POP pe acest domeniu. Dac am aa mare nevoie si dac am i cunotinele despre cum ar trebui s fac TM eficient, de ce n continuare procrastinez, ntrziu, uit? Problema nu este c nu tim ce ar trebui El nu exist. (din pcate) ci s v creai sis- din manual) s facem, problema nu este c nu tim s temul vostru de TM. Putei bineneles s 2. Am capacitatea s fac acel lucru? planificm sau c ar trebui s ne inem de v inspirai, ns nu v ateptai de la un tool Capacitatea trece prin dou etape. plan. Dac asta ar fi problema, eu si multi sau un training s v dea acel sistem care de Prima etap este s tiu cum, adic s alti documentai n ale TM-ului am face tot mine v va transforma in superman. stiu exact paii pe care trebuie sa i fac i ce ne propunem, atunci cnd ne propunem. Ok. Atunci ce este de fcut? cum trebuie ei fcui. Acest pas se refer la Problema este ceea ce putem numi sindroceea ce numim cunotine procedurale. A mul Superman. Lucrul esenial pe care trebuie s l doua etap se refer la avea compenele de facei este s v creai profilul vostru de a face ceea ce ne dorim. A avea competene Definitie TM. Cum facei asta? se definete simplu prin a putea s adaptez E acea afeciune care ne face s planifi1. ntelegei psihologia din spatele acele cunotine procedurale la caracteriscm ca i cum de mine altcineva va veni managementului comportamentelor. ticile fiecrui context cu puin efort i aport i va pune planul n aplicare. Altcineva 2. V monitorizai felul n care avei contient. care este complet diferit de noi. Altcineva tendina s facei lucrurile pentru a v Aici este o discuie lung. De exemplu care e motivat, are chef, i face timp pentru face un profil. n cazul nvatului unui nou limbaj de proce este important, nu l glorific pe busy, 3. Planificai lund ca de facto acel pro- gramare ntrebarea este Am competenele nu are nevoie de pauze, ritmul lui e unul fil, nebazandu-v pe Superman. s nv? tiu cum s nv?. E surprinconstant i orice alte caracteristici care ztor ci dintre noi nu tiu cum trebuie l-ar putea duce s pun planul ambiios n PSIHOLOGIA INITIERII s nvee i din acest motiv de multe ori aplicare. COMPORTAMENTELOR nici nu se apuc sau dac se apuc renun n articolul trecut am discutat despre Cercetrile din psihologie spun c pen- pentru c e dificil s nvei cnd nu tii s prima problem, definirea a ceea ce am tru a face ceva, este necesar s i asiguri nvei. de fcut. Acesta e primul pas i probabil, premisele/antecedentele pentru acel ceva. 3. Cred c pot s fac acel lucru condei esenial, cel mai uor de fcut. n acest Relaia dintre antecedente i aciune este form cu asteptarile mele? articol vom vorbi despre cel mai important dac i numai dac toate antecedentele n limbaj psihologic acest lucru se pas. Pregtirea! sunt prezente doar atunci comportamen- refer la auto-eficacitate. Aceasta este difetul poate fi iniiat. rit de ncrederea n sine sau stima de sine. Asta nu nseamn AE este specific fiecrui comportac va fi iniiat ci ment. Pot s am AE mare pentru mersul pe doar c poate fi ini- biciclet i inexistent pentru nvat. iat. Antecedentele n general AE este extras din experinecesare sunt: 1) con- ena de a face lucrul respectiv ns nu este textul; 2) cunotintele neaprat o msur obiectiv a capacitii de i competenele; 3) a-l face corect. Atunci cnd intenionm s nvm un autoeficacitatea i 4) motivarea: (AE sczut - n limbaj uzual sun Nu nou limbaj de programare i vrem s fim cred ca va iei, Sigur o voi da in bar, E prea consecveni n aciunea de nvare. Avem 1. Contextul: Am toate resursele de dificil pentru mine etc.) nevoie de dou strategii distincte: care am nevoie s fac acel lucru atunci 4. Sunt motivat sa fac acel lucru? cnd acel lucru este planificat? Adic, n ali termeni am acel drive Cauza Aici vorbim de dou tipuri de resurse: de care am nevoie s m apuc s fac acest Se pare c avem tendina ca atunci cnd externe si interne. lucru? S i aloc timp i efort? S renun ne propunem s realizm ceva i cnd plaAm resursele externe s realizez la a face altceva n acel timp sau cu acele nificm, s o facem n ciuda noastr. Exact! acel comportament la momentul n care resurse? Avem tendina ca atunci cnd planificm trebuie realizat? (ex: manuale, resurse ntrebarea pentru exemplul de studiu n loc s vedem care este profilul nostru informaionale, exerciii) al unui nou limbaj de programare va fi La de timp, cum funcionm noi ca oameni Am resursele interne? aici e capcana: momentul n care am planificat s nv voi i care este structurarea noastra fizic i Am resursele intelectuale, fizice, psiholo- vrea s o fac? Voi vrea s nv n loc s fac psihic, o facem mergnd pe nite strategii gice s fac acel comportament la momentul orice altceva? care sunt mai degrab mpotriva noastr. n care este planificat? (Totul, de la dispo*V promit un articol detaliat pe acest Sfatul meu referitor la TM nu este s ziia emoional, capacitatea intelectual subiect. E foarte interesant i merit mai adoptai un sistem de organizare miraculos. pn la condiia fizic de a citi 20 de pagini mult de cinci rnduri.

48

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Ce nseamn aceasta n termeni simpli? nseamn c numai dup ce bifez cele patru condiii pot s pun acel lucru n calendar. Ce se ntmpl este c de multe ori noi ne facem planificarea parc n ciuda noastr. Planificm nelund n considerare, de exemplu, ritmul psiho-fiziologic personal (context). Planificm, de exemplu, s nvm seara, dei n general seara suntem distrai i tot ce ne dorim este s ne relaxm. Recomandarea mea este ca planificarea s fie conform profilului nostru i nu n ciuda acestuia. Am spus c al doilea pas este Cunoaterea profilului personal. Cum s facem asta? Recomandarea mea este s v facei un plan (cum facei de obicei) i pe parcursul zilei s urmrii acel plan sau s i facei modificri pentru a corespunde cu realitatea. Ce conteaz aici este ca atunci cnd nu facei ceva ce era planificat sau mutai o anumit sarcin s identificai de ce se ntmpla asta. S identificai ce din Antecedente lipsete. Studiile de specialitate spun c tool-urile de Time Management nu funcioneaz dect dac persoana care le folosete are controlul perceput al timpului. Acest concept prespune senzaia subiectiv i obiectiv cpersoana poate s controleze felul n care i petrece timpul. Singura modalitate de a crete acel control perceput este s ne cunoatem profilul personal. Cunoscndu-l vom ajunge s tim ce plan ne reprezint. Cunoscnd ce plan ne reprezint ajungem s planificm pentru noi i nu n ciuda noastr. Scopul managementului timpului nu este s avem un plan miraculos. Scopul este s avem un plan care s coincid cu realitatea i s nu ne distrug pe parcursul implementrii. Nu am vrea ca planul s ne fac s ne simim neputincioi, iresponsabili, ne-ambiioi, lenei, nemotivai, suprai, nervoi sau speriai. cunoatem pe noi. Cunoscndu-ne pe noi putem s facem planuri care s ne reprezinte. Planificarea conform cu profilul se realizeaz punnd n realitate toate nvturile pe care le-am extras ca urmare a monitorizrii. ntrebarea constant va fi Unde pun activitile n aa fel nct ele s mearg pe ritmul meu personal i pe nevoile mele?. Niciodat nu voi pune o activitate n calendar dac ea nu are toate antecedentele prezente. Dac sunt antecedente lips, atunci voi programa activiti pentru crearea acelor antecedente nainte de a pune activitatea n calendar. De exemplu, pentru a nva un nou limbaj de programare, n cazul n care observ c nu tiu cum s nv atunci voi programa o activitate unde voi nva cum s nv nainte de a planifica s m apuc efectiv de nvat. Aa ca haidei s ne construim planuri care s fie cu noi, nu mpotriva noastr! V doresc planuri ct mai uoare i bineneles spor la nvat!

CUNOASTEREA PROFILULUI PERSONAL

n primul rnd v recomand o sptmn de monitorizare. Vei fi surprini cte surprize vei avea. Monitorizarea o putei realiza purtnd tot timpul o foaie de hrtie la voi unde s notai ce faceti n fiecare moment (inclusiv uitatul pe perei). Dup ce ai fcut acea monitorizare v recomand s facei o analiz referitor la cum v petrecei timpul. Ce avei tendina s facei pe parcursul zilei, cnd sunt perioadele productive i cnd sunt perioadele de nu am nici un chef , cnd avei nevoie de pauze, cnd gndii cel mai bine, cnd suntei cei mai creativi, etc. A doua etap n profilul personal este s vedei de ce modificai planul.

Antonia Onaca

PLANIFICAREA CONFORM CU PROFILUL

Cunos cnd prof ilul p ers onal ne

anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub form de antreprenor, intraprenor i antreprenor din nou

www.todaysoftmag.ro | nr. 10/Aprilie, 2013

49

comuniti

WordPress i spiritul comunitii

binerea succesului cu uurin i rapiditate - departe de a fi un scop care ar putea aparine unei comuniti - e unul dintre subiectele editoriale cel mai aprig discutate n publicaiile de business i nu numai. Desigur, ambiiile (fireti, de altfel) ale oamenilor alimenteaz acest subiect, crend, n acelai timp, i iluzia c succesul este scopul n sine, sau, pur i simplu, limita superioar la care trebuie s ajungem cu orice pre. Succesul e o destinaie, un achievement absolut.

Ce-ar putea nsemna s ai succes? Ar putea foarte bine s nsemne c proiectul sau ideea la care lucrezi a atins acel stadiu care manifest potenialul de a evolua pe termen lung. Succesul se materializeaz pas cu pas, cu fiecare grani pe care o strbate n procesul de evoluie al ideii. Ca exemple din viaa real: succes poate fi atunci cnd observi c echipa n care lucrezi se mrete, c proiectele la care lucrai mpreun sunt din ce n ce mai diverse i mai complexe, sau cnd ideea ta schimb ceva. n final, aceast perspectiv asupra succesului poate aparine unei comuniti, a unui grup de oameni care au unul sau mai multe scopuri n comun. WordPress e una dintre acele organizaii al crei mod de funcionare demonstreaz c aceast perspectiva e realist i, mai mult, c aceasta poate aduce oameni mpreun pentru a construi o reea (o comunitate) cu influen la nivel global. WordPress exploreaz pavilionul oamenilor curioi din lume, sfidnd, prin modul su de funcionare i dezvoltare, tendina natural a acestora - aceea de a dobndi cunotine pe care s le foloseasc strict n interesul propriu. Astfel, WordPress se numr printre primele organizaii online care duc mai departe simul comunitii, prin intermediul platformei pe care a dezvoltat-o.

Ce este simul comunitii?

Ce este WordPress?

WordPress este un software scris n PHP (bazat pe MySQL) de ctre i pentru comunitate. Fiind un sistem de administrare a coninutului (CRM), acesta este folosit n principal pentru publicarea de coninut. Accesul la platform este gratuit, iar accesul la codul surs este, de asemenea, deschis oricui - fiind un software tip open-source.

Wo r d P r e s s nseamn comunitate fr frontiere; nseamn colaborare, interaciune, readucnd n vedere importana coninutului de calitate pe Internet. WordPress ncurajeaz ceea ce am putea numi, astzi, collaborative knowledge, iar exponentul su - codul - este, n acelai timp, exponentul inovaiei n societatea tehnologizat. Mai mult, WordPress este deschidere. Este deschiderea comunitilor de programatori care vor s mbunteasc lucrurile constant, dar i deschiderea ctre masa critic de oameni denumit blogosfer. WordPress ne inspir i, prin cele peste 60 de milioane de bloguri gzduite, ne ofer o lecie preioas despre puterea i valoarea comuniti. Ne nva c dincolo de cod stau oamenii. Oameni care au acel sim al comunitii. i c e ns e am n , totu i, s i mu l comunitii? Simul comuniti pornete de la un framework de gndire pe care i-l seteaz oamenii n momentul n care decid s fac parte i s se implice ntr-o comunitate. Atributele unui astfel de framework de gndire? Ar putea fi: scopul nemijlocit al comunitii este evoluia (a sa i a proiectelor); punerea n aplicare a proiectelor pot avea impact la nivel local sau global; odat ce proiectul cu care contribui n comunitate are impact la nivel mai nalt, asemenea vor fi exigenele; plcerea de a finaliza un proiect; plcerea de a lucra mpreun cu ali oameni; un proiect al comunitii este un proiect de care vor beneficia mai muli oameni; (n cazul nostru) pasiunea pentru programare;

Aceste principii pot contribui la creterea comunitii, la adeziunea acesteia, dar i la meninerea clar a scopurilor comunitii, care s fie urmrite de fiecare membru n parte. Pe de alt parte, ntr-o comunitate evoluia unui proiect poate fi mai rapid, datorit diversitii expertizelor sau nivelurilor de cunoatere. ntr-o comunitate se pot face mai multe mpreun - i probabil acesta este unul din cele mai importante aspecte.

WordCamp Transylvania

n acelai spirit WordPress, ntre 1 2 iunie, la Cluj-Napoca, va avea loc conferina despre WordPress WordCamp Transylvania. Pe nt r u d o u z i l e , Wo r d C a mp Transylvania va fi un punct de ntlnire al comunitii WordPress romneti de la programatori cu experien, studeni sau designeri pasionai de WordPress. Evenimentul mizeaz pe schimbul de idei dintre participani i invitai: prima zi va fi dedicat conferinei propriu-zise, iar a doua unui HackDay. Conferina are scopul de a aduce mai aproape de comunitatea din Transilvania (i nu numai) spiritul colaborativ specific WordPress. Iniiativa a fost aplaudat de ctre membri ai echipei globale WordPress din ntreaga lume, dintre care civa au acceptat s fac parte din eveniment. Mai multe detalii despre eveniment putei afla accesnd: http://2013.transylvania.wordcamp.org/

Cornelia Stan corneliastn@gmail.com Copywriter/Organizator WordCamp Transylvania

50

nr. 10/Aprilie, 2013 | www.todaysoftmag.ro

sponsori

powered by

S-ar putea să vă placă și