Sunteți pe pagina 1din 46

Nr.

37
No.
36Iulie
June2015
2015 www.todaysoftmag.ro
www.todaysoftmag.ro www.todaysoftmag.com
www.todaysoftmag.com

TSM

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

Descoperirea entitilor similare n

Download from

Windows Store

modele BigData

Scurtul ghid al unicornului din Ruby

Rapid Software Testing


- o schimbare de perspectiv
Aplicaii IoT cu Java ME Embedded 8
i Eclipse
Aplicaia WheelNav

tiu Scrum, Kanban i
alte cteva cuvinte n Agile
IT BRAINIACS sau despre emoie, talent i
mult munc

on Rails

Incursiune n lumea
obiectivelor personale
De la birocraie la succes
n nfiinarea unei firme
High-end content management,
varianta Adobe
Teste cu Selenium n cotextul
Continuous Delivery

6
TYPO3 o nou lume,
un nou punct de vedere
Alexandru - Ctlin Dini

26
Teste cu Selenium n contextul
Continuous Delivery
Robert Lantos

8
IT BRAINIACS
sau despre emoie,
talent i mult munc

30
High-End Content
Management,
varianta Adobe

Ileana Fritea

Alexandru Gheboianu

10
Ve i lanseaz oficial ultimul
centru de dezvoltare n Cluj
Bogdan Murean

12
Incursiune n lumea obiectivelor
personale
Bogdan Murean

15
Descoperirea entitilor similare n
modele BigData
Ovidiu Petridean

20
Aplicaia
WheelNav
Csongor Korosi i Cristian Chertes

23
tiu Scrum, Kanban si alte cteva
cuvinte n Agile
Ovidiu uta

32
Scurtul ghid al unicornului din
Ruby on Rails
Emil Lua

36
Aplicaii IoT cu Java ME Embedded 8
i Eclipse
Dnu Chindri

40
Rapid Software Testing - o schimbare de
perspectiv
Monica Raiu

42
De la birocraie la succes n nfiinarea unei
firme
Ioana Varga

editorial

Ovidiu Man

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

erioada concediilor care aduce cu ea evadarea din toropeala urban i din rutina
cotidian este binevenit i binemeritat dup un an de munc . Totodat, concediul pune la treab acele aplicaii legate de navigare i mobilizeaz jocurile
casual pentru pauza de dup plaj. Dac s-a preferat lectura
i s-a ajuns la finalul
unui roman senzaional, este momentul pentru a citi ultimul numr al TSM pentru
a face revenirea din concediu mai lin. Oricum odat rentori din concediu, suntem
toi cu fore proaspete, cu noi revelaii i noi perspective asupra modului de lucru de
pn atunci. Dac suntei n Cluj, s venii la evenimentul de lansare din aceast lun.
Noi am revenit plini de energie i pregtim o nou ediie a Cluj IT Days pentru finalul
lunii noiembrie, unde keynote speaker-ul de anul trecut, Peter Lawrey, a confirmat deja
prezena.
Salutm debutul din acest numr al colegului Alexandru Dini, n al crui articol,
acesta i descrie experienele sale legate participarea la un training de o sptmn n
Koln pe tema TYPO 3, avnd oportunitatea s se ntlneasc cu comunitatea de IT
din acea zon. Un alt articol ofer bilanul celor apte luni al programului IT Brainiacs
care i-a propus i a reuit s introduc elevi de gimnaziu i de liceu n universul programrii. i au reuit, dovada o reprezint scrierea ctorva jocuri interesante n Java i
Obejctice-C/Swift. Le urm mult succes celor de la Telenav i Apex-Edu i continuarea
acestui program i n anul viitor.
Deschidem articolele tehnice din acest numr cu Descoperirea entitilor similare
n modele BigData , care reprezint o introducere n data mining. Intrm i n zona de
IoT prin Aplicaii IoT cu Java ME Embedded 8 i Eclipse unde este folosit un Raspberry
PI mpreun cu JavaME. Pentru persoanele cu disabilii n deplasare s-a realizat o
aplicaie dedicat pentru participarea la AT&T Connect Ability Challenge. Mai mult
detalii gsii n Aplicaia WheelNav. Faptul c Ruby on Rails ncepe s nu mai fie un limbaj de ni este demonstrat n Scurtul ghid al unicornului din Ruby on Rails. High-End
Content Management, varianta Adobe prezint produsul dar i arhitectura unei soluii
ce dorete transferul publicrii de informaii de la programatori ctre content manager-i.
La final, tiu Scrum, Kanban i alte cteva cuvinte n Agile, v invite s v gsii rgazul
de a reflecta asupra maturitii conceptelor IT.

Ovidiu Man

Fondator Today Software Magazine

nr. 37/2015, www.todaysoftmag.ro

Redacia Today Software Magazine


Fondator / Editor in chief: Ovidiu Man
ovidiu.matan@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
Reviewer: Tavi Bolog
tavi.bolog@todaysoftmag.com
Contabil : Delia Mircea
delia.mircea@todaysoftmag.com
Programator junior: Alexandru Dini
alexandru.dinis@todaysoftmag.com
Marketing specialist i tehnoredactor:
Ana Maria Bivol
anamaria.bivol@todaysoftmag.com
Tipar realizat de Daisler Print House
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

Lista autorilor
Alexandru - Ctlin Dini
alexandru.dinis@todaysoftmag.com

Robert Lantos

Junior PHP Developer


@Today Software Magazine

Senior QA Engineer
@Betfair

Ileana Fritea

Alexandru Gheboianu

ileanafritea@gmail.com
Preedinte Apex-Edu
@ Apex-Edu

Robert.Lantos@betfair.com

alexandru.gheboianu
@pitechnologies.com
Software Engineer
@ Pitech+Plus

Bogdan Murean

Emil Lua

Director of Engineering
@3Pillar Global

Developer
@ Yonder

Ovidiu Petridean

Dnu Chindri

Senior Software Developer


@ SDL Research

Java Developer
@ Elektrobit Automotive

Csongor Korosi

Monica Raiu

iOS Developer
@ Telenav

Marketing Specialist
@ Altom

Cristian Chertes

Ioana Varga

bogdan.muresan@3pillarglobal.com

opetridean@sdl.com

emil.luta@tss-yonder.com

danut.chindris@elektrobit.com

Csongor.korosi@telenav.com

Cristian.chertes@telenav.com

monica.ratiu@altom.ro

ioana.varga@aiconsulting.ro

iOS Developer
@ Telenav

Expert contabil Managing Partner


@ A&I Consulting

Ovidiu uta

Sarah Hernandez

QA & Bid Manager


@ ISDC

Director of Commercial Marketing


@ VE Interactive

ovidiu.suta@isdc.eu

sarah.hernandez@veinteractive.com

Copyright Today Software Magazine


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

www.todaysoftmag.ro | nr. 37/iulie, 2015

educaie

TYPO3 o nou lume,


un nou punct de vedere

ptamnile trecute am primit de la compania Arxia invitaia de a participa la


TYPO3 Summer Camp 2015. Admit c la nceput am avut unele reticiene din
cauza lipsei de experien n acest framework, dar n cele din urm, TYPO3 s-a
dovedit pentru mine o experien minunat, trit alturi de oameni minunai.

Alexandru - Ctlin Dini


alexandru.dinis@todaysoftmag.com
Programator junior
@Today Software Magazine

nr. 37/2015, www.todaysoftmag.ro

n ultima perioad citisem ntmpltor


despre TYPO3 i despre puternica lui dezvoltare n Europa de
Vest, ns niciodat
nu mi-am imaginat
ce poate s nsemne
acest framework cu
adevrat. Am cons t at at c T Y P O 3
poate s mbine toate
calitile necesare
unui framework: este
uor de folosit, este
rapid, i nu n ultimul
rnd poate fi utilizat
ntr-o gam larg de
aplicaii.
n ce pr ivete
alegerea locului de
desfurare pentru
Summer Camp, consider c a fost una excelent, deoarece
comunitatea TYPO3 din Koln este cunoscut ca fiind una foarte strns legat, cu un
grad mare de implicare n cadrul tuturor

activitilor. Participarea mea n aceast


tabr s-a desfurat n cadrul firmei
PHTH, o companie care se ocup
doar cu dezvoltarea de soft TYPO3.
Situat ntr-o zon
linitita a Kolnului,
compania condus
de domnul Philipp
Thielle ofer un
spaiu primitor i
propice dezvoltrii softului. Modul
eficient de organizare a comunitii
i pre o c up are a
pentru o bun
comunicare ntre
membrii acesteia
s-au remarcat nc
din prima zi, cnd am fost preluat de la
aeroport de ctre Philipp. Dup un scurt
tur al oraului i un scurt tur al companiei,
n care mi-a fost prezentat tehnologia i

TODAY SOFTWARE MAGAZINE


modul de organizare, am
fost introdus n rndul
comunitii,evidenindumi-se importana
participrii mele active
n cadrul comunitii i
totodat dorina comunitii de a face acest lucru
posibil.
n prima zi n biroul
PHTH mi s-a prezentat
workflow-ul, care, spre
surprinderea mea, era perfect similar cu workflow-ul
meu de zi cu zi din cadrul
TSM.
n continuare, am fost introdus n
extensia n care urma s contribui i mi
s-a explicat n ce const. Am apreciat faptul c mi-a fost cerut prerea cu privire
la extensia Agora, si despre ce consider
eu c ar trebui s fac un CMS. Agora ca
tehnologie se bazeaz pe Extabse & Fluid.
Ca extensie TYPO3, Agora trebuie s rspund la urmtoarele funcionaliti:
1. Extensia- la baz conine unul sau
mai multe thread-uri.
2. Fiecare thread poate s conin
unul sau mai multe postri, iar acestea
se comport dup modelul standard de
blog: pot fi comentate, urmrite,marcate
ca favorite.
Primul meu task a fost pe ct de simplu, pe att de competitiv pentru mine. Mi
s-a cerut s implementez user signature
pentru fiecare thread i post, pentru a m
putea obinui cu framework-ul.
Ziua de mari a adus cu ea primul task
n adevratul sens al cuvntului, i anume
implementarea unui sistem complet de
notificare n cadrul Agora. Acesta presupunea notificri pentru diferitele roluri
de utilizator: creatorul thread-urilor,
creatorul postrilor, i simpli utilizatori
care urmresc o postare sau un thread.
Surprinztoar pentru mine a fost modul
simplist de implementare a sistemului de
trimitere a e-mailului, deoarece n cadrul
TSM am fost pus n situaia de a implementa aceeai cerin, ns folosind ca
framework Fat-Free, operaiune destul de
costisitoare.
Pentru evidenierea uurinei folosirii
TYPO3, ataez o scurt secven de cod,
folosit n cadrul trimiterii notificrii sub
form de e-mail pentru toi utilizatorii care
observ un thread dat:

Datorita dorinei de diversificare,


urmtorul task a fost crearea unui modul
de backend, care s permit gestionarea ca
administrator a funcionalitilor oferite de
Agora. Astfel, am ajuns n contact pentru
prima dat cu metodele magice oferite
de ctre Injected Repositories. Modulul de
backend a fost un task provocator, deoarece
se simea nevoia implementrii unui astfel
de modul, precum i dorina tuturor celor
din PHTH s-l vad funcional, pentru a
putea fi testat.
n tot acest timp am avut ocazia s
vizualizez modul de lucru i tipul de
mentalitate predominant n acest tip
de companie. Ceea ce mi-a plcut a fost
atitudinea de detaare, sentimentul de
siguran i ncredere manifestate la toi
membrii echipei, precum i gradul de
implicare i dorina de a ajuta. De asemenea, m-a impresionat n mod
plcut curiozitatea lor legat de
modul cum se face programarea
n Romnia. Am avut onoarea
s discut cu mari contribuitori
n cadrul comunitii, cum ar fi
Marcel, Philipp, dar i Bjrn Chr.
Bresser. Spre finalul ederii n
Koln, am fost introdus n cadrul
contribuitorilor Core TYPO3.
Philipp m-a sprijinit n fixarea
primului bug n cadrul Core, i n
raportarea lui dup fixare. Aceste
operaii au fost urmate de procesul de validare( care n cadrul
TYPO3 se desfoar pe baz de
voturi ), iar sptmna trecut
am observat c rezolvarea a fost
validate i urmeaz s fie inclus
in urmtoarea versiune.
Dei zilele de munc erau
destul de lungi (10 11 ore ), am
avut destul de mult timp s m

bucur de frumuseea
oraului Koln fcnd
simple plimbri prin
parcuri sau vizitnd
impresionante monumente, cum ar fi
Cologne Cathedral
Dom. Kolnul este
un ora extraordinar, care ofer o
experien turistic
minunat,datorit
largii varieti
culturale i sociale.
Locuitorii sunt
foarte mndri de
tradiiile i locurile
lor i ar sta ore n ir s povesteasc despre
ele oricui este dispus s asculte, bineneles
la un pahar de Klsch, berea tradiional
n Koln.
n concluzie, experiena oferit de
TYPO3 Summer Camp 2015 a fost unic,
att din punct de vedere al evoluiei profesionale, al ntlnirii cu un nou framework
i cu un nou mod de lucru, ct i din punct
de vedere al unei noi experiene culturale
i sociale. in s le mulumesc celor de
la Arxia pentru extraordinara experien
oferit, i recomand participarea la acest
gen de evenimente oricui dorete s progreseze n plan profesional i n plan
personal.

www.todaysoftmag.ro | nr. 37/iulie, 2015

educaie

IT BRAINIACS
sau despre emoie, talent i mult munc

scrie un articol n TSM ca expert n educaie i nu n industria de profil poate fi uor intimidant. Dar starea aceasta dureaz
ct redactezi primele 3-4 rnduri, pn cnd te prinzi c scrii despre elevi talentai, capabili de performane frumoase n
programare, de programatori tineri dispui s-i mprteasc experiena, despre nvare, despre factorii care determin
performana n domeniu. Aadar sunt teme de interes pentru orice profesionist sau companie de IT, care nu au cum s te intimideze.
Programul ITBrainiacs, dezvoltat de Apex-Edu i Telenav a fost conceput n jurul a dou idei centrale: necesitatea de identificare
timpurie a copiilor/tinerilor capabili de performane n domeniu i construirea unei intervenii care s valorifice maximal potenialul
identificat. O intervenie autentic i, mai ales, formativ, o experien care s-i transforme pe cei implicai.
Am pornit n mod evident de la ce ne
spune tiina. Literatura educaional subliniaz plurideterminismul performanelor
superioare. Sunt importante aptitudinile,
fie c vorbim de aptitudine cognitiv general sau aptitudini foarte specifice. Sunt
importante oportunitile, fie c vorbim
de un act educaional excepional dintro instituie, de o ntlnire fortuit cu un
mentor sau de ansa de a te afla n momentul potrivit la locul potrivit... i tuturor
acestora li se adaug abilitile de tip psihosocial, cele care te ajut s i gestionezi
nvarea, motivaia i emoiile, precum i
perseverena. Pentru c munca bate talentul, dac talentul nu muncete ndeajuns....
O conjunctur complex, de tipul
celei descrise mai sus, s-a ntmplat prin
programul IT Brainiacs desfurat de
Apex-Edu i Telenav, care a construit un
context de interaciune intensiv ntre
elevi foarte buni i programatori pasionai,
cu un angajament puternic pentru formare
i nvare.

Elevii ITBrainiacs
Elevii ITBrainiacs au o medie de vrst
de 15 ani, nva n clasele a VII a, a IX a
i a XI, au interese bine conturate nspre
domeniul IT i sunt puternic motivai s
nvee. I-am ales pe zece dintr-un numr
aproximativ de 70 de candidai pentru c
s-au remarcat prin rezultatele pe care le-au
obinut la anumite probe psihologice.
Cunotinele anterioare de programare nu
au fost considerate necesare pentru admiterea n program.

Mentorii ITBrainiacs
Mentorii ITBrainiacs sunt programatori pasionai ai Telenav, care au primit
bucuroi provocarea de a mprti din
experiena lor, de a-i familiariza pe copii
cu diverse limbaje de programare i de a-i
ndruma pentru dezvoltarea unui produs
de programare.

Contextul

Rezultatele
Am plecat de la zero cunotine sau
minime cunotine de programare i am
ajuns la: dou jocuri dezvoltate n Java
(Alien Invasion, joc multiplayer de atingere a intei), trei jocuri n Objective C
(AirHockey, joc de utare la poart, joc
de strategie militar), un joc de tip X-O n
Android, unul n Swift (Pairs), o aplicaie
n Swift de reete culinare i o aplicaie
pentru Android de gestionare a finanelor
proprii. De exemplu, aplicaia Save your
money, aflat deja pe Market a nceput aa:
La nceput a fost greu pentru c nu
tiam absolut nimic despre programare, dar
acum, dup acest proiect, am nvat foarte
multe lucruri de care nu am mai auzit pn
atunci. n prima parte a acestui proiect,
Filip (mentorul n.n) a nceput sa mi explice
ce nseamn programarea, noi ncepnd
cu scrierea codurilor n pseudocod. Filip
a insistat foarte mult pe aceast parte de
scriere pentru c aa nvei cel mai repede
lucrurile eseniale. Dup ce am terminat
cu scrierea n pseudocod a nceput s mi
explice ce nseamn scrierea Java cu exemple din viaa de toate zilele. Am nceput cu
scrierea codurilor n Eclipse Luna, unde
Filip mi-a artat chestiile de baz pe care
neaprat trebuie s le tie orice programator..., Alexandru Iuga, elev clasa a IX a

Programul ITBrainiacs s-a desfurat


pe parcursul a apte luni i a presupus
ntlniri sptmnale ntre elevi i mentori, n format unu-la-unu. A vrea s mai
repet formula aceasta de cteva ori pentru
a sublinia c acest element a fost cheia
succesului acestui program, acea conjuctura fericit. Acest tip de interaciune este
fr ndoial responsabil de caracterul
extrem de personal i de autenticitatea
experienei pe care ITBrainiacs le-a oferit.
Dei cunoteam la nivel teoretic efectele
mentoratului pentru educarea elevilor
capabili de performane nalte, experiena
real la care am avut privilegiul s asist
mi-a relevat ncrengtura complex de
mecanisme responsabile de progresul pe
care copiii l-au avut. Acest tip de formul
a permis, n primul rnd, mentorilor s
croiasc intervenia pe interesele reale
ale copiilor. Aceast pliere complet pe ce
i-au dorit copiii a asigurat un nivel ridicat al motivaiei i a permis mentorilor Pentru copii
s antreneze la momentul potrivit straDar asta nu a fost tot. n fapt rezultatele
tegiile necesare pentru facilita nvarea cele mai semnificative, din punctul nostru
sau pentru a le oferi un model de gestio- de vedere, s-au ntmplat la un nivel mult
nare a emoiilor care vin la pachet cu ea. mai intim pentru fiecare copil sau mentor
implicat n acest proiect. Schimbri pe
care, doar cu mult sudoare, le poi atepta
ntr-o intervenie de training, de exemplu.

nr. 37/iulie, 2015 | www.todaysoftmag.ro

programare
S-au modificat atitudini. Astfel de schimbri asigur rezultate stabile n timp: ceea
ce s-a obinut n cadrul programului att
pentru elevi, ct i pentru mentori nu s-a
rezumat doar la rezultatele fiecrei edine
de mentorat, ci a devenit un bun personal
al fiecrei pri implicate. Vorbim aadar
de achiziii stabile n timp, cu btaie lung.
Pentru copii, aceasta s-a tradus, n
general, n modificarea atitudinii fa de
nvare i efort. i nu doar fa de efortul propriu, ci i fa de efortul celor care
le-au stat aproape parcursul celor cteva
luni pentru a-i ndruma. Efort pe care l-au
contientizat i n fa cruia s-au nclinat. Acest tip de rezultat devine un bun
nepreuit pentru un copil aflat n dezvoltare i este instrumental nu doar pentru
felul n care-i gestioneaz nvarea i
cariera, ci i pentru felul n care-i croiete
universul de relaii sociale.
Aceast schimbare atitudinal fa
de efort i perseveren e mare lucru, pe
cuvntul meu de printe i de dascl cu
experien de la precolari pn la studeni
masteranzi!!!! Copiii au tiut, din momentul n care au fost admii, c sprijinul pe
care l primesc vine la pachet cu responsabilitatea de a depune efort pentru a crea
un produs de programare. i subliniez
alegerea cuvintelor: a depune efort. Ca
parte din conceptul programului, rezultatul a fost important, dar nu mai important
dect procesul. Mentorii au inut cont de
potenialul copiilor i au reuit s situeze
intervenia n zona proximei lor dezvoltri, fiind ns mereu ateni i la limitele
lor. Au cerut mult i au dat mult. Iar
moneda a fost efortul i implicarea. De
ambele pri. Copiii s-au confruntat uneori i cu momente de ndoial, ca n orice
experien de nvare. Au avut teme acas,
ore suplimentare i termene limit... Dar
au fost sprijinii s depeasc momentele dificile i au nvat, cred, ceva extrem
de valoros...to walk that extra mile. Spre
exemplu, Dani Pop, elev n clasa a IX, ne-a
mrturisit c : Am lucrat n orele de info
n notepad++, ulterior compilnd codul la
firm, eu neavnd um mac personal, necesar compilrii codului.
Un alt efect al programului i pe care
l-am anticipat, dar nu la adevrata dimensiune, a fost acela c experiena de nvare
pe care copiii au trit-o la Telenav s-a
constituit ntr-o intervenie complet de
orientare vocaional. Au fost ndeplinite toate condiiile ...Copiii au vzut pe
viu, n mod repetat, atmosfera tipic de
munc dintr-o firm de IT, sarcinile tipice
ale unui programator, universul social din

TODAY SOFTWARE MAGAZINE


organizaie i au reuit s contientizeze,
prin interaciunea cu mentorii lor, c
acesta e drumul pe care vor i pot s-l
urmeze.
Adugai acestor ingrediente toat
distracia cu care a venit la pachet munca
alturi de programatori tineri care i-au
nvat exact ce doreau i aveau nevoie s
tie, prin metode perfect individualizate,
adaptate ritmului propriu de nvare, dar
i satisfacia i mndria de a fi dezvoltat
un produs de programare. Aa am obinut
o reet minunat pentru designul unei
experiene de nvare autentice i pline de
sens.
Pentru mine, acest proiect a nsemnat
enorm, deoarece pur i simplu am nvat
s programez n adevratul sens al cuvntului, nu ce se face din tutoriale de pe net.
Am lucrat ntr-o firm adevrat, devenind
fluent ntr-un limbaj de programare foarte
dificil, cum este Objective c. La nceputul
proiectului aveam cunotinte minime de
C, dar dorina mea i pasiunea mentorului meu au dus la rezultate surprinztoare.
Am realizat un joc de strategie militara, de
genul Clash of Clans, in care am utilizat
SpriteKit, o tehnologie dezvoltat de cei de
la Apple pentru motoare grafice, de tipul
OpenGL, fiind practic dezvoltat peste ea.
O alt caracteristic important a jocului
nostru este c toat informaia este parsat
din fiiere JSON, nimic nefiind hardcodat, n teorie cel puin. Aadar, proiectul
ITBrainiacs mi-a oferit o ans nesperat
s ajung un adevrat developer la doar 15
ani!, Daniel Pop, elev clasa a IX a
Experiena mea la aceast firm a fost
unic. Pe lng c am aflat multe chestii,
ne-am i distrat i am avut multe ntlniri
cu mentorii i cu programatorii de la firm.
Eu recomand tuturor tinerilor aceasta
experinen, deoarece va fi ceva unic. Noi
totodat trebuie s fim contienti c suntem
cu un pas mai aproape de aceast meserie., Alexandru Vdan, elev clasa a VII a

cum trebuie, s-i ordonezi cunotinele,


s le gndeti secvenialitatea, utilitatea i
adresabilitatea. Predarea aduce cu sine
ns i un alt tip de exerciiu: responsabilitatea. Aceast responsabilitate i-a fcut pe
mentori s redeschid manuale, s evalueze metode i s le aleag pe cele care se
potriveau cel mai bine elevului din faa
lor i sarcinii specifice de programare, s
ofere nu doar cunotine tehnice, ci s in
cont i de fluctuaiile de motivaie sau de
emoionalitate cu care nvarea vine la
pachet. Iar aceasta presupune s comunici eficient, s demonstrezi empatie i s
fii abil n a-i gestiona propriile gnduri i
emoii. Pentru c eti un model!
S-au achitat cu brio de aceste sarcini.
M nclin!
Pentru mine, experiena ITBrainiacs
m-a nvat n primul rnd s mi pun n
ordine gndurile. Atept cu mare drag
urmtoarea ediie i mi-ar plcea s se
organizeze i mai multe proiecte de acest
gen. Mihai Costea, Telenav
A fost o experien de nvare i
pentru mine. Am nvat s-mi exprim
ideile ct mai bine, pentru c orice voiam
s-i explic trebuia s reformulez ca s fie
ct mai uor de neles. Paul a fost i el
foarte ncntat de programul acesta, a
nvat multe lucruri pe care nu le-ar fi
putut nva la coal, sunt sigur c acum,
la sfrit, pasiunea lui pentru programare
e mult mai mare. Mihai erban, Telenav
n esen, programul ITBrainiacs a
fost o experien de nvare construit n
jurul emoiilor pozitive. S-a construit cu
druire, pasiune i entuziasm! i cu mult
distracie!
Ileana Fritea

ileanafritea@gmail.com
Preedinte Apex-Edu
@ Apex-Edu

Pentru mentori
Probabil c efectele cele mai surprinztoare ale programului ITBrainiacs au fost
cele care s-au ntmplat n rndul mentorilor Telenav. Sprijinirea elevilor nu doar
pentru achiziia unor abiliti de programare, dar mai ales pentru contextualizarea
lor practic prin dezvoltarea de jocuri i
aplicaii, a nsemnat i pentru mentori o
experien de nvare. Nou i autentic.
Actul de predare, n sine, este un exerciiu
permanent de nvare, care te oblig s
spui ce trebuie, cnd trebuie i mai ales
www.todaysoftmag.ro | nr. 37/iulie, 2015

business

Ve i lanseaz oficial ultimul centru de dezvoltare n Cluj

ompania Ve este ncntat s anune lansarea oficial a celui mai nou centru de dezvoltare al su n Cluj, Romnia. Cu peste
80 de persoane deja angajate i instruite, aceast ultim deschidere aduce echipa de dezvoltare Ve, ctigtor a premii de
renume global, la un numr total de 240 dezvoltatori, cu birouri situate n Londra, Paris, Bilbao i Cluj.

Echipa de dezvoltare din Cluj se va


concentra pe inovaiile captivante Ve din
zona Big Data, i pe un portofoliu de proiecte speciale n retail B2C i turism online.
Ve a ales Clujul pentru a fi cel de-al
4-lea centru de dezvoltare a tehnologiei, datorit reputaiei oraului pentru
educaia de clas mondial n domeniul
tehnologiei, pentru cele 11 universiti ale
sale i investiiile fr precedent n tehnologie ale statului romn.
Ve este un campion de inovatie i
ambiie, i Clujul reprezint aceste valori
fundamentale ca ora. Cnd am selectat cu
atenie locul n care ne-am amplasa huburile noastre de tehnologie, aceste caliti
valoroase au fost ceea ce ne-a atras la Cluj.
Paiunea i aptitudinile forei de munc
de aici fiind deja renumite afirm Raul
Martinez, CTO, Ve.
Vrful de lance n recrutarea echipei de dezvoltatori talentai este Cristian
Cazan, director de dezvoltare, care aduce
mai mult de 15 ani de experien n dezvoltare de software i top-management.
Cristian s-a alturat Ve de la Endava,
unde a fost Delivery Manager i Head of
Development, poziii n care a ctigat
experiena n managementul i dezvoltarea a peste 160 de profesioniti n IT din

10

multiple locaii. n poziia sa n cadrul Ve,


Cristian este responsabil pentru identificarea talentelor, atragerea i conducerea
celor peste 80 de profeioniti, ajutnd
Ve s devin unul dintre giganii tech ai
Clujului.

International Business Stevie Awards


2014, compania Ve i desfaoar activitatea n 18 limbi i are 27 de birouri n toat
lumea, acoperind 43 de teritorii.

Cu peste 10.000 de clieni business


multinaionali ct i comerciani locali,
Despre Ve
Ve furnizeaz n timp real date de marVe Interactive este o companie tehno- keting din punctele cheie prin experienta
logic multi-premiat, care ofer o suit clienilor acestora.
de aplicaii prin intermediul platformei
VePlatform. Aplicaiile au scopul de a
Sarah Hernandez
sarah.hernandez@veinteractive.com
reduce abandonul coului de cumprturi, de a crete implicarea clienilor, de a
Director of Commercial Marketing
@ VE Interactive
diminua abandonul site-urilor i de a spori
conversiile.
Monitoriznd tranzacii n valoare de
miliarde de lire n fiecare zi, seturile de
date ale companiei ofer clientului perspective provocatoare, n timp ce fiecare
aplicaie livreaz coninut orientat ctre
client bazndu-se pe activitatea i profilul
lor de cumprare.
Ctigtoare a Ruban dHonneur n
cadrul European Business Awards n
2014-15, ctigtoare al Data Strategy
Award 2014 pentru marketing n timp real
i deintor al medaliei de aur n cadrul

nr. 37/iulie, 2015 | www.todaysoftmag.ro

comuniti

TODAY SOFTWARE MAGAZINE

Comuniti IT

venimentele din aceast perioad sunt realizate de pasionaii de tehnologii i de grupurile acestora. Dup cum putei vedea
n calendar, acestea sunt publicate exclusiv pe meetup.com avnd audiena format din comunitile locale. n august, vom
avea o lansare de revist i n Oradea. V ateptm !

Transylvania Java User Group


Comunitate dedicat tehnologiilor Java.
Website: www.transylvania-jug.org
Data nfiinrii: 15.05.2008 / Nr. Membri: 610 / Nr. Evenimente: 47
Comunitatea TSM
Comunitate construit n jurul revistei Today Software Magazine.
Websites: www.facebook.com/todaysoftmag
www.meetup.com/todaysoftmag

www.youtube.com/todaysoftmag
Data nfiinrii: 06.02.2012 /Nr. Membri: 2424/Nr. Evenimente: 32
Cluj Business Analysts
Comunitate dedicat analizei de business
Website: www.meetup.com/Business-Analysts-Cluj
Data nfiinrii: 10.07.2013 / Nr. Membri: 91 / Nr. Evenimente: 8
Cluj Mobile Developers
Comunitate dedicat tehnologiilor mobile
Website: www.meetup.com/Cluj-Mobile-Developers
Data nfiinrii: 05.08.2011 / Nr. Membri: 264 / Nr. Evenimente: 17
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: 437 / Nr. Evenimente: 93
Cluj Semantic WEB Meetup
Comunitate dedicat tehnologiilor semantice.
Website: www.meetup.com/Cluj-Semantic-WEB
Data nfiinrii: 08.05.2010 / Nr. Membri: 192/ Nr. Evenimente: 29
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: 251/ Nr. Evenimente: 14

Calendar
Iulie 31 (Cluj)
Lansarea numrului 37 al Today Software Magazine
www.todaysoftmag.ro
August 10 (Cluj)
PMI Monthly Meeting
meetup.com/PMI-Romania-Cluj-NapocaProject-Management-Meetup-Group/events/224143323/
August 27 (Cluj)
OpenStack Nova Deep Dive
meetup.com/OpenStackRomania/events/222910344/
August 4 (Bucureti)
PMI: Requirements discovery&elicitation
meetup.com/PMI-Romania-BucharestProject-Management-Meetup-Group/events/224228173/
August 5 (Bucureti)
Startup Grind Bucharest Hosts Ionut Cotoi (CEO &
Co-Founder at DeviceHub.net)
meetup.com/Startup-Grind-Bucharest/events/223967970/
August 26 (Bucureti)
August BucharestJS Meetup
meetup.com/BucharestJS/events/223597688/
August 24 (Oradea)
Lansarea numrului 38 al Today Software Magazine
facebook.com/todaysoftmag
todaysoftmag.ro

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: 1243/ Nr. Evenimente: 107
www.todaysoftmag.ro | nr. 37/iulie, 2015

11

management

Incursiune n lumea obiectivelor


personale

n ultimii ani termeni ca management prin obiective, obiective de companie i


obiective personale au aprut tot mai des n vocabularul meu prin intermediul
muncii ce o desfor. Dei prea simplu, la nceput a fost un comar din ce n ce
mai urt. Dup care conceptul a nceput s prind contur i ntr-un final am reuit s fac
lucrurile s funcioneze. n fiecare an cltoria a nceput prin definirea unor obiective
Bogdan Murean

bogdan.muresan@3pillarglobal.com
Director of Engineering
@3Pillar Global

globale la nivel de companie care ulterior au fost cascadate la nivel individual.


Credei-m c aplicarea conceptelor nu
e chiar floare la ureche, dei n teorie aa
pare. S-a dovedit a fi foarte interesant s
reuesc s unesc toate punctele de pe traseu i s fac obiectivele s funcioneze
pentru mine. Ceea ce am nvat n timp
despre acest proces va ajuta i pe alii, de
aceea am aternut pe hrtia virtual cteva
sfaturi utile. Interesant e c aceste sfaturi
se aplic nu doar celor ce lucreaz n IT
ci cu siguran multor altor domenii unde
oamenii au obiective personale.

O imagine de ansamblu
Una din schimbrile majore ce intervin
n viaa unei companii ce face pasul dinspre o companie mic nspre o companie
cel puin medie este nevoia de sincronizare
a proceselor, nevoie ce apare ntr-un mod
natural. Dac la o scar mai mic am putut
face lucrurile instinctual i fr mari bti
de cap, pe msur ce am crescut a aprut
i nevoia fireasc de reguli care s ne ajute
s inem lucrurile sub control. Gndirea
strategic a prins contur i a aprut n
peisaj nevoia unui plan bine controlat. Iar
o parte important a planului este definirea unor obiective clare. Acestea pot fi
definite pe termen lung, mediu sau scurt
i mai mult, oricare ar fi cadrul temporal

12

nr. 37/2015, www.todaysoftmag.ro

ales, obiectivele trebuie s fie adoptate de


ntreaga organizaie pentru a crete ansele
lor de realizare. Sun ca un plan grozav,
dar de la teorie la practic e cale lung.
Provocrile ntlnite pot fi mprite n
dou mari categorii:
tranziia obiectivelor strategice
globale ale companiei pn la nivel de
individ;
definirea unor obiective personale
semnificative.
Setarea unei strategii eficiente pentru
o companie i a unor obiective anuale
este n sine o provocare. Cel puin la fel
de dificil i provocator este i tranziia i
implementarea lor la nivel de departamente i mai departe la nivel de individ.
Dac oricare dintre cele dou aciuni ar
eua ar compromite ntreg procesul. O
strategie proast cu siguran nu va ajuta
pe nimeni, iar o implementare individual
nefericit cu sigurana va afecta rezultatele generale. Totui, cumva neateptat,
cele mai mari greuti le-am ntmpinat
la definirea unor obiective personale care
s aib sens n aceast imagine. n timpul
acestor aciuni am discutat cu oameni
care erau gata s adopte acest proces, cu
oameni care erau total mpotriva lui. Am
citit destul de mult literatur legat de
obiective n general i am ncercat din

programare
greu s pun toat informaia cap la cap.
Concluziile la care am ajuns i care m-au
ajutat s merg mai departe, s-mi modelez
gndirea n jurul acestui proces i s-l fac
s funcioneze pentru mine au o rdcin
adnc n ceea ce voi descrie n continuare.

Obiective pentru toat lumea


Principala int a acestui articol
vizeaz obiectivele personale. n cadrul
companiilor se seteaz obiectivele globale
sunt transmise nspre toate structurile
companiei i ajung nr-un final la nivel
de individ. Exist mai multe teorii: unele
spun c obiectivele globale ar trebui s se
opreasc la nivel de departament; altele
consider c ar trebui s mearg pn la
nivel individual. Dac reflectm puin
asupra modului nostru de via n general, ne vom da seama c sub o form sau
alta ne setm obiective personale aproape
la tot pasul. n mod formal sau informal
obiectivele sunt acolo la loc de cinste n
viaa noastr. n consecin, mi se pare
cumva natural s existe i n cadrul muncii noastre, aa c preferina mea merge cu
siguran n direcia de a avea obiective
la nivel individual. Aceasta trebuie s se
ntmple ntr-un mod natural i pentru
a avea suportul tuturor trebuie s inem
cont de cteva lucruri n momentul n care
implementm acest proces.
Nu toate obiectivele personale trebuie s influeneze direct obiectivele
companiei.
Cu siguran, aceast afirmaie este
numrul unu n lista mea de premise necesare pentru a putea avea un proces sntos
de tranziie a obiectivelor de la nivel global
la nivel individual. Unii oameni vor putea
influena direct obiectivele globale, dar
cele mai multe obiective personale vor avea
doar o influen indirect. Cu siguran

TODAY SOFTWARE MAGAZINE


nu este un lucru ru. Cel mai simplu mod
n care putem influena n mod indirect
obiectivele globale este de a deveni mai
buni n ceea ce facem. n consecin, ne
putem concentra pe acest fapt cnd vom
defini anumite obiective individuale.
Cnd scopul este evoluia personal atunci
implicit i motivarea individual pentru
atingerea scopului va crete. S lum un
exemplu simplu: s presupunem c una
dintre strategiile la nivel de companie pentru anul n curs este creterea expertizei cu
Microsoft Azure i pentru aceasta ne fixm
ca obiectiv s avem trei persoane cu certificri avansate de Azure pn la sfritul
trimestrului al treilea. Compania are 200
de oameni tehnici din care 50 lucreaz
cu tehnologii .NET. Dac este imposibil
s configurm ca obiectiv pentru fiecare
dintre cei 50 de oameni obinerea unei certificri avansate de Azure, cum am putea
s sperm la reuit n cazul n care lum
n considerare toi oamenii tehnici din
companie.

cei 50 s nu gsim pe cineva interesat


s-i lrgeasc aria de expertiz. Creterea
competenelor personale cu siguran va
ajuta i compania. Deci este n regul dac
ceilali vor gsi alte obiective ce nu vor
avea legtur direct cu Microsoft Azure.
n mod cert, creterea personal va avea
parte de cea mai mare motivare.

Cnd lucrurile devin personale


Cunoaterea e diferit de nelegere.

Am auzit expresia aceasta n cteva


contexte diferite i mi-a plcut destul de
mult. Mi se pare extrem de puternic i
aplicabil n multe situaii. Exist mult
material care ne ajut s nelegem ce este
un obiectiv i cum s definim un obiectiv SMART. Pe scurt, dac ne setm un
obiectiv acesta este mai eficient i ansele
s-l realizm sunt mult mai mari dac
obiectivul este SMART. Aceasta nseamn
c obiectivul trebuie s fie specific, s fie
msurabil, s fie accesibil, s fie relevant i
Cnd amndou pr ile au de s poat fi ncadrat n timp. Cnd am citit
ctigat, motivarea crete.
prima dat despre obiective SMART am
Ar putea suna egoist dar aceast fost ca un copil care a descoperit ciocolata.
afirmaie descrie natura uman i cu
siguran nu ar trebui s o ignorm. Un
SMART nu este un mit.
lucru pe care ar trebui s-l neleag probabil companiile este acela c obiectivele
Definirea unui obiectiv SMART nu este
individuale setate exclusiv pentru atingerea aa simpl precum pare la prima vedere,
obiectivelor globale ar putea avea un efect dar cu siguran este foarte important.
demotivant individual destul de accentuat.
Specific este acea caracteristic ce
Pentru ca oamenii s intre cu adevrat n
ne permite sa ne concentrm pe ceea ce
joc acestea va trebui s ating i nevoile
este important. Dac un obiectiv nu este
individuale. ntorcndu-ne la exemplul
specific este foarte uor s alunecm n
anterior, ar fi o micare extrem de nefericit
diferite direcii. i cnd concentrarea
s obligm cei 50 de specialiti .NET s-i
ne joac feste i inta noastr apare n
dea certificarea vizat. O abordare cu mari
mai multe locuri este foarte uor s nu
anse de reuit ar fi gsirea acelor permai vedem luminia de la captul tunesoane interesate de a dobndi cunotine
lului. Iar acest lucru ne poate demotiva
de Azure. Este aproape imposibil ca din
grozav fr a fi ajuns mcar la mijlocul

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. 37/iulie, 2015

13

management
Incursiune n lumea obiectivelor personale
drumului. Termenul wearables de care
vorbete toat lumea se refer la o arie
larg de posibiliti. Pentru a transforma scopul nostru ntr-un obiectiv ar
trebui s o restrngem . Un exemplu de
restrngere ar putea fi s nelegem mai
multe despre iWatch.
Msurabil este ceea ce ne permite
s evalum exact dac ne-am atins
obiectivul sau nu. Cum am putea marca
faptul c am studiat cte-n lun i-n stele
despre iWatch? Am putea s ne propunem s crem un prototip cu anumite
funcionaliti sau o integrare cu un alt
sistem. n acest fel am putea spune cu
exactitate la sfritul perioadei de timp
dac ne-am atins obiectivul sau nu.
Putem avea o finalitate a lucrului nostru
i un important sentiment de mplinire.
Accesibil este caracteristica menit
s ne in cu picioarele pe pmnt.
Putem s ne setm anumite obiective
astfel nct s ne motivm n a ne depi
limitele dar nu ne ajut cu nimic s exagerm. Putem s ne propunem s facem
cea mai tare aplicaie pentru iWatch n
urmtoarele trei luni, dar dac ncepem
s nvm doar acuma despre iWatch
care ar fi ansele noastre realist vorbind?
ntr-adevr ne testm limitele, dar n
acest fel ne i putem demotiva destul de
repede din acelai motiv: vom fi departe
de finalitatea dorit a ceea ce lucrm.
Relevant este ceea ce ne permite s
rmnem concentrai pe ceea ce conteaz. Dac suntem specialiti .NET
n cadrul unei companii ce dezvolt
software n .NET nu prea are mult sens
s nvm s scriem aplicaii pentru
iWatch. Mai mult, sarcinile noastre de
lucru nu vor avea nicio legtur cu ceea
ce ne strduim s nvm nici acum i
probabil nici n viitor. Ar trebui s ne
gsim timp s ne decuplm complet de
ceea ce lucrm n mod curent i aceasta
cu siguran va suferi amnri peste
amnri n vrtejul prioritilor zilnice.
Dar, dac am ti c se vor pune bazele
unei noi echipe cu acest specific, vom
putea s ne conectm cu ali posibili
componeni ai echipei, probabil vom
putea beneficia de ajutorul unui mentor i compania va avea tot interesul s
seteze un cadru propice nvrii noii
tehnologii. Toate acestea ne vor permite s concetrm cu adevrat la ceea ce
facem i s fim eficieni n acest proces.
ncadrarea n timp este esenial
pentru evitarea tergiversrii. Este o
condiie a reducerii stresului, deoarece
ne permite o planificare raional a

14

timpului de care dispunem. Este obligatorie pentru a avea o finalitate n


eforturile noastre de a ne atinge obiectivul. Dac nu ne stabilim o limit de timp,
Microsoft s-ar putea s achiziioneze
Apple nainte ca prototipul nostru s
devin funcional . Atunci iWatch ar
putea deveni istorie.
Principalii proprietari ai obiectivelor
noastre suntem noi nine.
Aceast este una dintre cele mai dure
lecii invate n aceti ani despre obiective.
Odat ce oricare dintre noi i ia un angajament fa de un obiectiv, acea persoan
este responsabil s-i realizeze obiectivul.
De obicei, managerul direct poate monitoriza realizarea obiectivelor noastre i poate
evalua la sfritul anului dac au fost realizate sau nu ,dar nu este obligaia acestei
persoane s le ndeplineasc. Managerul
ne poate ajuta i ne poate oferi ndrumare
de-a lungul procesului i a aciunilor noastre pentru atingerea obiectivelor ,dar dac
ateptm ca managerul (sau oricine altcineva) s ne mping constant de la spate
atunci ansele noastre de reuit scad
considerabil.
Iat cteva sfaturi care pe mine m-au
ajutat:
trebuie s inem obiectivele personale i statusul lor undeva la ndemn;
ct de motivai am fi s continum dac
atunci cnd am vrea s le revizuim n-am
ti de unde s le lum?
t r e b u i e s l e r e v i z u i m
constant pentru a nu ne pierde concentrarea asupra realizrii lor; dac
obiectivele au fost definite n mod
semnificativ, acest lucru se va ntmpla cu siguran ntr-un mod natural.
Frica de angajament este cel mai mare
duman al nostru.
Am remarcat situaii cnd s-au realizat
lucruri extraordinare, chiar dac acestea,
nu fceau parte din obiectivele lor. Odat
ce aceste persoane au fost implicate n
activiti similare, dar lundu-i n prealabil un angajament, se remarc incidena
mare a eecului sau a abandonrii proiectului. Se pare c suntem programai genetic
s avem o fric accentuat fa de angajament. Lsnd gluma la o parte, de fiecare
dat cnd suntem n dubii dac ar trebui
s ne lum un angajament sau nu, ar trebui s ne gndim ce cauzeaz aceste dubii.
Cel mai simplu mod de a ne depi aceast
fric este de a ne lua un angajament fa
de ceva ce vrem cu adevrat. Mi-e greu s
cred c nu exist nimic ce ne-ar putea ajuta

nr. 37/iulie, 2015 | www.todaysoftmag.ro

s ne mbuntim cunostinele, s cretem


profesional i n consecin s ne ajute s
devenim tot mai buni n ceea ce facem.

Concluzia

S nu subestimm valoarea cltoriei.


Cu siguran este un clieu dar n
acelai timp este adevrul gol golu.
Pescuitul nu este ntotdeauna legat de
ci peti prindem, cum ar putea crede
unii. Are legtur cu cunotinele dobndite pentru a putea prinde pete. Are
legtur cu obstacolele depite pentru a
prinde pete. Este legat de jocul n sine. A
ctiga, n cazul nostru a ne atinge obiectivele, este premiul de final. Cineva poate
va dori s dobndeasc experien cu un
framework nou i i stabilete ca obiectiv personal implementarea unui prototip
pn la sfritul trimestrului urmtor. Cu
siguran cunotinele dobndite de-a lungul realizrii prototipului sunt cel puin la
fel de importante ca i prototipul.
Ceea ce vd eu n obiective este o
bun motivare de a progresa indiferent
c vorbim de o companie sau de o persoan. Mai mult de att vd n obiective
un mod eficient de a msura progresul.
Din punctul meu de vedere, aceasta este
adevrata lor valoare. La nivel personal,
obiectivele funcioneaz pentru cei ce
vor s funcioneze. Dac cineva nu crede
n acest proces, configurarea de obiective
personale se poate transforma ntr-un
factor demotivant i este sortit eecului
nc din start. De-a lungul timpului, ideile
enumerate n acest articol m-au ajutat s
neleg obiectivele mai bine i ce este mai
important s le fac s funcioneze pentru
mine. Sperana mea este c aceste gnduri
vor ajuta i alte persoane.

Descoperirea entitilor similare n


modele BigData

Ovidiu Petridean

opetridean@sdl.com
Senior Software Developer
@ SDL Research

copul articolului este prezentarea unei modaliti de a descoperi entiti similare n


modele BigData.Vom expune n cele ce urmeaz abordarea MapReduce a unui algoritm utilizat pentru a gsi texte similare ntr-un corp foarte mare de date. Chiar dac
exemplele prezentate se concentreaz pe gsirea de texte similare, acest algoritm poate fi
folosit pentru a gsi orice fel de entiti asemntoare care pot fi descrise printr-un set de
caracteristici.

Problema

Cum gsim propoziii similare ntr-un set


foarte mare de date (Peta-bytes de date). O
problem foarte important care apare atunci
cnd ncercm s gsim elemente similare de
orice fel este ca probabilitatea prezenei unui
numr prea mare de perechi s ngreuneze
procesul de analiz i identificare a relaiei de
similaritate dintre ele. Chiar dac timpul n
care se determin dac o pereche este similar sau nu este foarte scurt, este nerealist s
credem c putem s le comparm pe toate.

Soluia

Examinarea elementelor similare este o


problem fundamental de data-mining. n
cele ce urmeaz vom arta cum problema
gsirii propoziiilor similare se poate transforma ntr-o problem de identificare a
elementelor similare.

compartiment.Numrul de compartiment
este un numr ntreg, n mod normal, n
intervalul 0 pn la B - 1, unde B este numrul de compartimente.

Elemente similare

Pentru a defini elementele similare vom


utiliza Similaritatea Jaccard. Similaritatea
Jaccard a seturilor S i T este
|S T |/|S T |, ceea ce reprezint raportul dintre numrul de elemente comune i
numrul total de elemente pe care cele dou
seturi le au.
S prezentm un exemplu. Notm similaritatea Jaccard a seturilor S i T cu SIM(S, T ).
S presupunem c exist dou seturi S i
T. Intersecia celor dou seturi este format
din 3 elemente, iar n total cele dou au 8 elemente. Astfel SIM(S, T ) = 3/8.

Noiuni Generale

Data mining O definiie destul de


popular spune c data mining reprezint
procesul de descoperire a modelelor pentru
date. Un model poate totui s reprezinte
mai multe lucruri. Se disting astfel urmtoarele: modelare statistic, nvare automat,
sumarizare (e.g PageRank de la Google),
extragerea caracteristicilor.

Similaritatea documentelor (propoziiilor) O clas important de probleme pe care


Funcii de dispersie
similaritatea Jaccard le implic este aceea a
O funcie de dispersie h primeste o gsirii documentelor sau a propoziiilor simicheie ca argument i produce un numr de lare ntr-un corp de date foarte mare. Printre
www.todaysoftmag.ro | nr. 37/iulie, 2015

15

programare
Descoperirea entitilor similare n modele BigData
aplicaiile cele mai cunoscute se numr: Plagiatul, Paginile Web
E ste i mp or t ant d e
n oglind sau Articole care provin din aceeai surs.
reinut probabilitatea ca
matricea de caracteristici
Algoritmul pentru gsirea elementelor similare
s nu fie modul n care
Algoritmul prezentat are trei pai principali: decuparea, datele sunt stocate, dar
minhashing i dispersie sensibil la localizare. Pentru pre- c ofer un mod util de a
zentarea algoritmului vom utiliza o aplicaie practic i anume vizualiza datele.
aceea a gsirii propoziiilor similare ntr-un set foarte mare de
n exemplul precedent
date.
putem observa c similaritatea celor dou seturi
1. Decuparea Documentelor (Propoziiilor)
poate fi descris ca numCel mai eficace mod de a reprezenta documentele ca seturi, rul de linii n care care cele
pentru a putea identifica documente similare este s construim dou seturi au elemente
din fiecare document un set de succesiuni de caractere care apar identice. Astfel putem
n ele. Utilizarea de decupri formate din caractere este o abor- deduce c similaritatea este
dare bun, dar cu toate acestea n cazul nostru este mult mai 7/11 adic 0.63.
eficient s folosim decupri formate din cuvinte.
Dup cum menionam
mai sus, pentru stocaDispersia decuprilor
rea acestor matrici ar fi
n loc s utilizm cuvintele ca decupri, alegem o funcie de nevoie de foarte mult spadispersie care mapeaz aceste cuvinte genernd un numr de iu, astfel c introducem
compartimente. Fiecare compartiment va fi tratat n continuare urmtoarea tehnic numit
ca o decupare.
mihashing.

Reprezentri care pastreaz similaritatea seturilor

2. Minhashing

Seturile formate din decupri sunt foarte mari. Chiar dac am


reui s le dispersm folosind doar 4 bytes pentru fiecare, spaiul
necesar pentru a le stoca este de patru ori mai mare dect spaiul
ocupat de documentul iniial.
Scopul pe care l urmrim este s nlocuim seturile mari cu
nite reprezentri denumite semnturi. Proprietatea important pe care acestea trebuie s o aib este aceea c trebuie s
putem estima similaritatea Jaccard a dou seturi doar prin compararea semnturilor acestora.

Semnturile pe care
dorim s le construim
pentru seturi sunt compuse din rezultatele unui numr mare
de calcule, fiecare dintre acestea fiind un minhash al matricii de
caracteristici.
Pentru a determina un minhash pentru un set (reprezentat de
o coloan din matricea de caracteristici) alegem o permutare a
liniilor. Valoarea minhash este numrul liniei (n ordinea permutat) n care pe coloan ntlnim cifra 1.

Reprezentarea matricial a seturilor

Exemplu

Pentru a avea o imagine mai bun a coleciilor de seturi este


util s ne uitm la ceea ce se numete matricea caracteristicilor.
Coloanele matricii corespund seturilor, iar liniile corespund elementelor setului universal din care elementele fiecrui set sunt
extrase.

S pre supu ne m c
avem urmtoarea ordine
a matricii precedente.
Aceast permutare definete o funcie minhash
h care mapeaz seturile la
linii.
S calculm valoarea
funciei minhash pentru
setul S1 conform funciei
h. Prima coloan, cea care
corespunde setului S1, are
0 pe prima linie, aa c
mergem la linia a doua.
Aici vedem de asemenea c
ntlnim 0, aa c mergem
la linia a treia, unde gsim
cifra 1. Astfel putem s
tragem concluzia ca h(S1)
= at. Utiliznd acelai
raionament tragem concluzia c h(S2) = napoca.

Fiecare din exemplele urmtoare trateaz problema similaritii a dou propoziii, dar evident eficiena algoritmului se
vede atunci cnd discutm despre un corp foarte mare de date.
Noi folosim algoritmul pentru a gsi similariti in peta-bytes
de date.
S presupunem c avem urmtoarele dou propoziii:
S1: I enjoyed my stay during summer at hotel California
S2: I enjoyed my stay during winter at hotel Napoca
De aici rezult urmtoarele dou seturi:
S1 = {i, enjoyed, my, stay, during, summer, at, hotel, california}
S2 = {i, enjoyed, my, stay, during, winter, at, hotel, napoca}

16

nr. 37/iulie, 2015 | www.todaysoftmag.ro

programare

TODAY SOFTWARE MAGAZINE

Minhashing i Similaritatea Jaccard

S alegem aleator dou funcii de dispersie


Exist o corelaie remarcabil ntre minhashing i similaritatea h(x) = x mod 11, g(x) = (2*x + 1) mod 11.
Jaccard a seturilor pe care s-a aplicat minhashing.
Probabilitatea ca o funcie de minhash pentru o permutare alen cele ce urmeaz vom simula algoritmul de calculare a
atoare de linii s produc aceeai valoare pentru dou seturi este matricii de semnturi.
egal cu similaritatea Jaccard a seturilor respective.
Nu vom parcurge ntregul proces ci doar paii relevani pentru
acest exemplu.

Semnturile Minhash

S presupunem din nou c avem o colecie de seturi repre- Pentru c avem 11 linii, vom efecta 11 calcule ale funciilor h i g.
zentate prin matricea lor de caracteristici M. Pentru a reprezenta Iniializm matricea cu .
aceste seturi alegem aleator un numr n de permutri ale liniilor
matricii M.
Un numar de 100 de permutri este de cele mai multe ori
suficient. S denumim funciile minhash determinate de aceste
permutari h1,h2,...,hn. Din coloana care reprezint setul S construim semntura minhash pentru S ca fiind vectorul [h1(S),
h2(S), . . . , hn(S)].

Pasul 1:

Determinarea Semnturilor Minhash


Nu este realizabil s permutm explicit matrici de caracteristici foarte mari. Din fericire este posibil s simulm
efectul permutrilor aleatoare utiliznd o funcie de dispersie care
mapeaz fiecare linie ntr-un compartiment.
Astfel n loc de n permutri aleatoare de linii vom alege n
funcii de dispersie h1,h2,...,hn pe care le vom aplica pe linii.
Construim astfel matricea de semnturi pstrnd ordinea iniial
a fiecrei linii. Fie SIG(i, c) elementul din matricea de semnturi
care corespunde funciei de dispersie cu hi i coloanei c. Iniial
SIG(i, c) este oricare ar fi i i c.
Pentru fiecare rnd r vom executa urmtorii pai:

Dac privim matricea iniial vedem c pe prima linie att S1


ct i S2 au valoarea 1, aa c vom calcula funciile h(x) i g(x),
unde x este numrul de ordine al liniei, care n acest caz este 1.
Astfel, h(1) = 1 i g(1) = 3. Evident ambele valori sunt mai
mici dect astfel c matricea precedent se modific n felul
urmtor.

1. Calculm h1(r), h2(r), . . . , hn(r)


2. Pentru fiecare coloan c executm urmtoarele
Pasul 2:
a. Dac c are 0 pe linia r, atunci nu se ntmpl nimic
Ne uitm acum la linia 2 i observm ca att S1 ct i S2 au
b. Dac c are 1 pe linia r atunci pentru fiecare i=1,2,...,n valoarea 1 aici. Aa c vom calcula valorile funciilor de dispersetm SIG(i,c) ca fiind minimul dintre SIG(i,c) i hi(r) sie. Astfel, h(2) = 2 i g(2) = 5. Pentru c ambele valori sunt mai
mari dect ceea ce avem acum n matricea de semnturi, nu vom
S calculm semnturile minhash pentru matricea de carac- schimba nimic.
teristici anterioar.
Cum paii 3 i 4 nu vor duce la nici un fel de modificri,
trecem la pasul 5.

Pasul 5:
Dup cum putem observa att S1 ct i S2 au 1 pe linia 5
astfel c vom calcula h(5) i g(5). Deoarece att h(5) ct i g(5) au
valoarea 0, vom actualiza valoarea corespunztoare funciei g.

Paii de la 6 la 10 nu schimb nimic. Atunci trecem la pasul 11.

Pasul 11:
Putem observa c doar S2 are valoare 1 pe linia 11 ceea ce
nseamn c dup ce calculm att h(11) ct i g(11) vom actualiza doar valorile corespunztoare lui S2 dac va fi cazul.
www.todaysoftmag.ro | nr. 37/iulie, 2015

17

programare
Descoperirea entitilor similare n modele BigData
Exemplu
Astfel, h(11) = 0 si g(11) = 1 ceea ce conduce la forma final
Folosim aceleai dou propoziii, dar pentru a face exema matricii de semnturi.
plul mai clar vom folosi 10 funcii de dispersie pentru a calcula
matricea de semnturi. Setm pragul de similaritate la 0.5 ceea
ce nseamn c vrem s vedem dac propoziiile noastre au similaritatea Jaccard egal cu cel puin 0.5.
tim de asemenea c avem 10 linii (numrul de funcii de
dispersie) i astfel dac lum n calcul i pragul setat la 0.5 atunci
dup efectuarea calculelor ajungem la concluzia c avem 5 benzi
cu 2 linii pentru fiecare band.
Pasul 1. Calculm matricea de semnturi alegnd urmtoaAnaliznd acum procesul anterior putem trage concluzia rele funcii de dispersie:
c cele dou seturi sunt similare n una din cele dou linii ale
matricii de semnturi. Aceasta nseamn c similaritatea lor este
hn(x) = (n*x+1) mod 11, 0<=n<=10
estimat ca fiind 0.5, acest numr fiind relativ apropiat de 0.63
att cat este similaritatea Jaccard. Evident pentru a obine rezulDup efectuarea calculelor ajungem la urmtoarea matrice
tate mai bune ar trebui s adugm mai multe funcii ceea va de semnturi:
conduce la estimri mai precise. De cele mai multe ori vrem s
analizm doar acele perechi care au un grad de similaritate peste
un anumit ,,prag. Exist o teorie care ajut s ne ndreptm
atenia doar spre acele perechi i este numit ,,dispersie bazat
pe localizare (LSH - locality-sensitive hashing)sau cutarea celui
mai apropiat vecin.

3. Dispersie bazat pe localizare pentru Semnturi Minhash

Abordarea general a LSH este s aplice mai multe funcii


de dispersie asupra elementelor n aa fel nct s se maximizeze
probabilitatea ca elementele similare s fie trimise n acelai
compartiment. Considerm apoi fiecare pereche care a fost
trimis n acelai compartiment ca fiind o pereche candidat.
Aceste perechi candidat vor fi singurele pe care le verificm dac
ntr-adevr sunt similare. Dac avem semnturi minhash pentru
elemente un mod eficient de a lucra este s mprim matricea
de semnturi n b benzi formate din r linii. Pentru fiecare band
vom alege o funcie de dispersie care primete ca argument un
vector format din r elemente ntregi i le trimite ntr-un numr
mare de compartimente.

Analiza tehnicii cu Benzi

Pasul 2 - Calculm funciile polinomiale pentru fiecare


band.

S presupunem c avem b benzi fiecare formate din r linii.


S presupunem apoi c o pereche de documente au similaritatea
Datorit faptului c avem 5 benzi, vom avea nevoie de 5
Jaccard egal cu s. Putem calcula probabilitatea ca aceste seturi funcii polinomiale care primesc cte dou argumente (valorile
(sau mai degrab semnturile lor) s devin o pereche candidat din coloane).
n felul urmtor:
1. Probabilitatea ca semnturile s fie identice pe toate liniile
unei benzi este s/r.
2. Probabilitatea ca semnturile s nu fie identice pe cel puin
o linie dintr-o anumit band este egal cu 1-sr.
3. Probabilitatea ca semnturile s nu fie identice n cel puin
o linie a fiecrei benzi este (1-sr)b.
4. Probabilitatea ca semnturile s fie identice pe toate liniile a cel puin unei benzi i s devin o pereche candidat este
1-(1-sr)b.
Definim pragul minim ca fiind o funcie de b i r care exprim
valoarea de similaritate s pentru care o pereche devine candidat. O aproximare a calculului pragului minim este (1/b)1/r. De
exemplu pentru b = 16 si r = 4 pragul minim este de aproximativ
s = .

18

nr. 37/iulie, 2015 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


O sa alegem funcii polinomiale de forma a1* X1+a2*X2+
A cincea banda are urmtoarele calcule:
... +an*Xn mod m, unde n este numarul de functii iar m este un
(S1) p5 = 9*0 + 11*0 mod 13 = 0 (S2) p5 = 9*0 + 11*0
numar prim foarte mare.
mod 13 = 0
Pentru exemplul nostru alegem urmtoarele funcii:
p1 = 2*x1 + 3*x2 mod 13 p2 = 3*x1 + 5*x2 mod 13 p3 =
5*x1 + 7*x2 mod 13 p4 = 7*x1 + 9*x2 mod 13 p5 = 9*x1
+ 11*x2 mod 13

S efectuam calculele pentru prima band


(S1) p1 = 2*1 + 3*0 mod 13 = 2 (S2) p1 = 2*0 + 3*0
mod 13 = 0

O s denumim cele dou compartimente rezultate B1-2 i


B1-0
Calculele pentru band a dou
(S1) p2 = 3*0 + 5*2 mod 13 = 10 (S2) p2 = 3*0 + 5*0
mod 13 = 0

Compartimentele care rezult sunt B2-10 i B2-0

Din nou avem doar un compartiment rezultat, acesta fiind


B5-0.
Avem astfel urmtoarele compartimente:
B1-2 = {S1}
B1-0 = {S2}
B2-10={S1}
B2-0={S2}
B3-0={S1}
B3-12={S2}
B4-0={S1,S2}
B5-0={S1,S2}

Pentru c cele dou propoziii au fost repartizate cel puin o


dat n acelai compartiment (de fapt avem dou, B4-0 i B5-0) o
s le considerm ca fiind perechi candidat i o s calculm coeficientul de similaritate Jaccard pentru ele.

Concluzii

Acest algoritm i dovedete eficiena atunci cnd este aplicat


pe un corp foarte mare de date.
De asemenea pentru a putea gestiona aceste cantiti mari de
(S1) p3 = 5*0 + 7*0 mod 13 = 0 (S2) p3 = 5*1 + 7*1
date
se recomand o implementare MapReduce.
mod 13 = 12
Utilizarea algoritmului nu se reduce la gsirea de texte simiCompartimentele care rezult sunt B3-0 i B3-12
lare. Algoritmul poate fi utilizat pentru orice set de date ale crui
elemente pot fi individual descrise ca un set de caracteristici.
Pentru a patra band avem urmtoarele calcule:
Cu ct semnturile utilizate de algoritm sunt mai mari cu att
exist mai puine erori, dar asta evident aduce dup sine un timp
(S1) p4 = 7*0 + 9*0 mod 13 = 0 (S2) p4 = 7*0 + 9*0
de procesare mai mare.
mod 13 = 0
Chiar dac algoritmul indic faptul c dou segmente sunt
Ceea ce este remarcabil acum este c avem doar un compar- similare deoarece fac parte dintr-o pereche candidat este totui
timent rezultat B4-0. Acest lucru se ntmpl deoarece rezultatul indicat s se calculeze procentul de similaritate Jaccard pentru
ambelor funcii este 0.
respectiva pereche.
Pentru cea de-a treia band avem urmtoarele:

www.todaysoftmag.ro | nr. 37/iulie, 2015

19

programare

Aplicaia WheelNav

T&T Connect Ability Challenge este o competiie care ncurajeaz tehnologiile


mobile s mbunteasc vieile persoanelor cu dizabiliti. Avnd oportunitatea de a ajuta milioane de persoane cu dizabiliti din ntreaga lume, am luat
iniiativa crend o soluie software pentru a contribui la o via mai bun.
Csongor Korosi

Csongor.korosi@telenav.com
iOS Developer
@ Telenav

Cristian Chertes

Cristian.chertes@telenav.com
iOS Developer
@ Telenav

20

nr. 37/2015, www.todaysoftmag.ro

Acest articol descrie experiena noastr n dezvoltarea unei asemenea aplicaii.


Momentan pe App Store se pot gsi doar
aplicaii artnd puncte de interes pentru persoanele cu dizabiliti dar nicio
aplicaie pentru navigaie. WheelNav
combin aceste dou funcionaliti, iar
pentru cea mai bun experien de navigare, folosete Scout SDK.

Aplicaia WheelNav

Aplicaia noastr iOS se numete
WheelNav. Dup cum sugereaz numele
ei, combin informaii despre locuri accesibile pentru scaun cu rotile i navigaia.
Puncte de interes
Pentru nceput vom analiza aspectul locaiilor accesibile. Faptul c
anumite locaii nu sunt accesibile pentru

programare
persoanele cu dizabiliti este o mare problem. Fie pragul de
la intrare este prea nalt sau nu sunt dotate cu toalete pentru
persoane cu dizabiliti. n loc s implementm un serviciu
care seteaz informaii legate de accesibilitatea locaiilor, am
decis s folosim un serviciu numit Wheel Map (HYPERLINK
http://wheelmap.org/http://wheelmap.org) . Este un serviciu folosit pentru a cuta i marca locaii accesibile pentru
persoane cu dizabiliti n ntreaga lume. API-ul lor ofer programatorilor posibilitatea s interacioneze cu aceste locaii.
Lum aceste informaii i le afim pe hart. Difereniem 4 tipuri
de locaii:
Accesibile(verde): fr prag de intrare, toate ncperile
sunt accesibile fr prag, dotate cu toalet pentru persoane cu
handicap.
Parial accesibile(portocaliu): prag de intrare mai mic dect
7 cm, majoritatea ncperilor sunt accesibile, fr prag.
Inaccesibile(rou): prag de intrare mai nalt de 7 cm, majoritatea ncperilor au prag, dotate cu toalet pentru persoane
cu handicap.
Accesibilitate necunoscut (gri): nu exist informaii despre acestea.
Accesnd meniul din stnga ecranului, utilizatorii pot decide
care tipuri de puncte de iteres s fie afiate pe hart n funcie de
accesibilitate.

Butonul din partea dreapt a ecranului deschide un meniu pentru selectarea categoriilor punctelor de interes care s fie afiate.
WheelNav suport urmtoarele categorii:
Transfer public
Mncare
Timp liber
Bancomat
Educaie
Cumprturi
Sport
Turism
Cazare
Diverse
Guvern
Sntate

TODAY SOFTWARE MAGAZINE


Aceast funcionalitate
mbuntete datele privind
accesibilitatea. Lund n considerare accesibilitatea locaiilor
se pot planifica ntregi cltorii de acas sau ntlniri cu
prietenii n locuri accesibile.

Cutarea punctelor de interes


Folosind bara din partea
de sus a ecranului se pot face
cutri. Sunt returnate puncte
de interes de pe hart i adrese
corespunztoare. Selectnd un
rezultat din list, acesta va fi
centrat pe hart facnd posibil
navigaia la acesta.

Navigaia
O alt component major
a aplicaiei este navigaia. Am
ncercat s personalizm ntreaga
experien de navigaie pentru
persoanele care folosesc scaun cu
rotile. WheelNav ofer posibilitatea
crerii rutelor de la poziia curent
la orice alt locaie de pe hart.

Apoi am integrat Scout SDK.


Rutele sunt calculate lund n
considerare altitudinile punctelor de pe rut, asigurnd cea
mai rapid i fluent rut pn
la destinaie.
Navigaia ofer instruciuni
vizuale i audio utilizatorilor. Am intenionat s crem o
experien hands free utilizatorilor. Acest lucru este ndeplinit
folosind instruciunile audio.
WheelNav ofer o soluie
pentru o problem comun
i anume blocajul strzilor. n
acest caz este foarte dificil pentru utilizatori s decid ncotro
s mearg. Folosind block
road Scout SDK redirijeaz
utilizatorul pentru a ajunge la
destinaie eficient.

Utilizatorii aplicaiei pot analiza informaiile despre aceste locaii, avnd posibilitatea de a le schimba
accesibilitatea, cnd consider c informaia este greit.
www.todaysoftmag.ro | nr. 37/iulie, 2015

21

programare
Aplicaia WheelNav


Setrile pentru navigaie pot fi accesate atingnd harta i selectnd opiunea Settings din meniu. Aici utilizatorii pot opri
instruciunile audio, pot schimba stilul hrii, vedea ntreaga ruta
i informaii despre rut, scrola harta, schimba ntre modul 2D
sau 3D al hrii sau iei din navigaie.

22

nr. 37/iulie, 2015 | www.todaysoftmag.ro

Concluzii
Folosind feedbackul de la utilizatori i prieteni, am
mbuntit aplicaia pn la o stare de producie. Urmtorii
pai sunt implementarea unei componente pentru recunoaterea
vocal, pentru a oferi o ntreag experien hands free,
gruparea punctelor de interes pe hart i folosirea funcionalitii
RealReach a Scout SDK. n viitorul apropiat aplicaia va fi
lansat pe AppStore i sperm c va mbunti vieile multor
oameni.
Un demo al aplicaiei i informaii despre competiie se pot
gsi pe site-ul Challengepost: http://challengepost.com/software/
wheelnav .

programare

tiu Scrum, Kanban si alte cteva


cuvinte n Agile

Ovidiu uta

ovidiu.suta@isdc.eu
QA & Bid Manager
@ ISDC

ucrez n IT de mai mult de 10 ani i a fost, cu siguran, distractiv i deopotriv


o provocare s observ i uneori s urmez tendinele n materie de metodologie n domeniu. Prin definiie industria IT implic un proces creativ, chiar dac
termeni din familia Factory House sunt des folosii. n primul rnd nu vorbim despre o producie de tipul celei pe care o vedem ntr-o fabric (n definiia clasic), cu
o linie de asamblare i munc repetitiv, ci mai degrab despre una creativ n care,
totui, ncercrile de standardizare a procesului de dezvoltare au fost prezente nc de
la nceputuri.
Dac privim puin n jur la peisajul
din industria IT / software development i
la modul de lucru al zilelor noastre, metodologiile Agile ocup un loc important. i
sunt multe astfel de arome Agile.
Pare c autorii / semnatarii Manifestului
Agile i-au creat fiecare metodologia proprie prin care s implementeze principiile
descrise n manifest. Exist XP, DSDM,
Crystal, Adaptive Software Development,
Advanced Development Methods, Scrum
i nc altele, fiecare pornite de la aceleai
persoane care au convenit la un moment
dat asupra ctorva principii de baz dar nu
s-au mai neles asupra unui mod unitar
de implementare. Acest status-quo descrie
destul de clar problema pe care o ntmpinm cu toii astzi. Dac zece persoane nu
au reuit s se neleag cum s se fac un
lucru, ce anse avem noi, restul lumii?
ncercarea de standardizare printr-o
metodologie oarecare a procesului creativ, care este dezvoltarea software, s-a
dovedit foarte dificil pn acum; o dat
din cauz c este foarte greu de standardizat creativitatea dar i din cauze ce in
de contextul specific acestui domeniu:

tehnologia, cultura organizaional, mrimea echipelor sau a proiectelor i nc


muli ali factori.
Un alt aspect important n aceast
ecuaie este, n opinia mea, cel financiar:
toi ne dorim eficien maxim - produsul
lansat n pia nc de ieri sau s scurtm
ct mai mult drumul de la idee la produsul finit. n general, industria IT a reuit s
in pasul (unii ar spune c de fapt a generat) cu viteza cu care se dezvolt societatea
de azi. Totul este mult mai rapid azi dect
acum un deceniu, iar tendinele nu arat
deloc o ncetinire ba din contr.
Exist o ntreag pia pentru aceste
metodologii, n care se investete i din
care se ctig muli bani: se organizeaz
traininguri, workshopuri, servicii de
consultan, conferine, produse, instrumente, toate ncercnd s atrag utilizatori
n a folosi o metodologie sau alta cu promisiuni de mbuntire a productivitii,
cteodat cu ordine de mrime impresionante. Grupuri largi de profesioniti
au devenit vectori de comunicare n
favoarea uneia sau alteia dintre metodologii; ncercrile de a-i justifica

www.todaysoftmag.ro | nr. 37/iulie, 2015

23

managment
tiu Scrum, Kanban si alte cteva cuvinte n Agile
existena profesional a unora dintre aceti
profesioniti au condus n timp la numeroase dezbateri n industria IT: ce e bine
i ce nu; cu ce e mai bun o implementare
fa de alta, care e cea mai eficient implementare i aa mai departe.
Totui, la o cutare rapid dupa termenul Agile, cele mai populare 3 variante
sugerate de motorul de cutare sunt Dead;
bullshit; a cancer. La fel de muli bani se
pot ctiga predicnd mpotriva metodologiilor Agile ca i din promovarea acestora.
Dar Agile este nc o noiune nou n istoria
metodologiilor de Software Development.
Privind puin n urm vom gsi i altele:
Structured Programming (1969), SDM (or
PANDATA in 1970s), SSADM (1980s),
OOP (definit nc din anii 60 , dar care
a cunoscut un avnt maxim n anii 90
), RAD (1991), DSDM (1994), Scrum
(1995), RUP (cu susinerea IBM din 1998),
Extreme Programming (1999), iar lista este
departe de a fi complet.
Istoria ne permite s observm un
ablon n comportamentul grupului nostru
profesional: ndat ce apare o noutate n
pia legat de felul n care ne-am putea
organiza munca, aderm la ea cu tot entuziasmul i aparent fr o analiz riguroas;
inevitabil ceva merge prost, cel mai probabil din cauza noastr, dar vina cade tot
pe noua mod i nu pe cei ce o poart
zilnic; ntre timp cineva descoper o nou
metod revoluionar iar ceilali o urmeaz
spernd la ce e mai bun, iar ciclul se reia,
fr ca (aparent) cineva s nvee din
greelile trecute. Trebuie s nelegem c
nu metodologiile sunt neaprat greite, de
cele mai multe ori implementarea pus n
practic de oamenii implicai este greit
cu concursul unei ntregi armate create n

24

jurul acelui nou concept (amintii-v de


toi trainer-ii, consultanii, conferinele
despre care scriam mai devreme!). Noi,
oamenii din IT, avem o memorie foarte,
foarte scurt!
i totui: de unde apare acest comportament? De ce inventm lucruri noi numai
pentru a le folosi o scurt perioad i apoi
le aruncm la gunoi? De ce acceptm cu
atta uurin noul, doar pentru c e cool,
nainte de a fi siguri c vechiul este ntradevr depit? Rspunsul are, n opinia
mea, cel puin dou pri.

Maturitatea sau lipsa ei


Industria IT este nc, n ntregimea ei,
la nceput! Avem 50 sau 70 de ani depinde
pe cine ntrebi, iar asta este nesemnificativ,
n marea schem a lumii. n comparaie
cu alte domenii, de exemplu industria
manufacturier, transporturile, cercetarea,
medicina sau chiar avionica, industria IT
este nc la nceput. Alte grupuri profesionale au avut timp s ncerce, s cad, s
nvee din greeli i s se adapteze.
Dac am compara numai numrul de
specialiti n domeniu, conform unui studiu fcut la nivel mondial de ctre IDC
research, suntem aproximativ 11 milioane
de programatori profesioniti, care i
ctig existena din asta, plus nc aproximativ 7,5 milioane de pasionai de IT.
Comparat cu numrul total al persoanelor
active din lume (mai mult de 2,3 miliarde),
programatorii profesioniti reprezint un
procent insignifiant de 0,5%, ns impactul acestui mic procent este cu mult, mult
mai mare!
Numai acest punct de vedere ar fi suficient s ne conduc la concluzia din titlul
paragrafului: industria IT i caut nc un

nr. 37/iulie, 2015 | www.todaysoftmag.ro

drum n via; nc ne luptm s ne crem


un standard care s funcioneze acceptabil, ns suntem constrni s facem asta
n ritmul accelerat al lumii n care trim, la
o vitez mult mai mare ca acum 50 sau 80
de ani! O ncercare de a urca ntr-un tren
care a pornit demult de la peron i trece cu
vitez pe lng noi. Nu-i deloc uor!
Maturizarea cere timp iar timpul este
exact ceea ce lipsete societii contemporane; vrem totul i vrem totul nc de ieri!
Nu mai avem rbdare s cretem i aceasta
se poate observa din pcate la toate nivelele societii.
Imaturitatea, n combinaie cu viteza
din ce n ce mai mare a cererii, se reflect
negativ n rata de succes a proiectelor IT
la nivel mondial. Exist numeroase statistici pe aceast tem, dar putem spune fr
frica de a grei c proiectele IT eueaz n
proporie de 30 60%, la diferite niveluri
(nu sunt utilizate, cu depiri uriae de termene sau buget etc.). Ci dintre noi am
cumpra o main sau o cas, ori ne-am
urca pe o mas de operaie dac am ti
c exist 30-60% anse ca ceva s mearg
foarte ru?
Din pcate, n relaia cu industria IT,
ceilali se ateapt ca noi s eum, iar
procentele de mai sus nu ajut (confirm
aceste ateptri). Oricnd este adus n
discuie un proiect IT se fac nti planuri
de contingen pentru eventualitatea unor
depiri ale bugetelor, fie c este vorba
despre bugetul de timp sau de latura financiar a proiectului. A fi parte dintr-un grup
profesional de la care ceilali se ateapt la
un eec, reprezint pentru mine cel mai
negru punct n cariera mea profesional.

TODAY SOFTWARE MAGAZINE


Panaceul / Piatra filozofal / Sfntul Graal
Faptul c discutm despre o soluie universal a problemelor noastre, ca profesioniti n IT, poate aprea ca un (alt) semn
de imaturitate, dar din punctul meu de vedere are nevoie de un
paragraf special.
Continum s cutam fr odihn o reet perfect care ar
putea rezulta ntr-un proiect perfect, ceva care s ne asigure succesul i care ne fac fericii ca echip, pe noi, pe efii notri i pe
clienii nostri. Dar, dei aa ceva nu exist, i nici nu va exista vreodat, oamenii continu s o caute! i pentru orice exist cerere,
va exista i o ofert! De aici ntreaga pleiad de metodologii,
trainer-i i consultani din jurul nostru. Toate acestea exist pentru c exist o nevoie, creat artificial, n opinia mea, de anumii
manageri care cred c de ndat ce compania / departamentul
/ echipa / proiectul va fi Agile / va prelua modelul Scrum / va
prelua modelul Kanban / vor bea ceai din iarba-fiarelor culeas la
lun nou i cu ap nenceput din izvorul fericirii, se vor da de
trei ori peste cap i toate problemele vor deveni istorie.
Am ntlnit adesea urmtorul scenariu, n care echipa de
management sau clientul doresc s optimizeze performanele
echipei pentru c prea mult timp se consum neproductiv cu
activiti de planning, estimri sau n retrospective i decid s
adopte Kanban n loc de Scrum (nu sunt activiti de planning n
Kanban, nu-i aa? Mai mult timp pentru programare ). Deciziile
sunt luate top-down, cu puin, dac nu deloc, nelegere a adevratelor motive care au condus la eventuala slab performan
a echipei.

de feedback de la client, DE CE este nevoie de un sistem n care o


echip s-i exprime ngrijorrile sau frustrrile, soluia (CUM)
va veni cu uurin.
n ncheiere a spune c nu reeta este ceea care are cea mai
mare importan! S ne concentrm asupra principiilor, s construim o cultur n care colegii s poat provoca regulile i care
s permit gsirea celei mai bune rspunsuri la problemele de
zi cu zi.
Cineva mi spunea c cel care a supravieuit mai mult de 6
luni n IT, innd cont de gradul nalt de maturitate intelectual
necesar pentru a-i ndeplini sarcinile zilnice, face parte din cei
mai inteligeni 5% dintre oamenii din ntreaga lume. Probabil
vreau s cred asta pentru c lucrez i eu, la rndul meu, n IT . i
nu suntem departe de adevr! n general n industria IT lucreaz
oameni cu inteligena peste medie, care vor gsi cea mai bun
soluie pentru orice problem le-ar sta n cale i mai bine dect
oricare dintre consultani. Convinge-i DE CE este nevoie de o
soluie pentru mbuntirea (s zicem) a productivitii i nu
le mai sta n cale! Poate sun utopic sau flower-power, dar chiar
funcioneaz!

n concluzie
Modul cum se fac lucrurile n industria IT are un impact
minor n ziua de azi. Este pur i simplu mult prea devreme, nc
nu am neles pe deplin De ce facem anumite lucruri i deja ne
concentrm pe CUM. Odat ce vom nelege DE CE este nevoie
(de exemplu) de team alignment, DE CE este important predictibilitatea n procesul de dezvoltare software, DE CE avem nevoie

www.todaysoftmag.ro | nr. 37/iulie, 2015

25

testare

Teste cu Selenium n contextul


Continuous Delivery

a parte a unui nou proiect web, una dintre intele echipei de QA a fost s proiecteze i s ruleze o suit de regression rapid i fiabil ca parte a procesului
de continous delivery. Menirea acestuia a fost ridicarea nivelului de ncredere
pentru fiecare build rulnd un set ntreg de teste n locul unui set specific de teste de
tip sanity. Totui, pentru ca acesta s reprezinte o soluie viabil, trebuia ca testele s se
execute rapid, n maxim 10 minute.
Robert Lantos

Robert.Lantos@betfair.com
Senior QA Engineer
@Betfair

Reducerea timpului de execuie cnd


suita conine un numr mare de teste, este
mai dificil dect ar crede muli. nc de la
nceput am identificat trei mari provocri
care trebuiau luate n considerare.

Execuia suitelor de teste ar trebui s fie


rapid
Un deployment tipic const n execuia
testelor pe cel puin 2 noduri i un VIP.
Fiecare dintre aceste rulri nseamn
execuia a 450 de teste font end si a 70 de
backend. Aceasta nseamn c e nevoie de
cel puin 3 rulri a setului de regression, iar
ca s meninem timpii de execuie sub 30
de minute, rularea unui set nu trebuie s
depeasc 10 minute.

Nivelul de fiabilitate a testelor trebuie s


fie mare

ruleaz rapid dar este si suficient de fiabil


pentru un build de Continous Delivery.
Am reuit s executm n mod constant
suite de teste de regression n aproximativ
7 minute fr a avea erori.
Urmtoarele idei reprezint modul n
care am reuit s finalizam cu succes acest
proiect.

1. Tool-uri i medii de teste folosite


Te s t e l e s e b a z e a z p e
RemoteWebDriver (grid) al Selenium i
folosesc un environment de tip remote cu
multiple noduri pentru o mai bun scalabilitate precum si un hub local cu un
singur nod, pentru execuia testelor locale.

2. Paralelizarea testelor ntr-o msur ct


mai mare
Execuia rapid a sute de teste nu este

Pentru ca rularea testelor de regres- posibil fr o oarecare paralelizare. Cu


sion s fie viabil, trebuie s ne asigurm ct testele sunt mai paralelizabile cu att
c testele sunt fiabile i c nu exist alerte execuia setului de regression poate s fie
false precum timpii de rspuns mari pe mai rapid. ns crearea unui pachet de
serverele interne folosite.
teste uor de paralelizat nu este simpl,
pentru c fiecare metod de teste trebuie
Pachetele de teste trebuie s fie scalabile
proiectat cu multi-threading. Aceasta
A trebuit s lum n calcul i scalabili- nseamn c fiecare test trebuie creat ca un
tatea pachetelor de teste n cazul n care noi modul individual separat de celelalte.
teste vor fi adugate, n felul acesta reuind
Ca s putem urma strategia
s meninem timpii mici de execuie.
menionat anterior, folosim urmtoarea
Folosind urmtoarele idei, am reuit s meod pentru crearea unei instane de
contruim o suit de teste care nu doar c RemoteWebDriver:

26

nr. 37/2015, www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE

MyDriver, n cazul nostru este o clas personalizat care Custom onTestFailure


extinde clasa RemoteWebDriver, noi o folosim pentru a suprascrie unele funcii de baz al Seleniumului precum metoda
getScreenshotAs.
Testele modulare ofer o scalabilitate ridicat. Astfel
capabilitaile de paralelizare ale testNG-ului mpreun cu un selenium grid cu noduri numeroase permit rularea unui numr mare Custom onTestSuccess
de teste n acelai timp, reducnd drastic durata de execuie a unei
suite de tip regression.
n continuare, este prezentat un exemplu de clas de teste care
folosete metoda prezentat un pic mai sus:
Not: AbstractTest din exemplul de mai sus reprezint o
clas de tip setup extins de fiecare din testele noastre, Acesta
trateaz ncrcarea contextelor de spring si iniializarea
listener-ilor.

5. Stabilizarea testelor prin wait-uri dinamice.

Not:

Probabil c ai observat c nu folosim @BeforeMethod pentru pregtirea metodelor de teste i nici @AfterMethod pentru
curarea instanelor de WebDriver de dup ele. Acest lucru se
datoreaz unor probleme de thread safety pe timpul execuiei
unui numr mare de teste n paralel si mai ales cnd se folosete
un DataProvider. Am ales n schimb s folosim listener-i customi pentru a suprascrie metodele de onTestFailure i onTestSuccess
pentru a face teardown dup fiecare test.

3. Folosirea PageObject-elor
n UI-ul aplicaiei web testat, sunt elemente cu care metodele
de teste interacioneaz. Un PageObject pur si simplu modeleaz
aceste elemente ca obiecte n cod. Acest lucru reduce numrul de
cod duplicat, ceea ce nseamn c, n cazul unei schimbari de UI,
o singur modificare va ajunge pentru a repara testele.

4. Listeneri customizai i importana sesiunilor bine administrate

Un listener customizat extinde TestListenerAdapter din


testNG pentru a se folosi de obiectul ITestResult. Aceti listener-i ofer o modalitate flexibil de administrare a tuturor
aciunilor post test, i sunt folosite pentru curarea instanelor
de WebDriver rmase active.
Urmtoarele fragmente de cod arat modul n care tratm
oprirea instanelor de driver.

Una dintre cele mai importante nevoi pentru ca pasul de


regression s poat fi rulat n procesul de Continuous Delivery
este stabilitatea testelor. Acestea trebuie s ruleze n mod constant fr rezultate fals positive i cu o rat de succes a testelor de
100%. Acest lucru ns este foarte greu de implementat, mai ales
n cazul testeler de tip frontend. Sunt destul de multe probleme
care pot s apar, precum: probleme cu dependine, ncrcarea
lent a unor pagini, defecte .a.. Pentru o mai bun stabilitate a
testelor de regression am apelat la folosirea wait-urilor dinamice
i a mecanismului de retry condiional.
Selenium ncorporeaz un mecanism foarte util de ateptare,
implicit wait face ca WebDriver s parseze DOM-ul pentru un
anumit timp prestabilit atta timp ct elementul cutat nu este
disponibil. Odat ce un implicit wait este setat, acesta rmne
active pe toat durata de via al instanei de WebDriver. Din
pcate aceast metoda nu functioneaz n toate cazurile, mai
ales cnd vine vorba de pagini cu mult java script. Pentru a
compensa aceste lipsuri noi, am apelat la wait-uri condiionale.
Aceast metod va astepta activarea Jquery-ului i pentru ca
document.readyState s fie complete:

www.todaysoftmag.ro | nr. 37/iulie, 2015

27

testare
Teste cu Selenium n contextul Continuous Delivery

Exemplul urmtor va atepta pn cnd se poate face click 6. Stabilizarea testelor prin retry-uri condiionale.
pe element:
Aa cum am menionat i mai devreme un alt instrument de
stabilizare a testelor este mecanismul de retry condiional. Prin
simpla rerulare a testelor euate putem crete stabilitatea i rata
de succes a testelor de regression. Totui, aceast metoda are o
vulnerabilite major, ea permite propagarea unor posibile defecte
n cazul n care acestea nu apar n mod constant. Soluia noastr
pentru aceast problem a fost folosirea mecanismului de retry
No t : A m b e l e e x e mp l e f o l o s e s c m e t o d a w a i t . doar in unele condiii prestabilite. Acest lucru se face prin verifiuntil(<condition>), condiiile pot s fie personalizate dar exist carea excepiei generate de un test euat. Astfel doar testele euate
i o serie de opiuni predefinite ( precum elementToBeClickable) cu o excepie ateptat vor fi rerulate.

28

nr. 37/iulie, 2015 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


7. Soluii alternative
Una din cele mai frustrante probleme care pot s apar la testarea unor aplicaii web n chrome este cea cu Element is not
clickable at point. Metoda click din Selenium ncearc s apese
un element chiar n punctul ei central, ns din cnd n cnd, dei
pagina s-a ncrcat cu succes, elementul intit mai trece printr-o
faz de randare a poziiei n pagin cauznd ratarea operaiei de
click. Ca soluii alternative, noi am apelat la folosirea javascriptului sau al obiectului Actions pentru a face click pe element.

jsClickElement

Actions

n cazul n care vei rula teste pe Internet Explorer, chiar dac


ultimele versiuni sunt comparabile cu browserele mai populare, mai sunt unele mici probleme. De exemplu, capabilitatea
ACCEPT_SSL_CERTS nu funcioneaz cu versiunile recente de
IE. O soluie alternativ a fost s folosim metoda urmtoare pentru a accepta certificatul.
Prin acest proiect am nvat mult despre capabilitile
Seleniumului, dovedindu-se c acesta poate fi un tool extrem de
util. Pentru noi, aceast utilitate ne-a ajutat s integrm cu succes
pachetele de teste de regression n Continuous Delivery, oferind
un mod rapid i fiabil de testare a produsului nostru.

www.todaysoftmag.ro | nr. 37/iulie, 2015

29

programare

High-End Content Management,


varianta Adobe

Alexandru Gheboianu
alexandru.gheboianu
@pitechnologies.com
Software Engineer
@ Pitech+Plus

30

nr. 37/2015, www.todaysoftmag.ro

umrul companiilor care utilizeaz strategii i metode pentru stocarea,


managementul i distribuia de coninut i documente asociate proceselor organizaiei este n cretere. Aceste metode sunt grupate sub denumirea
de Enterprise Content Management (ECM). Sub umbrela ECM se gsesc soluii de
management a documentelor, managementul coninutului web, cutare, colaborare i
managementul activelor digitale. Soluiile de tip ECM i propun s uureze managementul informaiilor organizaiei prin simplificarea stocrii, securitii, permisiunilor,
reteniei i a fluxurilor informaionale.
n urma achiziiei de ctre Adobe a
companiei elveiene Day Software, linia de
produse Day Communiqu s-a transformat n Adobe CQ, iar de curnd n Adobe
Experience Manager (AEM). n anul 2014
cei de la Adobe au devenit lideri de pia n
Cadranul Magic Gartner pentru soluii de
Web Content Management.
AEM este o platform destinat celor
mai complexe i pretenioase organizaii,
care permite managementul informaiilor
cu un grad ridicat de granularitate.
Situaiile n care se preteaz utilizarea
acestui produs sunt portalurile
multi-site i multi-limb, unde
este necesar administrarea
independent a coninutului de
ctre mai muli content-editor-i
n baza unor procese definite de
ctre organizaie.
Acest lucru este posibil
datorit unei soluii tehnice
ingenioase i a unei nelegeri
temeinice a domeniului ECM
de ctre creatorii produsului.
Din punctul de vedere al tehnologiilor, AEM este un mix de
framework-uri open source Java

i librrii proprietare Adobe.


Pentru a gestiona un sistem cu o complexitate ridicat precum AEM, s-a decis
folosirea unui container OSGI, Apache
Felix, pentru managementul pachetelor i librriilor. OSGI este un subiect n
sine pentru mai multe articole, ns n
cazul de fa avantajul major pe care l
aduce este posibilitatea de a porni i opri
diverse componente ale sistemului, fr a
afecta funcionarea general a aplicaiei i
deployment cu 0 downtime.
Partea cu adevrat inovatoare este

programare

TODAY SOFTWARE MAGAZINE

introducerea Apache Jackrabbit Oak ca


soluie pentru nivelul de stocare a datelor.
Jackrabbit Oak este un content repository
arborescent care implementeaz standardele JCR (Java Content Repository) i
WebDAV, care permite tratarea uniform
a resurselor, indiferent de tipologia lor.
Astfel pentru un utilizator Oak, devine
transparent dac resursele pe care le acceseaz sunt pagini web, documente, imagini
sau alte active digitale.
Framework-ul web este tot open source,
Apache Sling, care permite managementul
JCR ntr-o manier REST. Puterea Sling
st n faptul c abstractizeaz accesul la
JCR i ofer modaliti diverse de rendering a resurselor, printr-un mecanism de

Construcia de componente vizuale custom


este relativ facil, fiind bazat pe tehnologii
cunoscute precum JSP si ExtJS, la care se
adaug i o librrie Adobe, numit Granite.
La nivel de infrasctructur, AEM a
fost conceput s ruleze ntr-un mediu
distribuit i ofer capabiliti diverse
de configurare a instanelor de server,
de la o singur instan la cluster sau
load balancing pe mai multe instante.

selectori. Astfel un nod din JCR poate fi


prezentat ca JSON, HTML, XML etc. .
Cu aceste framework-uri la baza AEM,
sistemul ofer o suit bogat de componente UI pe care editorii le pot folosi direct
n pagini printr-un mecanism drag&drop.
Astfel responsabilitatea crerii de pagini
a fost transferat de la programator ctre
content editor. Programatorului i revine
responsabilitatea de a configura template-urile pe baza crora se vor construi
paginile i de acrea la nevoie componente
personalizate pentru nevoile clientului.

de author i publish nu trebuie s fie nvare a acestei tehnologii este abrupt,


corelate, iar AEM ofer un mecanism de necesitnd o echip experimentat n tehreplicare a datelor din author pe publish. nologii Java EE i concepte de ECM.
Astfel ncrcarea pe servere este distribuit, iar o activitate ridicat a editorilor va
fi resimit doar pe instantele author, fr
a afecta performana pentru clienti, ntruct acetia se conecteaz la publish. Adobe
mai ofer i un modul separat, numit
Dispatcher, care are funciile de cache i
load balancing. Responsabilitatea gestionrii cache-ului este luat de pe umerii
programatorilor, deoarece Dispatcher-ul

Serverul AEM poate s funcioneze n


dou moduri: author i publish. n modul
author, instana este utilizat pentru configurarea platformei i crearea de coninut,
iar n modul publish instanta servete contentul ctre clieni. Numrul de instane

invalideaz cache-ul automat n momentul


n care o pagin a fost modificat.
n concluzie, soluia celor de la Adobe
este destinat organizaiilor multinaionale
care au acumulat cantiti considerabile
de content pe care doresc s l utilizeze n
moduri diverse. Este de apreciat trecerea
responsabilitilor din zona de development spre content editor-i. Acetia pot s
lucreze independent de o echip de dezvoltare pentru a crea un site, n condiiile n
care au la dispoziie o suit de componente
care le satisfac nevoile.
Dezavantajele AEM sunt preul prohibitiv (450.000$ cost mediu pentru licene)
i un cost total de implementare ajungnd
n medie la 2M $. De asemenea, curba de

www.todaysoftmag.ro | nr. 37/iulie, 2015

31

programare

Scurtul ghid al unicornului din Ruby on Rails

uby on Rails ncepe treptat s ias din aria de influen a hipsterilor. Cu siguran vei fi numit unicorn dac
programezi n Ruby on Rails - toat lumea a auzit de existena acestor developeri, dar nimeni nu a vzut unul
n realitate. Dar, nainte de a ne afunda n subiect, hai s vedem de ce ai avea nevoie de acest rubin pe ine:
Online.
Github - este nevoie s adaug vreun
comentariu?
urban dictionary - proiect de tip
crowdsourcing pentru dicionar online
de argou.
n continuare vom prezenta
particularitile lui Rails.

Beneficiile lui Ruby on Rails

1. Convention over Configuration

Observm un nceput modest n 1995


ca limbaj de programare foarte obscur
i putem deduce c popularitatea vine
de la framework-ul Rails, care a creat
o comunitate efervescent. Rails a fost
conceput i creat de David Heinemeier
Hansson n vara lui 2004. Pentru mai
multe informaii sp ecif ice despre
Ruby(1) i Rails(2) v invit s consultai
referinele de la finalul articolului.

Impresioneaz gradul su ridicat de


viabilitate comparativ cu alte opiuni
populare folosite la momentul curent n
mediul de dezvoltare.Enumerm mai jos
minicolecia de website-uri, care ofer o
mrturie clar a potenialului frameworkului Rails pentru aplicaii de tip web:
Twitter n primii lui ani de
funcionare, Twitter a avut la baz doar
RoR, ulterior lundu-se decizia de a-l
muta ntr-un mediu Java.
Analiznd diagrama de mai sus
Basecamp - proiectul pe care David
remarcm cteva lucruri interesante:
a rafinat Rails.
Ruby este mult mai puternic dect PHP i
Yellow Pages - celebra carte cu
Javascript i este foarte aproape de C#.
numere de telefoane a pit n lumea
virtual sub numele de Pagini Aurii

32

nr. 37/iulie, 2015 | www.todaysoftmag.ro

Aceast mic funcionalitate face Rails


nu numai unic ci i formidabil. Avnd la
dispoziie aceast unealt, un programator
se poate concentra asupra codului ntr-o
manier pragmatic, n loc s i iroseasc
energia i atenia asupra fiierelor de configurare. Acest aspect poate fi urmrit cel
mai bine n arhitectura de tip Model-ViewController pe care limbajul o impune.
Maniera n care acesta gestioneaz este
suficient de interesant s strneasc zmbete pe faa oricrui programator.
Aadar, n loc s fii nevoit s i configurezi care Model (unitatea atomic de
stocare n baza de date) merge n care
tabel din baza ta de date, Rails i ofer o
regul foarte simpl: s presupunem c ai
un model numit User, n acest caz vei ti
cu siguran ce va fi asociat cu un tabel
numit Users ( pluralul lui user). Mai mult,
logica responsabil pentru codul ce se va
ocupa de model va fi regsit n controllerul numit UsersController, care va fi mapat
la un set de rute predefinite de resursa
numita users (endpoint-uri de tip RESTful

putea manipula codul fr a mai fi nevoit s primeti informaii


de la developer-ii anteriori. Acum v ntreb din nou, aa-i c e
grozav? i mai exist i alte puncte forte!

2. Comunitatea

sunt oferite - index/ show/ new/ create/ edit/ update/ delete) care
vor corespunde metodelor cu aceleai nume definite n controller
ca puncte de acces. Apoi, desigur, view-urile render-uite de aceste
metode se vor afla n folder-ul views, n sub-folder-ul users, avnd
fiecare .html acelai nume ca i endpoint-ul.

Din acest punct de vedere, se poate spune c eti de-a dreptul


cu picioarele nfipte n pmnt. Exist o bibliotec uria de tip
open source disponibil pentru Ruby on Rails. n plus, majoritatea surselor sunt foarte bine documentate(4) i exemplificat(5)
peste tot.
Oricnd ai nevoie de ceva, exist un gem (voi adresa acest
concept n rndurile ce urmeaz) special construit, care i va
rezolva problema n stilul Rails.
Ct despre gem-uri - le poi considera librriile sau plug-inurile din alte limbaje. Pentru a folosi gem-urile prin aplicaie,
exist un fiier numit gemfile care i permite s adaugi sau s
tergi dup bunul plac orice bibliotec prin url. Pentru a te asigura
c nu i poluezi maina sau alte proiecte cu diferite gem-uri fiecare avnd diferite versiuni, exist mai multe abordri. Eu sugerez
cu ncredere folosirea rvm-ului(6) ( ruby-versioning-manager ).

Acum, cum ar fi dac toate astea s-ar genera cu o singura


Iar ultimul bonus al comunitii este faptul c este proactiv.
comand?
n general, comunitile lncezesc, mbtrnesc sau chiar se
mpiedic n proiectele de tip boom. Dar nu este cazul i aici. Ba
Scaffolding-ul i confer aceast posibilitate, avnd la chiar mai mult, se poate spune c este mai efervescent ca atunci
dispoziie o aplicaie care ruleaz n doar cteva secunde (avnd cnd totul a nceput!
deja Rails instalat). Nu tiu ce prere avei voi, dar mie mi se
Iar ca ultim aspect - dac vreodat ai nevoie s rezolvi o
pare folositor i rapid! De notat este faptul c i conveniile pot fi anumit problem i nu tii cum, railscasts(7). te va indruma/
schimbate dac este dorit situaia, ns Rails ntrete ideea de a inspira de cele mai multe ori n a gsi o rezolvare.
te folosi de ele aa cum sunt date.
nc un motiv pentru care vei iubi aceast practic este 3. Te face fericit!
uurina pe care o d utilizatorilor de a se plimba prin orice proiNu, nu e un slogan publicitar! elul lui Ruby, dup cum
ect. Dac ai nvat o dat aceste convenii i trebuie s te mui subliniaz creatorul ei, a fost cel de a face programatorii fericii.
la un alt proiect Rails, exist anse extrem de mari ca s nelegi Acesta este de fapt aspectul care l-a atras pe David de la nceput.
logica din spatele aciunilor doar dintr-un UML. Ba mai mult, vei Dup ce s-a ndrgostit literar de sintax, el a decis c Ruby este

www.todaysoftmag.ro | nr. 37/iulie, 2015

33

programare
Scurtul ghid al unicornului din Ruby on Rails

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

baza pe care i va ntemeia framework-ul. i, pentru a continua


tradiia, l-a optimizat chiar mai mult pentru a aduce programatorilor ct mai mult fericire i ct mai puin btaie de cap.Pe
lng faptul c poi scrie codul n englez aproape pur, mai
ai i beneficiul de a scpa de cele mai plicticoase pri ale web
development-ului (evitnd fiierele de configurare!), toate acestea
fiindu-i accesibile n cea mai rapid manier. Din punctul meu
de vedere, aceasta ar face i pe cel mai nrit programator s dea
din coad.

Iar acest lucru mi s-a ntmplat de mai multe ori cnd


codam. Ba chiar am ajuns la punctul n care ghiceam ce verb sau
combinaie de verb i adverb mi va da rspunsul corect, iar n
caz c nu mergea, cutam pe Google (sort_by, .present? .empty?).
i, poate c nc nu suntei impresionai. Aa c, am s v mai
prezint un mic secret. Rails seamn att de mult cu engleza deoarece folosete un DSL(10) intern. Cum e asta bun pentru noi?
Ei bine, permitei-mi s scriu un code snippet pentru voi, apoi
v rog s-l citii:

4. Nu eti nevoit s ai cod duplicat .

class User < ActiveRecord::Base


devise :confirmable, :registerable

Aceast filosofie este puternic impregnat n ADN-ul Railsului. Dup metodologia n care codul este mprit n modele,
controller-e i helper-e, niciodat nu vei avea nevoie s i duplici
codul. Ba mai mult, logica este deja extras n gem-uri de ctre
comunitate (vedei cum interacioneaz?! ) i le poi folosi doar
inserndu-le n gemfile-ul tu. Prin urmare, dac ai nevoie de un
panou de administrator, poi oricnd s impori iactiveadmin
care este att minimalist ct i stilat. La toate acestea se adaug
faptul c este configurabil. Dac ai nevoie de soluii de autentificare, devise o va face pentru tine. Apoi, probabil vei avea nevoie
de autorizare- innd cont c ai user-i, vei avea tipuri de useri, care se autentific pentru a vedea coninut diferit)- cancan
reuete asta pentru tine. Iar lista(8) continu...

5. Expresivitatea
Convenia e folositoare pentru c se bazeaz pe fiierele de
configurare i pe relaiile pe care tu le memorezi. Acesta este beneficiul numrul 1. Apoi exist al doilea i anume expresivitatea
lui Ruby, care reprezint principalul motiv pentru care David a
ales Ruby n favoarea oricrui alt limbaj. Dac te ntrebi cum e
folositor?
Pentru nceput, cnd scrii cod te simi bine. Nu numai c nu
i setezi totul la fiecare pas prin aplicaie, dar pur i simplu poi
s deduci nite funcii care exist deja implementate. Ca exemplu, cnd am nceput eu s nv Rails, la un moment dat aveam
nevoie s tiu dac ntr-o list de string-uri include un string
particular pe care l-am calculat eu. i, desigur, exist mereu cele
dou opiuni: iterezi prin el, clasic i verific la fiecare pas, sau, l
caui pe Google. Aa c, uite-m, cutnd pe Google find string
in strings array Rails - iar acesta e primul link(9) pe care l-am
accesat. V las pe voi s descoperii care mi-a fost surpriza cnd
l-am deschis.

34

nr. 37/iulie, 2015 | www.todaysoftmag.ro

validates_presence_of :name, :day_of_birth, :email


before_save :compute_age
has_many :books
has_attached_file :avatar, :styles => {:small =>
240x240>}

Dac nu suntei convini, ncercm altfel. Arat aceast


bucic unuia din prietenii ti i ntreab-l care e cel mai uor
de citit:
Ruby

return Fridge.get_beer_if_available

PHP

$result = $fridge->getBeerIfAvailable($beers);

Java
return Fridge.getBeerIfAvailable()

Principalul avantaj este c v putei exprima cu uurin


gndurile folosind limba englez, fr a fi nevoie de un nivel de
abstractizare suplimentar. n plus, codul este simplu astfel nct l
putei citi ca limb englez.

Concluzii i rezoluii

Aadar, se pare c am ajuns la finalul articolului. Sunt sigur


c nu v-am convins s l ntrebai pe eful vostru dac nu ar vrea
s schimbe profilul firmei spre Rails Dar.de acum nainte,
consider c nu mai exist niciun motiv s avei itemi care stau
pe lista de idei bune de implementat. Avei unealta pentru a face
schimbri rapide unei aplicaii i s v alimentai curiozitatea n

TODAY SOFTWARE MAGAZINE


a vedea cum ar putea funciona. Aa c, de ce s nu o facei? Ca
ncheiere, vreau s v sublinez c RoR v va face att fericii ct i
proprietari ai propriului vostru produs.

Resurse utile:
1.
2.
3.
4.

Getting started with Rails tutorial.(11)


Deployment options.(12)
Official documentation.(13)
Official tutorial.(14)

Linkuri de informaii:
https://en.wikipedia.org/wiki Ruby_(programming_language)
5. https://en.wikipedia.org/wiki/Ruby_on_Rails
6. http://www.unlimitednovelty.com/2009/04/twitter-blaming-ruby-fortheir-mistakes.html
7. http://api.rubyonrails.org/
8. http://guides.rubyonrails.org/getting_started.html
9. https://rvm.io/
10. http://railscasts.com/
11. https://rubygems.org/
12. h t t p : / / s t a c k o v e r f l o w . c o m / q u e s t i o n s / 1 9 8 6 3 8 6 /
check-if-a-value-exists-in-an-array-in-ruby
13. http://en.wikipedia.org/wiki/Domain-specific_language
14. h t t p : / / 1 2 d e v s . c o . u k / a r t i c l e s /
writing-a-web-application-with-ruby-on-rails/
15. https://www.heroku.com/
16. http://api.rubyonrails.org/
17. http://guides.rubyonrails.org/getting_started.html

Emil Lua

emil.luta@tss-yonder.com
Developer
@ Yonder

www.todaysoftmag.ro | nr. 37/iulie, 2015

35

programare

Aplicaii IoT cu Java ME Embedded 8


i Eclipse

Dnu Chindri

danut.chindris@elektrobit.com
Java Developer
@ Elektrobit Automotive

plicaiile Java ME Embedded 8, n forma lor cea mai simpl, sunt uor de
configurat i gestionat, aa cum am vzut n articolul din numrul precedent
al revistei Today Software Magazine. Totui, n cadrul proiectelor software
moderne avem nevoie de unelte care s automatizeze anumii pai, s ne atenioneze
atunci cnd suntem pe punctul de a introduce erori de programare n codul surs, cu
alte cuvinte, s ne sporeasc productivitatea.
Tools. n plus, Oracle ne ofer o serie de
proiecte demonstrative, distribuite cu ajutorul plugin-ului Java ME SDK Demos.
Aceste pachete pe care tocmai le-am amintit depind de extensia ce poart numele
Mobile Tools for Java sau, pe scurt, MTJ.
n mod normal, MTJ se instaleaz automat
mpreun cu plugin-urile Java ME SDK
Tools, ns n cazul n care acest lucru nu
se ntmpl, putem aduga manual aceast
extensie distribuiei noastre Eclipse, prin
intermediul opiunii Install New Software
din cadrul meniului Help. Mai multe detaTooling pentru aplicaii ME cu Eclipse lii despre instalarea acestor unelte, dar i
Plugin-uri necesare
despre instalarea Eclipse, putem gsi n
Pentru a putea urmri paii prezentai documentul Oracle Java Micro Edition
n acest articol, avem nevoie, n primul Software Development Kit, Developers
rnd, de Oracle Java ME SDK 8.1, pachet Guide.
software prezentat n articolul Aplicaii
IoT cu Java ME Embedded 8. De aceea, Crearea unui proiect
ncurajm cititorii s rsfoiasc numrul
O dat ce au fost instalate plugin-urile
36 al revistei, pentru a afla mai multe desJava ME SDK Tools i extensiile MTJ,
pre acest
. Pentru a putea beneficia putem accesa perspectiva Java ME, care
de toate funcionalitile pe care Oracle
ne ntmpin cu o pagin de bun venit,
Java ME SDK 8.1 ni le pune la dispoziie, ilustrat n urmtoarea captur de ecran:
urmtorul lucru pe care trebuie s-l facem
este s instalm
-urile Java ME SDK
La momentul scrierii acestui material,
Oracle ofer suport pentru dou dintre cele
mai cunoscute medii integrate de dezvoltare, Eclipse i NetBeans. n acest articol
vom discuta despre uneltele pe care le
avem la dispoziie folosind Eclipse, ntruct
acest IDE se bucur de un numr mai mare
de utilizatori, dup cum arat unele surse.
Astfel, similar articolului precedent , vom
arta care sunt pachetele software pe care
trebuie s le instalm i cum putem crea o
aplicaie Java ME Embedded 8 cu Eclipse.

36

nr. 37/2015, www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


care s deschid i s nchid un LED (Light-emitting diode), o
dat la cteva secunde. Aceeai fereastr ne permite s dm un alt
nume fiierului JAD (Java Application Descriptor) i s facem alte
configurri legate de proiectul Eclipse. O dat ce am dat un nume
proiectului nostru, mediul de dezvoltare ne avertizeaz c trebuie
s alegem cel puin o configuraie pe care va fi rulat aplicaia.
Astfel, apsm butonul Add... din partea median a ferestrei i ni
se prezint un alt dialog, cu titlul Add Configuration. Din meniul
drop-down SDK alegem Oracle Java(TM) Platform Micro Edition
SDK 8.1, iar Eclipse completeaz automat cmpurile Configuration
Name i Device cu valoarea EmbeddedDevice1. Apsm butonul Finish pentru a reveni la dialogul anterior. n acest moment
putem apsa Finish n dialogul New Java ME Project deoarece
vom accepta valorile prestabilite propuse de IDE.
Imediat ce proiectul a fost creat, Eclipse deschide un editor, care ne permite s editm proprieti ce in de Application
Descriptor, dar i s facem alte configurri. Vedem acest editor
ilustrat n figura urmtoare:
Pagina de bun venit a perspectivei Java ME

Eclipse mpreun cu MTJ ne ofer cteva abloane, care ne ajut


s crem mai rapid proiecte Java ME i componente ale acestora. Acest lucru este demonstrat n figura urmtoare:

Privire de ansamblu asupra configuraiei proiectului

Accesarea pinilor GPIO


Este timpul s prezentm codul surs care acceseaz pinii
GPIO i, pentru aceasta, crem o clas LEDSwitcher, care
extinde clasa abstract javax.microedition.midlet.
MIDlet. n cele ce urmeaz, prezentm codul surs al acestei
clase, iar apoi vom analiza cteva aspecte importante:
package ro.leje;

abloane disponibile pentru dezvoltarea aplicaiilor Java ME

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.microedition.midlet.MIDlet;
import jdk.dio.DeviceManager;
import jdk.dio.gpio.GPIOPin;
public class LEDSwitcher extends MIDlet {
private static final int PIN_NUMBER = 7;
private static final int SLEEP_TIME_MILLIS = 2000;
private GPIOPin pin;

n continuare, dorim s crem un proiect simplu cu ajutorul


noilor unelte pe care tocmai le-am instalat. Pentru aceasta, alegem opiunea Java ME Project din fereastra de tip dialog Select a
wizard. Apsnd Next, ajungem la fereastra n care ni se cere s
public void startApp() {
introducem un nume pentru proiectul nostru. Pentru acest exemtry {
pin = DeviceManager.open(PIN_NUMBER);
plu ne vom folosi de codul listat i discutat n documentul Oracle
Thread.sleep(SLEEP_TIME_MILLIS);
Java ME Embedded, Developers Guide, capitolul General Purpose
for (int i = 0; i < 20; i++) {
pin to+
Input/Output. Acest exemplu ne arat cum putem accesa pinii System.out.println(Setting
true);
GPIO (General Purpose Input/Output) ai unei plcue de dezpin.setValue(true);
voltare. La fel ca n articolul precedent, vom folosi un dispozitiv
Thread.sleep(SLEEP_TIME_MILLIS);
Raspberry PI Model B+.
System.out.println(Setting pin to+
false);
Revenind la paii pe care trebuie s-i urmm pentru a crea un
astfel de proiect cu Eclipse i MTJ, introducem n cmpul Project
pin.setValue(false);
Thread.sleep(SLEEP_TIME_MILLIS);
name numele LEDSwitcher, ntruct dorim s realizm o aplicaie
www.todaysoftmag.ro | nr. 37/iulie, 2015

37

programare
Aplicaii IoT cu Java ME Embedded 8 i Eclipse
}
} catch (IOException e) {
Logger.getLogger(LEDSwitcher.class.getName()).
log(Level.SEVERE, null, e);
} catch (InterruptedException e) {
Logger.getLogger(LEDSwitcher.class.getName()).
log(Level.SEVERE, null, e);
}

}
public void destroyApp(boolean unconditional) {
try {
if (pin != null) {
pin.close();
}
} catch (IOException e) {
Logger.getLogger(LEDSwitcher.class.getName()).
log(Level.SEVERE, null, e);
}
}

Cu ajutorul clasei DeviceManager, care ofer servicii


de gestionare a dispozitivelor de tip Device, deschidem pinul
GPIO cu numrul 7 al plcuei noastre Raspberry PI. Acesta este
referit prin variabila pin de tip GPIOPin, creia putem s-i
setm valoarea ca true sau false, reprezentnd strile de
high i low. n metoda startApp()alternm aceste stri de
douzeci de ori, fcnd pauz de dou secunde la fiecare iteraie.
n cadrul metodei destroyApp()eliberm resursele folosite, respectiv nchidem dispozitivul ce reprezint pinul GPIO.

Acum putem apsa click-dreapta pe elementul ce reprezint plcua RPi, i s alegem din meniul de context Run Project i apoi
numele proiectului nostru. Platforma deschide aplicaia Java ME
Embedded Emulator i instaleaz aplicaia, ncercnd s o porneasc. n acest moment observm c aplicaia emulator afieaz
o fereastr pop-up, care ne avertizeaz c lansarea aplicaiei a
euat. Pentru a afla cauza, putem fie s analizm view-ul Console
din IDE, fie terminalul PuTTY. Amndou ne arat c s-a aruncat
o excepie java.security.AccessControlException
atunci cnd am ncercat s deschidem dispozitivul de tip
GPIOPin. De asemenea, log-ul ne ofer o informaie important, prin mesajul
[CRITICAL] [SECURITY] iso=2:Permission check failed:
jdk.dio.DeviceMgmtPermission GPIO7:7 open

n primul articol din aceast serie am amintit faptul c securitatea este unul dintre cele mai importante aspecte ale crerii
aplicaiilor IoT. Java ME Embedded 8 ia n serios acest lucru i
implementeaz mecanisme moderne pentru a asigura un nivel
de securitate ridicat. Astfel, pentru a accesa pinul plcuei trebuie s permitem acest lucru setnd permisiunea jdk.dio.
DeviceMgmtPermission pentru dispozitivul GPIO7:7, cu
aciunea open.

Dorim acum s testm aplicaia LEDSwitcher dar, pentru a


Eclipse ne pune la dispoziie tab-ul Security al editorului
face lucrurile mai interesante, vom ncerca s o instalm pe dis- despre care am amintit mai devreme unde, n cadrul seciunii
pozitivul Raspberry PI. Aa cum am vzut n articolul la care am Required Permissions, putem aduga permisiuni, apsnd butofcut referire mai sus, trebuie s lansm n execuie mediul Java nul Add.... Acest pas este ilustrat n urmtoarea captur de ecran:
ME i putem face acest lucru conectndu-ne la plcu prin SSH.
O dat ce am fcut acest lucru rulnd scriptul usertest.sh,
nregistrm dispozitivul cu ajutorul utilitarului Device Manager
pe care ni-l pune la dispoziie SDK-ul.
Faptul c RPi este nregistrat se reflect i
n view-ul Device Selector pe care perspectiva Java ME l-a deschis automat:

Adugarea unei permisiuni

View-ul Device Selector

38

nr. 37/iulie, 2015 | www.todaysoftmag.ro

TODAY SOFTWARE MAGAZINE


Debugging cu Eclipse

Mesajele scrise de aplicaie n consol

dispoziie.

Un a d i n t r e c e l e
mai importante activiti implicate n
dezvoltarea produselor software este cea de
debugging. Cu siguran,
fiecare inginer software
care folosete mediul de
dezvoltare Eclipse a intrat
n contact cu uneltele de
debugging consacrate pe
care acesta ni le pune la

Salvm modificrile, care se reflect n descriptorul aplicaiei,


i n cazul aplicaiilor Java ME Embedded 8 putem folosi perLEDSwitcher.jad, i lansm aplicaia n execuie, folosind spectiva Debug, mpreun cu toate view-urile cunoscute. Este
acelai mecanism. De data aceasta, observm c aplicaia ruleaz interesant faptul c putem face debugging chiar i atunci cnd
fr probleme.
rulm aplicaia pe dispozitivul real i nu suntem obligai s o
instalm pe un dispozitiv emulat. Folosind fereastra de tip diaDac realizm montajul folosind un LED, o rezisten, un log Debug Configurations putem seta diveri parametri, cum ar fi
breadboard i doi conectori, obinem configuraia prezentat n dispozitivul pe care dorim s rulm aplicaia, care este MIDlet-ul
imaginea de mai jos. Vedem, de asemenea, c LED-ul s-a aprins ce trebuie executat etc. .Stabilind breakpoint-uri n codul surs i
atunci cnd valoarea pinului a fost setat la true.
lansnd aplicaia n modul debug, execuia se va opri la liniile pe
care dorim s le investigm.

Concluzii
Dezvoltarea aplicaiilor IoT utiliznd platforma Java ME
Embedded 8 este alctuit dintr-un complex de activiti care
aparin mai multor discipline, printre care se numr alturi de
ingineria software i electronica. Realiznd care este complexitatea unei astfel de configuraii, care implic hardware diferit de
maina pe care se face dezvoltarea, putem s ne dm seama de
beneficiile multiple pe care le aduce o platform cum este SDK-ul,
dar i uneltele de dezvoltare precum Eclipse sau NetBeans.

Montajul folosind plcua Raspberry

www.todaysoftmag.ro | nr. 37/iulie, 2015

39

testare

Rapid Software Testing - o schimbare de perspectiv

up cum probabil ai aflat din ediiile trecute ale revistei, acum aproape un an, Altom Consulting l-a invitat la Cluj pe Michael
Bolton (nu cntreul, ci tester-ul), care a inut workshopurile de Rapid Software Testing i Critical Thinking, ajutnd n acest
fel Altom s i ndeplineasc unul dintre obiective, i anume, aducerea n ar n fiecare an a unui trainer internaional.

Motivele pentru care Altom organizeaz


anual sau trimestrial cursuri i workshopuri sunt lesne de neles: popularizarea
unor abordri noi n ceea ce privete testarea; faptul c sunt context-driven i astfel
soluiile acordate sunt la subiect; nlesnirea
contactului dintre instructorii romni i
trainer-ii internaionali, pentru a face mai
uor procesul de transmitere a informaiei.
Anul acesta este rndul lui James Bach
s reviziteze Romnia, la sfritul lunii
octombrie, pentru a livra trainingurile
Rapid Software Testing i Rapid Software
Testing for Managers.

40

Ce este Rapid Software Testing?


Dup cum afirm James Bach, Rapid
Software Testing este o metodologie de
testare complex, adaptat produselor
complexe, schimbrii constante i unui
program haotic. Abordarea acestui tip
de testare ncepe prin dezvoltarea unor
abiliti personale, continund cu atingerea misiunii testrii, adic uurarea
procesului de dezvoltare prin evaluarea produsului. Acest tip de testare nu
nseamn doar vitez: nseamn testarea
unui produs pe baza unei misiuni, proces
care ndeprteaz munca n plus, asigurnd c ntrebrile puse sunt relevante i
obiectivele propuse sunt atinse, n acelai
timp fcndu-se o estimare ct mai precis
a procesului.

nr. 37/iulie, 2015 | www.todaysoftmag.ro

Un instrument esenial n Rapid


Software Testing este cunoaterea
noiunilor legate de exploratory testing,
care cuprinde: test design, test result interpretation, test execution, care, mpreun cu
nvarea ntr-un proces simultan, relev
informaii importante despre produs i
descoper problemele mai repede dect
prin alte metode.

Cui i este adresat acest workshop?


Rspunsul care ar veni pe buzele
tuturor este: tester-ilor. Dar, pentru o mai
bun nelegere a conceptului, i vom lsa
pe James Bach i Michael Bolton s explice
cui i este adresat acest workshop:
The ideal student is anyone who feels
driven to be an excellent software tester or

Cu ce sunt aceste cursuri diferite fa


de altele?
n primul rnd, se difereniaz
datorit prii practice, care primeaz:
testarea, exerciiile, puzzle-urile, toate
contribuie la nelegerea cursurilor i a
conceptelor. Dar aceasta nu nseamn
c partea teoretic este lsat la o parte.
Nu este ignorat, ns nu sunt puse n
practic metodele tradiionale de predare. Plusul cu care vin Rapid Software
Testing i Rapid Software Testing for
Managers este adaptabilitatea la orice se
poate ntmpla pe parcursul procesului de dezvoltare a produsului i faptul
c nu ofer o soluie standard, ci mai
degrab oblig la adaptarea la unele
situaii noi.

Cine este James Bach?


software test manager.
The class is useful to all levels of tester, but seems to be most
appreciated by experienced testers who want to become expert
testers. The class works well when strong-minded and skeptical students attend the class. They challenge the instructor and make the
class better, just like testers should. We try to make the class the
most stimulating intellectual experience you can handle.

James Bach, deintorul Satisface,


Inc, membru fondator al Association
for Software Testing, a scris multe articole i cri n domeniu.
Dup ce a fost angajat la firme de renume din lume, James a ales
s devin consultant n testare, ocupndu-se att de livrarea de
traininguri, cursuri i seminarii, ct i de consultan n testare
de diferite nivele de dificultate, pe proiecte diverse.
Crezul lui James este c un factor decisiv n testare este
reprezentat de abilitile pe care un tester le dezvolt prin practic
i dezbateri, i nu prin memorarea unor termeni de specialitate,
fr a avea neaprat o nelegere a lor. Aadar, dup cum i James
Bach zice, practica este cea mai important component n orice
proces de nvare, alturi de teorie, dar la un nivel mai echilibrat
dect cel folosit n general.

Pentru cel de-al doilea workshop cu James Bach din


aceast toamn am avut de ales ntre Rapid Software Testing for
Programmers i Rapid Software Testing for Managers, alegndu-l
pe cel de-al doilea. Am fcut aceast alegere lund n considerare
i ce va urma dup acest curs, i anume: participanii la Rapid
Software Testing vor ncerca s pun n practic cele nvate la
curs, ns pentru ca procesul s fie unul ct mai lin, vor avea
Propunerea noastr pentru cei care nc nu l-au ntlnit pe
nevoie i de sprijinul managerilor.
James Bach, sau pentru cei care l-au ntlnit acum civa ani, este
s profite de ocazia de a-l ntlni la toamn. Trei zile de inspiraie
Ce este Rapid Software Testing for Managers?
n testare, provocri i schimbare a percepiei asupra testrii la
Aa cum scrie i pe site-ul satisfice.com, acest curs rspunde Rapid Software Testing i nc o zi plin de energie pozitiv i
unor ntrebri precum: cum s planifici i s mpari activiti motivaie de mbuntire la Rapid Software Testing for Managers.
n aa fel nct att timpul, ct i costurile s fie reduse i eficace n acelai timp, cum s recrutezi oamenii cu abilitile
necesare anumitor sarcini, cum s distribui cel mai eficace
planificarea activitilor i a resurselor. Aceste metode se pot
aplica att pe un stil agile, ct i pe unul tradiional de testare,
mai ales n situaiile n care timpul i resursele sunt limitate.
Monica Raiu
monica.ratiu@altom.ro

Cui i se adreseaz acest curs?


Persoanele crora li se adreseaz acest curs nu sunt doar test
manager-ii, ci i project manager-ii i persoanele implicate n procesul de recrutare, care au background tehnic i care trebuie s
tie cnd un posibil angajat este potrivit pentru proiectul care i
este atribuit.

Marketing Specialist
@ Altom

www.todaysoftmag.ro | nr. 37/iulie, 2015

41

management

De la birocraie la succes n nfiinarea


unei firme

n ultimul timp, au aprut din ce n ce mai multe informaii referitor la accesarea


de fonduri europene nerambursabile, acceleratoare de afaceri i idei de business,
dar parc toat lumea trece cu vederea partea de nfiinare efectiv a societilor
comerciale.

Ioana Varga

ioana.varga@aiconsulting.ro
Expert contabil Managing
Partner
@ A&I Consulting

Pentru unii dintre voi care dorii


s ncepei un business, acest pas pare
a fi unul foarte greu de trecut din lipsa
informaiilor. De asemenea, sunt unele
persoane care ezit s demareze o afacere
doar pentru c se gndesc c nfiinarea
unui SRL este o procedur extrem de complicat i mai mult de att, gestionarea unei
firme pare i mai greu de realizat.
Dorim s spulberm multe din aceste
frici, pentru a impulsiona i mai mult
punerea n practic a ideilor de afaceri
geniale pe care le avei.

nfiinarea unui SRL


Menionm nc de la nceput, c toate
demersurile necesare acestei etape de
nregistrare a societii pot fi fcute contra cost, pe baza unei programri, direct la
Registrul Comerului din judeul unde va
avea sediul social noua societate.
Dac nu avei timpul necesar sau
nu dorii s luai contact direct cu toat
birocraia, putei colabora cu un avocat
sau consultant specializat pentru aceste
operaiuni care, n baza contractului de
prestri servicii sau a unei mputerniciri
exprese v poate prelua activitile necesare n aceast etap.
Primul pas n vederea deschiderii unui
SRL este reprezentat de o deplasare la

42

nr. 37/2015, www.todaysoftmag.ro

Registrul Comerului pentru a se rezerva


denumirea firmei. Pentru acest document
costul la aceast dat este de 72 lei.
Cu dovada primit de la Registrul
Comerului privind disponibilitatea denumirii, se va merge la un avocat sau la un
notar public unde se vor da declaraiile
pe proprie rspundere, respectiv, faptul
c asociaii i administratorii ndeplinesc
condiiile prevzute de Legea 31/1990.
V atragem atenia asupra unei situaii, i
anume aceea n care n trecut ai fost asociat i/sau administrator ntr-o firm care
poate nu a avut activitate sau pur i simplu
nu v-ai depus declaraiile fiscale (chiar i
cu valoare 0) sau bilanurile la termenele
prevzute de lege, ai putea avea surpriza
s avei fapte nscrise n cazierul fiscal
(atenie! nu cazierul judiciar) care s v
mpiedice s putei dobndi calitatea de
asociat sau administrator ntr-o nou firm.
Totodat, este important de tiut c nu
putei avea calitatea de asociat unic dect
ntr-o singur firm. Deci, dac deja avei
un business i mai vrei s deschidei o
societate, va trebui s v alegei un partener, chiar dac va fi doar formal (cu 5% din
prile sociale). Deseori suntem ntrebai
dac statutul de PFA (persoan fizic
autorizat) intr n aceeai categorie, iar

programare
rspunsul este nu. Dac avei doar un PFA
i nu firm putei fi unic asociat n firm
nou.
n cazul n care administratorul/
administratorii nu vor putea fi prezeni
la registrul comerului la momentul
depunerii actelor, va fi obligatoriu s se
pregteasc specimenul de semntur n
faa notarului.
Un element esenial pentru nfiinarea
unei societi comerciale este reprezentat
de sediu. Acesta poate fi locuina personal, sediul unui avocat, un spaiu nchiriat
sau primit n comodat. n funcie de varianta aleas sunt anumite documente ce
trebuie pregtite.
Astfel, dac spaiul ce urmeaz a fi
folosit drept sediu nu este spaiu comercial, ci este de tip rezidenial se va pregti
un document cu acordul vecinilor sau al
asociaiei de proprietari pentru a fi folosit
drept sediu al societii. Dac spaiu vizat
este o cas, acest acord va fi cerut doar
dac sunt perei comuni cu o alt locuin
sau este instituit asociaie de proprietari
n acea zon.
Dac la aceast locaie mai este nregistrat o alt societate, atunci va trebui s se
pregteasc la notar o declaraie pe proprie
rspundere c sunt ndeplinite condiiile
referitoare la sediul social. Declaraia
poate fi dat att de administratorul firmei
ce urmeaz s se nfiineze, n calitate de
utilizator al spaiului, ct i de proprietarul spaiului. Registrul Comerului verific
cte societi sunt nregistrate la fiecare
adres.
Dac se alege varianta ca sediu
societii s fie la un avocat, atunci nu
va mai trebui s se pregteasc aceste
declaraii.

TODAY SOFTWARE MAGAZINE


Dac sediul va fi n baza unui contract
de nchiriere de la o persoana fizic, trebuie
s tii c proprietarul are obligaia legal
de a nregistra contractul de nchiriere la
Administraia Finanelor Publice i de a
v comunica un exemplar al contractului
cu dovada nregistrrii. n lipsa acestei
dovezi, nu se va accepta de ctre judectorul delegat de la Registrul Comerului
nregistrarea firmei.
Dup stabilirea sediului va trebui
pregtit actul constitutiv. Acesta este un
document care definete cadrul n care va
funciona societatea, mai exact aici sunt
prezentai asociaii cu aportul acestora n
societate, administratorii, CAEN-urile,
etc. .Este foarte important ca, dac
sunt elemente specifice de raportare a
asociailor fa de beneficii i pierderi,
acestea s fie foarte bine detaliate n cadrul
documentului.
Chiar dac la momentul deschiderii
societii se are n vedere o anumit activitate, recomandm trecerea n cadrul
actului a tuturor CAEN-urilor care nu au
statut special, urmnd a se activa doar cele
necesare pentru activitatea vizat. n acest
fel, costurile pentru activarea sau modificarea ulterioar a CAEN-urilor va fi mult
mai mic, iar termenul de modificare mai
redus. Dac alegei doar un numr limitat de CAEN-uri, iar ulterior dorii s
dezvoltai afacerea i spre o activitate pe
care nu o avei n statut, se va impune reluarea formalitilor i ntocmirea unui act
constitutiv actualizat.
Tot n actul constitutiv, se va nscrie
perioada mandatului administratorului
care poate fi nelimitat sau pe un interval specificat. Este necesar a fi cuprinse
i limitele care se aloc administratorului. Dac nu discutm de un context n

care administrarea este realizat de ctre


tere persoane special contractate pentru
aceast funcie, atunci recomandm a se
meniona c administratorii dein individual puteri depline de reprezentare i
administrare. Una din ntrebrile pe care le
primim n aceast situaie este dac administratorii pot fi i angajai ai societii
ulterior, iar rspunsul este da.
n vederea nfiinrii societii va trebui deschis la o banc aleas un cont de
capital social n care asociaii vor trebui s
vireze capitalul subscris. n cazul n care
aceast operaiune este delegat unei tere
persoane, se va nscrie pe procura notarial i faptul c delegatul va putea depune
numerarul la banca n numele asociatului.
Pe lng documentele mai sus amintite, mai sunt cerute unele formulare, copii
dup documente, timbre fiscale, precum
i alte documente n cazuri particulare.
Lista complet a acestor documente poate
fi studiat aici (http://www.onrc.ro/index.
php/ro/inmatriculari/persoane-juridice/
nume-colectiv).
Ta xel e p e rc e pute d e R e g ist r u l
Comerului pentru nfiinarea unei companii sunt de aproximativ 500 600 lei.
Dup nregistrarea dosarului la
Registrul Comerului, n mod normal,
dureaz trei zile pn se pot ridica documentele de constituire.
Toi paii descrii anterior sunt valabili att pentru deschiderea unei societi
cu capital romnesc 100%, deinut de
persoane fizice, ct i care are ca asociai
persoane juridice. Sunt n schimb necesare
mai multe documente ce trebuie furnizate
de ctre societile care vor fi asociai.
Dac dorii s v asociai cu persoane fizice nerezidente, n plus fa de
cele prezentate, trebuie s tii c asociaii
nerezideni trebuie s semneze actele necesare (declaraiile, specimenul de semnturi,

www.todaysoftmag.ro | nr. 37/iulie, 2015

43

management
De la birocraie la succes n nfiinarea unei firme
actul constitutiv etc.) n prezena unui interpret autorizat pentru
limba rii n care au reziden. Dac v aflai n aceast situaie,
iar partenerii votri strini nu vor s fie prezeni la semnarea
actelor, v pot mputernici prin mputernicire notarial dat n
faa unui notar din ara lor de reziden sau Consulatul Romniei
din acea ar, care apoi va fi tradus i legalizat. Recomandm
ca n acest caz s obinei modele de documente care trebuie
legalizate de ei, s le comunicai pentru a fi ct mai exacte i a
nu avea probleme asupra modului de exprimare, a coninutului
documentelor ce le vei depune la Registrul Comerului.

Aspecte financiare i fiscale pentru o societate nou nfiinat


Avnd n vedere c i la noi n ar se aplic principiul lui
Benjamin Franklin, conform cruia, singurele lucruri n via
sunt moartea i impozitele, va trebui s se aleag unul din cele
dou sisteme de impozitare destinat SRL-urilor n funcie de
condiiile ndeplinite. A alege e un fel de a spune, pentru c n
fapt, nu prea este opional.
Astfel, sistemul standard pentru societile nou nfiinate este
impozitul pe venitul microntreprinderilor. Conform acestui sistem se taxeaz 3% din veniturile societii. Atenie: venituri =
servicii prestate conform facturilor emise, nu este egal cu ncasrile. Acest tip de impozitare se va aplica pn la o cifr de afaceri
de 65.000 Euro i/sau pn se obin venituri din consultan peste
20% din totalul veniturilor societii.
Cellalt sistem de impozitare este reprezentat de impozitul
pe profit. Se va putea alege acest sistem de impozitare nc de la
nfiinare doar n cazul n care obiectul principal de activitate este
legat de servicii de consultan. Altfel, se va trece la acest sistem
doar dup ce cifra de afaceri va depi plafonul de 65.000 euro,
moment la care se reconsider ntregul an fiscal i se recalculeaz
ca i cum ar fi fost impozit pe profit. Practic, n anul n care se
depete plafonul de cifra de afaceri, suma care s-a pltit n cursul anului reprezentnd impozit pe venitul microntreprinderilor
se va considera plat n contul impozitului pe profit. n aceeai
situaie v aflai i dac pe parcursul anului fiscal, ponderea veniturilor din consultan pentru afaceri i management depete
20% din total venituri.
Din punct de vedere a TVA-ului, o societate comercial nou
nfiinat va fi nepltitoare de TVA. Obligativitatea de a te nregistra ca pltitor de TVA intervine dup realizarea unei cifre de
afaceri (conform definiiei din Codul Fiscal) de 220.000 lei. Dac
se dorete nregistrarea n scopuri de TVA a societii anterior
realizrii acestei cifre de afaceri, legislaia permite acest lucru.
Procedura de nregistrare nu este una foarte facil i transparent
,dar v recomandm s facei o bun analiz a oportunitii nregistrrii n scopuri de TVA.
Pentru domeniul serviciilor IT, recomandm nregistrarea
prin opiune n scopuri de TVA, pentru c astfel avei posibilitatea s deducei TVA-ul aferent tuturor achiziiilor ce urmeaz s
le facei din Romnia (echipamente, mobilier, servicii etc.). Dac
nu este n interesul fiscal al societii s fie pltitor de TVA n
accepiunea clasic, dar se dorete a se realiza livrri i achiziii
intracomunitare (att de bunuri ct i de servicii) este obligatorie obinerea unui cod valid de TVA doar pentru operaiuni
intracomunitare, care s fie nscris n Registrul Operatorilor
Intracomunitari. Astfel, utiliznd acest cod se pot face livrri de
servicii intracomunitare sau achiziii fr TVA din UE dar se va
declara i plti TVA-ul aferent achiziiilor n Romnia. Dac se
vor efectua importuri sau exporturi de bunuri sau servicii, va
trebui s se obin de la Vam codul EORI. Procedura nu este

44

nr. 37/iulie, 2015 | www.todaysoftmag.ro

complex, dar aplicaia n care trebuie completate datele nu a


inut pasul cu dezvoltarea din domeniul IT (se poate completa
online, dar trebuie depus n original la Direcia Vamal).

Cteva demersuri necesare dup nfiinare


Odat cu deschiderea unei firme, sunt cteva proceduri
minime, obligatorii care trebuie efectuate la nceput.
Dup finalizarea nregistrrii de la Registrul Comerului, n
termen de 30 de zile se va depune la Administraia Finanelor
Publice declaraia 010 mpreun cu copii dup actele primite
de la Registru. Practic, exist comunicare n Administraia
Finanelor Publice i Registrul Comerului, dar totui se depune
o declaraie mpreun cu copii dup actele firmei. n caz contrar,
exist o amend.
Apoi, este necesar ca s se achiziioneze, n termen de
30 de zile de la nfiinare, un Registru Unic de Control de la
Administraia Finanelor Publice. n evidena acestuia se trec
toate controalele desfurate la contribuabil de ctre toate organele de control specializate, n domeniile: protecia muncii,
inspecia muncii, financiar-fiscal, sanitar, fitosanitar, protecia
consumatorului, protecia mpotriva incendiilor, urbanism, calitatea n construcii, etc. .
Pentru pltitorii de impozit pe profit, va trebui achiziionat
Registrul de Eviden Fiscal. Termenul de achiziie este tot de 30
de zile de la data la care firma a devenit pltitoare de impozit pe
profit. n coninutul registrului trebuie trecute toate informaiile
care au stat la baza determinrii profitului impozabil i a calculului impozitului pe profit.
Firmele trebuie s notifice orice tranzacie cu cash care
depete 15.000 Euro la Oficiul Naional de Prevenire i
Combatere a Splrii Banilor. n vederea acestui proces, la
nfiinarea societii se va emite o decizie prin care se va numi
o persoan responsabil pentru raportarea acestor operaiuni
ctre Oficiu i se ntocmete o procedur intern de urmrire
i raportare a acestor tranzacii. Amenda pentru nedesemnarea
persoanei responsabile este de la 10.000 la 50.000 lei i pentru
nedeclararea tranzaciei de la 10.000 la 30.000 lei (n funcie de
gravitatea faptei pot fi i alte sanciuni chiar pn la nchiderea
societii).
Facturile i chitanele pot fi emise electronic, dar
reprezentanii societii vor trebui s numeasc o persoan sau
mai multe, responsabile cu alocarea seriilor i numerelor de facturi i chitane utilizate. Decizia aceasta va trebui pregtit anual,
la nceputul anului pentru anul n curs.
nainte de angajarea fiecrui salariat, acesta trebuie s primeasc de la un cabinet de medicina muncii o adeverin prin
care este declarat apt de munc. De asemenea, va trebui ncheiat
un contract cu o firm ce asigur instruirea personalului pentru
PSI.
Chiar dac pare a fi un proces anevoios cu muli pai de parcurs, aceasta nu ar trebui s stea n calea punerii n practic a
ideilor de afaceri. Sperm c informaiile v sunt de folos i nu
uitai c dac nu avei timpul necesar sau nu dorii s luai contact direct cu toat birocraia, putei apela oricnd la un avocat
sau consultant specializat pentru aceste operaiuni.

Mult succes!

TODAY SOFTWARE MAGAZINE

www.todaysoftmag.ro | nr. 37/iulie, 2015

45

sponsori

powered by

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