today software magazine n42/2015

43
No. 36 • June 2015 • w ww.today softmag.ro • www.todaysoftmag .com MERRY CHRISTMAS T O D A Y SOFTWARE Nr. 42 • Decembrie 2015 • www.todaysoftmag.ro • www.todaysoftmag .com MAGAZINE Bț H T W I ă - ă șă ă   ă C IT D Q A ECMAS - ș ă M J D Z REST ș. Fț. Io  T :  from de  vice  to cloud Download from Windows Store Download from Windows Store Comunicare în  timp real cu a  ju  torul LeapMo  tion si SignalR

Upload: sergiucebotari

Post on 18-Feb-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 142

No 36 bull June 2015 bull wwwtodaysoftmagro bull wwwtodaysoftmagcom

M E R R Y C H R I S T M A S

T O D A Y

S O F T W A R E

Nr 42 bull Decembrie 2015 bull wwwtodaysoftmagro bull wwwtodaysoftmagcom

M A G A Z I N E

B983145983148983137983150ț983157983148 H983151983159 T983151 W983141983138 983090983088983089983093

I983149983152983151983162983145983156983141983148983141 983152983141 983139983148ă983140983145983154983145 -983148983137 983139983141 983155ă 983150983141 983137ș983156983141983152983156ă983149 983278983150 983090983088983089983094983103

983095 983149983145983156983157983154983145 983140983141983155983152983154983141 983149983157983150983139ă 983139983137983154983141 983155983157983150983156 983150983151983139983145983158983141 983152983141983150983156983154983157 983139983154983141983145983141983154983157983148 983156ă983157

C983148983157983146 IT D983137983161983155 983090983088983089983093

Q983157983137983148983145983156983161 A983155983155983157983154983137983150983139983141 983089983088983089

ECMAS983139983154983145983152983156 983094 - 983140983141 983139983141 ș983145 983139983157983149 983155ă 983278983148 983142983151983148983151983155983145983149

M983141983141983156 J983141983150983147983145983150983155

D983141 983148983137 Z983141983154983151 983148983137 REST983142983157983148 983278983150 983092 983152983137ș983145 F983157983150983140983137ț983145983137

Io T from de vice to cloud

Download from

Windows Store

Download from

Windows Store

Comunicare icircn timp real cu

a ju torul LeapMo tion si SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 242

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 342

6

C983148983157983146 IT D983137983161983155 2015O983158983145983140983145983157 Măţ983137983150

8

B983145983148983137983150ț983157983148 H983151983159 T983151 W983141983138 2015I983154983145983150983137 S983139983137983154983148983137983156

12I983150983156983141983154983137983139ț983145983157983150983141983137 O983149-C983151983149983152983157983156983141983154

C983151983149983157983150983145983139983137983154983141 983278983150 983156983145983149983152 983154983141983137983148 983139983157 983137983146983157983156983151983154983157983148L983141983137983152M983151983156983145983151983150 ș983145 S983145983143983150983137983148R

G983141983151983154983143983141 R983157983155 ș983145 D983137983150983145983141983148983137 F983137983156983145

16

I983151T 983140983141 983148983137 983140983141983158983145983139983141983148983137 983139983148983151983157983140

L983141983151983150983137983154983140 P983145983156983157

19ECMAS983139983154983145983152983156 6 ndash 983140983141 983139983141 ș983145 983139983157983149 983155ă 983278983148

983142983151983148983151983155983145983149 983278983150 983152983154983141983162983141983150983156A983140983154983145983137983150 U983148983145983139983145

23

Q983157983137983148983145983156983161 A983155983155983157983154983137983150983139983141 101V983137983155983145983148983141 S983141983148983141983143983141983137983150

22

M983141983141983156 J983141983150983147983145983150983155Ră983162983158983137983150 A983154983145983139983145983157983139

32

D983141 983148983137 983162983141983154983151 983148983137 REST983142983157983148 983278983150 983152983137983156983154983157 983152983137ș983145G983141983151983154983143983145983137983150983137 G983148983145983143983151983154

35I983149983152983151983162983145983156983141983148983141 983152983141 983139983148ă983140983145983154983145 -983148983137 983139983141 983155ă 983150983141 983137ș983156983141983152983156ă983149

983278983150 2016I983151983137983150983137 C983151983155983156983141983137

37

7 983149983145983156983157983154983145 983140983141983155983152983154983141 983149983157983150983139ă 983139983137983154983141 983155983157983150983156983150983151983139983145983158983141 983152983141983150983156983154983157 983139983154983141983145983141983154983157983148 983156ă983157E983139983144983145983152983137 S983156983141983141983148983139983137983155983141

39 P983154983151983158983151983139ă983154983145 983152983141983150983156983154983157983139983151983149983152983137983150983145983145 983278983150 2016A983150983137-M983137983154983145983137 T983154983145983142983137983150

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 442

4 nr 422015 wwwtodaysoftmagro

La final de an icircncheiem cu un mic bilanț al activității noastre din anul 2015Constatăm cu bucurie că popularitatea revistei este icircn creștere așa cum odovedesc evenimentele de lansare la care participă tot mai multă lume Numărul

accesărilor online a trecut de 12000 de sesiuni lunare De asemenea interesul e crescutși din partea programatorilor care trimit propuneri de articole Icircn ceea ce priveșteCluj I Days evenimentul organizat spre final de an și care icircncununează activitateadesășurată de-a lungul icircntregului an acesta a ost apreciat ca un succes Analizaeedbackului pe care ni l-a oerit publicul denotă acest apt dar icircn același timp și nevoia

optimizării unor aspecte ce țin de organizarea evenimentelor de acest tip Un primarticol din acest număr vizează tocmai ecoul pe care l-a avut acest eveniment icircn racircndulparticipanților Reeritor la desășurarea lansării acestui număr introducem un elementnou - nu mai avem răbdare pacircnă icircn 2016 - prin transmisia live1 a evenimentului delansare pe canalul nostru de Youube Icircn acest el veți putea să ne fiți alături chiar dacănu sunteți icircn Cluj și veți avea ocazia să adresați icircntrebări celor care prezintă ot cuocazia acestui număr deschidem și o nouă rubrică destinată noutăților din industriaI Planurile de viitor includ icircnființarea unor rubrici permanente care vor abordalimbaje și tehnologii sofware Java NE SAP ManagementAgile HR Mobile (iOSAndroid Windows Phone) amp Io StundențiUniversitare Big DataMachine learningArhitectură Securitate web amp design și estare Aceasta se va realiza prin crearea unorgrupuri de specialiști care vor putea colabora și realiza review-uri specifice Surpriza va

veni la ediția din 2016 a Cluj I Days atunci cacircnd plănuim să publicăm cacircteva cărți cuarticolele publicate icircn timpul anului icircn revistăRevenim la acest număr icircncepem cu două articole de Io Primul propune o nou-

tate icircn ceea ce privește interacțiunea cu un calculator Interactiunea Om-ComputerComunicare icircn timp real cu ajutorul LeapMotion SignalR iar cel de-al doilea prezintăriscurile la care suntem supuși atunci cacircnd intrăm icircn acest spațiu IoT rom device tocloud Continuăm cu noul standard pentru limbajul JavaScript ECMAScript 6 ndash de ce șicum să icircl olosim icircn prezent Din perspectiva quality assurance vorbim despre definireași implementarea unui proces de management al calității icircntr-un proiect de dezvoltaresofware icircn Quality Assurance 101 Un articol introductiv icircn Jekins Meet Jenkins sperămsă vă acă curioși icircn legătură cu acest limbaj de programare Inițiem o serie de articoleorientate spre domeniul web care icircn acest număr vor descrie realizarea practică a unormicroservicii precum icircn articolul De la Zero la RESTul icircn 4 pași Fundația Icircncheiem

cu noutățile fiscale pentru companii icircn Provocări pentru companii icircn 2016

Vă doresc o lectură plăcută

Ovidiu MăţanFondator al Today Sofware Magazine

1 httpswwwyoutubecomtodaysofmaglive

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

editorial

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 542

5wwwtodaysoftmagro | nr 42decembrie 2015

Lista autorilor

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearchEngineerCT RTC ELE ELD-RO Siemens

Vasile Selegeanvasileselegeanisdceu

QA Officer

ISDC

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHubBucharest

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

Redacţia oday Sofware Magazine

Fondator Editor in chie Ovidiu Mățan ovidiumatantodaysofmagcom

Graphic designer Dan Hădărău danhadarautodaysofmagcom

CopyrightCorector Emilia oma

emiliatomatodaysofmagcom

raducător Roxana Elena

roxanaelenatodaysofmagcom

Contabil Delia Mircea

deliamirceatodaysofmagcom

Programator junior Alexandru Dinișalexandrudinistodaysofmagcom

Marketing și tehnoredactorAna Maria Bivol

anamariabivoltodaysofmagcom

ipar realizat de Daisler Print House

Produs deoday Sofware Solutions SRL

str Plopilor nr 7577

Cluj-Napoca Cluj Romaniacontacttodaysofmagcom

wwwtodaysofmagrowwwacebookcomtodaysofmag

twittercomtodaysofmag

ISSN 2284 ndash 6352

Copyright oday Sofware Magazine

Reproducerea parțială sau totală a articolelordin revista oday Sofware Magazine

ără acordul redacției este strict interzisă

wwwtodaysofmagrowwwtodaysofmagcom

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 2: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 242

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 342

6

C983148983157983146 IT D983137983161983155 2015O983158983145983140983145983157 Măţ983137983150

8

B983145983148983137983150ț983157983148 H983151983159 T983151 W983141983138 2015I983154983145983150983137 S983139983137983154983148983137983156

12I983150983156983141983154983137983139ț983145983157983150983141983137 O983149-C983151983149983152983157983156983141983154

C983151983149983157983150983145983139983137983154983141 983278983150 983156983145983149983152 983154983141983137983148 983139983157 983137983146983157983156983151983154983157983148L983141983137983152M983151983156983145983151983150 ș983145 S983145983143983150983137983148R

G983141983151983154983143983141 R983157983155 ș983145 D983137983150983145983141983148983137 F983137983156983145

16

I983151T 983140983141 983148983137 983140983141983158983145983139983141983148983137 983139983148983151983157983140

L983141983151983150983137983154983140 P983145983156983157

19ECMAS983139983154983145983152983156 6 ndash 983140983141 983139983141 ș983145 983139983157983149 983155ă 983278983148

983142983151983148983151983155983145983149 983278983150 983152983154983141983162983141983150983156A983140983154983145983137983150 U983148983145983139983145

23

Q983157983137983148983145983156983161 A983155983155983157983154983137983150983139983141 101V983137983155983145983148983141 S983141983148983141983143983141983137983150

22

M983141983141983156 J983141983150983147983145983150983155Ră983162983158983137983150 A983154983145983139983145983157983139

32

D983141 983148983137 983162983141983154983151 983148983137 REST983142983157983148 983278983150 983152983137983156983154983157 983152983137ș983145G983141983151983154983143983145983137983150983137 G983148983145983143983151983154

35I983149983152983151983162983145983156983141983148983141 983152983141 983139983148ă983140983145983154983145 -983148983137 983139983141 983155ă 983150983141 983137ș983156983141983152983156ă983149

983278983150 2016I983151983137983150983137 C983151983155983156983141983137

37

7 983149983145983156983157983154983145 983140983141983155983152983154983141 983149983157983150983139ă 983139983137983154983141 983155983157983150983156983150983151983139983145983158983141 983152983141983150983156983154983157 983139983154983141983145983141983154983157983148 983156ă983157E983139983144983145983152983137 S983156983141983141983148983139983137983155983141

39 P983154983151983158983151983139ă983154983145 983152983141983150983156983154983157983139983151983149983152983137983150983145983145 983278983150 2016A983150983137-M983137983154983145983137 T983154983145983142983137983150

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 442

4 nr 422015 wwwtodaysoftmagro

La final de an icircncheiem cu un mic bilanț al activității noastre din anul 2015Constatăm cu bucurie că popularitatea revistei este icircn creștere așa cum odovedesc evenimentele de lansare la care participă tot mai multă lume Numărul

accesărilor online a trecut de 12000 de sesiuni lunare De asemenea interesul e crescutși din partea programatorilor care trimit propuneri de articole Icircn ceea ce priveșteCluj I Days evenimentul organizat spre final de an și care icircncununează activitateadesășurată de-a lungul icircntregului an acesta a ost apreciat ca un succes Analizaeedbackului pe care ni l-a oerit publicul denotă acest apt dar icircn același timp și nevoia

optimizării unor aspecte ce țin de organizarea evenimentelor de acest tip Un primarticol din acest număr vizează tocmai ecoul pe care l-a avut acest eveniment icircn racircndulparticipanților Reeritor la desășurarea lansării acestui număr introducem un elementnou - nu mai avem răbdare pacircnă icircn 2016 - prin transmisia live1 a evenimentului delansare pe canalul nostru de Youube Icircn acest el veți putea să ne fiți alături chiar dacănu sunteți icircn Cluj și veți avea ocazia să adresați icircntrebări celor care prezintă ot cuocazia acestui număr deschidem și o nouă rubrică destinată noutăților din industriaI Planurile de viitor includ icircnființarea unor rubrici permanente care vor abordalimbaje și tehnologii sofware Java NE SAP ManagementAgile HR Mobile (iOSAndroid Windows Phone) amp Io StundențiUniversitare Big DataMachine learningArhitectură Securitate web amp design și estare Aceasta se va realiza prin crearea unorgrupuri de specialiști care vor putea colabora și realiza review-uri specifice Surpriza va

veni la ediția din 2016 a Cluj I Days atunci cacircnd plănuim să publicăm cacircteva cărți cuarticolele publicate icircn timpul anului icircn revistăRevenim la acest număr icircncepem cu două articole de Io Primul propune o nou-

tate icircn ceea ce privește interacțiunea cu un calculator Interactiunea Om-ComputerComunicare icircn timp real cu ajutorul LeapMotion SignalR iar cel de-al doilea prezintăriscurile la care suntem supuși atunci cacircnd intrăm icircn acest spațiu IoT rom device tocloud Continuăm cu noul standard pentru limbajul JavaScript ECMAScript 6 ndash de ce șicum să icircl olosim icircn prezent Din perspectiva quality assurance vorbim despre definireași implementarea unui proces de management al calității icircntr-un proiect de dezvoltaresofware icircn Quality Assurance 101 Un articol introductiv icircn Jekins Meet Jenkins sperămsă vă acă curioși icircn legătură cu acest limbaj de programare Inițiem o serie de articoleorientate spre domeniul web care icircn acest număr vor descrie realizarea practică a unormicroservicii precum icircn articolul De la Zero la RESTul icircn 4 pași Fundația Icircncheiem

cu noutățile fiscale pentru companii icircn Provocări pentru companii icircn 2016

Vă doresc o lectură plăcută

Ovidiu MăţanFondator al Today Sofware Magazine

1 httpswwwyoutubecomtodaysofmaglive

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

editorial

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 542

5wwwtodaysoftmagro | nr 42decembrie 2015

Lista autorilor

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearchEngineerCT RTC ELE ELD-RO Siemens

Vasile Selegeanvasileselegeanisdceu

QA Officer

ISDC

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHubBucharest

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

Redacţia oday Sofware Magazine

Fondator Editor in chie Ovidiu Mățan ovidiumatantodaysofmagcom

Graphic designer Dan Hădărău danhadarautodaysofmagcom

CopyrightCorector Emilia oma

emiliatomatodaysofmagcom

raducător Roxana Elena

roxanaelenatodaysofmagcom

Contabil Delia Mircea

deliamirceatodaysofmagcom

Programator junior Alexandru Dinișalexandrudinistodaysofmagcom

Marketing și tehnoredactorAna Maria Bivol

anamariabivoltodaysofmagcom

ipar realizat de Daisler Print House

Produs deoday Sofware Solutions SRL

str Plopilor nr 7577

Cluj-Napoca Cluj Romaniacontacttodaysofmagcom

wwwtodaysofmagrowwwacebookcomtodaysofmag

twittercomtodaysofmag

ISSN 2284 ndash 6352

Copyright oday Sofware Magazine

Reproducerea parțială sau totală a articolelordin revista oday Sofware Magazine

ără acordul redacției este strict interzisă

wwwtodaysofmagrowwwtodaysofmagcom

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 3: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 342

6

C983148983157983146 IT D983137983161983155 2015O983158983145983140983145983157 Măţ983137983150

8

B983145983148983137983150ț983157983148 H983151983159 T983151 W983141983138 2015I983154983145983150983137 S983139983137983154983148983137983156

12I983150983156983141983154983137983139ț983145983157983150983141983137 O983149-C983151983149983152983157983156983141983154

C983151983149983157983150983145983139983137983154983141 983278983150 983156983145983149983152 983154983141983137983148 983139983157 983137983146983157983156983151983154983157983148L983141983137983152M983151983156983145983151983150 ș983145 S983145983143983150983137983148R

G983141983151983154983143983141 R983157983155 ș983145 D983137983150983145983141983148983137 F983137983156983145

16

I983151T 983140983141 983148983137 983140983141983158983145983139983141983148983137 983139983148983151983157983140

L983141983151983150983137983154983140 P983145983156983157

19ECMAS983139983154983145983152983156 6 ndash 983140983141 983139983141 ș983145 983139983157983149 983155ă 983278983148

983142983151983148983151983155983145983149 983278983150 983152983154983141983162983141983150983156A983140983154983145983137983150 U983148983145983139983145

23

Q983157983137983148983145983156983161 A983155983155983157983154983137983150983139983141 101V983137983155983145983148983141 S983141983148983141983143983141983137983150

22

M983141983141983156 J983141983150983147983145983150983155Ră983162983158983137983150 A983154983145983139983145983157983139

32

D983141 983148983137 983162983141983154983151 983148983137 REST983142983157983148 983278983150 983152983137983156983154983157 983152983137ș983145G983141983151983154983143983145983137983150983137 G983148983145983143983151983154

35I983149983152983151983162983145983156983141983148983141 983152983141 983139983148ă983140983145983154983145 -983148983137 983139983141 983155ă 983150983141 983137ș983156983141983152983156ă983149

983278983150 2016I983151983137983150983137 C983151983155983156983141983137

37

7 983149983145983156983157983154983145 983140983141983155983152983154983141 983149983157983150983139ă 983139983137983154983141 983155983157983150983156983150983151983139983145983158983141 983152983141983150983156983154983157 983139983154983141983145983141983154983157983148 983156ă983157E983139983144983145983152983137 S983156983141983141983148983139983137983155983141

39 P983154983151983158983151983139ă983154983145 983152983141983150983156983154983157983139983151983149983152983137983150983145983145 983278983150 2016A983150983137-M983137983154983145983137 T983154983145983142983137983150

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 442

4 nr 422015 wwwtodaysoftmagro

La final de an icircncheiem cu un mic bilanț al activității noastre din anul 2015Constatăm cu bucurie că popularitatea revistei este icircn creștere așa cum odovedesc evenimentele de lansare la care participă tot mai multă lume Numărul

accesărilor online a trecut de 12000 de sesiuni lunare De asemenea interesul e crescutși din partea programatorilor care trimit propuneri de articole Icircn ceea ce priveșteCluj I Days evenimentul organizat spre final de an și care icircncununează activitateadesășurată de-a lungul icircntregului an acesta a ost apreciat ca un succes Analizaeedbackului pe care ni l-a oerit publicul denotă acest apt dar icircn același timp și nevoia

optimizării unor aspecte ce țin de organizarea evenimentelor de acest tip Un primarticol din acest număr vizează tocmai ecoul pe care l-a avut acest eveniment icircn racircndulparticipanților Reeritor la desășurarea lansării acestui număr introducem un elementnou - nu mai avem răbdare pacircnă icircn 2016 - prin transmisia live1 a evenimentului delansare pe canalul nostru de Youube Icircn acest el veți putea să ne fiți alături chiar dacănu sunteți icircn Cluj și veți avea ocazia să adresați icircntrebări celor care prezintă ot cuocazia acestui număr deschidem și o nouă rubrică destinată noutăților din industriaI Planurile de viitor includ icircnființarea unor rubrici permanente care vor abordalimbaje și tehnologii sofware Java NE SAP ManagementAgile HR Mobile (iOSAndroid Windows Phone) amp Io StundențiUniversitare Big DataMachine learningArhitectură Securitate web amp design și estare Aceasta se va realiza prin crearea unorgrupuri de specialiști care vor putea colabora și realiza review-uri specifice Surpriza va

veni la ediția din 2016 a Cluj I Days atunci cacircnd plănuim să publicăm cacircteva cărți cuarticolele publicate icircn timpul anului icircn revistăRevenim la acest număr icircncepem cu două articole de Io Primul propune o nou-

tate icircn ceea ce privește interacțiunea cu un calculator Interactiunea Om-ComputerComunicare icircn timp real cu ajutorul LeapMotion SignalR iar cel de-al doilea prezintăriscurile la care suntem supuși atunci cacircnd intrăm icircn acest spațiu IoT rom device tocloud Continuăm cu noul standard pentru limbajul JavaScript ECMAScript 6 ndash de ce șicum să icircl olosim icircn prezent Din perspectiva quality assurance vorbim despre definireași implementarea unui proces de management al calității icircntr-un proiect de dezvoltaresofware icircn Quality Assurance 101 Un articol introductiv icircn Jekins Meet Jenkins sperămsă vă acă curioși icircn legătură cu acest limbaj de programare Inițiem o serie de articoleorientate spre domeniul web care icircn acest număr vor descrie realizarea practică a unormicroservicii precum icircn articolul De la Zero la RESTul icircn 4 pași Fundația Icircncheiem

cu noutățile fiscale pentru companii icircn Provocări pentru companii icircn 2016

Vă doresc o lectură plăcută

Ovidiu MăţanFondator al Today Sofware Magazine

1 httpswwwyoutubecomtodaysofmaglive

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

editorial

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 542

5wwwtodaysoftmagro | nr 42decembrie 2015

Lista autorilor

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearchEngineerCT RTC ELE ELD-RO Siemens

Vasile Selegeanvasileselegeanisdceu

QA Officer

ISDC

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHubBucharest

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

Redacţia oday Sofware Magazine

Fondator Editor in chie Ovidiu Mățan ovidiumatantodaysofmagcom

Graphic designer Dan Hădărău danhadarautodaysofmagcom

CopyrightCorector Emilia oma

emiliatomatodaysofmagcom

raducător Roxana Elena

roxanaelenatodaysofmagcom

Contabil Delia Mircea

deliamirceatodaysofmagcom

Programator junior Alexandru Dinișalexandrudinistodaysofmagcom

Marketing și tehnoredactorAna Maria Bivol

anamariabivoltodaysofmagcom

ipar realizat de Daisler Print House

Produs deoday Sofware Solutions SRL

str Plopilor nr 7577

Cluj-Napoca Cluj Romaniacontacttodaysofmagcom

wwwtodaysofmagrowwwacebookcomtodaysofmag

twittercomtodaysofmag

ISSN 2284 ndash 6352

Copyright oday Sofware Magazine

Reproducerea parțială sau totală a articolelordin revista oday Sofware Magazine

ără acordul redacției este strict interzisă

wwwtodaysofmagrowwwtodaysofmagcom

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 4: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 442

4 nr 422015 wwwtodaysoftmagro

La final de an icircncheiem cu un mic bilanț al activității noastre din anul 2015Constatăm cu bucurie că popularitatea revistei este icircn creștere așa cum odovedesc evenimentele de lansare la care participă tot mai multă lume Numărul

accesărilor online a trecut de 12000 de sesiuni lunare De asemenea interesul e crescutși din partea programatorilor care trimit propuneri de articole Icircn ceea ce priveșteCluj I Days evenimentul organizat spre final de an și care icircncununează activitateadesășurată de-a lungul icircntregului an acesta a ost apreciat ca un succes Analizaeedbackului pe care ni l-a oerit publicul denotă acest apt dar icircn același timp și nevoia

optimizării unor aspecte ce țin de organizarea evenimentelor de acest tip Un primarticol din acest număr vizează tocmai ecoul pe care l-a avut acest eveniment icircn racircndulparticipanților Reeritor la desășurarea lansării acestui număr introducem un elementnou - nu mai avem răbdare pacircnă icircn 2016 - prin transmisia live1 a evenimentului delansare pe canalul nostru de Youube Icircn acest el veți putea să ne fiți alături chiar dacănu sunteți icircn Cluj și veți avea ocazia să adresați icircntrebări celor care prezintă ot cuocazia acestui număr deschidem și o nouă rubrică destinată noutăților din industriaI Planurile de viitor includ icircnființarea unor rubrici permanente care vor abordalimbaje și tehnologii sofware Java NE SAP ManagementAgile HR Mobile (iOSAndroid Windows Phone) amp Io StundențiUniversitare Big DataMachine learningArhitectură Securitate web amp design și estare Aceasta se va realiza prin crearea unorgrupuri de specialiști care vor putea colabora și realiza review-uri specifice Surpriza va

veni la ediția din 2016 a Cluj I Days atunci cacircnd plănuim să publicăm cacircteva cărți cuarticolele publicate icircn timpul anului icircn revistăRevenim la acest număr icircncepem cu două articole de Io Primul propune o nou-

tate icircn ceea ce privește interacțiunea cu un calculator Interactiunea Om-ComputerComunicare icircn timp real cu ajutorul LeapMotion SignalR iar cel de-al doilea prezintăriscurile la care suntem supuși atunci cacircnd intrăm icircn acest spațiu IoT rom device tocloud Continuăm cu noul standard pentru limbajul JavaScript ECMAScript 6 ndash de ce șicum să icircl olosim icircn prezent Din perspectiva quality assurance vorbim despre definireași implementarea unui proces de management al calității icircntr-un proiect de dezvoltaresofware icircn Quality Assurance 101 Un articol introductiv icircn Jekins Meet Jenkins sperămsă vă acă curioși icircn legătură cu acest limbaj de programare Inițiem o serie de articoleorientate spre domeniul web care icircn acest număr vor descrie realizarea practică a unormicroservicii precum icircn articolul De la Zero la RESTul icircn 4 pași Fundația Icircncheiem

cu noutățile fiscale pentru companii icircn Provocări pentru companii icircn 2016

Vă doresc o lectură plăcută

Ovidiu MăţanFondator al Today Sofware Magazine

1 httpswwwyoutubecomtodaysofmaglive

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

editorial

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 542

5wwwtodaysoftmagro | nr 42decembrie 2015

Lista autorilor

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearchEngineerCT RTC ELE ELD-RO Siemens

Vasile Selegeanvasileselegeanisdceu

QA Officer

ISDC

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHubBucharest

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

Redacţia oday Sofware Magazine

Fondator Editor in chie Ovidiu Mățan ovidiumatantodaysofmagcom

Graphic designer Dan Hădărău danhadarautodaysofmagcom

CopyrightCorector Emilia oma

emiliatomatodaysofmagcom

raducător Roxana Elena

roxanaelenatodaysofmagcom

Contabil Delia Mircea

deliamirceatodaysofmagcom

Programator junior Alexandru Dinișalexandrudinistodaysofmagcom

Marketing și tehnoredactorAna Maria Bivol

anamariabivoltodaysofmagcom

ipar realizat de Daisler Print House

Produs deoday Sofware Solutions SRL

str Plopilor nr 7577

Cluj-Napoca Cluj Romaniacontacttodaysofmagcom

wwwtodaysofmagrowwwacebookcomtodaysofmag

twittercomtodaysofmag

ISSN 2284 ndash 6352

Copyright oday Sofware Magazine

Reproducerea parțială sau totală a articolelordin revista oday Sofware Magazine

ără acordul redacției este strict interzisă

wwwtodaysofmagrowwwtodaysofmagcom

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 5: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 542

5wwwtodaysoftmagro | nr 42decembrie 2015

Lista autorilor

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chiefToday Software Magazine

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearchEngineerCT RTC ELE ELD-RO Siemens

Vasile Selegeanvasileselegeanisdceu

QA Officer

ISDC

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHubBucharest

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

Redacţia oday Sofware Magazine

Fondator Editor in chie Ovidiu Mățan ovidiumatantodaysofmagcom

Graphic designer Dan Hădărău danhadarautodaysofmagcom

CopyrightCorector Emilia oma

emiliatomatodaysofmagcom

raducător Roxana Elena

roxanaelenatodaysofmagcom

Contabil Delia Mircea

deliamirceatodaysofmagcom

Programator junior Alexandru Dinișalexandrudinistodaysofmagcom

Marketing și tehnoredactorAna Maria Bivol

anamariabivoltodaysofmagcom

ipar realizat de Daisler Print House

Produs deoday Sofware Solutions SRL

str Plopilor nr 7577

Cluj-Napoca Cluj Romaniacontacttodaysofmagcom

wwwtodaysofmagrowwwacebookcomtodaysofmag

twittercomtodaysofmag

ISSN 2284 ndash 6352

Copyright oday Sofware Magazine

Reproducerea parțială sau totală a articolelordin revista oday Sofware Magazine

ără acordul redacției este strict interzisă

wwwtodaysofmagrowwwtodaysofmagcom

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 6: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 642

6 nr 42decembrie 2015 | wwwtodaysoftmagro

eveniment

Cluj IT Days 2015

Cluj I Days 2015 a devenit un eveniment de reerință pentru comunitatea de I clujeană Am avut peste 320 de participanțicare timp de două zile au putut asista la prezentări tehnice de calitate și care au demonstrat capacitatea noastră de inovațiedar și de integrare a ultimelor tehnologii icircn proiectele noastre curente Pentru acest articol de review am decis să includem

articolul publicat pe blogul său de Robin Molnar articol pe care l-am descoperit icircntacircmplător după eveniment

Ca la orice eveniment pluridisciplinar și

multitehnologic unele prezentări au ost deinteres pentru mine altele nu unele au ostmai interactive altele mai staticehellip

Cel mai important icircnsă este aptul că1 Am avut acces la tehnologii la care

altel nu aș fi avut acces2 Am avut acces la cacircteva idei pe care

icircn alte condiții le-aș i alat pe baniimei după luni sau ani de muncă Ideiși inormații despre procesarea unuinumăr mare de mesaje pe secundă olo-

sind Microsof Azure ori despre cum seautomatizează o casă inteligentă Amaflat că generația mea generația Y aredoar 39 șanse să schimbe lumea icircntimp ce noua generație generația Z are60 șanse să schimbe lumea sau maiimportant pentru mine ce probleme poțiicircntacirclni la testarea automată și la testareade perormanță și mai ales de cehellip

3 Icircn mod deosebit mi s- a pă rut

grozav de uti lă prezentarea ținută de

Peter Lawrey despre Low Latency in Java8 De mulți ani n-am mai icircntacirclnit penimeni care să se ocupe de bytecode la unasemenea nivel Practic omul te icircnvațăacum să aci ceea ce programatorii anilordintacirci ăceau des avacircnd memoria micăși cicluri de CPU puține aceștia icircși opti-mizau la sacircnge codul Dacă ți se pare căacum nu avem nevoie de asta icircnseamnăcă este musai să participi la o prezentareținută de Peter Lawrey ca să icircnțelegi ceeace acum nu icircnțelegi Grozavă prezentare

ținută de un hacker icircn sensul arhaic alcuvacircntului4 M-am jucat cu Oculus Rit2 cu un

alt headset de realitate virtuală de laHTC icircmi scapă acum modelul iar joculextrem de detaliat era ăcut de ExosyphenStudios Mă joc Fallout 4 un joc oartedetaliat dar ce au ăcut oamenii ăștiaera și mai detaliat Am băut caea ăcutăde un robot pe nume Baxter m-am jucat

cu Vector Watch m-am jucat cu diverse

dispozitive cu Windows 10 de la Lenovoși nu numai m-am holbat la imprimante3D și am icircnvățat cum se programeazăunelehellip

5 Deși a ost obositor și zgomotos ameritat să particip la Cluj IT Days Amtrăit experiențe noi am icircncercat chestiinoi am intrat icircn contact cu tehnologiinoi A ost inedit

Robin Molnarrobinmolnar3pillarglobalcom

QA Engineer 3Pillar GlobalBlog robintelro

Sursa httpwwwrobintelroblogtechcluj-it-days-2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 7: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 742

7wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Planuri de viitor și statisticiMulțumim icircn primul racircnd pentru eedbackul acordat care

este oarte olositor pentru organizarea Cluj I Days-ului din2016 Ne-ar plăcea ca la următoarea ediție să avem un track cusubiectul Hands on Lab icircn care prezentările să aibă o durată decel puțin o orăIntenționăm ca unul dintre dintre track-uri să sedesășoare icircn limba engleză Din perspectiva de organizator prin-cipalele noutăți și provocări ale acestei ediții au ost

bull realizarea celor două track-uri paralelebull crearea unei zone de gadget show icircn cadrul căreia partenerii

să poată expune ultimele noutăți și realizări

bull restructurarea icircntregii agende astel icircncacirct să nu mai avemproblema depășirii timpului alocat

bull icircnregistrarea la nivel proesional a icircntregului eveniment șipostarea acesteia și a slide-urilor pe site

Un proiect pe care vom icircncerca să icircl realizăm pentru 2016este publicarea de cărți de specialitate Acesta se va baza pearticole publicate de dierite grupuri tehnice Java NE SAPManagementAgile HR Mobile (iOS Android WindowsPhone) amp Io StundențiUniversitare Big DataMachine lear-ning Arhitectură Securitate web amp design și estare Astelparticipanții la eveniment vor putea să icircși aleagă ce carte dorescsă primească icircn welcome package

Media locală a relatat despre eveniment un reportaj și uninterviu a ost diuzat la știrile de la ora 1800 la Digi24 Cluj iarZiarul de Cluj a publicat un articol despre acesta

Icircn continuare vă prezentăm eedbackul primit de laparticipanți La o primă analiză acesta arată succesul ediția din2015 a Cluj I Days poate fi considerat un succes dar și că existăaspecte care pot fi icircmbunătățite

Icircn icircncheiere dorim să mulțumim partenerilor care au ostalături de noi la această ediție Microsof Yardi 3Pillar Global

Gemini Solutions Accenture Accesa Blade Solutions Banca

ransilvania Subsign Colors in Projects elenav Yonder

Betair Bosch Frequentis Ve Interactive Ullink Lohika Cos

Endava precum și celor ce ne-au ajutat icircn promovarea eveni-mentului Cluj I Cluster Cluj Hub Agora AdHugger LoopaaSoflead RABS Free Wifi I Channel și ech Hub

Mulțumim participanților și vă așteptăm laCluj I Days 2016

Overall how would you rate the quality of the event

How engaging were the speakers at the event

Ovidiu Măţanovidiumatantodaysoftmagcom

Editor-in-chief Today Software MagazineOrganizator

Cluj IT Days

How helpful was the content presented at the event

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 8: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 842

8 nr 422015 wwwtodaysoftmagro

USD Pe locul al doilea s-a clasat Jabooset de brățări inteligente care accelereazăși icircmbunătățesc tehnica sportivilor prinmăsurarea vitezei a orței și a caracteris-ticilor antrenamentelor Cea de-a patraediție Startup Spotlight a avut loc icircntre25 și 27 noiembrie icircn București icircn cadrulHow to Web Conerence 2015

How to Web Startup Spotlight 2015

a adus icircmpreună 30 de start-up-uri icircndomeniul tehnologiei din 9 țări dinEuropa Centrală și de Est Prima zi aprogramului s-a desășurat icircntr-un cadruprivat la echHub Bucharest iar juriula ales cele 8 echipe care și-au prezentatulterior produsele pe scena principalăa conerinței Evenimentul a continuatcu două workshop-uri unul despre teh-nici de ecommerce pentru icircmbunătățirea vacircnzărilor de sotware la nivel global susținut de Adriana Iordan Chie ProductEvangelist Avangate și cel de-al doilea

despre SaaS icircn practică susținut de SorinPește echnical Evangelist Microsof

Pe parcursul următoarelor zile ale pro-gramului finaliștii Startup Spotlight și-auprezentat produsele pe una dintre celedouă scene ale How to Web Conerence2015 au primit eedback și au avut accesla oportunități unice de investiții șidistribuție participacircnd la un număr totalde 384 de sesiuni de mentorat unu la unu

Icircn plus acestea au concurat pentrupremiile icircn valoare totală de 20000 USDoerite de IXIA partener principal al pro-gramului Juriul a avut misiunea delocușoară de a alege cacircștigătorii competiției

Icircn urma deliberării Branch rack start-up din Letonia care creează simulăriinteractive pentru pregătirea angajațiloricircn vacircnzări și alte domenii conexe a ostdesemnat marele cacircștigător al How toWeb Startup Spotlight 2015

Pe locul al doilea s-a clasat Jaboo setde brățări inteligente care accelerează șiicircmbunătățesc tehnica sportivilor prin

măsurarea vitezei a orței și a caracte-risticilor antrenamentelor Symme 3Do platormă delta multiuncțională pen-tru imprimare 3D și inscripționare culaser a primit IXIA Innovation Award icircntimp ce SaeDrive aplicație mobilă careicircmbunătățește siguranța traficului răsplă-tind șoerii care nu utilizează teleonul la volan a primit premiul pentru cea maibună prezentare din cadrul programu-lui Cacircștigătorii au primit premii cash icircn valoare totală de 20000 USD oerite deIXIA principalul partener al programului

Startup Spotlight s-a desășurat icircncadrul How to Web Conerence 2015 celmai important eveniment dedicat inovațieiicircn tehnologie și antreprenoriatului dinEuropa de Sud-Est organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost Cea de-a șasea edițieinternațională a conerinței a avut loc pe26 amp 27 noiembrie și a adus icircmpreunăondatori de start-up-uri product mana-ger-i programatori marketer -i și lideri de

comunități din Europa Centrală și de Est

Pe toată durata evenimentului aceștiaau avut acces la oportunități de networking excelente cu actori relevanți din industria

Bilanțul How To Web 2015

Branch rack start-up-ul care creează simulări interactive pentru pregătireaangajaților icircn vacircnzări și alte domenii conexe a cacircștigat How to Web Startup

Spotlight competiție și program de mentorat cu premii icircn valoare de 20000

eveniment

Irina Scarlatirinascarlathowtowebco

CMOHow to Web amp TechHub Bucharest

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 9: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 942

9wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

tech la nivel global Participanții au avutocazia de a dezvolta conexiuni valo-roase de a ace schimb de bune practiciși experiențe dar și de a identifica posi-bile modalități de colaborare oateacestea utilizacircnd o gamă de activități șiinstrumente dezvoltate pentru a acilitainteracțiunile sociale sesiunile de ldquoAsk theexpertrdquo mesele rotunde petrecerile și eve-nimentele de networking și nu icircn ultimulracircnd How to Web Meet aplicația mobilăa conerinței

Icircn plus participanții How to Web

Conerence 2015 au avut ocazia unică de aicircnvăța bune practici și lecții din experiențaunor antreprenori și proesioniști remar-cabili care au urcat pe cele două sceneale conerinței și au susținut 28 de pre-zentări practice și 11 paneluri careau abordat subiecte relevante pentruaudiență Icircnregistrările vor fi disponibileicircn curacircnd pe canalul Youube al How toWeb

La toate acestea se adaugă posibilita-tea de a descoperi ultimele tendințe dinindustrie și modul icircn care tehnologia

schimbă lumea De la exoscheleți și pri-mul scuter electric inteligent din lumeși pacircnă la dispozitivul de securitate careprotejează toate aparatele din casă conec-tate la internet participanții How to Webau avut ocazia să testeze 12 produse ino- vatoare icircn zona de expo și au asistat la 6demonstrații live care au avut loc pe scenaprincipală a conerinței

89 de speakeri mentori și investitori auurcat pe cele două scene ale conerințeiAceștia au susținut 28 de prezentări și 11paneluri 30 start-up-uri cu potențial din9 țări au participat la How to Web Startup

Spotlight și au beneficiat de 384 de sesiunide mentorat specializate 12 produse ino- vatoare au ost expuse icircn zona de expo iar6 dintre acestea au ost prezentate live pescena principală a conerinței

21 de comunități active din regi-une și-au prezentate inițiativele șiplanurile pentru viitor icircn cadrul Howto Web Community Spotlight BilanțulHow to Web la cacircteva zile de la icircncheiereaevenimentului aduce vești bune pentrucomunitatea proesioniștilor icircn tehnologiedin regiune și reflectă evoluția icircntregului

ecosistemldquoHow to Web este un eveniment pentru comunitate care se icircntacircmplă icircn fiecare an cu sprijinul unui număr oartemare de oameni care icircși unesc eorturile pentru a ace lucrurile să se icircntacircmple Lemulțumim partenerilor noștri amba-sadorilor voluntarilor icircntregii echipe și fiecărui participant icircn parte How to WebConerence 2015 a ost un eveniment reușitdatorită implicării active a fiecăruia dintreei și suntem convinși că icircmpreună vomreuși să organizăm o ediție și mai bunăanul viitorrdquo a declarat Daniel DragomirCEO al How to Web Conerence 2015

How to Web Conerence 2015 aost un eveniment organizat icircn colabo-rare cu elekom Romania BitdeenderIXIA și CyberGhost cu sprijinul parte-nerilor Microsot Avangate hubraum

Ambasada Canadei icircn Romacircnia MozillaEI Digital Okapi Studio și Soflayer și alpartenerilor logistici Clever axi mReadyAqua Consulting Mucca mobilPayMarketizator Zelist Monitor radeAdsInteractive AdLemonade Ciuc AquaCarpatica și Domeniile Sacircmburești

Despre How To WebHow to Web este cel mai important

eveniment dedicat inovației icircn tehnolo-gie și antreprenoriatului din Europa de

Sud-Est Conerința se adresează ino- vatorilor icircn tehnologie antreprenori lordezvolatorilor de produse tech agențiilorși companiilor de outsourcing interesatede inovație investitorilor și tuturor celorinteresați de tehnologie și inovație Maimulte detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anulacesta sunt disponibile online pe site-ulconerinţei

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 10: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1042

10 nr 42decembrie 2015 | wwwtodaysoftmagro

noutăți

Google Calculatorul quantic D-Wave 2X este de 100 milio-ane mai rapid decacirct un calculator normal

D-Wave 2X olosește qubit1 care icircn aară de stări 0 și 1 aleunui bit are și starea de superpoziție a ambelor stări Comparatcu o simulare pe un calculator cu un singur core D-Wave 2X estede 108 mai rapid De asemenea procesoarele2 olosite sunt pe

1000 de qubiți icircn vreme ce procesoarele clasice sunt pe 64 de bițiMai multe detalii pot fi găsite pe Google Research Blog3

Oracle Java 9 va fi lansat doar icircn 2017Proiectul Jigsaw (Java 9) care are ca scop principal să adauge

modularitate componentelor olosite la runtime Astel se vaputea crea un runtime jar (rtjar) care va conține doar compo-nentele necesare Icircn acest el Java va scala mai ușor pe device-uricu o putere mai redusă de procesare Noua dată anunțată estemartie 2017Sursa httpsdzonecomarticles oracle-announces -jigsaw-

delays-push-java-9-launch

Microsoft Chakra engine-ul de JavaScript al noului browser Edgeeste open-source

Icircn cadrul conerinței JSCon din Florida Microsof a anunțatcă va pune la dispoziția utilizatorului engine-ul noului săubrowser din Windows 10 sub licență MI4

Sursa httparstechnicacominormation-technology201512micro-

sof-to-open-source-chakra-the-javascript-heart-o-its-edge-browser

1 httpsenwikipediaorgwikiQubit

2 httpwwwdwavesyscompress-releasesd-wave-systems-breaks-1000-qubit-quantum-

computing-barrier

3 httpgoogleresearchblogspotca201512when-can-quantum-annealing-winhtml

4 httpsenwikipediaorgwikiMI_License

Microsoft suport de Objective-C icircn Visual StudiuDeși pare ireal a ost lansată versiunea de preview a Windows

Bridge or iOS (v01) prin care se vor porta aplicațiile Objective-Cpe platorma Universal Windows sau chiar dezvolta aplicații noiPentru cei interesați se poate descărca ără a completa nici unormular de pe pagina proiectului o mașină virtuală (~20GB)

pentru un start-up rapidSursa httpsdevwindowscomen-usbridgesios

Apple Swift este acum open sourceOricine poate acum să descarce codul5 build -urile de develop-

ment sau să fixeze bug-uri icircn Swif A ost creat swiforg6 care estedestinat comunității de programatori care dorește să contribuieSursa httpsdeveloperapplecomswifblogid=34

TechCrunch Start-up-ul Jukedeck este cacircștigătorul TechCrunchDisrupt London

Jukedeck 7 un start-up care generează automat muzică prin

olosirea inteligenței artificiale a cacircștigat competiția echCrunchDisrupt London Soluția propusă de ei este de a genera ietinundal sonor pentru videoclipuri ără a icircncălca drepturile inte-lectuale ale artiștilorSursa httptechcrunchcom20151208jukedeck-wins

-disrupt-london-2015 ndash

PHP Versiunea 700 a popularului limbaj este disponibilăPHP 70 vine cu o nouă versiune a engine-ului Zend care

este pacircnă de două ori mai rapid decacirct versiunile anterioare șimulte alte icircmbunătățiri precum o mai bună olosire a memorieisau optimizări de sintaxă Acesta este eortul a doi ani de lucru aechipei de proiect și a numeroșilor contribuitori Mai multe des-

pre această nouă versiune de PHP puteți găsi icircn articolul8 dedicatdin revistăSursa httpphpnetarchive2015phpid2015-12-03-1

Adobe Animate CC va icircnlocui Flash ProfessionalAnimate CC va fi disponibil la icircnceputul anului 2016 și va

icircncorpora suport native de HML5 și WebGL Noul produs vasuporta icircn continuare Flash (SWG) și ormatul AIR dar va puteaexporta și icircn alte ormate precum SVGSursa httpblogsadobecomconversations201511flash-html5-and-

open-web-standardshtml

5 httpgithubcomapple6 httpswiforg

7 httpswwwjukedeckcom

8 httptodaysofmagroarticle1679php-7-o-privire-spre-viitor

Inaugurăm rubrica de noutăți icircn industria I Aceasta va cuprinde o selecție de știri globale dar și locale Noutățile pot fi semnalatedirect la newstodaysofmagcom

Noutăți IT

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 11: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1142

11wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Comunități IT

comunități

ransylvania Java User Group

Community dedicated to Java technologyWebsite wwwtransylvania-jugorgSince 15052008 Members 598 Events 47

SM Community Community built around oday Sofware MagazineWebsites wwwacebookcomtodaysofmag

wwwmeetupcomtodaysofmagwwwyoutubecomtodaysofmag

Since 06022012 Members 2700 Events 33

Cluj Business Analysts

Comunity dedicated to business analystsWebsite wwwmeetupcomBusiness-Analysts-ClujSince 10072013 Members 91 Events 8

Cluj Mobile DevelopersCommunity dedicated to mobile developersWebsite wwwmeetupcomCluj-Mobile-DevelopersSince 05082011 Members 264 Events 17

Te Cluj Napoca Agile Sofware Meetup Group

Community dedicated to Agile methodologyWebsite wwwagileworksroSince 04102010 Members 437 Events 93

PHP Cluj

Our love or PHP gets us togetherWebsite wwwmeetupcomPHP-Cluj

Since 25012013 Members 112 Events 6

Romanian Association or Better Sofware

Community dedicated to experienced developersWebsite wwwrabsroSince 10022011 Members 251 Events 14

abăra de testare

esters community rom I industry with monthly meetingsWebsite wwwtabaradetestareroSince 15012012Members 1243 Events 107

Vă dorim sărbători ericite și ne vedem la icircnceputul lui 2016 cu orțe proaspete și cu evenimente practice și interesante

Calendar

Decembrie 15 (Cluj)

Lansarea numărului 42 al oday Sofware Magazine

wwwtodaysofmagro

Decembrie 16 (Cluj)

Apache Spark WorkshopmeetupcomBig-Data-Data-Science-Meetup-Cluj-Napocaevents227169515

Decembrie 16 (București)

PMI Symptoms o a Sick-ProjectmeetupcomPMI-Romania-Bucharest-Project-Management-Meetup-Groupevents227335062

Decembrie 16 (Cluj)Kick-off sample learning projectmeetupcomPHP-Clujevents227158930 Decembrie 17 (Iași)

Romanian Business Analysis Conerence 2015eventbritecomeromanian-business-analysis-conerence-2015-rbac-2015-tickets-19080768091

Decembrie 17 (Cluj)

OpenStreetMapime - missing bus stations in Clujacebookcomevents1523158184664319

Ianuarie 16 (Cluj)Winning the Game o Business-Entrepreneur Nighteventbrite comeentrepreneur-night-winning-the-game-o-business-guest-o-svp-christine-sherbert-tickets-19137128667

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 12: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1242

12 nr 42decembrie 2015 | wwwtodaysoftmagro

Interacțiunea Om-Computer

Comunicare icircn timp real cu ajutorul

LeapMotion și SignalR

TehnologiiPentru a implementa aplicația de chat online icircn timp real care

permite inputul de gesturi de la Leap Motion Controller inter-pretate de către tastatura virtuală avem nevoie de următoarele

tehnologiibull ASPNE MVC 5 - httpwwwaspnetmvcmvc5bull SignalR - httpwwwaspnetsignalr bull LeapJS - httpsgithubcomleapmotionleapjsbull HREEjs - httpthreejsorg bull weenjs - httpsgithubcomtweenjstweenjs

Funcționalitatea web-chat este dezvoltată olosind ASPNET MVC ș i SignalR tastatura virtuală este implementată pe bazaTHREEjs și CSS3DRenderer iar inputul de gesturi și semnalelede eedback de la Leap Motion Controller sunt interpretate olo-sind extensiile LeapJS API și Leap-widgetsjsda

Comunicarea icircn Timp Real ndash SignalRIcircn trecut paginile web erau statice și nimeni nu se aștepta

ca ele să acă un update singure după un timp Fiecare acțiunea user-ului necesita ca icircntregul conținut al paginii să fie retrimisde la server Icircncetul cu icircncetul internetul și-a accentuat dezvol-tarea iar drumul de la pagini statice la pagini dinamice a icircnceputsă se contureze O primă icircncercare de a crea pagini dinamice aost reprezentată de introducerea tag -ului iFrame și de controlul ActiveX Mai tacircrziu odată cu introducerea Ajax și jQuery pagi-nile web dinamice au cacircștigat icircn ața vechilor pagini html (httpwwwevolutionofhewebcom)

Cacircnd navigăm pe internet avem nevoie de un browser web

pentru a accesa și a afișa o pagină web Acest browser are propriullui motor de randare care ajută la interpretarea și coordonareadieritelor tag-uri elemente și resurse de pe pagina respectivăpentru a putea să le afișeze utilizatorului Acum cacircțiva ani olo-seam calculatorul pentru a naviga pe internet nu exista icircncă

noțiunea de smartphone tabletă smart V sau smartwatch sauorice alt tip de gadget inteligent

Icircn prezent aproape toate device-urile noastre olosesc un

browser web care ne permite să stăm pe internet Dorim caaplicațiile pe care le dezvoltăm să fie disponibile și să poată fiaccesate de pe toate aceste device-uri icircnsă tocmai datorită varietații lor conținutul arată bine pe unele dar nu grozav pealtele De asemenea ne dorim ca aplicații precum un sistem demonitorizare sau o aplicație pentru verificat vremea să afișezeinormațiile noi icircn timp real (imediat ce inormația devine dis-ponibilă) ără să fie nevoie să o cerem noi Dacă ne conectăm depe device-urile noastre la o aplicație de social media ne așteptămca orice schimbare și actualizare ăcute de pe device-ul propriu săfie vizibilă instant și pe tableta noastră sau pe smart V precumși pe device-urile prietenilor noștri ără să fie nevoie să acționămexplicit icircn acest sens

Atunci cum am putea crea aplicații web care să uncționeze icircn timp real și pe care să le

putem accesa de pe toate aceste tipuri de device-uri SignalR neajută să găsim o soluție pentru a transera datele icircntre server și cli-ent icircntr-un mod rapid și sigur pentru comunicarea icircn timp real

SignalR este o librărie open source susținută de MicrosotOeră comunicare bidirecțională (ull duplex) icircntre client și ser- ver Prin urmare spre deosebire de modelul tradițional undeclientul trebuia să acă o cerere către server de această dată cli-entul și serverul icircmpart un canal deschis iar serverul poate laracircndul său să contacteze clientulDe asemenea poate să urnizeze

conținut icircn mod asincron să suporte toate browser -ele și are omodalitate inteligentă de a decide ce tip de transport să oloseascăpentru a transmite mesajele

Icircntr-o lume a tehnologiei și a device-urilor inteligenteicircn care comunicarea ar trebui privită ca un actor esențial trebuie sădezvoltăm pe lacircngă ormele tradiționale noi modalități de interacțiune om-calculator Scopul acestui articol este de a propuneideea utilizării de căi alternative pentru a interacționa cu un calculator căi aliniate noilor tehnologii disponibile Propunerea

va fi exemplificată printr-o aplicație de chat online icircn timp real care va fi creată olosind ASPNET MVC și SignalR și care va primiinormațiile de la o tastatură controlată prin Leap Motion Controller

noutatiprogramare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 13: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1342

13wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Deciziile privind transportul se bazează pe tipul de browser și pe alte configurații client și server și icircncearcă dierite tehnicide transport cum ar fi websocket server sent events orever rameși long polling avacircnd un mecanism de selecție dacă unul din elenu este suportat

Conexiunea icircncepe ca HP standard și dacă e posibil seace trecerea spre websocket care ar fi metoda de transport idealădin perspectiva SignalR Protocolul Websocket este destul de noupe piață (2011) și device-urile mai vechi nu icircl suportă Cu SignalR nu trebuie să ne acem griji și să scriem cod pentru clienți mai vechi deoarece SignalR poate decide ce alt tip de transport poateolosi pentru a stabili conexiunile cu ei Dacă Websocket nu estedisponibil se ia decizia icircntre server sent events (nu sunt supor-tate de Internet Explorer) orever rame (doar pentru InternetExplorer) și Ajax long polling

SignalR urnizează ca modele de comunicare PersistentConnections și Hubs Persistent Connections este configurabilă

și este similară web socket-urilor Dacă de exemplu aplicațianoastră are cerințe speciale și trebuie să avem control asupraacțiunilor pe care vrem să le acem cacircnd deschidem o conexiuneputem alege să o derivăm

Hubs sunt construite peste Connection API Dacă alegemsă olosim hub-urile oerite de SignalR putem să apelăm meto-dele definite pe partea de server de pe client și viceversa directIcircntreaga parte de management a conexiunilor este oerită deSignalR Prin urmare dacă ne olosim de Hubs lăsăm SignalR-ulsă acă toată treaba

Server sideDemoHub class is derived from class This allows

us to create public methods that can be called fromscript in web pagespublic class DemoHub Hub method that can be called from the client public void MessageToServer(string sampleText) specify the function to call on the client thisfunction has to be dened on the client This will

execute the js function messageToClient on all

the clients connected to the hub due to ClientsAllproperty that gives access to all connected clients

ClientsAllmessageToClient(ldquomessage receivedrdquo)

Client Sidereference to a hub proxyvar demo = jQueryconnectiondemoHub

js function on the client that can be called fromthe hubdemoclientmessageToClient = function (message) alert(message)

opening a connection to a hubjQueryconnectionhubstart()done(function ()

call MessageToServer method on the hub from theclient

demoservermessageToServer(ldquoSending messagerdquo)

)

Leap Motion ControllerLeap Motion Controller este un device care captează și inter-

pretează semnale de la senzori optici și inra-roșu pentru aidentifica macircinile degetele și instrumentele de indicație Acestdevice de urmărire este o alegere bună deoarece are suport APImulti-language De asemenea oeră o cartografiere virtuală aspațiului eedback icircn timp real dar și recunoaștere și trainingpentru gesturi Următoarea imagine prezintă acest device icircmpre-ună cu sistemul său de coordonate

Cacircmpul vizual al senzorului optic este de aproximativ 150

de grade iar raza de detecție se extinde de la 25 pacircnă la 600 demilimetri deasupra device-ului Unitățile sale de măsură suntreprezentate icircn milimetri pentru distanțe microsecunde pen-tru timp milimetri per secundă pentru viteză și radian pentruunghiuri

Modelul Entity al datelor captate de controller este denotat deun Frame conținacircnd inormații din icircntregul spațiu de lucru cum

programming

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 14: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1442

14 nr 42decembrie 2015 | wwwtodaysoftmagro

ar fi mișcarea și gesturile realizate macircinile degetele șisau instru-mentele de indicare Folosind aceste inormații gesturi precumdescrierea unui cerc apăsarea unei taste sau atingerea ecranuluipot fi identificate

Integrarea Leap Motion Controller icircn aplicație se va baza peinterața WebSocket din arhitectura sistemului Datele captatede device sunt transmise icircntr-o structură de tip JSON printr-unWebSocket Icircn acest el librăriile JavaScript de pe client pot inter-preta și analiza mesajele Interpretarea datelor brute primite prinWebSocket se ace icircn browser cu ajutorul ramework-ului LeapJS

Tastatura virtualăElementul vizual care intermediază comunicarea cu calcula-

torul este tastatura virtuală Această tastatură este implementatăolosind tehnologii JavaScript client cum ar fi THREEjs Tween js și CSS3DRENDERER ca motoare de randare

Folosind THREEjs o scenă 3D este creată pentru a pre-zenta elementele tastaturii Unele animații sunt ușor de integrat

cu ajutorul uncționalității oerite de către ramework-ulTweenjs Alegerea modalității de randare este reprezentată deCSS3DRENDERER datorită aptului că acest tip de randare esterapid icircn cazul de ață uncționează pe browser -e de mobile estede mici dimensiuni și se bazează icircn principal pe CSS

Următoarele linii de JavaScript prezintă codul minimal decare este nevoie pentru a crea un THREECSS3DObject și pentrua inițializa scena

function CreateButton(key keyDescription) var keyElement = documentcreateElement(rsquodivrsquo) keyElementclassName = rsquokeyrsquo keyElementid = key

var letter = documentcreateElement(rsquodivrsquo) letterclassName = rsquoletterrsquo lettertextContent = key keyElementappendChild(letter) var description = documentcreateElement(rsquodivrsquo) descriptionclassName = rsquodescriptionrsquo descriptioninnerHTML = keyDescription keyElementappendChild(description)

var css3dObject = new THREECSS3DObject(keyElement)

css3dObjectname = key return css3dObject

function InitScene() var camera = new THREEPerspectiveCamera(45

windowinnerWidth windowinnerHeight1 1000)

camerapositionset(0 0 200) var scene = new THREEScene() var key = CreateButton(rsquowrsquo rsquow keyrsquo) keypositionset(20 20 20) sceneadd(key)

var css3dRenderer = new THREECSS3DRenderer() css3dRenderersetSize(windowinnerWidth

windowinnerHeight)

documentgetElementById(rsquoscenersquo) appendChild(css3dRendererdomElement)

var trackballControls = new THREE TrackballControls(camera

css3dRendererdomElement)

trackballControlsminDistance = 50 trackballControlsmaxDistance = 1000

Următoarele iguri ilustrează stările unei taste ndash normalhover și tapped oate aceste stări se realizează olosind reguliCSS applicate elementelor de HML transpuse icircn THREECSS3DObjects și randate prin CSS3DRENDERER

Aceste clase CSS vor fi olosite icircn timpul interacțiunii dintretaste și Leap Motion Controller pentru a urniza eedback vizual

pentru acțiunile utilizatorului

LeapJS și Interacțiunea cu tastatura VirtualăInteracțiunea dintre tastatura virtuală și LeapMotion

Controller se va realiza prin ramework-ul LeapJS Inormațiaurnizată de ramework va fi actualizată repetitiv captacircnd datecu o recvență de 60 de cadre pe secundă

Din cauză că vom avea nevoie de inormații legate de pozițiamacircinii pe ecran și gesturile ăcute de către utilizator inițializareacontroller -ului este descrisă prin următoarele linii de codJavaScriptvar leapController = Leaploop( enableGestures true )

use(rsquoscreenPositionrsquo)leapControllerconnect()

Pentru a identiica ce el de acțiune intenționează să acăutilizatorul obiectul Frame urnizat de ramework-ul LeapJS artrebui luat icircn considerare

Obiectul Frame urnizează inormații importante captate icircnzona de detecție privind id-ul său rata de cadre curentă degetegesturi macircini pointables tool -uri spațiul de interacțiune și toto-dată un indicator pentru validitatea datelor urnizate Un Frame este considerat a i valid cacircnd conține date pentru toți itemiidetectați Pe lacircngă aceste atribute obiectul Frame urnizează șiun set de uncții cum ar fi dump() finger() hand() pointable()

rotationAngle() rotationAxis() rotationMatrix() scaleFactor()tool() toString() translation() Aceste uncții sunt oarte olosi-toare icircn procesul de interogare și procesare a datelor captate

Frame Event Callbacks sunt olosite pentru a gestionainormațiile despre gesturile recunoscute și pentru a lua măsurilenecesare Icircn primul racircnd poziția macircinii este transpusă pe ecranAcest lucru se ace olosind event -ul de hand detection după cumam arătat mai jos

var leapController = Leaploop( enableGestures true hand function (hand) var screenPosition = hand

screenPosition(handpalmPosition) screen position related logic implementation )

use(rsquoscreenPositionrsquo)

programareComunicare icircn timp real cu ajutorul LeapMotion și SignalR

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 15: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1542

15wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircn uncție de poziția macircinii pe ecran elementele de interes vor fi identificate ndash icircn acest caz tasta care urmează a fi apăsatăCa eedback pentru user vor fi olosite clasele CSS prezentate icircnsecțiunile de mai sus

Starea tapped este transpusă olosind inormații legate de ges-turi din Frame Object -ul curent Dacă există un gest keytap dupăinterogarea colecției de gesturi atunci tasta situată icircn acea pozițieicircși va schimba statusul și va fi adăugată la o colecție pentru a creaun mesaj care va fi trimis mecanismului de chat

ConcluziiFolosind ASPNET MVC și SignalR un mecanism de chat

online icircn timp real a ost implementat Combinacircnd THREEjs cuCSS3DRENDERER o tastatură virtuală 3D a ost creată olosindelemente HML stilizate prin CSS Interpretarea gesturilor use-rului ca ormă de interacțiune cu tastatura s-a putut realiza prinintegrarea LeapMotion Controller icircn aplicație olosind LeapJS și Leap-widgetsjs Rezultatul mixării acestor inormații este o

aplicație uncțională de web-chat icircn timp real avacircnd ca input otastatură interactivă care icircnțelege gesturile utilizatorului

Bibliografie[1] httpwwwevolutionofhewebcom

[2] httpsenwikipediaorgwikiHistory_o_the_World_Wide_Web

[3] httpsenwikipediaorgwikiAjax_(programming)

[4] httpsenwikipediaorgwikiWebSocket

[5] httpwwwaspnetsignalr

[ 6 ] h t t p w w w a s p n e t s i g n a l r o v e r v i e w g e t t i n g - s t a r t e d

tutorial-getting-started-with-signalr

[7] httpsdeveloperleapmotioncomdocumentationcppdevguideLeap_

Overviewhtml

[8] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Architecturehtml

[9] httpleapmotiongithubioleapjs-pluginsdocsscreen-position

[10] httpsgithubcomleapmotionleapjs-widgets

[11] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Frameshtml

[12] httpsdeveloperleapmotioncomdocumentationjavascriptdevguide

Leap_Gestureshtml

[13] httpthreejsorgdocs

[14] httpthreejsorgexamples

[15] httpsgithubcommrdoobthreejsblobmasterexamplescss3d_peri-

odictablehtml

George RusGeorgeRusyardicom

Software Developer Yardi Romacircnia

Daniela FatiDanielaFatiyardicom

Software Developer Yardi Romacircnia

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 16: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1642

16 nr 422015 wwwtodaysoftmagro

programare

De-a lungul anilor evoluţia a ost ul-minantă pornind de la un domeniu decercetare pură pacircnă la ceea ce numim otehnologie bdquomain streamrdquo

Domeniul I a cunoscut o evoluţieextrem de rapidă pornind acum doarcacircteva zeci de ani de la un simplu tran-

zistor Această evoluţie a avut două direcţiindash ușurarea activităţilor umane și acilitareacomunicării Apariţia bdquoInternet o Tingsrdquo-ului reprezintă un pas major icircn aceastăevoluţie Conceptul este unul extrem desimplu fiecare aparat poate fi conectat laInternet și accesat de la distanţă ndash indie-rent dacă este vorba de o centrală termicăsau de o icircntreagă abrică Potențialul esteuriaș - toate aparatele ce ne icircnconjoarădevin inteligente putacircnd colabora icircntre elesau cu diverse servicii online Un exem-

plu simplu icircl poate constitui o centralătermică Icircn prezent aceasta este reglată de pro-

ducător icircn abrică Utilizatorul poate doarparametriza centrala termică specificacircnd

de exemplu temperatura dorită icircntr-unanumit interval orar O centrală inteligentăintroduce o serie de parametri supli-mentari cum ar i prognoza meteo saucalendarul proprietarului Astel dacăproprietarul este icircn concediu iar tempera-tura exterioară urmează să scadă centrala

va porni icircn mod automat icircnainte ca pro-prietarul să revină din concediu pentruca acesta să fie icircntacircmpinat de o atmoserăplăcută la sosire otodată centrala termicăpoate fi optimizată de producător tot prinInternet prin intermediul actualizărilorsofware Icircn acest el Io-ul oeră o nouă viziune asupra interacțiunii om-mașină- totul devine interconectat și deci la icircnde-macircnă Icircnsuși avantajul oerit de Io devineicircnsă o armă redutabilă icircn macircna unorinractori digitali

Cu aceeași ușurință cu care este reglatăde la distanță centrala termică un atacatorpoate să o compromită

IoT de la device la cloud

Securitatea digitală a ost și este un subiect controversat Necesară dar extrem dedificil de implementat securitatea digitală constituie o provocare majoră atacirct pen-tru clienţi cacirct și pentru companiile ce oeră produse I al căror principal scop este

interconectarea sistemelor de automatizare

Leonard Pituleonardpitusiemenscom Senior Key ExpertResearch EngineerCT RTC ELE ELD-RO Siemens

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 17: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1742

17wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Icircncă din aza de concept a Io-ului a devenit clară necesitateaasigurării securității sistemelor digitale ce stau la baza acestuiaInterconectarea unor sisteme pacircnă de curacircnd izolate deschide

noi oportunităţi pentru atacatori indierent de motivaţia aces-tora după cum se poate observa și din presa de specialitate careaproape săptămacircnal prezintă noi vulnerabilităţi exploatate icircncadrul unor atacuri din ce icircn ce mai complexe

Prin natura lor sistemele izolate pot fi protejate mai ușor ndashsimplul apt că sistemul este inaccesibil publicului larg ușureazăaceastă sarcină Icircn cadrul unor sisteme de acest el au ost utilizațialgoritmi privați de securitate dezvoltați de cele mai multe ori decătre o singură companie ără un proces minuțios de evaluare aeventualelor breșe de securitate

Depășirea barierelor fizice realizată prin intermediul Io-

ului a icircnsemnat totodată și propagarea pe scară largă a noţiunilorde securitate criptografie și criptanaliză ndash noţiuni ce au permisunui public larg accesul la acest domeniu bdquoicircnchisrdquo numit bdquosecu-ritaterdquo Aceste apte au dus icircntr-un timp oarte scurt la invalidareaconceptelor și tehnologiilor considerate sigure Atacurile au rele- vat erori de concept greșeli de implementare dar și probleme icircnaplicarea politicilor de securitate

Virușii inormatici moderni au devenit din ce icircn ce maicomplecși avacircnd multiple mecanisme de colectare și propa-gare Spre exemplu virusul FLAME are o dimensiune de 20MBavacircnd probabil milioane de linii de cod Deține cinci mecanismeindependente de criptare a datelor și o bază de date SQL icircn care

stochează structurat datele colectate FLAME este capabil săinecteze un sistem inormatic ără a lăsa urme - nu există nici unproces icircn sistem care să indice existența sa icircn timp ce memoriaalocată de virus nu poate fi accesată de nici un proces utilizator

Dat fiind acest context a apărut pe cale naturală necesita-

tea dezvoltării unor noi concepte și modele de securitate Deșide cele mai multe ori extrem de complexe soluțiile s-au doveditineficiente icircn ața atacurilor moderne Dată fiind natura scala-bilă a Io-ului puține concepte de securitate au putut fi adaptatenoilor necesități Prin natura sa acesta expune date ce pot aectasera privată a oamenilor astel icircncacirct o cerință primordială a

noii ere o constituie asigurarea serei private a actorilor umaniRealizarea practică a acestui deziderat presupune utilizarea demetode criptografice alături de tehnici de autentificare și autori-zare ranserul online de date stă la baza Internetului și chiar a

societății moderne motiv pentru care securizarea acestuia a deve-nit imperios necesară Icircn acest el s-au cristalizat cerințele de bazăce ormează domeniul securității digitale icircn Io

Pentru a putea dezvolta soluții fiabile pe termen lung tendințaeste de a dezvolta aplicații simple dar scalabile Un exemplu icircnacest sens icircl constituie un urnizor de utilități care icircn mod curentare cacircteva milioane de utilizatori ndash toți acești utilizatori trebuie săpoată utiliza icircn mod sigur același serviciu simultan toți trebuiesă se autentifice să fie autorizați să poată vizualiza consumulși actura curentă date istorice și eventual să eectueze plăți Icircnacest context securitatea digitală a devenit parte integrantă aproceselor de dezvoltare influențacircnd atacirct arhitectura sistemelorhardware cacirct și a celor sofware Soluțiile sofware oeră flexibi-litate și pot fi dezvoltate icircntr-un timp mai scurt cu un eort maimic dar sunt mai susceptibile erorilor

Un exemplu icircn acest sens este clasica eroare de bdquobuffer over-flowrdquo care este extrem de ușor de exploatat ață de cele hardware

Soluțiile hardware pe de altă parte sunt mult mai greu de imple-mentat necesită un eort uman și financiar mai mare dar suntmai puțin susceptibile erorilor Crearea unui echilibru icircntresoluțiile hardware și sofware constituie soluția optimă pentrurealizarea unui sistem digital sigur Icircn prezent nu există nici unstandard care să oere o metodologie de determinare a acestuiechilibru ndash singura măsură o constituie experiența inginerilorproiectanți de sisteme inormatice și de securitate Icircn urma uneianalize de risc pot fi identificate principalele clase de atac icircmpo-triva cărora sistemul trebuie protejat

Mai apoi urmează identificarea respectiv dezvoltarea tehnolo-

giilor necesare pentru a proteja sistemul Arhitectura unui sisteminormatic poate fi schimbată drastic icircn uncție de potențialeleatacuri Introducerea unor nivele suplimentare de securitatepoate reduce perormanța sistemului ăcacircnd necesare modificărisuplimentare Icircn general nu este suficientă o singură metodă de

Figura 1 Numărul atacurilor de securitate este icircn conti-

nuă creştere (Data Breach Investigation Report 2014)

Figura 2 Securitatea digitală - o multitu-dine de tehnologii (wwwmicrosemicom)

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 18: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1842

18 nr 42decembrie 2015 | wwwtodaysoftmagro

protecție ci o multitudine otodată sistemele trebuie să fie active

și nu doar pasive sau reactive Astel un sistem trebuie să fie capa-bil să detecteze identifice și să reacționeze la atacuri de securitatesimilar sistemului imunitar al unui om oate aceste caracteristicidefinesc gradul de securizare pe care sistemul este capabil să icircloere

Un aspect important al dezvoltării soluțiilor de securitateicircl constituie verificarea acestora Din păcate nici aici nu existăstandarde care să asiste dezvoltatorii singurul ajutor fiind cacirctevaprocese de evaluare și de ghidare (bdquoguidelinesrdquo) Acest domeniueste unul aflat icircntr-o puternică schimbare momentan ăcacircndu-setranziția de la o verificare sumară bazată pe experiență perso-

nală la o verificare ormală bazată pe modele matematice

Sistemele inormatice ce stau la baza Io-ului sunt distri-buite pe o mare supraață geografică icircmpărțind astel problemasecurității icircntre bdquocloudrdquo și multitudinea de bdquothing-urirdquo Maimult bdquocloud-ulrdquo este icircn general reprezentat de un terț motivpentru care implementarea de soluții de securitate devine maidiicilă Pe lacircngă aspectul tehnologic este necesară adaptareacadrului legal care să permită exploatarea sigură olosindmetode criptografice puternice

Cursa dintre atacatori și bdquoprotectorirdquo este icircnsă departe de a

fi icircncheiată după cum se poate observa din numărul crescut al vulnerabilităţilor ce sunt exploatate icircn cadrul atacurilor de secu-ritate astel icircncacirct domeniul securităţii digitale va cunoaște noiculmi tehnologice icircn anii ce vor urma ranziția spre securitateaintrinsecă bazată pe proprietățile fizice ale unui circuit digital vacontracara atacurile fizice de securitate și va asigura dezvoltato-rilor sofware o ancoră de siguranță pentru a putea implementanoi modele de protecție Pe partea de bdquocloudrdquo noutatea majorăo va constitui criptografia homomoră care permite executarearespectiv procesarea datelor ără ca să fie necesară decriptareaacestora Această tehnologie va asigura utilizatorilor o seră pri- vată puternică ără a-i lipsi icircnsă de avantajele unei platorme

digitale distribuite

otodată ondarea unor organisme legislative gen bdquoCloudSecurity Alliancerdquo sau bdquoEuropean Cloud Partnershiprdquo anunțăpregătirea cadrului legal pentru vastul domeniu ce se anunță afi Io-ul

programare

Corporate Technology Romania

Figura 3 Topul celor 10 pericole de securitate (sursa Cloud Security Alliance)

IoT de la device la cloud

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 19: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 1942

19wwwtodaysoftmagro | nr 42decembrie 2015

De apt denumirea oicială esteECMAScript 2015 dar se pare că icircn cadrulcomunității ES6 este icircncă versiunea pe carecei mai mulți o recunosc

Voi expune și analiza mai jos cacirctevadintre icircmbunătățirile care mie personal icircmiplac și care cred că mă vor ajuta cel maimult Bineicircnțeles icircn uncție de tipul pro-iectului s-ar putea ca voi să găsiți utile alte

caracteristici

Cacircteva caracteristici majore noi

Funcții ArrowFuncțiile Arrow (săgeată) sunt o nouă

modalitate mai scurtă de a scrie uncții ano-nime Dacă ești un programator care preerăprogramarea uncțională cu siguranță icircți vorplăcea Iată un exemplu scurt

versiunea es6[1 2 3]map((item index) =gt

return item 2)

versiunea es5[1 2 3]map(function(item index) return item 2)

După cum puteți vedea am olosit cuvacircn-tul cheie rdquouncțierdquo care deja ne scutește deniște caractere dar lucrurile devin și maibune Dacă uncția Arrow necesită numaiun argument puteți scăpa de asemenea și deparantezele de deschidere și de icircncheiere dinlista de argumente

[1 2 3]map(item =gt return item 2)

Aceasta arată bine dar icircncă nu am ter-minat Mai există icircncă o icircmbunătățire pecare o putem ace aici dacă corpul uncției Arrow este numai o afirmație de returnareputem scăpa de paranteze și de asemenea șide cuvacircntul cheie rdquoreturnrdquo și vom obține cevade genul

[1 2 3]map(item =gt item 2)lter(item =gt item 3 === 0) this will return [6]

Acum să comparăm aceasta cu versiuneaES5

ECMAScript 6 ndash de ce și cum să icircl

folosim icircn prezent

P

entru aceia dintre voi care nu au auzit de ECMAScript vă inormăm că acesta estestandardul care definește limbajul de programare pe care noi icircl știm drept JavaScript

Ediția anterioară a standardului ECMAScript 5 a ost lansat la sacircrșitul anului 2009 cuicircmbunătățiri semnificative ale limbajului dar cu cacircteva uncții importante lipsă ECMAScript6 (ES6) a introdus icircn sacircrșit caracteristici pe care dezvoltatorii le așteptau de mulți ani

programming

Adrian UliciAdrianUlici3pillarglobalcom

Software Engineer3Pillar Global

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 20: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2042

20 nr 42decembrie 2015 | wwwtodaysoftmagro

programare

[1 2 3]map(function (item) return item 2)lter(function (item) return item 3 === 0

)

Există o ameliorare evidentă nu numai icircn aptul că putemscrie același cod cu mai puține caractere dar de asemenea icircn lizi-bilitatea codului Dacă nu aveți argumente la uncția voastră artrebui să utilizați următoarea sintaxă

const func = () =gt do something

Există un singur impediment pe care ar trebui să icircl luați icircnconsiderare spre deosebire de uncțiile anonime normale carecreează fiecare un context nou uncțiile Arrow vor păstra con-textul uncțiilor părinte Dezvoltatorii au avut probleme adesea icircnidentificarea contextului icircn care rula uncția lor aceasta ar trebuisă acă lucrurile puțin mai ușor de icircnțeles Iată un exemplu

documentbodyaddEventListener(rsquoclickrsquo function(event) consolelog(this)

rsquothisrsquo va face referință la elementul body)documentbodyaddEventListener(rsquoclickrsquo

(event) =gt consolelog(this) rsquothisrsquo va face referință la obiectul Window (adică contextul părintelui))

Deci nu puteți ace pur și simplu o căutare rapidă și săicircnlocuiți toate uncțiile anonime cu uncții Arrow pentru că vastrica ceva cu siguranță

ModuleO adăugire mult așteptată la JavaScript a ost abilitatea de acrea și icircncărca module Cu complexitatea icircn creștere a aplicațiilorweb era evident că această caracteristică trebuia să existe deaceea comunitatea JavaScript și-a asumat sarcina de a creacacircteva soluții pentru aceasta Cele mai populare sunt standardulCommonJS utilizat de Node JS și Browseriy și AsynchronousModule Deinition (AMD) utilizat de RequireJS Soluția ES6pentru module icircncorporează caracteristici de la ambele sistemede module populare dar adaugă și mai multă uncționalitate utilă

O schimbare importantă care a ost ăcută la modulele ES6este că ele au o structură statică adică importurile vor fi analizatestatic icircn timpul compilării Aceasta are un avantaj major deoarece

instrumentele de linting vor putea analiza mult mai bine codulnostru

Sintaxa modulelor ES6 ne oeră multiple moduri de a exporta

valori exporturi denumite (putem avea mai multe icircntr-un modul)și exporturi deault (numai unul pe fișier) Partea rumoasă estecă putem avea ambele icircn același modul Exporturile denumitearată așa

my_modulejsexport function helloWorld () consolelog(rsquoHello worldrsquo)

export const MY_CONSTANT = 5export let loremIpsum = rsquodolorrsquo

Aveți de asemenea opțiunea de a defini toate uncțiile vari-abilele pe care doriți să le exportați și apoi să le exportați separatdupă cum urmează

my_modulejsconst helloWorld = () =gt consolelog(rsquoHello worldrsquo)

const MY_CONSTANT = 5

let loremIpsum = rsquodolorrsquo

export helloWorld MY_CONSTANT loremIpsum

Icircn acest el este puțin mai vizibil ce exportați de apt dintr-unmodul Ca observație probabil ați observat că am utilizat rdquoletrdquopentru a declara variabila rdquoloremIpsumrdquo rdquoletrdquo este de asemeneaparte a specificației ES6 și este o modalitate nouă de a declara variabile Dierența dintre rdquoletrdquo și rdquovarrdquo este aceea că rdquo letrdquo estelimitat la bloc (block scoped ) icircn loc să fie limitat la uncție ( unc-tion scoped) (sau global dacă nu se află icircntr-o uncție) precumrdquovarrdquo

Acestea fiind spuse importul din module arată așa

mainjsimport helloWorld MY_CONSTANT from rsquomy_modulersquohelloWorld() va așa rsquoHello worldrsquo

sau importă toate exporturile denumiteimport as m from rsquomy_modulersquomhelloWorld()

Exporturile deault au o sintaxă scurtă sumjsexport default function (a b) return a + b

mainjsimport sum from rsquosumrsquo

alert(sum(4 5)) va așa rsquo9rsquo

Este posibil să avem ambele exporturi denumite și un exportdeault icircn același modul și aceasta ar arăta așa

modulejsconst func1 = () =gt

const func2 = () =gt Exportă valoarea default

export default function ()

Exportă valorile denumiteexport func1 func2

mainjsimport defaultFunction func1 func2 from rsquomodulersquo

Există un dezavantaj al acestei sintaxe de importare nu poatei utilizată icircn interiorul unui element de tip script (deoareceeste un element sincron) și nu puteți icircncărca un modul icircn mod

condiționat Există totuși o modalitate alternativă de a icircncărcamodule utilizacircnd un API Sintaxa arată așa

Systemimport(rsquomy_modulersquo)then(my_module =gt my_modulehelloWorld())catch(error =gt

ECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 21: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2142

21wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

alert(rsquoCannot load modulersquo)

)

PromisesDatorită naturii asincrone a JavaScript ne găsim adesea icircn

ceea ce este cunoscut drept rdquocallback hellrdquo adică multe uncțiicallback icircn alte uncții callback care reduc mult lizibilitatea

doSomething(param1 param2 () =gt doSomethingElse((param3) =gt doMore((param4) =gt andMore((param5) =gt Unde sunt ) ) ))

Cred că se poate vedea cum lucrurile pot deveni complicatedestul de rapid și cei mai mulți din dezvoltatorii JavaScript auicircntacirclnit situații ca și asta Promises sunt o alternativă la uncțiilecallbacks pentru a tatona codul asincron Ca și modulele existăcacircteva implementări open source pentru promises precum QRSVP sau Bluebird Popularul jQuery are un obiect Deerred

care oeră același tip de uncționalitate dar sintaxa sa este dierităși nu este conormă cu ES6

Promises sunt icircn ond obiecte care se pot afla icircntr-una dinurmătoarele trei etape

bull icircn așteptare așteptacircnd ca operația să se finalizeze Aceastaeste etapa inițială atunci cacircnd creăm un obiect Promise

bull icircndeplinite operația s-a finalizat cu succesbull respinse operația a eșuat

Fiecare obiect Promise primește o uncție callback drept para-metru Această uncție callback primește doi parametri o uncție uli ll (icircndeplinire) pentru operația inalizată cu succes iar o

uncție reject (respingere) pentru operația eșuată

Utilizarea de bază a promisiunilor arată cam așa

Denim o funcție asincronă (un apel de tip ajax de exemplu) care returnează un obiect Promiseconst myAsyncFunction = () =gt return new Promise((fulll reject) =gt facem ceva cu datele if () fulll(param1 param2) else reject(error)

)

Apelăm funcția asincronămyAsyncFunction()then((param1 param2) =gt consolelog(rsquoasync function nishedrsquo))catch((error) =gt consolelog(rsquoSomething bad happened rsquo + error))

Cea mai bună parte a promises este că ele se pot icircnlănțui ceeace aplatizează codul

myAsyncFunction()then(() =gt funcția myAsyncFunction a rulat cu succes return anotherAsyncFunction())then(() =gt funcția anotherAsyncFunction a rulat cu succes

)catch((error) =gt funcția myAsyncFunction sau funcția

anotherAsyncFunction a aruncat o eroare)

ClaseDa clasele au ajuns icircn sacircrșit icircn JavaScript Pe cacirct este de

anticipată această caracteristică pe atacirct este de controversată

deoarece există destul de mulți dezvoltatori care se opun intro-ducerii claselor deoarece javascript are deja o moștenire bazatape prototip care poate de asemenea să oere o moștenire clasică

Clasele icircn ES6 sunt icircn mare parte syntactic sugar deoareceacelași tip de uncționalitate ar fi putut fi creată utilizacircnd ES5 darintroducerea lor va permite viitoarelor ediții ale ECMAScript săle adauge mai multă uncționalitate Există deja cacircteva intenții dea extinde clasele icircn ES7 prin adăugarea variabilelor private și aaltor caracteristici

Sintaxa pentru clase arată așa

class Vehicle

constructor(type color) thistype = type thiscolor = color

getColor() return thiscolor

Aceasta va crea o clasă rdquoVehiclerdquo cu un constructor și ometodă rdquogetColorrdquo De asemenea puteți extinde clasele

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 22: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2242

22 nr 42decembrie 2015 | wwwtodaysoftmagro

Extindem clasa Vehicle

class Car extends Vehicle constructor(color maxSpeed) super(rsquocarrsquo color) thismaxSpeed = maxSpeed

getMaxSpeedFormatted() return thismaxSpeed + rsquokmhrsquo

let car = new Car(rsquobluersquo 200)consolelog(rsquoWe have a rsquo + cargetColor() +rsquo car with a max speed of rsquo +cargetMaxSpeedFormatted())

Veți observa că olosim rdquosuper(hellip)rdquo aici pentru a apela unconstructor părinte Cele mai multe dintre limbajele orientatepe obiect icircși dau această posibilitate drept o opțiune dar icircnJavaScript acest lucru este obligatoriu dacă suprascriem con-structorul rebuie să apelăm super-constructorul icircnainte de aicircncerca să accesăm rdquothisrdquo altel veți obține o eroare rdquoUncaught

ReerenceError this is not definedrdquoclass Car extends Vehicle constructor(color maxSpeed) maxSpeed = 06214 transform to miles You can do this before calling rsquosuperrsquo

thismaxSpeed = maxSpeed nu putem face referință la ldquothisrdquo Aceasta va arunca o eroare de tip ReferenceError super(rsquocarrsquo color)

Puteți apela alte metode pe clasa de bază nu numai construc-torul utilizacircnd rdquosupermethodName()rdquo

Dar aceasta nu este totul Există multe caracteristici noi icircn ES6 despre care trebuie să

știți cum ar fi noua modalitate de a declara variabile utilizacircndrdquoletrdquo sau valori deault pentru argumentele uncțiilor multemetode noi pentru prototipurile String și Array și mult maimulte Aceasta a ost doar o privire destul de generală dar spercă am reușit să vă ac să doriți să aflați mai multe

Pentru o listă mai extinsă a noilor caracteristici din ES6 vedeți specificația de limbaj aici httpwwwecma-internationalorgecma-26260

O altă resursă extraordinară dacă doriți să pătrundeți tainele

ES6 este cartea Doctorului Axel Rauschmayer rdquoExploring ES6rdquope care o oeră gratis cu generozitate icircn versiunea online aicihttpexploringjscomes6 sau puteți cumpăra cartea pentru a-isprijini munca aici httpsleanpubcomexploring-es6

Cum să utilizăm ES6 icircn prezentCum am putea utiliza și valorifica azi aceste caracteristici

ES6 a ost aprobat oficial din Iunie 2015 dar știm cu toții ca vadura ceva timp pacircnă cacircnd browser-ele vor implementa icircn icircntre-gime toate caracteristicile Browser-ele evergreen recuperează dinurmă destul de rapid dar chiar dacă vor implementa ES6 com-plet cei mai mulți dintre noi icircncă trebuie să oerim suport pentru

versiunile mai vechi de browser- știm cu toții că mă reer aici laInternet Explorer Deci cum putem să le utilizăm pe toate sau celpuțin un set din aceste caracteristici astăzi

Soluția Transpilers Există cacircteva transpilers de la ES6 la

ES5 disponibile icircn acest moment cu Babel JS și raceur fiindcele mai populare O listă actualizată cu cele mai utilizate com-pilatoare transpilers și suportul caracteristicilor lor (plus suportpentru browser ) pot fi găsite icircn tabelul de compatibilitate al kan-gax httpskangaxgithubiocompat-tablees6 La momentulscrierii acestui articol Babel JS (care a evoluat mult icircntre timpși este mai mult o platormă decacirct un transpiler acum vedețihttpbabeljsioblog20151029600) are cel mai bun suportcu peste 71 din caracteristici susținute ceea ce e destul de binepentru un transpiler

Babel și cele mai multe alte transpilers au de asemenea plu- gin-uri gulp (și Grunt) disponibile deci este ușor și rapid să leinstalați icircn sistemul vostru Priviți acest exemplu scurt și minimalde utilizare a Babel cu gulp

var gulp = require(rsquogulprsquo)var babel = require(rsquogulp-babelrsquo) gulptask(build-js function () return gulpsrc(rsquosrcappjsrsquo)

pipe(babel()) pipe(gulpdest(rsquodistrsquo)))

Concluzie

ES6 ne-a adus cu siguranță multe icircmbunătățiri de la simple syntactic sugars (precum clasele) pacircnă la caracteristicile noi șicomplexe cum sunt obiectele Promise și modulele Unele dintrecaracteristicile noi schimbă jocul (ex module obiectele Promiseetc) unele ne vor ace codul mai curat și mai lizibil (ex uncțiileArrow template strings etc) altele sunt pur și simplu utile (exmetode noi pentru mulțimi)

Această nouă lansare a ECMAScript nu numai că va schimbamodul icircn care scriem JavaScript dar de asemenea va modificamodul icircn care gacircndim și ne organizăm codul JavaScript Cu altecuvinte ne va ace viața mai ușoară

Referințehttpwwwecma-internationalorgecma-26260

httpexploringjscomes6

httpsgithubcomlukehobanes6eatures

programareECMAScript 6 ndash de ce și cum să icircl folosim icircn prezent

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 23: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2342

23wwwtodaysoftmagro | nr 42decembrie 2015

La el ca icircn orice activitate managerialămanagementul calității ar trebui să icircnceapăcu stabilirea unui obiectiv și cu un plan icircncare să se detalieze

bull oate activități le ce se vor executa icircn vederea atingerii obiectivului stabilit

bull Resursele necesare pentru icircndeplinireaactivităților

bull Frecvența și durata de timp alocatacestor activități

bull Măsurătorile pentru monitorizareaactivității ndash pentru a ne asigura că lucrurilemerg icircn direcția corectă

bull Programarea sesiunilor retrospective ndashpentru evaluarea și revizuirea rezultatelorobținute icircn urma aplicării planului

De asemenea se recomandă includereaicircn plan a criteriilor de succes și a ROI (returno investment) adus de aceste activități

ObiectivulPe scurt calitatea unui produs sau

serviciu este ceea ce dierențiază produ-sul nostru icircn comparație cu produsele

similare ale competitorilor acel ceva ce aceca rezultatul muncii noastre să ie remar-cat icircn contextul actual al pieței produselorsofware Calitatea ar trebui să fie obiectivulfinal al tuturor activităților noastre ndash oricealtceva este doar o unealtă o metodă unmijloc prin care să ne atingem acest scop sauobiectiv

Calitatea este o sumă a mai multorobiective (sau criterii) de calitate ce tre-buie stabilite clar icircncă din primele etape aleciclului de viață al unui proiect Criteriile decalitate trebuie definite și acceptate de toți ceiimplicați icircn proiect Un rol important icircn acestdemers icirci revine icircn mod obligatoriu echipeicu icircntregul suport managerial al acesteiaDar este recomandabil ca și doleanțele clien-tului să fie luate icircn considerare Bineicircnțelesobiectivele de calitate trebuie să fie definite

și ormulate inteligent (specific measurableachievable relevant și time-bound ) pentru afi icircntr-adevăr utile și ușor de monitorizat

Obiectivele de calitate ajută echipa deproiect icircn eficientizarea modului de lucru

Quality Assurance 101

Icircntr-un articol mai vechi publicat aici icircn SM am icircncercat să clarific ce este bdquoQuality Assurancerdquo și cum se potrivește icircntr-un proiect agile Icircn prezentul articol voi continuacu descrierea primilor pași ce trebuie ăcuți icircn definirea și implementarea unui proces

de management al calității icircntr-un proiect de dezvoltare sofware

Vasile Selegeanvasileselegeanisdceu

QA OfficerISDC

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 24: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2442

24 nr 42decembrie 2015 | wwwtodaysoftmagro

dar și icircn evaluarea rezultatelor muncii icircna-inte de finalizare prevenind ca eventualedeecte sau neconcordanțe să ie livrateclientului

Obiectivele de calitate nu trebuie con-undate cu specificațiile neuncționale (NFRndash non-unctional requirements) cunos-cute și sub numele de atribute ale calității(quality attributes) Acestea din urmă sepresupune că se reeră explicit sau nu lao nevoie a utilizatorului cum ar fi uptimesau numărul de conexiuni concurente ce artrebui suportate de o aplicație web AcesteNFR ac obiectul arhitecturii sau manage-mentului inrastructurii proiectului

Cacircteva exemple de obiective de calitatear fi

bull rdquoReducerea numărului de deecte

cu 25 icircn următorul trimestru ață detrimestrul anteriorrdquo ndash presupunacircnd cănumărul de deecte raportate icircn cursultrimestrului anterior este cunoscut

bull rdquoProcentajul timpului alocat pentrure-work să ie menținut sub 25 dintimpul total petrecut icircn development icircnfiecare sprintrdquo

bull rdquo Icirc m b u n ă t ă ț i r e a e i c a c i t ă ț i iactivităților interne de testarerdquo ndash prinixarea ratei de detectare a deectelor(deecte raportate icircnainte și după livrare)

la un nivel de să zicem 90 la fiecarelivrare sau per versiune

Un exemplu de obiectiv de calitategreșit este rdquoreducerea numărului de deectecu 25 icircn fiecare sprintrdquo Nu este ceva cepoate fi atins (matematic) și nici delimi-tat clar icircn timp spre deosebire de primulexemplu din lista de mai sus

ActivitățileCe activități ar trebui executate pentru

atingerea scopului definit prin obiectivele

de calitate Acestea pot fi grupate icircn treicategorii acțiuni de prevenție activități deevaluare și activități de repararecorect

Acțiunile preventive includ activitățieducative astel icircncacirct membrii echipeide proiect să icircși poată icircndeplini mai binesarcinile pentru a eicientiza olosireacunoștințelor proprii sau ale utilitarelorce le stau la dispoziție Activitățile de cer-cetare-dezvoltare (RampD) care conecteazămembrii echipei la noutățile din domeniuplanificările și activitățile de monitorizareși măsurare se icircnscriu și ele icircn această cate-gorie a acțiunilor preventive Acțiunilecorective pot să ie astel declanșate dintimp icircnainte ca eventualele inconsistențesau inadecvări din produs sau metode delucru să devină adevărate probleme

Evaluările trebuie icircn primul racircnd săfie obiective și să fie ăcute ținicircnd cont deun set de standarde așteptări sau modelActivitățile de evaluare includ revizuiriletestele și auditurile

Orice rezultat al muncii unei echipepoate fi evaluat cerințele ormalizate aleclientului (requirements) produsul icircn sineorice plan sau documentație create de-alungul perioadei de viață a proiectului

precum și activitățile zilnice executate decătre echipă ndash al căror rezultat este produ-sul final Pe lacircngă requirements arhitecturasau configurația produsului sofware poateconstitui subiectul unei evaluări care să-iasigure pe membrii echipei că rezultatulmuncii lor este corect și complet iar peclienți că nevoile de business icirci sunt luateicircn considerare și implementate Chiarși elul icircn care o echipă icircși desășoarăactivitățile de zi cu zi poate fi ameliorat icircnurma unei evaluări ăcute corect și la timp

Activitățile de testare și revizuire suntbinecunoscute ndash nu trebuie detaliate aiciAuditurile icircn schimb necesită cacircteva clari-ficări trebuie executate de către un auditor independent și calificat din aara echipeide proiect (de ex un coleg arhitect senioratunci cacircnd este vorba de arhitecturasotware a proiectului sau un consultantextern dacă se dorește evaluarea produ-sului din perspectiva unui standard cumar i ISO) Auditurile trebuie planiicate din timp scopul și obiectivele trebuiecunoscute și asupra lor trebuie convenitcacirct mai devreme de la icircnceperea proiectu-lui Obiectivele pot fi definite icircn interiorulproiectului sau organizației (chiar dacădupă un model extern cum este mode-lul CMMI) sau pornind de la un set destandarde la nivelul industriei sotware

Constatările auditului trebuie incluseicircntr-un raport iar acestea trebuie aduse lacunoștința tuturor celor interesați

Constatările (ie neconcordanțe iebune practici fie sugestii de icircmbunătățire) vor fi transormate icircn action points cu unresponsabil și cu termen clar de execuțieAcestea vor ace obiectul unei sesiuniextraordinare de re-evaluare ca parte asesiunii curente de audit

Acțiunile de f ixarereparare constauicircn tot eortul necesar pentru depana-rea sau corectarea deectelor descoperiteicircn produsul muncii echipei ie icircnainteie după livrare Icircn domeniul nostru deactivitate acestea sunt cunoscute ca bug ixing dar NU trebuie limitate doar laasta Procesul de dezvoltare al produsuluipoate fi ajustat la nevoie structura echi-pei se poate schimba dacă este necesar iarlista rămacircne deschisă Bineicircnțeles oriceschimbare trebuie precedată de o analizăriguroasă ndash nu ne-am dori să descoperim

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 25: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2542

25wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

că implementacircnd o schimbare costul aso-ciat va depăși bugetul alocat sau mai răusă constatăm că rezultatul nu este conormașteptărilor ori necesar

ResurseleSunt trei rdquoactorirdquo ce contribuie și

inluențează dinamica unei echipe deproiect membrii echipei (disponibilitateaacestora cunoștințele și caliicările lor)tehnologia (ce sprijină și dă posibilitateamembrilor echipei să-și ducă munca labun sacircrșit icircntr-un mod eficient) și proce-sele de lucru (elul icircn care membrii echipeiicircși olosesc zilnic cunoștințele și tehnologiaavută la icircndemacircnă) Icircn orice moment pedurata de viață a proiectului toate acestetrei rdquoingredienterdquo trebuie să fie icircn echilibruBineicircnțeles fiecare dintre resursele amin-

tite aici vin cu un cost asociat ce trebuieavut de asemenea icircn vedere ndash cel puțin dinperspectiva rentabilității proiectului

Din punctul de vedere al asigurăriicalității costul asociat acesteia (CoQ) sepoate rezuma icircn următoarea ormulă

CoQ = CoP + CoN + CoA

Undebull CoP este costul activităților pre-

vent ive upgrade-uri le hardware sau

sofware costurile instructajelor sau alecursurilor necesare activitățile de plani-ficare și analiză etc

bull CoN reprezintă costul reparațiiloreortul necesar pentru fixarea deectelorretestarea fixurilor costul livrării modi-icărilor rescrierea unor componentesau (icircn cazuri extreme) a icircntreguluiprodus Este probabilă și nevoia pentruasigurarea de suport constant 247 cli-entului atunci cacircnd este necesar nevoilorsale de business iar lista rămacircne dinnou deschisă

bull CoA reprezintă costul activitățilorde evaluare timpul necesar pentru revi-zuiri (nu numai pentru codul livrat darși planurile documentația arhitecturiisau procesele de muncă trebuie revizuiteperiodic) testarea ndash pentru prima dată-a produsului sau a ultimelor modificări veriicările și validări le independenteprecum și costul sesiunilor de audit

Scopul unui plan de management alcalității corect cu șanse reale de reușită

va fi menținerea costului total al calității(CoQ) la un procent acceptabil icircn cadrulcostului total al proiectului prin echi-librarea constantă a costurilor asociateactivităților de prevenire și evaluare astel

icircncacirct costul activităților de fixare să fie cacirctmai mic

Costul asociat activităților de asigurarea calității pot fi suportate intern icircn cadrulorganizației sau pot fi partajate cu clientulndash presupunacircnd că icircn timpul negocierilordepartamentul de vacircnzări are toate datelenecesare pentru a-l convinge că este icircninteresul său Existența unor exemple desucces a activităților de QA este un atuicircn plus icircn macircna departamentului de vacircn-zări colegii noștri putacircnd dovedi unorpotențiali clienți că investind timp saubani icircn activități de evaluare pot obține unprodus la un cost total mai mic prin redu-cerea numărului de deecte și implicit acosturilor necesare fixării acestora

Frecvența și durata

Unele dintre activitățile descrise maisus se icircntacircmplă o singură dată altele tre-buie eectuate periodic sau constant peicircntreaga durată de viață a proiectului

Activitățile singulare sunt cele de elulnegocierilor ce preced semnarea unui con-tract sau planificarea și estimările inițialehigh-level Din perspectiva asigurăriicalității stabilirea obiectivelor de calitatedefinirea procedurii de măsurare și moni-torizare recvența cu care se colecteazămăsurătorile identificarea competențelor

tehnice necesare icircndeplinirii sarcinilorde proiect și evaluarea din acest punct de vedere a persoanelor disponibile creareaplanurilor manageriale sunt exemple deastel de activități singulare Din momentulicircn care acest tip de activități sunt icircncheiateiar rezultatul lor (planificări documente)sunt aprobate de către cei responsabilieste puțin probabil ca acestea să se maimodiice pe icircntreaga durată de viață aproiectului Dar aceasta nu icircnseamnă cănu trebuie să acă subiectul unei revizu-iri periodice Periodicitatea procesului de

revizuire și actorii ce pot declanșa aceastatrebuie descrise un contract se poaterevizui sau icircnnoi anual ori icircn caz de orțămajoră Arhitectura unui produs sofwaresau etapele (milestones) dezvoltării acestuiapot de asemenea sueri modificări care vordeclanșa la racircndul lor revizuiri sau chiarmodiicări ale tuturor planurilor mana-geriale asiguracircndu-se astel alinierea cunevoile de business și obiectivele clientuluiși ale organizației din care acem parte

Revizuirea veriicarea validarea șimonitorizarea tuturor aspectelor ce com-pun un produs trebuie eectuate continuufie că este vorba de requirements cod scrismanuale de utilizare sau procesele de

producție Fie că se icircntacircmpla zilnic săptă-macircnal sau per sprint acestea trebuie să fieicircntotdeauna icircn vederea icircntregii echipe deproiect

Sesiunile de audit trebuie de aseme-nea planificate Planificarea nu trebuie săconțină datele sau durata exactă a acestoradar recvența (anual semestrial sau o datăla fiecare release major) setul de reguli saustandarde aplicate precum și procedurade audit (intern extern bazat pe interviurisau pe observație independentă) trebuiedescrise icircn planificarea activităților de asi-gurare a calității

Monitorizarea obiectivelor de calitateDin momentul icircn care obiectivele de

calitate sunt deinite și schița planului

de asigurare a calității este disponibilămembrii echipei de proiect icircmpreună cuconducerea organizației (sau orice altepersoane interesate icircn bunul mers al pro-iectului) se angajează să urmeze acest planObiectivele de calitate devin scopuri icircn sinepentru membrii echipei și este icircn responsa-bilitatea managerului de proiect ori a alteipersoane desemnate special pentru asta caaceste obiective să fie atinse icircn intervalul detimp și bugetul alocat

Pentru monitorizarea corectă aactivităților legate de asigurarea calității șia fi siguri că echipa urmează calea plani-ficată trebuie definit un set de măsurătorispeciice iecărui obiectiv icircmpreună curecvența de colectare și analiză a acestormăsurători Lista de tool -uri disponibilepentru monitorizarea măsurarea și rapor-tarea activităților din cadrul unui proiecteste suicient de mare icircncepacircnd cu Jirasau FS pentru managementul timpuluisau altor aspecte ce țin de activitățile zil-nice icircntr-un proiect (bugs work items user

stories) și mergacircnd pacircnă la tradiționalulExcel pentru consolidarea rezultatelor șiprezentarea acestora icircntr-o ormă graficăatrăgătoare

ipurile de issues sau stories precumși etapele dezvoltării (sau reparației) aces-tora tranzițiile de la idee la produsul finalpot i personalizate icircn Jira ndash de exem-plu- astel icircncacirct să relecte cacirct mai bineobiectivele de calitate asupra cărora s-aconvenit Astel se pot identifica număra

sau filtra oarte ușor activitățile legate dequality assurance precum și eventualelecosturi asociate Icircnregistrarea estimăriiinițiale pentru iecare work item trebuieicircncurajată iar progresul icircn cazul fiecărui

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 26: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2642

26 nr 42decembrie 2015 | wwwtodaysoftmagro

asemenea work item trebuie monitorizatconstant de-a lungul icircntregii durate de viață a proiectului

Icircn acest el deviațiile tendințele poti identiicate și olosite mai apoi pentruicircmbunătățirea predictibilității tuturoractivităților din proiect Icircnregistrareaoricăror neconormități trebuie ăcutăolosind un issue type corect ceea ce va

permite mai tacircrziu icircn cadrul procesuluide analiză identiicarea corectă a surseiși a momentului raportării Se stabileștedacă problema a ost descoperită icircn azade review la testare sau icircn cel mai rău cazraportarea vine de la client

Numărul neconormităților sau alproblemelor legate de calitate precum șitimpul petrecut pentru analiza și rezol- varea lor po ate i as t el monitori zatseparat de activitățile rdquonormalerdquo din cadrul

proiectului iar aceasta poate urniza multeinormații despre calitatea produsuluisau a activităților din proiect icircn generalAceste inormații pot i prezentate icircntr-o ormă graică sugestivă astel icircncacirct săse poată observa clar tendințele pentruperioada următoare Mai departe pe bazaacestor direcții observate bunele practicidin rutina zilnică pot fi olosite ca o bazăicircn definirea unor noi obiective de calitate

sau promovate și icircn alte echipe de proiectIcircn mod similar practicile al căror rezultateste sub așteptări sau sunt cauza creșteriinumărului de issues pot fi atacate din timpși stopate icircnainte să devină incontrolabile

O dată ce o acțiune chiar document dincele descrise mai sus icircși dovedește utilitateape baza măsurătorilor poate fi reolosităicircn alt proiect sau chiar să devină standardintern al organizației Măsurătorile colec-tate de-a lungul timpului pot constitui de

asemenea argumente puternice icircn avoa-rea oricărei practici icircn momentul icircn cares-ar dori prezentarea acestora ca un studiude caz unui potențial client Și reciprocaafirmației de mai sus este adevărată măsu-rătorile colectate pot convinge mult maiușor orice echipă sau persoană să renunțela o rutină al cărei rezultat nu este conormașteptărilor

RetrospectivaReprezintă momentul de reflecție deevaluare a activităților legate de asigurareacalității executate pacircnă la acel momentSesiunile retrospective trebuie planificatela intervale regulate sau după atingereaunui milestone A icircntacircrzia această sesiunepacircnă la finalizarea produsului nu este reco-mandată deoarece puține lucruri mai potfi icircmbunătățite icircn acest moment Lecțiileicircnvățate icircn perioada scursă de la ultimasesiune retrospectivă trebuie notate și

Fig 1 - Un exemplu de workflow extins icircn Jira

Fig 2 ndash Reprezentare grafică a măsurătorilor colectate

programareQuality Assurance 101

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 27: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2742

27wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

olosite la icircmbunătățirea managementuluiasigurării calității pentru următoarea peri-oadă icircn toate aspectele sale planiicareresurse obiectivele de calitate definirea șicolectarea măsurătorilor sau activitățile ce vor fi executate

Icircn concluzieCalitatea oricărui produs sau activitate

este de o importanță capitală icircn lumea deazi Scopul inal al unui proiect de dez- voltare sotware trebuie să ie realizareaunui produs de calitate nu doar imple-mentarea de noi uncționalități Un nivelicircnalt de calitate ndash fie că este vorba de pro-dusul final sau de elul icircn care o echipă icircșidesășoară activitățile zilnice - trebuie sărămacircnă o preocupare constantă a fiecăruimembru al echipei Pentru atingerea aces-

tui obiectiv echipa trebuie să-și identificeobiectivele de calitate și de asemenea săicircși planifice toate activitățile legate de acestscop Beneiciile investițiilor icircn asigura-rea calității ăcute complet și corect sunt

infinite icircn termeni de satisacție a clientu-lui și a echipei prin diminuarea număruluide deecte posibile (și deci a eortului nece-sar reparării acestora) icircn produsul inallivrat clientului De asemenea investițiaicircntr-un plan stabilit icircncă de la icircnceputuloricăror activități poate asigura economiiimportante mai tacircrziu

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 28: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2842

28 nr 422015 wwwtodaysoftmagro

Deoarece Jenkins poate eectua o listăextensivă de task-uri prin multitudinea de plugin-uri disponibile el poate i olositicircn dezvoltarea a aproape oricărui proiectindierent de limbaj sau de arhitectură

Eu icircncă nu am găsit proiect icircn realiza-rea căruia Jenkins să nu mă poată ajuta cuautomatizarea unui task ocmai din acestmotiv Jenkins este unul din cele mai olo-site soluții de CI și de multe ori primulserver de CI icircntacirclnit de un junior

Instalare și configurare Jenkins poate fi instalat pe oricare din sis-temele de operare populare fie printr-un

pachet nativ (Windows UbuntuDebianRed HatFedoraCentOS Mac OS X open-SUSE FreeBSD OpenBSD sau Gentoo) fieprin bdquojava -jar jenkinswarrdquo (Pe Windowsacesta poate fi setat și ca windows service

după instalare) Odată instalat Jenkins poate i acce-

sat printr-un browser la localhost 8080aceasta fiind adresa deault Adresa poate

i ușor reconigurată prin intermediulintereței aceasta fiind și principalul modde a interacționa cu Jenkins

Următorul pas după instalare ar tre-

bui să fie securizarea serverului deoareceimplicit Jenkins se instalează nesecurizatoricine cu acces la server are control totalasupra task-urilor și configurărilor Pentrua securiza Jenkins icircncepem prin a navigala ldquoManage Jenkinsrdquo urmat de ldquoSetupSecurityrdquo

Meet Jenkins

Dacă citești această revistă cel mai probabil lucrezi icircn I și dacă lucrezi icircn I eși mai probabil să fi auzit sau chiar lucrat cu Jenkins sau cu ostul Hudson Dela QA la Dev DevOps BA PM DM și așa mai departe toți interactionează cu

Jenkins sau cu un alt server de Continous Integration

programare

Răzvan Ariciucrazvanariciucyondercom

QC engineer Yonder

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 29: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 2942

29wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

Icircn această pagină avem mai multe opțiuni pentru securi-zare (Legacy mode Logged-in users can do anything Matrix-basedsecurity Project-based Matrix Authorization Strategy) Cel maiolosit mod fiind Matrix-based security icircn care se setează drepturipentru fiecare utilizator și pentru fiecare tip de task pe care acestaicircl poate eectua

Dacă olosiți acest mod de securizare va trebui să fiți atențila majuscule minuscule deoarece ldquoAdminrdquo ldquoadminrdquo suntconsiderați utilizatori dieriți Al doilea aspect la care trebuie săacordați atenție sunt drepturile atribuite user -ilor Este oarte ușorsă ajungeți icircn situația icircn care nu aveți un user cu drepturi depline

(un admin)

Dacă vă găsiți icircn această situație urmați pașii de la linkulurmător ( httpswikijenkins-ciorgdisplayJENKINSDisable+security )

Jenkins JobJenkins oeră posibilitatea creării mai multor tipuri de job

(proiecte) sau copierea unui job existent Orice job se creează prinaccesarea opțiunii bdquoNew Itemrdquo din Dashboard urmat de tipul de job dorit acesta fiind posibil doar dacă utilizatorul are drepturile

necesare Icircn caz contrar opțiunea de bdquoNew Itemrdquo nu este afișată

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 30: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3042

30 nr 42decembrie 2015 | wwwtodaysoftmagro

Esența unui job (proiect) icircn Jenkins este de a automatizaacțiunile care altel ar trebui executate manual Numărul de pașiacțiunile executate de fiecare pas și rezultatul fiecărui pas depindde modul icircn care au ost configurați și dieră enorm de naturaproiectului Icircnsă icircn general orice job icircn Jenkins va avea urmă-toarea structur

Indierent de scopul unui job o configurare este absolutnecesară cea de bdquoBuildrdquo Icircn acest pas se setează acțiunea pe caretrebuie să o execute acest job

Pe lacircngă setarea pasului de bdquoBuildrdquo icircntr-un job Jenkinsicircn uncție de plugin-urile instalat pe server pot fi setați următoriipași și nu numai

bull transmiterea de parametri către jobbull pași premergători jobului care pregătesc mașina pe care

va fi executat jobulbull pas pentru a seta locația fișierelor sursăDe obicei ele sunt

păstrate pe un VCSbull momentul icircn care jobul să se execute (icircn bdquoBuild riggersrdquo)bull pași post bdquoBuildrdquo pentru generarea rapoartelor pen-

tru a porni alte joburi pentru a trimite notificări sau pentruclean-up

Configurări adiționaleVersatiliatea lui Jenkins constă icircn aptul că este susținut de o

comunitate care adaugă constant noi unctionalități prin inter-mediul plugin-urilor Cum pentru smartphone există vorbabdquoTerersquos an app or thatrdquo pentru Jenkins echivalentul ar fi bdquoTerersquosa plugin or thatrdquo Dezavantajul este la el ca și icircn cazul app-urilorcă multe pot fi out-dated iar calitatea și perormanța depind totalde autorul plugin-ului

Icircn Jenkins plugin-urile pot fi adăugate șterse actuali-

zate prin bdquoManage Pluginsrdquo din bdquoManage Jenkinsrdquo La instalareJenkins are un set minim de plugin-uri icircnsă pentru a te puteaolosi eficient de Jenkins mai multe plugin-uri ar trebui instalate

Dintre plugin-urile pe care le-am olosit aș vrea să lemenționez pe următoarele

bull Subversion Plug-in Ant Plugin GitLab Plugin ndash pentrubuild management

bull Cucumber Reports Plugin JUnit Plugin CheckstylePlug-in ndash pentru rapoarte

bull Email Extension Plugin ndash pentru configurarea email-urilorbull Configuration Slicing plugin ndash permite configurarea simul-

tană a mai multor joburi

programareMeet Jenkins

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 31: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3142

31wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Pe lacircngă instalarea plugin-urilor Jenkins mai are nevoie deconfigurarea unui server de E-mail dierite configurări pentruGit Maven Ant Java icircn uncție de nevoi Icircn general orice plugin nou adaugă setări ce se pot configura la nivel global pentru acelplugin oate aceste configurari se ac icircn bdquoConfigure Systemrdquo

Concluzie Am parcurs icircn linii mari tot ce trebuie să știți pentru

a putea instala configura și crea un proiect icircn Jenkins icircnsă camulte tool -uri open-source ce au o comunitate mare icircn spatemodul de configurare și scopul icircn care poate fi olosit variază dela un proiect la altul

Principalele aspecte de care ar trebui să țineți cont cacircnddecideți să olosiți Jenkins ca server de CI sunt cerințele de CPUmemorie și spațiu de stocare Jenkins nu este un tool finisat șioptimizat din punct de vedere al perormanței și a resurselor iarplugin-urile bdquo3rd partyrdquo vin cu riscuri icircn această privință

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 32: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3242

32 nr 42decembrie 2015 | wwwtodaysoftmagro

Cu toate acestea există anumite proiecte unde olosirea unui ramework complet este percepută drept o povară pentru dezvol-tatori Microservicii individuale mici prototipuri site-uri web decomplexitate redusă API-uri simple uncționalitate mock Iatăcacircteva cazuri icircn care programatorul ar preera să beneficieze doarde amprenta redusă a unor librării Acesta este momentul icircn caremicro- ramework-urile intră icircn scenă icircnchegacircnd aceste librăriicu costuri minimale

Icircmpreună vom construi o aplicație pentru managementuldatelor despre vehicule pentru a putea fi inormați atunci cacircndanumite operații trebuie eectuate Acest lucru se va desășura peparcursul cacirctorva articole

Iată un roadmap succint

1 pregătirea proiectului și a dependințelor suport DD șicapabilități de logare

2 design al API-urilor RESul BDD olosind Behat3 implementarea API-uri definite la pasul anterior4 mediu de dezvoltare cu Vagrant și Ansible automatizarea

proceselor de build integrare continuă

Icircn lumea PHP micro- ramework-urile au devenit cetățeni deprim rang icircn urmă cu mult timpSlim Flight Limonade GluePHP

Phlyty sunt doar cacircteva exemple cunoscute Noi vom icircntrebuințaSilex care are la bază componente ale mai popularului Symony

Pentru a ne orma o idee despre cacirct de suplu e Silex să aruncămo privire asupra container -ului său de injectare a dependințelor(Pimple) și să vedem cum se compară cu cel de la Symony(imaginea este preluată dintr-o prezentare a lui Igor Wiedler)

Pregătirea proiectuluiSă icircncepem prin crearea unui nou proiect pregătim un direc-

tor nou de lucru și icircl accesăm Mai jos olosesc o cale absolută pemașina mea de lucru

$ mkdir -p UsersgSiteslearnsilex-tutorial$ cd UsersgSiteslearnsilex-tutorial

Instalare Composer

Pentru managementul dependințelor vom utiliza ComposerVine icircmpachetat sub orma unei arhive Phar deci trebuie să fimatenți să avem extensia phar activată icircn phpiniextension=pharso să nu e comentată această linie

Personal preer să am Composer instalat global deoarece icirclolosesc la aproape toate proiectele mele Mai jos este o linie decomandă care eectuează această instalare (avem nevoie de sudo)

$ curl -sS httpsgetcomposerorginstall-er | sudo php -- --install-dir=usrlocalbin

--lename=composer

Declararea Silex drept dependințăUrmătorul pas este crearea fișierului composerjson cu ajuto-

rul căruia vom ace managementul dependințelor

rdquorequirerdquo rdquosilexsilexrdquo rdquo1rdquo

Icircn directorul de lucru vom executa următoarea comandă$ composer install

Aceasta nu doar că ne va instala Silex și toate dependințeledeclarate ale acestuia dar va crea de asemenea un fișier numitcomposerlock care va conține o stare cunoscută a tuturordependințelor deja instalate

Primul requestA venit momentul să pregătim o mică strategie pentru aranja-

rea fișierelor proiectului nostru Este considerată o bună practicăpăstrarea ișierelor accesibile public icircntr-un director separatașadar noi vom olosi web icircn acest scopIcircncărcarea resurselor șialte chestiuni de bucătărie internă le vom avea icircn appbootstrapphp Iată cum plănuim să aranjăm fișierele și directoarele

De la Zero la RESTful icircn 4 pași

Fundația

Dezv o l tarea de ap l ic a ț i i icircn mod proes ion is t o los in d LAM P impu n e u n ramew ork modernA c e s t a s t a n d a r d i z e a z ă m o d u l icirc n c a r e m u n c i m icirc n p r i m u l r acirc n d p r i n o l o s i r e a u n e iorganizări predictibile a codului și a fișierelor și icircn al doilea racircnd pentru că vine la pachet cu utilități și librării de bazăMai mult decacirct atacirct un ramework abordează noțiuni de securitate la baza sofware-ului este un actor cheie icircn icircmbunătățirea

muncii de echipă prin impunerea standardelor de codare și integrarea mai ușoară icircn echipă a noilor colegi Mai mult icircn spatele săustă o comunitate și ne ace mai eficienți pentru că ne ajută să ne concentrăm icircn primul racircnd pe uncționalitatea proiectului nostru

programare

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 33: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3342

33wwwtodaysoftmagro | nr 42decembrie 2015

TODAY SOFTWARE MAGAZINE

Fișierul de bootstrap defineste obiectul aplicației Silex și icircl

returnează Conținutul fișierului accesibil public e oarte simplu

instanțiază acest obiect și icircl rulează prin apelarea metodei run()a acestuia

Iată cacirct de ușor ne olosim de caracteristica autoload aComposer

require_once(__DIR__ rsquovendorautoloadphprsquo)

Această linie simplă ne salvează de multă muncă deoarece vaști să icircncarce orice clasă din directorul vendor ără să fie necesarsă acem asta manual de fiecare dată

Haideți să vedem ce se icircntacircmplă dacă accesăm direct fișierulwebindexphp

Iată cum Silex răspunde cererii noastre Ne indică aptul că

nu are idee ce ar trebui să acă icircn cazul cererii noastre deoarecenu am definit niciun comportament al aplicației pacircnă icircn acestmoment E timpul să adăugăm unul

Să definim așadar un comportament simplu care serveștecereri de tip GE și răspunde cu un text simplu Vom ace astadefinind un șablon de rutare care este compus din șablonul icircnsine (rsquorsquo in exemplul de mai jos) metoda HP la care poate fi

accesat șablonul (verbul get() apelat pe obiectul aplicație) uncțiade tip closure care va fi executată

$app-gtget(rsquorsquo function () return rsquoUp and runningrsquo)

Dacă ne dorim ca această uncție closure să fie executată pen-tru mai multe metode HP putem olosi abordarea de mai jos

$app -gtmatch(rsquorsquo function () return rsquoUp and run-ningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Să interpretăm puțin acest cod prima dată căutăm potrivireacu șablonul apoi atașăm uncția de tip closure după care specifi-căm lista metodelor la care poate fi accesat acesta

Adăugarea suportului TDDEste important să avem o metodă de a scrie teste pen-tru aplicația noastră Standardul de-acto icircn lumea PHP estePHPUnit chiar și Drupal8 a migrat la acesta de la Simpleest pecare icircn olosea anterior

Să ne icircntoarcem puțin la proiectul nostru pentru a vedeacum putem adăuga icircn mod simplu suportul pentru dezvoltareatest-driven

După cum se poate observa avem nevoie de un ișier deconfigurare pentru PHPUnit și de un director unde să păstrămtestele otul uncționează atunci cănd rulăm testele

security

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 34: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3442

34 nr 42decembrie 2015 | wwwtodaysoftmagro

Haideți să adaugăm o clasă ce va veriica ruta principalăpe care am definit-o anterior ne vom reeri la ea icircn continuareca ldquoruta de statusrdquo deoarece accesarea ei ne spune rapid dacăaplicația uncționează sau nu Icircn fișierul testsBasicestphp vomdefini

Clasa de test simpla pentru a verica ruta destatus

class BasicTest extends WebTestCase

Este important să notăm că testul nostru uncțional extindeSilexWebestCase așadar va fi nevoie să implementăm metodacreateApplication() pentru a spune testului cum să primeascăobiectul de aplicație Silex Este destul de ușor tot ce trebuie săacem este să includem fișierul bootstrap și să returnăm obiectul$app Obiectul WebestCase este definit icircntr-un pachet externAșadar trebuie să adăugăm o nouă secțiune icircn composerjsonrdquorequire-devrdquo rdquosymfonybrowser-kitrdquo rdquogt=23lt24-devrdquo

Metoda de test icircn sine este extrem de simplă inițiem o cerere

de tip GE pe ruta de status verificăm aptul că răspunsul arecodul de status corect (200) și conținutul eectiv este ldquoUp andrunningrdquo

Vericarea rutei de status public function testStatusRoute() $client = $this-gtcreateClient() $client-gtrequest(rsquoGETrsquo rsquorsquo) $this-gtassertTrue($client-gtgetResponse()-gtisOk()) $this-gtassertEquals( rsquoUp and runningrsquo $client-gtgetResponse()-gtgetContent() )

Ca preerință personală icircmi place să am un namespace sepa-rat pentru teste Așadar namespace utorialest are nevoie depuțină configurare icircn composerjson pentru a se putea icircncărcaautomat Am adăugat următoarea secțiunerdquoautoloadrdquo rdquopsr-0rdquo rdquoTutorialTestrdquo rdquotestsrdquo

După eectuarea acestei modiicări este important să nuuităm să rulăm$ composer update

Aceasta va rezolva toate dependințele proiectului nostru și vascrie noile versiuni ale acestora icircn composerlock

Să rulăm din nou testele

Aceasta a ost doar o mică introducere icircn testarea uncționalăputeți investiga mai multe icircn documentația Symony a acesteicomponente

Capabilități de logareIntegrarea librăriilor externe se ace icircn Silex prin intermediul

urnizorilor Dacă dorim să olosim puternica librărie Monolog

icircn scopuri de logare o vom privi ca pe un serviciu și să o integrămicircn aplicația noastră prin olosirea unuia din urnizorii de serviciiDin ericire există deja la icircndemacircnă MonologServiceProviderhaideți să icircl olosim Vom adăuga mai icircntacirci o nouă cerință icircncomposerjsonrdquomonologmonologrdquo rdquogt=160rdquo

și apoi vom rula composer update pentru a o instalaIcircn continuare vom crea directorul de log -uri și icirci vom atribui

permisiile de rigoare$ mkdir logs$ touch logsdevlog$ chmod -R 766 logs

Icircn plus vom evita versionarea fișierelor de log prin adăugareadirectorului logs icircn lista gitignore Să vedem o utilizare simplăa noii noastre uncționalități de logare Modificăm puțin codulrutei de status după cum urmează$app -gtmatch(rsquorsquo function () use ($app) $app[rsquomonologrsquo]-gtaddInfo(rsquoLogging example inthe status routersquo) return rsquoUp and runningrsquo ) -gtmethod(rsquoGET|POSTrsquo)

Dacă verificăm fișierul de log vom observa că apare fiecarerequest pe care icircl acem

Pacircnă acum am creat o aplicație pornind de la un Silex vanilla

care răspunde unei cereri GE simple am adăugat suport pentruDD precum și capabilități de logare Icircn partea următoare vomtrece la designul API-ului nostru RESul

Referințe1 httpsilexsensiolabsorg

2 httpwwwslidesharenetIgorWiedlersilex-liip

3 httpsdrupalorgnode2012184

4 httpsymonycomdoccurrentbooktestinghtmlunctional-tests

5 httpsgithubcomSeldaekmonolog

programareDe la Zero la RESTful icircn 4 pași Fundația

Georgiana Gligorgbtekkiero OwnerTekkie Consulting

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 35: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3542

35wwwtodaysoftmagro | nr 42decembrie 2015

Destinația clădirii - rezidențială saunerezidențială - este principalul criteriu icircnuncție de care se vor stabili taxele locale deanul viitor Icircn prezent Codul fiscal nu ace

această distincție și instituie ormulele decalcul (cota de impozit valoarea impoza-bilă) icircn uncție de statutul proprietaruluipersoană fizică sau juridică

Prin urmare persoanele izice careacum plătesc aceleași impozite indierentde scopul icircn care este utilizat imobilul vordatora mai mult din 2016 Pentru spațiilecomerciale sau de birouri vor plăti exact cafirmele axa va fi cel puțin dublă și va puteaajunge chiar de 20 de ori mai mare

Nivelul va depinde de decizia consiliilor

locale care vor putea alege o cotă din inter- valul 02-13

Alinierea cotelor de impozit icircn uncțiede destinația clădirii va reașeza piața imo-biliară unde pacircnă acum persoanele fiziceaveau avantajul impozitelor mai mici Din2016 proprietarii persoane fizice de clădirinerezidențiale vor avea același tratament cafirmele Pacircnă acum tendința icircn special icircnmarile orașe a ost ca administrațiile localesă aleagă limita maximă a cotei de impozitprevăzută de Codul fiscal Prin urmare este

de așteptat ca majorarea pentru persoanelefizice să fie semnificativăPe de altă parte noul Cod iscal eli-

mină taxele majorate pentru deținerea maimultor proprietăți precum și cele pentru

proprietățile care au supraețe mai mari de150 mp

Icircn prezent persoanele fizice care au icircnproprietate două sau mai multe clădiri dato-

rează un impozit majorat cu 65 pentruprima clădire icircn aara celei de la adresa dedomiciliu cu 150 pentru a doua clădire șicu 300 pentru a treia și următoarele pre- vedere eliminate in noul Cod Fiscal

Clădiri rezidențialeImpozitul se va calcula din 2016 prin

aplicarea unei cote cuprinse icircntre 008 -

02 asupra valorii impozabile a clădirii

Valoarea impozabilă a clădirii se vadetermina prin icircnmulțirea supraeței con-struite desășurate a acesteia exprimată

icircn metri pătrați cu valoarea impozabilăcorespunzătoare exprimată icircn leimp dintabelul prevăzut de Codul fiscal De exem-plu valoarea impozabilă pentru o clădire cucadre din beton armat sau cu pereți exte-riori din cărămidă arsă sau din orice altemateriale rezultate icircn urma unui tratamenttermic șisau chimic care are instalații deapă canalizare electrice și icircncălzire va fi de1000 leimp (pentru alte tipuri de clădiriscade pacircnă la 75leimp) Icircn prezent cea mairidicată valoare impozabilă este de 935 lei

mp iar cea mai mică 63 leimpValoarea impozabilă se va ajusta icircnuncție de rangul localității și zona icircn careeste amplasată clădirea prin icircnmulțireacu un coeficient de corecție De exemplu

Impozitele pe clădiri - la ce să ne

așteptăm icircn 2016

Conorm Codului Fiscal din 2016 cu anumite excepții orice persoanăcare are icircn proprietate o clădire situată icircn Romacircnia datorează anualimpozit pentru acea clădire Sistemul de impozitare a proprietăților

imobiliare se va schimba radical odată cu aprobarea Noului Cod FiscalCele mai aectate vor fi persoanele fizice care dețin clădiri nerezidențiale olosite icircn scopeconomic adică spații comerciale sau de birouri

Ioana Costeaioanacosteaaiconsultingro Expert contabilManaging Partner AampI Consulting

contabilitate

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 36: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3642

36 nr 42decembrie 2015 | wwwtodaysoftmagro

pentru o clădire amplasată icircntr-o localitate de rang 0 icircn zona Acoeficientul va fi de 26 (și va scădea icircn uncție de rang și zonăpacircnă la 09)

Coeficientul de corecție se reduce cu 010 pentru apartamen-tele din blocuri cu mai mult de 3 niveluri și 8 apartamente

otodată valoarea impozabilă a clădirii se reduce icircn uncțiede anul terminării (cu 50 dacă are o vechime de peste 100 deani și scade pacircnă la 10 dacă are o vechime icircntre 30 de ani și 50de ani inclusiv)

Clădiri nerezidențialeImpozitul se va calcula din 2016 prin aplicarea unei cote

cuprinse icircntre 02 - 13 inclusiv asupra valorii impozabile

rezultată

bull rezultată dintr-un raport de evaluare icircntocmit de un eva-luator autorizat icircn ultimii 5 ani anteriori anului de reerință

bull lucrărilor de construcții icircn cazul clădirilor noi construiteicircn ultimii 5 ani anteriori anului de reerință

bull clădirilor care rezultă din actul prin care se transeră drep-

tul de proprietate icircn cazul clădirilor dobacircndite icircn ultimii 5 ani

Dacă valoarea clădirii nu poate fi calculată asupra uneia din-tre aceste trei valori cota de impozit va fi de 2 și se va aplicaasupra valorii impozabile calculate ca pentru clădiri rezidențiale

Clădiri cu destinație mixtăImpozitul se va determina prin icircnsumarea impozitului cal-

culat pentru supraața olosită icircn scop rezidențial cu cel pentrusupraața olosită icircn scop nerezidențial

Dacă cele două tipuri de supraețe nu pot fi evidențiate dis-tinct impozitul se va datora ca pentru clădiri

bull rezidențiale dacă este icircnregistrat un domiciliu fiscal și nuse desășoară nici o activitate economicăbull nerezidențiale dacă este icircnregistrat un domiciliu fiscal la

care se desășoară activitatea economică iar cheltuielile cuutilitățile sunt icircnregistrate icircn sarcina persoanei care desășoarăactivitatea economică

Valoarea impozabilă a clădirilor deținute de persoane juri-dice va i valoarea de la 31 decembrie a anului anterior celuipentru care se va datora impozitul și poate fi

bull ultima valoare impozabilă icircnregistrată icircn evidențele orga-nului fiscal

bull valoarea rezultată dintr-un raport de evaluare icircntocmit deun evaluator autorizat

bull valoarea finală a lucrărilor de construcții icircn cazul clădirilornoi construite icircn cursul anului fiscal anterior

bull valoarea clădirilor care rezultă din actul prin care se trans-eră dreptul de proprietate icircn cazul clădirilor dobacircndite icircncursul anului fiscal anterior

bull valoarea icircnscrisă icircn contabilitatea proprietarului clădirii șicomunicată concesionarului locatarului titularului dreptuluide administrare sau de olosință după caz

Valoarea impozabilă se va actualiza o dată la 3 ani pe bazaunui raport de evaluare Icircn caz contrar cota impozitului va fi 5Icircn prezent dacă evaluarea nu este eectuată timp de 3 ani cota deimpozit este icircntre 10 si 20 iar pentru clădirile nereevaluate icircnultimii 5 ani cota este icircntre 30 și 40

Icircn prezent potrivit hotăracircrilor consiliilor locale marile

orașe au cote de impozit apropiate de limita maximă prevă-zută de Codul fiscal icircn cazul persoanelor juridice care au ăcutreevaluarea clădirii icircn ultimii trei ani anteriori anului fiscal dereerință Conorm Codului fiscal consiliile pot alege o cotă dinintervalul 025 -150

Icircn Cluj Napoca cotele propuse icircn proiectul de HCL pentru2016 sunt următoarele

bull clădiri rezidențiale - cota de 01an asupra valoriiimpozabile

bull clădiri nerezidențiale ndash cota de 1an asupra valoriiimpozabile

Deci dacă o persoană fizică are un apartament evaluat la100000 euro icircnchiriat unei firme care desășoară activitate eco-nomică icircn el impozitul pe clădire icircncepacircnd cu 2016 va fi de 1000euroan

contabilitateImpozitele pe clădiri - la ce să ne așteptăm icircn 2016

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 37: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3742

37wwwtodaysoftmagro | nr 42decembrie 2015

Distragerile constante au devenit normă icircn spaţiile de lucru din icircntreaga lumeAngajaţii se străduiesc să realizeze cacirct mai multe și să se concentreze mai efici-ent pe sarcini ără a icircnţelege icircnsă cum uncţionează starea de atenţie cum pot

să o atingă și să o olosească inteligent Cercetările Steelcase lider mondial icircn industriamobilierului pentru birouri dezvăluie șapte mituri și adevărurile lor despre cum poţi să-ţigestionezi atenția icircn spaţiul de lucru

7 mituri despre muncă care sunt

nocive pentru creierul tău

1 bdquoPot să fiu atent şi din spatele icircncăperiirdquoAtenţia depinde de cacirct de aproape sun-

tem de stimulii senzoriali Pentru a creaidei noi e nevoie să lucrăm icircn spaţii undecolegii ne pot auzi bine să avem contact vizual unii cu ceilalţi și să putem vizualizaușor materialele și documentele comune delucru

2 bdquoDacă stau pe scaun toată ziua mă voiconcentra mai bine pe ce am de făcutrdquo

Atunci cacircnd rămacircnem așezaţi pentruo perioadă oarte lungă de timp ne sabo-tăm abilitatea de concentrare Mișcareastimulează producţia unei proteine numităBDNF (brain-derived neuro-prophic ac-tor) ce ajută zonele creierului vitale pentruicircnvăţare memorie și gacircndire abstractă Unsat de la specialiștii Steelcase Ridică-te de

pe scaun ă o plimbare sau icircncurajează-ţiangajatorul să cumpere un birou cu bandăde alergat icircncorporată

3 bdquoDesenul este doar pentru persoanelecreativerdquo

Oamenii gacircndesc icircn orme imagini șimodele ndash nu icircn numere și litere Folosindinstrumente digitale și analogice pentru a vizualiza inormaţii putem gacircndi mai bineși crește concentrarea

Ajută-ţi creierul să organizeze inor-

maţiile prin a-ţi schiţa pe o oaie de hacircrtieideile și proiectele la care lucrezi

4 bdquoO să fiu mai productiv dacă răspund laemailuri icircn timpul acestei discuţii tel-efonicerdquo

Nu ne putem gacircndi conștient la maimult de două lucruri icircn același timp Cacircndavem impresia că suntem multitasking deapt ne comutăm oarte rapid atenţia dela un lucru la altul Cu cacirct o acem maimult cu atacirct devenim mai slabi la a acorda

importanță și a rezolva eficient una dintresarcini Satul specialiștilor Steelcase este săcreăm spaţii de lucru care să ne erească dedistrageri și să ne sprijine icircn a ne concentrala o singură activitate o dată

educație

Echipa Steelcase

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 38: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3842

38 nr 42decembrie 2015 | wwwtodaysoftmagro

5 bdquoCreierul meu este uşor de distras şi nu se poate schimbardquoehnicile de sporire a stării de Mindulness ndash trăirea icircn

momentul prezent meditaţia exerciţiile de respiraţie - te potajuta să icircţi antrenezi creierul Practicile s-au dovedit eficiente icircncreșterea activităţilor undelor gamma icircn creier indicacircnd gacircndireaconcentrată intens Identifică un loc icircn birou pentru momente demindulness și pace mentală

6 bdquoDacă lucrez mai multe ore o să realizez mai multerdquoCreierul obosește Capacitatea lui este limitată și concentra-

rea totală nu este posibilă pentru mai mult de 45 de minute Fă-i

creierului tău o avoare și ia pauze pe parcursul zilei Mută-teicircntr-o zonă de relaxare sau una dedicată socializării pentru a teregenera după o perioadă extinsă de lucru concentrat

7 bdquoO să dorm destul după ce morrdquoSomnul joacă un rol esenţial icircn abilitatea noastră de a ne

concentra și de a rămacircne concentraţi Cacircnd ne privăm de somnputerea de a icircnvăţa și de a ne controla stările scade Convinge-ţiangajatorul să creeze spaţii de odihnă icircn cadrul biroului și ăscurte pauze de la lucru ce icircţi vor regenera creierului

Așadar aceste mituri sunt alse și debarasarea de ele ne poateajuta să ne schimbăm obiceiurile existente și să cacircștigăm maimult control asupra creierului și a vieţii noastre Spaţiul de lucrupoate ajuta de asemenea Icircntr-un birou de companie conceputca un ecosistem ce include dierite zone și tipuri de amenajareangajaţii pot alege spaţiul care

7 mituri despre muncă care sunt nocive pentru creierul tău

educație

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 39: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 3942

39wwwtodaysoftmagro | nr 42decembrie 2015

marketing

Icircnainte icircnsă de a vedea ce ne aduce noulan caracterizăm sumar contextul icircn careacestea vin

bull Ne pacircndește o nouă criză a talentelorcauzată de icircmbătracircnirea populației și astandardelor educaționale insuficiente

bull Pacircnă icircn 2020 vor fi mai mulți oamenicare părăsesc piața muncii decacirct cei careintră

bull Europa va avea nevoie de icircncă 45 mili-oane de lucrători icircn 2030 ață de 2010pentru susținerea creșterii economice iar

America de icircncă 25 milioanebull 70 dintre anagajatorii germani con-

sideră că sunt presați să găsească oamenipotriviți

Chiar dacă la prima vedere suntemtentați să gacircndim că mai este mult pacircnăatunci sau că situația nu e chiar atacirct neagrăprimele semne ale acestei probleme icircncep săse vadă deja chiar și pe piața din Romacircniaunde icircn anumite sectoare munca responsa-bililor de recrutare devine din ce icircn ce mai

provocatoare icircn a găsi personal calificat pen-tru posturile disponibile

Ce putem ace Icircn primul racircnd să neinormăm și icircn al doilea racircnd să icircncepem săacționăm cacirct de repede Primii pași trebuieăcuți acum

Drept urmare haideți să vedem ce semnede exclamație ne va trasa anul 2016 și cumam putea să le acem ață

2016- o nouă generatie pe piața muncii Pacircnă acum piața muncii a ost

ormată din Tradiționaliști (cei născuțiicircnainte de 1945) Baby Boomers (1945-

1964) Generația X (1964-1980) Millenials- generația Y (1980-1994) Anul 2016 icircnsăne-a pregătit mai multe surprize Prima estecă o nouă generație ndash generația Z- va intrape piața muncii la anul Generația Z estealcătuită din persoanele născute icircn perioada1995-2010 și prezintă cacircteva caracteristicigenerale au un spirit antreprenorial maidezvoltat sunt mai loiali mai lexibili șirealiști icircn ceea ce privește cariera lor decacirctgenerația Y Aproape o treime dintre ei spuncă icircși doresc să devină manageri icircn următorii

5 ani iar 45 din ei afirmă că va fi o provo-care să lucreze alături de colegii din generațiaBaby Boomers

Provocări pentru companii icircn 2016

Icircnceputul de an pare mereu o oportunitate bună de a ace lucrurile mai bine ca anul tre-cutrsquorsquo și de a ne dezvolta Și anul 2016 poate fi cadru ideal de creștere a companiei noastredacă vom ști și cum să abordăm provocările pe care noul an ni le pregătește

Ana-Maria Trifananamariatrifanhappy-employeeseu

PR amp Custumer Care Specialist Azimut Happy Employees

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 40: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4042

40 nr 42decembrie 2015 | wwwtodaysoftmagro

Ce putem ace icircn acest context Icircn primul racircnd trebuiesă ținem cont de o inormație prețioasă despre această nouăgenerație sunt mai dispuși să aleagă oportunitățile de dezvoltareși echilibrul dintre job și viața personală icircn detrimentul sala-riului Luacircnd aceste lucruri icircn considerare vom ști cum să nepoziționăm pe piață și cum să atragem potențialii angajați dinaceastă categorie sau vom ști cum să ne raportăm la ei icircn calitatede manageri sau colegi

Nevoie acută de lideriSe estimează că 36 milioane de baby boomers se vor pensi-

ona anul următor lăsacircnd icircn urmă un deficit destul de mare de

leadership Icircn acest context se așteaptă ca un sert din angajațiimillenials să devină manageri Punctele slabe ale acestui nou valde lideri sunt expertiza tehnică și influența

Ce putem ace icircn acest caz Să ne icircndreptăm atenția spreangajații noștri să fim mai atenți icircn a le oeri eedback constructivcacirct mai des icircn locul evaluării anuale să investim atenție icircntr-unplan de succesiune nu icircn ultimul racircnd să investim icircn dezvoltareaexpertizei angajaților noștri icircn cursuri online

Tot mai mulți angajați boomerangCe este un angajat boomerang Un angajat care pleacă din

companie urmacircnd să revină ulterior icircn aceeași companie

datorită bonusurilor oerite oportunităților sau contexteloramiliale ocmai datorită crizei talentelor companiile icircncep să segacircndească tot mai mult la această soluție pentru a acoperi nevoilefirmei Beneficiile unui astel de compromis includ angajatul numai necesită atacirct de multă pregatire (training) este amiliarizatcu procedurile și cultura organizației și de asemenea vine cu operspectivă nouă

Provocarea aici constă icircn a găsi strategiile necesare de reinte-grare a acestor angajați atacirct icircn racircndul echipelor de lucru cacirct de cenu și icircn ața stakeholder -ilor (clienților)

răim icircntr-o eră dinamică La el va fi și anul 2016 care vaaduce icircnsă și ceva provocări Suntem pregătiți pentru ele Acumcacircnd avem măcar privirea de ansamblu asupra ceea ce ne paște vom lua atitudine atacirct ca angajat cacirct și ca angajator pentru abeneficia (nu a sueri) de pe urma acestor provocări Dacă dace vom ace concret icircn acest sens otul depinde de noi Succes

ReferințeSursa Oxord Economics Workorce 2020 Te Looming alent Crisis

Sursa httpwwwhrnextcomblog5-hr-trends-to-watch-or-in-2016

Sursa httpwwworbescom

sitesdanschawbel2015110110-workplace-trends-or-2016

marketingProvocări pentru companii icircn 2016

Young spiritMature organizationA shared vision

Join our journey

wwwfortechro

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 41: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori

Page 42: Today Software Magazine N42/2015

7232019 Today Software Magazine N422015

httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242

powered by

sponsori