Download - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
7232019 Today Software Magazine N422015
httpslidepdfcomreaderfulltoday-software-magazine-n422015 4142
7232019 Today Software Magazine N422015
httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242
powered by
sponsori
7232019 Today Software Magazine N422015
httpslidepdfcomreaderfulltoday-software-magazine-n422015 4242
powered by
sponsori