Documente Academic
Documente Profesional
Documente Cultură
Today Software Magazine N10/2013
Today Software Magazine N10/2013
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
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
30 NoSQL Introducere
Radu Vunvulea
48 Sindromul Superman
Antonia Onaca
editorial
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 !
Ovidiu Man
Lista autorilor
Cristina Donea
mmackay@neverfailgroup.com CEO @ Neverfail Group. HR Specialist @ ISDC cristina.donea@isdc.eu
Mircea Mare
Traian Frtean
Radu Vunvulea
Marius Mornea
marius.mornea@todaysoftmag.com Fost senior software developer in cadrul Nokia, n prezent fondatorul platformei Mintaka Research
Bogdan Fluera
Marius Mocian
Gloria J. Miller
Mihai Ttran
Microsoft MVP CodeCamp
mihai@itcamp.ro
Daniela Haliga
Business Analyst @ Endava Iai
daniela.haliga@endava.com
Co-fondator ITCamp
Radu Olaru
Lucian Ciufudean
Server Automation Functional Architect @ HP Software Cluj
lucian.ciufudean@hp.com
Tudor Damian
tudy@itcamp.ro Microsoft MVP ITSpark Co-fondator ITCamp
Reproducerea parial sau total a articolelor din revista Today Software Magazine fr acordul redaciei este strict interzis. www.todaysoftmag.ro www.todaysoftmag.com
Ctlin Roman
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
startups
i aa a nceput...
Mircea Mare
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,
Duminic.
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.
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
2
startuplive.in/cluj-napoca/2/
Klain
istorie
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
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
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
11
business
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.
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.
12
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.
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
programare
Radu Olaru
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);
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
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);
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.
16
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
17
tehnologii
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
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
programare
Knall Andreas
Java Team Lead @ .msg systems
knall.andreas@msg-systems.com
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 }
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
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.
23
management
Daniela Haliga
Business Analyst @ Endava Iai
daniela.haliga@endava.com
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,
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
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.
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.
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
HR
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;
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
29
programare
NoSQL
Introducere
Radu Vunvulea
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
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
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
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
programare
Traian Frtean
Bogdan Fluera
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
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
management
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
sau
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();
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()));
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
38
programare
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).
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
business
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
management
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.
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.
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
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
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
business
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
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
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
anto@aha-ha.com de aproape 10 ani trainer, psiholog, consultant sub form de antreprenor, intraprenor i antreprenor din nou
49
comuniti
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 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/
50
sponsori
powered by