Sunteți pe pagina 1din 50

Nr. 27 Septembrie 2014 www.todaysoftmag.ro www.todaysoftmag.

com

TSM

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

JavaFX n Platforma Java Standard 8

Avantajele folosirii SVG

Interviu cu Chris Heilmann de la Mozilla


Time Dude, un joc 3D cross
mobile platform
Cum poi testa conferine de testare
Cum se detecteaz fraudele
folosind Titan
Cu Smilestone la Imagine Cup 2014
Tranziia de la QA la BA

Invitaie la a III-a ediie a conferinei


Gemini Solutions Foundry
Livrarea continu
Integrarea client server
cu ajutorul RestKit
Pragmatism n programare
Clean Code Functions
Gogu n oc ...cultural

6
Cluj IT Days 2014, www.itdays.ro
Ovidiu Man

8
Invitaie la a III-a ediie a
conferinei Gemini
Solutions Foundry
Ovidiu Man

9
Cu Smilestone la
Imagine Cup 2014
Dan Suciu

12
Interviu cu Chris Heilmann
de la Mozilla
Ovidiu Man

14
Visul mplinit al unei coli de
var - Fortech hiSchool
Training Program
Sorina Mone

16
How to Web 2014:
un nou nceput

25
Livrarea continu
Dan Danciu

29
Detectarea
fraudelor
cu Titan
Florin Mguran

31
Pragmatism n
programare
Mihnea Lazr

34
Clean code
Funcii
Radu Vunvulea

36
Integrarea client server
cu ajutorul
RestKit
Mihai Fischer

38
Cum poi testa
conferine de testare

Irina Scarlat

Alexandra Casapu

17
Invitaie la TYPO3
East Europe 2014

41
Tranziia de la
QA la BA

Daniel Homorodean

19
JavaFX n Platforma
Java Standard 8
Silviu Dumitrescu i Diana Blan

22
Avantajele folosirii SVG
(Scalable Vector Graphics)
Peter Krejcik

Monica Petraru

42
Time Dude, un joc
3D cross mobile platform
Liviu Boar

44
Cum batei palma
pe un contract
Claudia Jelea

46
Gogu n oc... cultural
Simona Bonghez, Ph.D.

editorial

Ovidiu Man

ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine

ncepem luna septembrie cu lansarea oficial a evenimentului anual organizat


de revista Today Software Magazine. Este vorba bineneles de IT Days 2014,
www.itdays.ro, 25-26 noiembrie, Cluj-Napoca, care v propune o ntlnire cu
profesionitii locali, colaboratorii TSM precum i o serie de invitai speciali din ar i
strintate. Tema general va fi Cum s construim un produs? aceasta fiind i titlul crii
ce va fi lansat n cadrul evenimentului i distribuit tuturor participanilor. Autorii
crii vor fi cei care prezint n cadrul evenimentului, dnd astfel ocazia participanilor
s citeasc mai multe detalii despre subiectele preferate. V invit s participai la acest
eveniment, mai multe informaii fiind disponibile n articolul dedicat special IT Days
din acest numr.
Un alt eveniment important din aceast lun va fi lansarea din Trgu Mure, programat s aib loc n 24 Septembrie. Aceast lansare este organizat mpreun cu cei
de la Cluj IT Cluster i gzduit de msg systems. O parte dintre speakeri vor fi locali
i din Cluj. Invitat special va fi prof. Horvath de la EIT ICT Lab Budapesta. Asemenea
evenimentului de lansare desfurat la Braov, cel din Trgu Mure se dorete a fi expresia dorinei de a promova mai mult oportunitile romneti n cadrul comunitii IT
din Transilvania.
Revenind la revist, am publicat recent un preview al noului look & feel al revistei.
Mulumim cu aceast ocazie echipei Subsign, www.subsign.co, pentru designul noului
TSM, ale crei profesionalism i inovaie i recomand pentru tot ce nseamn proiectele de web design . Este o echip tnr din Iai pe care am cunoscut-o cu ocazia
evenimentului de lansare de aici. Ne-au surprins de altfel implicarea lor, dorina de a
ajuta i de a face lucruri noi.
Facem acum o trecere n revist a articolelor din acest numr. ncepem cu evenimentele speciale: IT Days 2014 i Gemini Solutions Foundry la care v invitm s participai.
Tot n aceast arie se integreaz i articolul ce urmrete parcursul echipei Smilestone
coordonat de Dan Suciu la competiia Microsoft Imagine Cup din 2014. Ne face plcere
s anunm i ediia din acest an a How To Web, cel mai mare eveniment de antreprenoriat i leadership din IT din romnia. Articolele tehnice pe care vi le propunem sunt
JavaFX n Platforma Java Standard 8 - prezint evoluia i folosirea JavaFX, Avantajele
folosirii SVG (Scalable Vector Graphics), Cum s detectm tentativele de fraud folosind
Titan, Integrerea client server cu ajutorul RestKit, Clean Code Functions o continuare a
seriei de articole despre cum s scriem un cod curat. Pragmatism n programare pornete
de la analogia cu geamurile sparte aplicat meninerii codului existent. Experien de a
vorbi n cadrul unor mari evenimente de testare i o ncurajare i pentru alii de a face
la fel a fost detaliat n Ce poi nva din vorbitul n public - experienele unui tester.
De altfel, experiena de tester te poate ajuta s te mui ntr-un domeniu nou: Tranziia
de la QA la BA. De asemenea, pentru acest domeniu, v recomandm Primul pas n
analiza de business. ncheiem prezentarea coninutului tematic cu menionarea unui
nou articol dedicat lui Gogu care semnaleaz importana diferenelor culturale lor n
managementul proiectelor.
V dorim o lectur plcut !!!

Ovidiu Man

Fondator al Today Software Magazine

nr. 27/2014 | www.todaysoftmag.ro

Redacia Today Software Magazine


Fondator / Editor in chief: Ovidiu Man
ovidiu.matan@todaysoftmag.com
Editor (startups i interviuri): Marius Mornea
marius.mornea@todaysoftmag.com
Graphic designer: Dan Hdru
dan.hadarau@todaysoftmag.com
Copyright/Corector: Emilia Toma
emilia.toma@todaysoftmag.com
Traductor: Roxana Elena
roxana.elena@todaysoftmag.com

Lista autorilor
Dan Suciu

dan.suciu@3pillarglobal.com
Director of Technical Training
@ 3Pillar Global

Daniel Homorodean

daniel.homorodean@arxia.com
CEO
@ Arxia

Florin Mguran

Irina Scarlat

Senior Java Developer


@ Betfair

PR Manager
@ How to Web & TechHub Bucharest

Dan Danciu

Mihnea Lazr

Software Architect
@ ISDC

Java Developer
@ msg systems

Peter Krejcik

Sorina Mone

florin.maguran@betfair.com

dan.danciu@isdc.eu

irina.scarlat@howtoweb.co

mihnea.lazar@msg-systems.com

Reviewer: Tavi Bolog


tavi.bolog@todaysoftmag.com
Reviewer: Adrian Lupei
adrian.lupei@todaysoftmag.com
Contabil : Delia Coman
delia.coman@todaysoftmag.com
Produs de

Today Software Solutions SRL


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

peter.krejcik@yardi.com
Web Designer
@ Yardi Romnia

simona.bonghez@confucius.ro
Speaker, trainer i consultant n
managementul proiectelor,
Owner al Colors in Projects

Mihai Fischer

mihai.fischer@gmail.com
iOS developer
@ Dens.io

Claudia Jelea

Silviu Dumitrescu

Avocat & Consilier in domeniul marcilor


@ Jlaw

Consultant Java
@ msg systems Romania

claudia.jelea@jlaw.ro

silviu.dumitrescu@msg-systems.com

Alexandra Casapu

Liviu Boar

Software Tester
@ Altom Consulting

2d/3d artist, animator


@ REEAnimation

alexandra.casapu@altom.ro

monica.petraru@urss.ro
Senior Business Analyst
@ UNIQA Raiffeisen
Software Service

Reproducerea parial sau total a articolelor


din revista Today Software Magazine
fr acordul redaciei este strict interzis.

Marketing manager
@ Fortech

Simona Bonghez, Ph.D.

Monica Petraru

Copyright Today Software Magazine

sorina.mone@fortech.ro

liviu.boar@reea.net

Diana Blan

Diana.Balan@accesa.eu
Java developer
@ Accesa

Ovidiu Man

ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine

www.todaysoftmag.ro
www.todaysoftmag.com

www.todaysoftmag.ro | nr. 27/septembrie, 2014

eveniment

Today Software Magazine v invit n 25-26 noiembrie la


a doua ediie a Cluj IT Days 2014, www.itdays.ro

venimentul IT days a fost organizat anul trecut de revista Today Software Magazine ca o ncercare de a-i reuni pe aproape
toi cei care se implic n dezvoltarea comunitii IT locale. Fiecare dintre acetia sunt animai, dincolo de specificul domeniului n care activeaz, de interese fundamentale asemntoare, respectiv eficien maxim i susinerea comunitii IT
locale. Conturarea unor principii de baz care s devin repere n dezvoltarea IT-ului local, a fost unul dintre principalele obiective
pe care le-a intit evenimentul.
Anul acesta, ne propunem s realizm
nc o ediie a IT Days, impulsionat de
acelai obiectiv al coagulrii unor direcii
de dezvoltare. Evenimentul care se va
desfura n 25-26 noiembrie va oferi
ocazia de a-i ntlni invitai speciali precum i pe cei mai buni specialiti care au
publicat de-a lungul anului n revista noastr. Un fapt inedit este proiectul editrii
crii Cum s construieti un produs, n
care toi cei care vor susine o prezentare
n cadrul evenimentul vor avea ocazia s
scrie un capitol. Aceasta va fi inclus n
preul biletului conferinei IT Days 2014,
participanii avnd ocazia s citeasc mai
multe detalii despre domeniile de interes.

este despre cum s construim un produs. Aadar, aceast carte completeaz


activitatea evenimentului, pentru c se
adreseaz programatorilor, startup-urilor
dar i companiilor, propunndu-i s aib
rolul unui ghid al crerii de produse.
nainte de a prezenta o parte dintre cei
ce vor prezenta la IT Days 2014, vom face o
recapitulare a IT Days 2013. Evenimentul a
fost o ocazie de a-i reuni pe aproape toi cei
care se implic n dezvoltarea comunitii
IT din Cluj: reprezentani ai businessului
local, startup-uri locale, incubatoare de
startup-uri, Cluj IT Cluster , cercettori de
la Universitatea Tehnic i de la Institutul
de tiin i Tehnologie i autoritile
locale prin prezena primarului Emil Boc.
Ali doi invitai speciali din Europa : Tine
Thygesen, CEO Everplaces i Eduardo
Mendez Polo, head of IT Cloud, Telefonica
Spain.
Ediia 2014 a IT Days, va aduce un
specialist Java de top n Cluj. Este vorba
de Peter Lawery, deintor al platformei
Vanila Java 1, avnd rangul trei pentru
Java i doi pentru concuren n reeaua
StackExchange din care face parte i
StackOverflow2.

Iulian Iuga

Accesa, care ne va vorbi despre reeta sa


de succes n ceea ce privete compania pe
care o conduce precum i despre viziunea
sa asupra evoluiei pieei de IT romneti.

Dan Ionescu

Dan Ionescu, un cunoscut colaborator


al revistei din perpectiva studiilor de HR
realizate asupra comunitii de IT clujene
va avea ca subiect al prezentrii, perspective asupra Leadership-ului romnesc.

Cartea de altfel se va remarca prin


diversitatea subiectelor, avnd capitole
Peter Lawrey
de la startups, leadership, management,
Silviu Dumitrescu
proiecte de cercetare, trenduri i pn la
subiecte tehnice de programare sau testare.
n seciunea de Trends & Leadership
Silviu Dumitrescu, un colaborator conDincolo de aceast varietate, se impune l avem ca invitat pe Iulian Iuga, CEO secvent al revistei ne va vorbi despre Java 8.
totui o tematic principal, subordonat
1 vanillajava.blogspot.ro
Pe Silvia Rusanu am invitat-o la evede altfel nsei temei evenimentului care
2 stackexchange.com/users/23121/peter-lawrey
niment n special pentru vizuinea tehnic

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


IT recunoscut ca avnd una din cele mai Telecomunicaii, Master n Tehnici
accelerate creteri pe piaa din Romnia.
Avansate n Telecomunicaii i Doctor n
Inginerie Electronic i Telecomunicaii
de la Universitatea Tehnic din ClujNapoca n 1995, 1996, respectiv n 2002.
Din 1996 este angajat la Departamentul
de Comunicaii al Universitii Tehnice
din Cluj-Napoca, unde n prezent este
Silvia Rusanu
confereniar. Domeniile de cercetare de
interes implic tehnici de codare a canaasupra Big Data i pasiunii ei pentru algoSebastian Big
lului, tehnici de codare a reelelor de date,
ritmic i inteligen artificial.
reele radio, tehnici de comunicaii prin
Sebastian Big este interaction designer, cooperare, arhitecturi avansate de reele de
dar de formaie filozofic i cu traduceri comunicaii. El a fcut parte din grupurile
din Virilio, Baudrillard, Derrida & Stiegler de cercetare ale programelor COST 289 i
i un doctorat n Comunicare terminat COST 2100, a fost membru al echipelor de
prematur. El i valorific talentul pe piaa cercetare ale proiectelor FP7 4WARD i
romneasc de IT, ncercnd s pun FP7 CODIV i a fost coordonator local al
n valoare metodele sale de clarviziune proiectului FP7 UCONNECT.
ntr-un sistem deocamdat cantonat n
factualitatea imediat.
Sergiu Damian
Sergiu Damian este un architect
software experimentat, cu o profund
nelegere a design-ului software, practicilor i proceselor de dezvoltare i, nu
n ultimul rnd, al dinamicii umane din
echipe. Dup treisprezece ani petrecui n
diverse roluri n companii locale de outsourcing a ales s devin un arhitect software
Dr. ing Bogdan Rus
independent, ajutnd diveri clieni n a-i
atinge obiectivele. Activeaz n diverse
Dr.ing. Bogdan Rus este ef lucrri
comuniti IT, ofer asisten studenilor (lector) n cadrul Universitii Tehnice din
i i nva pe alii despre software Cluj-Napoca, Facultatea de Electronic,
architecture.
Telecomunicaii i Tehnologia Informaiei.
Devenind din anul 2008 membru al colectivului UC Labs (Unified Communications
Laboratories) din cadrul aceleiai faculti,
Bogdan Rus a participat n proiecte de
cercetare internaionale ce aveau ca tem
principale tehnici de comunicaii inInternetul viitorului. Rezultatul ntregii
activiti de cercetare a fost validat n
diverse articole publicate la conferine
Andreea Prvu
internaionale i reviste de specialitate.
Andreea Prvu este absolvent a mas- Adiional activitilor de cercetare, Andrei
teratului de Psihologia Resurselor Umane. Bogdan Rus este implicat i n activiti
Demersul ei profesional a debutat n cali- didactice cu studenii nscrii la cursurile
tate de HR Generalist la o companie de de licen i masterat.
logistic - aici descoperind i dezvoltnd
o pasiune pentru aria de Resurse Umane.
Experiena international ca membru al
echipei globale de Talent Management din
cadrul unei companii de telecomunicaii, a
contribuit la dobndirea i mbuntirea
cunotintelor n acest domeniu. n plus,
aceast context a avut un impact pozitiv
n momentul n care a decis s incerce
Zsolt Alfrd Polgr
domeniul IT, ca freelancer. ns, din
2012, Andreea este Senior Recruiter la
Zsolt Alfr d Polgr a ob inut
Endava - Cluj, una dintre companiile de diploma de Inginer cu specializarea

Simona Bonghez

Simona Bonghez colaboreaz cu revista


TSM prin cunoscuta i amuzant rubric
dedicat lui Gogu. Dar Simona Bonghez
este cunoscut mediului IT romnesc n
special pentru raining-urile de project
management, pregtirile pentru certificarile PMI, remarcndu-se pe plan naional
drept o profesionist n tot ce nseamn
managementul proiectelor. Cu o bogat
experien de speaker la conferinele PMI
internaionale, Simona ne face plcerea de
a participa la a doua ediie a IT Days 2014
n aceast calitate de speaker.

Am prezentat doar o parte a conferinei


IT Days 2014, mai multe detalii putei
gsi pe www.itdays.ro. V pregtim multe
surprize, inclusiv un workshop de Java
Performance i unul de Management.
Ovidiu Man

ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine

www.todaysoftmag.ro | nr. 27/septembrie, 2014

eveniment

Invitaie la a III-a ediie a conferinei


Gemini Solutions Foundry

rupul de firme Gemini Solutions mpreun cu Gemini Foundry Inc, organizeaz n data de 23 Septembrie 2014, la Bucureti, a
treia ediie a Conferintelor Foundry, avndu-l ca invitat special pe Romain Lavault, partener Partech Ventures. Aceast ediie
a evenimentului aduce un nou investitor important n Bucureti pentru startup-urile romneti dup ce n ediiile anterioare
am avut ocazia s i vedem pe Nicolas El Baze, partener Partech Ventures i pe Romain Niccoli, co-fondator i CTO Criteo, una dintre
cele mai importante startup-uri europene.
Pentru cei interesai, accesul se face de tip seed anual avnd valoarea medie de
Ceea ce cutm sunt startup-uri care pot
pe baz de invitaie, iar pentru obinerea 500,000 dolari1. Antreprenorii prezeni la fi scalabile la nivel global, care favorizeaz
acesteia v invit s accesai site-ul Gemini eveniment vor avea, de asemenea, posibil- schimbarea i revoluia pieei. Noi le vom
Solutions Foundry www.gemsfoundry. itatea de a-i prezenta ideile de business, ajuta s se pregteasc pentru investiii i s
com. Locul de desfurare este etajul 34 al ntr-o sesiune interactiv de pitching. i dezvolte infrastructura care le va permite
Sky Tower, n Bucureti, n data de 23 sep- Astfel, n a doua parte a conferinei, vor s se reintegreze n Silicon Valley, n timp ce
tembrie de la ora 16:30.
fi expuse cele mai interesante proiecte ale i pstreaz echipele tehnice n Romnia.
participanilor nscrii.
Suntem interesai n mod special de domenii precum cel al mobilelor, Internetul
obiectelor, big data, domeniul social, comer
electronic, pli i multe altele. Atept cu
interes s demonstrm acest model i s
ajutm antreprenorii romni s obin succes la scar mondial.

Gemini Foundry Inc, incubator destinat


startup-urilor din Romania
Pentru a veni n sprijinul antreprenorilor din mediul IT din Romnia, Gemini
Foundry Inc, un incubator destinat
exclusiv startup-urilor IT din Romnia,
organizeaz o serie de conferine ai cror
invitai speciali sunt antreprenori i
investitori strini, ce activeaz n companii puternice i competitive la nivel
internaional.
Theo Nissim
Romain Lavault

Romain Lavault, invitatul special al


conferinei, este general partner i head of
seed/early stage fund la Partech n Paris.
Partech Ventures este una dintre cele mai
puternice companii de investiii de pe
pieele din Statele Unite i Europa. Fondat
n 1982, Partech are acum birouri n San
Francisco, Paris i Berlin, dispunnd de
fonduri de peste 650 milioane $ destinate,
cu precdere, ideilor de afaceri din domeniul IT. De-a lungul anilor, compania a
sprijinit zeci de iniiative business, devenite
adevrate poveti de succes. Conform ultimului articol TechCrunch despre Partech,
ultimul fond de investiii creat, Partech VI,
conine un fond ventures de 175 milioane
de dolari i 40 milioane de dolari alocate
pentru un fond seed. Se ateapt aadar n
urmtorii ani s se realizeze 8-12 investiii

Theo Nissim, CEO-ul grupului de


firme Gemini Solutions ne-a transmis
viziunea sa despre aceast iniiativ:
Am nceput Gemini Foundry pentru
a crea o punte de legtur ntre tinerii
antreprenori romni i Silicon Valley, investitorii, mentorii i consilierii si pentru
multe domenii de activitate juridic,
finane, marketing, etc. . Grupul Gemini
are un ecosistem extins care include lideri
experi, ndrumtori n aceste domenii.
Viziunea noastr este aceea c putem
revoluiona piaa i reui s obinem succes
prin ndrumarea i accelerarea startup-urilor romneti i punerea lor n legtur cu
parteneri de afaceri adecvai i membrii ai
ecosistemului nostru.
1 t e c h c r u n c h . c o m / 2 0 1 3 / 1 0 / 0 9 /
partech-venture-and-seed/

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Mai mult, Gemini Foundry ofer gratuit echipelor acceptate n programul de


incubare spaiu de birouri la cheie, ajutor n managementul afacerii, mentorship
tehnic, consultan financiar i legal, dar
i conexiuni cu fonduri de investiii din
Silicon Valley. Aceste conexiuni se fac n
mod personalizat pentru echipele ce vor
prezenta att ideea lor ct i progresul efectuat n cadrul programului de incubare.
Ovidiu Man

ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine

concurs

Cu Smilestone la Imagine Cup 2014

magine Cup este o competiie anual IT care se adreseaz studenilor i elevilor din
ntreaga lume. Competiia este organizat de Microsoft i are ca scop dezvoltarea de
soluii software care s vizeze cele mai importante probleme ale omenirii i care au anse
reale de a deveni produse soft comerciale.

Dan Suciu

dan.suciu@3pillarglobal.com
Director of Technical Training
@ 3Pillar Global

Putem spune fr a grei c Imagine Cup


este cea mai important competiie de acest
gen, lund n considerare numrul de ri i
echipe participante, calitatea soluiilor dezvoltate i, nu n ultimul rnd, premiile puse
n joc. Evoluia competiiei este de asemenea
interesant: dac la prima ediie, n 2003 au
fost nscrii n total 1000 de competitiori
din 25 de ri, anul acesta s-a nregistrat un
record de participare cu 358.000 de studeni
nregistrai reprezentnd 190 de ri sau regiuni. Numrul total de studeni nscrii din
2003 fiind de 1.75 milioane!.

Descriere general

De-a lungul a doisprezece ani de zile,


Imagine Cup s-a derulat pe mai multe seciuni i a cunoscut diverse formate. n ultimele
dou ediii fiecare dintre echipele participante au putut veni cu soluii n una dintre
urmtoarele categorii: Innovation, World
Citizenship i Games.
Premiile puse n joc n acest an, pentru fiecare dintre cele trei categorii, au fost
consistente:
Locul 1: 50.000 $
Locul 2: 10.000 $
Locul 3: 5.000 $
n plus, ctigtoarele locurilor nti pentru fiecare dintre categorii urmau s participe
la o rund final n urma creia se lua decizia
cine va intra n posesia cupei, bonusul fiind
o sesiune de mentoring privat cu Bill Gates.
Pe lng cele trei categorii menionate
mai sus au mai fost i alte ntreceri la care
echipele se puteau nscrie, ns ele sunt de o
mai mic importan ca impact sau ca valoare
a premiilor puse n joc. n 2014 s-a mai putut
concura pentru: Apps For Office Challenge,
Visual Studio Online Boost, Windows &
Windows Phone Challenge, Brain Games 2.0,
Project Blueprint Challenge.
n primii unsprezece ani competiia

Imagine Cup a fost organizat n diferite


orae rspndite pe ntregul glob: Barcelona
(2003), So Paulo (2004), Yokohama (2005),
Delhi (2006), Seoul (2007), Paris (2008),
Cairo (2009), Varovia (2010), New York
(2011), Sidney (2012) i St. Petersburg
(2013). Din acest an Imagine Cup s-a ntors
acas la Seattle, Washington, acolo unde se
afla i sediul central al Microsoft, ora care va
continua s fie gazda competiiei i n urmtorii ani.
Spre deosebire de o bun parte din ediiile anterioare, n acest an nu a fost anunat
o tem generic la care s se ralieze soluiile prezentate. Practic, oricine avea o idee ce
considera c merit s fie dezvoltat i transformat ntr-un produs cu succes i impact
pe piaa global putea s se nscrie la seciunea care i se prea cea mai potrivit. Evident,
avnd n vedere c Imagine Cup este organizat de Microsoft, exista cerina minim ca
soluiile s fie dezvoltate folosind tehnologii
Microsoft (ns nu exclusiv).
n funcie de popularitatea competiiei,
n fiecare ar, se puteau organiza faze locale
sau naionale, avnd drept scop identificarea
unei echipe care s reprezinte ara respectiv
la urmtorul nivel pe fiecare dintre seciunile Innovation, World Citizenship i Games.
Urmtorul nivel era o faz regional unde era
selectat un numr fix de soluii ce urmau s
ajung n finala mondial de la Seattle.
Chiar dac anumite element de organizare i structur se modific de la an la an,
acestea nu sufer modificri ntr-un mod
fundamental. V oferim cteva informaii
generale:
Un nou sezon Imagine Cup ncepe de
obicei n septembrie/octombrie (la nceput de an colar i universitar) cnd fiecare
dintre cei care doresc s participe ncep
s formeze echipe i s intre n sesiuni de
brainstorming pentru a selecta ideea central a viitoarei soluii. Cu echipa format

www.todaysoftmag.ro | nr. 27/septembrie, 2014

concurs
Cu Smilestone la Imagine Cup 2014
i soluia ct de ct schiat, ei se pot
nscrie pe site-ul www.ImagineCup.com
Anumite universiti pot organiza
competiii interne, locale, atunci cnd
din instituiile respective se nscriu
mai multe echipe n competiie. n trecut att Universitatea Babe-Bolyai ct
i Universitatea Tehnic au organizat
astfel de sesiuni, echipele situate pe primele 2-3 locuri urmnd a se califica la
faza naional. n 2014 acest lucru nu
s-a repetat i s-a nceput direct cu o faz
online, de selecie a soluiilor ce urmau
s participe la faza naional (cte trei
soluii pentru fiecare seciune). Pentru
fiecare soluie echipele participante
trebuiau s trimit o documentaie i
orice materiale (filme, kituri de instalare
etc.) care s ajute la o mai bun evaluare
(pentru acest faz soluia putea fi doar
parial implementat) .
La faza naional (desfurat n
acest an n incinta Politehnicii Bucureti)
fiecare dintre echipele calificate au avut
ocazia s-i descrie live soluia, s fac
un demo (10 minute) i s rspund la
ntrebrile juriului (n alte 10 minute).
Faza regional a fost din nou una
online, materialele menionate mai sus
fiind actualizate i trimise juriului regional. Romnia intr n regiunea Europa
Central i de Est mpreun cu alte peste
20 de ri. n urma seleciei, 6 soluii
au fost selectate pentru a merge mai
departe la Seattle.
La faza mondial au avut loc timp
de dou zile dou sesiuni de jurizare
(una de prezentare, de 10 minute i
una hands-on n care fiecare membru al
juriului putea petrece 15 minute cu soluia i putea s pun ntrebri de detaliu)
la care s-au prezentat cte 10 echipe la
seciunile Innovation si Games i 14
echipe la seciunea World Citizenship.

Criteriile de jurizare n acest an au fost


urmtoarele:

Concept (15%) problem/nevoie


clar definite, soluie concis explicat, clieni poteniali precis delimitai.
Innovation (50%) inovaia e privit din mai multe perspective: felul n
care a fost rezolvat problema, modul de
interfa cu utilizatorii, rezolvarea unei
probleme fr soluie n prezent etc.
Execution (20%) calitatea aplicaiei
software din punct de vedere a interfeei,
vitezei de execuiei, securitii etc.
Feasibility (15%) gradul de credibilitate cu privire la potenialul de succes
al aplicaiei.

10

Standul SMT la Museum of History and Industry (MOHAI), Seattle

Participarea Romniei

Romnia a avut de-a lungul timpului o prezen la Imagine Cup presrat


cu numeroase premii la diverse seciuni n special la IT Challenge, Embedded
Development i Digital Media, culminnd
cu ctigarea cupei n anul 2009 de ctre
echipa Sytech din Iai.
Clujul a fost prezent cu soluii interesante n special n seciunea Software
Design (considerat pn acum doi ani
cea mai important seciune, cea a crui
ctigtor primea i cupa imaginaiei).
Una dintre membra echipei participante
n 2010 i 2011, Simplex, a acordat un
interviu revistei Today Software Magazine
despre soluia lor prin Mira.
O alt echip din Cluj a reprezentat
Romnia i la finala de la Seattle din acest
an. Echipa se numete Smile Technology
(SMT) i este format din trei studeni ai
seciei Informatic Englez a Facultii de
Matematic i Informatic a Universitii
Babe-Bolyai: Bogdan Mursa, Rare Urdea
i Bogdan Pop (n ordine n care apar n
imaginea de mai jos) echip pe care am
avut plcerea s o coordonez. Soluia propus de ei, Smilestone, este o aplicaie ce
implementeaz cu ajutorul unui dispozitiv
Kinect o serie de exerciii utile n procesul
de recuperare a limbajului pentru persoanele ce au pierdut capacitatea de a vorbi n
urma unui atac cerebral.
Ideea soluiei a venit n urm cu
aproape trei ani cnd am luat pentru prima
dat legtura cu doamna doctor psiholog tefania Budacu. Aceasta colabora la
vremea respectiv cu spitalul Floreasca
i a auzit de proiectul Mira de la televizor. Proiectul Mira era tot o soluie de

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

recuperare fizic dar orientat pe membrele superioare i inferioare. Doamna


doctor ne-a explicat atunci c primul pas
de recuperare ce trebuie fcut n cazul
persoanelor care au suferit o paralizie n
urma unui accident vascular cerebral era
cel de recuperare a capacitii de comunicare (termenul menionat de dnsa atunci
a fost demutizare).
Pentru acest etap ns nu exista nici
o soluie software care s fie non-invaziv.
O astfel de soluie ar fi permis unui pacient s continue exerciiile de recuperare i
n afara edinelor cu medicul, i astfel s
fie scurtat perioada de refacere, care n
general este lung i anevoioas. n acest
domeniul prerile sunt mprite: unii
medici susin c rezultatele activitii de
recuperare se vd n fazele timpurii dup
ce a avul loc atacul cerebral, i cu ct trece
mai mult timp, probabilitatea ca pacientul s reueasc s revin la modul n care
comunica sau se mica nainte de accident scade simitor. Pe de alt parte exist
medici care insist pe faptul c efecte ale
recuperrii pot s apar brusc i dup 10
ani de zile. Nu dorim s intrm n detalii de natur medical i terapeutic ns
merit menionat faptul c, indiferent
de opinii, toi sunt de acord c timpul
petrecut n activiti de recuperare are o
influen determinant n revenirea abilitilor iniiale ntr-un procent ridicat.
n acest moment un terapeut petrece n
jur de o or cu un pacient. Existena unui
software dedicat acestei recuperri ar putea
face ca timpul petrecut de pacient n exerciii de recuperare s creasc la trei ore. Un
timp de recuperare de trei ori mai mare nu
poate face dect s sporeasc ansele de

TODAY SOFTWARE MAGAZINE


reuit.
n plus, Smilestone memoreaz seturi
de date care pot fi extrem de utile unui
terapeut pentru a evalua starea curent,
progresul nregistrat i elementele pe care
trebuie insistat n continuare.
Microsoft Kinect este un dispozitiv
fr de care ncercarea de a construi un
sistem de recuperare non-invaziv ar fi
fost imposibil. Fiind construit n primul
rnd ca o interfa natural pentru diferite
jocuri, acesta poate detecta pri ale corpului i poate determina micarea acestor
pri n timp real.
Smilestone avea nevoie n special de
detectarea micrilor muchilor feei.
Unele dintre funcionalitile necesare,
cum ar fi detectarea micrii gurii i a
buzelor, era deja implementat n SDK.
Din pcate ns interpretarea acestor micri era viciat de faptul c de fiecare dat
datele veneau simetrice pe baza unei medii
fcute ntre cele dou jumti. O alt provocare a constat n posibilitatea detectrii
micrilor limbii atunci cnd aceasta era
scoas n afara gurii. Nefiind nimic implementat n acest sens, cei din echipa Smile
Technology au implementat un algoritm
de la zero care, rafinat n mai multe etape,
s-a dovedit a avea o acuratee foarte bun.
Acurateea de detectare a limbii a
fost att de bun nct unul dintre membrii juriului a sugerat o deviere radical
de la subiectul tratat de Smilestone la
dezvoltarea unei interfee non-invaziv
om-calculator care s permit persoanelor
complet paralizate s utilizeze calculatorul
folosindu-se exclusiv de micrile limbii.

La festivitatea de decernare a premiilor

n loc de concluzii...

c procesul de testare va fi unul complin foarte puine cuvinte, aceasta a cat. Sperm ns ca i rezultatele s fie pe
fost soluia propus de Romnia n acest msura efortului.
an la finala mondial Imagine Cup de la
Seattle. Chiar dac nu a fost unul dintre
proiectele premiate, considerm c are un
imens potenial. Ceea ce s-a realizat pn
acum este doar un prim pas: am reuit s
construim algoritmi de detectare a primicipalilor muchi ai feei implicai n
activitatea de recuperare a limbajului.
Urmeaz implementarea unor exerciii
specifice i gsirea de parteneri ce vor dori
s se implice n etapa de testare clinic a
sistemului. Spre deosebire de alte exerciii
de recuperare, recuperarea limbajului este
complicat i delicat, de aceea anticipm

Our core competencies include:

Product
Strategy

Product
Development

Product
Support

3Pillar Global, a product development partner creating software that accelerates


speed to market in a content rich world, increasingly connected world.
Our oerings are business focused, they drive real, tangible value.

www.3pillarglobal.com

www.todaysoftmag.ro | nr. 27/septembrie, 2014

11

interviu

Interviu cu Chris Heilmann de la Mozilla

m avut plcerea de a realiza un interviu cu Chris Heilmann, Principal Developer Evanghelist la Mozilla Developer Network,
Londra. Chris va fi unul dintre principalii speakeri la IMWorld 2014, www.imworld, 8-9 octombrie, Bucureti.
Le poi spune cititorilor notri cteva cuvinte despre Mozilla Corporation?

Mozilla este o organizaie non-profit pentru pstrarea


web-ului deschis i gratuit. Aceasta nu nseamn numai c noi
construim un browser i un OS mobil, dar punem suflet ca s
aprm interesul utilizatorului. Webul este pentru toat lumea,

oriunde i scopul lui este s fac lumea mai mic i un loc mai
bun pentru a comunica unii cu alii fr griji legate de siguran
sau confidenialitate. De aceea crem servicii i produse i educm oamenii despre ce nseamn s intri online i cum s fac
trecerea de la stadiul de consumator la cel de productor. Noi
suntem aici pentru a v ajuta s intrai online fr a trebui
s subscriei la un singur ecosistem nchis sau s mprtii
informaii personale n schimbul posibilitii de a vorbi cu
familia voastr.
Firefox OS este ceva despre care nu auzim toat ziua, de
fapt, Romnia nici nu se afl pe lista locaiilor disponibile.
Putem utiliza dispozitivele noastre existente pentru a porni
Firefox OS? Ct de uor pot dezvoltatorii s scrie cod pentru
el, cci, dup cum tim, este bazat pe HTML5?
Scrierea aplicaiilor n HTML5 nseamn c putei deja
susine Firefox OS (i toate celelalte platforme). Ceea ce face
Firefox OS este s v ofere acces deplin la hardware-ul unui
telefon i astfel s faciliteze realizarea unor produse foarte
captivante. Gndii-v la el drept platforma care ndeplinete
promisiunile pe care alte platforme ni le-au fcut atunci cnd
HTML5 a fost prima dat definit. Poi ncepe s dezvoli o
aplicaie Firefox OS chiar n browser-ul Firefox acum se
transfer cu App Manager / Web IDE direct n instrumentele
dezvoltatorului. De acolo poi porni un dispozitiv simulat pe
computerul tu, care servete scopului tu n proporie de
90%. Dac dezvoltatorii doresc s aib un dispozitiv pe care
s testeze aplicaiile lor, exist dispozitivul dedicat dezvoltatorilor telefonul de referin al dezvoltatorului, Flame1.
Acesta se livreaz n ntreaga lume pentru 170$, incluznd
taxele potale i ambalajul. Este un dispozitiv de nivel mediu
care i permite s simulezi diferite specificaii ale telefonului
direct pe el. Exist o serie video care i explic cum s faci
asta.
1 bit.ly/flamedevice

12

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Dac mine va trebui s creezi ceva pentru promovarea unei
comuniti culturale locale, ce framework-uri i ce platform ai
folosi?
Aceasta depinde foarte mult de comunitate. n Statele Unite,
de exemplu, a utiliza un set de instrumente cu care oamenii sunt
obinuii. n Mozilla, am adunat instrumente variate2 care s ne
ajute. ntr-o ar care ncepe s ias n eviden, unde conectivitatea reprezint o problem mai mare sau comunitatea nu este
obinuit cu realizarea zilnic de aplicaii pentru a-i ctiga
existena, a ncepe pur i simplu prin redarea webIDE-ului ncorporat n browser sau chiar a utiliza productorul de aplicaii3
care permite oricui s i dezvolte primele aplicaii fr a fi nevoit
s aib vreun fel de cunotine legate de tehnologiile de la baz.
Cum vezi evoluia aplicaiilor web mobile versus cele native?
A paria c aplicaiile web se vor nmuli din ce n ce mai
mult n urmtoarele luni. Studii precum raportul pentru aplicaii
mobile comscore4 indic faptul c adoptarea aplicaiilor per
ansamblu este n declin, iar oamenii le folosesc pe acelea care i
ajut s fac ceva cu webul. Aceasta nseamn c interfeele de
nalt fidelitate ale aplicaiilor native nu sunt motivul principal
pentru care oamenii utilizeaz o aplicaie. Iar aplicaiile web se
pot mica mai rapid i se adapteaz mai bine la elemente din
hardware care i modific forma. Editorii de coninut deja se
ndeprteaz de aplicaiile native, dup cum am vzut exemplul
The Verge5. Cum poate cineva s se alture organizaiei Mozilla
drept voluntar i care sunt avantajele principale?
Putei accesa ceea ce v intereseaz6 i ai pornit n curs.
Principalul avantaj l constituie oamenii lng care vei lucra.
Vei ntlni oameni din ntreaga lume, vei auzi poveti despre
cum lucrul la ceva
att de simplu prec um do c ument a i a
sau raportarea unui
bug a schimbat vieile
oamenilor i le-a dat
ansa de a fi angajai de
ctre companii n rile
i mediile lor. i vei
vorbi cu experi tehnici
i mentori care v vor
ajuta s v mbuntii
abilitile. Eu sunt unul
dintre ei i mi petrec
mu lt t imp ajut nd
voluntarii s comunice
Chris Heilmann
i s se auto-recomande n faa lumii i a
oamenilor care pn n prezent nu prea i-au luat n serios. Noi toi
avem o poveste de spus, iar acestea sunt mprtite cel mai bine.

el i-a dezvoltat primul web site de la zero n 1997 i i-a petrecut


urmtorii ani lucrnd la multe web site-uri mari, internaionale.
Apoi i-a petrecut civa ani la Yahoo, dezvoltnd produse, explicnd i instruind oameni, iar acum este la Mozilla. Chris a scris
i a contribuit la ase cri despre dezvoltarea web i a scris multe
articole i sute de postri pe blog pentru Ajaxian, Smashing
Magazine, Yahoo, Mozilla, Script Junkie i multe altele.

Despre Christian Heilmann

Christian Heilmann i-a dedicat o mare parte din timp pentru a


face web-ul mai bun. Provenind din mediul jurnalismului radio,
2 mozilla.github.io/recroom/
3 appmaker.mozillalabs.com/
4 w w w . c o m s c o r e . c o m / I n s i g h t s / P r e s s - R e l e a s e s / 2 0 1 4 / 8 /
comScore-s-US-Mobile-App-Report-Available-for-Download
5 www.theverge.com/2014/9/2/6096609/welcome-to-verge-2-0

Ovidiu Man

ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine

6 www.mozilla.org/en-US/contribute

www.todaysoftmag.ro | nr. 27/septembrie, 2014

13

educaie

Visul mplinit al unei coli de var


- Fortech hiSchool Training Program

rganizarea unor cursuri practice pentru elevi a fost unul dintre primele repere
ale viziunii pentru Fortech cu care am fcut cunotin la venirea n companie. A rmas pe agenda firmei n anii ce au urmat, pn cnd momentul i
condiiile au fost oportune.
Mutarea la noul sediu ne-a deschis perspective frumoase pentru astfel de iniiative

Sorina Mone

sorina.mone@fortech.ro
Marketing manager
@ Fortech

14

nr. 27/2014 | www.todaysoftmag.ro

ce necesit o logistic aparte, oameni uneia dintre cele mai importante decizii
dedicai i parteneri cu deschidere.
de via.
n continuare vom reda jurnalul a 13
Astfel c prin eforturile echipei noas- zile petrecute mpreun cu elevii notri.
tre de HR, ale unui grup de profesori din
cadrul liceului teoretic Avram Iancu i Ziua 1 - Cariere n IT
ale unor oameni pasionai din Fortech,
Ne cunoatem ... actual i viitor analist
a fost pus pe roate programul hiSchool de business, manager de proiect, proTraining.
gramator, designer. Peste 40 de elevi n
Happy Bistro la Fortech, timizi la primul
Ce este Fortech hiSchool Training?
rendez-vous cu inginerii. Am povestit
O iniiativ comun a Fortech i a lice- despre ce nseamn o cariera n IT din
ului Avram Iancu ce vizeaz organizarea perspective diferite, care mpreun ncuunor cursuri practice de tip workshop nuneaz echipa unui proiect: a analistului
pentru elevii de liceu care au interes de business, a project managerului, a pronspre zona de IT. Scopul este de a com- gramatorului, a QA-ului, a inginerului de
pleta cunotinele dobndite n coal i de sistem, a designerului.
a facilita contactul cu mediul real n care
Pe majoritatea dintre noi, aceste
elevii vor activa, ntr-o etap n care se discuii ne-au motivat i ne-au ndrumat
ia practic decizia de carier prin alegerea s alegem un drum n IT. Ne-au lrgit orifacultii i pregtirea pentru aceasta.
zontul, avnd ocazia s ne formm o idee
Ne propunem s fim acea organizaie despre munca n acest domeniu spun Alex,
care aduce un aport nu doar pentru a aco- Rares, Beatrice i Adina.
peri necesarul de specialiti IT pentru a
doua jumatate a anului 2014 sau pentru
2015, ci pe urmtorii 10-20 de ani.
Credem cu trie n ideea c pentru a
pregti specialitii de mine, trebuie investit n copiii i tinerii de azi. De asemenea,
credem c pentru a excela ntr-un domeniu, oricare ar fi acesta, ntlnirea cu acel
domeniu trebuie s se produc ct mai
devreme. n acest context, contactul cu
modele sau repere veritabile este cel mai
valoros. Nu avem un Steve Jobs care s
Ne-am bucurat nespus cnd deja la
se adreseze unei naiuni spunnd c fie- workshop-ul cu nr. 2 a trebuit s suplimencare copil trebuie s nvee s programeze tm cu nc o sesiune, ntruct numrul de
pentru c l nva cum s gndeasc (i.e. elevi nscrii depea numrul maxim de
Code Starts). Dar avem oameni pasionai 20 pe care ni-l propusesem pentru urmn Fortech care i-au luat din timpul lor de toarele ntlniri. Au urmat aadar primele
munc pentru a-l dedica unor tineri la fel ntlniri de lucru:
de pasionai, curioi i n curnd n pragul

TODAY SOFTWARE MAGAZINE


Ziua 2 Introducere n OOP

specificaiilor cu managerul de produs, au


fost mai puin frecvente n rndul elevilor!
Ziua 3 Programare web
Sigur c nu putem trage concluzii definitive, dar ne-am dat seama c o vrst mai
Ziua 4 MS Office
frageda nseamn mai puine restricii n
gndire i comunicare, curajul de a ntreba
Ziua 5 Bune practici n programare
i lipsa temerilor de a grei. E pcat s nu
A fost unul dintre cele mai apreci- fie cultivate.
ate workshop-uri, ntrucat a valorificat
experiena practic a programatorilor din Ziua 8 Programarea aplicaiilor mobile
Fortech. A fost pentru elevii pasionai (iOS i Android)
de programare o oportunitate inedit de
a vedea ce nseamn un cod curat, ce
implic refactoring-ul i reutilizarea codului, metode de analiz a codului.
Am fcut i jocuri i pagini web i
am nvat s ne inem codul curat, spun
Sergiu, Dragos, Lorand i Ionu.

Ziua 9 Branding & design grafic

Ziua 6 Managementul timpului

Proiectul propus de ctre noi: branduirea ... Internetului. Au rezultat trei


concepte inedite : naming, slogan. Elevii
au lucrat cu suita de unelte Adobe pentru
design i au prezentat i susinut aceste
concepte n ceea ce a fost simularea unui
pitch.

Ziua 7 Concepte de Agile

Ziua 10 Munca n echip

Ce modalitate mai practic i interactiv de a nva o metodologie Agile dect


printr-un joc? n cadrul acestui workshop
am reluat simularea Scrum Lego City pe
care am realizat-o la evenimentul ...even
mammooths can be Agile, ediia din 2014.
A fost interesant s observm c greelile
cele mai frecvente care apar la aceast
simulare (i care se ntmpl ntr-un context de proiect Agile), cum ar fi clarificarea

Este o alt abilitate esenial, cultivat


printr-un workshop extrem de interactiv
i distractiv. Rezultatul muncii n echip:
cte un material video, conceput, regizat i
filmat de ctre elevi nii.
Ultimele trei workshop-uri au vizat din
nou concepte i dezvoltarea de abiliti din
sfera tehnic:

Ziua 12 Testarea i asigurarea calitii


aplicaiilor software
Ziua 13 Baze de date, SQL
Retrospectiva Fortech hiSchool Training, ediia var 2014, n cifre:
50 elevi
15 traineri din Fortech
4 traineri din cadrul liceului Avram
Iancu
13 workshop-uri
52 ore petrecute de elevi la Fortech.
Mulumirile noastre pentru susinere
merg ctre colectivul de profesori de la
liceul Avram Iancu implicai n acest
proiect, elevii participani i prinii acestora .
Fiul meu este unul dintre elevii de la
Avram Iancu, care particip la workshopurile organizate de Fortech. A venit extrem
de ncntat acas de ceea ce a vzut i ce
li s-a prezentat nprimele zile. E un lucru
extraordinar ca o firm s fac ceva pentru
copiii tia, iar faptul ca Fortech le deschide
ochii ntr-un domeniu att de dinamic precum IT-ul e de apreciat. Felicitari domnului
Vduva, profesorilor de la Avram i colaboratorilor! (sursa: Ziar de Cluj)

Ce urmeaz?

Povestea de mai sus este povestea unui


proiect pilot. Vom repeta programul cu
o noua serie de workshop-uri n aceast
toamn. Ateptm cu nerbdare!

Ziua 11 Unelte de munc colaborativ

Young spirit
Mature organization
A shared vision
Join our journey!
www.fortech.ro

www.todaysoftmag.ro | nr. 27/septembrie, 2014

15

eveniment

How to Web 2014: un nou nceput

ucureti, 3 septembrie 2014 A cincea ediie internaional a How to Web, cel mai important eveniment dedicat inovaiei,
antreprenoriatului i tehnologiei din Europa de Sud-Est, va avea loc pe 20 i 21 noiembrie n Bucureti. Avnd un nou format,
conferina va aduce n faa unei audiene estimate de peste 1000 de persoane profesioniti n tehnologie recunoscui la nivel
internaional. n plus, cele mai performante 32 de startup-uri din regiune vor concura pentru premiile n valoare total de 20.000
USD oferite n cadrul celei de a treia ediii a competiiei i programului de mentorat Startup Spotlight.
Ediia din 2014 a How to Web marcheaz un nou nceput pentru conferin
i propune participanilor un format mai
complex. Astfel, evenimentul va aborda
teme precum antreprenoriatul n tehnologie, dezvoltarea de produse cu potenial
disruptiv la nivel global, tendine ale industriei, obinerea de investiii sau crearea de
jocuri i va aduga noi elemente adresate
unor categorii specifice de audien.
Pe scenele How to Web 2014 vor urca
i de aceast dat personaliti marcante
n domeniul tehnologiei la nivel mondial.
Printre invitaii care au confirmat pn
n prezent participarea la eveniment se
numr: Paul Papadimitriou, expert n
revoluia digital i efectele sale transformatoare asupra afacerilor, i invitat special
al celor mai importante evenimente n
tehnologie din lume; Chris Chabot, Head
of International Developer Relations
Twitter, care ajut companiile i dezvoltatorii s redefineasc viitorul prin crearea
de conexiuni valoroase ntre oameni i
prin susinerea proceselor inovative, sau
Florian Meissner, Co-Fondator i CEO
EyeEm, care este o platform pentru noua
generaie de fotografi care utilizeaz dispozitivele mobile, avnd peste 10 milioane de
utilizatori i care a obinut pn n prezent
finanri de 6 milioane de dolari.

ntre 19 i 22 noiembrie va avea loc


i cea de a treia ediie a Startup Spotlight,
competiie i program de mentorat adresat
celor mai bune 32 de echipe din regiune.
Pe parcursul celor patru zile ale programului, acestea vor participa la workshop-uri
i sesiuni de mentorat, vor cunoate investitori i reprezentani ai fondurilor de
investiii early stage i ai unora dintre cele
mai apreciate programe de accelerare din
lume, i vor intra n competiia pentru
premiile n valoare total de 20.000 USD
oferite de IXIA, care este i n acest an partener principal al programului.
Rezultatele ediiei precedente confirm
calitatea programului i impactul pe care
acesta l are asupra dezvoltrii startup-urilor. 32 de startup-uri early stage provenind
din opt ri din Europa Central i de Est
au participat la Startup Spotlight 2013,
au beneficiat de workshop-uri dedicate
i sesiuni de mentorat i au participat la
prezentri de acceleratoare i paneluri cu
investitori. n plus, acestea au avut ocazia
s se ntlneasc n sesiuni 1 la 1 cu reprezentani ai unora dintre cele mai apreciate
programe de accelerare europene printre
care se numr TechStars, Seedcamp,
Oxygen i Wayra (UK), Rockstart
(Olanda), Eleven i LauncHub (Bulgaria),
Startup Bootcamp (prezent n mai multe

ri europene), TechPeaks (Italia), Startup


Wise Guys i Startup Highway (Estonia),
sau Hub:raum (Polonia).
Dup finalizarea programului, 35%
dintre echipele finaliste au primit o investiie, au ncheiat un nou parteneriat sau au
gsit parteneri strategici care s i susin
n eforturile lor ulterioare. Startup-urile
early stage care dezvolt produse inovative
n domeniul tehnologiei pot aplica online
pentru participarea la cea de a treia ediie
Startup Spotlight completnd formularul
de nscriere disponibil online la http://
startupspotlight.co/getready/
How to Web 2014 va avea loc pe 20 i
21 noiembrie la Crystal Palace Ballrooms
i va aduce mpreun peste 1000 de participani din Europa Central i de Est
i profesioniti n domeniul tehnologiei
recunoscui la nivel mondial. Biletele la
eveniment vor fi disponibile n curnd
pe site-ul http://2014.howtoweb.co/
newbeginnings/.
n paralel va avea loc i cea de a treia
ediie Startup Spotlight, competiie i
program de mentorat pentru startupurile early stage din regiune care dezvolt
produse n domeniul tehnologiei. ntre
19 i 22 noiembrie, cele 32 de echipe
finaliste vor participa la un program de
dezvoltare accelerat i vor cunoate
investitori, reprezentani ai programelor de
accelerare i ai fondurilor de investiii early
stage, precum i mentori cu experien.
Aplicaiile pentru Startup Spotlight sunt
deschise i se realizeaz prin completarea
formularului disponibil online la http://
startupspotlight.co/getready/
Irina Scarlat

irina.scarlat@howtoweb.co
PR Manager
@ How to Web & TechHub Bucharest

16

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

eveniment

TODAY SOFTWARE MAGAZINE

Invitaie la TYPO3 East Europe 2014

coninut.

espre TYPO3, soluia entreprise CMS open source care a cucerit Germania, am mai vorbit n paginile Today Software Magazine
acum un an, cu prilejul pregtirii primei ediii a conferinei TYPO3 East Europe precum i n numrul din august al revistei,
cnd colegul meu Tomi Militaru a prezentat TYPO3 Neos, noul CMS care promite s revoluioneze experiena editrii de

TYPO3 este un framework CMS


extraordinar, construit nemete pentru a
oferi excelen funcional, performan i
extensibilitate. Puterea lui se vede n special cnd ai de implementat portaluri mari,
cu flux editorial complex sau soluii multidomain, n care o singur instan servete
zeci sau chiar sute de site-uri. Relevant n
acest sens este momentul cnd la ediia din
2013 a conferinei TYPO3 East Europe
cei de la Universitatea din Viena ne-au
prezentat configuraia lor: aproape 1000 de
site-uri inute pe aceeai instan TYPO3,
cu peste 100 de mii de pagini de coninut,
soluie gndit astfel nct site-ul unui nou
proiect din cadrul universitii se lanseaz
n jumatate de or, pe baza abloanelor
preconstruite.
n Germania, Austria, Elveia, Olanda i
multe alte ri, administraia public i universitile au adoptat TYPO3 pe scar larg,
la fel i mediul privat precum Lufthansa,
Deimler, Bayer i muli alii.
Ca orice platform cu istorie ndelungat, n peste 15 ani TYPO3 a evoluat
continuu i ultimii ani au fost efervesceni.
Din dorina de a gsi soluia perfect i a
revoluiona lumea CMS-urilor, dou noi
produse s-au alturat platformei TYPO3
CMS clasic: TYPO3 Flow ( http://flow.
typo3.org/ ), un framework pentru dezvoltarea aplicaiilor, lightweight dar solid, i

TYPO3 Neos ( http://neos.typo3.org/ ), o


platform CMS construit cu Flow, gndit
pentru a oferi o flexibilitate i o usurin n
editarea coninutului cum nici o alt platforma CMS nu a avut pn acum.
Dar dincolo de tehnologie TYPO3
nseamn Comunitate. Totul graviteaz n
jurul acestei idei, ntr-o comunitate activ
care reunete dezvoltatori din ntreaga
lume, construind mpreun, mprtind
idei i soluii. Deviza TYPO3, Inspiring
people to share, nu e o vorb n vnt.
Am probat nc o dat acest lucru la
prima ediie a TYPO3 East Europe ( pe
scurt T3EE www.t3ee.org ) care a avut
loc la Cluj n 14-16 noiembrie 2013. S-au
adunat peste 100 de participani din apte
ri europene. Au fost dou zile pline de
prezentri pe subiecte tehnice, showcases,
metodologii, bune practici, dezbateri privind dezvoltarea comunitilor tehnologice.
Am mai avut o zi dedicat universitilor
i studenilor, cu un workshop organizat
mpreun cu universitile clujene i cele
din Viena i Wuppertal. A fost o ocazie
important de a participa la dialoguri relevante n urma crora am ctigat prieteni,
relaii, cunotine tehnice i convingerea c
merit s o facem din nou.
n 31 octombrie 1 noiembrie va avea
loc a doua ediie a TYPO3 East Europe.
Ne ateptm la o participare i mai larg ca

numr de participani i ca diversitate geografic. Urmrim s aducem ct mai muli


oaspei relevani, specialiti care s ne
nvee mai mult dect tehnologie ( care va fi
oricum din plin ), s aflm mai multe despre
cum se gndesc i cum se implementeaz
soluii performante n vestul Europei,
despre metodologii, strategii, mecanisme de
cooperare, construcia i gestiunea comunitilor tehnologice.
Aceast palet larg de subiecte, dar i
diversitatea celor care vin din celelalte pri
ale Europei, fac T3EE semnificativ pentru
orice membru al comunitii IT din Cluj,
prin urmare v invit cu drag s v nscriei
pe www.T3EE.org i atept s ne vedem n
31 octombrie.
TYPO3 East Europe este posibil datorit
sponsorilor, n primul rnd cei Gold: companiile romneti Arxia ( www.arxia.com )
i PWO ( www.pwo.ro ), firmele germane
AOE ( www.aoe.com ) i Jweiland ( www.
jweiland.net ) i suedezii de la Pixelant (
www.pixelant.net ).

Daniel Homorodean

daniel.homorodean@arxia.com
CEO
@ Arxia

www.todaysoftmag.ro | nr. 27/septembrie, 2014

17

comuniti

Comuniti IT

una septembrie vor avea loc o serie de conferine astfel nct spaiul evenimentelor din calendar a devenit foarte mic pentru a
le putea enumera pe toate. V invitm ca de obicei la evenimentele de lansare a revistei din Cluj dar i la cea din Trgu Mure.
De asemenea, n Bucureti au loc n perioada urmtoare SmartWebConf, Internet & Mobile World i SeeTest iar n Iai vom
avea o nou ediie a ..even mammoths can be Agile, un eveniment care s-a bucurat de un real succes anul acesta n Cluj.
Transylvania Java User Group
Comunitate dedicat tehnologiilor Java.
Website: www.transylvania-jug.org
Data nfiinrii: 15.05.2008 / Nr. Membri: 586 / Nr. Evenimente: 46
Comunitatea TSM
Comunitate construit n jurul revistei Today Software Magazine.
Website: www.facebook.com/todaysoftmag
www.meetup.com/todaysoftmag
Data nfiinrii: 06.02.2012 /Nr. Membri: 1746/Nr. Evenimente: 22
Cluj Business Analysts
Comunitate dedicat analizei de business
Website: www.meetup.com/Business-Analysts-Cluj
Data nfiinrii: 10.07.2013 / Nr. Membri: 87 / Nr. Evenimente: 8
Cluj Mobile Developers
Comunitate dedicat tehnologiilor mobile
Website: www.meetup.com/Cluj-Mobile-Developers
Data nfiinrii: 05.08.2011 / Nr. Membri: 236 / Nr. Evenimente: 15
The Cluj Napoca Agile Software Meetup Group
Comunitate dedicat metodelor Agile de dezvoltare software.
Website: www.agileworks.ro
Data nfiinrii: 04.10.2010 / Nr. Membri: 442 / Nr. Evenimente: 86
Cluj Semantic WEB Meetup
Comunitate dedicat tehnologiilor semantice.
Website: www.meetup.com/Cluj-Semantic-WEB
Data nfiinrii: 08.05.2010 / Nr. Membri: 191/ Nr. Evenimente: 28
Romanian Association for Better Software
Comunitate dedicat oamenilor cu experien din IT indiferent de
tehnologie sau specializare.
Website: www.rabs.ro
Data nfiinrii: 10.02.2011 / Nr. Membri: 248/ Nr. Evenimente: 14
Tabra de testare
Comunitate format din testeri i ali profesioniti din industria
IT care, n cadrul unor ntlniri informale lunare, mprtesc
din cunotinele proprii i nva din experienele profesionale ale
celorlali membri.
Website: www.tabaradetestare.ro
Data nfiinrii: 15.01.2012 / Nr. Membri: 1186/ Nr. Evenimente: 33

18

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Calendar
Septembrie 18 (Cluj)
Lansarea numrului 27 a Today Software Magazine
www.todaysoftmag.ro
Septembrie 22-23 (Bucureti)
SmartWebConf
smartwebconf.com
Septembrie 23 (Bucureti)
A III-a ediie a conferinei Gemini Solutions Foundry
www.gemsfoundry.com
Septembrie 24 (Trgu Mure)
Lansarea numrului 27 a Today Software Magazine mpreun cu Cluj IT Cluster
www.todaysoftmag.ro
Septembrie 25-26 (Bucureti)
SEETEST
seetest.org
Octombrie 1-2 (Iai)
Business Days Iai
www.businessdays.ro/Evenimente/Iasi-2014/
Octombrie 5 - 2 Noiembrie (online)
Cursul Black Box Software Testing
altom.training/bbst-foundations/
Octombrie 8-9 (Cluj)
Internet & Mobile World
imworld.ro
Octombrie 10 (Iai)
...even mammoths can be Agile
facebook.com/events/820690977965456
Noiembrie 25-26 (Cluj)
Cluj IT Days
itdays.ro

management

programare

JavaFX n Platforma Java Standard 8

-am uitat la ceas. 21.15, afar e ntuneric bezn. Brrr! Vine toama. Ct ine?
Enorm...Pn la primvar. Pentru zile ceoase i reci, pentru cei care simt nevoia
de studiu i perfecionare,voi aduce n atenie un topic nou, neabordat de mine
n articolele anterioare, JavaFX. Sper c prin aceasta s trezesc interesul cititorilor revistei
pentru aceast tehnologie, pe care o consider cu adevrat remarcabil.
Silviu Dumitrescu

silviu.dumitrescu@accesa.eu
Java Line Manager
@ Accesa

Diana Blan

Diana.Balan@accesa.eu
Java developer
@ Accesa

Acest articol l-am scris mpreuna cu


Diana Blan, Java Developer la Accesa,
creia i mulumesc foarte mult pentru idei
i suport.
Vom ncepe articolul despre JavaFX cu un
mic istoric.
JavaFX este urmaa lui F3 (Form Follows
Function) ce l are ca printe pe Chris Oliver.
n 2010 Oracle a anunat c dezvoltarea lui
JavaFX Script language va fi ntrerupt, n
schimb aceasta se va porta pe Java, formnd
platforma JavaFX 2. Prin aceasta se puneau
bazele ca JavaFX s devin cel mai important
mediu pentru aplicaii rich client.
API-ul JavaFX este rulat de un engine
compus din subcomponente. Acesta cuprinde
noul engine grafic de nalt performan
numit Prism, sistemul eficient de windowing
numit Glass i un engine media.
Glass Windowing Toolkit este responsabil cu furnizarea unui serviciu nativ ce
include gestiunea ferestrelor, a timer-elor
i a suprafeelor. De asemenea, leag platforma JavaFX de sistemul de operare nativ.
Mai mult, Glass este responsabil de gestiunea
cozii de evenimente. Dac AWT i gestioneaz propria coad de evenimente, Glass
utilizeaz coada nativ a sistemului de operare. Glass Toolkit ruleaz n acelai fir ca i

aplicaia JavaFX. n AWT se crea un fir de


execuie paralel cu cel al Javei.
O aplicaie rich client este o aplicaie ce
are o interfa care reprezint backend-ul
fr a aglomera astfel interfaa utilizator.
JavaFX are un set complet de butoane, diagrame, tabele i container-e de layout pe care
le folosim pentru a crea interfee utilizator
rich. n plus, putem folosi stiluri CSS. Toate
componentele se conecteaz i afieaz date
din backend.
n general, o aplicaie rich client are urmtoarele caracteristici:
Este o aplicaie stand alone executabil.
Conine o interfa-utilizator ce are
controale sau formulare.
Este descrcabil din desktop sau web.
Se conecteaz la o baz de date i la un
server de backend.
Este independent fa de sistemul de
operare.
O aplicaie JavaFX este o aplicaie Java de
baz, ce permite feature-uri JavaFX. Codul
minim necesar pentru a rula o aplicaie
JavaFX const din:
O clas ce extinde clasa abstract
javafx.application.Application.
O metod main() ce apeleaz metoda

www.todaysoftmag.ro | nr. 27/septembrie, 2014

19

programare
JavaFX n Platforma Java Standard 8

primaryStage.setTitle(Hello World!);
launch() i suprascrie metoda abstract start(). Ca bun prac-
Button btn = new Button();
tic apelul metodei launch() este singurul apel din main()
btn.setText(Say Hello World);
btn.setOnAction(new
Un stage primar ce este vizibil, ca argument al metodei
EventHandler<ActionEvent>() {
start()
@Override
Avem trei tipuri de aplicaii JavaFX:
public void handle(ActionEvent event) {
Aplicaii propriu zise, ce folosesc sintaxa Java tradiional
System.out.println(Hello World!);
}
i API-ul JavaFX.
});
Aplicaii FXML. FXML se bazeaz pe XML i este folosit
StackPane root = new StackPane();
pentru a defini interfee-utilizator n aplicaii JavaFX. Cu FXML
root.getChildren().add(btn);
vom defini layout-uri statice precum formulare, controale sau
primaryStage.setScene(new Scene(root, 300,
tabele. Putem construi, de asemenea, layout-uri dinamice prin 250));
primaryStage.show();
includerea unui script.
}
Aplicaii preloader, folosite n procesul de deployment.
import javafx.application.Application;
import javafx.stage.Stage;
public class JavaFXApplication extends Application {
@Override

public void start(Stage stage) {
stage.show();
}

public static void main(String[] args) {
launch(args);
}
}

Un stage (javafx.stage.Stage) este un container GUI top level


pentru toate obiectele grafice, iar un scene (javafx.scene.Scene)
este container-ul de baz. Stage-ul primar este construit de platform, dar pot fi construite i alte obiecte stage de ctre aplicaie.
Obiectele stage trebuie s fie construite i modificate n firul
aplicaiei JavaFX.
Articolele individuale care se afl n interiorul scenei grafice
sunt numite noduri. Fiecare nod este clasificat ca fiind :
Branch sau un printe, ceea ce nseamn c poate avea
descendeni.
O frunz.
Primul nod din arbore este numit rdacin i nu are printe.
Scena grafic este aadar o structur arborescent. API-ul
JavaFX face ca interfaa grafic s fie mai uor de creat, mai ales
cnd sunt implicate efecte vizuale complexe i transformri.
API-ul scenei grafice JavaFX este un retained mode, adic
el gestioneaz un model intern al tuturor obiectelor grafice din
aplicaie. n orice moment el tie ce obiecte s afieze, ce zone
ale ecranului necesit redesenare i cum s fie renderizat n cel
mai eficient mod. Aceasta reduce semnificativ cantitatea de cod
necesar n aplicaie.
mbuntim aplicaia anterioar prin adugarea unui buton
cu text i al unui container de layout. Butonul va fi un nod frunz, }
iar StackPane-ul nod rdcin.
import
import
import
import
import
import
import

javafx.application.Application;
javafx.event.ActionEvent;
javafx.event.EventHandler;
javafx.scene.Scene;
javafx.scene.control.Button;
javafx.scene.layout.StackPane;
javafx.stage.Stage;

public class JavaFXApplication extends Application {


public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {

20

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Vom crea o aplicaie echivalent folosind FXML. FXML ofer


urmtoarele avantaje:
Fiind bazat pe XML este familiar multor dezvoltatori, n
special dezvoltatorilor web i celor care utilizeaz alte platforme RIA.
FXML nu se compileaz, de aceea nu este necesar s recompilm codul n caz de modificri.
Asigur o structur uor vizibil a aplicaiei.
Cnd crem o aplicaie JavaFX FXML avem de realizat trei
fiiere:
Clasa main, ce conine cod pentru crearea scenei aplicaiei,

management

TODAY SOFTWARE MAGAZINE

a stage-ului i pentru lansarea aplicaiei. Una dintre aciunile prefWidth=69 fx:id=label />
</children>
importante este dat de secvena urmtoare:
</AnchorPane>
Parent root=null;

try {

root = FXMLLoader.load(getClass().
getResource(Sample.fxml));

} catch (IOException e) {
e.printStackTrace();
}

stage.setScene(new Scene(root));

Metoda FXMLLoader.load() ncarc ierarhia de obiecte din


fiierul de resurse Sample.fxml i o asigneaz variabilei numite
root. Aceast clas este Model-ul n pattern-ul MVC. Ultima parte
a aciunii este setarea scenei.

Acest fiier reprezint View-ul n pattern-ul MVC. Nodul


rdcin este AnchorPane, iar nodurile descendeni sunt Button
i Label.
Fiierul Sample.java, este fiierul controller al interfeei utilizator. Numele acestuia trebuie s fie identic cu cel al clasei view
fxml.
import
import
import
import
import
import

java.net.URL;
java.util.ResourceBundle;
javafx.event.ActionEvent;
javafx.fxml.FXML;
javafx.fxml.Initializable;
javafx.scene.control.Label;

public class Sample implements Initializable {


@FXML
private Label label;
@FXML
private void handleButtonAction(ActionEvent
event) {
System.out.println(You clicked me!);
label.setText(Hello World!);
}
@Override
public void initialize(URL url, ResourceBundle
rb) {
// TODO
}
}

Aplicaiile din acest articol au fost dezvoltate folosind Eclipse


Luna, ca proiecte Java Standard n care am inclus pachetul lib\
jfxrt.jar.
V mulumim foarte mult pentru rbdarea de a citi articolul i
v ateptm ca de obicei, cu toat plcerea la discuii.

Fiierul Sample.fxml, este fiierul n care construim interfaa


utilizator
<?xml version=1.0 encoding=UTF-8?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<AnchorPane id=AnchorPane prefHeight=200
prefWidth=320 xmlns:fx=http://javafx.com/fxml
fx:controller=henleyclient.Sample>
<children>
<Button id=button layoutX=126 layoutY=90
text=Click Me! onAction=#handleButtonAction
fx:id=button />
<Label id=label layoutX=126 layoutY=120 minHeight=16 minWidth=69 prefHeight=16
www.todaysoftmag.ro | nr. 27/septembrie, 2014

21

programare

programare

Avantajele folosirii SVG


(Scalable Vector Graphics)

VG (Scalable Vector Graphics) se impune drept unul dintre cele mai importante
trenduri din domeniul web designului pentru anul 2014. Este recomandat de W3C
(World Wide Web Consortium) nc din 2003, dar nu a fost foarte folosit, nefiind suportat n totalitate pe browser-e cum ar fi pe Internet Explorer. ns lucrurile au
nceput s se schimbe

Peter Krejcik

peter.krejcik@yardi.com
Web Designer
@ Yardi Romnia

n articolul meu, voi prezenta pe scurt


conceptul SVG i voi discuta despre avantajele practice care recomand utilizarea
SVG n web design.

Ce este SVG?

SVG reprezint prescurtarea pentru


Scalable Vector Graphics, este un format
pentru imagini de tip vectorial, bazat
pe XML fiind utilizat pentru grafic 2D,
care permite interactivitatea i animaia.
Timp de zece ani, SVG nu a fost folosit la
potenialul maxim deoarece nu a beneficiat
de suport complet pe Internet Explorer.
Lucrurile ns s-au schimbat mult n
ultimul timp, iar elemente de SVG sunt
folosite acum din ce n ce mai mult, n special pe browser-ele care susin HTML5.
Astzi, aproape toate browser-ele
importante suport SVG:
Internet Explorer 9+,
Firefox 4+,
Chrome 4+,
Safari 4+,
Opera 9.5+.
SVG-urile se pot crea folosind
meta-limbajul XML, care utilizeaz
tag-uri asemntoare cu cele HTML.
De exemplu, codul urmtor genereaz un
cerc alb cu contur negru:
<svg height=100 width=100>
<circle cx=100 cy=100 r=50
stroke-width=4 stroke=#000
fill=#fff />
</svg>

Explicarea codului:
Graficul SVG este declarat folosind t ag-ur i le <svg>...</svg> .

22

nr. 27/2014 | www.todaysoftmag.ro

Atributele de nlime i lime ale elementului <svg> definesc nlimea i


limea SVG-ului .
Atributele cx i cy definesc coordonatele x i y ale centrului cercului. Dac
cx i cy sunt omise, centrul cercului este
automat poziionat pe coordonatele (0,0)
Atributul r definete raza cercului .
Atributele stroke i stroke-width
controleaz modul n care apare forma
figurii pe care vrem s o desenm.
Atributul fill (umplere) se refer la
culoarea din interiorul cercului .
Este important de reinut c XML este
mult mai strict dect HTML, de aceea omiterea unui tag de ncheiere ar putea duce la
nevalidarea ntregului fiier sau la eroare n
generarea SVG-ului.
Specificaia W3C SVG1.1 definete 14
caracteristici principale:
1. Figuri de Baz (Basic shapes): linii
drepte, poligoane, cercuri, figuri eliptice i dreptunghiuri cu sau fr coluri
rotunjite.
2. Traiectorii (Paths): traiectorii subliniate sau colorate care conin linii drepte
sau curbe.
3. Texte (Text): pe traiectoriile drepte
sau curbate n orice direcie.
4. Desenarea (Painting): umple figuri
sau le contureaz folosind culori solide,
gradient-uri, modele, transparen
i markere (capete de linie cum ar fi
sgeile).
5. Culoarea (Color): proprietile de
fill i stroke sunt definite folosind valorile standard hex sau rgb de 3 sau 6 cifre.

TODAY SOFTWARE MAGAZINE


6. Gradient-uri i pattern-uri (Gradients and patterns): un factor foarte important n prezent, deoarece display-urile de
definire de gradient-uri n format CSS3 sau fundaluri bitmap. mare rezoluie sunt din ce n ce mai des folosite, iar livrarea unui
7. Secionri, acoperiri i compoziii (Clipping, masking coninut responsive este de dorit.
and compositing): folosirea de elemente pentru a contura regiuni care apoi pot fi desenate.
8. Filtre (Filters): efecte aplicate tuturor elementelor din
cadrul unui coninut, cum ar fi estomparea, luminozitatea,
setarea culorilor.
9. Link-uri (Linking): hyperlink-uri ctre alte documente.
10. Interactivitate (Interactivity): ataarea de event-handlers folosind JavaScript.
11. DOM Scripting: accesarea i utilizarea elementelor
SVG folosind Modelul Document Obiect.
12. Animaia (Animation): animaii integrate folosind
Limbajul Synchronized Multimedia Integration Language
(SMIL).
13. Fonturi: simboluri textuale definite ntr-un fiier SVG,
care pot fi folosite ca font standard.
14. Metadata: cuprinde titlurile, descrierile, subiectele,
autorii i alte caracteristici ale imaginii SVG.
O alt modalitate de a crea SVG-uri este prin a le desena folosind un editor vectorial de grafic , metod care este de preferat
n cazul celor care nu cunosc bine XML sau al celor care vor s
creeze elemente de grafic mai complexe. Ne vom referi la aceste
instrumente n urmtoarele rnduri.
Acum ns s ne vom concentra asupra motivelor principale
pentru care un web designer ar trebui s ia n considerare folosirea SVG-urilor.

Uor de creat

Avantajele folosirii SVG-urilor

Uor de editat

Sunt scalabile
Cel mai mare avantaj al graficii vectoriale este posibilitatea de a scala imaginile la orice dimensiune fr s pierdem
din calitate (exemplificare n imaginea de mai jos). Acesta
este motivul principal pentru care SVG este ideal pentru crearea de logo-uri de companii sau alte elemente grafice care
necesit multe redimensionri. Orice designer trebuie s
acorde atenie capacitii de scalabilitate a produsului finit.
Totodat, independena rezoluiei n cazul graficii scalabile este

Crearea de elemente grafice simple cu XML este foarte


uoar.. ns ce se ntmpl dac trebuie s crem elemente grafice
mai complexe? Sunt destul de multe editoare de grafic vectorial
user-friendly, care ar putea fi folosite pentru a crea grafic SVG:
Adobe Illustrator, Macromedia Freehand, Corel Draw. Exist
de asemenea i cteva instrumente gratuite, cum ar fi Inkscape,
OpenOffice, LibreOffice Draw i svg-edit (instrument online).
SVG-urile sunt uor de editat, fapt care le confer un mare
avantaj fa de grafica rasterizat.. Dac vrem s facem schimbri
n grafica vectorial, avem nevoie de un editor de text sau, i mai
uor, putem folosi un instrument de editare grafic vectorial.
Important de reinut: componentele n grafica vectorial pot fi
manipulate individual, prin urmare, n momentul editrii, nu e
nevoie s construim totul de la zero. Schimbarea unor caracteristici de baz cum ar fi culoarea sau conturul se poate face simplu
i rapid.

Objective C

jobs-cluj@yardi.com
Yardi Romania

www.todaysoftmag.ro | nr. 27/septembrie, 2014

23

programare
Avantajele folosirii SVG (Scalable Vector Graphics)
Dimensiuni mai reduse

SVG-urile pot fi folosite pentru SEO

Dimensiunea mai mic a fiierelor


face ca transferul i ncrcarea graficii
s fie mult mai rapide. Din acest motiv,
muli prefer s foloseasc grafica vectorial: imaginea se ncarc mai repede,
fr s fie nevoie s atepm pn cnd
se ncarc imaginea complet.Chiar dac
dimensiunea imaginii este foarte mare, de
obicei vom obine o dimensiune de fiier
mult mai mic fa de o imagine similar
rasterizat.

Spre deosebire de imaginile de tip


bitmap, XML prin natura sa poate fi citit
automat, prin urmare fiierele SVG pot fi
citite, analizate i indexate de ctre boturile din motoarele de cutare. Google
a nceput indexarea coninuturilor SVG
din august 2010 iar rezultatele pot fi gsite
n sistemele standard i n cutarea de
imagini.

Mai multe detalii


De vreme ce vectorii folosesc linii,
este mult mai uor s se creeze o grafic
extrem de detaliat. Totodat, ilustraiile
vor aprea mai clare dect pozele de mare
rezoluie indiferent unde sunt folosite, de
aceea sunt mai uor de neles i arat mai
bine i pe hrtie.

Dimensiunea fiierului n funcie de complexitate


Imaginile vectoriale sunt fiiere de mici
dimensiuni care depind de complexitatea
imaginii, de ct de complicate sunt liniile
i ct de complexe sunt punctele. Mrimea
acestor grafice nu se bazeaz pe adncimea de culoare.

API bazat pe un DOM accesibil


SVG-urile au un DOM, fapt care deschide numeroase posibiliti de a controla
imaginea i comportamentul graficii. Este
foarte uor s atam event-handlers i s
manipulm elementele aa cum am faceo n cazul unor blocuri HTML. Tot din
acest motiv putem inspecta cu uurin
elementele SVG n browser aa cum am
face cu oricare alte elemente HTML.
Mulumit accesibilitii DOM, putem
stiliza elementele grafice n CSS i
s le facem interactive cu JavaScript.
API-ul bazat pe DOM al SVG ofer
i posibilitatea de a crea imagini SVG
b azate p e do c umente s er ver-side.
Exist multe biblioteci JS pe web pentru a
controla elementele SVG: D3.js, Raphael,
Snap.svg, Processing.js, JSDrawing,
PlotKit, SVGWeb i Paper.js.

Uneori trebuie s crem un element UI


mai complex, care e format din mai multe
forme de baz, avnd n vedere n acelai
timp i ca ele s fie responsive. Crearea lor
cu ajutorul HTML i CSS ar putea cauza
multe probleme (poziionare, masking,
layering i probleme legate de stil).
O soluie mult mai bun ar fi s desenm elementele ntr-un editor grafic i s l
salvm sub form de fiier SVG. Acest fapt
Cteva dezavantaje
ne-ar permite s avem un singur element
Nu ar fi corect s nu amintim aici i scalabil i s nu ne facem griji n privina
cteva dezavantaje pe care le implic utili- controlrii mai multor div-uri.
zarea de SVG. Din fericire, sunt puine cele
care trebuie amintite:
Logo-uri
Majoritatea logo-urilor sunt grafice
Dezvoltare complex
bazate pe vectori. Prin urmare, de ce nu
Codul SVG care este structurat prin am putea defini un document SVG ca
XML poate fi destul de lung i de complex, logo-ul nostru i s l plasm oriunde, scadificil de corectat.
lndu-l uor la orice dimensiune e nevoie,
fr s compromitem calitatea i salvnd n
Probleme de performan
acelai timp i limea de band?
n cazul folosirii multor animaii
complexe, motorul WebKit poate deveni Jocuri uoare
considerabil mai lent.
Chiar dac CANVAS este mai potrivit
pentru redarea de jocuri (jocuri care foloNu este suportat complet de browsere mai
sesc grafic i animaie bazate pe pixeli),
vechi (Internet Explorer 8 i versiuni mai
SVG ar putea fi o alternativ viabil
vechi)
pentru jocurile simple, care necesit mai
Exist ns i soluii prin care se poate puin animaie pentru personaje i mai
extinde suportul oferit de browsere, cum mult spaiu pentru afiarea de informaiii
ar fi Raphael.js sau folosirea tehnicii de ( de exemplu Sudoku).
nlocuire a SVG-urilor cu imagini statice
pentru browserele mai vechi.
AD-uri responsive
Coninutul AD-ului ar ocupa spaiul
Utilitatea SVG
oferit de document i, lund n considerare
S vedem cteva aplicaii practice ale c CSS i JavaScript-ul sunt permise, majoSVG.
ritatea aciunii ar fi limitat la un singur
fiier SVG pe AD

Grafice

Deoarece avantajul principal al


SVG-urilor este reprezentarea de forme
vectoriale de baz, funcioneaz foarte
bine cnd sunt utilizate pentru crearea de
grafice i infographics-uri. Se preteaz att
la crearea de grafice statice pornind de la
anumite valori date, ct i graficele live,
alimentate n mod dinamic de ctre request-uri AJAX, input-ul utilizatorilor sau
date generate n mod aleatoriu.

Request-uri HTTP reduse

Hri

Dac SVG-urile sunt incluse direct


ntr-un document HTML cu tag-ul svg,
browserul nu trebuie s fac un request
pentru a afia grafica, ca n cazul n care
se folosesc imagini cu tag-ul <img>. Acest
fapt are ca rezultat o performan mult
mai bun n ceea ce privete ncrcarea
coninutului pe web.

Hrile sunt formate din linii i forme


exacte. Aceste forme pot fi foarte uor
reprezentate cu ajutorul graficii vectoriale
i se preteaz aciunilor precum zoomul
pentru mai multe detalii.

24

Elemente UI complexe

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Linkuri utile
Principii de baz pentru folosirea SVG : http://
www.w3schools.com/svg/svg_intro.asp
Folosirea SVG, un ghid practic: http://css-tricks.
com/using-svg/
Workflow SVG: http://danielmall.com/articles/
svg-workflow-for-designers/
O colecie de informaii SVG: http://css-tricks.
com/mega-list-svg-information/
Despre animaii SVG: http://24ways.org/2013/
animating-vectors-with-svg/
Responsive SVG :http://demosthenes.info/
blog/744/Make-SVG-Responsive
SVG Vs Canvas: http://www.sitepoint.com/7-reasons-to-consider-svgs-instead-of-canvas/
SVG i SEO: http://www.rocketmill.co.uk/
exploiting-svg-images-for-seo
Exemple de SVG: http://www.creativebloq.com/
design/examples-svg-7112785

programare

programare

Livrarea continu

n ultima perioad suntem bombardai din toate prile de ideea c trebuie s ncepem
s folosim Continuous Delivery (Livrare Continu), adic s ncepem s punem aplicaia
mai repede n producie i cu frecven mai mare. Da, ntr-adevr, s mergem live cu
aplicaia n producie de zece ori pe zi e distractiv i cool. Dar atunci de ce am avut nevoie de
aa muli ani? Livrarea continu este menionat nc din primul principiu agil:
Dan Danciu

dan.danciu@isdc.eu
Software Architect
@ ISDC

Prioritatea noastr este satisfacia clientului prin livrarea rapid i continu de software
valoros.
Conteaz pentru c toat lumea face sau
pentru c este distractiv i interesant? Nu
aceasta este abordarea corect. n tot ceea ce
facem trebuie s ne asigurm de ceea ce este
corect pentru companie, trebuie s nelegem
ce trebuie fcut i poate cel mai important
lucru este cum putem s aducem valoare
companiei.
Prin acest articol intenionez s prezint de
ce este important ca oamenii de business s
fie de acord cu livrarea n mod continuu, care
sunt diferenele dintre aceasta i alte practici
i cum s ncepem a o realiza. Pe lng toate
cele de mai sus, vor fi observaii cu privire la
contextul dezvoltatorilor software din outsourcing, mediu care este considerabil diferit.

Pentru c am vzut o mulime de prezentri, bloguri, filme n ultima vreme care omit
ntru totul s menioneze c nu doar tu, gurul
tehnic, trebuie s nvei ce presupune livrarea continu ci i oamenii de business. Dar
dincolo ce surprind aceste prezentri, ese
important de subliniat c tu, omul tehnic,
poi face ceva pentru a schima lucrurile.
Este necesar utilizarea i a practicilor de
integrare continu i deployment continuu
pentru a avea success n practica de livrare
continu, dar de foarte multe ori oamenii
folosesc termenul continuous delivery cnd se
refer la continuous deployment, iar mai jos
v voi arta ce neleg eu prin aceti termeni.

Continuous Integration, Martin Fowler

Integrarea continu este practic a dezvoltrii software n care membrii unei echipe
integreaz ceea ce livreaz des, de obicei fiecare
Este mai mult dect continuous depersoan integreaz munca proprie cel puin o
ployment
dat pe zi - ceea ce conduce la mai multe inteUitndu-ne la tirile din mediul IT apar grri pe parcursul unei zile.
tot mai multe instrumente care s faciliteze
accesul n etapa numit livrare n mod con- Continuous Delivery vs. Continuous Deploytinuu. Cnd voi putea s nv toate aceste ment, Martin Fowler
instrumente dintre care menionez cteva
Livrarea continu se refer la ideea c
precum puppet, chef, varant, Go CI ? i mai aplicaia este n permanent ntr-o stare n
mult, cine ne va pune la dispoziie timp pen- care poate fi pus n producie. Deployment
tru a le integra n proiectele noastre care sunt continuu este de fapt punerea n producie a
deja n urma fa de planificarea managerilor aplicaiei la fiecare schimbare de cod, n fiecare
notri.
zi sau chiar mai des.
Eu cred c trebuie s ne ntrebm ce vom
Atunci cnd am citit primul fragment
ctiga prin a implementa primul dintre mi-am spus: Interesant, deployment contiprincipiile agile, iar rspunsul este feedback. nuu e mai bun decat livrare continu! i acum
Pentru a ne asigura c recunoatem valoare civa ani s-ar putea s fi avut dreptate. Jez
aa cum este specificat n primul principiu, Humble a spus la un moment dat c livrarea
trebuie s nvm ce neleg clienii i busi- continu nu are nevoie de deployment conness-ul prin valoare, exact la fel cum facem tinuu, iar vice-versa nu e neaprat adevrat.
i cu atributele de calitate. De fapt, n acest ns acum eu cred c este mai important s
context valoare este calitate i vice-versa. De fii alturi de business, iar utilizarea de deployce trebuie s recunoatem valoarea? Deoarece ment continuu doar n mediul de acceptan
trebuie s ne dm seama cnd am reuit s o nu este suficient. A acorda businessului
atingem sau mcar ct mai avem nevoie pn dreptul de a pune aplicaia n producie este
o vom atinge.
ceea ce nseamn de fapt livrare continu.
Dar de ce afirm toate aceste lucruri? Chiar mai mult, unele companii au diminuat
www.todaysoftmag.ro | nr. 27/septembrie, 2014

25

programare
Livrarea continu
rolul sau chiar ndeprtat ntru totul mediul de acceptan,
punnd aplicaia direct n producie, doar cu o testare minim
din partea developer-ului - ceea ce pentru mine nseamn c cei
doi termeni au fuzionat, motiv pentru care m simt mai n largul
meu s utilizez termenul de livrare continu.

Feedback n CI/CD

i totui, ce ar putea face un dezvoltator care lucreaz ntro firm de outsourcing? De cele mai multe ori nu are acces la
oamenii din business, n cel mai bun caz poate doar acces limitat, pentru c de cele mai multe ori interacioneaz cu analiti
funcionali. Pn recent am crezut c este suficient s faci
curenie n curtea proprie i c atunci cnd cei din jurul tu vor
vedea c modificarea aduce o mbuntire, atunci se vor schimba
i ei, n consecin mbuntind ntreaga companie. i nu este
chiar greit, dar ideea are o capcan: aduce cu adevrat valoare
dac eu l vd ca un beneficiu? Probabil de multe ori nu suntem
oameni tehnici, de multe ori am petrecut ore n ir lefuind ntrun diamant o poriune de cod care deja funciona. Util pentru
business poate ar fi fost ca acel cod s ruleze deja n producie.
Consider c trebuie s ntrebm oamenii din business care
sunt valorile pe care ei le urmresc n luarea deciziilor. De fapt
noi facem acest lucru deja atunci cnd ntrebm despre atributele de calitate. Dac ai fost la unul din cursurile lui Tom Gilb cu
siguran eti deja convins c primul lucru pe care trebuie s l
faci este s ntrebi businessul care sunt primele lor zece valori; i
ne vom focaliza asupra soluiei care va avea ROI-ul cel mai mare
(ROI - return of investment), o vom implementa, dup care trecem la urmtorul, i urmtorul i tot aa.

Extinderea nelesului termenului de terminat

Urmnd practicile agile, n principal utiliznd Scrum i


Kanban, suntem obinuii cu expresia definiie pentru terminat,
n englez definion of done, pentru user stories. Definiia o folosim
pentru ca ntre membrii echipei i stakeholder-ii proiectului s
avem aceeai nelegere asupra a ce trebuie realizat pentru ca un
item de pe backlog s fie cosiderat complet. mi aduc aminte c
atunci cnd am nceput practicarea Scrum credeam c un item
complet reprezenta ce trebuia s fac pentru ca un user story s
fie acceptat de ctre Product Owner. Dup cteva sprinturi am
nvat s neleg prin terminat tot ce trebuia s fac pentru ca
story-ul s ajung n producie; pn la urm Scrum precizeaz
la calitatea potenial livrabil, lucru care atunci cnd m uit n
trecut nsemna de fapt terminat n contextul integrrii continue.
Mai trziu, pe lng eforturile de a practica integrarea continu, ne-am uitat i la modaliti de unificare a deployment-ului
aplicaiilor n diferite medii. Era un dezastru total, noi - echipa
de dezvoltare nearshoring - eram responsabili pentru deploymentul i stabilitatea aplicaiei pe mediul de testare i acceptan, n
timp ce echipa de ntreinere era responsabil de infrastructur i
deployment n producie.

26

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Dar, pe msur ce timpul a trecut, am nceput s unificm


procedurile de instalare i de mprire a responsabilitilor ntre
echipe; noi, dezvoltatorii, cream artefactele pentru o versiune a
aplicaiei, adic din instrumentul de integrare continu produceam artefacte care nu depindeau de mediul n care vor fi puse,
n timp ce echipa de ntreinere se ocupa de instalare n toate
mediile, rezolvnd n acelai timp i configurrile care depindeau
de mediu. Trebuie s recunosc c nu a fost deloc uor, am avut
cteva probleme: de exemplu adugarea unei noi configurri
dar, n cele din urm, am ajuns s lucrm mai aproape cu echipa
de ntreinere, unii ar putea chiar zice c am ajuns s lucrm
mpreun. i aa am reuit s mpingem nelesul termenului terminat i mai departe: terminat - ca i instalat n producie, n
minile utilizatorilor.
Recent am auzit o prezentare a lui Adrian Cockcroft, ex-architect ef la Netflix, n care spunea c pentru ei cod terminat, adic
software terminat, e atunci cnd este retras din producie. Ceea
ce nseamn c responsabilitatea noastr ca implementator nu se
termin atunci cnd am scris codul i acesta a ajuns pe mediul
de acceptan sau chiar producie; ci terminat nseamn a avea
grij de software pe ntreaga lui via: atunci cnd l crem, atunci
cnd ruleaz, avnd grij s fie n condiii optime de memorie sau
CPU, fcnd mentenan, mbuntindu-l de fiecare dat cnd
are nevoie, iar la final, atunci cnd l retragem din producie ntrun mod controlat.

Livrare continu n gndirea lin

Dac ne uitm la principile Lean, vom vedea c acestea nu


sunt deloc diferite fa de ce am prezentat mai sus: utilizarea
de iteraii, cu incremente mici de la ideea de business la client,
folosind feedback-ul din utilizarea produsului i adaptndu-l,
crescnd funcionalitatea n mod organic.
La finalul fiecrui ciclu echipa trebuie s livreze un increment,
dar trebuie ales cu atenie ce alegem deoarece trebuie s ncepem cu cel care aduce cea mai mult valoare utilizatorilor. Atunci
cnd este utilizat obinem feedback prin utilizarea unor metrici i
nvm, dup care decidem ce urmeaz s construim. Nu spun
c trebuie s astepi cteva sptmni fr s faci nimic pentru a
obine valori realiste n urma msurtorilor, trebuie s ai munca
planificat n avans, dar atunci cnd gndeti funcionalitea
trebuie s foloseti ceea ce ai nvat de la utilizator. Iar atunci
cnd observi ceva problematic n producie, ceva ce afecteaz
utilizatorii, poi mult mai repede s identifici proactiv, amnnd
munca mai puin prioritar i s fixezi problema. Este important
s realizm c expresia de incremente mici nu se refer neaprat
la perioada de timp, ci la cantitatea de modificri, cu alte cuvinte
trebuie s acorzi atenie la volumul de munc pe care l faci n
paralel (WIP - work in progress).
Un alt principiu al gndirii line este de a creea calitate n
tot ceea ce faci, build quality in. Nu vei putea pune n minile
businessului butonul cel mare i rosu: Deploy Now! fr a avea
mecanisme automate de a valida calitatea produsului. Iar pentru
aceasta va trebui s nelegi ce nseaman calitate pentru business. S nu cazi n capcanele comune: ce inelegi tu prin calitate
nu e neaprat ce businessul nelege prin ea. Calitatea nu este la
fel pentru dou produse, chiar i pentru acelai client. Calitatea
cost - aadar identific pragul la care ea trebuie livrat. nelesul
calitii s-ar putea schimba de-a lungul evoluiei sistemului.
Aadar mergi la business i ntreab care sunt calitile pe care
i le doresc de la produs, definetele mpreun cu ei ntr-un mod
cuantificabil i construiete mecanisme automate care s verifice

TODAY SOFTWARE MAGAZINE

c sistemul respect nivelul pentru fiecare atribut de calitate


identificat.
Important n gndirea lin este i eliminarea surplusului, a
muncii n zadar, adic identificarea prilor care ncetinesc sau
ngreuneaz ritmul de munc sau a prilor care nu aduc valoare
sistemului. n momentul n care ai un proces pe care l urmreti
i msurtori prin care s obii feedback i cu ajutorul crora s
nvei, vei putea cu uurin s identifici care parte a sistemului sau
procesului te ncetinesc sau te limiteaz. Odat identificat, este
evident c nu merit s acionezi n alt parte, orice mbuntire
n alte locuri are drept cauz acumularea de i mai mult munc
n zona problematic.
Decide ct mai trziu! Pentru a lua decizii bune e nevoie s ai
informaii detaliate despre domeniul respectiv, ceea ce nseamn
timp, adic bani. n consecin vei dori s amni momentul lurii
deciziei pn cnd este cu adevrat critic. Prin aceasta vei reduce
riscul de a lucra n zadar, deoarece nu mai este nevoie sau odat
cu trecerea timpului informaiile tale asupra problemei s-au
modificat. Trebuie ns s avem grij s nu ajungem la paralizieprin-decizie, deoarece nu avem suficiente informaii pentru a lua
o hotrre.
Dup cum am menionat n mai multe rnduri pn n acest
punct, n Lean este important actul nvrii, atunci cnd lum
decizii sau atunci cnd prioritizm. Cu alte cuvinte nseamn c
trebuie s ne uitam la trecut i s nvm att din greeli ct i
din sucese. Aa c pe lng msuratorile pe care le pui pentru
aplicaie i pentru modul de lucru, organizeaz mecanisme prin
care s asiguri nvarea continu. Review-ul sprintului, cunoscut
i ca demo sau retrospectivele sunt un bun nceput, deoarece ele
asigur feedback pentru produs i respectiv modul de lucru, ns
sunt multe altele pe care ai putea s le faci. De exemplu uit-te la
eecurile din producie i organizeaz post-mortem-uri nu pentru
a atribui vina, ci pentru a nva din greeli i a nu le repeta. Nu
te limita prin a te uita doar n mediul proiectului tu, uit-te la
ntreaga organizaie, la ce se ntmpl n industrie; dar, nu uita:
nu face lucrurile doar pentru c i alii le fac, aplic soluii pentru
c nelegi care sunt beneficiile n contextul tu. Pe lng nevoia
de a nva suntem responsabili i de a transmite i altora ce am
nvat.
Ultimul aspect dar nu mai puin important este c n Lean
avem nevoie de o echip cu putere de decizie. O echip trebuie
condus, nu micro-manageriat pe parcursul ntregului proces de
implementare; las membrii echipei s se organizeze singuri, ai
ncredere n ei c vor face tot ceea ce este n puterile lor, iar dac
au nevoie de ajutor l vor cere. Ca manager al echipei f un pas n
spate i asigur-te c exist imaginea de ansamblu iar ceea ce face
echipa e n concordan cu planul, vezi care sunt impedimentele
echipei, ajut echipa s le contientizeze i s le nlture.

Aadar, livrarea continu reprezint producerea de valoare


pentru business prin software de calitate n cicluri rapide, cu
incremente coninnd puine modificri, observnd efectele
modificrilor i utiliznd feedback pentru a mbunti produsul
i procesul de creare al acestuia. Sunt un mare fan al dezvoltrii
condus de testare, folosesc aceast tehnic de fiecare dat cnd
ajung s codez, indiferent de limbajul de programare pe care l
folosesc: java, nodejs, xquery pentru development pe Marklogic,
javascript pentru dezvoltare pe client, sau chiar bash pentru scripturi de instalare m axez iniial pe ce vreau s obin, cum l
voi utiliza, creez metode de testare dup care implementez. Dar
TDD e doar primul nivel la care putem obine feedback, utiliznd
livrarea continu asigurm un ciclu aciune -> rspuns la nivel
de business, iar pentru a reui avem nevoie de colaborare ntre
oamenii de business i oamenii tehnici.

Principiile i practicile livrrii continue

Pn n acest punct am descris n principal de ce i cum


adoptarea practicii de livrare continu ajut o organizaie, sau
n conextul outsourcing-ului, organizaia clientului i a aceluia
care dezvolt software prin crearea unui parteneriat centrat pe
ctigul ambelor pri. n aceast seciune vom analiza principiile
i practicile.
n primul i primul rnd trebuie s crem un proces de
deployment repetabil, pentru a ne asigura c avem un proces n
care s avem ncredere. Pentru a obine acest lucru vom ncepe
prin a observa cum o idee de business, o funcionalitate, ajunge
la utilizator. S nu cumva s credem c aceasta se rezum doar la
a alege un story, n a-l implementa i a-l pune n producie. Nu!
Trebuie s ne uitam la ntregul drum pe care o funcionalitate
l are: din momentul n care ia natere, cum este definit, prioritizat fa de alte funcionaliti, cum se alege echipa care l va
implementa, cum se asigneaz resursele, cum se planific munca
i doar dup toate acestea ne uitm la implementare. La nceput
va fi ameitor volumul de informaii i haosul care acum va fi
aparent. Creeaz board-uri pentru fiecare stream, n care fiecare
pas va reprezenta o coloan, iar cel mai important va fi s urmezi
principiile lean i agile.
Atunci cnd ai harta pe care o funcionalitate o strbate pentru a fi implementat, identific zonele care ncetinesc ritmul de
munc de la un stadiu la altul i, mai mult, nelege de ce. Acestea
sunt punctele n care vei dori s acionezi n primul rnd. Pentru
a le mbunti ncearc s reduci sau elimin ceea ce nu aduce
valoare, iar ceea ce rmne trebuie automatizat rezultatul va fi
o munc mai rapid i mai de ncredere.
Pentru c vom dori s folosim cicluri rapide, prin care
s obinem seturi de modificri mai mici, atunci cnd ceva se
stric, vom putea cu uurin s vedem ce s-a modificat de cnd
www.todaysoftmag.ro | nr. 27/septembrie, 2014

27

programare
Livrarea continu
funciona totul corect. Pentru a obine aceast lucru va trebui
s versionam totul, nu doar codul, ci i configurrile, cerinele
funcionale, scripturile de instalare, API-urile, i orice altceva ne-am putea gndi; chiar mai mult, ar fi util s putem s
relaionm modificrile ntre ele.
Dac o activitate este dureroas, atunci cu att trebuie fcut
mai des. Am putea ncepe cu procedura de deployment, dar nu
se limiteaz doar la aceasta. Gndete-te la problemele ce pot
aprea n producie, poi organiza exerciii pentru a repeta procedura de recuperare n diferite scenarii de failure, n acest mod
vei putea fi pregtit pentru momentul n care o situaie real va
aprea, mai mult, cu timpul vei avea mai multe cunotine despre
procedur i o vei putea automatiza. Dup cum cei de la Netflix
au fcut cu Chaos Monkey, care oprete aleatoriu noduri n
producie i monitorizeaz stabilitatea sistemului, i mai trziu
cu ntreaga Symian Army, care oprete instane la diferite nivele
ale infrastructurii.
Cu toate cele menionate mai sus, nu poti spune gata, am
terminat!. Pentru c toate fac parte dintr-o munc continu i
trebuie s vezi cum poi mbunti fiecare pas.

Crearea unui pipeline de deployment

Noi suntem doar oamenii tehnici, ce am putea face noi? O


dat ce ne-am asigurat c suntem aliniai cu cei din business, c
ne orientm eforturile pe lucrurile care aduc cu adevrat valoare,
e nevoie i s crem suportul pentru tot ce e menionat mai sus.
Cu alte cuvinte vom implementa un deployment pipeline.
Un deployment pipeline este spargerea procesului de construire n mai muli pai independeni. n urma fiecrui nou pas
cretem ncrederea n noua versiune, de obicei cu costul trecerii
timpului. Paii de la nceput vor gsi majoritatea problemelor,
conducnd la feedback rapid, iar paii ulteriori vor folosi tehnici
de sondare.
Nu vom reui niciodat s dovedim c un soft nu are bug-uri,
dar putem ncerca s prindem ct mai multe dintre ele.
Recomandarea mea este s ncepei prin a identifica pipelineul pe care l avei momentan. Sunt sigur c exist unul, ncercai
s l vizualizai - folosind kanban boards; vedei unde se acumuleaz munca, identificai cum este prioritizat munca n aceste
locuri, ce tipuri de munc sunt practicate.
Asigurai-v c deinei tot ce poate avea trasabilitate: cod,
configurri, scripturi de asamblare i instalare, sau chiar artefactele care sunt produse n procesul de asamblare i mpachetare.
n momentul n care ai toate cele de mai sus, un urmtor pas
ar fi standardizarea deployment-ului: adic compilarea i asamblarea artefactelor o singur dat, dup care instalarea lor n
oricare dintre medii se face cu aceleai scripturi sau mecanisme.
Ceea ce nseamn c artefactele vor fi independente de mediul
de rulare, configurrile sunt i ele trasabile, iar construirea i
instalarea este automatizat i identic n oricare dintre medii:
dev, test, acceptan, pre-producie i chiar i producie. Acestea
ajut deoarece la fiecare pas cretem nivelul de ncredere n noua
versiune care acum se trece prin pipeline. Ceea ce am putea numi
generic: deployment pipeline instance.
n paralel putem s ne asigurm c avem pai automai care
s creasc nivelul de ncredere n calitatea versiunii; i c paii
manuali sunt pe ct posibil spre captul pipeline-ului. Ai putea
ncepe prin a ncerca testarea de acceptan automat sau testare
de integrare a API-urilor expuse i chiar mai multe unit teste. Nu
trebuie s acoperi ntreaga aplicaie de la nceput, ncepi cu testele care valideaz flow-urile critice, dup care alte pri cu risc

28

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

ridicat, ncerci s acoperi ct mai mult att pe vertical ct i pe


orizontal n funcie de gradul de risc.
Pe lng aceasta ar fi bine s nu uitam de Continuous
Integration, care este prima poart pe care un build trebuie s o
treac, aici putem crete acoperirea cu unit teste, analiza static
dar cel mai important e s avem marje pe care build-ul trebuie
s le treac.
Dup toate acestea te poi ocupa ca deployment pipeline-ul
s fie automatizat: n momentul n care un nou set de modificri
este comis n version control, ntreaga instan este pornit, iar n
momentul n care un pas a trecut automat vom trece la urmtorul.
Dup cum am sublinat n mai multe rnduri trebuie identificat
ce ne ngreuneaz procesul pentru a-l putea ameliora. De fapt,
munca ta pe pipeline nu se termin niciodat, atunci cnd ceva
pic, vezi care este cauza i dac ai fi putut s o prinzi mai repede.
Adaug noi pai n pipeline atunci cnd este nevoie.
De asemenea, s nu cumva s i imaginezi c vei opri toate
proiectele din business timp de 6 luni i s lucrezi doar pe
acest nou i interesant proiect tehnic. Compania ta trebuie s
supravieuiasc, nu exist butonul de pauz. Pipeline-ul trebuie
construit mpreun cu proiectele existente din business, iar la fiecare pas nou adugat trebuie s se vad valoarea imediat i s se
includ costul n bugetul proiectelor.
n ISDC avem IDAM, ISDC Defined Agile Model, suntem
un grup de oameni care ncearc s ajute ISDC-ul n calitatea ei
de companie precum i echipele de development din ISDC s fie
mai bune n ceea ce fac prin urmarea principiilor agile. n urm
cu ceva timp ne-am uitat la cum practicarea livrrii continue ar
putea ajuta proiectele i pe clienii notri. Pe lng recomandrile
pe care le-am avut, am creat i o imagine, o hart a practicilor
pe care le-am identificat la momentul respectiv. Nu este varianta
ideal, nici ce mai bun, de fapt nici mcar o recomandare, ci mai
degrab e un meniu ca la restaurant, din care fiecare trebuie s
ne alegem ce avem nevoie n funcie de riscurile pe care le avem,
adic ce ne ajut pe noi.

Exemplu de continuous delivery pipeline

Concluzii

Unii proabil cred c ceea ce am relatat n acest articol e doar


o poveste frumoas. Eu ns consider c pentru a putea aduce
cu adevrat valoare businessului i nu doar frumusee tehnic,
trebuie s fim contieni de toate acestea.
Cu toate acestea, nici un sfat teoretic nu se compar cu
experiena practic. Datorit posibilelor diferene de percepie,
promit c voi reveni n unul din numerele urmtoare pentru a
prezenta un caz practic de trecere a unui proiect la continuous
delivery. Voi avea ocazia de a expune uneltele folosite i beneficiile
obinute i, nu n ultimul rnd, care sunt practicile recent descoperite sau leciile nvate.

programare

programare

Detectarea fraudelor cu Titan

mplificarea recent a fenomenului jocurilor de noroc online arat c vor exista


ntotdeauna oameni care vor ncerca s ocoleasc sau s evite complet comportamentul corespunztor de business i vor ncerca s obin avantaje din acest fapt.
Vorbesc n primul rnd de impersonificare, de obinerea unor avantaje necinstite de pe urma
promoiilor, a sindicatelor sau simpla ncercare de a gsi o scpare n fluxul de business al
sistemului.
Florin Mguran

florin.maguran@betfair.com
Senior Java Developer
@ Betfair

Munca la Betfair m-a nvat c, atunci


cnd dezvoli aplicaii cu spectru larg, trebuie
s depui 10% (sau mai mult) efort suplimentar pentru a-i proteja aplicaia. Totui, acest
lucru se dovedete adesea a fi insuficient i
trebuie s iei msuri pentru a diminua numrul celor care fraudeaz. Un astfel de exemplu
este ncercarea de a concilia conturile noi i
de a detecta conturile duplicat. n aceast
faz ncepe magia. La Betfair folosim diferite mecanisme pentru a realiza acest lucru.
Voi vorbi n special despre un instrument pe
care noi l-am dezvoltat recent. Se numete
Spider, iar slujba sa este s detecteze conturile
care au legtur, pe baza datelor utilizate n
momentul nregistrrii. Acesta folosete un
set de reguli de potrivire care combin factori
precum neclaritatea (distana Levenshtein),
operaiuni n lan (egalitate, incluziune,
ncepe/ se sfrete cu) i alte combinaii.

Am ales Titan

Din punct de vedere tehnic, problema


pe care ncercm s o rezolvm este crearea
unui grafic al tuturor conturilor create vreodat (reprezentate de noduri) i trasarea
unor hotare ntre conturile care au legtur.
Acesta se reduce la o reprezentare grafic
i un mecanism pentru a cuta rapid prin
toate nodurile. Candidaii au fost Neo4J,
OrientDB, Dex i Titan.
Toate au punctele lor forte i slbiciuni,

dar n final, noi am ales Titan. Este un graphDB nou; proiectul a fost nceput n 2012
de ctre Aurelius1 i a fost conceput cu gndul la scalabilitate i performan. Este bazat
pe Java i cteva dintre caracteristicile sale
includ:
Integrare uoar este de fapt un
artefact maven, un simplu jar pe care l
incluzi n proiectul tu i gata! l ai acolo
(bineneles, trucurile apar mai trziu, cnd
ai nevoie de un comportament specific).
Gratuitate (licen Apache).
TinkerPop stack (deoarece Titan
este bazat pe Blueprints API, poi uor
s conectezi TinkerPop stack pentru
a facilita lucruri precum fast traversal
(traversare rapid), gremlin shell pentru
cercetarea graficelor, rexter pentru vizualizarea graficelor).
Performan bun cnd este utilizat
cu Cassandra backend (scalabilitate i
decuplare).
Accesibilitate ridicat, fr nici un
defect i opiune de scalare orizontal (n
comparaie cu Neo4J, de exemplu)
ElasticSearch utilizat pentru a indexa
nodurile i muchiile (i cum ES este reunit
n fascicul, noi putem oricnd s scalm
orizontal prin adugarea mai multor VM)
Pentru a completa imaginea, trebuie de
1 thinkaurelius.github.io/titan/

www.todaysoftmag.ro | nr. 27/septembrie, 2014

29

programare
Detectarea fraudelor cu Titan
asemenea s menionm i slbiciunile lui Titan. Cteva dintre
acestea sunt:
Tehnologie nou (prima versiune n 2012).
Se bazeaz pe clustering (grupare) ambele Cassandra i ES
funcioneaz n propriul lor cluster (fascicul), astfel oferindu-v
o abordare diferit a infrastructurii aplicaiei voastre.
Nu sunt prea muli utilizatori; suport limitat de la Aurelius
(o comunitate semi-activ cu rspunsuri de la creatori/ dezvoltatori unde chiar dac rspunsul este prompt, este nevoie de
timp pentru a face toate modificrile) .
Bine, poate c am triat puin, deoarece noi deja lucram cu
Elastic Search i am vrut s ncercm i Cassandra, dar, per total,
Titan este o alegere redutabil pentru reprezentri grafice i ne
satisface nevoile foarte bine.
Pe la mijlocul proiectului am descoperit c PayPal a dezvlui ntr-un comunicat de pres c i ei utilizeaz Titan pentru a
descoperi frauda, deci, din pcate, nu ne putem luda c suntem
primii care folosesc Titan pentru acest scenariu anume. Totui, n
industria jocurilor, putem afirma cu mndrie c suntem prima
companie care i scaneaz clienii dup o multitudine de reguli
pentru a preveni i detecta frauda.
Singura problem pe care am ntlnit-o n mijlocul procesului de implementare a fost cnd am realizat c avem nevoie de o
versiune specific a Elastic Search i am fost obligai s ramificm
codul baz al Titan pentru a reconcilia versiunile.

noastre de potrivire impuse de ctre echipa de fraud i a crea


liniile corespunztoare. Un exemplu simplu de reprezentare grafic ar putea fi urmtoarea imagine (observai lanurile frumoase
cnd sunt potrivite mai multe conturi):

Una dintre mbuntirile performanei pe care le-am fcut i


care merit menionat este o opiune de cutare lene, care se
bazeaz pe crearea liniilor n timpul de rulare cnd se caut noi
legturi. Dac ne-am fi decis s crem un grafic complet n timpul
creterii activitii, am fi vorbit de sptmni de indexare a datelor, ceea ce ar fi fost inacceptabil din punctul de vedere al utilitii.
Cutarea legturilor nseamn n principiu nceperea cu
numai un nod surs i adunarea tuturor nodurilor adiacente (ca
i un pianjen) pn cnd se atinge un numr maxim predefinit al
Implementarea Spider
rezultatelor, stocarea rezultatelor n Cassandra i trimiterea ctre
Am decis s utilizm Titan mpreun cu Cassandra (pentru solicitant a unui mail cu un fiier zip coninnd toate fiierele csv
persisten) i Elastic Search (pentru indexare/ cutare rapid). cu rezultatele.
Modul n care am fasonat problema noastr a fost s reprezentm conturile drept noduri (stocnd datele de nregistrare drept Concluzie
atribute ale vrfurilor), dar pentru c se cerea o cutare logic cu
n general, Titan este un instrument pe care l-a recomanda
specificator ambiguu, am trebuit s stocm atributele n text clar. dac scenariul dumneavoastr de afacere solicit o reprezentare
Acest lucru nu ne-a fcut prieteni cu departamentul de securitate, grafic bazat pe java a datelor voastre model i avei nevoie de
deoarece ei aveau reguli stricte n legtur cu stocarea datelor per- traversare rapid i scalabilitate progresiv. Este un framework
sonale de identificare n NoSQL, dar a fost un compromis pe care amuzant cu care s lucrezi, iar proiectul de patru luni a dovedit
am fost nevoii s l facem.
c este o soluie fezabil. Deci concluzia mea este: Betfair + Titan
Am folosit fire multiple pentru a popula iniial graficul uti- = love!
liznd date preluate de la Oracle DB, iar apoi ne-am bazat pe
Titan pentru a cuta n paralel n Elastic Search pe baza regulilor

30

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

programare

programare

Pragmatism n programare

Mihnea Lazr

mihnea.lazar@msg-systems.com
Java Developer
@ msg systems

ragmatismul ca termen general se refer la abordarea unei sarcini ntr-o manier care
urmrete aspectul practic i util al abordrii, pentru a o face ct mai eficient.
n domeniul programrii, acest termen este adesea cunoscut sub numele de bune
practici ale programrii. Acestea se refer adesea la scrierea unui cod curat i gestionarea
codului ntr-o form ct mai eficient, lizibil, att pentru persoana care scrie codul, ct i
pentru persoanele care vor citi codul n viitor. Articolul de fa va prezenta o serie de idei, care
au ca scop mbuntirea modului de scriere a codului i a modului n care tratm proiectele
la care lucrm.

Curenie i geamuri sparte

n interiorul oraelor mari, se observ


adesea cum cldiri ngrijite, n stare bun, pot
sta adesea exact lng alte cldiri, aflate ntro stare foarte proast. n urma unor studii
fcute asupra vandalismului, a fost elaborat
teoria geamului spart, care spune c de la un
singur geam spart lsat nereparat ntr-o cldire foarte ngrijit, cldirea respectiv poate
ajunge n termen de doar cteva luni s fie
ntr-o stare foarte proast. Respectivul geam
spart lsat nereparat red locuitorilor din
acea cldire, precum i celor din vecintate,
o senzaie de abandon, nepsare, nengrijire.
Aa se mai ajunge la nc un geam spart n
scurt timp, care duce la o u de la intrare
spart, la graffiti i la probleme structurale
mai avansate. Aceast teorie a fost folosit din
anii 80 n statele americane pentru a reduce
rata de vandalitate i a mbunti nivelul de
trai al locuitorilor oraelor mari.
Aplicat n mediul software, teoria
aceasta ncurajeaz evitarea lsrii geamurilor sparte n crearea codului. Aceasta se
poate referi la o poriune de cod neimplementat, la anumite funcionaliti lsate
n urm, sau la o poriune a unei pagini

web lsate incomplet. Oricare din acestea,


odat cu lansarea i folosirea produsului,
vor lsa un gust amar utilizatorului care va
folosi respectivul produs i se va lovi de un
zid atunci cnd va dori s acceseze anumite
funcionaliti care fie vor funciona eronat,
fie vor produce un crash. Astfel, se ncurajeaz o grij pentru detaliu n realizarea unui
proiect, pentru a nu lsa astfel de elemente
incomplete n urm. Dac, din lips de timp,
se ntmpl s trebuiasc s lsm anumite
funcionaliti neterminate pentru a trece
la alte sarcini mai urgente, se ncurajeaz
s baricadm geamul lsat n urm. Acest
lucru se poate realiza prin comentarea codului care altfel ar returna o eroare sau un crash,
prin nlocuirea cu dummy-data, hardcodare
sau simpla afiare a unui mesaj de Under
construction.

Duplicare

Duplicarea codului este o problem ce


apare n orice proiect, uneori datorit unei
singure persoane care lucreaz pe proiect,
alteori datorit mai multor persoane, prin
lips de comunicare. Cteva ponturi pentru
a evita aceast problem sunt:

www.todaysoftmag.ro | nr. 27/septembrie, 2014

31

programare
Pragmatism n programare
Documentarea codului, prin comentarii sau
documentaie;
Comunicarea mersului i a problemelor
aprute, fie n form personal, prin edine
periodice, fie n mediu virtual, prin descrierea
problemelor ntr-un mediu centralizat;
Implementarea unui comportament generic,
reutilizabil pentru mai multe tipuri de obiecte.

Ortogonalitate.

Conceptul de ortogonalitate se refer la


mprirea unei aplicaii n componente ct mai
independente. Se ncearc evitarea crerii unei
metode sau clase care se ocup de prea multe
sarcini. n cazul unei metode, fiecare ar trebui s
aib un singur rol, scop sau comportament, iar n
cazul unei clase, aceasta ar trebui s se ocupe de un
singur tip de comportament sau scop.
Atunci cnd componentele sunt izolate una
fa de cealalt, problemele ce apar ulterior sunt
detectate mult mai uor, iar comportamentul lor
este mult mai uor de a fi neles i modificat.

CONFERENCE2014

ndeajuns de bun

Adeseori, n situaiile de realizare a unui proiect


la care s-a acordat timp insuficient, se propune utilizarea noiunea de good-enough software. Aceast
noiune propune o implicare mai mare a utilizatorului, sau end-user-ului n realizarea de software,
pentru a evalua mai n detaliu ct de rafinat dorete
acesta ca produsul s fie, n comparaie cu ct de
repede s fie livrat. Se pot ntmpina cazuri n care
utilizatorul s doreasc un produs livrat rapid, cu
funcionalitile de baz, la care s se poat aduce
schimbri i mbuntiri cu timpul.

Contracte

Societatea a trebuit, n ultimii ani, s gseasc o form de


a rezolva i de a face ct mai eficiente tranzaciile desfurate.
Dintre soluiile gsite pentru aceste lucruri, se pot aplica unele i
n scrierea de cod. Una din cele mai bune soluii pentru a asigura
o tranzacie eficient o reprezint scrierea unui contract bun sau
a unor specificaii tehnice dezvoltate de ctre i pentru persoanele
tehnice care se ocup de proiect, opional cu ajutorul persoanelor
din domeniul business care se ocup de proiect.
Acest concept a fost dezvoltat de ctre Bertrand Meyer, pentru
limbajul de programare Eiffel. Este o metod simpl i puternic
ce presupune cderea asupra unui acord i documentarea comportamentului i a obligaiilor modulelor unui proiect, pentru a
asigura funcionarea eficient i corespunztoare. Astfel, scopul
final este de a ajunge la un program care face exact ceea ce se
dorete original s fac, nici mai mult, nici mai puin.
Fiecare parte a programului, orict de mare sau mic, are
un scop de ndeplinit. Astfel, aceste scopuri i ateptri pot fi
mprite n urmtoarele categorii:
Precondiii se refer la datele de intrare.
Postcondiii desemneaz datele produse sau aciunile care
se garanteaz c vor fi efectuate.
Invariante denumesc elementele care se pot modifica n
timpul rulrii poriunii de cod din contract, dar care vor avea

32

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

aceeai valoare dup rulare.

Cunoaterea IDE-ului.

Fiecare programator i realizeaz munca prin intermediul


unui limbaj de programare. Cu ct mai bine i cunoate limbajul de programare ales, cu att mai bine i poate face munca.
Codul realizat cu acest limbaj de programare este scris prin intermediul unui IDE (Integrated development environment). Fiecare
IDE ofer o gam de posibiliti pentru asistarea n scrierea de
cod. Este astfel de o importan i utilitate ridicat, s cunoatem
bine mediile de programare n care lucrm. O cunoatere bun
a IDE-ului poate uura cu mult sarcinile care trebuie fcute. O
prim tem de aprofundare n oricare mediu de programare sunt
scurtturile de la tastatur. A ti s lucrm ntr-un IDE fr a
folosi mouse-ul mbuntete cu mult modul i viteza de lucru.
Scurtturile de baz ntr-un IDE, care pot elimina nevoile unui
mouse, sunt n numr de aproximativ 10 pentru un IDE standard
precum Eclipse.

Comunicare

n domeniul programrii, comunicarea este un element cheie


n munca de zi cu zi. Aceasta se realizeaz fie cu clienii, fie cu
colegii, fie cu mainriile, prin scrierea de cod. Este important

TODAY SOFTWARE MAGAZINE


s tim s comunicm ct mai eficient. Aici sunt o serie de idei
scurte despre comunicarea n mediul dezvoltrii software:
S ne organizm ideile nainte de a le comunica. S formulm anterior ceea ce dorim s spunem, fie c acest lucru
va fi pe cale scris, ntr-o edint, sau ntr-o ntrebare adresat
colegului de birou.
S ne cunoatem publicul. Odat cu ideile formulate, trebuie s avem n vedere i cui sunt adresate ideile respective.
n mediul realizrii unui proiect, fiecare parte va privi altfel
problema adus n fa. Cineva din management, de exemplu,
va privi altfel o problem, i va avea nevoie de explicaii diferite
dect cineva de pe latura tehnic.
S ne alegem bine momentul. Pauzele de mas nu sunt
ntotdeauna un moment bun pentru a discuta despre problemele aprute n proiect.
S prezentm ntr-o manier agreabil ceea ce dorim s
comunicm. Dac apelm la forma scris, s fim siguri c este
un mail bine scris, iar dac este n form oral, s fie comunicat
coerent.
S inem cont de feedback. Se poate ntmpla ca rspunsul
primit s nu fie ceea ce doream s auzim.

Limbaje de programare;
Cri tehnice;
Cri non-tehnice (management, finane, auto-dezvoltare,
etc.);
Evenimente, prezentri din domeniu;
Publicaii, reviste, site-uri de tiri tehnice;
Mentori, pentru a cere sfaturi i sugestii.
n acest articol sunt prezentate doar cteva idei asupra
mbuntirii muncii depuse n domeniul software ntr-o manier
pragmatic. Sunt idei accesibile, de care este important s inem
cont pentru a ne putea face ct mai bine munca i a avea ct mai
multe rezultate bune.

Bibliografie
The Pragmatic Programmer: From Journeyman to Master Andrew Hunt,
David Thomas
http://www.manhattan-institute.org/pdf/_atlantic_monthly-broken_windows.pdf

Geanta de cunotine

Odat cu trecerea timpului, limbajele de programare sunt


actualizate, ameliorate sau chiar nlocuite. Fiecare limbaj are
propriile sale caracteristici, avantaje i dezavantaje. Proiectele
i produsele noi de pe pia cer cunoaterea limbajelor de programare actuale, adaptate nevoilor de performan actuale. Este
astfel necesar meninerea unui bagaj de cunotine actualizat
periodic. Meninerea unui astfel de portofoliu poate fi comparat
cu meninerea unui portofoliu financiar. Astfel avem o serie de
idei aplicabile pentru ambele tipuri de portofolii:
Investiiile s fie fcute periodic i constant, pentru a se
forma un obicei;
Diversificarea investiiilor. Cu ct cunotinele unei persoane sunt mai variate, cu att acea persoan este mai valoroas;
Echilibrarea investiiilor, ntre cele sigure, cu dobnd
joas, i cele riscante, cu dobnd ridicat. Tehnologiile noi ar fi
investiii riscante, ns n cazul n care ar dobndi popularitate,
dac sunt puine persoane care cunosc o tehnologie nou,
aceste persoane sunt cu att mai importante pentru un proiect;
Revizuire i reactualizare periodic. Odat la cteva luni,
n urma analizelor fcute, putem constata dac investiiile noi
mai prezint potenial de dezvoltare sau dac sunt altele cu un
potenial mai ridicat.
Idei de investiii:

www.todaysoftmag.ro | nr. 27/septembrie, 2014

33

programare

Clean code Funcii

n ultimul articol din TSM, am descoperit mpreun universul codului curat, prin ,,Clean Code scris de Robert C. Martin. Am
avut ocazia s aprofundm subiectul denumirilor i s vedem ct de uor pot lucrurile mici precum numele funciilor sau al
variabilelor s mbunteasc calitatea i lizibilitatea codului nsui.

Astzi vom plonja mai adnc n


Clean Code i vom discuta despre funcii
(,,Functions). Acest mecanism simplu i
de baz folosit pentru a scrie programe
poate avea un impact nu numai asupra
uurinei cu care poate fi ntreinut i extins
un program, ci i asupra sntii mintale a
dezvoltatorilor. Nu uitai c metodele lungi
v vor face ochii s lcrimeze.
Imaginai-v o carte n care toate
paragrafele sunt amestecate, mrimea
caracterelor este diferit pentru fiecare
dintre ele i o parte din ele au 20 de pagini.
Ct de uor ai putea citi aceast carte?
Codul ar trebui s fie scris ntr-un fel care
s ofere oamenilor ansa de a-l citi ca pe o
carte, de la nceput pn la sfrit, n care
fiecare logic diferit este grupat separat.

O poveste vesel

Aceasta este prima i cea mai important regul legat de funcii. Ar trebui s
le pstrai ct mai scurte posibil. Explicaia
este destul de simpl: o funcie scurt va
face mai puin (numai un singur lucru
simplu). n plus de asta, va fi mai uor de
neles i de lucrat cu ea.
ntrebarea normal care ne vine n
minte este ,,Ct de scurte?
100 de linii?
50 de linii?
10 linii?
5 linii?
Din pcate, nu putem avea un numr
magic cum ar fi 5 sau 20, pentru c este
destul de greu s generalizezi. Lungimea
unei metode depinde de factori multipli,
cum ar fi conveniile codului. De exemplu, ct de des apei enter pentru a aduga
o nou linie (pentru fiecare { sau pentru
fiecare afirmaie logic i aa mai departe).
n general, dac sfreti prin a avea o
metod mai lung de 10 15 linii de cod,
atunci ar trebui s arunci o privire peste ea
ca s vezi de ce este aa de lung. Este din
cauza conveniilor codului sau din cauz
c exist prea mult logic acolo?

mi amintesc o dat cnd a trebuit s


extind un cod existent scris de altcineva.
Cnd am deschis soluia am gsit o singur
clas, cu 2 sau 3 metode, care avea n total
n jur de 4.000 linii de cod. Estimrile mele
pentru sarcina aceasta au fost:
4 zile de restructurare,
1 z i p e nt r u a a d u g a n o u a
funcionalitate.
Blocuri i indentare
n legtur cu IF(dac), ELSE (alt),
Managerul meu de proiect de la acea WHERE (unde), REPEAT (repetare)i
vreme a acceptat aceast estimare i mi-a alte astfel de funcionaliti, nu ai vrea s
dat und verde pentru a lucra la el. Dar n te trezeti cu un IF de 10 linii. Ar fi destul
final, am avut nevoie de 4x mai mult timp de greu de citit i de neles. Pentru astfel
pentru a ndeplini sarcina, deoarece meto- de cazuri, ar trebui s extragi controlul
dele n sine erau prea lungi i nu am putut (check) ntr-o funcie diferit i s l apelezi
face nimic fr a avea comaruri noaptea. din comanda IF. Aplicnd aceast regul,
Aadar ce putem face pentru a vei avea comenzi ca IF sau WHERE care
mbunti calitatea dezvoltatorilor i necesit numai o singur linie de cod.
a software-ului nostru din perspectiva
Mai mult, v vei mbunti lizibifunciilor/ metodelor?
litatea i documentaia codului. Pentru
dezvoltatori va fi foarte uor s neleag ce
S fie scurte
face codul i ce ar trebui s fac controlul

34

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

din spatele acelui IF sau WHERE.

Un singur lucru de fcut

Dac citeti o funcie lung, i dai


seama c face mai mult de un lucru acolo.
De exemplu, n aceeai funcie deschizi
conexiunea DB, execui o cerere, transformi rezultatul ntr-un alt tip i te ocupi
de cazurile speciale. Fiecare dintre lucrurile acestea ar trebui fcute separat.
De aceea o funcie ar trebui s fac
numai un singur lucru. Dac ai nevoie s
faci mai mult de un lucru, atunci ar trebui
s le mpari n funcii separate.
Chiar dac afirmaia este att de simpl, este destul de dificil s faci asta. Dac
descoperii ntr-o funcie pri diferite ale
codului care sunt grupate sau dac putei
extrage o parte din aceasta ntr-o funcie
separat cu un nume care are sens, atunci
funcia face mai mult dect un singur
lucru.

Un nivel de abstracie per Funcie

Acesta poate fi un mecanism care ne


poate spune c funcia face prea multe
lucruri. De exemplu, o funcie care proceseaz o entitate i de asemenea ncepe
s se divid n interior i s transfere unul
dintre cmpurile entitii, are mai mult de
un nivel de abstracie.
Este destul de clar c ar trebui s extragi
procesarea n lan ntr-o alt funcie. n
acest fel, fiecare funcie va avea un singur
nivel de abstracie.
Comanda Switch
Povestea legat de comenzile switch
este destul de lung i vom vorbi despre
ea cu alt ocazie. n cazul nostru, ar trebui
s extragem logica din fiecare CASE pentru a separa funciile. Chiar dac facem
acest lucru, nu va fi ok, deoarece nclcm
principiul unicei responsabiliti (Single

TODAY SOFTWARE MAGAZINE


Responsibility Principle).
Noi ar trebui s nlocuim comanda
switch cu polimorfismul. Aceasta este
soluia perfect, dar exist cazuri n care
o astfel de soluie ar aduce n plus prea
mult complexitate. Cnd este nevoie s
foloseti o comand switch, ar trebui s
o ascunzi ct de adnc posibil; n Clean
Code, recomandarea este n spatele unui
factor abstract.

Utilizai denumiri descriptive

Numele unei funcii ar trebui s descrie


exact ceea ce face. Nici mai mult, nici mai
puin. De exemplu, o funcie cu nume precum DO, ACTION nu ne ajut prea mult,
pentru c nu tim care este scopul lor.
Un nume ca, TriggerDoorLock
(Declaneaz blocare u) ne ofer toate
informaiile de care avem nevoie pentru a
tii ce face aceea funcie.
Gsirea unei denumiri bune este destul de dificil i poate nsemna un consum
mare de energie. n plus, trebuie s fii
constani i s ncercai s utilizai acelai
model de denumire atunci cnd exist
similariti.

Argumentele funciei

Cte argumente ar trebui s aib o


funcie? Cea mai bun valoare este 0, dar
acest lucru nu este posibil ntotdeauna. De
fiecare dat cnd adugai un argument
nou, gndii-v la rolul su.
Cnd ajungei s avei mai mult de
3-4 argumente, poate c ceva e greit. Ar
trebui s le revizuii i s vedei dac nu
putei muta funcia ntr-o alt locaie sau
s adugai un alt nivel de abstracie.
Opiunea OUT pentru argumente nu
este recomandat ntotdeauna i poate
semnala c ceva este greit acolo. De

exemplu, metodele TryXXX verific de


obicei dac poate fi fcut o conversie.
Dac aceasta poate fi efectuat cu succes,
rspunsul este TRUE iar parametrul out
va conine rezultatul conversiei. Aceasta ar
putea semnala c metoda face prea multe
lucruri transformri i verificri.

Fr efecte secundare

Aceasta este situaia n care funcia ta


face mai mult dect un singur lucru, dar
fr a spune clientului. De exemplu, o
metod READ care citete coninutul unui
fiier i apoi l terge fr a notifica utilizatorul. n acest caz, utilizatorul ar trebui s
fie ntiinat despre aceast aciune sau, cel
puin, ar trebui s tie de ea din momentul n care face apelarea - ReadAndDelete
(Citete i terge).
Din cauza acestor efecte secundare,
putem avea cuplri temporare. De exemplu, cnd funcia GoLeft poate fi apelat
numai dac a fost apelat StartEngine.
Ar trebui s v gndii la o modalitate
de a expune numai metodele care sunt
disponibile la un anumit moment, fr
a crea cuplri temporare. De exemplu,
StartEngine poate returna un obiect care
are numai comenzi ca GoLeft, GoRight,
etc.

Comandai separarea cererii


O funcie ar trebui s fac numai un
singur lucru. Nu ar trebui s avei niciodat metode care s execute o cerere i
n acelai timp o comand. Aceste dou
aciuni trebuie s fie separate ntotdeauna,
fr excepie.

Preferai excepiile i nu erorile de cod

Producerea unui cod eronat genereaz


dou lucruri n plus de care trebuie s se

ocupe dezvoltatorul/ clientul. El trebuie


s cunoasc harta fiecrui cod greit i n
acelai timp trebuie s verifice codul eronat produs.
Pentru aceste cazuri, proiectarea unei
excepii este mai bun i va simplifica
munca clienilor. n plus, tratarea erorilor
va fi 100% separat de logica ta.

Extragei blocurile try/catch

Un cod care conine astfel de blocuri


sunt destul de urte i lungi. Din aceast
cauz, toate aceste blocuri de cod ar trebui s fie extrase n funcii separate. Blocul
TRY poate fi pus ntr-o funcie i blocul
CATCH poate fi pus ntr-o alt funcie.

Nu v repetai

Tot codul care este duplicat ar trebui


extras ntr-o funcie separat. Nu doar vei
reduce numrul de linii de cod, dar v vei
i uura viaa atunci cnd va fi nevoie s se
fac o modificare. Este mai uor s modifici numai o linie de cod dect s caui i s
modifici toate locaiile n care codul este
duplicat.

Lucruri mrunte

Dup cum putei vedea, lucrurile


mrunte pot face o mare diferen ntre o
funcie bun i una proast. Nu este nevoie
s faci sau s tii te miri ce nebunii pentru
a fi capabil s scrii funcii fericite. innd
cont de aceste recomandri vei putea scrie
un software mai bun, care peste 10 ani va
fi ntreinut mai uor i cu mai puini bani.
Radu Vunvulea

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

www.todaysoftmag.ro | nr. 27/septembrie, 2014

35

programare

Integrarea client server cu ajutorul RestKit

n momentul de fa exist foarte multe servicii web la care te poi conecta pentru a obine date folositoare. De exemplu Instagram,
Twitter pentru imagini sau tweeturi sau n cazul meu personal Foursquare, de unde pot obine o list cu barurile din zon. n
general ai putea s te conectezi direct la servicii de genul acesta cu NSURLRequest sau cu o librrie precum AFNetworking. Aici
intervine RestKit, care te scutete de cteva bti de cap i parsri de JSON.

Ce este RestKit?

RestKit este un framework Objective-C al crui scop e


uurarea interaciuniilor cu servicii web de tip RESTful . n linii
mari, combin un HTTP request/respone API simplu i uor de
folosit cu un sistem puternic de mapare care reduce mult din
boilerplate codeul de care ai avea n mod normal nevoie, atunci
cnd lucrezi cu servici web. Cel mai important aspect a RestKit
e ca permite developer-ului s se gndeasc mai mult cum s-i
construiasc data modelul i s-si fac mai puine griji pentru
cum s trimit request-uri sau s parseze JSON i s mapeze rezultatele la obiecte native.

Ce conine?

RestKit conine un client HTTP care are la baz


NSURLConnection i pune la dispoziie o librrie de metode
ajuttoare pentru inspecia tipurilor MIME i a status codes. De
exemplu, trimiterea datelor dintr-un form const doar din crearea
unui dicionar cu parametri. De asemenea, exist i un suport
simplu pentru upload-ul de fiiere mari (ex: video).
Suportul la nivel de framework pentru schimbarea serverelor
i a enviroment-urilor (ex: development, production) este de asemenea oferit. RestKit folosete base URL i resource paths n loc de
URL-uri ntregi pentru a permite schimbarea rapid ntre servere.
Un sistem de mapare a obiectelor. Reskit ofer un layer de
modelare pentru maparea datelor procesate n obiecte native
Cocoa. Nu mai trebuie s-i faci griji pentru parsarea rspunsului
JSON. Maparea obiectelor e fcut cu ajutorul a key-value coding.
De asemenea, ofer integrare cu Apple Core Data framework. Acest lucru permite RestKit s pstreze obiecte ce au fost
ncrcate de pe un server ntr-o baz de date local folosit pe
post de cache sau baza de date principal sincronizat periodic
cu Cloudul.
Data base seeding. Cnd se folosete n cadrul aplicaiei Core
Data, RestKit e capabil s populeze aceast baz de date local,
lucru care permite upload-area n App Store a unei aplicaii cu o
baz de date local deja existent i funcional.

36

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

Integrare cu Rails. RestKit a fost construit la nceput ca un


rspuns Objective-C la Active Resource, dar cum Rails este folosit
n general pentru un backend de iOS, era i normal ca RestKit s
ofere suport n acest sens.

Exemplu
Voi extrage doar partea legat de RestKit din proiectul
meu. Pornind de la o aplicaie simpl cu o list, pe care o vrem
populat cu locaiile dorite oferite de serviciul de la Foursquare.
Aceasta const din doua view controller-e mai importante, un
UITableViewController pentru list i un UIViewController pentru
detaliile fiecrei dintre locaii. Nu voi intra n detalii despre cum
ar trebui s se fac aceasta sau cum ar trebui s arate, deoarece nu
este subiectul articolului.
Dup ce avem proiectul pregtit, sunt dou modaliti de a
aduga RestKit ntr-un proiect: CocoaPods sau Git submodule.
Din motive de simplitate i rapiditate am ales CocoaPods , instalarea pods-urilor fiind doar cteva linii de comand n terminal:
$ sudo gem install cocoapods
$ pod setup
$ cd /calea/catre/ProiectulVostruCuBaruriApropiate
$ touch Podfile
$ [edit] Podfile (using your preferred editor; vim,
nano, etc)
platform :ios, 5.0
pod RestKit, ~> 0.20.0
$ pod install

Nu n ultimul rnd, nainte de a putea folosi APIul, trebuie s


nregistrm aplicaia pe https://foursquare.com/developers/apps.
Mai multe detalii despre serviciul folosit gsii pe https://developer.foursquare.com/docs/venues/search.
De aici vei avea nevoie de client ID i client secret, pe care le
pueti aduga n proiect sub form de macros
#define kCLIENTID @Your Foursquare Client ID
#define kCLIENTSECRET @Your Foursquare Client Secret

Dup ce ai fcut setupul i toi paii cerui, putei testa


serviciul i observa c n rspunsul serviciul vei avea cam

arhitectur

TODAY SOFTWARE MAGAZINE

ntodeauna un JSON de genul :


{

meta: {
code: 200
},
notifications: [
{
item: {
unreadCount: 3
},
type: notificationTray
}
],
response: {
confident: true,
neighborhoods: [],
venues: [
{
categories: [
{
icon: {
prefix: https://
ss1.4sqi.net/img/categories_v2/food/bar_,
suffix: .png
},
id: 4bf58dd8d48988d1e0931735,
name: Bar,
pluralName: Bars,
primary: true,
shortName: Bar
}
],
contact: {
formattedPhone: (408) 4469000,
phone: 4084469000,
twitter: jackslongdrinks
},
hereNow: {
count: 0,
groups: []
},
id: 51630409498eedc7dd88e60b,
location: {
address: 20686 Stevens Creek
Blvd,
cc: US,
city: Cupertino,
country: United States,
crossStreet: De Anza Blvd,
distance: 936,
lat: 37.32246179607897,
lng: -122.03470838696346,
postalCode: 95014,
state: CA
},
name: Jacks Cocktails,
referralId: v-1390061483,
specials: {
count: 0,
items: []
},
stats: {
checkinsCount: 3790,
tipCount: 40,
usersCount: 1460
},
verified: true
},
{
categories: [
{
icon: {
prefix: https://
ss1.4sqi.net/img/categories_v2/food/bar_,
suffix: .png
},
id: 4bf58dd8d48988d1e0931735,
name: Bar,
pluralName: Bars,
primary: true,
shortName: Bar
}
],
contact: {
formattedPhone: (650) 3212161,
phone: 6503212161,

twitter: downtown_coffee
},
hereNow: {
count: 0,
groups: []
},
id: 4dd1580eb3adb047f5024231,
location: {
address: 101 Forest Ave,
cc: US,
city: Palo Alto,
country: United States,
crossStreet: at Alma St.,
distance: 17063,
lat: 37.442086282055726,
lng: -122.16159119091502,
postalCode: 94301,
state: CA
},
name: Downtown Coffee,
referralId: v-1390061483,
specials: {
count: 0,
items: []
},
stats: {
checkinsCount: 14168,
tipCount: 118,
usersCount: 4044
},
verified: true

Partea de cod

Acum c avem toate piesele la un loc, putem ncepe s construim aplicaia. Pentru acest articol ne vom lega doar de dou
componente mari ale RestKit: Network i Object Mapping.
Pentru Network, definim baza URL-ului pentru API-ul Forsquare
(https://api.foursquare.com) i trimitem/primim mesajele. Pentru
Object Mapping vom defini un model pe care l vom mapa la valoriile JSON returnate de catre serviciu.
Dup ce examinm un pic JSONul de mai sus, putem crea
o clasa Locatie care s extind NSObject. De dragul simplitaii,
pentru moment, i adugm o singur proprietate:
@interface Venue : NSObject
@property (nonatomic, strong) NSString *name;
@end

i importm clasa nou creat i RestKit n view controller-ul


principal.
#import <RestKit/RestKit.h>
#import Locatie.h

Adugm o metod de configuarare a RestKit i una de


ncrcare a locaiilor ntr-una din metodele de lifecycle, de preferat viewDidLoad.
- (void)viewDidLoad
{
[super viewDidLoad];

[self configureRestKit];
[self loadVenues];
}

Dup care crem i metodele n sine :


- (void)configureRestKit
{
// initialize AFNetworking HTTPClient
NSURL *baseURL = [NSURL URLWithString:@https://
api.foursquare.com];
AFHTTPClient *client = [[AFHTTPClient alloc]
initWithBaseURL:baseURL];

// initialize RestKit
RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client];
www.todaysoftmag.ro | nr. 27/septembrie, 2014

37

programare
RestKit pentru iOS

// setup object mappings


RKObjectMapping *venueMapping = [RKObjectMapping
mappingForClass:[Venue class]];
[venueMapping addAttributeMappingsFromArray:@
[@name]];

// register mappings with the provider using a


response descriptor
RKResponseDescriptor *responseDescriptor =
[RKResponseDescriptor responseDescriptorWithM
apping:venueMapping
method:RKRequestMethodGET
Pattern:@/v2/venues/search

path-

keyPath:@response.venues
statusCodes:[NSIndexSet indexSetWithIndex:200]];

[objectManager addResponseDescriptor:responseDes
criptor];
}

n metod, definim baza URLului despre care vorbeam i mai


devreme, pentru APIul Forsquare. Toate request-urile vor fi legate de acest URL.
Clasa RKObjectManager definete maparea dintre un atribut
JSON i atributul corespunztor din data model. addAttributeMappingsFromArray este o metod care se poate folosi n
cazul n care JSONul i modelul au aceleai chei, n cazul nostru
name.
Pe urm crem un RKResponseDescriptor, care descrie o
mapare a unui obiect care este aplicabil unui rspuns HTTP.
pathPattern este comparat cu URL-uri pentru care maparea ar
trebui folosit. keyPath:@response.venues e folosit de RestKit
pentru a gsi obiectele pentru locaie.
- (void)loadVenues
{
NSString *latLon = @37.33,-122.03; // aici
putem sa trecem locatia noastra curenta
NSString *clientID = kCLIENTID;
NSString *clientSecret = kCLIENTSECRET;

NSDictionary *queryParams = @{@ll : latLon,


@client_id : clientID,
@client_secret :
clientSecret,
@categoryId :
@4bf58dd8d48988d1e0931735,
@v :
@20140118};

[[RKObjectManager sharedManager] getObjectsAtPath:@/v2/venues/search


parameters:queryParams
success:^(RKObjectRequestOpe
ration *operation, RKMappingResult *mappingResult) {
_venues = mappingResult.array;
[self.tableView
reloadData];
}
failure:^(RKObjectRequestOpe
ration *operation, NSError *error) {
NSLog(@Din pacate nu sunt baruri in zona: %@, error);
}];
}
@interface MasterViewController ()

@property (nonatomic, strong) NSArray *venues;

@end

38

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

@implementation MasterViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusabl
eCellWithIdentifier:@Cell forIndexPath:indexPath];

Venue *venue = _venues[indexPath.row];


cell.textLabel.text = venue.name;

return cell;
}

E o librrie folositoare cu care practic am redus tot codul


necesar pentru parsare, mapare i ncrcare n cele dou metode
scurte menionate mai sus. De aici putem dezvolta modelul i s
avem mai multe atribute. n final, lsnd la o parte detaliile precum harta i butoanele de navigare, ar trebui s avem o list ca n
imagine, funccional, cu barurile din jurul nostru.

Mihai Fischer

mihai.fischer@gmail.com
iOS developer
@ Dens.io

evenimente

TODAY SOFTWARE MAGAZINE

Cum poi testa conferine de testare

ou conferine de testare internaionale i destul de cunoscute la care am participat au fost Eurostar n 2012 i 2013 (n
Amsterdam i Gteborg) i CAST n 2014 (n New York). Cu experiena de la CAST nc proaspt, am ajuns la concluzia
c a merge la astfel de evenimente e o ocazie bun pentru a avea o experien benefic.

Cnd particip la un astfel de eveniment, exist anse mari


s m aflu ntr-un perimetru cu o densitate mare de oameni
pasionai de ceea ce fac, crora le place testarea, care caut moduri
de a-i mbunti munca i care sunt deschii s mprteasc
experienele lor. Interaciunea cu astfel de oameni e n majoritatea cazurilor valoroas.
Uneori se ivesc idei pe care ncerc s le aplic de cum m
ntorc. Alteori influena participrii nu e att de direct. Exist i
o influen mai subtil. Ajungnd s discut cu oameni pe care i
tiam numai de pe Twitter i din line-up-ul conferinelor am ocazia s m expun la idei care modeleaz abordarea mea n testare.
i influena nu apare din faptul c am vorbit cu oameni faimosi. Concepte cum ar fi gndirea critic, testarea exploratorie,
euristici, leaky abstractions, game of life, sisteme intractabile, reificare, presupuneri latente, i multe altele sunt prezente.
Conferinele sunt un spaiu n care am ocazia s i provoc i s le
pun ntrebri oamenilor care vorbesc despre ele i le stpnesc,
pentru a nelege mai bine i a internaliza semnificaia lor.
Una din prile mele preferate este spaiul n care am ocazia s exersez testarea. Exist la EuroSTAR un TestLab puternic,
cu multe provocri i exerciii din care s aleg, inclusiv sesiuni

practice cu prezentatori. Acolo am ncercat s gsesc modele n


comportamentul roboilor de la Lego, sau al puzzle-urilor de testare exploratorie ale lui James Lyndsay i am testat aplicaii open
source. Uneori lucrez la ele singur, alteori prefer s colaborez
cu oamenii din jurul meu. Am vzut abordri foarte interesante
n rezolvarea problemelor. Am vzut cum alii structureaz
informaiile. Fcnd debriefing i rapoarte, am neles cum au
gndit alii soluii la provocri.
La CAST am participat la competiia de testare, un interval de
dou ore n care scopul era s colaborez cu coechipierii (oameni
pe care nu i tiam de dinainte i cu care nu mai lucrasem) pentru
a gsi buguri i a crea un raport bun.
Aa c, dei n principal spaii de socializare, aceste conferine
ofer i contexte n care s exersezi testarea i s nvei din abordrile altora.
i EuroSTAR i CAST ofer un atelier de o zi ntreag,
care presupune s m concentrez pe o tem i s o tratez n
profunzime. Pn acum am participat la sesiuni practice, n care
am avut ocazia s mi pun mintea la contribuie.
Discuiile de la berea de dup programul conferinei nu sunt
deloc de ignorat. i nu numai pentru c barurile au bere bun.
Pentru mine au fost ocazii bune de a avea discuii degajate n
care s cunosc mai bine oamenii cu care mpart plcerea pentru
testare. Mi se pare relevant s aflu cum au ajuns alii s testeze,
prin ce experiene au trecut, ce vor s mbunteasc i ce opinii
au. Posibilitile legate de importana, contextul i diversitatea
muncii pe care o fac devin brusc mult mai multe!
Din cele trei participri ale mele, dou au fost n rolul de
prezentator. Aa c n continuare vreau s mprtesc cteva din
lucrurile folositoare, i uneori total neateptate, cu care am rmas
din acest tip de experiene i s art de ce cred c participarea ca
prezentator poate fi mai interesant dect participarea simpl i
fr griji.
www.todaysoftmag.ro | nr. 27/septembrie, 2014

39

evenimente
Cum poi testa conferine de testare
Prezentatul la conferine

Vorbitul n public. Wow. Cnd e vorba de a-i da cu prerea,


se gsete mereu n jur cineva cu o opinie puternic, care nu se
poate abine s-i exprime ideile i s acapareze discuia. Lumea
asta e plin de oameni care au ceva de zis.
Sau oameni crora pur i simplu le place s se aud vorbind,
care folosesc cuvinte strlucitoare ca s spun...nimic. N-ai vrea
s fii unul dintre aceia, nu?
Vorbitul n public poate fi despre asta. Poate fi i despre multe
altele, dup cum am observat din experienele pe care le-am avut
recent.
S v spun cteva cuvinte despre activitatea mea principal.
Eu testez software. Adic dedic mare parte din zi unei activiti
intelectuale de investigare tehnic i empiric a produsului la
care contribui i analizez critic ideile care conduc procesul de
dezvoltare software. Da, activitatea mea e parte din procesul de
dezvoltare.
Pun la ndoial deciziile luate n echip, ca parte din procesul
de design al produsului. Da, activitatea mea e parte din designul
produsului.
Zona n care operez e n aria ingineriei, fiindc folosesc
euristici ca s produc cea mai bun schimbare n condiii de incertitudine i resurse limitate. Da, activitatea mea ine de inginerie.
Produsul activitii mele e informaie pe care o transmit
oamenilor care au putere de decizie i interese n proiect. Pentru
mine asta nu sun exact ca descrierea unui om care vorbete des
n public. Totui, m-am descurcat i cel mai miraculos e c am
supravieuit.

prima. Cu i mai muli oameni n public i ateptri mari.


De atunci am mai vorbit de cteva ori i am avut ocazia s experimentez situaii noi de fiecare dat. Am avut chiar
experiena n care un om din public aipea n timpul prezentrii
(doar o singur dat pn acum, din fericire). Nu pot spune c am
o experien vast, ns experienele pe care le-am avut mi-au dat
ocazii destule s nv lucruri.
Cteva lucruri interesante pe care le-am descoperit:

Exprimarea clar nu e trivial

Pentru pregtirea prezentrilor, mi-am fcut un obicei din a


ine prezentarea pentru oameni apropiai, ntr-un mediu asemntor cu cel al prezentrii reale. Ideea e s in prezentarea ca i
cum a fi la conferin. Dei repet n capul meu nainte, sau repet
fragmente n faa unor oameni, sau le povestesc rezumatul prezentrii, mi-am dat seama c nu e prea asemntoare experiena
cu ncercarea s prezint cap-coad ca i cum a fi la prezentarea real. Doar atunci realizez c ceea ce vreau s transmit nu se
potrivete cu ceea ce exprim uneori.
Exerciiul de forma aceasta m ajut s mi dau seama ce idei
a vrea s subliniez mai mult, la ce detalii pot renuna, sau ce
detalii lipsesc ca s exprim clar o idee.
Pentru ultima prezentare la care am lucrat, am fost uimit de
ct de neclare erau concluziile de la final atunci cnd ncercam s
le articulez, dei n mintea mea preau c au sens. Faptul c am
descoperit asta nainte de a ine prezentarea la conferin a fost de
ajutor. Am avut destul timp s le revizuiesc i s le clarific.
Aceast perspectiv mi sugereaz c poate nu sunt singura
care nu se exprim clar din prima. Nu avem mereu timp pentru
Oare cum am ajuns eu s prezint?
repetiii cu orice vrem s spunem. Mi-am dat seama c e folositor
Rspunsul la ntrebarea aceasta nu e unul foarte clar nici pen- s in cont de asta n unele cazuri cnd particip la edine/discuii
tru mine.
i s amn s judec ce a spus o persoan pn cnd am pus ntrencurajarea de la oamenii din jur cred c a contat. Un coleg brile clarificatoare care s m asigure c era ntr-adevr ce vroia
de munc i apoi Test Managerul cu care lucrez m-au ncurajat s s transmit.
aplic s vorbesc la conferine de testare. Chiar i dup prima oar
cnd nu mi-a fost acceptat aplicaia. mi surdea ideea pentru c Lucrnd la prezentri nv s construiesc argumente puternice
era o ocazie s particip la conferin, cu costuri reduse.
Cnd vreau s afirm ceva ntr-o prezentare, m gndesc c fienainte de prima prezentare pe care am inut-o, la EuroSTAR care idee e susceptibil la diferite reacii ale oamenilor din public.
n 2013, experiena mea consta n mare parte din reprezentaii Pentru c nu a vrea s par superficial i s fiu surprins de un
la serbri colare de final de an i susinerea lucrrii de licen. contraargument valid (din seria cine ar vrea, i totui, cui nu i
Mai vorbisem la un eveniment local de testare, dar artam cteva se ntmpl), m gndesc n ce fel a putea invalida ipoteza mea
exerciii de la un atelier la care participasem, deci nu era coninutul i ncerc s mi construiesc argumente pentru diferite feluri de
meu. n rest nu mai avusesem un public foarte numeros i un reacii.
cadru formal pn atunci (cel puin din cte mi amintesc, aa c
Asta m determin s analizez ct de clar e gndirea mea i
dac am ceva amintiri s rspund la posibile ntrebri din public naintea prezentrii. E
reprimate, v rog s-mi un exerciiu bun pentru a-mi contura argumentele pe care le am
nelegei omiterea).
i pentru a le mbunti.
Norocul a fcut ca
mi amintesc c la una din prezentri ncercam s identific
prezentarea mea de la motive pentru care nu gsisem n timp util buguri relevante
EuroSTAR s fie destul pentru o funcionalitate. Faptul c am pus sub semnul ntrebrii
de popular, aa c am concluziile mele i am ncercat s gsesc contraargumente m-a
mai inut-o nc o data ajutat s ajung mai n profunzimea situaiei i s gsesc argumente
n aceeai zi, la sesiu- puternice pentru nevoia de comunicare eficient i colaborare,
nea numit do-over, pentru euristica de a evidenia n rapoarte i zonele pe care nu
n care se relua pre- le-am acoperit n timpul testrii, pentru relevana cunoaterii
zentarea cea mai votat informaiilor contextuale care provin din buguri raportate n alte
din timpul conferinei. zone dect cele pe care m concentrez eu, precum i importana
Aa am avut i a doua gruprii informaiei n categorii potrivite i accesibile.
experien de vorbit n
public la conferine de Pregtirea prezentrilor m ajut la clarificarea unor idei
testare, n aceeai zi cu
Aspectul anterior aduce un alt beneficiu. Cutnd s mi

40

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Ce e interesant pentru public

ntresc argumentele, lucrez i la clarificarea concluziilor pe care


le trag.
Nu o singur dat m-am rzgndit n privina ideilor pe care
vreau s insist ntr-o prezentare. Schimbarea de focus mie mi
arat c am neles dintr-o alt perspectiv situaiile pe care le-am
analizat. i nelegerea pe care am dobndit-o o pot folosi pe proiectul pe care lucrez.
De exemplu, n prezentarea de la CAST m-am concentrat pe
explorarea abilitilor pe care le folosesc n testare. Faptul c am
analizat felul n care mi folosesc abilitile m-a ajutat s devin
mai contient de interaciunea dintre ele, care pare mai relevant
dect abilitile luate individual, atunci cnd evaluez eficiena n
rezolvarea problemelor.

n timp ce lucram la prezentri, m ntrebam uneori dac va


fi interesant ce zic eu pentru cei din sal. Pn la urm, fac o
prezentare ca s transmit altora ceva, nu o fac doar pentru mine.
Tendina mea pn acum a fost s vorbesc mult despre
experienele mele, s spun poveti despre cum lucrez eu, despre
ce am ncercat, ce rezultate am avut i ce am nvat.
Momentan cred c dac lucrul la o prezentare m duce la o
nelegere mai profund a ceva legat de cum testez, cum a putea
s abordez problemele pe care vreau s le rezolv, i e bazat pe
ceva ce eu am experimentat, exist ansa s aib valoare pentru
altcineva. Poate nu n acelai fel, poate n cu totul alt context. Dar
oamenii se lovesc de probleme destul de similare, dac triesc n
medii de aceeai natur. Chiar dac eu nu gsesc soluii, iniiativa
de a trata o problem poate s i ncurajeze pe alii s caute soluii
potrivite pentru ei.
Aa c ntrebarea asta nu m mai bntuie atta timp ct tema
despre care vreau s vorbesc e de real interes pentru mine i cred
c m poate ajuta pe mine n vreun fel.
Euristica pe care o folosesc acum e c orice e de interes profund pentru mine poate s i intereseze i pe alii. Dup asta
m ghidez n alegerea temelor i n cutarea de motivaie de
prezentator.
Toate aceste argumente funcioneaz pentru mine ca s vreau
s particip la astfel de evenimente i s prezint. Poate c tu ai gsit
sau vei gsi alte lucruri de valoare. Te invit s le mprteti sau
s le caui.

Motivele pentru care merit s prezini pot fi multe


A putea s scriu n detaliu i despre altele:
Faptul c fac o prezentare m motiveaz s analizez critic evenimentele i deciziile pe care le iau.
Faptul c atunci cnd creez prezentri, lucrez la construirea
unor poveti convingtoare i consistente. O abilitate pe care o
pot folosi i atunci cnd povestesc despre procesul meu de testare
oamenilor din echip. Dei spun aici povesti, nu m refer la sensul de invenii, ci de relatri. Am descoperit c n activitatea
mea e folositor s pot oferi o relatare congruent a ceea ce am
fcut i de ce. Prezentnd informaiile ntr-un mod eficient, clar,
e mult mai probabil ca aceste informaii s ajung la oamenii care
au nevoie de ele i s fie interpretate corespunztor. Vorbind la
conferine de testare mi exersez aceast abilitate.
Un alt aspect este ocazia de a primi feedback, i deci de a
nelege interpretrile i perspectivele altor oameni.
Am descoperit i c mprtirea experienelor mi aduce
satisfacie pentru c mi permite s relaionez cu alii. Dei sunt
ntr-o poziie vulnerabil atunci cnd vorbesc n faa multor
oameni pe care nu i cunosc, de multe ori ei sunt deschii s lege
propriile experiene i cunotine de subiectul prezentat de mine
i asta duce la rezonare mai des dect alienare.
Cred c sunt multe alte motive de acest fel. i pot s le descopr doar prezentnd din nou.

Alexandra Casapu

alexandra.casapu@altom.ro
Software Tester
@ Altom Consulting

www.todaysoftmag.ro | nr. 27/septembrie, 2014

41

programare

diverse

Tranziia de la QA la BA

ragi colegi din IT, m-am tot gndit ce lucruri interesante s v mprtesc din
experiena mea profesional i, din fericire, rspunsul era chiar sub nasul meu:
v voi povesti cteva episoade din viaa mea de analist business care ar putea s
v ofere o mai bun nelegere i un sprijin n munca voastr din prezent.

Monica Petraru

monica.petraru@urss.ro
Senior Business Analyst
@ UNIQA Raiffeisen
Software Service

42

nr. 27/2014 | www.todaysoftmag.ro

Dup cum v putei imagina cu toii,


suportul profesional este luat mereu n
considerare n toat industria. Prin simpla cutare pe diverse motoare de cutare
(cum ar fi Google), termenul ,,business
analyst (analist business) subliniaz faptul c profesionitii din acest domeniu sunt
la mare cutare. O multitudine de joburi
sunt oferite n prezent de ctre multe companii pentru poziia de business analyst,
adic cei care funcioneaz drept o legtur
ntre cei din IT i nevoile de business ale
clienilor lor. Noi, ca analiti de business,
suntem antrenai s nelegem cum tehnologia poate servi scopurilor n afaceri.
n plus, noi, analitii de business,
suntem foarte cutai i n sectorul public
i n cel privat. Pe lng aceste nevoi apar
urmtoarele ntrebri:
Ce presupune acest rol ?
Ce aptitudini i experien sunt
necesare?
Care sunt beneficiile contractrii fa
de asumarea unui rol permanent?

articol i propune s ofere rspunsul la


aceast ntrebare.
La debutul carierei mele, am nceput
s lucrez ca dezvoltator i tester. Mai apoi,
mi s-a oferit ansa unei tranziii interesante
nspre analiza de business. Primul meu
gnd pe care vreau s l discut este doar
un antreu. Un analist business senior din
echip m-a abordat ntr-o zi i a menionat
faptul c exista un post liber n departament. Am fost sftuit s aplic.
Drept reacie normal la o posibil
schimbare, mi-am spus: ,,ok, aceast ans
pare o rsturnare de situaie interesant; ar
putea fi un moment bun pentru o schimbare. Dup ce m-am gndit bine cteva
zile dac mutarea la analiza de business
ar fi ntr-adevr o micare bun n carier
pentru mine sau nu, am acionat conform
sfatului colegului meu i am aplicat pentru
aceast poziie. Ca o consecin imediat,
m-am trezit mutndu-m de la o echip la
alta.
Bineneles, n realitate, procesul de
tranziie spre analiza de business nu a nceAm fost ntrebai mereu cum poate put prin simpla schimbare a echipelor i a
cineva s treac de la asigurarea calitii domeniilor. Sunt sigur c fiecare dintre
la rolul de analist business. De aceea, acest noi i-a abordat n mod incontient rolul

TODAY SOFTWARE MAGAZINE


de QA (asigurarea calitii) ca i un aspirant la rolul de analist business.
n cele ce urmeaz, a vrea s descriu
ceea ce consider acum ca fiind activitile
fundamentale care m-au ajutat s demonstrez c sunt pregtit pentru a fi un
business analyst.
La un nivel nalt, tipul QA tinde s
se concentreze pe asigurarea faptului c
cerinele sau specificaiile au fost corect
implementate de ctre sistem i aceasta nu
necesit prea multe rezolvri de probleme.
Munca de business analyst nseamn
c trebuie s ptrunzi dedesubturile afacerii, s nelegi cerinele, s cercetezi
cerinele i s lucrezi cu afacerea pentru
a identifica cerinele reale, ct i s i pui
n aplicare abilitile de rezolvare a problemelor pentru a concepe o soluie care s
ndeplineasc toate cerinele.
Din punctul meu de vedere, ca specialist QA (inginer n asigurarea calitii), te
afli ntr-o poziie favorabil pentru a afla
mai multe despre domeniul analizei business. Poi participa la edinele de analiz
a cerinelor, care de obicei sunt conduse
de ctre analiti de business sau de ctre
cineva care ocup acest rol n compania
voastr. Dac este aa, acum este momentul s devenii un critic al cerinelor. Pe
lng cele menionate mai sus, ncercai
s nelegei ,,cum-urile i ,,de ce-urile
specificaiilor pe care le vedei i s nvai
ce face diferena dintre o cerin tehnic
bun i una slab. Pur i simplu punei-v
n locul analistului business i evaluai ceea
ce observai.
innd cont de faptul c exist, cu
siguran, analiti de business n compania
voastr, ar trebui s luai n considerare
ansa de a-i intervieva despre cunotinele
lor, ilustrndu-v scopurile n carier i
aflnd mai multe despre acest rol. Discuii

ca i acestea v-ar mri ansa de a v implica


mai mult n procesarea cerinelor sau de a
obine informaii despre cum funcioneaz
aceasta n organizaia voastr.
Trecerea brusc de la asigurarea
calitii la analiza de business nu pare ceva
imposibil. Dup prerea mea, metamorfoza major a gndirii este ceea ce implic
o sarcin ncheiat. n asigurarea calitii,
lucrurile sunt considerate a fi ncheiate
atunci cnd ndeplinesc toate cerinele
(sau cel puin o submulime a celor care
echipa decide c sunt suficient de bune
pentru lansare). n analiza de business,
ncheierea este mult mai neclar. Ca business analyst, trebuie s ai grij de o idee
sau un concept ntr-un stadiu echivoc i
apoi s induci o definiie sclipitoare a ceea
ce nseamn ,,ncheiat pentru proiectul
software. n urmtorul pas, ca i analist
business, slujba ta este s aliniezi toi stakeholderii (toate prile implicate) n jurul
acestei idei. A fi capabil s tratezi lipsa de
precizie, cooperarea i s facilitezi comunicarea, este de cea mai mare importan.
Din perspectiva QA (asigurrii calitii), ai
putea proceda ntr-o manier similar celei
cnd se gsete un defect care poate sau nu
s fie o funcionalitate dorit i trebuie s
iniiezi un proces de detectare a cerinelor.
Poate oricine s joace rolul unui business analyst? De fapt, nu exist o norm
strict. Specialitii n analiza de business
tind s provin dintr-un trecut educaional
cu studii economice sau s fi fcut tranziia
la acest rol pe baza experiene tehnice care
le-a oferit suficiente cunotine n domeniu
pentru a se specializa ntr-o zon a afacerii.
La un moment dat n evoluie sa, un analist business poate s dezvolte o experien
suficient pentru a preda acele abiliti n
diverse dimensiuni operaionale sau tipuri
de proiecte.

Nu uitai, n calitate de analiti de business, este foarte important s nelegei


elementele i aciunile cheie:
Cerine,
Regulile afacerii,
Funcionalitatea,
Devotamentul,
Scopurile,
Participarea la edinele de analiz a
cerinelor,
Crearea de noi procedee,
Preluarea rolului de legtur,
Acumularea cunotinelor despre
produs.
Mult noroc n tranziia spre o carier
n analiza de business!

www.todaysoftmag.ro | nr. 27/septembrie, 2014

43

programare

Time Dude, un joc 3D cross


mobile platform

ime Dude e un full 3d flying shooter, joc care a aprut pentru c o mn de


oameni entuziasmai i pasionai de gaming artiti i programatori- i-au spus
ce-ar fi s facem i noi un joc?. Ajutai de un engine puternic, softuri profesioniste i entuziasm debordant, ne-am apucat de ceea ce prea cel mai simplu i distractiv
mod de a-i petrece timpul: mpucnd oameni preistorici caricaturali, dintr-un avion
fcut din lemn i paie.
Jocul nu necesit experien anteri- i muzic.
oar cu genul lui sau cu orice alt joc. Tot
Avantajul tehnologic i-a spus cuvnce trebuie s faci este s i conduci naveta tul. Pe partea de programare, puternicul
pe ecran, folosindu-te de un singur deget. engine Unity 3d ne-a permis s profitm
Povestea spune c John Q. Dude, aviator i
temerar nenfricat al zilelor noastre, ajunge
dintr-o greeal a prietenului lui, profesorul Klumsey, ntr-o preistorie cartoony i
deloc historically accurate. Avionul, la
rndul lui, s-a transformat ntr-unul realizat din paie i lemn, legate cu liane. Cu
alte cuvinte, nu ne-a stat n cale logica sau
realitatea tiinific.
Creativ vorbind, cu siguran Time
Dude a fost o provocare: fiind primul joc
al proaspt formatului ReeAction Studios,
problemele s-au acumulat rapid i au disprut aproape la fel de rapid. Time Dude
este, cum zic americanii, un labor of love.
Pasiunea pentru gaming pe care membrii
echipei o mprtesc a nsemnat o combinare ntre grafic 2d, grafic 3d, sunete

44

nr. 27/2014 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


rezoluie ct mai mare i de la limitrile
impuse de faptul c jocul este unul adresat
n principal telefoanele mobile i tabletelor.
Jocul este unul adresat tuturor vrstelor. Cu toate c mputi omulei preistorici
dintr-un avion, violena grafic este mult
diminuat de abordarea hazlie i ct mai
simpatic, n spiritul desenelor animate.
dac e s punem la socoteal i comentariile sftoase ale personajului principal.
Aadar, e jucabil de la pitic la bunic.
Unul dintre punctele forte ale jocului este c reprezint un produs aparte n
nia lui. n general, arcade flying shooterele sunt simple, au gameplay instinctiv,
necesitnd mai mult iueal de mn dect
strategie, i sunt 2d. Noi am mers n direcia
opus: nava nu are o vitez superluminic,
permindu-i s te fereti de proiectilele
inamicilor i s i formezi un minim de
strategie ( sunt multe ci alternative, decizii de luat, etc.). Sistemul de upgrade-uri
ne-a permis s implementm puin Role
Playing Gaming n el, prin punctele pe care
eti liber s le aloci ori armurii, ori vitezei,
ori armelor. Aadar, putem spune c e unic
i sperm c aceasta se va reflecta n multe
download-uri, reprezentnd o apreciere
direct proporional cu volumul de pasiune investit.

din plin de spaiul 3d i de puterea terminalelor mobile. Faptul c e foarte uor


utilizat a dus la editarea rapid a nivelelor,
chiar i de ctre artiti nceptori n ale
programrii. Din punct de vedere audiovizual, s-a lucrat cu Photoshop, 3d Studio
Max, Fl Studio i Toon Boom Harmony,
toate softuri standard n industrie.
Probabil cea mai dificil parte a fost
una pur tehnic i anume transferul
fiierelor din softul 3d n engine-ul 3d.
Odat rezolvat problema, au aprut chestiunile cele mai mici, inerente unei prime
incursiuni n realizarea de jocuri. Mai toate
La proiect a nceput s se lucreze n
au pornit de la discrepana dintre artiti, ianuarie 2014, iar acum, n septembrie se
care au viziuni ambiioase i vor ct mai finalizeaz prima versiune a jocului nosmulte feature-uri, ct mai multe poligoane, tru. A fost o perioada de nvare i echipa
de baz a fost format din cinci oameni,
dar part time au colaborat mai muli colegi.
Echipa complet:
Programare, Game Design,
Management - Nicolae Cmpian
Programare - Gyrgy Gbor
3D Art - Vlad Hran
3D Art, Texture - Nagy Attila
Concepts, Textures, Music, SFX,
Level Design, Voices - Liviu Boar
Concepts, Textures, Game & Level
Design - Barbu Hran
Programare - Bogdan Murean
Textures, SFX - Cami Cuibu
Concepts, Textures - Carmen
Sava
Concepts, Textures - Illys Hunor
Concepts, Textures - Vlad Boto

Additional SFX - Demeter Lszl

Perioada de nvare a fost mai lung,


deoarece colile din Romnia de la nivel
preuniversitar i pn la nivel de academic
de arte i computer science nu au specializri n acest domeniu, domeniu care
ulterior genereaz venituri mari i le ofer
ansa creatorilor de a-i pune n practic
visele, prin realizarea acestor jocuri.
Time Dude va fi disponibil att n App
Store, ct i n Google Play n jurul datei
de 1 octombrie, n funcie de rapiditatea cu
care va fi aprobat publicarea.
Speram ca numrul mare de utilizatori
s ne permit s lucrm n continuare la
noi nivele, noi inamici, noi upgrade-uri,
astfel nct s le putem livra periodic doritorilor, coninut de calitate.

Liviu Boar

liviu.boar@reea.net
2d/3d artist, animator
@ ReeaAnimation

www.todaysoftmag.ro | nr. 27/septembrie, 2014

45

testare

Cum batei palma pe un contract

n domeniul IT ca, de altfel n orice afacere din orice domeniu v vei gsi n
situaia de a semna contracte cu partenerii dumneavoastr : contracte de dezvoltare
website, contracte pentru externalizarea software sau pentru dezvoltarea de aplicaii.
Dar pn s ajungei la momentul semnrii uneori trebuie s negociai cu partenerul
anumite aspecte ale contractului, pentru a v concilia interesele.
Claudia Jelea

claudia.jelea@jlaw.ro
Avocat & Consilier in
domeniul marcilor
@ Jlaw
Claudia este specializat pe
aspecte juridice ce implic
mediul online, comerul
electronic i IT&C, protecia
datelor cu caracter personal
i proprietatea intelectual.

Aa cum probabil tii deja, negocierea


contractual nu presupune neaprat aplicarea unei metode sau formule clasice. De
cele mai multe ori, procesul prin care se
ajunge la un punct comun i acceptat de
ambele pri difer de la caz la caz.
Acest articol puncteaz cteva sugestii
de natur juridic ntlnite mai des n practic. Nu vizeaz mbuntirea tehnicilor i
abilitilor dvs. de negociator - lsm acest
aspect pe seama antreprenorilor de succes,
scriitorilor avizai i trainerilor de profil.

Elemente-cheie ale nelegerii


Primul pas este s discutai cu partenerul dvs. i s stabilii punctele principale
ale nelegerii pe care o avei n plan, precum: aspectele comerciale ce in de pre
i de termenele de plat, care sunt milestone-urile, n ct timp trebuie acceptate
livrabilele. Celelalte detalii pot fi discutate i pe parcursul sau ulterior redactrii
contractului.
De asemenea, acordai atenie momentului cnd finalizai negocierile asupra
elementelor eseniale i batei palma;

46

nr. 27/2014 | www.todaysoftmag.ro

atunci, vei avea un contract obligatoriu


pentru pri chiar dac nu avei nc un
document semnat.

nelegei punctele de vedere ale partenerului

ncercai s nelegei care este scopul


i interesul partenerului dvs. i ce vrea
s dobndeasc n urma negocierilor. Se
ntmpl rar s avei aceleai scopuri i
interese; ns, uneori, s-ar putea s avei
surpriza s constatai c interesele voastre
nu sunt neaprat divergente.
De exemplu, un dezvoltator software
poate accepta s cedeze ctre clientul su,
prin contract, toate drepturile de proprietate intelectual asupra aplicaiei create
conform instruciunilor clientului (i cei
mai muli clieni solicit acest lucru). Pe de
alt parte, n practic, exist i situaii (destul de rare) n care clienii nu i manifest
interesul pentru o cesiune a drepturilor de
proprietate intelectual; acest lucru poate fi
n avantajul dezvoltatorului care va prefera
s mai poat folosi, modifica sau personaliza codul surs al respectivei aplicaii i

testare
pentru ali clieni sau pentru alte scopuri.

Negociai!

Nu acceptai din start explicaia clasic


acesta e standardul nostru de contract pe
care l folosim i nu poate fi modificat,
pentru c de cele mai multe ori aceast
replic s-ar putea s fie ea nsi o strategie
de negociere a celeilalte pri. Att timp ct
nu exist un acord al prilor, contractul nu
este ncheiati poate s fie negociat pentru
protecia propriilor interese. Desigur, nu
trebuie omis realitatea c uneori exist
un dezechilibru ntre ct de mult i doresc
sau au nevoie prile s ncheie respectivul contract. Totui, nu presupunei lipsa
de deschidere a celeilalte pri i mcar
ncercai s negociai clauzele care v
intereseaz.
De asemenea, fii precaui dac, pe
parcursul negocierii, partenerul dvs. este
reticent n a v oferi informaii despre
activitatea companiei sau despre asociaii
sau acionarii acesteia mai ales n cazul
n care aceste informaii pot influena
executarea contractului i obligaiile pe
care prile i le asum.

Revizuii contractul i modificrile aduse


acestuia att timp ct avei nevoie

TODAY SOFTWARE MAGAZINE


La semnare
Dac este vorba de un contract important, ideal ar fi s lsai avocaii s se ocupe
de procesul semnrii. Dar dac este un
contract uzual, v putei implica dvs. cu
meniunea s nu omitei detaliile de baz
de exemplu, s semneze persoana care
are autoritatea legal de a semna; nu orice
reprezentant al unei societi poate semna
contracte, n lipsa unei mputerniciri specifice; datarea corect a contractului (n
special dac semnarea contractului are loc
la distan de exemplu, pe e-mail), etc. .

Apelai la specialiti

Este de preferat s beneficiai de ajutorul specialitilor nc de la nceputul


discuiilor contractuale avocai specializai dar i contabili, consultani fiscali.
Pentru ca acetia s v poat asista ct mai
eficient n toate fazele redactrii contractului i pe durata negocierilor, trebuie s
le oferii detaliile i instruciunile necesare, astfel nct s v neleag interesul
de business i punctele la care nu suntei
dispui s renunai. De asemenea, acetia v pot semnala eventuale riscuri (de
exemplu, cnd clientul solicit dezvoltatorului crearea unui website sau a unei soluii
software ce ncalc anumite legi) sau pot
ncerca s le minimalizeze prin modul n
care redacteaz contractul introducnd
seciuni privind rspunderea sau garaniile
oferite.
Este util s reinei faptul c dvs. - nu
avocaii - luai decizia final privind clauzele ce se vor regsi n contract. Avocaii
vor face recomandri i sugestii, dar dvs.
tii cel mai bine care sunt riscurile pe care
suntei dispus s vi le asumai.

Pentru a nu omite aspecte relevante,


nu v grbii cnd analizaicontractul i
modificrile sau sugestiile fcute de cealalt parte; luai-v timpul necesar pentru a
nelege toate aspectele i ntrebai avocaii
acolo unde avei neclariti.
Este posibil ca unele aspecte s nu fie
discutate nc de la nceput. n acest caz,
ele vor trebui armonizate prin prevederile
contractului iar fiecare dintre pri va
propune modificri contractuale care vor
Iar ca not de final: ascultai-v
fi negociate pn se ajunge la un consens. instinctul!

www.todaysoftmag.ro | nr. 27/septembrie, 2014

47

management

Gogu n oc... cultural


- Ssiga-ssiga..., zmbi Gogu la amintirea vacanei i se ls prad reveriei: mare
turcoaz, plaj cu nisip fin, pdure cu pini i
soare pe un cer mereu senin. Doamne, zu
dac insula asta nu e paradisul pe pmnt...
- Ce ssi acolo, Gogule, vreo blond
amintire s te bntuie oare? Nu ziceai c
ai probleme pe proiectul din Golf? Vd c
zmbeti, n-ai treab... Cuvintele lui Miu
sparser reveria lui Gogu.
- Ce blond, Miule, de blonde mi arde
mie?! Da uite c mi-am adus aminte de
vacana n Grecia i uite-aa m-a pocnit o
idee! Gogu i acompanie ultimele cuvinte
de o lovitur zdravn n frunte, evident cu intenia de a sublinia importana
momentului.
- No, las Gogule, nu-i musai s te
pedepseti amu, neleg eu c problema-i
grav... Da zi-mi i mie ce-i cu ssitul...
i mai ales ce-are a face cu proiectul nostru?! Cu ce te ajuta Grecia la planificarea
livrabilelor?
- Nu m-ajut la planificare... redeveni
Gogu serios, m-ajut ns s neleg. Poate.
Aa cred... ia fii atent aici: cnd am ajuns
n vacan, tipa de la agenie ne-a zis s ne
relaxm, s nu ne grbim c viaa pe insul
are propriul ei ritm: ssiga-ssiga, zicea ea,
adic ncet-ncet...
- Aha, aa zic grecii la ncet: ssiga?
- Da. i la nceput n-am prea priceput
eu ce e cu ssiga-ul sta, da m-am prins
repede: ei nu se grbeau, frate, cu nimic.
Autobuzul pleca numai dup ce oferul
termina de fumat igara, chelneru se plngea mereu de treab, n schimb avea timp
s stea de vorb cu tine despre vrute i
nevrute, n general despre ultimul meci din
campionatul mondial, frappe-ul venea la
juma de or dup ce l comandai, dar toi
erau relaxai, calmi... Cam ca tine, aa... Ei,
dup o sptmn intrasem i eu n ritmul
sta numai c atunci s-a terminat vacana...
i ca s ajung la subiect, ideea care m-a
trznit e foarte simpl: cum m-am calmat
eu la greci dup ce m-am prins c sta e
felul lor, aa trebuie i acum s neleg care
e felul celor cu care lucrm acum, i-atunci
lucrurile vor fi mult mai simple.
- Hmm...
- Cam scurt rspunsul tu, ai putea fi
ceva mai detaliat?
- M gndeam, no... E ca i-atunci cnd

48

o venit clientul la din Japonia de tot zicea


Yes-yes-yes i toi am crezut c l-am convins, da el zicea aa semn c-o neles ce
i-am spus noi, nu c era de acord. C dupaia a fcut tot cum o vrut el.
- Exact, Miule. La astea le zice
diferene culturale. Noi suntem suma
educaiei pe care am primit-o, a obiceiurilor pe care le-am motenit i care ne-au
nconjurat, a credinelor prinilor, rudelor, prietenilor alturi de care am crescut.
Iar acestea sunt diferite de experienele
prin care trec oameni din alte pri ale globului. i-atunci e normal ca ei s aib alte
crezuri, alte reacii.
- Aha, mai ii minte cnd am mers cu
japonezul la film? Era n faa noastr, n
sal, grupul la glgios de le-ai fcut tu
observaie...
- Ha-ha... i s-a suprat japonezu, s-a
simit jenat c de ce le-am spus lor direct s
fac linite n loc s raportez la supraveghetorul de sal... ha-ha, mai ii minte c nu
pricepeam ce vrea el cu supraveghetorul?!
Dar gata cu gluma acum, treci la studiat ce diferene pot exista ntre ei i noi, s
vedem dac ne putem descurca mai bine.
Trebuie s terminm planificarea, iar eu tot
n-am reuit nc s aflu care sunt zilele lor
de vacan n perioada urmtoare.
- Ce mai planificai, mi biei? efu
iar apruse pe nepus mas, iar cei doi,
prini n febra discuiei, nu-l vzuser.
- Iar te furiezi, efu?! Uite, dezbteam
pe tema proiectului din Kuwait, vreau s
fac o planificare detaliat, s vad ce serioi
suntem. Numa c nu avem toate datele...
Cic vacana din octombrie ncepe la 70
de zile dup Ramadan, dar n-am gsit pe
net cnd e data fixat pentru sfritul de
Ramadan...
- Pi nici nu vei gsi, Gogule, depinde
de lun...
- n iulie a fost anul acesta.
- Nu luna din calendar, luna de pe cer.
i nchide gura c i intr o musc.
Gogu rmsese ntr-adevr cu gura
cscat. Cum adic luna de pe cer? Ascult
explicaiile efului, dar cumva mintea lui
refuza s accepte. Probabil c sentimentul era clar exprimat de faa lui, pentru c
eful se opri din explicaii i adug:
- Gogule, te auzisem mai devreme
cu ssiga-ssiga. tiu conceptul, l-am

nr. 27/septembrie, 2014 | www.todaysoftmag.ro

experimentat. Dar oamenii tia cu care


vom lucra acum sunt mult-mult mai
departe. i geografic i cultural. Lucrurile
pot fi foarte diferite. Nu poi s iei cu ei
la o bere, s clarificai lucrurile, poi iei
maxim la un ceai. i numai dac nu e perioada Ramadan-ului, atunci n timpul zilei
nu ai voie nici s mnnci, nici s bei. i
chiar dac ai ieit la ceai, nu te poi atepta
s i spun n fa dac ceva nu e bine,
cci nu vor s te pun ntr-o situaie dificil... Ct despre planificarea strict, uit-o.
Timpul are pentru ei - o alt semnificaie.
Propune-le o planficare pe sptmni, n
nici un caz pe zile, i adaug rezerve pentru
comunicare i negociere, dublu fa de ce
suntem noi obinuii... Iar ideea ta de a citi
mai multe despre obiceiurile, credinele,
cultura lor, este excelent. V va ajuta mult
n relaia cu ei.
- efu, tu ai lucrat cu ei, nu-i aa?
- Am lucrat, am greit, am nvat...
- Ahhh, spune-ne i nou ce-ai greit!
efu zmbi: Da, eram sigur c vrei s-o
aflai pe asta. Pi uite ce s-a ntmplat: am
avut ghinion cu nite echipamente care nu
ne-au venit la timp i am ntrziat cu livrarea soluiei la client.
- i s-au suprat din cauza ntrzierii?
sri repede Gogu. Doar ce ne-ai spus c
timpul e vzut altfel la ei...
- Nu, Gogule, nu s-au suprat din cauza
ntrzierii, s-au suprat din cauza ,ghinionului. Auzi, mi Gogule, rse efu, tu ai o
problem azi: tot rmi cu gura deschis.
Gogu fusese prins iar pe picior greit:
Cum adic din cauza ,ghinionului? Ce-au
ei cu ghinionul?
-
Pi tocmai c n-au nimic, la ei nu
exist ghinion, exist doar voia Celui De
Sus. Tot ceea ce se ntmpl are un rost, un
motiv i nu depinde de noroc sau ghinion.
Aici am greit eu... Iar voi dac nu vrei
s greii, trecei napoi la treab, c altfel
vedei voi ce nseamn ghinion...

Simona Bonghez, Ph.D.

simona.bonghez@confucius.ro
Speaker, trainer and consultant
in project management,
Owner of Colors in Projects

sponsori

powered by

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