46
T O D AY SOFTWARE Nr. 43 • Ianuarie 2016 • www.todaysoftmag.ro • www.todaysoftmag.com MAGAZINE Frontend Mashup În căutare de talent SymfonyCon 2015 10 noutăți fiscale cu impact pentru antreprenori valabile din 2016 Simplon România te învață să faci aplicații mobile în 3 luni Marketing prin fereastra digitală Flexibilitate strategică în timpul incertitudinii Logica Fuzzy si mecanisme specifice. O Introducere teoretică TFS ca platformă de colaborare (I) Roku Previziuni IT pentru 2016 De la Zero to RESTful în 4 pași. Design de API

Today Software Magazine N43/2015

Embed Size (px)

DESCRIPTION

Today Software Magazine N43/2015Today Software Magazine N43/2015

Citation preview

Page 1: Today Software Magazine N43/2015

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

TSM T O D A YS O F T WA R E

Nr. 43 • Ianuarie 2016 • www.todaysoftmag.ro • www.todaysoftmag.com

M AG A Z I N E

Frontend Mashup

În căutare de talent

SymfonyCon 2015

10 noutăți fiscale cu impact pentru antreprenori valabile din 2016

Simplon România te învață să faci aplicații mobile în 3 luni

Marketing prin fereastra digitală

Flexibilitate strategică în timpul incertitudinii

Logica Fuzzy si mecanisme specifice. O Introducere teoretică

TFS ca platformă de colaborare (I)

Roku

Previziuni IT pentru 2016

De la Zero to RESTful în 4 pași.

Design de API

Page 2: Today Software Magazine N43/2015
Page 3: Today Software Magazine N43/2015

6Previziuni IT pentru 2016

Ovidiu Măţan

10 Simplon România

Roxana Rugină

12SymfonyCon 2015 –

O simfonie a developer-ilor Radu Murzea

14Conferința TEDxCluj 2016

Cristian Dascălu

19TFS ca platformă de colaborare (I)

Dorin Cazan

22 Marketing prin “fereastra” digitală.

O privire largă asupra lui 2016 Sorina Mone

24Flexibilitate strategică în

timpul incertitudinii Paul Alexandru Tofan

27Logica Fuzzy și mecanismele specifice. O introducere teoreticăBogdan Mursa

30RokuThomas Morris

32De la Zero la RESTful în patru pași. Design de APIGeorgiana Gligor

37Frontend MashupRaluca Oanca-Boca

39În căutare de (potențial) talentMădălina Nastasa

41 10 noutăţi fiscale valabile din 2016 cu impact pentru antreprenori Delia Mircea

Page 4: Today Software Magazine N43/2015

4 nr. 43/2016, www.todaysoftmag.ro

La mulți ani! Așa cum se întâmplă de obicei, începutul anului aduce pentru fiecare dintre noi planuri de viitor. Înainte de a vă pune la curent cu proiectele acestui an, vrem să subliniem că dorim să menținem dezvoltarea revistei pe același trend

crescător al calității, vizibilității online precum și al organizării evenimentelor lunare de lansare a fiecărui număr. De asemenea, ne preocupă ca în acest an să avem o mai bună comunicare cu colaboratorii revistei. Prime demersuri în acest sens sunt crearea unui loc de discuții online privat și organizarea unor workshop-uri care să ofere cititorilor revistei ocazia unor reale experiențe de învățare. Despre serviciul programez.ro v-am informat și în numărul trecut. Sperăm să îl lansăm în curând și să punem la dispoziția doritorilor posibilitatea de rezolva teste de certificare ale companiilor pentru anumite poziții. Pentru cei ce doresc un preview, acesta este disponibil pe beta.programez.ro. Adăugarea unor rubrici noi în conținutul revistei precum cea de Noutăți și cea de Startup-uri este un obiectiv pe care încercăm să-l îndeplinim chiar din acest număr. O altă schimbare se referă la pagina de comunități, în sensul că vor fi menționate doar cele mai active dintre ele, precizându-se evenimentele organizate de către acestea.

Deschidem acest număr cu o serie de opinii asupra evoluției anului 2016 văzută din perspectiva de business, management, UX și machine learning. Flexibilitate strategică în timpul incertitudinii demonstrează că starea de nesiguranță poate oferi avantaje dacă este condiționată de o analiză pertinentă a volatilității businessului. Domeniul tehnic specific IT-ului este reprezentat de o serie de subiecte interesante: o scurtă introducere în Logica Fuzzy și mecanisme specifice, O Introducere teoretică, urmată de un ghid de programare a dispozitivului Roku; TFS ca platformă de colaborare - pentru dezvoltatori cât și nondezvoltatori care propune o soluție pentru colaborarea în cadrul echipei. Continuăm seria de articole de dezvoltare a unei aplicații web folosind ultimele framework-uri în articolul De la Zero to RESTful în 4 pași. Design de API. Tot din această arie face parte și Frontend Mashup. În căutare de (potențial) talent din perspectiva anului 2020 este un articol care creionează în tușe realiste evoluția resurselor umane și implicațiile acesteia în raportul angajat/angajator. Un alt articol foarte util pentru antreprenori și nu numai este 10 noutăţi fiscale valabile din 2016 cu impact pentru antreprenori.

Vă dorim lectură plăcută !!!

Ovidiu MăţanFounder Today Software Magazine

Ovidiu Măţ[email protected]

Editor-in-chief Today Software Magazine

editorial

Page 5: Today Software Magazine N43/2015

5www.todaysoftmag.ro | nr. 43/ianuarie ,2016

Lista autorilor

Ovidiu Măţ[email protected]

Editor-in-chief Today Software Magazine

Radu [email protected] PHP Developer @Pentalog

Cristian Dască[email protected] Co-fondator @Cluj Hub Curator & PM @ TEDxCluj

Dorin [email protected] Service specialist@Siemens

Sorina [email protected] Marketing manager @Fortech

Georgiana Gligor [email protected] Owner@Tekkie Consulting

Thomas [email protected] Roku & Python Software Developer@3Pillar Global

Roxana Rugină[email protected] CEO & co-founder @Simplon Romania

Redacţia Today Software Magazine

Fondator / Editor in chief: Ovidiu Mățan [email protected]

Graphic designer: Dan Hădărău [email protected]

Copyright/Corector: Emilia Toma [email protected]

Traducător: Roxana [email protected]

Reviewer: Tavi Bolog [email protected]

Contabil : Delia [email protected]

Programator junior: Alexandru Diniș[email protected]

Marketing și tehnoredactor: Ana-Maria Bivol

[email protected]

Tipar realizat de Daisler Print House

Produs de Today Software Solutions SRL

str. Plopilor, nr. 75/77Cluj-Napoca, Cluj, [email protected]

www.todaysoftmag.rowww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2284 – 6352

Copyright Today Software Magazine

Reproducerea parțială sau totală a articolelordin revista Today Software Magazine

fără acordul redacției este strict interzisă.

www.todaysoftmag.rowww.todaysoftmag.com

Bogdan Mursa [email protected] Software Developer @ Yardi

Raluca [email protected]

Full Stack Developer @Self-Employed

Mădălina Nastasa [email protected] Sales Development Representative@ Azimut Happy Employees

Paul Alexandru [email protected] Project Manager@ISDC

Delia Mircea [email protected] @ Contzilla.ro

Page 6: Today Software Magazine N43/2015

6 nr. 43/2016, www.todaysoftmag.ro

opinii

Previziuni IT pentru 2016

La început de an, toți proiectăm noi planuri și noi obiective, sperând ca noul an să fie unul favorabil îndeplinirii acestora. Dacă unii țin cont de ceea ce spune zodiacul, noi am decis să dăm mai multă credibilitate reprezentanților

importanți din comunitatea IT clujeană. De aceea, i-am rugat să ne comunice care sunt previziunile lor referitor la 2016. Din răspunsurile lor nu putem trage decât o concluzie foarte optimistă: anul 2016 va fi unul benefic pentru industria IT!

Care este perspectiva ta asupra evoluției tehnologiilor Microsoft în 2016?

Radu Ștefan – Microsoft

În 2016, tehnologiile Microsoft vor evolua în jurul productivității și a procese-lor business, platforma cloud inteligentă și calculatoare mai personale, pentru a crește puterea noii societăți, cu tot mai mulți tineri care își încep primul job într-un mediu virtual mai degrabă decât într-un loc fizic și trecerea de la tehnologia în sine la valorile și potențialul experiențelor umane. Asistenții personali precum

Cortana vor deveni cu adevărat mai utili prin înțelegerea unor aspecte importante din viața oamenilor, cum ar fi sarcinile la care lucrează și angajamentele pe care și le iau față de alții. Sistemele Big Data vor colecta informații prin dispozitivele IoT și vor influența deciziile legate de sănătate, locuință și angajare, cu analitică predic-tivă. Distribuția video pe web, va prelua conducerea în defavoarea emisiunilor TV, cu o procesare video mai inteligentă în cloud, prin Proiectul Oxford. În final, vom avea experiențe mai bogate pe telefoanele mobile, printr-o tehnologie mai avansată a camerei de luat vederi.

Ovidiu Măţ[email protected]

Editor-in-chief @ Today Software MagazineOrganizator @ Cluj IT Days

Page 7: Today Software Magazine N43/2015

7www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

Care este perspectiva ta asupra evoluției project management-ului în 2016?

Simona Bonghez – Colors in projects

Ma n a g e m e nt u l d e pro i e c t s e îndreaptă spre zone noi, direcție expli-cabilă în condițiile impuse de economie. Perspectiva businessului câștigă teren în fața disputelor purtate de profesioniști legate de metodologiile cele mai eficiente. După o oarecare implicare în susținerea abordărilor Agile (care încep să devină mai atractive și pentru alte industrii, nu doar cele legate de IT&C) reprezentanții busi-nessului (managementul organizațiilor, în general) pierd interesul de a sprijini o metodologie sau alta, fie că discutăm de abordări Agile sau tradiționale, interesul lor coagulându-se în zona de obținere de beneficii. Pe o piață volatilă, ne intere-sează să obținem rezultate rapide în urma proiectelor lansate, dar aceste rezultate nu sunt suficiente, ele trebuie să aducă profit, creștere a cotei de piață, renume, avantaj competitiv. E un fel de re-întoarcere la pre-ocuparea de bază a businessului, doar că de data aceasta mult mai intens, rezultatul fiind impunerea acestei orientări și asupra managerilor de proiect. Discuțiile nu se vor mai purta despre metodologii, ci des-pre modul în care se pot atinge și se pot asigura beneficiile estimate inițial. Ceea ce înseamnă că managerii de proiect vor tre-bui să treacă de la jargonul profesional la limbajul de business, să-și mute atenția de la proces către asigurarea atingerii bene-ficiilor. Adică responsabilitatea lor trece de granița proiectului și se extinde până la obținerea câștigurilor ulterioare livrării rezultatelor. Legătura dintre managemen-tul organizațiilor și managerii de proiect trece pe o altă dimensiune. Atenție însă la termenii pe care îi folosim, aici nu vorbim despre Scrum Master sau Team Lead ale căror responsabilități rămân aceleași, ci discutăm despre pozițiile din proiect care au o perspectivă mult mai amplă asupra impactului proiectelor asupra businessu-lui: Project Manager, Product Owner. Va fi interesant de văzut cum vor accepta mana-gerii de proiect această responsabilizare

suplimentară asupra - atentie! - nu a rezultatelor, ci a beneficiilor derivate din rezultatele livrate.

La sfârșitul lui ianuarie particip la întâlnirea anuală, strategică a Project Management Institute, de unde mă aștept să vin și cu o direcție stabilită pentru această organizație. Direcțiile de dezvoltare ale PMI se bazează pe o cercetare anuală numită ‘PMI’s Pulse of Profession, al cărei raport ne va fi prezentat cu această ocazie și care se va lansa public în februarie. Să vedem dacă perspectiva mea va fi con-firmată la nivel global. Mă aștept să aud foarte multe despre Benefits Realization, vă țin la curent …

Cum vezi evoluția proiectelor de machine learning în 2016?

Daniel Sârbe – SDL

Anul 2016 se anunță unul foarte intere-sant pentru proiectele de machine learning pentru că numeroase companii au investit în ultimii ani resurse financiare și umane importante în acest domeniu. Machine learning-ul a devenit tot mai accesibil, nefiind limitat doar la domeniul de cerce-tare sau al companiilor foarte mari. De-a lungul anului 2015, companii precum Google sau Facebook au făcut publice pro-priile framework-uri de machine learning (TensorFlow - Google, Torch - Facebook) iar în cloud există tot mai multe posibilități de a începe proof-of-concept-uri la cos-turi foarte mici și folosind state-of-the-art algorithms pe platforme ce se dezvoltă continuu cum ar fi Amazon Machine Learning, Microsoft Azure Machine Learning, Google Prediction API sau IBM Watson Analytics.

Pe plan local, tot mai multe companii din Cluj vor trece de la faza de experi-mente și proof-of-concept-uri la integrarea algoritmilor de machine learning în partea de pre-producție sau chiar producție, iar cererea de persoane specializate pe acest domeniu va crește tot mai mult. Platformele open source folosite pentru data-processing la scara mare precum Apache Spark și Apache Hadoop vor deveni tot mai folosite la nivelul companiilor din Cluj. Interesul

pentru Machine Learning și BigData a crescut exponențial în ultimii doi ani. Ca organizatori ai meetup-ului de BigData/DataScience am avut dificultăți în 2015 în a găsi spații tot mai mari pentru a găzdui astfel de evenimente. În ce privește work-shop-urile de Machine Learning a fost necesar să limităm numărul de participanți pentru a avea workshop-uri eficiente. Cu siguranță, domeniul de BigData si Machine Learning este un domeniu de urmărit în 2016, de asemenea și gradul de succes a proiectelor în aceste domenii.

Cum vezi evoluția IT-ului în 2016 și în par-ticular evoluția ecosistemului de IT clujean?

Philipp Kandal

În 2016, vom remarca o schimbare de paradigmă de la programarea logică tradițională înspre învățarea aprofundată dar și o continuare a proiectelor Big data. Acest lucru va oferi inginerilor ocazia de a desfășura o muncă inovatoare. Clujul este bine poziționat datorită culturii sale inginerești puternice și va continua să crească puternic în 2016. Sper în mod spe-cial ca 2016 să ofere oportunități Product Startup-urilor din Cluj de a avea parte de o expunere internațională și m-aș bucura mult să văd primul unicorn care pleacă de la Cluj.

Cum apreciezi evoluția designului web și a aplicațiilor mobile în 2016?

Vlad Derdeicea

Noul an vine cu multe modificări și trenduri diferite în web cât și în mobile. Website-urile încep să aibă cât mai multe videouri și imagini erou (mari) la intro, timp în care variantele lor de mobile sunt din ce în ce mai rapide. Ca și în anii precedenți se pune foarte mult accentul pe ușurința de utilizare a interfeței, grafica flat

Page 8: Today Software Magazine N43/2015

8 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

și animațiile organice ce aduc viață oricărui produs digital.Având în vedere evoluția rapidă a device-urilor mobile se

așteaptă ca în anul 2016 traficul mobil să fie egal cu cel de pe desktop, aceasta înseamnă mai multe site-uri responsive și aplicații axate pe verticalitate și pe bine-cunoscutul scroll din aplicațiile sociale. De asemenea, faptul că anul trecut Google a decis ca site-urile responsive să fie clasate în căutări mai sus decât cele doar pentru desktop este încă un motiv pentru care din ce în ce mai multe companii caută să facă variante responsive sau chiar aplicații custom.

Interfețele bazate pe carduri sunt printre cele mai mari ele-mente lansate de Material Design și pot fi găsite în aplicații, website-uri și chiar printuri. Acestea sunt ușor de creat, se adap-tează pe orice rezoluție, țin informația organizată și sunt foarte citibile.

Animațiile au fost unul dintre trendurile cele mai mari ale lui 2015, indiferent că erau fullscreen sau mici elemente pe care nici nu le observai. În 2016 popularitatea lor sigur va crește chiar dacă sunt șanse foarte mari ca mărimea lor să scadă. Ele sunt un mod distractiv de a ține user-ul atent sau chiar de a-l surprinde cât timp content-ul se încarcă.

Fonturi frumoase și citibile sunt mai ușor de găsit odată cu apariția Typekit-ului de la Adobe și a Google Fonts, iar site-urile au început să aibe fonturi din ce în ce mai curate trasmițând informația într-un mod foarte ușor.

Ilustrațiile și schițele sunt un mod distractiv de a pune în valoare elementele site-ului sau ale aplicației. Ele au crescut în popularitate prin introducerea icon-urilor cu scopul de a face utilizatorul să înțeleagă mai ușor și mai rapid care sunt pașii respectivi sau ce beneficii aduce acel serviciu. De asemenea, pot crea o legătură personală cu utilizatorii, ceea ce poate aduce multe avantaje.

Culorile mai puternice și mai deschise ce aduc puțin cu cele folosite în anii 1980 sunt printre elementele ce au cele mai mari șanse să fie folosite anul acesta. Le putem vedea pretutindeni, de la Dribbble la Google Material Design.

Website-urile cu slider au fost folosite la început într-un frame, iar acum sunt folosite în full-screen. Fiecare slide este controlat de un buton sau are un timer ce îi poate dicta perioada de afișare. Utilizatorii pot astfel naviga mult mai ușor între informații, având o experiență aproape fizică.

Analizând exemplele menționate mai sus, observăm că anul acesta nu va fi doar un singur trend, ci mai degrabă o multitudine de trenduri posibile pentru web și aplicații, pe care designerii vor putea să le folosească în funcție de fiecare proiect în parte. Însă nu ar trebui să vedem aceste trenduri mai mult decât unelte sau orientări în crearea unui produs. Ele nu ar trebui folosite excesiv doar pentru că sunt “hip”, ci ar trebui văzut dincolo de ele și folo-site doar cele potrivite pentru proiectul potrivit.

opiniiPreviziuni IT pentru 2016

Page 9: Today Software Magazine N43/2015

9www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

Care este perspectiva ta asupra mediului de IT clujean în 2016 privind evoluția produselor, outsourcing-ului dar și a programato-rilor locali?

Călin Văduva

Evoluția mediului de IT din Cluj a fost și va fi în continu-are determinată de dinamica pieței globale. Clujul s-a conturat ca pol regional de creștere economică pe fondul cererilor venite din piețele mature. La acest nivel, perspectivele de creștere pentru 2016 rămân modeste, reflectând încetinirea creșterii comerțului mondial și a tensiunilor geopolitice. Acestea vor aduce presiuni asupra optimizării costurilor și a creșterii productivității, deter-minând orientarea clienților către investiții mai precaute, inclusiv în tehnologie.

În acest scenariu, Clujul va traversa o perioadă de reașezare. Accentul va fi direcționat înspre îmbunătățirea calității serviciilor oferite și a relațiilor cu partenerii actuali. În mod evident, acest lucru are impact asupra dinamicii forței de muncă, atât din punct de vedere cantitativ cât și calitativ.

Pe termen lung, ne putem aștepta să revenim la o creștere semnificativă atât a outsourcing-ului cât și a investițiilor din zona de produse.

Cum va evolua piața de gaming la nivel global în 2016?

Robert Muresan

Anul 2016 va fi anul Virtual Reality. Toți producătorii de echipamente VR (HTC&Valve, Oculus, Sony) își vor lansa echipamentele în anul acesta.Va fi anul în care vom asista la schimbări radicale pe piața de gaming: locul ecra-nelor tradiționale va fi luat de echipamentele de realitate virtuală.Experiența va fi considerabil mai bună.

Page 10: Today Software Magazine N43/2015

10 nr. 43/2016, www.todaysoftmag.ro

Cluj Napoca: 11.01.2016Simplon România anunță lansarea

programului Mobile Bootcamp, un curs pentru oamenii talentați și pasionați de tehnologie care vor să învețe să dezvolte aplicații mobile pentru Android de la zero.

Mobile Bootcamp constă într-un pro-gram de trei luni intensive de pregătire și dezvoltare a abilităţilor teh-nice pentru a realiza aplicaţii Java pe platforma Android. Pe lângă competențele tehnice, Simplon România încurajează participanții să dezvolte pro-duse mobile inovatoare oferind cursuri de “project manage-ment” și dezvoltând abilitățile de marketing ale cursanților necesare în domeniul tehnolo-giei și antreprenoriatului web.

“94% din absolvenții ulti-mului program Simplon Web D e v e l o p m e nt B o o t c a mp lucrează acum în IT. Aceste rezultate și cererea mare pentru cursuri axate pe practică și teh-nologii noi, ne-au determinat să lansăm un nou curs pentru începători care vor să dezvolte aplicații mobile”- declară fon-datoarea Simplon, Roxana Rugină.

C u r s a n ț i i v o r î n v ă ț a c o n -ceptele teoret ice prin pract ică ș i dezvoltarea unui proiect cu ajutorul trai-nerilor și profesioniștilor din domeniul IT. Programul se adresează persoanelor în căutare de noi provocări, dornice de o reconversie profesională, celor aflați la început de drum care își doresc să obțină o experiență practică pentru a transforma

Simplon România te învață să faci

aplicații mobile în trei luni

Au început înscrierile la cursul intensiv de Android pentru începători și viitori antreprenori în domeniul tehnologiilor mobile.

Roxana Rugină[email protected] CEO & co-founder @Simplon Romania

educație

Page 11: Today Software Magazine N43/2015

11www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

idei valoroase în aplicații mobile și afaceri de success.

Simplon România împreună cu Today Software Magazine oferă două burse la Mobile Bootcamp 2016 pentru persoanele din medii defavorizate social care doresc să își îmbunătățească viața cu ajutorul teh-nologiei. Firmele care doresc să încurajeze tinerii să învețe programare, pot oferi ast-fel de burse cu ajutorul Simplon. Pentru detalii despre parteneriate și bursă intrați pe site.

Înscrierile se pot face până pe 25 ianua-rie pe ro.simplon.co/mobile1, iar candidații interesați trebuie să-și dovedească aptitu-dinile, pasiunea și capacitatea de a învăța rapid Java printr-un test practic. Toți cei care vor trece testul practic vor fi ulte-rior invitați la un interviu. Câștigătorul bursei va fi anunțat la sfârșitul perioadei de selecție, odată cu lista celor admiși la Mobile Bootcamp.

Despre Simplon RomâniaSimplon România înseamnă o comu-

nitate de oameni pasionaţi care își doresc să împărtășească din experienţa lor cu ceilalţi în scopul de a contribui la educaţia tinerilor și de a încuraja ideile și diversi-tatea în domeniul tehnologiei. Simplon organizează cursuri de instruire și specia-lizare în IT, contribuind direct la ocuparea forței de muncă și îmbunătățirea nivelului de pregătire al tinerilor din Cluj. Pe lângă bootcamp, Simplon organizează eveni-mente destinate antreprenorilor, ateliere pentru copii, workshop-uri pentru fete, femei sau angajații din companii care vor să învețe programare.

Simplon România este afiliat la o reţea de școli alternative internaționale: Simplon - care propun cursuri de formare intensive și practice în urma cărora participanții pot crea site-uri web și aplicaţii mobile sau pot deveni dezvoltatori entry-level și project manager-i în IT. Cursurile se adresează tinerilor sub 25 de ani, fără diplome supe-rioare, celor care au nevoie de o calificare sau șomeri care caută de lucru, fetelor și femeilor, celor care vin din mediul rural sau din familii cu venituri mici, aflaţi în dificultate financiară și tuturor celor subre-prezentaţi în domeniul IT.

1 http://ro.simplon.co/mobile

Page 12: Today Software Magazine N43/2015

12 nr. 43/2016, www.todaysoftmag.ro

Radu [email protected] PHP Developer @Pentalog

evenimente

În acest articol vă voi descrie impresia pe care mi-a creat-o această conferinţa.

I). De ce te-ai duce la o conferinţă ? Această întrebare o putem auzi frec-

vent de la prieteni și cunoscuţi atunci când suntem entuziasmaţi că vom parti-cipa la un astfel de eveniment.

Da, putem citi articole, bloguri, știri, cărţi. Putem discuta probleme și cod cu ceilalţi programatori scriindu-ne unul altuia pe GitHub. Sau putem chiar forma mici grupuri locale axate pe o anumită tehnologie.

Însă toate acestea nu se compară cu ce poate oferi o conferinţă bine pusă la punct: interacţiunile faţă-în-faţă cu cei mai buni experți ai acelui domeniu, cunoașterea unor oameni noi, descope-rirea unor noi tendinţe în domeniul tău și, nu în ultimul rând, sentimentul plăcut că toate acele sute de oameni împărtășesc aceeași pasiune ca și tine. Aceste experi-enţe pot fi avute doar în acel context.

Da, o conferinţă costă timp și bani. Dar în schimb primești o viziune mai amplă asupra domeniului și motivaţia de a continua să înveţi și să încerci lucruri noi.

II). Detalii SymfonyCon 2015. După cum am menţionat anterior,

conferinţa a avut loc la Paris în prima săp-tămână a lunii decembrie 2015 și a marcat zece ani de existenţă a framework-ului și lansarea versiunii majore 3.0 a acestuia.

Folies-Bergere, celebrul teatru și un simbol al culturii franceze și parisiene a reprezentat locul unde s-a desfășurat evenimentul. Organizatorii au fost cei de la SensioLabs, compania din spatele Symfony-ului și a altor proiecte PHP celebre.

Pusă în cifre, conferinţa arată cam așa:• peste 1,000 de participanţi,• 25 de speakeri internaţionali,• 2 zile de workshop-uri,• 2 zile de conferinţă,• 1 Hackday,• 25 de prezentări împărţite pe 2

track-uri (A și B) simultane,• 18 sponsori (printre care Blackfire,

Drupal, Heroku, Microsoft Azure, Platform.sh, BlaBlaCar și eZ Systems),

• 16 câștigători ai premiilor Symfony Business and Community Awards,

• și, nu în ultimul rând, 300 de elePHPanţi mov/unicat vânduţi.

Fiind două track-uri simultane de pre-zentări, organizatorii au făcut streaming live a tuturor prezentărilor pentru cei care și-au cumpărat bilet, dar nu au putut ajunge la conferinţă. Prezentările au fost de asemenea înregistrate și vor fi făcute publice.

SymfonyCon 2015 –

O simfonie a developer-ilor

În prima săptămână a lunii decembrie am avut plăcerea de a participa împreună cu echipa mea la una dintre cele mai importante și mai mari conferinţe PHP ale anului: SymfonyCon 2015. Aceasta a avut loc la Paris și a fost organizată cu ocazia

împlinirii a zece ani de existenţă a faimosului framework Symfony.

Page 13: Today Software Magazine N43/2015

13www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

III). Conţinutul Conferinţei. Vom parcurge conferinţa într-o ordine

cronologică, pentru o imagine mai clară asupra conţinutului oferit.

Ziua 1. Prima zi a început cu un bine-venit mic-dejun printre sutele de participanţi care stăteau la coadă să-și cumpere unul din puţinii elePHPanţi mas-cotă puși la vânzare de către organizatori. Aceste jucării de pluș au fost atât de râvnite de participanţi încât stocul s-a golit com-plet în două ore.

După ce ne-am cumpărat mult râvnita jucărie unicată, ne-am îndreptat spre sala principală pentru a vedea keynote-ul ţinut de Fabien Potencier, fondatorul proiectului Symfony.

Keynote-ul s-a axat pe istoria fra-mework-ului, viziunea echipei Symfony pentru prezent și viitor și un nou rele-ase-model a următoarelor versiuni ale framework-ului. Totul s-a sfârșit destul de repede, după ce câteva lacrimi emoţi-onante din partea prezentatorului au fost întâmpinate cu multe aplauze.

După keynote, prezentările s-au des-părţit în două track-uri și au continuat așa până la sfârșitul zilei. Conţinutul prezentă-rilor a fost concentrat pe aplicaţii Symfony rulate în cloud, uimitorul tool de deploy-ment Platform.sh, componente Symfony și cum sunt folosite de către alte proiecte, Doctrine, extensii PHP în mașina virtuală HipHop și aplicaţii e-commerce.

Cum nucleul conferinţelor este com-ponenta socială, organizatorii au avut grijă ca aceasta să se manifeste intercalând pre-zentările cu multe pauze printre care și prânzul.

Ziua s-a încheiat cu o mega-petre-cere dedicată aniversării a zece ani de la

începutul proiectului Symfony. Aceasta a fost organizată într-o sală de jocuri uriașă care a fost luată cu asalt de către participanţi. Căldura infernală și gălăgia enormă nu a oprit pe nimeni să se distreze la maxim și să-și facă poze cu astronautul mascotă a celor de la ElevenLabs, care a fost de departe vedeta serii.

Ziua 2. În ciuda oboselii acumulate la petrecere, toţi participanţii s-au întors nerăbdători pentru o nouă zi de prezentări și socializare.

Prezentările au fost și de această dată foarte tehnice: s-a discutat despre per-formanţa FastCGI, tool-ul de profiling Blackfire, caching, conceptul de micro-fra-mework și Form-uri. Ultima prezentare a zilei a adăugat o latură umană și de reflec-ţie întregii zile prin împărtășirea de către Jordi Boggiano a plăcerilor și dificultăţilor coordonării și menţinerii unui proiect open-source.

Ziua a fost presărată cu variate concur-suri și competiţii unde s-a câștigat, printre altele, un skateboard customizat și un Mac modificat special cu emblema celor de la Blackfire.

După concursuri, a urmat sesiunea de premiere “Symfony Community and Business Awards 2015”. Premiile au fost împărţite în mai multe categorii: cel mai bun blogger, cel mai bun contribuitor de cod, cel mai interesant Bundle, cea mai bună aplicaţie open-source a anului și multe altele. Câștigătorii au fost aleși de către comunitate prin vot.

Hackday. Ziua următoare a avut loc hackday-ul. Prezenţa a fost mult mai mică decât în zilele principale de conferinţă. În această zi s-a pus accentul pe practică: unii au rezolvat câteva bug-uri propuse de către organizatori în timp ce alții au căutat

pe cont propriu alte bug-uri sau probleme care să le reproducă sau să le rezolve.

V). Concluzii. SymfonyCon 2015 a fost o conferință

bine organizată, oferind participanților o varietate de activități și subiecte de discuție. Interacțiunea cu comunitatea a fost punctul forte deoarece majoritatea liderilor au venit sub același acoperiș și au fost foarte prietenoși cu participanții.

În concluzie, conferințele mari internaționale sunt evenimente la care orice profesionist din lumea IT ar trebui să participe cel puțin o dată în viață.

Page 14: Today Software Magazine N43/2015

14 nr. 43/2016, www.todaysoftmag.ro

Cluj-Napoca, 14 ianuarie. Ediția 2016 a conferinței TEDxCluj are ca temă demon-tarea miturilor: „MYTHBUSTING– lăsăm poveștile să doarmă, trezim adevărul” și se va desfășura în 20 februarie, la Cinema „Florin Piersic”. Pasionații de cunoaștere sunt așteptați cu idei inovatoare, perfor-mance-uri deosebite și o expoziție cu produse ale viitorului.

„Credem că știința în sensul ei cel mai larg este felul în care ni se prezintă reali-tatea, felul în care înțelegem și acceptăm ceea ce ne înconjoară. Știința eliberează, deoarece în locul prejudecăților, al falselor adevăruri mari, pune mici adevăruri verifi-cate. Propunem MYTHBUSTING deoarece cunoașterea științifică se îmbunătățește pe zi ce trece, cu fiecare probă la care este supusă și pe care o depășește. Vom demonta mituri din două direcții: dinspre evoluția cunoașterii științifice, adică acele mituri care nu puteau fi distruse până mai ieri; în al doilea rând, vom porni pe urmele acelor intuiții care se simt și par să fie adevărate, dar care, atunci când sunt supuse unui test riguros, nu mai stau în picioare.”- a declarat

Cristian Dascălu, curatorul TEDxCluj.

Cu această ocazie, organizatorii lan-sează competiția TEDxCluj Award, care urmărește să premieze profesioniștii din Transilvania care inovează în domeniul lor de activitate, prin idei curajoase ce pot schimba lumea sau care aduc noutăți tehnologice nebănuite. În prima fază a competiției, oricine poate face propu-neri pe website-ul www.tedxcluj.com. Perioada nominalizărilor este 14-28 ianu-arie, urmând ca până în 31 ianuarie echipa TEDxCluj, împreună cu un juriu format din parteneri din domeniul inovației să selecteze zece propuneri pe baza criteriilor anunțate pe site. Reprezentanții juriului se vor întâlni apoi cu inovatorii selectați pen-tru a discuta despre mentorat, dezvoltarea ideilor în afaceri și consiliere financiară, iar în perioada 13-16 februarie vor fi alese trei cele mai bune propuneri. Câștigătorul TEDxCluj Award 2016 va fi anunțat în cadrul conferinței din 20 februarie.

Conferința TEDxCluj 2016

Comunitatea numeroasă TEDxCluj se reîntâlnește la Cinema „Florin Piersic”, pe 20 februarie, în cadrul conferinței TEDxCluj 2016. În premieră: competiția TEDxCluj Award, care premiază inovatorii din

Transilvania, așteaptă nominalizări până pe 28 ianuarie.

evenimente

Cristian Dască[email protected] CEO & Business Developer @ Transilvania Entrepreneurship Center Co-fondator @Cluj Hub Curator & PM @ TEDxCluj

Page 15: Today Software Magazine N43/2015

15www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

„TEDxCluj Award își propune să aducă împreună minți sclipitoare, idei originale, experiența partenerilor și dorința tuturor de a răspândi ideile bune. Căutăm inițiatori de proiecte care au idei de impact, dorința de a le vedea dezvoltate și hotărârea de a munci pentru acest lucru. Cu toții vom avea de învățat din această experiență, dar mai ales toți cei care vor participa”, a adă-ugat Cristian Dascălu.

În completarea discursurilor și a performance-urilor care reprezintă deja „marca” TEDxCluj, organizatorii pregă-tesc și Innovation & Tech Expo, unde participanții vor putea testa gadgeturi noi, produse de design creativ și practic în același timp sau obiecte care aduc împre-ună concepte independente pentru prima dată. Printre acestea se numără Husa ArKase, ce încarcă bateria telefonului prin regenerarea energiei consumate de utiliza-tori. Idei 3D prezintă ochelarii Cardboard,

o modalitate ieftină de a experimenta realitatea virtuală cu ajutorul telefonu-lui mobil, iar SnapIT propun ochelari personalizați prin încorporarea unei micro-camere conectate la smartphone.

Lista vorbitorilor și a invitaților care vin la TEDxCluj 2016 va fi anunțată în perioada următoare. Pentru participarea la conferință, doritorii mai pot cumpăra bilete de tip „Early Bird” la prețul de 44 de euro de persoană, urmând ca după epui-zarea acestora un bilet să coste 65 de euro. TEDxCluj este un eveniment non-profit, iar fondurile strânse sunt folosite pentru a crea evenimente de impact adresate comunității TEDxCluj.

TEDxCluj este o inițiativă locală și independentă care aduce experiența internațională TEDx în Transilvania. Pr imul eveniment TEDxCluj s-a desfășurat în 2010, iar de atunci peste 3.500 de persoane au participat la cele 10 evenimente organizate de echipa TEDxCluj sub deviza TED: „Ideas worth spreading” – „Idei care merită răspân-dite”. Ultima ediție TEDxCluj, cu tema „Learn – Unlearn – Relearn” („Învățare – Dezvățare – Re-învățare”), a însemnat 1.017 participanți, 12 ore de conferință și 35 de invitați - vorbitori și artiști.

Mai multe informații: www.tedxcluj.com

Page 16: Today Software Magazine N43/2015

TODAY SOFTWARE MAGAZINE

16 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

Startup-uri

startup-uri

Moqups

Startup-ul clujean Moqups.com pentru crearea de schițe online a lansat recent cea de-a doua versiune mult îmbunătățită. Proiectele realizate se pot publica online sau descărca sub formă de PDF sau SVG. Există inclusiv posibilitatea de a invita colabora-tori și de a lucra împreună la o schiță.

Prima imprimantă românească 3D pe sistem Delta. Avantajele aces-tui sistem sunt vibrațiile scăzute și o viteză de până la 4-5 ori mai mare față de imprimantele 3d clasice pe sistem cartezian. Imprimanta este o minifabrică pentru orice mic producător de hardware deoa-rece pe lângă capacitățile 3D oferă și o freză CNC pentru gravarea cuprului de pe circuitele integrate și un cap laser cu care se pot tăia plăcuțele de mylar.

• Neura http://techcrunch.com/2016/01/18/neura/

Primul calculator pe 64 biți pe o singură placă. Acesta va conține un procesor ARM Cortex A53, quad core, 1.2 MHz, 2 x USB 2.0, HDMI 4K și până la 2GB RAM. Va putea rula orice sistem de operare iar recomandările producătorilor sunt Android, Ubuntu sau openHAB IoT. Proiectul este în derulare pe Kickstarter unde au adunat 1,266,000 USD, de 40 de ori mai mult decât cererea inițială.

• dok iWatch - ht tps : / /w w w.kickstar ter. com/projects/dokiwatch/dokiwatch-the-worlds-most-advanced-smartwatch-for?ref=category

• TinTag • Skin Scan

Symme3D Pine A64

Page 17: Today Software Magazine N43/2015

17www.todaysoftmag.ro | nr. 43/ianuarie, 2016

TODAY SOFTWARE MAGAZINE

Noutăți IT

Prima versiune a bine cunoscutului dispozitiv de realitate virtuală este dis-ponibilă pentru precomandă. Aceasta este prima versiune dedicată consuma-torilor și suportă Rift Development Kit 2 (DK2). Rezoluția celor două ecrane combinate va fi de 2160 x 1200 iar latența va fi mică iar căștile vor fi inte-grate în dispozitiv pentru o mai mare senzație de pătrundere în realitatea virtuală.1

1 https://shop.oculus.com/

A fost lansată versiunea 6.0 a bine cunos-cutului sistem de operare Android. Principalele îmbunătățiri sunt:

• Now on Tap – o anticipare a aplicațiilor și informațiilor de care uti-lizatorul are nevoie cu o simplă apăsare

• O mai bună gestionare a bateriei • Pe r m i s i u n i p e nt r u ap l i c a ț i i

ș i s e c u r i t a t e s i m p l i f i c a t e 1

1 https://www.android.com/versions/marshmallow-6-0/

AMD a lansat primul său procesor ARM: Opteron A1100. Acesta va avea o versi-une cu patru core-uri care va consuma 25W și una cu opt core-uri care va con-suma 32W. Specificațiile sunt: Cortex A57 CPU cores, 1 MB cache L2 și 8MB cache L3 iar memoriile suportate sunt DDR3 și DDR4. Este un pas important pentru AMD care astfel intră pe piața serverelor ARM. 1

1 ht tp : / /w w w.amd.com/en-u s /produc t s / s e r ver /

opteron-a-series

Oculus Rift, versiunea comercială

Android 6.0 Marshmallow Primul procesor ARM de la AMD

A fost lansată versiunea 6 a limbajului Perl. Acesta aduce o serie de noi concepte precum: multimethods, coroutines, con-tinuations, usefull threading, junctions, roluri, hyperoperators, macros, garbage collections și multe altele. Costul pentru toate acest îmbunătățiri a limbajului este pierderea compatibilității cu versiunea anterioară.1

1 http://www.perl.com/pub/2006/01/12/what_is_perl_6.

html

În 14 Ianuarie 2006, John Resig a vorbit la evenimentul BarCampNYC despre un framework de JavaScript care se numea JQuery. A fost momentul lan-sării celui mai popular framework de JavaScript care a împlinit în ianuarie 2016 zece ani de existență. Totodată versiu-nea 3.0 a intrat în stagiul de beta. Printre principalele feature-uri ale acestei versi-uni menționăm: implementarea .data() urmează îndeaproape specificațiile HTML5 sau îmbunătățirea performanței pentru anumiți JQuery.1

1 h t t p : / / b l o g . j q u e r y . c o m / 2 0 1 6 / 0 1 / 1 4 /

ten-years-of-jquery-and-beyond/

Soluția propusă de NVidia pentru procesarea imaginilor de către mașinile autonome se numește Nvidia Drive PX 2. Aceasta folosește deep learning pentru a învăța și pentru a se adapta provocărilor deplasării autonome a mașinilor. Puterea dezvoltată de Drive PX 2 este echivalentă cu cea a 150 MacBook Pro și a fost recent lansat la CES 2016.1

1 h t t p : / / n v i d i a n e w s . n v i d i a . c o m / n e w s /

nvidia-boosts-iq-of-self-driving-cars-with-world-s-first-in-car-

artificial-intelligence-supercomputer

A fost lansat Perl 6 Jquery a împlinit 10 ani Nvidia Drive PX 2

noutăți

Page 18: Today Software Magazine N43/2015

18 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

Comunităţi și Evenimente

comunități

Lansarea numărului 43 al Today Software Magazine Ianuarie 27 (Cluj) - Ora 18:00Siemens Cluj Office strada Gării, nr 21, Cluj-Napoca.

Today Software MagazineComunitate construită în jurul revistei TSM. facebook.com/todaysoftmagfacebook.com/groups/todaysoftmag/meetup.com/todaysoftmagyoutube.com/todaysoftmag

Data înfiinţării: 06.02.2012 Nr. membri: 2977

StartupBlinkers NetworkingIanuarie 28 (București) - Ora 19:00Loc: TBDmeetup.com/Cluj-JS/events/227014061/

StartupBlinkStartupBlink este un ecosistem global interactiv privind startup-urile, cu zeci de mii de entități listate, inclusiv startup-uri, spații destinate coworking-ului și acceleratoare.www.startupblink.com

Data înfiinţării: 28.10.2015Nr. membri: 12711

Startup Europe Week - ClujFebruarie 2 (Cluj) - Ora 18:00Str. Gării nr. 21, 400267 Cluj-Napocafacebook.com/startupeuropeweek/; http://www.startupeuropeweek.eu

Startup Europe WeekComunitatea a fost creată cu scopul de a reuni toate regiunile europene printr-un program de startup.

Data înfiinţării: 01.07.2015Nr. membri: 1087

Ionic 2.0 and AngularJS 2.0Februarie 4 (Cluj) - Ora 18:30Strada Pitești, nr. 18, Cluj-Napoca. meetup.com/Cluj-JS/events/227014061/

Cluj.JSComunitatea dezvoltatorilor care doresc să se implice și să învețe totul despre JavaScript.

Data înfiinţării: 21.04.2015Nr. membri: 261

Bucharest Microservices UG ... BeginsFebruarie 8 (București) - Ora 19:00Strada Bucuresti Nord 10, Global City -clădirea O2, etajul 6, Voluntari 077190, Ilfov meetup.com/Bucharest-Microservices-U s e r - G r o u p / e v e n t s / 2 2 8 1 3 6 4 4 6 /

Bucharest μServices (Microservices) Comunitate destinată arhitecturii microserviciilor.

Data înfiinţării: 16.01.2016 Nr. membri: 89

Openstack Workloads with Windows Server 2016Februarie 10 (Iași) - Ora 19:00Loc : TBDmeetup.com/IS-DevOps-Meetup/events/228224839/

DevOpsComunitatea tuturor celor care doresc să devină specialiști în DevOps.

Data înfiinţării: 28.08.2015 Nr. membri: 83

February BucharestJS MeetupFebruarie 24 (București) - Ora 19:00Strada Nicolae Filipescu nr. 39-41, Bucurestifacebook.com/groups/1544555832466208/; http://www.meetup.com/BucharestJS/events/228209512/

BucharestJSComunitatea tuturor developer-ilor interesați de Javascript.

Data înfiinţării: 11.02.2015Nr. membri: 629

OpenStack January Meetup - Open for PresentersFebruarie 25 (Cluj) - Ora 18:30Maestro Business Center, etajul 4, 21 Decembrie 1989, 104, Cluj-Napoca m e e t u p. c o m / O p e n S t a ck R o m ani a /events/226052637/

OpenStackComunitate formată din utilizatorii OpenStack și developer-i.

Data înfiinţării: 31.08.2014 Nr. membri: 134

VOXXED Days BUCHARESTMartie 10 (București) - Ora 08:30Bulevardul Poligrafiei, nr 1, Bucureștivoxxeddays.com/bucharest/

VOXXED DaysComunitate formată din developeri

Data înfiinţării: 2015 Nr. membri: 1060

Page 19: Today Software Magazine N43/2015

19www.todaysoftmag.ro | nr. 43/ianuarie, 2016

TFS ca platformă de colaborare (I)

Potrivit Microsoft, acestea sunt câteva din caracteristicile majore, care sunt incluse în Team Foundation Server:

• Version control, pentru gestionarea codului sursă cât și a altor elemente care necesită versionare.

• Work item tracking, pentru a urmări efortul depus de echipă cât și cerințele venite din partea utilizatorilor. Pentru acest aspect există așa numitele work items („elemente de lucru”) user stories, requirements și task-uri.

• Project management functions (funcții de management de proiect), care permit planificarea și urmări-rea dezvoltării proiectului folosind Microsoft Excel și Microsoft Project.

• Team build, pentru a permite un proces comun pentru dezvoltarea și compilarea de produse software. Procesul poate fi configurat în funcție de cerințe și necesități, pentru diferite tipuri de build-uri, incluzând build-uri de tipul continuous integration, schedu-led builds, gated check-in, shelveset and rolling builds.

• Data collection and reporting (ser-vicii de colectare a datelor și raportare), care ajută la evaluarea stadiului de dez-voltare a unui proiect

• Team Web Portal, care oferă un

punct central de comunicare pentru echipe și care nu depinde de o instalație Visual Studio pe PC-ul utilizatorului.

• Te a m F o u n d a t i o n S h a r e d Services, care oferă o serie de servicii de infrastructură comune, care nu sunt vizibile pentru utilizatorii finali, dar care pot fi utilizate pentru a extinde funcționalitatea TFS.

TFS poate fi cel mai bine descris dacă ținem cont de cele două aspecte principale ce-l definesc. Pe de o parte, reducându-l la funcția primară pentru care am folosi TFS într-o organizație, putem spune că TFS este o platformă de colaborare ... sau, altfel spus, nu este decât o colecție de tool-uri care permit colaborarea la un proiect atât a membrilor echipei de dezvoltatori cât și de clienții și partenerii acestei echipe. Această colecție de tool-uri centralizate le permite să lucreze împreună mai efici-ent. Se pot împărtăși planurile de proiect și notebook-uri, evaluări intermediare, coduri sursă. Organizația se bazează pe o instalare „out of the box” de TFS sau pe consolidarea și îmbunătățirea elemente-lor ce însumează TFS-ul ca soluție ALM, prin modificarea sau adăugarea de noi elemente și scenarii de utilizare pentru a alătura noi funcționalități eficiente. Pe de altă parte, dincolo de ceea ce are de oferit

Team Foundation Server (presc. TFS) promite a fi o soluție „out of the box” pen-tru toată platforma de ALM din cadrul unei organizații ce poate fi utilizată atât pentru gestionarea proiectelor, cât și pentru a urmări work-flow-ul în echipe,

pentru a gestiona codul sursă și pentru a compila și testa software-ul. Puteți face acest lucru fie cu Team Foundation Server instalat pe un server propriu fie prin utilizarea Visual Studio Online în cloud.

Dorin [email protected] Service specialist@Siemens

programare

Page 20: Today Software Magazine N43/2015

20 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

TFS „out of the box”, se poate spune că TFS este o platformă de colaborare proiectată special pentru integrare și extensibilitate. Prin intermediul API-ului (Application Programming Interface) se poate adapta Team Foundation Server la nevoile organizațiie, proiectului și echipelor individuale prin adaptarea și atașarea de noi funcționalități. Extensiile pot îngloba schimbări simple pre-cum redenumirea unui câmp într-un work item, dar și pentru a integra un tool sau o funcționalitate complet nouă.

Extensibilitatea platformei TFSExtensibilitatea TFS este dată de structura sa multi-tier, pe

mai multe niveluri, precum și de diferite modele cu care un utilizator poate interacționa în scopul de a adapta sau adăuga noi funcționalități. Team Foundation poate fi adaptat nevoilor individuale ale echipei și a proiectului folosindu-se unul dintre următoarele modele puse la dispoziție de Microsoft:

1. Client object model (cum sugerează și numele, se aplică la computerele pe care se utilizează TFS respectiv interfața la această platformă, Microsoft Visual Studio), poate fi folosit în scopul de a influența comportamentul TF atunci când vine vorba de contro-lul versiunilor, work item tracking și a build-urilor.

2. Server object model (se aplică pe application tier), poate fi folosit în scopul de a integra instrumente suplimentare în Visual Studio, în crearea de rapoarte și chiar în crearea de evenimente ce pot declanșa anumite acțiuni, cum ar fi copierea unui build pe share-ul clientului după ce s-a schimbat build quality-ul unui build ce a fost compilat cu succes.

3. Build process object model, în scopul de a personaliza pro-cesul de compilare. Puteți personaliza șablonul procesului de construcție cât și activitățile pre- și post-implementare.

Fig1. TFS multi-tier environment

La Siemens, una dintre diviziile ce utilizează TFS a dezvoltat un tool care adaugă funcționalități adiționale pentru work item tracking. Printre funcționalitățile suplimentare care sunt dispo-nibile după instalarea acestui tool pot fi enumerate următoarele: câmpuri și tab-uri suplimentare, funcționalitatea de a reactualiza cache-ul structurii work item-urilor, verificarea permisiunii uti-lizatorilor fără a fi nevoie de a intra în interfața administrativă, pentru a crea template-uri pentru diversele work item-uri folo-site (fără a fi nevoie să se instaleze extensia oferită de Microsoft (Power Tools for Visual Studio) și posibilitatea de a se asocia și sincroniza work item-uri din diferite TFS Team Collections sau chiar servere de TFS.

Printre alte îmbunătățiri, care au fost aduse la instalarea

noastră de TFS în scopul de a facilita și de a spori scenariile de utilizare nu numai pentru dezvoltatorii noștri dar și pentru clienții noștri se numără un tool ce poate copia build-urile de pe droplocation pe share-ul clientului în urma unor acțiuni și evenimente predefinite, instrumente pentru export și importa-rea de build definitions, integrarea cu instrumente de traducere, integrare cu alte produse PLM cum ar fi Team Center, check-in policies, securitate sporită pentru version control prin folosirea de folder-e și branch-uri securizate pe bază de IP direct în source control și multe altele.

Ar trebui remarcat faptul că Microsoft are un site numit Visual Studio User Voice1 , care poate fi folosit pentru a trimite sugestii și idei la Microsoft pentru a îmbunătăți TFS si\sau Visual Studio. Nu toate sugestiile vor fi puse în aplicare, dar este bine de știut că se poate transmite ideile direct către Microsoft și că este posibil să se obțină o funcționalitate nouă, benefică tuturor utili-zatorilor de TFS fără a fi nevoie să înveți cum funcționează TFS și cum puteți utiliza TFS API în scopul de a dezvolta o extensie suplimentară.

Ca și în cazul tuturor platformelor de colaborare, există și unele neajunsuri care trebuie luate în considerare. Principalele mele nemulțumiri sunt legate de modul în care funcționează TFS, mai exact de faptul că este necesară o conexiune\comuni-care constantă și activă între PC-ul utilizatorului și serverul de TFS. Dacă, de exemplu, aveți o pană de curent sau ‚pica’ rețeaua timp de 1 oră, procesul de dezvoltare de aplicații este forțat să stagneze. Motivul este că TFS va marca toate fișierele ca read-only pe sistemul utilizatorului până când se realizează un check-out. Dacă nu puteți comunica cu server-ul, nu puteți face check-aut și

prin urmare nu le puteți edita. Dacă, pe de altă parte, le-ați dat check-out înainte și ați terminat de editat, nu puteți da check-in în timp ce conexiunea cu server-ul de TFS nu este realizată; în unele cazuri nu se poate da check-in chiar și după ce serverul este din nou disponibil, deoarece fișierul *.sln este marcat ca fiind offline și, uneori, nu reușește să se reconecteze la server în mod automat. În acest caz veți fi întâmpinați cu un mesaj asemănător:

This solution is offline. [Team Foundation Server: https://tfsURI:443/tfs/collection/project]The solution was offline during its previous session and will remain offline.

În trecut era necesar să intervenim în Windows registry sau să-I dăm rebind la fișierele *.csproj pentru a putea conti-

nua activitatea de dezvoltare, dar se pare că Microsoft a lucrat la remedierea acestei probleme din moment ce nu am mai întâlnit-o în ultima vreme.

TFS nu este „un sistem închis” așa cum s-ar crede, ci poate fi integrat și cu alte sisteme 3rd party pentru source control și issue tracking. Unele dintre funcționalitățile care sporesc extensibili-tatea și flexibilitatea TFS este capacitatea sa de a integra și de a lucra cu alte pachete software, dar fără a se limita în mod necesar doar la produsele Microsoft (cum ar fi Microsoft Project Server, SharePoint, Excel și Outlook), ci si de la alte companii si dezvol-tatori, spre exemplu ClearCase (IBM), GIT și Eclipse.

Noi funcționalități pot fi dobândite și prin instalarea suitei

1 https://visualstudio.uservoice.com

programareTFS ca platforma de colaborare - pentru dezvoltatori cât și non-dezvoltatori

Page 21: Today Software Magazine N43/2015

21www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

Microsoft Test Manager, un client de TFS separat, ce îți permite să faci testare software, dându-ți posibilitatea de a planifica și executa teste și de a administra atât mediile de testare fizice cât și cele virtuale.

Microsoft a introdus Team Foundation Server Express și VisualStudioOnline (cunoscut și sub numele de Team Foundation Service, o versiune de TFS în cloud). TFS Express este o soluție optimală pentru studenti, dezvoltatori independenți și echipe mici de până la cinci developer-i. Versiunea de TFS Express este gratuită și poate fi instalată pe PC-ul personal fără a fi necesară crearea unui server specializat. Dacă se consideră mai apoi că se dorește un upgrade la o versiune comercială de TFS, se poate rea-liza acest lucru cu ușurință și fără a pierde datele și istoria aferentă elementelor din version control. Dacă nu ești convins că TFS ar putea reprezenta o soluție viabilă pentru echipa ta și nu vrei să investesti bani într-un mediu de testare, Visual Studio Express sau varianta în cloud, VisualStudioOnline (de asemenea gratuită pentru studenți și echipe de până la 5 dezvoltatori) reprezintă un punct de pornire solid, fără a crește costurile.

Beneficiile lucrului cu TFS pentru nondezvoltatoriAsa cum sugerează titlul acestui articol, scopul nu este doar

acela de a prezenta funcționalitățile TFS doar pentru software developers, ci și de a descrie scenarii de utilizare a TFS-ului în care și echipe de nondezvoltatori ar putea beneficia de pe urma acestei platforme.

Desigur că Siemens, pe lângă alte domenii de activitate, se ocupă și de dezvoltarea de aplicații pentru produsele proprii – în acest scop folosește mai multe platforme, printer care și TFS… dar aceasta nu schimbă faptul că aceia care se ocupă de dezvoltare și testare nu sunt și utlizatori finali. Pe lângă aceștia mai există și alte echipe care sunt implicate mai mult sau mai puțin în proce-sele aferente unui proiect de dezvoltare. Există numeroase alte echipe ce interacționează frecvent atât cu dezvoltatorii cât și cu utilizatorii: printre aceștia se numără trainer-i, project manager-i, configuration manager-I și echipele de suport tehnic.

De ce s-ar gândi cineva să folosească funcționalitățile oferite de TFS și pentru echipe de non-dezvoltatori?

Răspunsul este simplu: Începând cu TFS 2015 Microsoft a introdus o schimbare majoră în sistemul de licențiere pen-tru Visual Studio online și TFS prin adăugarea licenței de tip Stakeholder. Această licență poate fi acordată în mod gratuit unui număr nelimitat de utilizatori; aceștia vor putea crea și edita ele-mentele de lucru, vedea dashboard-urile și Kanban board-urile.

Potrivit MS scopul acestei licențe este de a facilita comunica-rea în cadrul proiectului și de a permite întregii organizații de a participa activ la dezvoltarea proiectelor. Prin aceasta Microsoft pune bazele unui nou început si redirecționează accentul pe dez-voltarea scenariilor diverse de utilizare a TFS-ului.

Partea a doua a articolului va fi publicată în numărul 44 / februarie al Today Software Magazine

Corporate Technology Romania

Page 22: Today Software Magazine N43/2015

22 nr. 43/2016, www.todaysoftmag.ro

Marketing prin “fereastra” digitală.

O privire largă asupra lui 2016

Oare înspre aceasta se îndreaptă mar-ketingul? Am întrebat pe Google. O scurtă privire pe Google Trends indică un interes în scădere față de termenul ”marketing” pe web. În același timp, ”online marketing” apare primul în cele mai multe căutări legate de el, depășind chiar și pe ”market-ing jobs”. Iar vedetele în ascensiune sunt ”facebook marketing”, ”social media mar-keting” și ”google marketing”.

Chiar dacă nu sunt un fan al speciali-zării profunde, cred în puterea dezvoltării unui know-how solid într-un domeniu pentru a stimula în mod corect potențialul său, dacă este potrivit în acea situație. Deci, digital / online / social media sau orice altă specializare sau segment în marketing este în regulă, atâta timp cât face parte dintr-o abordare de marketing comprehensivă și originală. Nu este ”acel” marketing.

Marketingul nu ar trebui să fie con-dus nici de instrumente, nici orientat spre canal. El ar trebui să se concentreze mai

întâi pe client: să îți cunoști în mod intim clienții (problemele pe care le au, lucru-rile care îi interesează, obiceiurile lor), să îți modelezi marketingul în funcție de aceasta (mesaje, canale, sincronizare, etc.), să măsori și să cauți să aduci îmbunătățiri în mod constant.

Problema este că tocmai aceste aspecte au tendința de a fi ignorate sau uitate. Nu odată am văzut și am experimentat per-sonal – modalitatea cea mai grea de a învăța- produse care au fost dezvoltate neavând un segment clar de clienți sau o propunere de valoare clară, ceea ce ime-diat duce la ceva ce nu are nicio relevanță comercială. Și totuși, ei promovează o pagină de Facebook care contorizează like-urile de la prieteni și alți oameni des-pre care nu știm prea multe. Asemenea eforturi sunt precum aruncarea undiței în râu, sperând că niște pești vor mușca. S-ar putea (probabil) să fie mai puțin cos-tisitor, mai măsurabil s-ar putea chiar să și funcționeze, dar cu siguranță nu vă va

Începutul anului m-a găsit cufundată în niște probleme de marketing care m-au tot preocupat de ceva timp. Dintre acestea, marketingul digital se distinge drept cea mai bulversantă. În lumea marketingului de azi, cu tot ce cuprinde ea, de la cursuri,

joburi și strategii la agenții de marketing digital, raportul dintre marketingul digital și cel tradițional generează controverse și dezbateri intense.

Sorina [email protected] Marketing manager @Fortech

”Viața este privită cu mult mai mult succes printr-o singură fereastră, la urma urmei.” (F. Scott Fitzgerald, Marele Gatsby)

marketing

Page 23: Today Software Magazine N43/2015

23www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

aduce maximul pe care îl puteți obține acolo.

Drept o dovadă din viața reală, vă recomand această prezentare1 făcută de expertul în branding, Mark Ritson. El compară impactul celebrei reclame Oreo pe Twitter care a acaparat atenția în ediția 2013 a Super Bowl cu reclama Tv pentru Budwiser. Pretinsă a fi chiar cea mai bună reclamă de la Super Bowl, raza de acțiune a acesteia a fost calculată la doar 64.300, ceea ce ar explica generos aproximativ 0.02% din cota de piață a Oreo în Statele Unite. Bineînțeles, ceea ce Ritson ignoră este impactul generat de PR, care ar trebui adăugat la aceasta, dar, în cele din urmă, comparația per ansamblu este mai mult decât pertinentă.

Nu putem ignora adopția în creștere a dispozitivelor mobile, accesul îmbunătățit la Internet și transformările clienților aso-ciate acestor tendințe. Nu putem ignora nici valoarea extraordinară a tehnologiei în marketing, dezvoltată complet în Adobe Marketing Cloud, de exemplu.

La urma urmei, ”nimeni nu a deve-nit celebru prezicând că lucrurile vor rămâne aproape la fel”, pentru a-l cita pe Bob Hoffman2, Ad Contrarian. Dar anu-mite lucruri se schimbă într-un ritm mai rapid (ex. tehnologia), pe când cu altele avem numai iluzia schimbării (ex. schim-bările în noi, ca ființe umane). Genevieve Bell3, antropologul principal al Intel, argu-mentează că tehnologia răspunde naturii umane fără a o modifica. Acesta este un

1 https://www.youtube.com/watch?v=MCAEbirIByc&

feature=youtu.be&t=207

2 http://adcontrarian.blogspot.ro

3 https://vimeo.com/108354478

punct interesant de remarcat, deoarece ”reclamele bune fac apel la noi drept clienți”, în timp ce ”reclamele extraordinare fac apel la noi drept ființe umane”, după cum concluzionează același Bob Hoffman.

Există întotdeauna scenarii ale clienților care transcend o publicitate bine definită, o achiziție sau o interacțiune de consum, iar acestea sunt compuse din numeroase puncte de contact online și offline. Este rolul marketingului să con-ceapă experiența consumatorului cu produsul, serviciul sau marca, pe tot par-cursul acestor punte de contact.

Dacă Slack, o afacere B2B de Internet în totalitate a preluat mai multe orașe mari din Statele Unite, cu curcubee, pui de pisică, ponei și baloane în campania sa în aer liber ”Euphoria4” și tocmai a lansat pe piață reclama TV ”Animale5”, atunci online și toate lucrurile digitale s-ar putea să nu fie suficient pentru a câștiga o Parte din Minte, Inimă și Portofel.

Așadar, după cum prezice Ritson, să permitem lui 2016 să fie anul integrării. Și anul în care noi ne întoarcem la baza segmentării – stabilirea obiectivelor – poziționare, persoanele cumpărătoare, amestecul de marketing și restul strate-giei și tacticilor de marketing, tradiționale sau digitale. Haideți să le vedem drept ”buzzwords” (cuvinte la modă) care nu devin niciodată demodate, de când American Marketing Association a înce-put să le popularizeze în anii 1950.

Există imaginea de ansamblu la temelia 4 h t t p : / / w w w . a d w e e k . c o m / n e w s /

advertising-branding/slack-just-took-over-4-cities-its-first-big-

extremely-bubbly-ad-campaign-168349

5 https://www.youtube.com/watch?v=x6sSa5NpqUI

voastră? Faceți-vă timp pentru a vă întreba dacă ”fereastra” prin care priviți este cea mai potrivită pentru marketingul vostru, afacerea voastră, cariera voastră, sau pen-tru orice context în care s-ar putea să vă aflați.

„Deci, Nick, s-ar putea ca lumea să aibă nevoie de câțiva oameni echilibrați, aceia care sunt cei mai limitați dintre toți specialiștii. Și ei au, de asemenea, o singură fereastră, doar că fereastra lor este una cu … o priveliște mai amplă.” (F. Scott Fitzgerald, Marele Gatsby)

Young spiritMature organizationA shared vision

Join our journey!

www.fortech.ro

Page 24: Today Software Magazine N43/2015

24 nr. 43/2016, www.todaysoftmag.ro

Flexibilitate strategică în timpul

incertitudinii

Standarde fixeIncertitudinea este o prezență con-

stantă în lumea IT. Această incertitudine apare din mai multe surse: imaturitatea, complexitatea și natura imprevizibilă a tehnologiilor, gradul ridicat de inte-grare a tehnologiilor în cadrul și în afara organizațiilor, presiunea accelerată exerci-tată asupra domeniului IT pentru produse inovatoare și servicii orientate către o piață cu o atractivitate dificil de prognozat . În ciuda acestei realități, metodele de evalu-are tradiționale descurajează investițiile făcute sub semnul acestei incertitudini ținând cont doar de informațiile prezente la momentul evaluării.

În urma evaluării cu aceste metode, decidenții sunt puși în fața unor proiecții de venituri cu valori mici sau rate de actu-alizare mari, iar răspunsul lor la presiunea de a investi care vine din piață este să completeze lipsa de atractivitate a anali-zei NPV cu argumente calitative, cum ar fi importanța strategică sau prezența în

piață. De cele mai multe ori li se cere să ia o decizie de tipul totul-sau-nimic pe baza informațiilor curente, deși ei ar pre-fera să exercite o mai mare flexibilitate în procesul decizional pe măsură ce contex-tul evoluează. Un scenariu similar poate fi găsit de exemplu în jocul de poker: pre-supunând că suma obligatorie înainte ca mâna să înceapă este de 1 $, iar pariurile se fac cu valori intre 1 și 10 $, cât de exact poți prezice chiar înainte ca prima carte să fie anunțată, care e suma plasată la pariul final?

Gândirea tip „structură de opțiuni”Acest tip de gândire propune o struc-

tură al cărei scop este să poziționeze luarea deciziilor în ultimul moment responsabil cu maximul de informație. La fel ca și tehni-cile de tip Valoare-Actualizată-Neta(NPV) sau Flux-Monetar-Actualizat(DCF) acest tip de gândire își are originea în lumea financiară și se bazează pe teoria prețurilor opțiunilor și analiza de tip opțiuni real.

În ciuda volatilității economice și de business, a incertitudinii rezultatelor și a gra-dului mare de risc al investițiilor, este posibil să existe oare un potențial al acestei incertitudini care rămâne neexploatat? În aceste condiții se pune problema dacă

putem evalua acel potențial și justifica investiția, bazându-ne exclusiv pe metodele tradiționale de evaluare, care examinează doar informațiile deținute la momentul eva-luării (ex. Recuperarea investițiilor ROI, Valoare Actualizată Neta - NPV)?

programare

Paul Alexandru [email protected]

Project manager@ISDC

management

Page 25: Today Software Magazine N43/2015

25www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINEprogramare

În principiu, acest tip de evaluare com-plementează metodele oferind mijloacele necesare pentru a captura potențialul pozi-tiv pe care incertitudinea și flexibilitatea procesului decizional îl poate oferi.

Analiza de opțiuni reale este cu adevărat valoroasă atunci când există incertitudine ridicată referitoare la valoa-rea activelor vizate, managementul are un grad mare de flexibilitate în procesul de decizie de-a lungul proiectului și este dis-pus să plătească construcția și exercitarea unor opțiuni care să conțină riscul dat de incertitudine. Este o soluție la îndemână atunci când metodele de evaluare statice furnizează valori pozitive mici sau chiar ușor negative. Totuși, aplicarea acestei metode nu se justifică atunci când avem de-a face cu valori negative mari rezul-tate în urma evaluărilor tradiționale de tip NPV.

Prin definiție o opțiune de tip real reprezintă dreptul, nu obligația, de a între-prinde o acțiune (de cumpărare, vânzare, abandon, amânare) asupra unui activ nefinanciar, cu un cost predeterminat și până la o dată predeterminată. Costul opțiunii reprezintă prețul plătit pentru a achiziționa, crea și menține opțiunea în perioada supusă incertitudinii.

Valoarea unei opțiuni vine din flexi-bilitatea oferită în privința deciziei de a

exercita opțiunea la un moment ulterior în funcție de condițiile viitoare. Această fle-xibilitate înseamnă că deținătorii opțiunii pot beneficia de potențialele câștiguri ale investiției și în același timp să-și limi-teze pierderile la costul de achiziționare a opțiunii în caz că investiția nu devine rentabilă. Pentru că incertitudinea crește potențialul pozitiv al rezultatelor dar nu și pe cel negativ (limitat la zero), rezulta-tul este că o incertitudine mai mare crește valoarea pusă pe flexibilitate și implicit valoarea deținerii opțiunii.

Să presupunem că o firmă preia un proiect major de implementare a unui sis-tem de trading de ultimă generație. Firma alege să pornească în primă fază cu imple-mentarea unui prototip și apoi în funcție de rezultatul prototipului va decide dema-rarea proiectului pe scară largă. În acest caz putem asimila costul de implementare a prototipului cu costul de achiziționare a opțiunii pentru a demara întreg proiectul.

Managementul poate influența proce-sul de creare a valorii prin adoptarea unei strategii sistematice ce se concentrează pe a repoziționa componentele obligatorii în componente opționale.

Pentru o abordare optimă a modu-lui de gândire tip structură de opțiuni se recomandă:

• Recunoașterea oportunităților și structurarea lor ca opțiuni;

• Evaluarea valorii opțiunilor (valoare de achiziție, timp de expirare);

• Managementul proiectului, astfel încât opțiunile să poată fi onorate.

Tipuri de opțiuni:• Etapa – presupune împărțirea

proiectului în mai multe etape unde urmărirea fiecăreia este dependentă de reevaluarea costurilor și beneficiilor la momentul în care etapa precedentă este finalizată, permițând astfel selectarea celor cu potențial pozitiv;

• Abandon – odată cu evoluția pro-iectului și evidențierea costurilor și

beneficiilor, se poate decide pentru ter-minarea proiectului dacă beneficiile nu justifică costurile;

• Amânare – atunci când este posi-bilă întârzierea deciziei de a investi fără a pune în pericol potențialele beneficii;

• Creștere – dacă investiția inițială deschide noi oportunități pentru investiții ulterioare;

• Schimbare – referitor la creșterea/scăderea volumului de resurse alocate pentru proiect sau a capacităților siste-mului operațional rezultat din proiect;

• Trecere – de la un tip de tehnologie la altul.

Evaluarea opțiunilorCele mai frecvente modalități de cal-

cul a opțiunilor sunt bazate pe conceptul popularizat cu denumirea de Black-Scholes.

Pentru o explicație simplificată, să presupunem scenariul unei investiții în care avem opțiunea de a investi și pen-tru care opțiunea expiră în termen de 1 an. Considerând că posibilele rezultate ale investiției reprezentate în tabelul de mai jos sunt: zero (A), 26$(B), 100$(C) și multiplicând fiecare posibil rezultat cu pro-babilitatea ca el să fie obținut, vom obține valoarea fiecărei posibilități. Prin suma acestor valori ajungem la 33 ca valoare vii-toare a opțiunii (în termen de 1 an).

Presupunând o depunere de 100$ și

o dobândă bancară de 10%, care ne va

întoarce 110 $ la finalul fiecărui an, putem calcula ușor ce valoare trebuie să depunem în prezent la bancă pentru a rezulta 33$ peste un an. Astfel ajungem la concluzia că valoarea maximă curentă a opțiunii este de 30$, iar peste această valoare investiția are o rentabilitate mai mică decât un depozit bancar.

Trebuie remarcat că rezultatul evalu-ării unei opțiuni este la fel de bun ca și acuratețea dată de calculul probabilităților și presupune o atitudine neutră la risc, fără a face diferențierea între un câștig sigur (ex. titlu de stat sau dobândă bancară) și un câștig cu o doză de risc.

Managementul opțiunilor în proiecteDeși cuantificarea valorii fiecărei

Page 26: Today Software Magazine N43/2015

26 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

opțiuni din proiect este dezirabilă, valoarea adăugată dată de acest tip de abordare constă în procesul de gândire și management care ar trebui să aibă ca scop ca valoarea creată prin structura de opțiuni să poată fi extrasă. Astfel pentru opțiunea deținută la un anumit moment în timp (dar nu mai târziu de data de expirare) se va compara valoarea estimată pentru opțiunea de a merge mai departe cu costurile revizuite la data curentă și se va proceda mai departe dacă costurile sunt acoperite.

Deși în principiu diversele tipuri de opțiuni care pot fi obținute ca structură în proiect sunt egale ca valoare, în reali-tate unele sunt preferate în pofida altora. Opțiunile de creștere și schimbare sunt printre cele mai frecvente în firme, iar cea de abandon e printre cea mai puțin utilizată. O posibilă explicație poate fi faptul că managementul găsește opțiunile pozitive mai ușor de pus în practică și justificat decât cele negative.

În abordarea unor proiecte de tip risc mare – recompensă mare, se recomandă:

• Structurarea riscurilor sub formă de opțiuni;• Schimbarea percepției clientului din trebuie să fie în poate

fi, unde acel poate va fi reevaluat peste o perioadă de timp fixă și pe baza unui set concret de criterii;

• Identificarea factorilor care generează incertitudine și organizarea unei structuri dedicate de monitorizare;

• Construcția în etape care generează valoare proprie indi-ferent dacă se continuă sau nu cu etape ulterioare;

• Setarea de puncte de control explicite;• Nominalizarea unui responsabil pentru calitatea decizii-

lor și pentru a evita continuarea proiectului din simplă inerție.

AplicabilitateAnaliza de tip opțiuni reale nu este aplicabilă în contexte infle-

xibile în care scopul este fix, obligatoriu.În contexte unde nu se tolerează incertitudinea sau dacă

consecințele incertitudinii pot fi ignorate, metodele tradiționale de evaluare a proiectelor par să fie suficiente.

Proiectele strategice complexe, cu un grad de inovație ridicat și care tind să aibă un grad mare de incertitudine pe o perioadă lungă de timp, dau o valoare crescută acestui tip de gândire/analiză, de aceea se recomandă utilizarea lui ca instrument în managementul unor astfel de inițiative.

programaremanagementFlexibilitate strategică în timpul incertitudinii

Page 27: Today Software Magazine N43/2015

27www.todaysoftmag.ro | nr. 43/ianuarie, 2016

Începând de la simpla roată care a apărut odată cu necesitatea transportului de mate-riale mult prea grele pentru un om până la sistemul optic ce formează un binoclu, care facilitează vizualizarea de obiecte aflate la o distanță mult prea mare, astfel de mecanisme au ajutat la o evoluție rapidă a tuturor dome-niilor.

Încetul cu încetul soluția tehnică ce poate efectua procesări similare creierului uman a devenit o necesitate, odată cu această evoluție rapidă din majoritatea domeniilor. Capacitatea intelectuală a oamenilor nu mai făcea față ori era mult prea costisitoare pen-tru a putea fi folosită în mecanisme manuale. Astfel apariția calculatorului modern, ce reprezintă transpunerea într-un sistem mecanic a creierului uman, marchează înce-putul unei noi ere, unde procesări de înaltă performanță devin posibile.

Modul în care calculatorul interpretează datele se bazează pe o logică tradițională și anume logica binară. La un moment dat,

orice decizie luată de această unealtă creată de om se va rezuma la un răspuns 0 sau 1 sau, natural vorbind, adevărat sau fals. Până nu demult acest lucru mulțumea toate nevoile domeniilor ce foloseau puterea de procesare a calculatoarelor, însă expansiunea rapidă a nivelului calității și preciziei care se dorește în luarea de decizii a început să nu mai fie satisfăcută de acest mod tradițional de a pro-cesa datele.

Necesitatea folosirii unei logici care să fie mult apropiată de raționamentul creierului uman, a fost demult semnalată de profesorul Lotfi A. Zadeh (1965). Din păcate, precum marelui Einstein i-au fost respinse teoriile de mulți fizicieni ai momentului și acum aceste teorii reprezintă bazele fizicii moderne, așa și teoria profesorului Zadeh, intitulată Fuzzy Logic, a fost respinsă de majoritatea oamenilor de știință din acel moment; abia după mulți ani comunitatea științifică i-a înțeles adevărata putere. Acum teoria repre-zintă una din bazele Inteligenței Artificiale

Logica Fuzzy și mecanismele specifice.

O introducere teoretică

Proiectarea mecanismelor tehnice ce pot reproduce o funcționalitate a corpului uman a fost una dintre preocupările frecvente care l-a frământat pe om de-a lungul evoluției sale. Răspunsul la întrebarea “De ce?” este unul destul de evident, ce se poate

sumariza la următorul aspect: ușurarea ori îmbunătățirea activităților pe care le desfășoară omul.

programare

Bogdan Mursa [email protected] Software Developer @ Yardi

“As complexity rises, precise statements lose meaning and meaningful statements lose precision.” - Lotfi A. Zadeh

programare

Page 28: Today Software Magazine N43/2015

28 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

moderne și este folosită în sisteme fuzzy aflate în: automobile, mecanisme de securitate, aparate medicale, mecanisme decisio-nale (marketing, business etc.), aparate foto etc. .

Noi ca oameni folosim așa numita logică fuzzy zi de zi, fără să avem nici cea mai mică idee, pentru că mintea umană este con-struită natural să gândească într-o manieră fuzzy. Un exemplu simplu poate fi reprezentat de răspunsurile posibile la întrebarea “Cât de satisfăcut ești de Universitatea Babeș-Bolyai?”: “Destul de satisfăcut”, “Nu sunt satisfăcut”, “Foarte satisfăcut”, care sunt răspunsuri ce pot fi considerate ambigue sau fuzzy, folosind ter-menii prezentați deja. Pentru că raționamentul uman este făcut să lucreze așa, pentru noi oamenii este foarte simplu să interpretăm aceste tipuri de răspunsuri, folosindu-ne de experiența acumulată deja sau de diferite metrici. Însă când vine vorba de mașini con-trolate de un calculator ce folosește logica binară, acest lucru nu mai este posibil. Pentru că acestea înțeleg doar valori ca 0 și 1, sau răspunsuri ca “satisfăcut”, “nesatisfăcut”.

În termenii logicii fuzzy, aceste seturi de date ce pot fi inter-pretate de orice mașină într-un sistem binar se numesc crisp data.

Pentru a parcurge și câteva noțiuni mai practice, vom folosi un exemplu destul de interesant ca să vedem cum se vor comporta logica fuzzy și cea tradițională. În acest exemplu dorim să creăm conceptual un sistem de “self-driving car” de pe un automobil care să fie capabil să ia cele mai bune decizii în momentul în care o altă mașină se află la o anumită distanță de automobilul nostru.

Conform metodei tradiționale, sistemul nostru va putea lua doar două decizii: aproape și departe. Folosindu-ne de Figura 1. ne putem imagina distanța între mașini ca fiind împărțită în două jumătăți egale, fiecare având drept corespondent direct una din cele două decizii. În acest context, faptul că putem lua în consi-derare doar aceste două decizii trase în urma analizei distanței între mașini duce la măsuri direct proporționale. Voi formula aceste decizii sub forma unor reguli de forma “dacă-atunci” (dacă o condiție atunci o consecință).

Dacă mașina B este aproape atunci frânează. Dacă mașina B este departe atunci nu frâna.

Dacă presupunem că mașina noastră va avea mereu o viteză mai mare decât mașina B și ținem cont de regulile de mai sus, atunci de fiecare dată când distanța dintre mașini va fi undeva în intervalul semnalat ca aproape, sistemul self-driving va frâna brusc, indiferent de cât de aproape sunt mașinile. Odată ce distanța dintre mașini se va situa în intervalul departe, mașina noastră va reporni și își va continua drumul până când iarăși va fi oprită brusc, în momentul în care distanța va ajunge în intervalul aproape.

Abordarea pe care o propune logica fuzzy este una care spune că răspunsul este mereu undeva între 0 și 1 (inclusiv aces-tea). Deci reprezentarea distanței dintre cele două autovehicule va fi mai mult un gradient așa cum este afișat în Figura 2.

Astfel putem obține seturi de reguli de forma celor de mai sus, punând întrebări cât mai naturale:

Mașina B este aproape ? Răspuns: 0.2 (nu foarte aproape). Dacă mașina B este 0.2 de aproape atunci frânează 0.2 (nu

foarte tare). Răspuns: 0.8 (destul de aproape). Dacă mașina B este 0.8 de aproape atunci frânează 0.8 (destul

de tare).

Logica Fuzzy și mecanismele specifice. O introducere teoretică

programare

Page 29: Today Software Magazine N43/2015

29www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

Exemplul de mai sus oferă ca răspuns la întrebare un număr ce se află în intervalul [0,1]. Acest număr este de fapt un număr fuzzy ce are în calitate de corespondent un set fuzzy căruia îi poate fi asociat (în acest caz setul “nu foarte aproape”).

Într-un caz real, un mecanism de “self-driving car” ce ar implementa o logică fuzzy conform exemplului de mai sus, ar respecta comportamentul omenesc mult mai bine, mașina conducându-se cu adaptări ale vitezei în funcție de distanța între mașini, fără a pune frâne bruște.

Cu siguranță acest exemplu v-a făcut un pic curioși în legătură cu algoritmul propriu-zis ce este implementat într-un astfel de sistem fuzzy. Această implementare este una foarte natu-rală de asemenea, deși mai este presărată pe alocuri cu diferite noțiuni specifice; partea bună este că acestea sunt sugestive.

Un controler fuzzy sau un mecanism fuzzy nu este alt-ceva decât o mașină ce folosește logica fuzzy. Acest controler poate să fie un sistem hardware sau software, sau amândouă, scopul lui final fiind să aplice logica fuzzy în așa fel încât să interpreteze datele așa cum ar face-o un om, doar că mult mai rapid.

Flow-ul unui astfel de mecanism este reprezentat prin urmă-torii pași:

1. Primirea unui număr de măsurători oferite de un alt sistem (în exemplul de mai sus, ar fi un senzor care ar măsura distanța între cele două mașini).

E.g: 4 m, 5 m etc. 2. Să nu uităm că sistemul nostru poate procesa doar

seturi de date fuzzy. Deci datele primite în pasul anterior trebuie transformate din date crisp în date fuzzy. Aceste transformări se fac conform unor metrici stabilite de un expert în domeniul de aplicabilitate.

E.g: 4 m reprezintă o valoare de 0.3 de aproape. 3. Setul de date fuzzy rezultat este folosit ca input în

regulile fuzzy de tipul „dacă-atunci”, ce au drept rezultat (sau consecință) un alt set de date fuzzy.

E.g: Dacă mașina B este 0.3 m aproape atunci apasă frâna 0.3 (nu foarte tare)

4. În ultimul pas această consecință fuzzy trebuie tran-formată în date crisp pentru ca sistemele ce citesc output-ul din controler-ul fuzzy să poată lua măsuri.

E.g: 0.3 frână poate reprezenta o reducere de viteză de 30% față de viteză actuală.

Din păcate detaliile despre arhitectura propriu-zisă a unui

astfel de sistem ce folosește flow-ul de mai sus, s-ar încadra într-o altă discuție. Însă sper că aspectele teoretice prezentate de-a lungul articolului au fost destul de clare și au oferit o sumarizare completă a conceptului din spatele logicii fuzzy și a sistemelor ce o implementează.

Vă recomand să continuați să descoperiți aplicațiile practice ale acestor sisteme cefolosesc modul de gândire propus de profe-sorul Zadeh. Beneficiile aduse pot fi unele extraordinar de mari, și pot aduce un aport de calitate și precizie oricărui proiect pe care îl desfășurați.

programare

Page 30: Today Software Magazine N43/2015

30 nr. 43/2016, www.todaysoftmag.ro

Roku

RokuÎn caz că nu ați mai auzit de Roku până

acum, este o cutiuță mică, nu scumpă (de obicei sub 100 $), pe care o puteți conecta la televizorul vostru pentru a reda în flux videouri de pe diferite canale sau aplicații. Sarcina unui dezvoltator Roku este să pro-grameze un canal pe care utilizatorul să îl poată deschide și de pe care să poată reda în flux materiale video pe televizor. Astfel că, dacă cineva valorifică, să spunem, un canal Youtube, el sau ea va face o aplicație prin care utilizatorii pot căuta și viziona conținut Youtube pe al lor Roku.

Când începeți să programați, veți realiza rapid că Roku, de fapt, nu are un simulator despre care să vorbim – orice cod pe care îl scrieți și doriți să îl testați trebuie încărcat pe un dispozitiv Roku real și apoi rulat pe aparat pentru a face debugging-ul. Dacă ați avut o zi grea la muncă și mai trebuie să lucrați și acasă la ceva, pregătiți-vă să luați dispozitivul acasă cu voi și să îl conectați la un televi-zor de rezervă pe care să sperăm că îl aveți prin preajmă. Debugging-ul se face prin

plasarea comenzilor ”stop” de-a lungul codului pentru a stabili punctele de între-rupere, apoi crearea unei sesiuni telnet pe dispozitivul Roku și trecerea la comenzi text în terminal. Este dureros, dacă sunteți obișnuiți cu o interfață de devirusare GUI, dar în mod cert se poate face.

Unul din lucrurile și mai interesante este că, în loc să adopte un limbaj existent, așa cum Android a făcut cu Java, echipa Roku a decis să meargă pe contraintui-tiv și să facă mecanismul să funcționeze cu propriul său limbaj de codare patentat – Brightscript.

Acum, la o primă vedere, aceasta pare a fi greșeala tipică pe care o fac toți ingi-nerii antreprenori atunci când creează un nou produs – decât să utilizeze ceva ce există deja și s-a dovedit că funcționează, ei reinventează roata deoarece asta iubesc ei să facă. Între timp, acest fapt are tendința de a cauza tot felul de probleme minore. Și, credeți-mă, Brightscript are destule din acestea. De la omiterea observațiilor când efectuează operațiile logice la intro-ducerea unei multitudini de idiosincrasii,

Roku a erupt în acești ultimi câțiva ani. Începând ca un startup modest în 2002 și lăudându-se acum cu peste 10 milioane de utilizatori, Roku este cel mai mare jucător de pe piața dispozitivelor de streaming pentru home media, vânzând

37% din toate dispozitivele de streaming anul trecut. Cel mai apropiat competitor este Chromecast, cu 19%. Deci, chiar dacă acest startup a reușit să se strecoare printre goliați precum Apple sau Google pe piața home media, a făcut acest lucru cu destul de mult succes. Thomas Morris

[email protected] Roku & Python Software Developer@3Pillar Global

programare

Page 31: Today Software Magazine N43/2015

31www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

dezvoltarea unui limbaj de programare nou nouț este de fapt mult mai complexă decât pare la început.

Dar odată ce trecem peste tot oftatul exasperat și rotirea ochi-lor peste cap și peste ”of, tipic”-urile pe care le manifestăm cu toții atunci când o companie face încă un limbaj patentat, vom putea observa că există de fapt destule motive pentru care Roku a făcut asta. Pentru început, ei nu mai trebuie să se îngrijoreze în legătură cu apariția unei noi versiuni a limbajului și cu necesitatea de a-și face upgrade la biblioteci în mod constant pentru a ține pasul. Ei au controlul deplin și total asupra modului în care limbajul interacționează cu software-ul lor. Brightscript trăiește sau moare după placul Roku.

Lucrul cu Brightscript În ceea ce privește lucrul efectiv cu acest limbaj, una din

caracteristicile cele mai grozave ale Brightscript este dimensiunea sa. Acest limbaj este foarte mic. Întreaga bază a codului constă în numai aproximativ 90 de tipuri de clase. Aceasta înseamnă că dacă ești un Rokui-ist nou, este simplu să te deprinzi cu sforile și să poți pune laolaltă ceva cod ușor care funcționează mai mult sau mai puțin.

Cel mai interesant lucru este că Brightscript nu îți permite să îți formezi layout-ul pentru ecranele din aplicația ta. Da, chiar așa. Roku nu îți oferă control asupra locului unde să apară elementele de pe ecran sau cum să arate UI-ul tău. Alegi unul dintre cele 10 modele pe care Brightscript ți le oferă și îți treci informațiile pe el. De acolo, programul dispune și așază totul după cum știe, indiferent dacă ție îți place sau nu.

Într-un fel, există ceva eliberator în legătură cu asta. Scrierea unei aplicații devine super-ușoară, căci tot ce ai de făcut este să scrii ceva de genul:

poster = CreateObject(„roPosterScreen”)contents = [ { Title: „Show 1” Description: „The hottest thing on TV” } { Title: „Show 2” Description: „The next hottest thing on TV” }]poster.SetContentList(contents)poster.Show()

Și ai deja o pagină care arată decent, cu două elemente pe ea, gata să funcționeze. Tot ce ține de stil va fi realizat conform modelelor prestabilite ale ”roPosterScreen”.

În același timp, acesta este și unul dintre lucrurile cele mai rele ale Roku. Dacă ai clienți care pun întrebări de genul ”Este posi-bil să schimbăm acel mic…?” – obișnuiți-vă să spuneți ”Nu”. Și obișnuiți-vă să îl spuneți des, deoarece un lucru pe care Roku nu îl permite este personalizarea. De obicei, singurul aspect pe care Roku vă permite să îl schimbați este culoarea de fundal și câteva poziționări minore ale elementelor din bannerul din partea de sus a ecranului. În afară de acestea, nu mai puteți face nimic.

Orice altceva în plus pe lângă propria culoare de fundal nece-sită dezvoltarea unei interfețe utilizând clasa ”roImageCanvas”, unde trebuie să specificați fiecare căsuță, obiect text și coordonată a imaginii, lățime și înălțime. Apoi, dacă doriți să adăugați orice formă de animație, va trebui să redați totul manual. Nu mai este nevoie să spun, este nevoie de un efort sârguincios pentru a-ți construi propria interfață personalizată, iar aceasta nu este ceva ce să îți dorești cu adevărat să faci, decât dacă ai prea mult timp la dispoziție.

ConcluzieÎn ciuda acestor aspecte, ceea ce este promițător în legătură

cu Roku este că industria dispozitivelor de streaming a înflorit în ultima perioadă. Un studiu al Parks Associates arată că numărul locuințelor din US care posedă un dispozitiv de streaming a cres-cut cu 63% de anul trecut, de la 13% la 21%. Același raport mai prezice și faptul că companiile vor vinde până la 86 milioane de dispozitive de streaming în 2019. Și dat fiind faptul că Roku deține o mare parte din această industrie, există o mare posibilitate ca cererea de programatori Roku să cunoască o creștere în următorii doi ani.

Văzând cât de rapid a evoluat piața dispozitivelor de strea-ming, a învăța să programezi pentru vreunul devine din ce în ce mai viabil. Dacă poți tolera defectele platformei, popularitatea lui Roku face ca învățarea lui să fie o opțiune evidentă. Deși încă în faza incipientă, ascensiunea meteorică a Roku promite multe pe viitor.

www.3pillarglobal.com

3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world.

Our core competencies include:

ProductStrategy

ProductDevelopment

ProductSupport

Our offerings are business focused, they drive real, tangible value.

Page 32: Today Software Magazine N43/2015

32 nr. 43/2016, www.todaysoftmag.ro

Pentru început, vom detalia semnificațiile acronimului REST, precum și constrânge-rile arhitecturale pe care acesta le impune asupra sistemului.

Ce este REST?Representational State Transfer este un

stil de arhitectură de aplicație care, în loc să impună decizii asupra tehnologiei, pre-feră să definească un set de constrângeri la care sistemul să adere. În felul acesta, detaliile de implementare se pot schimba ulterior, dar cu condiția să se păstreze avantajele care decurg din abordarea RESTful.

Concepte REST cheieO resursă reprezintă orice informație

care poate fi denumită. De obicei, acestea sunt concepte din domeniul aplicației, indiferent că se referă la concepte con-crete (ex: persoane) sau la unele abstracte (ex: fișiere). Un bun punct de pornire în “vizualizarea” acestora pentru cei familiarizați cu OOP este să folosească o mapare unu-la-unu cu clasele ce compun modelul domeniului. Deoarece noi con-struim o aplicație de monitorizat datele despre vehicule, putem exemplifica două

concepte: vehicul și asigurare. Dificultatea explicării termenului de

resursă provine din faptul că aspecte par-ticulare de business pot dicta deviații de la cel mai intuitiv mod de reprezentare, fără ca acest lucru să înlăture validitatea.

REST a fost descris în mod formal de Roy J. Fielding1 în teza sa de doctorat. El pleacă de la un sistem care nu are deli-mitări clare între componente, și aplică incremental ** cinci constrângeri obliga-torii și una opțională** asupra elementelor care compun arhitectura:

1. client-server: separarea aspecte-lor interfeței utilizator de stocarea datelor;

2. fără stare: păstrarea detaliilor despre sesiune strict la client, eliberând astfel serverul de povara managementu-lui sesiunilor, pentru a aduce scalabilitate, siguranță, și vizibilitate; Dezavantajul este că fiecare cerere va trebui să conțină suficiente informații încât să poată fi pro-cesată corect.

3. cache: datele care compun un răspuns trebuie să fie etichetate ca putând

1 http://www.ics.uci.edu/~fielding/pubs/dissertation/

top.htm

De la Zero la RESTful în patru pași.

Design de API

Acest articol este partea a doua dintr-o serie în care arătăm cum se pregătește, planifică și implementează un API RESTful. După ce am pus bazele în prima parte, de data aceasta vom expune modul cum se face designul unui API, pre-

cum și sunt aspectele la care trebuie să fim atenți.

Georgiana Gligor [email protected] Owner@Tekkie Consulting

testareprogramare

Page 33: Today Software Magazine N43/2015

33www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINEtestare

sau neputând fi adăugate în memoria cache.4. interfață uniformă între componente, așa cum e definită

de următoarele constrângeri secundare: identificarea resurselor, manipularea resurselor prin intermediul reprezentărilor aces-tora, mesaje auto-descriptive; și hypermedia ca motor al stării aplicației (aka HATEOAS).

5. sistem stratificat: componenta poate să “vadă” și să interacționeze doar cu straturile din imediata sa apropiere; spre exemplu, clienții nu pot presupune că interacționează direct cu sursa de date, deoarece pot comunica cu un nivel de cache.

6. [opțional] cod-la-cerere: funcționalitatea clientului poate fi extinsă prin descărcarea și execuția de cod extern; aceasta înseamnă că nu este necesar să se pornească execuția în client atunci când tot codul este disponibil, deoarece el poate fi obținut ulterior la cerere; imaginați-vă cum este adăugată funcționalitatea prin injectarea de cod Javascript în browser.

Reprezentarea este o parte a stării resursei care este trans-ferată între client și server. Se referă de obicei la starea curentă a resursei, dar poate indica și starea dorită, ne putem gândi la acest lucru ca la un dry-run atunci când se face cererea.

Deși nu constituie o constrângere în sine, mecanismele de comunicare oferite de HTTP sunt alegerea celor mai mulți dez-voltatori care implementează REST. Și noi vom folosi HTTP în acest proiect, iar verbele sale ne vor ajuta să definim operațiile care se efectuează asupra resurselor noastre. În cele ce urmează, vom folosi paradigma puternică a calendarului pentru a ilustra ușor diferența dintre resursă și reprezentarea acesteia, prin studi-erea reprezentării .ics în prima fază:

GET /calendar/123sample Host example.dev Accept: text/calendar

ar putea returna ceva similar cu:

BEGIN:VCALENDAR VERSION:2.0 PRODID:-//Tekkie Consulting//123sample//EN CALSCALE:GREGORIAN BEGIN:VTIMEZONE TZID:Europe/Bucharest END:VTIMEZONE BEGIN:VEVENT UID:[email protected] DTSTART;TZID=Z:20150311T123456 DTEND;TZID=Z:20150311T125959 END:VEVENT END:VCALENDAR

Dacă vom cere o reprezentare JSON a aceleași resurse

GET /calendar/123sample Host example.dev Accept: application/json

ea ar putea arăta ca în exemplul de mai jos:{ „version”: „2.0”, „creator”: {„company”: „Tekkie Consulting”, „prod-uct”: „123sample”}, „type”: „Gregorian”, „language”: „English”, „timezone”: { „id”: „Europe/Bucharest” }, „events”: [{ „id”: „[email protected]”, „start”: „2015-03-11T12:34:56.000Z”, „end”: „2015-03-11T12:59:59.000Z” }] }

În continuarea acestei serii de articole vom întrebuința JSON ca reprezentare implicită a resurselor noastre.

BDD în PHPPentru a specifica felul în care se comportă API-ul nostru,

ne dorim să folosim Behaviour Driven Development. În această secțiune vom introduce câteva concepte și instrumente care să ne ajute. Această pregătire ne va fi de mare folos atunci când vom scrie cerințele în forma scenariilor de utilizare.

Sunt două cuvinte cheie care apar de fiecare dată în discuțiile despre BDD în PHP. Cel mai popular este fără îndoială Behat2, care folosește Gherkin3 pentru specificarea cerințelor în lim-baj apropiat de cel business. Celălalt este Codeception4, care întrebuințează cod PHP ușor de citit pentru a obține același lucru, și care oferă în plus instrumente pentru a facilita scrierea tuturor testelor în același mod (atât cele de acceptanță, funcționale, cât și testele unitare).

În trecut am folosit Behat destul de mult la proiectele mele Symfony, așa că în mod natural am încercat să merg pe calea cea mai ușoară și să il instalez folosind $ composer install behat/behat. Am observat conflicte de pachete deoarece Behat dorea să folosească symfony/event-dispatcher ~2.1 iar eu aveam deja instalat 3.0.1. Așa că, în loc să încerc să rezolv problema prin impunerea unor cerințe mai stricte asupra pachetelor, am decis că e momentul potrivit să încerc Codeception, mai ales că am primit feedback extrem de călduros de la cei care îl folosesc deja în munca lor de zi cu zi. Am lăsat în urmă frumoasele fișiere Gherkin numai bune pentru oamenii de business, am revenit la 100% PHP!

Așadar, am instalat folosind metoda Composer care a funcționat perfect din prima încercare: $ composer install codeception/codeception

apoi am rulat comanda de bootstrap

$ vendor/bin/codecept bootstrap

Se observă un folder numit /tests/ în rădăcina proiectului, care a fost populat cu tot felul de bunătățuri.

Deoarece suntem în mediu de dezvoltare, pornim aplicația local folosind serverul PHP built-in:

2 http://docs.behat.org/en/v2.5/

3 http://docs.behat.org/en/v2.5/guides/1.gherkin.html

4 http://codeception.com

Page 34: Today Software Magazine N43/2015

34 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

$ php -S localhost:12345 -t web

și ne asigurăm că acest URL este configurat corect în fișierul tests/acceptance.suite.yml.

În continuare, vom genera un test de acceptanță simplu, rulând comanda: $ vendor/bin/codecept generate:cept acceptance Wel-come

Fișierul tests/acceptance/WelcomeCept.php nou creat va conține un test simplu, menit doar să verifice ruta de status:

$I = new AcceptanceTester($scenario); $I->wantTo(‘check the status route’); $I->amOnPage(‘/’); $I->see(‘Up and running.’);

Iar rezultatele sunt într-adevăr cele așteptate: $ vendor/bin/codecept runCodeception PHP Testing Framework v2.1.5Powered by PHPUnit 4.8.21 by Sebastian Bergmann and contributors.

Acceptance Tests (1) -----------------------------Check the status route (WelcomeCept) Ok

------------------------------------------Functional Tests (0) ---------------------------------------------------------------------

Unit Tests (0) ---------------------------------------------------------------------------

Time: 214 ms, Memory: 11.25Mb

OK (1 test, 1 assertion)

Testele de acceptanță Codeception sunt de regulă mai lente decât cele funcționale, deoarece este nevoie de un server web pentru a rula testele. Din fericire, există teste funcționale, care ne vor fi de mare folos în descrierea funcționalității API-ului, așa că le vom folosi pe acelea. Mai întâi activăm modulul Silex, adău-gându-l în tests/functional.suite.yml:

class_name: FunctionalTester modules: enabled: - Silex: app: ‘app/bootstrap.php’ - \Helper\Functional

Cum facem design de API?Așa cum am văzut în secțiunea introductivă REST, un concept

cheie în acest stil arhitectural sunt resursele, toate celelalte lucruri gravitând în jurul lor. De aceea, recomand să trecem prin lista conceptelor domeniului mai întâi, pentru a identifica resursele noastre:

• vehicul - conceptul principal, care descrie resursa princi-pală a aplicației noastre;

• taxa de drum - are o dată de început și una de sfârșit a validității și este asociată unui vehicul;

• asigurare - un concept distinct, similar ca proprietăți cu taxa de drum;

• verificare tehnică - nu poate exista fără a fi atașată unui vehicul; are o dată de început și una de sfârșit a validității.

Acum că am clarificat care sunt resursele aplicației noastre, ce operații putem defini pe fiecare? Cu siguranță, ne dorim să putem crea, modifica și obține date despre vehicule. Apoi avem nevoie să adăugăm și obținem detalii despre taxa de drum, verificările periodice, precum și despre asigurare.

Toate operațiile de mai sus arată foarte asemănător cu cele CRUD (o parte din ele lipsesc din motive care țin de domeniu). Așadar, definim lista completă de operații CRUD pe o resursă de tip vehicul:

• citirea informațiilor despre colecția de vehicule :• GET /vehicles;• Dacă nu există elemente, vom primi status 200 OK și

conținut [] .• Dacă există elemente în storage vom primi status 200

OK și conținutul tuturor, ca de exemplu:

[{ „name”: „family car”, „make”: „Mazda”, „mod-el”: „3”, „registration”: „AB10TKK”, „VIN”: „JMZ-BLA2F701213123”, „engine”: „1999”, „emissions”: „175”, „registered”: „2010-10-01T12:23:45Z” }] .

• Dacă serverul a întâmpinat probleme la servirea requ-est-ului, o eroare 500 Internal Server Error va fi expusă. Aceasta este eroarea finală (“catch-all”) care se emite în cazul în care “serverul e de vină” și nu poate fi oferită nici o opțiune de recovery pentru client. Acest tip de eroare este aplicabilă tuturor operațiilor de mai jos, așadar nu o vom repeta.

• Creare vehicul nou :

POST /vehicles/ ;

programareDe la Zero la RESTful în patru pași. Design de API

Page 35: Today Software Magazine N43/2015

35www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

• Conținutul request-ului va avea toate informațiile nece-sare despre mașină, spre exemplu

{ „name”: „family car”, „make”: „Mazda”, „mod-el”: „3”, „registration”: „AB10TKK”, „VIN”: „JMZ-BLA2F701213123”, „engine”: „1999”, „emissions”: „175”, „registered”: „2010-10-01T12:23:45Z” }.

• La crearea cu succes a resursei, ne așteptăm la un sta-tus 200 OK (unii recomandă folosirea 201 Created), iar conținutul va avea aceleași date ca și request-ul, plus ID-ul pe care l-a primit resursa în backend.

• Dacă a fost o problemă cu request-ul pe care clientul o poate rezolva (să zicem că VIN este obligatoriu și el nu a fost transmis de către client) semnalăm acest lucru prin emiterea unui cod de status 400 Bad Request și a conținutului care descrie problema: { „VIN”: „mandatory” }.

• Citire informații despre un vehicul anume :

GET /vehicles/{id};

• Dacă vehiculul cu ID-ul dat există, ne așteptăm la un status 200 OK și la un conținut care să îl descrie.

• Dacă nu există date despre un vehicul cu acel ID, se va emite statusul 404 Not Found și corpul răspunsului va fi gol.

• Editare :

PUT /vehicles/{id};

• Dacă vehiculul cu ID-ul dat există, ne așteptăm la un status 200 OK și la un conținut care să îl descrie.

• Dacă a fost o problemă cu request-ul pe care clientul o poate rezolva, semnalăm acest aspect prin emiterea codului 400 Bad Request și a unui conținut care să descrie problema:

{ „VIN”: „mandatory” }.

• Ștergere:

DELETE /vehicles/{id};

• Dacă vehiculul cu ID-ul dat există, acesta va fi eliminat din sistem și un cod 200 OK cu conținut gol va fi returnat.

• Dacă nu există date despre un vehicul cu acel ID, se va emite statusul 404 Not Found și corpul răspunsului va fi gol.

Formatul de date din exemplul de mai sus este [conform standardului ISO 8601][iso-8601], pentru a folosi un format care să conțină timezone. Facebook a fost nevoit să schimbe în 2012 API-ul de evenimente5 din cauza unor aspecte legate de timezone.

Nu vom detalia mai mult operațiile ce pot fi efectuate asupra celorlalte tipuri de resurse, deoarece ele sunt similar celor deta-liate mai sus.

Păstrarea consistenței API-uluiEste important să oferim un API consistent, nu doar pentru

noi, ci și pentru terții care îl consumă. E foarte ușor de explicat folosind distincția între public și publicat pe care o face Martin Fowler6. O dată ce un lucru este publicat, efectuarea de modificări asupra sa necesită un proces complex de analiză a funcționalității existente, oferirea celei noi la alt URI, lucruri care iau mai mult timp și implică efort suplimentar față de o modificare de cod obișnuită.

Un aspect important care trebuie avut în vedere încă de la început este versionarea API-ului. Unii designeri de API preferă

5 https://developers.facebook.com/docs/apps/migrations/completed-changes#jul_2012

6 http://martinfowler.com/ieeeSoftware/published.pdf

să folosească versiunea în URL-ul de bază, ca GitHub7 care întrebuințează numărul versiunii, sau ca Twilio8 care folosește data lansării https://api.twilio.com/2010-04-01 ca punct de pornire. WePay au și ei timestampul lansării în URL9 pentru a diferenția versiunile între ele. Aproape toată lumea a ales ver-sionarea într-un fel sau altul, puteți începe cu/v1/. Cel mai mare avantaj al acestei abordări este posibilitatea de a avea un API foarte diferit în următoarea versiune. Cu toate acestea, e important să vă întrebați dacă API-ul în sine e cel care va suferi modificări, sau resursele sau reprezentările acestora. Strategiile de modificare a structurii sau operațiilor unei resurse non-versionate sunt puțin mai complexe, de obicei se oferă noile date la un URI diferit, și se marchează ca deprecated cel existent. Așa cum arată și Stefan Tilkov10, REST este mult mai mult decât unele șabloane URI și verbele din HTTP. Alegerea strategiei optime este foarte dependentă de problema care trebuie rezolvată, și cu toții am auzit exemple de sub- sau supra-inginerie a API-urilor.

Când ne construim URI-urile, trebuie să avem în vedere să nu amestecăm singularele și pluralurile. Așadar, nu vom expune simultan/vehicles/{id} și /tax/{id} în aceeași aplicație, vom alege să folosim taxes în cel de-al doilea caz. Se recomandă în general folosirea formei plural în detrimentul celei singulare.

Deoarece URI-urile identifică resurse, este considerată o bună practică folosirea în exclusivitatea a substantivelor în compunerea acestora și evitarea verbelor. Pentru a descrie acțiunile care se pot efectua asupra resursei, se folosesc verbele HTTP. Spre exemplu, /vehicles/create ar trebui să fie de fapt un POST către /vehicles.

Pentru mai multe exemple aplicate, recomand standar-dele Casei Albe care sunt foarte bine scrise11, ele conținând multe exemple concrete de ce anume este considerat “rău” și ce “bun”. Sunt indicii bune și în tutorialul REST API12, dar reco-mand prudență la navigarea prin acest site, deoarece nu toate informațiile de acolo aderă strict la principiile REST pe care le-am prezentat la începutul acestui articol.

Sfaturi chiar și mai detaliate privesc convețiile de numire și folosirea snake-camel case13, atât pentru URI-uri cât și pentru structuri JSON. Asigurați-vă că alegeți unul și îl utilizați peste tot.

Definirea comportamentului aplicațieiSă trecem la pregătirea comportamentului pentru resursele de

tip vehicul prin definirea unor teste funcționale pentru acestea. Vom folosi clase Cest14 deoarece ulterior ne vor ajuta la o aranjare mai facilă a testelor noastre. Cest-urile sunt clase simple care gru-pează funcționalitatea din Cept-uri într-o manieră OOP, și ne vor facilita gruparea testelor împreună.

Generăm primul nostru Cest folosind:

$ vendor/bin/codecept generate:cest functional Vehicles

Test was created in /Users/g/Sites/learn/silex-tuto-rial/tests/functional/VehiclesCept.php

7 https://developer.github.com/v3/

8 https://www.twilio.com/docs/api/rest

9 https://www.wepay.com/developer/version

10 http://www.infoq.com/presentations/rest-misconceptions

11 https://github.com/WhiteHouse/api-standards

12 http://www.restapitutorial.com/lessons/restquicktips.html

13 http://blog.octo.com/en/design-a-rest-api/#case

14 http://codeception.com/docs/07-AdvancedUsage#.Vp5DcTYoXVo

Page 36: Today Software Magazine N43/2015

36 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

Apoi definim cum va arăta o resursă de tip vehicul. Spunem practic că “la execuția unei cereri POST către /vehicles care primește un nume pentru noul item, îl vom crea și returna întreaga înregistrare, inclusiv IDul acesteia”. Pe baza acestui ID, vom efectua ulterior operații de modificare, la adresa /vehicles/ID.<?php class VehiclesCest { public function createItem(FunctionalTester $I, $scenario) { $I->wantTo(‘create a new vehicle’); $I->sendPOST(‘/vehicles’, [ ‘name’ => ‘Pansy’ ]); // we mark scenario as not implemented $scenario->incomplete(‘work in progress’); $I->seeResponseCodeIs(200); $I->seeResponseIsJson(); $I->seeResponseJsonMatchesXpath(‘//id’); $I->seeResponseJsonMatchesXpath(‘//name’); $I->seeResponseMatchesJsonType([ ‘id’ => ‘integer’, ‘name’ => ‘string’ ]); $I->seeResponseContainsJson([ ‘id’ => 123, ‘name’ => ‘Pansy’ ]); } }

Să observăm că, cel puțin pentru moment, marcăm scena-riul curent ca incomplet, pentru a preveni execuția aserțiilor noastre. Vom elimina acest lucru în partea următoare a tutori-alului nostru, atunci când vom trece la implementarea efectivă a funcționalității.

Mai multe detalii despre celelalte operații definite pentru vehicule, precum și aserțiile corespunzătoare, pot fi găsite pe GitHub15.

Rularea testelor funcționale indică faptul că avem câteva definite și că ele sunt încă incomplete. Iată cele mai importante elemente de la rularea testelor:$ vendor/bin/codecept run

15 https://github.com/tekkie/autolog-api

Functional Tests (4) ------------------------------Check the status route (StatusRouteCest::checkTheStatusRoute) Ok

Create a new vehicle (VehiclesCest::createItem) IncompleteRetrieve current vehicles (VehiclesCest::retrieveItems) Incomplete

Modify an existing item (VehiclesCest::updateItem) Incomplete-------------------------------------------------------------------------

Time: 372 ms, Memory: 12.00Mb

OK, but incomplete, skipped, or risky tests!Tests: 4, Assertions: 1, Incomplete: 3.

Definirea celorlalte cazuri de utilizare rămâne ca exercițiu pentru cititor.

ConcluziiAm aflat ce este stilul arhitectural REST, am învățat diferența

între resurse și reprezentările lor, am pregătit Codeception pentru a ne fi de folos la definirea cazurilor de utilizare, am învățat cum se face design de API din punct de vedere practic, și am văzut la ce trebuie să fim atenți în cadrul acestui proces. În articolul următor vom rafina cazurile de utilizare și vom trece la partea de implementare.16

16 https://en.wikipedia.org/wiki/ISO_8601

programareprogramareDe la Zero la RESTful în patru pași. Design de API

Page 37: Today Software Magazine N43/2015

37www.todaysoftmag.ro | nr. 43/ianuarie, 2016

La începutul unui proiect nou este întot-deauna greu să alegem uneltele care vor ușura munca fiecărui membru din echipă. Trebuie să fim atenți atunci când alegem aceste unelte, deoarece ele vor fi folosite până la finalul proiectului dar și în procesul de deployment. În acest articol am încercat să evidențiez operațiile care formează automa-tizarea frontend-ului. Acestea sunt: scrierea de css cu un framework preprocesat, minifi-carea și testarea css-ului cât și minificarea și testarea js-ului și , de asemenea, automatiza-rea acestora sub forma de procese <grunt> atât pentru mediul de dezvoltare local dar și pentru producție.

Pentru proiectul prototip inițial s-a folo-sit ca backend limbajul de programare PHP fără a se utiliza nici un alt framework, iar ca framework de frontend am ales AngularJS. Când vine vorba de alegerea unui limbaj de stilizare putem alege unul dintre LESS, SASS/SCSS sau Stylus. Acestea sunt lim-baje de stilizare preprocesate ceea ce au un avantaj fața de limbajul CSS pur. Avantajele principalele sunt posibilitatea de a avea vari-abile, moștenire, nesting și mixins. După ce am făcut alegerile dorite, provocarea este cum reușim să combinăm aceste unelte ast-fel încât să ne ușurăm în primul rând munca noastră, munca unui operator de dezvoltare, și să avem un timp de randare a paginii cât

mai mic. Avem la dispoziție : nodejs, ruby, dar

și managerul de pachete ce se bazează pe nodejs: npm. Ca o practică bună în utiliza-rea managerului de pachete se folosește un fișier package.json în directorul rădăcină al proiectului.

În acest fișier vom lista toate pache-tele de care avem nevoie cât și câteva din dependințele pentru mediu de lucru local. După crearea acestui fișier sau după modifi-carea acestuia, trebuie să rulam comanda: npm install

În urma comenzii se creează directorul node_modules, după care avem nevoie de npm – g intall grunt grunt-cli

Se va instala limbajul de programare

ruby și câteva din dependințele acestuia din-tre care : sass, sass-globing și compass.sudo apt-get install ruby-full sudo gem install sass com-pass sass-globbing

Frontend Mashup

Mulți dintre programatorii web au nevoie ca timpul de randare a unei pagini web să fie cât mai scurt. Cu aceasta problemă te confrunți în primul rând atunci când se aleg uneltele cu care se va lucra la un proiect nou.

programare programare

Raluca [email protected]

Full Stack Developer @Self-Employed

Page 38: Today Software Magazine N43/2015

38 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

Odată ce avem acestea instalate putem să începem să ne construim fișierul Gruntfile.js, fișier care, de asemenea, este creat pe același nivel ca și fișierul package.json. Avem nevoie de acest fișier deoa-rece de fiecare dată când comanda grunt este rulată va lua în considerare acest fișier.

Partea de configurare a comenzii se face prin fișierul de configurare cât și prin câteva dintre comenzile inițiale.

Următorul pas este de face load la task-urile inițiale de care depind task-urile customizate de către noi.

După ce s-a făcut load la task-urile inițiale, vom folosi task-ul compass pentru proiectul nostru. Dacă se va rula comanda grunt compass:dev vom vedea că în fișierul destinație scss vor fi concatenate toate fișierele sass folosite. Se va transforma apoi în format css cu format de afișare expan-dat. Pentru mediul de lucru în producție stilul este compact.

Pentru concatenarea fișierelor js am

folosit task-ul uglify. Pentru mediul de lucru local am ales opțiunea ca după concatenarea fișierelor rezultatul să fie expandat, iar pentru mediul de lucru în producție să fie minified.

Avem o problemă dacă dorim să schimbăm orice fișier sass sau js, prin modificări pe care le dorim <on the fly>. Pentru acestea am creat task-ul watch care va verifica orice fișier sass sau js după care le va transforma și minifica după caz. Acest task este util pentru mediul de lucru local.

Spre final, scopul este înregistrarea task-urile customizate pentru mediile de lucru diferite. În acestă ordine se poate observa și task-ul browserSync care se bazează pe task-ul watch astfel că orice modificare pe care o vom face se va vedea automat în pagina web nemaiavând nevoie de a face reload la pagină manual.

O diferență care se poate observa este că în mediul de lucru în producție am ales ca la final să rulez comanda pentru a adă-uga un hash la finalul fișierului și a evita astfel o problemă de cache. În același timp se poate face și o versionare.

Pentru testarea css-ului se poate folosi PhantomCSS pentru care am ales scrierea

de teste folosind CasperJS. Pentru testarea js-ului se poate folosi Karma pentru unit testing și Jasmine pentru behaviour testing.

„karma-chrome-launcher”: „^0.2.0”,„karma-jasmine”: „~0.1.5”,„karma-script-launcher”: „~0.1.0”,„karma-firefox-launcher”: „~0.1.3”

Pentru coding standards se poate folosi grunt.loadNpmTasks(‚grunt-contrib-jshint’); dar am preferat să folosesc un pre-commit hook pentru git.

Folosind o singură comandă putem să ne automatizăm munca într-un mediu local cât și într-un mediu de producție. În același timp ne folosim de principiile DRY, avem mai puține erori și putem să facem modificările mai ușor.

În concluzie, avantajul constă în fap-tul că nu vom mai adăuga fiecare fișier css sau js, ci în final, prin utilizarea grunt vom avea doar un fișier care trebuie adăugat în pagina HTML.

Bibliografie:[1]. http://conferences.oreil ly.com/fluent/fluent2014/public/schedule/detail/32532[2]. https://speakerdeck.com/addyosmani/automating-front-end-workflow[3]. www.gruntjs.com[4]. https://www.npmjs.com/[5]. http://gruntjs.com/plugins

programareFrontend Mashup

Page 39: Today Software Magazine N43/2015

39www.todaysoftmag.ro | nr. 43/ianuarie, 2016

programare

Pentru că cei conștiincioși chiar reușesc, venim în întâmpinarea voastră cu provo-cările care v-ar putea încetini pe termen mediu-lung în a vă atinge obiectivul super-lativ în business.

Statisticile anului 2015Criza talentului a fost resimțită mai întâi

în lumea HR-ului, apoi în cea a businessului.Oricât de inovativă, deschisă și performantă ar fi o companie, va fi în cele din urmă nevoie de alte și alte talente care să o susțină pe o curbă ascendentă. O medie globală publicată în 2015 relevă faptul că 38% dintre angajatori simt că nu găsesc oamenii potriviți compa-niei lor, procentaj neîntrecut din anul 20081 .

Cum stă România față de media glo-bală? Conform statisticilor, România se confruntă cu cea mai gravă criză a talentelor de pe continent, cu o medie de 61% dintre angajatori îngrijorați că nu reușesc să își completeze echipa cu joburi necesare busi-nessului, urmată de Grecia (59%) și Turcia,

1 Sursă: http://www.manpowergroup.com/wps/wcm/

connect/db23c560-08b6-485f-9bf6-f5f38a43c76a/2015_Talent_

Shortage_Survey_US-lo_res.pdf?MOD=AJPERES

Bulgaria, Ungaria. La capătul opus se află Irlanda ( 11%) dar și Olanda, Spania și Marea Britanie cu 14%.

Care sunt semnele acestei crize?Tot de la angajatori am aflat și cauzele

pentru care nu reușesc să angajeze oame-nii potriviți. În primul rând, nu sunt destui aplicanți care să se prezinte la interviu. Dacă totuși vin, situația rămâne în continuare îngrijorătoare deoarece fie nu au experiența profesională suficientă, fie competențe teh-nice sau soft slabe sau, în ultimă instanță, au pretenții salariale absolut neancorate în rea-litatea jobului și a firmei.

Consecințe pentru businessMerită să ne facem griji? Nu putem

decide decât dacă ne uităm și la consecințele acestei crize. Statistica făcută pe zona EMEA ( Europe, Middle East and Africa) ne arată procentaje în creștere față de anii trecuți, ceea ce înseamnă că managerii găsesc consecințele din ce în ce mai amenințătoare. Așadar:

• 55% dintre angajatori consideră că principalul efect negativ al crizei de talent

La fiecare început de an, ne propunem ( și cei conștiincioși, chiar reușesc) să facem schimbări radicale, fie în ceea ce ne privește, fie în mediul ce ne înconjoară, pentru a avea rezultate la superlativ - cele mai multe vânzări, cel mai bun program, cei mai

motivați angajați, cel mai mare profit etc.

În căutare de (potențial) talent

Mădălina Nastasa [email protected] Sales Development Representative@ Azimut Happy Employees

programare

Page 40: Today Software Magazine N43/2015

40 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

este inabilitatea de a-și mulțumi clienții.• 51% spun că productivitatea și com-

petitivitatea companiei lor are și va avea de asemena de suferit.

• inovație și creativitate scăzută (37%); • fluctuație mai ridicată a personalului

(36%). Vestea mai puțin rea este că mai avem

timp până în 2020 să atenuăm efectele negative ale crizei. Se preconizează că în 2020 criza talentului va ajunge la apogeu, astfel încât vor fi mai multi angajați care părăsesc piața muncii decât cei care intră. Acest fenomen va face angajații de pe piața muncii mult mai valoroși, iar retenția lor precum și recrutarea de noi talente vor trona în topul priorităților de business. În niciun caz nu putem risca să ne prindă nepregătiți.

Acum că suntem conștienți de criza ce ne pândește și ne amenință, ce putem face în această privință?

În mod clar, majoritatea companiilor mari deja au început să ia în considerare la modul serios această criză, conștientizând că poziția lor de pe piață este direct afectată.

Printre politicile de personal în curs de implementare, amintim2 3 :

• orar de lucru flexibil, pentru a asi-gura un echilibru personal – profesional

2 Sursă: http://hrtimesblog.com/2015/03/25/

if-you-build-it-will-they-come-overcoming-the-talent-crisis-in-

manufacturing/

3 Su r s ă : ht tp : / / w w w. b l o omb e rg . c om / bw /

stories/2008-09-19/the-global-talent-crisisbusinessweek-busi-

ness-news-stock-market-and-financial-advice

optim (axat pe obiective, nu pe ore de lucru).

• oportunități de dezvoltare în cadrul companiei:

• autonomie pe sarcini din ce în ce mai variate/complexe,

• pregătire pentru reactualizarea competențelor tehnice și a celor soft,

• pregătirea potențialilor lideri.

• facilitarea trecerii angajaților tineri cât mai rapid de la stadiul de acomodare la cel de productivitate:

• s a t i s f a c e r e a n e v o i i d e independență ( cu cât reușesc să intre mai repede în producție, cu atât mai repede se pot specializa și pot căpăta autonomie pe ceea ce fac);

• programe de învățare inițiatice, personalizate pe nevoile noilor-veniți

• management axat pe generațiile de pe piața muncii (e.g. Millennials devin majoritari pe piața muncii, cu o etică de muncă diferită față de baby boomers sau generația X).

• managementul performanței clar pentru toți angajații, corelat cu recom-pense și beneficii.

Iată, ce ne rezervă piața muncii – o criză a talentului care va transforma goana după angajați și efortul de a ne menține colegii în firmă în priorități. În România această criză deja lovește mediul de afaceri, cu 61% dintre angajatori considerând că le este dificil să găsească oameni potriviți.

Acum că știi, care va fi strategia ta de management al talentului?

educațieÎn căutare de (potențial) talent

Page 41: Today Software Magazine N43/2015

41www.todaysoftmag.ro | nr. 43/ianuarie, 2016

1. Noile cote de TVA Începand cu data de 1 ianuarie 2016 și

până la data de 31 decembrie 2016, cota stan-dard de TVA este de 20%, urmând ca din 1 ianuarie 2017 să devină 19%. Cota standard aplicabilă până la 31 decembrie 2015 a fost de 24%.

Cotele reduse rămân 9% respectiv 5% pentru anumite categorii de bunuri și servicii.

Tot ca element de noutate aplicabil de la 1 ianuarie 2016 este cota redusă de 9% la apă. Această modificare a fost introdusă prin OUG 50/2015.

Un caz foarte întâlnit în practică este cel în care în luna decembrie s-a emis o factură de avans pentru servicii (de exemplu servicii

tehnice IT) cu termen de finalizare 2016. Factura de avans a fost emisă cu TVA 24% . Cum se va storna avansul ?

Având în vedere că faptul generator al TVA intervine în 2016 când este valabilă noua cotă, se va storna vechea factură cu TVA 24% și se va emite noua factură pentru suma întreagă cu TVA 20%.

2. Noile cote de impozitare a microîntreprin-derilor

Cotele de impozitare pentru veniturile microîntreprinderilor, aplicabile de la 1 ianu-arie 2016 sunt:

a) 1% pentru microîntreprinderile care

Anul 2016 aduce importante noutăţi fiscale pentru antreprenori, indiferent de forma de organizare: SRL, PFA, etc.Principalele modificări sunt date de apariţia noului cod fiscal (Legea 227/2015) și a Ordinului 2634/2015 care aduce actualizări importante

formei documentelor financiar-contabile.Prezentăm mai jos o sinteză a principalelor modi-ficări cu impact în activitatea de zi cu zi a antreprenorilor:

10 noutăţi fiscale valabile din 2016 cu

impact pentru antreprenori

Delia Mircea [email protected] @ Contzilla.ro

contabilitate

Page 42: Today Software Magazine N43/2015

42 nr. 43/ianuarie 2016 | www.todaysoftmag.ro

au peste 2 salariaţi, inclusiv;b) 2% pentru microîntreprinderile care

au un salariat;c) 3%, pentru microîntreprinderile

care nu au salariaţi.

Îndeplinirea condiţiei privind numărul de salariaţi

Un salariat este persoana angajată cu contract individual de muncă cu normă întreagă, însă se acceptă și cazurile în care microîntreprinderile :

a) au persoane angajate cu contract individual de muncă cu timp parţial dacă fracţiunile de normă prevăzute în acestea, însumate, reprezintă echivalentul unei norme întregi – de exemplu : doi salariaţi încadraţi fiecare cu câte 4 ore/zi, sau 4 sala-riaţi cu câte 2 ore/zi sau alte variante care însumează 8 ore.

b) au încheiate contracte de adminis-trare sau mandat, potrivit legii, în cazul în care remuneraţia acestora este cel puţin la nivelul salariului de bază minim brut pe ţară garantat în plată.

Ca excepţie, microîntreprinderile înfi-inţate după 1 ianuarie 2016 beneficiază de facilităţi suplimentare în sensul că dacă au cel puţin un salariat și sunt constituite pe o durată mai mare de 48 de luni, iar acţi-onarii/asociaţii lor nu au deţinut titluri de participare la alte persoane juridice, cota de impozitare este 1% pentru primele 24 de luni de la data înregistrării persoa-nei juridice române. Cota de impozitare se aplică până la sfârșitul trimestrului în care se încheie perioada de 24 de luni. Angajarea trebuie efectuată în termen de 60 de zile de la data înregistrării persoanei juridice.

Începând cu 1 ianuarie 2016, pentru un angajat cu program de 8 ore/zi și cu salariul minim pe economie (1.050 lei), se plătesc următoarele taxe:

• contribuţii și impozit care se reţin de la angajat : 265 lei;

• contribuţii datorate de angajator:240 lei.

Salariul net aferent unui salariu brut de 1.050 este de : 785 lei

Am presupus ca salariatul nu are per-soane în întreţinere.

Începând cu 1 mai 2016 salariul minim brut pe economie se va majora la 1.250 lei.

3. Noul plafon al cifrei de afaceri aferente microîntreprinderilor

Tot din 2016 se modifică și plafonul cifrei de afaceri pentru care o entitate poate să se înregistreze ca microîntreprin-dere. Astfel, dacă în cursul unui an fiscal o microîntreprindere realizează venituri mai mari de 100.000 euro sau ponde-rea veniturilor realizate din consultanţă și management în veniturile totale este de peste 20% inclusiv, aceasta datorează impozit pe profit, începând cu trimestrul în care s-a depășit oricare dintre aceste limite. Până la 31 decembrie 2015 limita a fost de 65.000 euro.

Ce se întâmplă dacă nu mai sunt îndeplinite condiţiile de încadrare ca microîntreprindere?

Dacă în cursul unui an fiscal o micro-întreprindere realizează venituri mai mari de 100.000 euro sau ponderea veniturilor realizate din consultanţă și management în veniturile totale este de peste 20% inclu-siv, aceasta datorează impozit pe profit, începând cu trimestrul în care s-a depă-șit oricare dintre aceste limite. Până la 31 decembrie 2015 , în cazul în care se depă-șeau plafoanele recalcularea impozitului se efectua de la începutul anului respectiv, situaţie mult mai dezavantajoasă fiscal.

4.Impozitarea PFA-urilorCu siguranţă, anul 2016 nu va fi un an

favorabil fiscal pentru PFA-uri.Ce s-a schimbat începând cu 1 ianuarie

2016 ?• începând cu 1 ianuarie 2016 pentru

veniturile din activităţi independente se va plăti CAS indiferent dacă persoana

fizică are și venituri din salarii sau nu (până la această dată, dacă PFA-ul obţinea și venituri din salarii nu avea obligaţia plăţii CAS-ului);

• PFA poate opta între cota CAS de 10,5% (cota individuală) aplicabilă venitului net realizat sau 26.3% aceasta corespunzând unui stagiu de cotizare complet.

• modul de plată a CAS este următorul : în timpul anului PFA în sistem real are obligaţia de a efectua plăţi anticipate având ca bază de calcul lunară 35% din caștigul salarial mediu brut pe economie , urmând ca în anul fiscal următor, pe baza declaraţiei de venit realizat, orga-nele fiscale vor recalcula baza lunară de calcul al contribuţiei ca diferenţa între venitul brut realizat și cheltuielile efec-tuate în scopul desfășurării activităţii, exclusiv cheltuielile cu CAS.

• CASS se datorează în continuare în cota de 5.5% la o bază lunară calculată ca diferenţă dintre venitul brut și chel-tuielile deductibile, exclusiv cheltuielile cu CASS.

• nu sunt obligaţii de plată a celorlalte contribuţii: șomaj, fond de risc, concedii și indemnizaţii și garantare creanţe. Se poate contribui prin opţiune la șomaj și la concedii și indemnizaţii;

• în ce privește impozitul de 16% pe venit , acesta se datorează în continuare, neexistând nici o modificare faţă de anul precedent.

Există anumite limite minime şi maxime la CAS datorat de PFA

• Limita minimă a CAS este de 35% câștigul salarial mediu brut pe economie.

În 2016 acest salariu este 2.681 lei. Rezultă o contribuţie minimă de 0.35*2.681 lei *10.5% = 99 lei.

• Limita maximă a CAS este 5 salarii medii brute

Contribuţia maximă este astfel 10.5%* 2.681 lei * 5 = 1.408 lei

Din 2017 va interveni și o plafonare a

10 noutăţi fiscale valabile din 2016 cu impact pentru antreprenori

contabilitate

Page 43: Today Software Magazine N43/2015

43www.todaysoftmag.ro | nr. 43/ianuarie 2016

TODAY SOFTWARE MAGAZINE

bazei de calcul a CASS (sănătate) la de 5 ori câștigul salarial mediu brut.

5. Impozitul pe dividendeÎn anul 2016 impozitul pe dividende se

stabilește prin aplicarea unei cote de impo-zit de 5% asupra dividendului brut plătit unei persoane juridice române. În 2015 aceasta cotă a fost de 16% iar din 2017 pe lângă impozitul de 5% la dividende se va aplica și contribuţia la asigurări sociale de sănătate de 5.5%, astfel ajungându-se la o cota de impozitare de 10,5%.

Așadar, 2016 este o perioada favorabilă de ridicare a dividendelor aferente exerciţi-ilor financiare precedente.

Ce se întâmplă dacă nu există suficienţi bani în firma pentru a face plata dividendelor?

Chiar dacă în momentul în care se cunoaște profitul care se poate repartiza, se constată că nu există suficienţi bani în firmă pentru a efectua plăţile, este important de menţionat că acestea pot să se efectueze ulterior, pe măsură ce se acumulează resurse, în baza deciziei de repartizare a acestora.

Este de asemenea important faptul că impozitul pe dividende trebuie să fie reţi-nut în momentul plăţii și virat la buget până în data de 25 a lunii următoare celei în care se plătesc către asociaţi sau acţionari.

Dacă un asociat este şi angajat în firmă, ce taxe i se aplică în 2016 pentru dividendele retrase? Dar în 2017?

În 2016, un asociat care este și angajat în propria firmă sau în alta, nu va datora decât 5% impozit pe dividende.

În 2017, același asociat-angajat, va plăti pe lângă impozitul de 5% și CASS 5.5%.

6. Sponsorizări Sponsorizarea este actul juridic prin

care două persoane convin cu privire la transferul dreptului de proprietate asu-pra unor bunuri materiale sau mijloace financiare pentru susţinerea unor activi-tăţi fără scop lucrativ desfășurate de către una dintre părţi, denumită beneficiarul sponsorizării.

Poate fi beneficiari ai sponsorizării: persoane juridice fără scop lucrativ, care desfășoară în România sau urmează să desfășoare o activitate în domeniile: cul-tural, artistic, educativ, de învăţământ, știinţific – cercetare fundamentală și apli-cată, umanitar, religios, filantropic, sportiv, al protecţiei drepturilor omului, medico-sanitar, de asistenţă și servicii sociale, de protecţia mediului, social și comunitar, de reprezentare a asociaţiilor profesio-nale, precum și de întreţinere, restaurare, conservare și punere în valoare a monu-mentelor istorice, emisiuni ori programe ale organismelor de televiziune sau radio-difuziune, precum și cărţi ori publicaţii din domeniile definite anterior.

Din 2016 crește limita în care se pot acorda sponsorizări în cazul plătitorilor de impozit pe profit.

Modul de calcul pentru 2016 este minimul dintre :

1. valoarea calculată prin aplicarea cotei de 0,5% la cifra de afaceri;

2. valoarea reprezentând 20% din impozitul pe profit datorat.

Anterior, până la 31 decembrie 2015, criteriul de la punctul 1. era de 3 la mie din

cifra de afaceri.

7.Scutirea de impozit a profitului reinvestit Profitul investit în echipamente teh-

nologice, calculatoare electronice și echipamente periferice, mașini și aparate de casă, de control și de facturare, precum și în programe informatice, produse și/sau achiziţionate, inclusiv în baza contractelor de leasing financiar, și puse în funcţiune, folosite în scopul desfășurării activitătii economice, este scutit de impozit.

Activele corporale pentru care se aplică scutirea de impozit sunt cele prevăzute în subgrupa 2.1, respectiv în clasa 2.2.9 din Catalogul privind clasificarea și duratele normale de funcţionare a mijloacelor fixe (HG 2139/2004).

Noutatea pentru 2016 este cuprinderea grupei 2.2.9. în lista activelor pentru care se aplică scutirea.

Grupa 2.2.9. cuprinde „Calculatoare electronice și echipamente periferice. Mașini și aparate de casă, control și facturat”.

8. Diurna pentru administratoriDacă până la 31 decembrie 2015 în

codul fiscal nu era prevăzută posibilitatea acordării diurnei deductibile pentru admi-nistratori, începând cu 1 ianuarie 2016, se prevede că și aceștia pot beneficia de diurnă deductibilă.

O menţiune importantă introdusă în 2016 : plafonul zilnic neimpozabil se acordă numai dacă durata deplasării este mai mare de 12 ore, considerându-se fie-care 24 de ore câte o zi de deplasare în interesul desfășurării activităţii.

Nivelul diurnei deductibile este în

Page 44: Today Software Magazine N43/2015

44 nr. 43/ianuarie, 2016 | www.todaysoftmag.ro

prezent de 42.5 lei/zi (baza legala : Ordinul 60/2015).

9. Cheltuielile socialeCheltuielile sociale sunt acele cheltu-

ieli care, așa cum sugerează și denumirea, au un scop social cum ar fi : ajutoarele de înmormântare, ajutoarele pentru bolile grave și incurabile, ajutoarele pentru naștere, cheltuielile pentru funcţionarea corespunzătoare a unor unităţi aflate în administrarea contribuabililor, precum: creșe, grădiniţe, școli, muzee, biblioteci, cantine, baze sportive, cluburi, cămine de nefamiliști și altele asemenea, cheltuie-lile reprezentând: cadouri în bani sau în natură, inclusiv tichete cadou oferite salari-aţilor și copiilor minori ai acestora, servicii de sănătate acordate în cazul bolilor profe-sionale și al accidentelor de muncă până la internarea într-o unitate sanitară, tichete de creșă acordate de angajator în conformi-tate cu legislaţia în vigoare, contravaloarea serviciilor turistice și/sau de tratament, inclusiv transportul, acordate de angajator pentru salariaţii proprii și membrii lor de familie, precum și contribuţia la fondurile de intervenţie ale asociaţiilor profesionale ale minerilor sau alte cheltuieli cu caracter social efectuate în baza contractului colec-tiv de muncă sau a unui regulament intern.

Cheltuielile sociale vor avea începând cu 2016 o deductibilitate limitată la 5% din valoarea cheltuielilor cu salariile per-sonalului, faţă de 2% cât era până la 31 decembrie 2015.

În cheltuielile sociale se vor putea include din 2016 și tichetele cadou oferite salariaţilor și copiilor minori ai acestora cu ocazia Paștelui, zilei de 1 iunie, Crăciunului și a sărbătorilor similare ale altor culte religioase în limita a 150 de lei/persoană/eveniment . Cu alte cuvinte, tichetele acor-date în aceste situaţii nu se impozitează cu 16%.

10. Actualizarea formei documentelor financiar-contabile

Prin Ordinul 2634/2015 privind documentele financiar-contabile se aduc modificări importante formei și conţinutu-lui documentelor financiar-contabile. Mai jos sunt cele mai importante :

• eliminarea obligației de a aplica ștampila pe documentele financiar-con-tabile, ca urmare a abrogării prevederilor legale referitoare la obligația aplicării ștampilei de către persoanele și entitățile prevăzute la art. V alin. (1) și (2) din Ordonanța Guvernului nr. 17/2015 pri-vind reglementarea unor măsuri fiscal bugetare și modificarea și completarea unor acte normative (ex.: ordin de depla-sare, chitanță, decont pentru operațiuni în participație);

• eliminarea conținutului minimal obligatoriu din cadrul normelor de întocmire și utilizare a fiecărui formular;

• eliminarea obligativității întocmirii/emiterii unui anumit număr de exem-plare dintr-un document;

• eliminarea prevederilor referitoare la circuitul și locul de arhivare ale fiecărui document;

În concluzie, anul 2016 aduce modi-ficări pe toate planurile: atât fiscal cât și contabil, atât favorabile (scăderea impo-zitului pe dividende, reducerea cotei de impozitare a microîntreprinderilor) cât și nefavorabile (impozitarea suplimentară a PFA-urilor).

10 noutăţi fiscale valabile din 2016 cu impact pentru antreprenori

contabilitate

Page 45: Today Software Magazine N43/2015

45www.todaysoftmag.ro | nr. 43/ianuarie, 2016

Page 46: Today Software Magazine N43/2015

powered by

sponsori