today software magazine n37/2015

Upload: sergiucebotari

Post on 28-Feb-2018

224 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Today Software Magazine N37/2015

    1/46

    No. 36 June 2015 www.todaysoftmag.ro www.todaysoftmag.com

    T O D A Y

    S O F T W A R E

    Nr. 37 Iulie 2015 www.todaysoftmag.ro www.todaysoftmag.com

    M A G A Z I N E

    I

    D

    H- , A

    T S C D

    R S T-

    A IT J ME E E

    A WN

    S, K A

    IT BRAINIACS ,

    ScurtulghidalunicornuluidinRubyonRails

    Download from

    Windows Store

    Download from

    Windows Store

    DescoperireaentitilorsimilarenmodeleBigData

  • 7/25/2019 Today Software Magazine N37/2015

    2/46

  • 7/25/2019 Today Software Magazine N37/2015

    3/46

    6

    TYPO3 ,

    Alexandru - Ctlin Dini

    8

    IT BRAINIACS ,

    I F

    10

    V C

    B M

    12

    I

    B M

    15

    D BD

    O P

    20

    AWN

    C K C C

    23

    S, K A

    Ovidiu uta

    26

    T S C DR L

    30

    H-E CM,

    A

    A G

    32

    S R RE L

    36

    A IT J ME E 8 ED C

    40

    R S T - M R

    42

    D I V

  • 7/25/2019 Today Software Magazine N37/2015

    4/46

    4 nr. 37/2015, www.todaysoftmag.ro

    Perioada concediilor care aduce cu ea evadarea din toropeala urban i din rutinacotidian este binevenit i binemeritat dup un an de munc . Totodat, con-cediul pune la treab acele aplicaii legate de navigare i mobilizeaz jocurilecasualpentru pauza de dup plaj. Dac s-a preerat lectura i s-a ajuns la finalulunui roman senzaional, este momentul pentru a citi ultimul numr al TSM pentrua ace revenirea din concediu mai lin. Oricum odat rentori din concediu, suntemtoi cu ore proaspete, cu noi revelaii i noi perspective asupra modului de lucru depn 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 finalullunii noiembrie, unde keynote speaker-ul de anul trecut, Peter Lawrey, a confirmat dejaprezena.

    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 nKoln pe tema TYPO 3, avnd oportunitatea s se ntlneasc cu comunitatea de ITdin acea zon. Un alt articol oer bilanul celor apte luni al programului IT Brainiacscare i-a propus i a reuit s introduc elevi de gimnaziu i de liceu n universul pro-gramrii. i au reuit, dovada o reprezint scrierea ctorva jocuri interesante n Java iObejctice-C/Swif. Le urm mult succes celor de la Telenav i Apex-Edu i continuareaacestui 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 deIoT prinAplicaii Io cu Java ME Embedded 8 iEclipseunde este olosit un RaspberryPI mpreun cu JavaME. Pentru persoanele cu disabilii n deplasare s-a realizat oaplicaie dedicat pentru participarea la A& Connect Ability Challenge. Mai multdetalii gsii nAplicaia WheelNav. Faptul c Ruby on Rails ncepe s nu mai fie un lim-baj de ni este demonstrat n Scurtul ghid al unicornului din Ruby on Rails. High-EndContent Management, varianta Adobe prezint produsul dar i arhitectura unei soluiice dorete transerul publicrii de inormaii de la programatori ctre content manager-i.La final, tiuScrum, Kanban ialte cteva cuvinte nAgile,v invite s v gsii rgazulde a reflecta asupra maturitii conceptelor IT.

    Ovidiu Man

    Fondator Today Sofware Magazine

    Ovidiu [email protected]

    Editor-in-chiefToday Software Magazine

    editorial

  • 7/25/2019 Today Software Magazine N37/2015

    5/46

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

    Lista autorilor

    Alexandru - Ctlin [email protected]

    Junior PHP Developer

    @Today Software Magazine

    Alexandru [email protected]

    Software Engineer@ Pitech+Plus

    Ioana [email protected]

    Expert contabil Managing Partner@ A&I Consulting

    Emil [email protected]

    Developer

    @ Yonder

    Ovidiu [email protected]

    Senior Software Developer@ SDL Research

    Dnu [email protected] Developer@ Elektrobit Automotive

    Cristian [email protected]

    iOS Developer@ Telenav

    Monica [email protected]

    Marketing Specialist@ Altom

    Ovidiu [email protected]

    QA & Bid Manager@ ISDC

    Ileana [email protected]

    Preedinte Apex-Edu@ Apex-Edu

    Bogdan [email protected]

    Director of Engineering

    @3Pillar Global

    Csongor [email protected]

    iOS Developer@ Telenav

    Robert [email protected]

    Senior QA Engineer@Betfair

    Redacia oday Sofware Magazine

    Fondator / Editor in chie: Ovidiu [email protected]

    Graphic designer: Dan [email protected]

    Copyright/Corector: Emilia [email protected]

    Traductor: Roxana [email protected]

    Reviewer: avi [email protected]

    Contabil : Delia Mircea

    [email protected]

    Programator junior: Alexandru [email protected]

    Marketing specialist i tehnoredactor:Ana Maria Bivol

    [email protected]

    Tipar realizat de Daisler Print House

    Produs de

    Today Sofware Solutions SRLstr. Plopilor, nr. 75/77Cluj-Napoca, Cluj, [email protected]

    www.todaysofmag.rowww.acebook.com/todaysofmag

    twitter.com/todaysofmag

    ISSN 2284 6352

    Copyright Today Sofware Magazine

    Reproducerea parial sau total a articolelordin revista Today Sofware Magazine

    r acordul redaciei este strict interzis.

    www.todaysofmag.rowww.todaysofmag.com

    Sarah [email protected]

    Director of Commercial Marketing@ VE Interactive

  • 7/25/2019 Today Software Magazine N37/2015

    6/46

    6 nr. 37/2015, www.todaysoftmag.ro

    educaie

    n ultima perioad citisem ntmpltordespre TYPO3 i despre puternica lui dez-voltare n Europa deVest, ns niciodatnu mi-am imaginatce poate s nsemneacest ramework cuadevrat. Am con-

    statat c TYPO3poate s mbine toatecalitile necesareunuiramework: esteuor de olosit, esterapid, i nu n ultimulrnd poate i utilizatntr-o gam larg deaplicaii.

    n ce privetealegerea locului dedesurare pentru

    Summer Camp, con-sider c a ost una excelent, deoarececomunitatea TYPO3 din Koln este cunos-cut ca fiind una oarte strns legat, cu ungrad mare de implicare n cadrul tuturor

    activitilor. Participarea mea n aceasttabr s-a desurat n cadrul irmei

    PHTH, o compa-nie care se ocupdoar cu dezvolta-rea de sof TYPO3.Situat ntr-o zonlinitita a Kolnului,

    compania condusde domnul PhilippThielle oer unspaiu primitor ipropice dezvolt-rii sotului. Moduleicient de organi-zare a comunitiii preocupareap e n t r u o b u n comunicare ntremembrii acesteia

    s-au remarcat ncdin prima zi, cnd am ost preluat de laaeroport de ctre Philipp. Dup un scurttur al oraului i un scurt tur al companiei,n care mi-a ost prezentat tehnologia i

    TYPO3 o nou lume,

    un nou punct de vedere

    Sptamnile trecute am primit de la compania Arxia invitaia de a participa laTYPO3 Summer Camp 2015. Admit c la nceput am avut unele reticiene dincauza lipsei de experien n acestramework, dar n cele din urm, TYPO3 s-a

    dovedit pentru mine o experien minunat, trit alturi de oameni minunai.

    Alexandru - Ctlin [email protected]

    Programator junior@Today Software Magazine

  • 7/25/2019 Today Software Magazine N37/2015

    7/46

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

    TODAY SOFTWAREMAGAZINE

    modul de organizare, amost introdus n rndulcomunitii,evidenindu-m i - s e i m p o r t a n aparticiprii mele activen cadrul comunitii itotodat dorina comuni-tii de a ace acest lucruposibil.

    n prima zi n biroulPHTH mi s-a prezentatworklow-ul, care, spresurprinderea mea, era per-ect similar cu workflow-ulmeu de zi cu zi din cadrulTSM.

    n continuare, am ost introdus nextensia n care urma s contribui i mi

    s-a explicat n ce const. Am apreciat ap-tul c mi-a ost cerut prerea cu privirela extensia Agora, si despre ce considereu c ar trebui s ac un CMS. Agora catehnologie se bazeaz pe Extabse & Fluid.Ca extensie TYPO3, Agora trebuie s rs-pund la urmtoarele uncionaliti:

    1. Extensia- la baz conine unul saumai multe thread-uri.

    2. Fiecare thread poate s coninunul sau mai multe postri, iar acestease comport dup modelul standard de

    blog: pot fi comentate, urmrite,marcateca avorite.

    Primul meu taska ost pe ct de sim-plu, pe att de competitiv pentru mine. Mis-a cerut s implementez user signaturepentru fiecare threadi post, pentru a mputea obinui curamework-ul.

    Ziua de mari a adus cu ea primul taskn adevratul sens al cuvntului, i anumeimplementarea unui sistem complet denotificare n cadrul Agora. Acesta presu-punea notiicri pentru dieritele roluri

    de utilizator: creatorul thread-urilor,creatorul postrilor, i simpli utilizatoricare urmresc o postare sau un thread.Surprinztoar pentru mine a ost modulsimplist de implementare a sistemului detrimitere a e-mailului, deoarece n cadrulTSM am ost pus n situaia de a imple-menta aceeai cerin, ns olosind carameworkFat-Free, operaiune destul decostisitoare.

    Pentru evidenierea uurinei olosiriiTYPO3, ataez o scurt secven de cod,

    olosit n cadrul trimiterii notificrii suborm de e-mail pentru toi utilizatorii careobserv un threaddat:

    Datorita dorinei de diversiicare,

    urmtorul taska ost crearea unui modulde backend, care s permit gestionarea caadministrator a uncionalitilor oerite deAgora. Astel, am ajuns n contact pentruprima dat cu metodele magice oeritede ctre Injected Repositories. Modulul debackenda ost un taskprovocator, deoarecese simea nevoia implementrii unui astelde modul, precum i dorina tuturor celordin PHTH s-l vad uncional, pentru aputea fi testat.

    n tot acest timp am avut ocazia s

    vizualizez modul de luc ru i tipul dementalitate predominant n acest tipde companie. Ceea ce mi-a plcut a ostatitudinea de detaare, sentimentul desiguran i ncredere maniestate la toimembrii echipei, precum i gradul deimplicare i dorina de a ajuta. De aseme-nea, m-a impresionat n modplcut curiozitatea lor legat demodul cum se ace programarean Romnia. Am avut onoareas discut cu mari contribuitorin cadrul comunitii, cum ar fi

    Marcel, Philipp, dar i Bjrn Chr.Bresser. Spre inalul ederii nKoln, am ost introdus n cadrulcontribuitorilor Core TYPO3.Philipp m-a sprijinit n ixareaprimului bugn cadrul Core, i nraportarea lui dup fixare. Acesteoperaii au ost urmate de pro-cesul de validare( care n cadrulTYPO3 se desoar pe baz devoturi ), iar sptmna trecutam observat c rezolvarea a ost

    validate i urmeaz s fie inclusin urmtoarea versiune.Dei zilele de munc erau

    destul de lungi (10 11 ore ), amavut destul de mult timp s m

    bucur de rumuseeaoraului Koln cndsimple plimbri prinparcuri sau vizitndimpresionante mon-umente, cum ar iCologne CathedralDom. Kolnul esteun ora extraor-dinar, care oer oexperien turisticminunat,datoritl a r g i i v a r i e t iculturale i sociale.L o c u i t o r i i s u n toarte mndri detradiiile i locurile

    lor i ar sta ore n ir s povesteasc despreele oricui este dispus s asculte, bineneles

    la un pahar de Klsch, berea tradiionaln Koln.

    n concluzie, experiena oerit deTYPO3 Summer Camp 2015 a ost unic,att din punct de vedere al evoluiei proe-sionale, al ntlnirii cu un nourameworki cu un nou mod de lucru, ct i din punctde vedere al unei noi experiene culturalei sociale. in s le mulumesc celor dela Arxia pentru extraordinara experienoerit, i recomand participarea la acestgen de evenimente oricui dorete s pro-

    greseze n plan proesional i n planpersonal.

  • 7/25/2019 Today Software Magazine N37/2015

    8/46

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

    Ascrie un articol n TSM ca expert n educaie i nu n industria de profil poate fi uor intimidant. Dar starea aceasta dureazct redactezi primele 3-4 rnduri, pn cnd te prinzi c scrii despre elevi talentai, capabili de perormane rumoase nprogramare, de programatori tineri dispui s-i mprteasc experiena, despre nvare, despre actorii care determinperormana n domeniu. Aadar sunt teme de interes pentru orice proesionist sau companie de IT, care nu au cum s te intimideze.Programul ITBrainiacs, dezvoltat de Apex-Edu i Telenav a ost conceput n jurul a dou idei centrale: necesitatea de identificaretimpurie a copiilor/tinerilor capabili de perormane n domeniu i construirea unei intervenii care s valorifice maximal potenialulidentificat. O intervenie autentic i, mai ales, ormativ, o experien care s-i transorme pe cei implicai.

    Am pornit n mod evident de la ce nespune tiina. Literatura educaional sub-liniaz plurideterminismul perormanelorsuperioare. Sunt importante aptitudinile,fie c vorbim de aptitudine cognitiv gene-ral sau aptitudini oarte speciice. Suntimportante oportunitile, fie c vorbimde un act educaional excepional dintr-o instituie, de o ntlnire ortuit cu unmentor sau de ansa de a te afla n momen-tul potrivit la locul potrivit... i tuturoracestora li se adaug abilitile de tip psi-

    hosocial, cele care te ajut s i gestionezinvarea, motivaia i emoiile, precum iperseverena. Pentru c munca bate talen-tul, dac talentul nu muncete ndeajuns....

    O conjunctur complex, de tipulcelei descrise mai sus, s-a ntmplat prinprogramul IT Brainiacs desurat deApex-Edu i Telenav, care a construit uncontext de interaciune intensiv ntreelevi oarte buni i programatori pasionai,cu un angajament puternic pentru ormarei nvare.

    Elevii ITBrainiacs

    Elevii ITBrainiacs au o medie de vrstde 15 ani, nva n clasele a VII a, a IX ai a XI, au interese bine conturate nspredomeniul IT i sunt puternic motivai snvee. I-am ales pe zece dintr-un numraproximativ de 70 de candidai pentru cs-au remarcat prin rezultatele pe care le-auobinut la anumite probe psihologice.Cunotinele anterioare de programare nuau ost considerate necesare pentru admi-

    terea n program.

    Mentorii ITBrainiacsMentorii ITBrainiacs sunt programa-

    tori pasionai ai Telenav, care au primitbucuroi provocarea de a mprti dinexperiena lor, de a-i amiliariza pe copiicu diverse limbaje de programare i de a-indruma pentru dezvoltarea unui produsde programare.

    ContextulProgramul ITBrainiacs s-a desurat

    pe parcursul a apte luni i a presupus

    ntlniri sptmnale ntre elevi i men-tori, n ormat unu-la-unu. A vrea s mairepet ormula aceasta de cteva ori pentrua sublinia c acest element a ost cheiasuccesului acestui program, acea conjuc-tura ericit. Acest tip de interaciune ester ndoial responsabil de caracterulextrem de personal i de autenticitateaexperienei pe care ITBrainiacs le-a oerit.Dei cunoteam la nivel teoretic eectelementoratului pentru educarea elevilorcapabili de perormane nalte, experienareal la care am avut privilegiul s asist

    mi-a relevat ncrengtura complex demecanisme responsabile de progresul pecare copiii l-au avut. Acest tip de ormula permis, n primul rnd, mentorilor scroiasc intervenia pe interesele realeale copiilor. Aceast pliere complet pe cei-au dorit copiii a asigurat un nivel ridi-cat al motivaiei i a permis mentorilors antreneze la momentul potrivit stra-tegiile necesare pentru acilita nvareasau pentru a le oeri un model de gestio-nare a emoiilor care vin la pachet cu ea.

    RezultateleAm plecat de la zero cunotine sau

    minime cunotine de programare i amajuns la: dou jocuri dezvoltate n Java(Alien Invasion, joc multiplayer de atin-gere a intei), trei jocuri n Objective C(AirHockey, joc de utare la poart, jocde strategie militar), un joc de tip X-O nAndroid, unul n Swif (Pairs), o aplicaien Swit de reete culinare i o aplicaiepentru Android de gestionare a finanelorproprii. De exemplu, aplicaia Save your

    money, aflat deja pe Market a nceput aa:La nceput a ost greu pentru c nutiam absolut nimic despre programare, daracum, dup acest proiect, am nvat oartemulte lucruri de care nu am mai auzit pnatunci. n prima parte a acestui proiect,Filip (mentorul n.n) a nceput sa mi explicece nseamn programarea, noi ncepndcu scrierea codurilor n pseudocod. Filipa insistat oarte mult pe aceast parte descriere pentru c aa nvei cel mai repedelucrurile eseniale. Dup ce am terminatcu scrierea n pseudocod a nceput s mi

    explice ce nseamn scrierea Java cu exem-ple din viaa de toate zilele. Am nceput cuscrierea codurilor n Eclipse Luna, undeFilip mi-a artat chestiile de baz pe careneaprat trebuie s le tie orice programa-tor..., Alexandru Iuga, elev clasa a IX a

    Pentru copiiDar asta nu a ost tot. n apt rezultatele

    cele mai semnificative, din punctul nostrude vedere, s-au ntmplat la un nivel multmai intim pentru fiecare copil sau mentor

    implicat n acest proiect. Schimbri pecare, doar cu mult sudoare, le poi ateptantr-o intervenie de training, de exemplu.

    IT BRAINIACS

    sau despre emoie, talent i mult munc

    educaie

  • 7/25/2019 Today Software Magazine N37/2015

    9/46

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

    TODAY SOFTWAREMAGAZINEprogramare

    S-au modificat atitudini. Astel de schim-bri asigur rezultate stabile n timp: ceeace s-a obinut n cadrul programului attpentru elevi, ct i pentru mentori nu s-arezumat doar la rezultatele fiecrei edinede mentorat, ci a devenit un bun personalal fiecrei pri implicate. Vorbim aadarde achiziii stabile n timp, cu btaie lung.

    Pentru copii, aceasta s-a tradus, ngeneral, n modificarea atitudinii fa denvare i efort.i nu doar a de eor-tul propriu, ci i a de eortul celor carele-au stat aproape parcursul celor ctevaluni pentru a-i ndruma. Eort pe care l-aucontientizat i n a cruia s-au ncli-nat. Acest tip de rezultat devine un bunnepreuit pentru un copil aflat n dezvol-tare i este instrumental nu doar pentruelul n care-i gestioneaz nvarea i

    cariera, ci i pentru elul n care-i croieteuniversul de relaii sociale.

    Aceast schimbare atitudinal ade eort i perseveren e mare lucru, pecuvntul meu de printe i de dascl cuexperien de la precolari pn la studenimasteranzi!!!! Copiii au tiut, din momen-tul n care au ost admii, c sprijinul pecare l primesc vine la pachet cu respon-sabilitatea de a depune efortpentru a creaun produs de programare. i subliniezalegerea cuvintelor: a depune eort. Ca

    parte din conceptul programului, rezulta-tul a ost important, dar nu mai importantdect procesul. Mentorii au inut cont depotenialul copiilor i au reuit s situezeintervenia n zona proximei lor dezvol-tri, fiind ns mereu ateni i la limitelelor. Au cerut mult i au dat mult. Iarmoneda a ost eortul i implicarea. Deambele pri. Copiii s-au conruntat une-ori i cu momente de ndoial, ca n oriceexperien de nvare. Au avut teme acas,ore suplimentare i termene limit... Darau ost sprijinii s depeasc momen-

    tele dificile i au nvat, cred, ceva extremde valoros...to walk that extra mile. Spreexemplu, Dani Pop, elev n clasa a IX, ne-amrturisit c : Am lucrat n orele de inon notepad++, ulterior compilnd codul lafirm, eu neavnd um mac personal, nece-sar compilrii codului.

    Un alt eect al programului i pe carel-am anticipat, dar nu la adevrata dimen-siune, a ost acela c experiena de nvarepe care copiii au trit-o la Telenav s-aconstituit ntr-o intervenie complet de

    orientare vocaional.Au ost ndepli-nite toate condiiile ...Copiii au vzut peviu, n mod repetat, atmosera tipic demunc dintr-o firm de IT, sarcinile tipiceale unui programator, universul social din

    organizaie i au reuit s contientizeze,prin interaciunea cu mentorii lor, cacesta e drumul pe care vor i pot s-lurmeze.

    Adugai acestor ingrediente toatdistracia cu care a venit la pachet muncaalturi de programatori tineri care i-aunvat exact ce doreau i aveau nevoie stie, prin metode perect individualizate,adaptate ritmului propriu de nvare, dari satisacia i mndria de a fi dezvoltatun produs de programare. Aa am obinuto reet minunat pentru designul uneiexperiene de nvare autentice i pline desens.

    Pentru mine, acest proiect a nsemnatenorm, deoarece pur i simplu am nvats programez n adevratul sens al cuvn-tului, nu ce se ace din tutoriale de pe net.

    Am lucrat ntr-o firm adevrat, devenindfluent ntr-un limbaj de programare oartedificil, cum este Objective c. La nceputulproiectului aveam cunotinte minime deC, dar dorina mea i pasiunea mentoru-lui meu au dus la rezultate surprinztoare.Am realizat un joc de strategie militara, degenul Clash o Clans, in care am utilizatSpriteKit, o tehnologie dezvoltat de cei dela Apple pentru motoare graice, de tipulOpenGL, fiind practic dezvoltat peste ea.O alt caracteristic important a jocului

    nostru este c toat inormaia este parsatdin iiere JSON, nimic neiind hardcod-at, n teorie cel puin. Aadar, proiectulIBrainiacs mi-a oerit o ans nesperats ajung un adevrat developer la doar 15ani!,Daniel Pop, elev clasa a IX a

    Experiena mea la aceast firm a ostunic. Pe lng c am aflat multe chestii,ne-am i distrat i am avut multe ntlniricu mentorii i cu programatorii de la firm.Eu recomand tuturor tinerilor aceastaexperinen, deoarece va fi ceva unic. Noitotodat trebuie s fim contienti c suntem

    cu un pas mai aproape de aceast mese-rie., Alexandru Vdan, elev clasa a VII a

    Pentru mentori

    Probabil c eectele cele mai surprinz-toare ale programului ITBrainiacs au ostcele care s-au ntmplat n rndul mento-rilor Telenav. Sprijinirea elevilor nu doarpentru achiziia unor abiliti de progra-mare, dar mai ales pentru contextualizarealor practic prin dezvoltarea de jocuri i

    aplicaii, a nsemnat i pentru mentori oexperien de nvare. Nou i autentic.Actul de predare, n sine, este un exerciiupermanent de nvare, care te oblig sspui ce trebuie, cnd trebuie i mai ales

    cum trebuie, s-i ordonezi cunotinele,s le gndeti secvenialitatea, utilitatea iadresabilitatea. Predarea aduce cu sinens i un alt tip de exerciiu: responsabili-tatea. Aceast responsabilitate i-a cut pementori s redeschid manuale, s evalu-eze metode i s le aleag pe cele care sepotriveau cel mai bine elevului din aalor i sarcinii specifice de programare, soere nu doar cunotine tehnice, ci s incont i de fluctuaiile de motivaie sau deemoionalitate cu care nvarea vine lapachet. Iar aceasta presupune s comu-nici eficient, s demonstrezi empatie i sfii abil n a-i gestiona propriile gnduri iemoii. Pentru c eti un model!

    S-au achitat cu brio de aceste sarcini.M nclin!

    Pentru mine, experiena ITBrainiacsm-a nvat n primul rnd s mi pun nordine gndurile. Atept cu mare dragurmtoarea ediie i mi-ar plcea s seorganizeze i mai multe proiecte de acestgen. Mihai Costea, elenav

    A ost o experien de nvare ipentru mine. Am nvat s-mi exprimideile ct mai bine, pentru c orice voiams-i explic trebuia s reormulez ca s fiect mai uor de neles. Paul a ost i el

    oarte ncntat de programul acesta, anvat multe lucruri pe care nu le-ar iputut nva la coal, sunt sigur c acum,la srit, pasiunea lui pentru programaree mult mai mare. Mihai erban, elenav

    n esen, programul ITBrainiacs aost o experien de nvare construit njurul emoiilor pozitive. S-a construit cudruire, pasiune i entuziasm! i cu multdistracie!

    Ileana Fritea

    [email protected]

    Preedinte Apex-Edu@ Apex-Edu

  • 7/25/2019 Today Software Magazine N37/2015

    10/46

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

    business

    Echipa de dezvoltare din Cluj se vaconcentra pe inovaiile captivante Ve dinzona Big Data, i pe un portooliu de pro-iecte speciale n retail B2C i turism online.

    Ve a ales Clujul pentru a i cel de-al4-lea centru de dezvoltare a tehnolo-

    giei, datorit reputaiei oraului pentrueducaia de clas mondial n domeniultehnologiei, pentru cele 11 universiti alesale i investiiile r precedent n tehno-logie ale statului romn.

    Ve este un campion de inovatie iambiie, i Clujul reprezint aceste valoriundamentale ca ora. Cnd am selectat cuatenie locul n care ne-am amplasa hub-urile noastre de tehnologie, aceste calitivaloroase au ost ceea ce ne-a atras la Cluj.Paiunea i aptitudinile orei de munc

    de aici fiind deja renumite afirm RaulMartinez, CTO, Ve.Vrul de lance n recrutarea echi-

    pei de dezvoltatori talentai este CristianCazan, director de dezvoltare, care aducemai mult de 15 ani de experien n dez-voltare de sotware i top-management.Cristian s-a alturat Ve de la Endava,unde a ost Delivery Manager i Head oDevelopment, poziii n care a ctigatexperiena n managementul i dezvolta-rea a peste 160 de proesioniti n IT din

    multiple locaii. n poziia sa n cadrul Ve,Cristian este responsabil pentru identifi-carea talentelor, atragerea i conducereacelor peste 80 de proeioniti, ajutndVe s devin unul dintre giganii tech aiClujului.

    Despre VeVe Interactive este o companie tehno-

    logic multi-premiat, care oer o suitde aplicaii prin intermediul platormeiVePlatorm. Aplicaiile au scopul de areduce abandonul coului de cumpr-turi, de a crete implicarea clienilor, de adiminua abandonul site-urilor i de a sporiconversiile.

    Monitoriznd tranzacii n valoare de

    miliarde de lire n iecare zi, seturile dedate ale companiei oer clientului per-spective provocatoare, n timp ce fiecareaplicaie livreaz coninut orientat ctreclient bazndu-se pe activitatea i profilullor de cumprare.

    Ctigtoare a Ruban dHonneur ncadrul European Business Awards n2014-15, ctigtoare al Data StrategyAward 2014 pentru marketing n timp reali deintor al medaliei de aur n cadrul

    International Business Stevie Awards2014, compania Ve i desaoar activita-tea n 18 limbi i are 27 de birouri n toatlumea, acoperind 43 de teritorii.

    Cu peste 10.000 de clieni business

    multinaionali ct i comerciani locali,Ve urnizeaz n timp real date de mar-keting din punctele cheie prin experientaclienilor acestora.

    Ve i lanseaz oficial ultimul centru de dezvoltare n Cluj

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

    Sarah [email protected]

    Director of Commercial Marketing@ VE Interactive

  • 7/25/2019 Today Software Magazine N37/2015

    11/46

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

    TODAY SOFTWAREMAGAZINE

    ransylvania Java User GroupComunitate dedicat tehnologiilor Java.Website: www.transylvania-jug.orgData nfiinrii: 15.05.2008 / Nr. Membri: 610 / Nr. Evenimente: 47

    Comunitatea SMComunitate construit n jurul revistei oday Sofware Magazine.Websites: www.acebook.com/todaysofmag www.meetup.com/todaysofmag www.youtube.com/todaysofmagData nfiinrii: 06.02.2012 /Nr. Membri: 2424/Nr. Evenimente: 32

    Cluj Business AnalystsComunitate dedicat analizei de businessWebsite: www.meetup.com/Business-Analysts-ClujData nfiinrii: 10.07.2013 / Nr. Membri: 91 / Nr. Evenimente: 8

    Cluj Mobile DevelopersComunitate dedicat tehnologiilor mobileWebsite: www.meetup.com/Cluj-Mobile-DevelopersData nfiinrii: 05.08.2011 / Nr. Membri: 264 / Nr. Evenimente: 17

    Te Cluj Napoca Agile Sofware Meetup GroupComunitate dedicat metodelor Agile de dezvoltare sofware.Website: www.agileworks.roData nfiinrii: 04.10.2010 / Nr. Membri: 437 / Nr. Evenimente: 93

    Cluj Semantic WEB MeetupComunitate dedicat tehnologiilor semantice.

    Website: www.meetup.com/Cluj-Semantic-WEBData nfiinrii: 08.05.2010 / Nr. Membri: 192/ Nr. Evenimente: 29

    Romanian Association or Better SofwareComunitate dedicat oamenilor cu experien din IT indierent detehnologie sau specializare.Website: www.rabs.roData nfiinrii: 10.02.2011 / Nr. Membri: 251/ Nr. Evenimente: 14

    abra de testareComunitate ormat din testeri i ali proesioniti din industriaIT care, n cadrul unor ntlniri inormale lunare, mprtesc

    din cunotinele proprii i nva din experienele proesionale alecelorlali membri.Website: www.tabaradetestare.roData nfiinrii: 15.01.2012/Nr. Membri: 1243/ Nr. Evenimente: 107

    Evenimentele din aceast perioad sunt realizate de pasionaii de tehnologii i de grupurile acestora. Dup cum putei vedean calendar, acestea sunt publicate exclusiv pe meetup.com avnd audiena ormat din comunitile locale. n august, vomavea o lansare de revist i n Oradea. V ateptm !Calendar

    Iulie 31 (Cluj)Lansarea numrului 37 al oday Sofware Magazinewww.todaysofmag.ro

    August 10 (Cluj)PMI Monthly Meetingmeetup.com/PMI-Romania-Cluj-Napoca-Project-Management-Meetup-Group/events/224143323/

    August 27 (Cluj)OpenStack Nova Deep Divemeetup.com/OpenStackRomania/events/222910344/

    August 4 (Bucureti)PMI: Requirements discovery&elicitation

    meetup.com/PMI-Romania-Bucharest-Project-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 Meetupmeetup.com/BucharestJS/events/223597688/

    August 24 (Oradea)

    Lansarea numrului 38 al oday Sofware Magazineacebook.com/todaysofmagtodaysofmag.ro

    Comuniti IT

    comuniti

  • 7/25/2019 Today Software Magazine N37/2015

    12/46

    12 nr. 37/2015, www.todaysoftmag.ro

    n ultimii ani termeni ca management prin obiective, obiective de companie iobiective personale au aprut tot mai des n vocabularul meu prin intermediulmuncii ce o desor. Dei prea simplu, la nceput a ost un comar din ce n cemai urt. Dup care conceptul a nceput s prind contur i ntr-un final am reuit s aclucrurile s uncioneze. n fiecare an cltoria a nceput prin definirea unor obiective

    globale la nivel de companie care ulte-rior au ost cascadate la nivel individual.

    Credei-m c aplicarea conceptelor nue chiar floare la ureche, dei n teorie aapare. S-a dovedit a fi oarte interesant sreuesc s unesc toate punctele de pe tra-seu i s ac obiectivele s uncionezepentru mine. Ceea ce am nvat n timpdespre acest proces va ajuta i pe alii, deaceea am aternut pe hrtia virtual ctevasaturi utile. Interesant e c aceste saturise aplic nu doar celor ce lucreaz n ITci cu siguran multor altor domenii undeoamenii au obiective personale.

    O imagine de ansambluUna din schimbrile majore ce intervin

    n viaa unei companii ce ace pasul din-spre o companie mic nspre o companiecel puin medie este nevoia de sincronizarea proceselor, nevoie ce apare ntr-un modnatural. Dac la o scar mai mic am pututace lucrurile instinctual i r mari btide cap, pe msur ce am crescut a apruti nevoia fireasc de reguli care s ne ajutes inem lucrurile sub control. Gndireastrategic a prins contur i a aprut n

    peisaj nevoia unui plan bine controlat. Iaro parte important a planului este dei-nirea unor obiective clare. Acestea pot fidefinite pe termen lung, mediu sau scurti mai mult, oricare ar fi cadrul temporal

    ales, obiectivele trebuie s fie adoptate dentreaga 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 deindivid;

    deinirea unor obiective personalesemnificative.

    Setarea unei strategii eficiente pentruo companie i a unor obiective anualeeste n sine o provocare. Cel puin la el

    de dificil i provocator este i tranziia iimplementarea lor la nivel de departa-mente i mai departe la nivel de individ.Dac oricare dintre cele dou aciuni areua ar compromite ntreg procesul. Ostrategie proast cu siguran nu va ajutape nimeni, iar o implementare individualneericit cu sigurana va aecta rezulta-tele generale. Totui, cumva neateptat,cele mai mari greuti le-am ntmpinatla definirea unor obiective personale cares aib sens n aceast imagine. n timpul

    acestor aciuni am discutat cu oamenicare erau gata s adopte acest proces, cuoameni care erau total mpotriva lui. Amcitit destul de mult literatur legat deobiective n general i am ncercat din

    Incursiune n lumea obiectivelor

    personale

    management

    Bogdan [email protected]

    Director of Engineering@3Pillar Global

  • 7/25/2019 Today Software Magazine N37/2015

    13/46

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

    TODAY SOFTWAREMAGAZINEprogramare

    greu s pun toat inormaia cap la cap.Concluziile la care am ajuns i care m-auajutat s merg mai departe, s-mi modelezgndirea n jurul acestui proces i s-l acs uncioneze pentru mine au o rdcinadnc n ceea ce voi descrie n continuare.

    Obiective pentru toat lumeaPrincipala int a acestui articol

    vizeaz obiectivele personale. n cadrulcompaniilor se seteaz obiectivele globalesunt transmise nspre toate structurilecompaniei i ajung nr-un inal la nivelde individ. Exist mai multe teorii: unelespun c obiectivele globale ar trebui s seopreasc la nivel de departament; alteleconsider c ar trebui s mearg pn lanivel individual. Dac relectm puinasupra modului nostru de via n gene-

    ral, ne vom da seama c sub o orm saualta ne setm obiective personale aproapela tot pasul. n mod ormal sau inormalobiectivele sunt acolo la loc de cinste nviaa noastr. n consecin, mi se parecumva natural s existe i n cadrul mun-cii noastre, aa c preerina mea merge cusiguran n direcia de a avea obiectivela nivel individual. Aceasta trebuie s sentmple ntr-un mod natural i pentrua avea suportul tuturor trebuie s inemcont de cteva lucruri n momentul n care

    implementm acest proces.

    Nu toate obiectivele personale tre-

    buie s influeneze direct obiectivele

    companiei.

    Cu siguran, aceast airmaie estenumrul unu n lista mea de premise nece-sare pentru a putea avea un proces sntosde tranziie a obiectivelor de la nivel globalla nivel individual. Unii oameni vor puteainluena direct obiectivele globale, darcele mai multe obiective personale vor aveadoar o inluen indirect. Cu siguran

    nu este un lucru ru. Cel mai simplu modn care putem inluena n mod indirectobiectivele globale este de a deveni maibuni n ceea ce acem. n consecin, neputem concentra pe acest apt cnd vomdeini anumite obiective individuale.Cnd scopul este evoluia personal atunciimplicit i motivarea individual pentruatingerea scopului va crete. S lum unexemplu simplu: s presupunem c unadintre strategiile la nivel de companie pen-tru anul n curs este creterea expertizei cuMicrosof Azure i pentru aceasta ne fixmca obiectiv s avem trei persoane cu cer-tificri avansate de Azure pn la sritultrimestrului al treilea. Compania are 200de oameni tehnici din care 50 lucreazcu tehnologii .NET. Dac este imposibils conigurm ca obiectiv pentru iecare

    dintre cei 50 de oameni obinerea unei cer-tificri avansate de Azure, cum am puteas sperm la reuit n cazul n care lumn considerare toi oamenii tehnici dincompanie.

    Cnd amndou prile au de

    ctigat, motivarea crete.

    Ar putea suna egoist dar aceastairmaie descrie natura uman i cusiguran nu ar trebui s o ignorm. Unlucru pe care ar trebui s-l neleag pro-

    babil companiile este acela c obiectiveleindividuale setate exclusiv pentru atingereaobiectivelor globale ar putea avea un eectdemotivant individual destul de accentuat.Pentru ca oamenii s intre cu adevrat njoc acestea va trebui s ating i nevoileindividuale. ntorcndu-ne la exemplulanterior, ar fi o micare extrem de neericits obligm cei 50 de specialiti .NET s-idea certificarea vizat. O abordare cu marianse de reuit ar i gsirea acelor per-soane interesate de a dobndi cunotinede Azure. Este aproape imposibil ca din

    cei 50 s nu gsim pe cineva interesats-i lrgeasc aria de expertiz. Cretereacompetenelor personale cu siguran vaajuta i compania. Deci este n regul dacceilali vor gsi alte obiective ce nu voravea legtur direct cu Microsof Azure.n mod cert, creterea personal va aveaparte de cea mai mare motivare.

    Cnd lucrurile devin personale

    Cunoaterea e diferit de nelegere.

    Am auzit expresia aceasta n ctevacontexte dierite i mi-a plcut destul demult. Mi se pare extrem de puternic iaplicabil n multe situaii. Exist multmaterial care ne ajut s nelegem ce esteun obiectiv i cum s deinim un obiec-

    tiv SMART. Pe scurt, dac ne setm unobiectiv acesta este mai eficient i anseles-l realizm sunt mult mai mari dacobiectivul este SMART. Aceasta nseamnc obiectivul trebuie s ie specific, s iemsurabil, s fie accesibil, s fie relevantis poat fi ncadrat n timp. Cnd am cititprima dat despre obiective SMART amost ca un copil care a descoperit ciocolata.

    SMART nu este un mit.

    Definirea unui obiectiv SMART nu esteaa simpl precum pare la prima vedere,dar cu siguran este oarte important.

    Speciic este acea caracteristic cene permite sa ne concentrm pe ceea ceeste important. Dac un obiectiv nu estespecific este oarte uor s alunecm ndierite direcii. i cnd concentrareane joac este i inta noastr apare nmai multe locuri este oarte uor s numai vedem luminia de la captul tune-lului. Iar acest lucru ne poate demotivagrozav r a fi ajuns mcar la mijlocul

  • 7/25/2019 Today Software Magazine N37/2015

    14/46

  • 7/25/2019 Today Software Magazine N37/2015

    15/46

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

    ProblemaCum gsim propoziii similare ntr-un set

    oarte mare de date (Peta-bytes de date). Oproblem oarte important care apare atunci

    cnd ncercm s gsim elemente similare deorice el este ca probabilitatea prezenei unuinumr prea mare de perechi s ngreunezeprocesul de analiz i identificare a relaiei desimilaritate dintre ele. Chiar dac timpul ncare se determin dac o pereche este simi-lar sau nu este oarte scurt, este nerealist scredem c putem s le comparm pe toate.

    SoluiaExaminarea elementelor similare este o

    problem undamental de data-mining. ncele ce urmeaz vom arta cum problema

    gsirii propoziiilor similare se poate trans-orma ntr-o problem de identiicare aelementelor similare.

    Noiuni GeneraleData mining O deiniie destul de

    popular spune c data mining reprezintprocesul de descoperire a modelelor pentrudate. Un model poate totui s reprezintemai multe lucruri. Se disting astel urmtoa-rele: modelare statistic, nvare automat,sumarizare (e.g PageRank de la Google),

    extragerea caracteristicilor.

    Funcii de dispersieO uncie de dispersie h primeste o

    cheie ca argument i produce un numr de

    compartiment.Numrul de compartimenteste un numr ntreg, n mod normal, nintervalul 0 pn la B - 1, unde B este num-rul de compartimente.

    Elemente similarePentru a defini elementele similare vom

    utiliza Simi laritatea Jaccard. SimilaritateaJaccard a seturilor S i T este

    |S T |/|S T |, ceea ce reprezint rapor-tul dintre numrul de elemente comune inumrul total de elemente pe care cele douseturi le au.

    S prezentm un exemplu. Notm simila-ritatea Jaccard a seturilor S i T cu SIM(S, T ).

    S presupunem c exist dou seturi S iT. Intersecia celor dou seturi este ormat

    din 3 elemente, iar n total cele dou au 8 ele-mente. Astel SIM(S, T ) = 3/8.

    Similaritatea documentelor (propozii-ilor) O clas important de probleme pe caresimilaritatea Jaccard le implic este aceea agsirii documentelor sau a propoziiilor simi-lare ntr-un corp de date oarte mare. Printre

    Scopul articolului este prezentarea unei modaliti de a descoperi entiti similare nmodele BigData.Vom expune n cele ce urmeaz abordarea MapReduce a unui algo-ritm utilizat pentru a gsi texte similare ntr-un corp oarte mare de date. Chiar dacexemplele prezentate se concentreaz pe gsirea de texte similare, acest algoritm poate fiolosit pentru a gsi orice el de entiti asemntoare care pot fi descrise printr-un set decaracteristici.

    Descoperirea entitilor similare n

    modele BigData

    Ovidiu [email protected]

    Senior Software Developer@ SDL Research

  • 7/25/2019 Today Software Magazine N37/2015

    16/46

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

    programare

    aplicaiile cele mai cunoscute se numr: Plagiatul, Paginile Webn oglind sauArticole care provin din aceeai surs.

    Algoritmul pentru gsirea elementelor similareAlgoritmul prezentat are trei pai principali: decuparea,

    minhashing i dispersie sensibil la localizare. Pentru pre-zentarea algoritmului vom utiliza o aplicaie practic i anumeaceea a gsirii propoziiilor similare ntr-un set oarte mare dedate.

    1. Decuparea Documentelor (Propoziiilor)Cel mai eficace mod de a reprezenta documentele ca seturi,

    pentru a putea identifica documente similare este s construimdin fiecare document un set de succesiuni de caractere care aparn ele. Utilizarea de decupri ormate din caractere este o abor-dare bun, dar cu toate acestea n cazul nostru este mult maieficient s olosim decupri ormate din cuvinte.

    Dispersia decuprilor

    n loc s utilizm cuvintele ca decupri, alegem o uncie dedispersie care mapeaz aceste cuvinte genernd un numr decompartimente. Fiecare compartiment va fi tratat n continuareca o decupare.

    Reprezentri care pastreaz similaritatea seturilorSeturile ormate din decupri sunt oarte mari. Chiar dac am

    reui s le dispersm olosind doar 4 bytes pentru fiecare, spaiulnecesar pentru a le stoca este de patru ori mai mare dect spaiulocupat de documentul iniial.

    Scopul pe care l urmrim este s nlocuim seturile mari cunite reprezentri denumite semnturi. Proprietatea impor-

    tant pe care acestea trebuie s o aib este aceea c trebuie sputem estima similaritatea Jaccard a dou seturi doar prin com-pararea semnturilor acestora.

    Reprezentarea matricial a seturilorPentru 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 ele-mentelor setului universal din care elementele fiecrui set suntextrase.

    Fiecare din exemplele urmtoare trateaz problema simila-ritii a dou propoziii, dar evident eficiena algoritmului se

    vede atunci cnd discutm despre un corp oarte mare de date.Noi olosim algoritmul pentru a gsi similariti in peta-bytesde date.

    S presupunem c avem urmtoarele dou propoziii:

    S1: I enjoyed my stay during summer at hotel Caliornia

    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, caliornia}

    S2 = {i, enjoyed, my, stay, during, winter, at, hotel, napoca}

    Este important dereinut probabilitatea camatricea de caracteristicis nu ie modul n caredatele sunt stocate, darc oer un mod util de avizualiza datele.

    n exemplul precedentputem observa c simila-ritatea celor dou seturipoate fi descris ca num-rul de linii n care care celedou seturi au elementeidentice. Astel putemdeduce c similaritatea este7/11 adic 0.63.

    Dup cum menionammai sus, pentru stoca-rea acestor matrici ar i

    nevoie de oarte mult spa-iu, astel c introducemurmtoarea tehnic numitmihashing.

    2. MinhashingSemnturile pe care

    dorim s le construimpentru seturi sunt compuse din rezultatele unui numr marede calcule, fiecare dintre acestea fiind un minhashal matricii decaracteristici.

    Pentru a determina un minhashpentru un set (reprezentat de

    o coloan din matricea de caracteristici) alegem o permutare aliniilor. Valoarea minhash este numrul liniei (n ordinea permu-tat) n care pe coloan ntlnim cira 1.

    ExempluS presupunem c

    avem urmtoarea ordinea matricii precedente.Aceast permutare dei-nete o uncie minhashh care mapeaz seturile lalinii.

    S calculm valoarea

    unciei minhash pentrusetul S1 conorm uncieih. Prima coloan, cea carecorespunde setului S1, are0 pe prima linie, aa cmergem la linia a doua.Aici vedem de asemenea cntlnim 0, aa c mergemla linia a treia, unde gsimcira 1. Astel putem stragem concluzia ca h(S1)= at. Utiliznd acelai

    raionament tragem con-cluzia c h(S2) = napoca.

    Descoperirea entitilor similare n modele BigData

  • 7/25/2019 Today Software Magazine N37/2015

    17/46

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

    TODAY SOFTWAREMAGAZINEprogramare

    Minhashing i Similaritatea JaccardExist o corelaie remarcabil ntre minhashing i similaritatea

    Jaccard a seturilor pe care s-a aplicat minhashing.Probabilitatea ca o uncie de minhash pentru o permutare ale-

    atoare de linii s produc aceeai valoare pentru dou seturi esteegal cu similaritatea Jaccard a seturilor respective.

    Semnturile MinhashS presupunem din nou c avem o colecie de seturi repre-

    zentate prin matricea lor de caracteristici M. Pentru a reprezentaaceste seturi alegem aleator un numr n de permutri ale liniilormatricii M.

    Un numar de 100 de permutri este de cele mai multe orisuficient. S denumim unciile minhashdeterminate de acestepermutari h1,h2,...,hn. Din coloana care reprezint setul S con-struim semnturaminhashpentru S ca iind vectorul [h1(S),h2(S), . . . , hn(S)].

    Determinarea Semnturilor Minhash

    Nu este realizabil s permutm explicit matrici de carac-teristici oarte mari. Din ericire este posibil s simulmeectul permutrilor aleatoare utiliznd o uncie de dispersie caremapeaz fiecare linie ntr-un compartiment.

    Astel n loc de n permutri aleatoare de linii vom alege nuncii de dispersie h1,h2,...,hn pe care le vom aplica pe linii.Construim astel matricea de semnturi pstrnd ordinea iniiala fiecrei linii. Fie SIG(i, c) elementul din matricea de semnturicare corespunde unciei de dispersie cu hi i coloanei c. IniialSIG(i, c) este oricare ar fi i i c.

    Pentru fiecare rnd r vom executa urmtorii pai:

    1. Calculm h1(r), h2(r), . . . , hn(r)2. Pentru fiecare coloan c executm urmtoarelea. Dac c are 0 pe linia r, atunci nu se ntmpl nimicb. Dac c are 1 pe linia r atunci pentru fiecare i=1,2,...,n

    setm SIG(i,c) ca iind minimul dintre SIG(i,c) i hi(r)

    S calculm semnturile minhash pentru matricea de carac-teristici anterioar.

    S alegem aleator dou uncii de dispersie

    h(x) = x mod 11, g(x) = (2*x + 1) mod 11.

    n cele ce urmeaz vom simula algoritmul de calculare amatricii de semnturi.

    Nu vom parcurge ntregul proces ci doar paii relevani pentruacest exemplu.

    Pentru c avem 11 linii, vom eecta 11 calcule ale unciilor h i g.Iniializm matricea cu .

    Pasul 1:Dac privim matricea iniial vedem c pe prima linie att S1

    ct i S2 au valoarea 1, aa c vom calcula unciile h(x) i g(x),unde x este numrul de ordine al liniei, care n acest caz este 1.

    Astel, h(1) = 1 i g(1) = 3. Evident ambele valori sunt maimici dect astel c matricea precedent se modific n elulurmtor.

    Pasul 2:Ne uitm acum la linia 2 i observm ca att S1 ct i S2 au

    valoarea 1 aici. Aa c vom calcula valorile unciilor de disper-sie. Astel, h(2) = 2 i g(2) = 5. Pentru c ambele valori sunt maimari dect ceea ce avem acum n matricea de semnturi, nu vomschimba nimic.

    Cum paii 3 i 4 nu vor duce la nici un el de modificri,trecem la pasul 5.

    Pasul 5:Dup cum putem observa att S1 ct i S2 au 1 pe linia 5

    astel c vom calcula h(5) i g(5). Deoarece att h(5) ct i g(5) auvaloarea 0, vom actualiza valoarea corespunztoare unciei 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 censeamn c dup ce calculm att h(11) ct i g(11) vom actua-liza doar valorile corespunztoare lui S2 dac va fi cazul.

  • 7/25/2019 Today Software Magazine N37/2015

    18/46

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

    programare

    Astel, h(11) = 0 si g(11) = 1 ceea ce conduce la orma finala matricii de semnturi.

    Analiznd acum procesul anterior putem trage concluziac cele dou seturi sunt similare n una din cele dou linii alematricii de semnturi. Aceasta nseamn c similaritatea lor esteestimat ca fiind 0.5, acest numr fiind relativ apropiat de 0.63att cat este similaritatea Jaccard. Evident pentru a obine rezul-tate mai bune ar trebui s adugm mai multe uncii ceea vaconduce la estimri mai precise. De cele mai multe ori vrem sanalizm doar acele perechi care au un grad de similaritate peste

    un anumit ,,prag. Exist o teorie care ajut s ne ndreptmatenia doar spre acele perechi i este numit ,,dispersie bazatpe localizare (LSH - locality-sensitive hashing)sau cutarea celuimai apropiat vecin.

    3. Dispersie bazat pe localizare pentru Semnturi MinhashAbordarea general a LSH este s aplice mai multe uncii

    de dispersie asupra elementelor n aa el nct s se maximizezeprobabilitatea ca elementele similare s fie trimise n acelaicompartiment. Considerm apoi iecare pereche care a osttrimis 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 minhashpentruelemente un mod eficient de a lucra este s mprim matriceade semnturi n b benziormate din r linii. Pentru fiecare bandvom alege o uncie de dispersie care primete ca argument unvector ormat din r elemente ntregi i le trimite ntr-un numrmare de compartimente.

    Analiza tehnicii cu BenziS presupunem c avem b benzi fiecare ormate din r linii.

    S presupunem apoi c o pereche de documente au similaritateaJaccard egal cu s. Putem calcula probabilitatea ca aceste seturi(sau mai degrab semnturile lor) s devin o pereche candidatn elul urmtor:

    1. Probabilitatea ca semnturile s fie identice pe toate liniileunei benzi este s/r.

    2. Probabilitatea ca semnturile s nu fie identice pe cel puino linie dintr-o anumit band este egal cu 1-sr.

    3. Probabilitatea ca semnturile s nu fie identice n cel puino linie a fiecrei benzi este (1-sr)b.

    4. Probabilitatea ca semnturile s fie identice pe toate lini-ile a cel puin unei benzi i s devin o pereche candidat este1-(1-sr)b.

    Definimpragul minim ca fiind o uncie de b i r care exprimvaloarea de similaritate s pentru care o pereche devine candi-

    dat. O aproximare a calculului pragului minim este (1/b)1/r. Deexemplu pentru b = 16 si r = 4 pragul minim este de aproximativs = .

    ExempluFolosim aceleai dou propoziii, dar pentru a ace exem-

    plul mai clar vom olosi 10 uncii de dispersie pentru a calculamatricea de semnturi. Setmpragulde similaritate la 0.5 ceeace nseamn c vrem s vedem dac propoziiile noastre au simi-laritatea Jaccard egal cu cel puin 0.5.

    tim de asemenea c avem 10 linii (numrul de uncii dedispersie) i astel dac lum n calcul i pragul setat la 0.5 atuncidup eectuarea calculelor ajungem la concluzia c avem 5 benzicu 2 linii pentru fiecare band.

    Pasul 1. Calculm matricea de semnturi alegnd urmtoa-rele uncii de dispersie:

    hn(x) = (n*x+1) mod 11, 0

  • 7/25/2019 Today Software Magazine N37/2015

    19/46

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

    TODAY SOFTWAREMAGAZINE

    O sa alegem uncii polinomiale de orma a1* X1+a2*X2+... +an*Xn mod m, unde n este numarul de unctii iar m este unnumar prim oarte mare.

    Pentru exemplul nostru alegem urmtoarele uncii:

    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 eectuam calculele pentru prima band

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

    O s denumim cele dou compartimente rezultate B1-2 iB1-0

    Calculele pentru band a dou

    (S1) p2 = 3*0 + 5*2 mod 13 = 10 (S2) p2 = 3*0 + 5*0mod 13 = 0

    Compartimentele care rezult sunt B2-10 i B2-0

    Pentru cea de-a treia band avem urmtoarele:

    (S1) p3 = 5*0 + 7*0 mod 13 = 0 (S2) p3 = 5*1 + 7*1mod 13 = 12

    Compartimentele care rezult sunt B3-0 i B3-12

    Pentru a patra band avem urmtoarele calcule:

    (S1) p4 = 7*0 + 9*0 mod 13 = 0 (S2) p4 = 7*0 + 9*0mod 13 = 0

    Ceea ce este remarcabil acum este c avem doar un compar-timent rezultat B4-0. Acest lucru se ntmpl deoarece rezultatulambelor uncii este 0.

    A cincea banda are urmtoarele calcule:

    (S1) p5 = 9*0 + 11*0 mod 13 = 0 (S2) p5 = 9*0 + 11*0mod 13 = 0

    Din nou avem doar un compartiment rezultat, acesta fiindB5-0.

    Avem astel 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 ost repartizate cel puin odat n acelai compartiment (de apt avem dou, B4-0 i B5-0) os le considerm ca fiind perechi candidat i o s calculm coefi-cientul de similaritate Jaccard pentru ele.

    ConcluziiAcest algoritm i dovedete eficiena atunci cnd este aplicat

    pe un corp oarte mare de date.De asemenea pentru a putea gestiona aceste cantiti mari de

    date se recomand o implementare MapReduce.Utilizarea algoritmului nu se reduce la gsirea de texte simi-

    lare. Algoritmul poate fi utilizat pentru orice set de date ale cruielemente pot fi individual descrise ca un set de caracteristici.

    Cu ct semnturile utilizate de algoritm sunt mai mari cu attexist mai puine erori, dar asta evident aduce dup sine un timpde procesare mai mare.

    Chiar dac algoritmul indic aptul c dou segmente suntsimilare deoarece ac parte dintr-o pereche candidat este totuiindicat s se calculeze procentul de similaritate Jaccard pentrurespectiva pereche.

  • 7/25/2019 Today Software Magazine N37/2015

    20/46

    20 nr. 37/2015, www.todaysoftmag.ro

    AT&T Connect Ability Challenge este o competiie care ncurajeaz tehnologiilemobile s mbunteasc vieile persoanelor cu dizabiliti. Avnd oportuni-tatea de a ajuta milioane de persoane cu dizabiliti din ntreaga lume, am luat

    iniiativa crend o soluie sofware pentru a contribui la o via mai bun.

    Acest articol descrie experiena noas-tr n dezvoltarea unei asemenea aplicaii.Momentan pe App Store se pot gsi doaraplicaii artnd puncte de interes pen-tru persoanele cu dizabiliti dar nicioaplicaie pentru navigaie. WheelNavcombin aceste dou uncionaliti, iarpentru cea mai bun experien de navi-

    gare, olosete Scout SDK.

    Aplicaia WheelNav Aplicaia noastr iOS se numete

    WheelNav. Dup cum sugereaz numeleei, combin inormaii despre locuri acce-sibile pentru scaun cu rotile i navigaia.

    Puncte de interesPentru nceput vom analiza aspec-

    tul locaiilor accesibile. Faptul canumite locaii nu sunt accesibile pentru

    Aplicaia WheelNav

    Csongor [email protected]

    iOS Developer@ Telenav

    programare

    Cristian [email protected]

    iOS Developer@ Telenav

  • 7/25/2019 Today Software Magazine N37/2015

    21/46

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

    TODAY SOFTWAREMAGAZINEprogramare

    persoanele cu dizabiliti este o mare problem. Fie pragul dela intrare este prea nalt sau nu sunt dotate cu toalete pentrupersoane cu dizabiliti. n loc s implementm un serviciucare seteaz inormaii legate de accesibilitatea locaiilor, amdecis s olosim un serviciu numit Wheel Map (HYPERLINKhttp://wheelmap.org/http://wheelmap.org) . Este un ser-viciu olosit pentru a cuta i marca locaii accesibile pentrupersoane cu dizabiliti n ntreaga lume. API-ul lor oer pro-gramatorilor posibilitatea s interacioneze cu aceste locaii.Lum aceste inormaii i le afim pe hart. Diereniem 4 tipuride locaii:

    Accesibile(verde): r prag de intrare, toate ncperilesunt accesibile r prag, dotate cu toalet pentru persoane cuhandicap.

    Parial accesibile(portocaliu): prag de intrare mai mic dect7 cm, majoritatea ncperilor sunt accesibile, r prag.

    Inaccesibile(rou): prag de intrare mai nalt de 7 cm, majo-ritatea ncperilor au prag, dotate cu toalet pentru persoanecu handicap.

    Accesibilitate necunoscut (gri): nu exist inormaii des-pre acestea.

    Accesnd meniul din stnga ecranului, utilizatorii pot decidecare tipuri de puncte de iteres s fie afiate pe hart n uncie deaccesibilitate.

    Butonul din partea dreapt a ecranului deschide un meniu pen-tru selectarea categoriilor punctelor de interes care s fie afiate.

    WheelNav suport urmtoarele categorii: Transer public Mncare Timp liber Bancomat Educaie Cumprturi Sport Turism Cazare Diverse Guvern

    Sntate

    Utilizatorii aplicaiei pot analiza inormaiile des-pre aceste locaii, avnd posibilitatea de a le schimbaaccesibilitatea, cnd consider c inormaia este greit.

    Aceast uncionalitatembuntete datele privindaccesibilitatea. Lund n consi-derare accesibilitatea locaiilorse pot planiica ntregi cl-torii de acas sau ntlniri cuprietenii n locuri accesibile.

    Cutarea punctelor de interesFolosind bara din partea

    de sus a ecranului se pot acecutri. Sunt returnate punctede interes de pe hart i adresecorespunztoare. Selectnd unrezultat din list, acesta va icentrat pe hart acnd posibilnavigaia la acesta.

    Navigaia

    O alt component majora aplicaiei este navigaia. Amncercat s personalizm ntreagaexperien de navigaie pentrupersoanele care olosesc scaun curotile. WheelNav oer posibilitateacrerii rutelor de la poziia curentla orice alt locaie de pe hart.

    Apoi am integrat Scout SDK.

    Rutele sunt calculate lund nconsiderare altitudinile punc-telor de pe rut, asigurnd ceamai rapid i fluent rut pnla destinaie.

    Navigaia oer instruciunivizu ale i aud io util izatori-

    lor. Am intenionat s crem oexperien hands ree utilizato-rilor. Acest lucru este ndeplinitolosind instruciunile audio.

    WheelNav oer o soluiepentru o problem comuni anume blocajul strzilor. nacest caz este oarte dificil pen-tru utilizatori s decid ncotros mearg. Folosind blockroad Scout SDK redirijeazutilizatorul pentru a ajunge la

    destinaie eficient.

  • 7/25/2019 Today Software Magazine N37/2015

    22/46

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

    Setrile pentru navigaie pot fi accesate atingnd harta i selec-tnd opiunea Settings din meniu. Aici utilizatorii pot opriinstruciunile audio, pot schimba stilul hrii, vedea ntreaga rutai inormaii despre rut, scrola harta, schimba ntre modul 2Dsau 3D al hrii sau iei din navigaie.

    ConcluziiFolosind eedbackul de la utilizatori i prieteni, am

    mbuntit aplicaia pn la o stare de producie. Urmtoriipai sunt implementarea unei componente pentru recunoatereavoc al, pentru a oeri o nt reag experien hands ree,gruparea punctelor de interes pe hart i olosirea uncionalitiiRealReach a Scout SDK. n viitorul apropiat aplicaia va ilansat pe AppStore i sperm c va mbunti vieile multoroameni.

    Un demo al aplicaiei i inormaii despre competiie se pot

    gsi pe site-ul Challengepost: http://challengepost.com/sofware/wheelnav .

    programareAplicaia WheelNav

  • 7/25/2019 Today Software Magazine N37/2015

    23/46

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

    Lucrez n IT de mai mult de 10 ani i a ost, cu siguran, distractiv i deopotrivo provocare s observ i uneori s urmez tendinele n materie de metodolo-gie n domeniu. Prin definiie industria IT implic un proces creativ, chiar dactermeni din amilia Factory House sunt des olosii. n primul rnd nu vorbim des-pre o producie de tipul celei pe care o vedem ntr-o abric (n definiia clasic), cuo linie de asamblare i munc repetitiv, ci mai degrab despre una creativ n care,

    totui, ncercrile de standardizare a procesului de dezvoltare au ost prezente nc dela nceputuri.

    Dac privim puin n jur la peisajuldin industria IT / sofware developmentila modul de lucru al zilelor noastre, meto-dologiile Agile ocup un loc important. isunt multe astel de arome Agile.

    Pare c autorii / semnatarii ManiestuluiAgile i-au creat fiecare metodologia pro-prie prin care s implementeze principiiledescrise n maniest. Exist XP, DSDM,Crystal, Adaptive Sofware Development,

    Advanced Development Methods, Scrumi nc altele, fiecare pornite de la aceleaipersoane care au convenit la un momentdat asupra ctorva principii de baz dar nus-au mai neles asupra unui mod unitarde implementare. Acest status-quo descriedestul de clar problema pe care o ntmpi-nm cu toii astzi. Dac zece persoane nuau reuit s se neleag cum s se ac unlucru, ce anse avem noi, restul lumii?

    ncercarea de standardizare printr-ometodologie oarecare a procesului cre-

    ativ, care este dezvoltarea sotware, s-adovedit oarte dificil pn acum; o datdin cauz c este oarte greu de standar-dizat creativitatea dar i din cauze ce inde contextul speciic acestui domeniu:

    tehnologia, cultura organizaional, mri-mea echipelor sau a proiectelor i ncmuli ali actori.

    Un alt aspect important n aceastecuaie este, n opinia mea, cel financiar:toi ne dorim eficien maxim - produsullansat n pia nc de ieri sau s scurtmct mai mult drumul de la idee la produ-sul finit. n general, industria IT a reuit sin pasul (unii ar spune c de apt a gene-

    rat) cu viteza cu care se dezvolt societateade azi. Totul este mult mai rapid azi dectacum un deceniu, iar tendinele nu aratdeloc o ncetinire ba din contr.

    Exist o ntreag pia pentru acestemetodologii, n care se investete i dincare se ctig muli bani: se organizeaztraininguri, workshopuri, servicii deconsultan, conerine, produse, instru-mente, toate ncercnd s atrag utilizatorin a olosi o metodologie sau alta cu pro-misiuni de mbuntire a productivitii,

    cteodat cu ordine de mrime impre-sionante. Grupuri largi de proesionitiau devenit vectori de comunicare navoarea uneia sau alteia dintre meto-dologii; ncercrile de a-i justiica

    tiu Scrum, Kanban si alte cteva

    cuvinte n Agile

    Ovidiu [email protected]

    QA & Bid Manager@ ISDC

    programare

  • 7/25/2019 Today Software Magazine N37/2015

    24/46

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

    managment

    existena proesional a unora dintre acetiproesioniti au condus n timp la nume-roase dezbateri n industria IT: ce e binei ce nu; cu ce e mai bun o implementarea de alta, care e cea mai eficient imple-mentare i aa mai departe.

    Totui, la o cutare rapid dupa terme-nul Agile, cele mai populare 3 variantesugerate de motorul de cutare suntDead;bullshit; a cancer. La el de muli bani sepot ctiga predicnd mpotriva metodolo-giilor Agile ca i din promovarea acestora.Dar Agile este nc o noiune nou n istoriametodologiilor de Sofware Development.Privind puin n urm vom gsi i altele:Structured Programming (1969), SDM (orPANDATA in 1970s), SSADM (1980s),OOP (definit nc din anii 60 , dar carea cunoscut un avnt maxim n anii 90

    ), RAD (1991), DSDM (1994), Scrum(1995), RUP (cu susinerea IBM din 1998),Extreme Programming (1999), iar lista estedeparte de a fi complet.

    Istoria ne permite s observm unablon n comportamentul grupului nostruproesional: ndat ce apare o noutate npia legat de elul n care ne-am puteaorganiza munca, aderm la ea cu tot entu-ziasmul i aparent r o analiz riguroas;inevitabil ceva merge prost, cel mai pro-babil din cauza noastr, dar vina cade tot

    pe noua mod i nu pe cei ce o poartzilnic; ntre timp cineva descoper o noumetod revoluionar iar ceilali o urmeazspernd la ce e mai bun, iar ciclul se reia,r ca (aparent) cineva s nvee dingreelile trecute. Trebuie s nelegem cnu metodologiile sunt neaprat greite, decele mai multe ori implementarea pus npractic de oamenii implicai este greit cu concursul unei ntregi armate create n

    jurul acelui nou concept (amintii-v detoi trainer-ii, consultanii, conerineledespre care scriam mai devreme!). Noi,oamenii din IT, avem o memorie oarte,oarte scurt!

    i totui: de unde apare acest compor-tament? De ce inventm lucruri noi numaipentru a le olosi o scurt perioad i apoile aruncm la gunoi? De ce acceptm cuatta uurin noul, doar pentru c e cool,nainte de a fi siguri c vechiul este ntr-adevr depit? Rspunsul are, n opiniamea, cel puin dou pri.

    Maturitatea sau lipsa eiIndustria IT este nc, n ntregimea ei,

    la nceput! Avem 50 sau 70 de ani depindepe cine ntrebi, iar asta este nesemnificativ,n marea schem a lumii. n comparaie

    cu alte domenii, de exemplu industriamanuacturier, transporturile, cercetarea,medicina sau chiar avionica, industria ITeste nc la nceput. Alte grupuri proesi-onale au avut timp s ncerce, s cad, snvee din greeli i s se adapteze.

    Dac am compara numai numrul despecialiti n domeniu, conorm unui stu-diu cut la nivel mondial de ctre IDCresearch,suntem aproximativ 11 milioanede programatori proesioniti, care ictig existena din asta, plus nc apro-

    ximativ 7,5 milioane de pasionai de IT.Comparat cu numrul total al persoaneloractive din lume (mai mult de 2,3 miliarde),programatorii proesioniti reprezint unprocent insignifiant de 0,5%, ns impac-tul acestui mic procent este cu mult, multmai mare!

    Numai acest punct de vedere ar fi sufi-cient s ne conduc la concluzia din titlulparagraului: industria IT i caut nc un

    drum n via; nc ne luptm s ne cremun standard care s uncioneze accepta-bil, ns suntem constrni s acem astan ritmul accelerat al lumii n care trim, lao vitez mult mai mare ca acum 50 sau 80de ani! O ncercare de a urca ntr-un trencare a pornit demult de la peron i trece cuvitez pe lng noi. Nu-i deloc uor!

    Maturizarea cere timp iar timpul esteexact ceea ce lipsete societii contempo-rane; vrem totul i vrem totul nc de ieri!Nu mai avem rbdare s cretem i aceastase poate observa din pcate la toate nive-lele societii.

    Imaturitatea, n combinaie cu vitezadin ce n ce mai mare a cererii, se reflectnegativ n rata de succes a proiectelor ITla nivel mondial. Exist numeroase statis-tici pe aceast tem, dar putem spune r

    rica de a grei c proiectele IT eueaz nproporie de 30 60%, la dierite niveluri(nu sunt utilizate, cu depiri uriae de ter-mene sau buget etc.). Ci dintre noi amcumpra o main sau o cas, ori ne-amurca pe o mas de operaie dac am tic exist 30-60% anse ca ceva s meargoarte ru?

    Din pcate, n relaia cu industria IT,ceilali se ateapt ca noi s eum, iarprocentele de mai sus nu ajut (confirmaceste ateptri). Oricnd este adus n

    discuie un proiect IT se ac nti planuride contingen pentru eventualitatea unordepiri ale bugetelor, ie c este vorbadespre bugetul de timp sau de latura finan-ciar a proiectului. A fi parte dintr-un grupproesional de la care ceilali se ateapt laun eec, reprezint pentru mine cel mainegru punct n cariera mea proesional.

    tiu Scrum, Kanban si alte cteva cuvinte n Agile

  • 7/25/2019 Today Software Magazine N37/2015

    25/46

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

    TODAY SOFTWAREMAGAZINE

    Panaceul / Piatra filozofal / Sfntul GraalFaptul c discutm despre o soluie universal a probleme-

    lor noastre, ca proesioniti n IT, poate aprea ca un (alt) semnde imaturitate, dar din punctul meu de vedere are nevoie de unparagra special.

    Continum s cutam r odihn o reet perect care arputea rezulta ntr-un proiect perect, ceva care s ne asigure suc-cesul i care ne ac ericii ca echip, pe noi, pe efii notri i peclienii nostri. Dar, dei aa ceva nu exist, i nici nu va exista vre-odat, oamenii continu s o caute! i pentru orice exist cerere,va exista i o oert! De aici ntreaga pleiad de metodologii,trainer-i i consultani din jurul nostru. Toate acestea exist pen-tru c exist o nevoie, creat artificial, n opinia mea, de anumiimanageri care cred c de ndat ce compania / departamentul/ echipa / proiectul va fi Agile / va prelua modelul Scrum / vaprelua modelul Kanban / vor bea ceai din iarba-fiarelor culeas lalun nou i cu ap nenceput din izvorul ericirii, se vor da detrei ori peste cap i toate problemele vor deveni istorie.

    Am ntlnit adesea urmtorul scenariu, n care echipa de

    management sau clientul doresc s optimizeze perormaneleechipei pentru c prea mult timp se consum neproductiv cuactiviti de planning, estimri sau n retrospective i decid sadopte Kanbann loc de Scrum(nu sunt activiti deplanningnKanban, nu-i aa? Mai mult timp pentru programare ). Deciziilesunt luate top-down,cu puin, dac nu deloc, nelegere a ade-vratelor motive care au condus la eventuala slab perormana echipei.

    n concluzieModul cum se ac 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 acem anumite lucruri i deja neconcentrm pe CUM. Odat ce vom nelege DE CE este nevoie(de exemplu) de team alignment, DE CE este important predic-tibilitatea n procesul de dezvoltare sofware, DE CE avem nevoie

    deeedbackde la client, DE CE este nevoie de un sistem n care oechip s-i exprime ngrijorrile sau rustrrile, soluia (CUM)va veni cu uurin.

    n ncheiere a spune c nu reeta este ceea care are cea maimare importan! S ne concentrm asupra principiilor, s con-struim o cultur n care colegii s poat provoca regulile i cares permit gsirea celei mai bune rspunsuri la problemele dezi cu zi.

    Cineva mi spunea c cel care a supravieuit mai mult de 6luni n IT, innd cont de gradul nalt de maturitate intelectualnecesar pentru a-i ndeplini sarcinile zilnice, ace parte din ceimai inteligeni 5% dintre oamenii din ntreaga lume. Probabilvreau s cred asta pentru c lucrez i eu, la rndul meu, n IT . inu suntem departe de adevr! n general n industria IT lucreazoameni cu inteligena peste medie, care vor gsi cea mai bunsoluie pentru orice problem le-ar sta n cale i mai bine dectoricare dintre consultani. Convinge-i DE CE este nevoie de osoluie pentru mbuntirea (s zicem) a productivitii i nule mai sta n cale! Poate sun utopic sau flower-power, dar chiar

    uncioneaz!

  • 7/25/2019 Today Software Magazine N37/2015

    26/46

    26 nr. 37/2015, www.todaysoftmag.ro

    Ca parte a unui nou proiect web, una dintre intele echipei de QA a ost s pro-iecteze i s ruleze o suit de regressionrapid i fiabil ca parte a procesuluide continous delivery. Menirea acestuia a ost ridicarea nivelului de ncrederepentru fiecare buildrulnd un set ntreg de teste n locul unui set specific de teste detip sanity. Totui, pentru ca acesta s reprezinte o soluie viabil, trebuia ca testele s seexecute rapid, n maxim 10 minute.

    Reducerea timpului de execuie cndsuita conine un numr mare de teste, estemai dificil dect ar crede muli. nc de la

    nceput am identificat trei mari provocricare trebuiau luate n considerare.

    Execuia suitelor de teste ar trebui s fierapid

    Un deploymenttipic const n execuiatestelor pe cel puin 2 noduri i un VIP.Fiecare dintre aceste rulri nseamnexecuia a 450 de testeont endsi a 70 debackend. Aceasta nseamn c e nevoie decel puin 3 rulri a setului de regression, iarca s meninem timpii de execuie sub 30de minute, rularea unui set nu trebuie s

    depeasc 10 minute.

    Nivelul de fiabilitate a testelor trebuie sfie mare

    Pentru ca rularea testelor de regres-sions fie viabil, trebuie s ne asigurmc testele sunt fiabile i c nu exist alertealse precum timpii de rspuns mari peserverele interne olosite.

    Pachetele de teste trebuie s fie scalabileA trebuit s lum n calcul i scalabili-

    tatea pachetelor de teste n cazul n care noiteste vor fi adugate, n elul acesta reuinds meninem timpii mici de execuie.

    Folosind urmtoarele idei, am reuit scontruim o suit de teste care nu doar c

    ruleaz rapid dar este si suficient de fiabilpentru un buildde Continous Delivery.Am reuit s executm n mod constant

    suite de teste de regressionn aproximativ7 minute r a avea erori.Urmtoarele idei reprezint modul n

    care am reuit s finalizam cu succes acestproiect.

    1. Tool-uri i medii de teste folositeT e s t e l e s e b a z e a z p e

    RemoteWebDriver (grid)al Selenium iolosesc un environmentde tip remotecumultiple noduri pentru o mai bun sca-labilitate precum si un hub local cu unsingur nod, pentru execuia testelor locale.

    2. Paralelizarea testelor ntr-o msur ctmai mare

    Execuia rapid a sute de teste nu esteposibil r o oarecare paralelizare. Cuct testele sunt mai paralelizabile cu attexecuia setului de regressionpoate s fiemai rapid. ns crearea unui pachet deteste uor de paralelizat nu este simpl,pentru c fiecare metod de teste trebuieproiectat cu multi-threading. Aceastanseamn c fiecare test trebuie creat ca un

    modul individual separat de celelalte.Ca s pu tem u rma s t ra teg iamenionat anterior, olosim urmtoareameod pentru crearea unei instane deRemoteWebDriver:

    Teste cu Selenium n contextul

    Continuous Delivery

    testare

    Robert [email protected]

    Senior QA Engineer@Betfair

  • 7/25/2019 Today Software Magazine N37/2015

    27/46

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

    TODAY SOFTWAREMAGAZINE

    MyDriver, n cazul nostru este o clas personalizat careextinde clasa RemoteWebDriver, noi o olosim pentru a supras-crie unele uncii de baz al Seleniumului precum metodagetScreenshotAs.

    Testele modulare oer o scalabilitate ridicat. Astel

    capabilitaile de paralelizare ale testNG-ului mpreun cu un sele-nium grid cu noduri numeroase permit rularea unui numr marede teste n acelai timp, reducnd drastic durata de execuie a uneisuite de tip regression.

    n continuare, este prezentat un exemplu de clas de teste careolosete metoda prezentat un pic mai sus:

    Not:Probabil c ai observat c nu olosim @BeoreMethod pen-

    tru pregtirea metodelor de teste i nici @AferMethodpentrucurarea instanelor de WebDriver de dup ele. Acest lucru sedatoreaz unor probleme de threadsaetype timpul execuieiunui numr mare de teste n paralel si mai ales cnd se oloseteun DataProvider. Am ales n schimb s olosim listener-i custom-i pentru a suprascrie metodele de onestFailure i onestSuccesspentru a ace teardowndup fiecare test.

    3. Folosirea PageObject-elorn UI-ul aplicaiei web testat, sunt elemente cu care metodele

    de teste interacioneaz. Un PageObject pur si simplu modeleazaceste elemente ca obiecte n cod. Acest lucru reduce numrul decod 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 administrateUn listenercustomizatextinde estListenerAdapter din

    testNG pentru a se olosi de obiectul IestResult. Aceti lis-tener-i oer o modalitate lexibil de administrare a tuturor

    aciunilor post test, i sunt olosite pentru curarea instanelorde WebDriver rmase active.Urmtoarele ragmente de cod arat modul n care tratm

    oprirea instanelor de driver.

    Custom onTestFailure

    Custom onTestSuccess

    Not: Abstractest din exemplul de mai sus reprezint oclas de tip setupextins de fiecare din testele noastre, Acestatrateaz ncrcarea contextelor de spring si iniializarealistener-ilor.

    5. Stabilizarea testelor prin wait-uri dinamice.Una dintre cele mai importante nevoi pentru ca pasul deregressions poat fi rulat n procesul de Continuous Deliveryeste stabilitatea testelor. Acestea trebuie s ruleze n mod con-

    stant r rezultate als positive i cu o rat de succes a testelor de100%. Acest lucru ns este oarte greu de implementat, mai alesn cazul testeler de tiprontend. Sunt destul de multe problemecare pot s apar, precum: probleme cu dependine, ncrcarealent a unor pagini, deecte .a.. Pentru o mai bun stabilitate atestelor de regressionam apelat la olosirea wait-urilor dinamicei a mecanismului de retrycondiional.

    Selenium ncorporeaz un mecanism oarte util de ateptare,implicit waitace ca WebDriver s parseze DOM-ul pentru un

    anumit timp prestabilit atta timp ct elementul cutat nu estedisponibil. Odat ce un implicit waiteste setat, acesta rmneactive pe toat durata de via al instanei de WebDriver. Dinpcate aceast metoda nu unctioneaz n toate cazurile, maiales cnd vine vorba de pagini cu mult java script. Pentru acompensa aceste lipsuri noi, am apelat la wait-uri condiionale.

    Aceast metod va astepta activarea Jquery-ului i pentru cadocument.readyState s fie complete:

  • 7/25/2019 Today Software Magazine N37/2015

    28/46

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

    Exemplul urmtor va atepta pncnd se poate ace clickpe element:

    Not : Ambele exemple o los es c metoda w a it .until(), condiiile pot s fie personalizate dar existi o serie de opiuni predefinite ( precum elementToBeClickable)

    6. Stabilizarea testelor prin retry-uri condiionale.Aa cum am menionat i mai devreme un alt instrument de

    stabilizare a testelor este mecanismul de retrycondiional. Prinsimpla rerulare a testelor euate putem crete stabilitatea i ratade succes a testelor de regression. Totui, aceast metoda are ovulnerabilite major, ea permite propagarea unor posibile deecten cazul n care acestea nu apar n mod constant. Soluia noastr

    pentru aceast problem a ost olosirea mecanismului de retrydoar in unele condiii prestabilite. Acest lucru se ace prin verifi-carea excepiei generate de un test euat. Astel doar testele euatecu o excepie ateptat vor fi rerulate.

    testareTeste cu Selenium n contextul Continuous Delivery

  • 7/25/2019 Today Software Magazine N37/2015

    29/46

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

    TODAY SOFTWAREMAGAZINE

    7. Soluii alternativeUna din cele mai rustrante probleme care pot s apar la tes-

    tarea unor aplicaii web n chrome este cea cu Element is notclickable at point. Metoda click din Selenium ncearc s apeseun element chiar n punctul ei central, ns din cnd n cnd, deipagina s-a ncrcat cu succes, elementul intit mai trece printr-oaz de randare a poziiei n pagin cauznd ratarea operaiei declick. Ca soluii alternative, noi am apelat la olosirea javascript-ului sau al obiectului Actionspentru a ace click pe element.

    jsClickElement

    Actions

    n cazul n care vei rula teste pe Internet Explorer, chiar dacultimele versiuni sunt comparabile cu browserele mai popu-lare, mai sunt unele mici probleme. De exemplu, capabilitateaACCEPT_SSL_CERTS nu uncioneaz cu versiunile recente deIE. O soluie alternativ a ost s olosim metoda urmtoare pen-tru a accepta certificatul.

    Prin acest proiect am nvat mult despre capabilitileSeleniumului, dovedindu-se c acesta poate fi un toolextrem deutil. Pentru noi, aceast utilitate ne-a ajutat s integrm cu succespachetele de teste de regressionn Continuous Delivery, oerind

    un mod rapid i fiabil de testare a produsului nostru.

  • 7/25/2019 Today Software Magazine N37/2015

    30/46

    30 nr. 37/2015, www.todaysoftmag.ro

    Numrul companiilor care utilizeaz strategii i metode pentru stocarea,managementul i distribuia de coninut i documente asociate procese-lor organizaiei este n cretere. Aceste metode sunt grupate sub denumireade Enterprise Content Management (ECM). Sub umbrela ECM se gsesc soluii demanagement a documentelor, managementul coninutului web, cutare, colaborare imanagementul activelor digitale. Soluiile de tip ECM i propun s uureze manage-mentul inormaiilor organizaiei prin simplificarea stocrii, securitii, permisiunilor,

    reteniei i a fluxurilor inormaionale.

    n urma achiziiei de ctre Adobe acompaniei elveiene Day Sofware, linia deproduse Day Communiqu s-a transor-mat n Adobe CQ, iar de curnd n AdobeExperience Manager (AEM). n anul 2014cei de la Adobe au devenit lideri de pia nCadranul Magic Gartner pentru soluii deWeb Content Management.

    AEM este o platorm destinat celormai complexe i pretenioase organizaii,care permite managementul inormaiilor

    cu un grad ridicat de granularitate.Situaiile n care se preteaz utilizareaacestui produs sunt portalurilemulti-site i multi-limb, undeeste necesar administrareaindependent a coninutului dectre mai muli content-editor-in baza unor procese definite dectre organizaie.

    Acest lucru este posibildatorit unei soluii tehniceingenioase i a unei nelegeri

    temeinice a domeniului ECMde ctre creatorii produsului.Din punctul de vedere al teh-nologiilor, AEM este un mix deramework-uriopen sourceJava

    i librrii proprietare Adobe.Pentru a gestiona un sistem cu o com-

    plexitate ridicat precum AEM, s-a decisolosirea unui container OSGI, ApacheFelix, pentru managementul pachete-lor i librriilor. OSGI este un subiect nsine pentru mai multe articole, ns ncazul de a avantajul major pe care laduce este posibilitatea de a porni i opridiverse componente ale sistemului, r aaecta uncionarea general a aplicaiei i

    deployment cu 0 downtime.Partea cu adevrat inovatoare este

    High-End Content Management,

    varianta Adobe

    Alexandru [email protected]

    Software Engineer@ Pitech+Plus

    programare

  • 7/25/2019 Today Software Magazine N37/2015

    31/46

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

    TODAY SOFTWAREMAGAZINEprogramare

    introducerea Apache Jackrabbit Oak casoluie pentru nivelul de stocare a datelor.Jackrabbit Oak este un content repositoryarborescent care implementeaz stan-dardele JCR (Java Content Repository) iWebDAV, care permite tratarea uniorma resurselor, indierent de tipologia lor.Astel pentru un utilizator Oak, devinetransparent dac resursele pe care le acce-seaz sunt pagini web, documente, imaginisau alte active digitale.

    Framework-ul web este tot open source,Apache Sling, care permite managementulJCR ntr-o manier REST. Puterea Slingst n aptul c abstractizeaz accesul laJCR i oer modaliti diverse de rende-ring a resurselor, printr-un mecanism de

    selectori. Astel un nod din JCR poate fiprezentat ca JSON, HTML, XML etc. .

    Cu acesteramework-uri la baza AEM,

    sistemul oer o suit bogat de compo-nente UI pe care editorii le pot olosi directn pagini printr-un mecanism drag&drop.Astel responsabilitatea crerii de paginia ost transerat de la programator ctrecontent editor. Programatorului i revineresponsabilitatea de a conigura tem-plate-urile pe baza crora se vor construipaginile i de acrea la nevoie componentepersonalizate pentru nevoile clientului.

    Construcia de componente vizuale customeste relativ acil, fiind bazat pe tehnologiicunoscute precum JSP si ExtJS, la care seadaug i o librrie Adobe, numit Granite.

    La nivel de inrasctructur, AEM aost conceput s ruleze ntr-un mediudistribuit i oer capabiliti diversede conigurare a instanelor de server,de la o singur instan la cluster sauload balancing pe mai multe instante.

    Serverul AEM poate s uncioneze ndou moduri: authoripublish.n modulauthor, instana este utilizat pentru confi-gurarea platormei i crearea de coninut,iar n modulpublish instanta servete con-tentul ctre clieni. Numrul de instane

    de author i pub lish nu trebuie s iecorelate, iar AEM oer un mecanism dereplicare a datelor din author pepublish.

    Astel ncrcarea pe servere este distribu-it, iar o activitate ridicat a editorilor vafi resimit doar pe instantele author, ra aecta perormana pentru clienti, ntru-ct acetia se conecteaz lapublish.Adobemai oer i un modul separat, numitDispatcher, care are unciile de cache iload balancing. Responsabilitatea gesti-onrii cache-ului este luat de pe umeriiprogramatorilor, deoarece Dispatcher-ul

    invalideaz cache-ul automat n momentuln care o pagin a ost modificat.

    n concluzie, soluia celor de la Adobeeste destinat organizaiilor multinaionalecare au acumulat cantiti considerabilede contentpe care doresc s l utilizeze nmoduri diverse. Este de apreciat trecerearesponsabilitilor din zona de develop-mentspre content editor-i. Acetia pot slucreze independent de o echip de dezvol-tare pentru a crea un site, n condiiile ncare au la dispoziie o suit de componentecare le satisac nevoile.

    Dezavantajele AEM sunt preul prohi-bitiv (450.000$ cost mediu pentru licene)i un cost total de implementare ajungndn medie la 2M $. De asemenea, curba de

    nvare a acestei tehnologii este abrupt,necesitnd o echip experimentat n teh-nologii Java EE i concepte de ECM.

  • 7/25/2019 Today Software Magazine N37/2015

    32/46

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

    Observm un nceput modest n 1995ca limbaj de programare oarte obscuri putem deduce c popularitatea vinede la ramework -ul Rails, care a creato comunitate eervescent. Rails a ostconceput i creat de David HeinemeierHansson n vara lui 2004. Pentru maimulte inormaii speciice despreRuby(1) i Rails(2) v invit s consultaireerinele de la inalul articolului.

    Analiznd diagrama de mai susremarcm cteva lucruri interesante:Ruby este mult mai puternic dect PHP iJavascript i este oarte aproape de C#.

    Impresioneaz gradul su ridicat deviabi li tate comparat iv cu alte op iunipopulare olosite la momentul curent nmediul de dezvoltare.Enumerm mai josminicolecia de website-uri, care oer omrturie clar a potenialuluiramework-ului Rails pentru aplicaii de tip web:

    witter n primii lui ani deuncionare, Twitter a avut la baz doarRoR, ulterior lundu-se decizia de a-lmuta ntr-un mediu Java.

    Basecamp- proiectul pe care Davida rafinat Rails. Yellow Pages - celebra carte cu

    numere de teleoane a pit n lumeavir tual sub numele de Pagini Aurii

    Online. Github- este nevoie s adaug vreun

    comentariu? urban dictionary - proiect de tip

    crowdsourcingpentru dicionar onlinede argou.

    n c o n t i n u a r e v o m p r e z e n t ap a r t i c u l a r i t i l e l u i R a i l s .Benefciile lui Ruby on Rails

    1. Convention over ConfigurationAceast mic uncionalitate ace Rails

    nu numai unic ci i ormidabil. Avnd ladispoziie aceast unealt, un programatorse poate concentra asupra codului ntr-omanier pragmatic, n loc s i iroseascenergia i atenia asupra fiierelor de con-figurare. Acest aspect poate fi urmrit celmai bine n arhitectura de tip Model-View-

    Controllerpe care limbajul o impune.Maniera n care acesta gestioneaz estesuficient de interesant s strneasc zm-bete pe aa oricrui programator.

    Aadar, n loc s fii nevoit s i con-figurezi care Model (unitatea atomic destocare n baza de date) merge n caretabel din baza ta de date, Rails i oer oregul oarte simpl: s presupunem c aiun model numit User, n acest caz vei ticu siguran ce va i asociat cu un tabelnumit Users ( pluralul lui user). Mai mult,

    logica responsabil pentru codul ce se vaocupa de model va fi regsit n controller-ul numit UsersController, care va fi mapatla un set de rute predeinite de resursanumita users(endpoint-uri de tip RESTul

    Scurtul ghid al unicornului din Ruby on Rails

    Ruby on Rails ncepe treptat s ias din aria de inluen a hipsterilor. Cu siguran vei i numit unicorn dacprogramezi n Ruby on Rails - toat lumea a auzit de existena acestor developeri, dar nimeni nu a vzut unuln realitate. Dar, nainte de a ne aunda n subiect, hai s vedem de ce ai avea nevoie de acest rubin pe ine:

    programare

  • 7/25/2019 Today Software Magazine N37/2015

    33/46

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

    sunt oerite - index/ show/ new/ create/ edit/ update/ delete) carevor corespunde metodelor cu aceleai nume definite n controllerca puncte de acces. Apoi, desigur, view-urile render-uite de acestemetode se vor afla nolder-ul views, n sub-older-ul users, avnd

    fiecare .html acelai nume ca i endpoint-ul.

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

    Scaolding-ul i coner aceast posibilitate, avnd ladispoziie o aplicaie care ruleaz n doar cteva secunde (avnddeja Rails instalat). Nu tiu ce prere avei voi, dar mie mi separe olositor i rapid! De notat este aptul c i conveniile pot fischimbate dac este dorit situaia, ns Rails ntrete ideea de ate olosi de ele aa cum sunt date.

    nc un motiv pentru care vei iubi aceast practic este

    uurina pe care o d utilizatorilor de a se plimba prin orice proi-ect. Dac ai nvat o dat aceste convenii i trebuie s te muila un alt proiect Rails, exist anse extrem de mari ca s nelegilogica din spatele aciunilor doar dintr-un UML. Ba mai mult, vei

    putea manipula codul r a mai fi nevoit s primeti inormaiide la developer-ii anteriori. Acum v ntreb din nou, aa-i c egrozav? i mai exist i alte puncte orte!

    2. ComunitateaDin acest punct de vedere, se poate spune c eti de-a dreptul

    cu picioarele nfipte n pmnt. Exist o bibliotec uria de tipopensourcedisponibil pentru Ruby on Rails. n plus, majori-tatea surselor sunt oarte bine documentate(4) i exemplificat(5)peste tot.

    Oricnd ai nevoie de ceva, exist un gem(voi adresa acestconcept n rndurile ce urmeaz) special construit, care i varezolva problema n stilul Rails.

    Ct despre gem-uri- le poi considera librriile sau plug-in-urile din alte limbaje. Pentru a olosi gem-urile prin aplicaie,exist un fiier numit gemfilecare i permite s adaugi sau stergi dup bunul plac orice bibliotec prin url. Pentru a te asigurac nu i poluezi maina sau alte proiecte cu dieritegem-uri fiec-are avnd dierite versiuni, exist mai multe abordri. Eu sugerez

    cu ncredere olosirea rvm-ului(6) ( ruby-versioning-manager ).

    Iar ultimul bonus al comunitii este aptul c este proactiv.n general, comunitile lncezesc, mbtrnesc sau chiar sempiedic n proiectele de tip boom. Dar nu este cazul i aici. Bachiar mai mult, se poate spune c este mai eervescent ca atuncicnd totul a nceput!

    Iar ca ultim aspect - dac vreodat ai nevoie s rezolvi oanumit problem i nu tii cum, railscasts(7). te va indruma/inspira de cele