Documente Academic
Documente Profesional
Documente Cultură
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
Download from
Windows Store
modele BigData
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
www.todaysoftmag.ro
www.facebook.com/todaysoftmag
twitter.com/todaysoftmag
ISSN 2284 6352
Lista autorilor
Alexandru - Ctlin Dini
alexandru.dinis@todaysoftmag.com
Robert Lantos
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
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
Ovidiu uta
Sarah Hernandez
ovidiu.suta@isdc.eu
sarah.hernandez@veinteractive.com
educaie
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.
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
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
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
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.
10
comuniti
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 !
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
bogdan.muresan@3pillarglobal.com
Director of Engineering
@3Pillar Global
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
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.
Product
Strategy
Product
Development
Product
Support
www.3pillarglobal.com
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
Concluzia
Ovidiu Petridean
opetridean@sdl.com
Senior Software Developer
@ SDL Research
Problema
Soluia
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
Noiuni Generale
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.
2. Minhashing
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.
Exemplu
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
programare
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:
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.
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.
18
Concluzii
19
programare
Aplicaia WheelNav
Csongor.korosi@telenav.com
iOS Developer
@ Telenav
Cristian Chertes
Cristian.chertes@telenav.com
iOS Developer
@ Telenav
20
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
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.
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
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
Ovidiu uta
ovidiu.suta@isdc.eu
QA & Bid Manager
@ ISDC
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
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
25
testare
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
26
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.
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
jsClickElement
Actions
29
programare
Alexandru Gheboianu
alexandru.gheboianu
@pitechnologies.com
Software Engineer
@ Pitech+Plus
30
programare
31
programare
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.
32
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.
33
programare
Scurtul ghid al unicornului din Ruby on Rails
Young spirit
Mature organization
A shared vision
Join our journey!
www.fortech.ro
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
return Fridge.get_beer_if_available
PHP
$result = $fridge->getBeerIfAvailable($beers);
Java
return Fridge.getBeerIfAvailable()
Concluzii i rezoluii
Resurse utile:
1.
2.
3.
4.
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
35
programare
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
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;
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);
}
}
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.
38
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
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.
39
testare
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.
40
Marketing Specialist
@ Altom
41
management
Ioana Varga
ioana.varga@aiconsulting.ro
Expert contabil Managing
Partner
@ A&I Consulting
42
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.
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.
44
Mult succes!
45
sponsori
powered by