today software magazine n41/2015

46
T O D AY SOFTWARE Nr. 41 • Noiembrie 2015 • www.todaysoftmag.ro • www.todaysoftmag.com MAGAZINE Salarile din IT vor crește Logging on external storages Imaginație + implicare + piese LEGO=ajutor reciproc How To Web 2015 Common misconception: How many objects does this create? Preview Cluj IT Days 2015 Proiectarea sistemelor robuste – câteva repere Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C# Întâlnirile OSMTime pentru îmbunătățirea OSM Data Vă prezentăm ironwingjs Auditul de User Experience Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi

Upload: sergiucebotari

Post on 01-Feb-2016

46 views

Category:

Documents


0 download

DESCRIPTION

Today Software Magazine N41/2015Today Software Magazine N41/2015

TRANSCRIPT

Page 1: Today Software Magazine N41/2015

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

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

Nr. 41 • Noiembrie 2015 • www.todaysoftmag.ro • www.todaysoftmag.com

M AG A Z I N E

Salarile din IT vor crește

Logging on external storages

Imaginație + implicare + piese LEGO=ajutor reciproc

How To Web 2015

Common misconception: How many objects does this create?

Preview Cluj IT Days 2015

Proiectarea sistemelor robuste – câteva repere

Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C#

Întâlnirile OSMTime pentru îmbunătățirea OSM Data

Vă prezentăm ironwingjs

Auditul de User Experience

Download fromWindows StoreDownload fromWindows Store

Sistem de poziționare pentru spații

închise bazat pe semnal Wi-Fi

Page 2: Today Software Magazine N41/2015

Partners Supporters Oraganizer

09:00

09:30

10:00

10:40

11:10

11:30

12:00

12:30

13:00

14:00

15:00

15:30

16:00

16:20

16:50

17:00

17:50

14:00

14:30

15:00

15:30

16:00

16:20

16:50

17:20

17:50

11:30

12:00

12:20

12:40

13:00

14:00

14:30

15:30

16:00

16:20

16:50

17:20

17:50

09:00

09:30

10:00

10:20

10:40

09:00

09:30

10:10

10:40

11:10

11:30

12:00

12:30

13:00

14:00

15:00

15:30

16:00

16:20

16:50

17:20

17:50

Coffee & Registration

Opening RemarksStelian Brad (Cluj IT Cluster) & Ovidiu Mățan (Organizer of IT Days)

Vector Watch in the Context of Wearable Fashion TrendsRareș Florea (Country Commercial Manager Vector Watch)

Innovation in Product Development and Future of WorkChristoph Steindl (CEO Catalysts Software)

Coffee & Networking Break

Coffee & Registration

Growth Hacking and Lean CanvasChristoph Steindl (CEO Catalysts Software)

Before jumping in the productMircea Vădan (Fortech)

Tools and talents for tomorrowRoxana Rugină (Simplon)

Driving innovation – TechLeagueDiana Tîrnovan (Accesa) Florin Pascaru (Accesa)

Coffee & Networking Break

Coffee & Registration

On synchronizing data indistributed applicationsSergiu Damian (iQuarc)

A Reactive WorldRobert Cristian (3Pillar Global)

Decisions in ArchitectureFlorin Cardasim (Endava)

Coffee & Networking Break

Microsoft Cloud Services and Tools tailor-made for startupsRadu Ștefan (Microsoft)

Start-Ups accross cultures Șerban Țîr (CTO Gemini Solutions)

Local startup pitches

Lunch Break

How to manage one million messagesper second using AzureRadu Vunvulea (iQuest)

Implementing Ports-And-Adapters [in the .NET ecosystem] Andrei Larionescu (Yonder)

ASP.Net 5 (vNext)Performance Characteristics Cătălin Pop (iQuarc)

Lunch Break

Using artificial intelligence forautomatizing software developmentRăzvan Florian (Romanian Instituteof Science and Technology)

Reliable Chip Designs from Low-Powered Unreliable Components Sorin Coțofană (Delft University)

Driver assistance systems and outlook into automated drivingCătălin Golban (Bosch)

Pizza break

Driver assistance systems and outlook into automated drivingCătălin Golban (Bosch)

Large-scale Data Analytics forSmart City and Industrial Applications Dan Puiu (Siemens)

Healthy Organizations Andreea Pârvu (Endava)

Networking & Wine

Low Latency in Java 8Peter Lawrey (Higher Frequency Trading)

Creating things with a 3D printerMihai Oltean (Babeș-Bolyai University)

Programming collaborative robots with ROSLászló Tófalvi (Accenture)Péter Magó (Accenture)

Pizza break

How to build your own Smart House Călin Bunea (Gemini Solutions)

Crouching Admin, Hidden Hacker Teodor Olteanu (Betfair)

Is it easy to integrateyoung people in IT companies? Dan Ionescu (Danis)

Networking & Wine

Beyond reality. Virtual Reality. The future of gaming and information visualizationRobert Mureșan (CEO Exosyphen)

The Power of PlaySimona Bonghez (CEO Colors in projects)

Launch of Programez.roOvidiu Mățan (TSM) and Vlad Derdeicea (Subsign)

Lunch Break

Evolving Ideas with BigData toolsTudor Mărghidanu (Yardi)

Data modeling in Apache HadoopTudor Lăpușan (Telenav)

Machine Learning in the age of Big DataDaniel Sârbe (SDL)

Networking & wine

Work with Hundreds ofHot Terabytes in JVMsPeter Lawrey (Higher Frequency Trading)

Be Fast, be Off-JVM, be Chronicle-QueueVasile Mihali (AROBS)

jOOQ - an object oriented abstractioninteracting with relational databasesSilviu Dumitrescu (Telenav)

Pizza Break

Let’s “GamEventify”!Adina Grigoroiu (Colors in projects)

Make it WarmerDan Suciu (3Pillar Global)

Building a Strong Employer BrandThrough Organizational CultureCristian Philipp (Essential Training and Consulting)

Usable Software Design Alexandru Bolboacă (Mozaic Works)

Pizza break

Selenium WebDriver -patterns for maintanabilityVasile Pop (Intel)

Performance testing - how the needs for efficiencydictate the Automation Process Codruța Bunea (Yonder)

Struggling with Test Automation-Issues and solutions Gabriel Fericean (Siemens)

Networking & wine

November 24

Automated Testing

Management

Trends & Leadership Sessions

Local Product Launches

Startups & Entrepreneurship

.NET

Hands on Lab

HR & Management

HR & Management

Big Data

Java

Startups & Entrepreneurship

Research

Software Architecture

November 25Conference Room

Multifunctional HallConference Room

Conference Room Multifunctional Hall

www.itdays.ro 2 days access - 80 euro + TVA

Innovation, entrepreneurship and technology24-25 November 2015, Cluj-Napoca

Cluj Arena, Conference Room & Multifunctional Hall

Page 3: Today Software Magazine N41/2015

6Why to participate at

Cluj IT Days 2015?Ovidiu Măţan

10 How to Web

2015Irina Scarlat

12Salarile din IT

vor crește Adrian Lupau

15Sistem de poziționare pentru spații

închise bazat pe semnal Wi-Fi Bogdan Oniga și Iacob Nașca

18Proiectarea sistemelor robuste –

câteva repere Romulus Bucur

21 Acceptance Testing Driven

Development utilizând SpecFlow cu Selenium în C# Sebastian Silaghi

24Auditul de User Experience

Mircea Gui

27Întâlnirile OSMTime pentru îmbunătățirea OSM Data Dragoș Andronic

29Common misconception: How many objects does this create?Peter Lawrey

31Logging pe memorii externe … lecții învățateRadu Vunvulea

34Vă prezentăm ironwingjsAndrei Cacio

36Imaginație + implicare + piese LEGO= ajutor reciproc corectAna-Maria Trifan

38 Time Management: Preia controlul! Magnoliu Stan

41 SoCraTes 2015 Unconference Mihnea Lazăr

Partners Supporters Oraganizer

09:00

09:30

10:00

10:40

11:10

11:30

12:00

12:30

13:00

14:00

15:00

15:30

16:00

16:20

16:50

17:00

17:50

14:00

14:30

15:00

15:30

16:00

16:20

16:50

17:20

17:50

11:30

12:00

12:20

12:40

13:00

14:00

14:30

15:30

16:00

16:20

16:50

17:20

17:50

09:00

09:30

10:00

10:20

10:40

09:00

09:30

10:10

10:40

11:10

11:30

12:00

12:30

13:00

14:00

15:00

15:30

16:00

16:20

16:50

17:20

17:50

Coffee & Registration

Opening RemarksStelian Brad (Cluj IT Cluster) & Ovidiu Mățan (Organizer of IT Days)

Vector Watch in the Context of Wearable Fashion TrendsRareș Florea (Country Commercial Manager Vector Watch)

Innovation in Product Development and Future of WorkChristoph Steindl (CEO Catalysts Software)

Coffee & Networking Break

Coffee & Registration

Growth Hacking and Lean CanvasChristoph Steindl (CEO Catalysts Software)

Before jumping in the productMircea Vădan (Fortech)

Tools and talents for tomorrowRoxana Rugină (Simplon)

Driving innovation – TechLeagueDiana Tîrnovan (Accesa) Florin Pascaru (Accesa)

Coffee & Networking Break

Coffee & Registration

On synchronizing data indistributed applicationsSergiu Damian (iQuarc)

A Reactive WorldRobert Cristian (3Pillar Global)

Decisions in ArchitectureFlorin Cardasim (Endava)

Coffee & Networking Break

Microsoft Cloud Services and Tools tailor-made for startupsRadu Ștefan (Microsoft)

Start-Ups accross cultures Șerban Țîr (CTO Gemini Solutions)

Local startup pitches

Lunch Break

How to manage one million messagesper second using AzureRadu Vunvulea (iQuest)

Implementing Ports-And-Adapters [in the .NET ecosystem] Andrei Larionescu (Yonder)

ASP.Net 5 (vNext)Performance Characteristics Cătălin Pop (iQuarc)

Lunch Break

Using artificial intelligence forautomatizing software developmentRăzvan Florian (Romanian Instituteof Science and Technology)

Reliable Chip Designs from Low-Powered Unreliable Components Sorin Coțofană (Delft University)

Driver assistance systems and outlook into automated drivingCătălin Golban (Bosch)

Pizza break

Driver assistance systems and outlook into automated drivingCătălin Golban (Bosch)

Large-scale Data Analytics forSmart City and Industrial Applications Dan Puiu (Siemens)

Healthy Organizations Andreea Pârvu (Endava)

Networking & Wine

Low Latency in Java 8Peter Lawrey (Higher Frequency Trading)

Creating things with a 3D printerMihai Oltean (Babeș-Bolyai University)

Programming collaborative robots with ROSLászló Tófalvi (Accenture)Péter Magó (Accenture)

Pizza break

How to build your own Smart House Călin Bunea (Gemini Solutions)

Crouching Admin, Hidden Hacker Teodor Olteanu (Betfair)

Is it easy to integrateyoung people in IT companies? Dan Ionescu (Danis)

Networking & Wine

Beyond reality. Virtual Reality. The future of gaming and information visualizationRobert Mureșan (CEO Exosyphen)

The Power of PlaySimona Bonghez (CEO Colors in projects)

Launch of Programez.roOvidiu Mățan (TSM) and Vlad Derdeicea (Subsign)

Lunch Break

Evolving Ideas with BigData toolsTudor Mărghidanu (Yardi)

Data modeling in Apache HadoopTudor Lăpușan (Telenav)

Machine Learning in the age of Big DataDaniel Sârbe (SDL)

Networking & wine

Work with Hundreds ofHot Terabytes in JVMsPeter Lawrey (Higher Frequency Trading)

Be Fast, be Off-JVM, be Chronicle-QueueVasile Mihali (AROBS)

jOOQ - an object oriented abstractioninteracting with relational databasesSilviu Dumitrescu (Telenav)

Pizza Break

Let’s “GamEventify”!Adina Grigoroiu (Colors in projects)

Make it WarmerDan Suciu (3Pillar Global)

Building a Strong Employer BrandThrough Organizational CultureCristian Philipp (Essential Training and Consulting)

Usable Software Design Alexandru Bolboacă (Mozaic Works)

Pizza break

Selenium WebDriver -patterns for maintanabilityVasile Pop (Intel)

Performance testing - how the needs for efficiencydictate the Automation Process Codruța Bunea (Yonder)

Struggling with Test Automation-Issues and solutions Gabriel Fericean (Siemens)

Networking & wine

November 24

Automated Testing

Management

Trends & Leadership Sessions

Local Product Launches

Startups & Entrepreneurship

.NET

Hands on Lab

HR & Management

HR & Management

Big Data

Java

Startups & Entrepreneurship

Research

Software Architecture

November 25Conference Room

Multifunctional HallConference Room

Conference Room Multifunctional Hall

www.itdays.ro 2 days access - 80 euro + TVA

Innovation, entrepreneurship and technology24-25 November 2015, Cluj-Napoca

Cluj Arena, Conference Room & Multifunctional Hall

Page 4: Today Software Magazine N41/2015

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

Acest număr al revistei va fi distribuit prima oară în format tipărit la Cluj IT Days, un eveniment care a ajuns la cea de-a treia ediție anul acesta. Sper că acei care citesc aceste rânduri la Cluj Arena în zilele 24-25 noiembrie, consideră că

participarea lor este un bun prilej de a se conecta la viața IT clujeană și de a-și extinde orizontul profesional. Prezența unui număr mare de participanți din regiuni diverse ale țării ne demonstrează că interesul pentru acest eveniment a crescut dincolo de zona Clujului, și mai ales preocuparea pentru autoperfecționare. I-am invitat pe cei mai buni specialiști locali, pe aceia care se remarcă în alte orașe ale țării precum Iași, Timișoara, Brașov, București , dar și pe specialiști din Rotterdam sau Londra, pentru că Cluj IT Days vrea să reflecte faptul că în spațiul național dar și în cel european, industria IT clujeană se impune drept un punct de referință marcant. În organizarea și desfășurarea acestui eveniment, Today Software Magazine a implicat mai multe echipe, dintre care aș vrea să remarc echipa Subsign care a devenit designerul casei și a realizat toate materia-lele vizuale pentru conferința din acest an precum și pentru noul proiect programez.ro. De asemenea, doresc să mulțumesc echipei TSM: Anei-Maria, responsabilă cu tehno-redactarea și marketingul și lui Alex pentru că a implementat într-un timp scurt noul website itdays.ro cât și programez.ro.

Lansarea din această lună va avea loc după IT Days, joi, 26 noiembrie de la ora 18:00. Mai multe detalii puteți vedea pe site sau social media. Începem articolele din acest număr- cum altfel ?- cu un articol despre prezentările de la Cluj IT Days 2015 și continuăm cu How To Web 2015 care va avea loc la București chiar după cel din Cluj. Salariile din IT este un subiect interesant cu opinii diverse așa cum reiese din articolul semnat de Adrian Lupău, un specialist în vânzări și antreprenor. Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi promite o soluție pentru locurile în care GPS-ul nu este disponibil, dar avem semnal WiFi. Proiectarea sistemelor robuste – câteva repere conține câteva sfaturi legate de dezvoltarea proiectelor în funcție de complexitatea acestora. Din aria testării, articolul Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C# oferă multe soluții utile celor din sectorul de testing. Auditul de User Experience parcurge etapele de analiză pentru un User Experience adecvat, probabil una din etapele cele mai importante în procesul de dezvoltare a unui produs nou sau de re-design al unuia existent. În încheiere, vă invit să citiți articolul lui Peter Lawrey: Common misconception: How many objects does this create? Acesta este publicat în engleză deoarece prin traducerea unor articole tehnice se poate pierde o parte din mesaj.

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

Ovidiu MăţanFounder Today Software Magazine

Ovidiu Măţ[email protected]

Editor-in-chief Today Software Magazine

editorial

Page 5: Today Software Magazine N41/2015

5www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Lista autorilor

Ovidiu Măţ[email protected]

Editor-in-chief Today Software Magazine

Adrian Lupau [email protected] Business Development Manager - @Fortech

Bogdan [email protected] Development Security Testing & Assurance Analyst @Betfair

Iacob [email protected] Principal Developer @ Betfair

Romulus Bucur [email protected] Senior .NET developer @Siemens

Sebastian Silaghi [email protected] Senior Software Developer in Test @VE Interactive

Peter Lawrey [email protected] CEO @ Higher Frequency Trading Ltd

Ana-Maria Trifan [email protected] PR & Custumer Care Specialist @ Azimut Happy Employees

Radu [email protected] Software Engineer @iQuest

Irina [email protected]

PR Manager @ How to Web & TechHub Bucharest

Redacţia Today Software Magazine

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

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

Copyright/Corector: Emilia Toma [email protected]

Traducător: Roxana [email protected]

Reviewer: Tavi Bolog [email protected]

Contabil : Delia [email protected]

Programator junior: Alexandru Diniș[email protected]

Marketing și tehnoredactor: Ana-Maria Bivol

[email protected]

Tipar realizat de Daisler Print House

Produs de Today Software Solutions SRL

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

www.todaysoftmag.rowww.facebook.com/todaysoftmag

twitter.com/todaysoftmag

ISSN 2284 – 6352

Copyright Today Software Magazine

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

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

www.todaysoftmag.rowww.todaysoftmag.com

Andrei Cacio [email protected] Web Developer @ Evozon

Magnoliu Stan [email protected] Director @ Smart HR

Mihnea Lazăr [email protected] Software Developer @ msg systems

Dragoș [email protected] Product Manager @ Telenav

Page 6: Today Software Magazine N41/2015

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

eveniment

Cluj IT Days 2015 din perspectiva

prezentărilor

Mai sunt câteva zile până la Cluj IT Days, un eveniment care este la a treia ediție și a crescut an de an. Ne apropiem de 320 de participanți, iar dacă vă grăbiți mai sunt posibile înscrierile. Pentru o bună perspectivă, am rugat

o parte dintre speakeri să descrie prezentarea, publicul țintă și ce o să poată învăța participanții la eveniment.

A reactive world - Robert CristianÎn această prezentare vom dezbate

ideile cuprinse în ‚reactive manifesto’, axându-ne pe analiza celor mai impor-tante caracteristici nonfuncționale care trebuie asociate unei aplicații moderne.

Participanții vor înțelege princi-pii de design care se impun a fi luate în considerare în dezvoltarea unei aplicații performante.

Prezentarea se adresează dezvoltatori-lor de aplicații și arhitecților.

Nivelul de dificultate: mediu.

Evolving ideas with BigData tools - Tudor Mărghidanu

P r e z e n t ă m e v o l u ț i a u n u i proiect software și trecerea de la tehno-logiile standard ETL la folosirea unui set de instrumente BigData pentru impor-tul și prelucrarea datelor într-un mediu distribuit. Ne vom concentra asupra conceptelor și modelelor de design utili-zate într-un caz concret, luând în calcul performanța și gradul de mentenanță.

Participanții vor putea reține concepte precum BigData, design patterns, câteva reguli de luat în calcul când se dezvoltă o aplicație.

Prezentarea se adresează programa-torilor, analiștilor de date și persoanelor

cu experiență în achiziția și prelucrarea datelor.

Nivelul de dificultate: mediu.

Beyond reality. Virtual Reality. The future of gaming and information visualization - Robert Mureșan

Tema prezentării o constiuie jocurile în Realitatea Virtuală, mai precis crearea și livrarea unor jocuri care oferă mai mult decât informații vizuale, adică sentimente și amintiri fantastice similare cu realitatea. Audiența este generală. Prezentarea va fi făcută într-o formă ușor de înțeles de către toată lumea.

Nivelul de dificultate: ușor.

How to build your own Smart House - Călin Bunea

Cum să-ți construiești singur propria casa inteligentă folosind componente elec-tronice relativ simple și ieftine. În plus vor fi prezentate unele idei de automatizări interesante și motivante.

Paticipanții vor învăța că pentru a implementa diverse automatizări nu este nevoie de cunoștințe avansate de elec-tronică, că astfel de automatizări sunt la îndemâna oricui. Prezentarea îi vizează pe cei care dețin cunoștințe medii de progra-mare și cunoștințe minime de electronică

Ovidiu Măţ[email protected]

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

Page 7: Today Software Magazine N41/2015

7www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINEprogramare

și care visează să-și implementeze diverse automatizări în propria locuință.

Nivelul de dificultate: mediu.

Selenium WebDriver - patterns for maintanability - Vasile PopUna dintre problemele majore apărute în crearea unui fra-

mework „in-house” de testare a aplicațiilor web este mentenanța. Pașii inițiali sunt în general simpli, numai că în timp cantitatea de cod crește făcând tot mai complicată adaptarea la schim-bările aplicațiilor testate. Abordări de design ca PageObjects, LoadableComponent, folosirea de SmartWaits în cod, simplifică păstrarea testelor sincronizate cu aplicația, reprezentând pași care ar trebui luați în considerare în fazele incipiente ale proiectelor.

Participanții vor putea să folosească ideile din prezentare în proiecte noi sau să rescrie părți din proiecte existente. Trecerea la variante mai eficiente de design se poate realiza gradual. Prezentarea se adresează membrilor echipelor de QA sau progra-matorilor interesați de scrierea de teste automate pentru aplicații web.

Nivelul de dificultate: mediu.

Crouching Admin, Hidden Hacker - Teodor OlteanuAdministratorii de rețea duc un adevărat „război” cu persoane

rău intenționate care vor să capete acces la datele confidențiale ale companiei. Dar de cele mai multe ori totul se întâmplă fără ca noi să avem vizibilitate asupra acestor lucruri. Prezentarea se axează pe importanța implementării câtorva reguli de bază pentru securizarea rețelelor și sistemelor IT. Veți afla cum să va apărați împotriva celor mai uzuale tipuri de atacuri și veți asista la o demonstrație live. Prezentarea se adresează persoanelor inte-resate de securitatea în IT.

Nivelul de dificultate: mediu.

„Make It Warmer” ! - Dan SuciuPrezentarea este centrată pe ideea îmbrăţișată de foarte multă

lume cum că abordarea agilă a proiectelor software reprezintă opusul metodologiilor clasice de management. Un exponent marcant în acest sens este Waterfall. Putem considera cele două abordări ca fiind extreme? Şi dacă da, există o cale de mijloc în abordarea proiectelor sofT? Acestea sunt doar câteva întrebări la care voi răspunde în cadrul prezentării, adresându-mă tuturor celor care au lucrat în cel puţin o echipă urmând o metodologie agilă.

Nivelul de dificultate: ușor – mediu.

On synchronizing data in distributed applications - Sergiu DamianMă întreb adesea de ce evoluția alertă a tehnologiilor nu

aduce neapărat cu ea și creșterea productivității industriei? Poate pentru că, deși avem tehnologii mai avansate, complexitatea și viteza cu care se desfășoară viața noastră sunt din ce în ce mai mari? În această prezentare vom insista asupra problemelor legate de sincronizarea datelor în aplicații distribuite, adică majoritatea aplicațiilor de azi, mai ales cele mobile. De asemenea, vom ana-liza o potențială soluție multiplatformă oferită de Azure Mobile Services.

Vom vedea împreună de ce problema sincronizării datelor nu este una trivială, motiv pentru care probabil nu are încă o soluție unanim acceptată. Vom lua în considerare o potențială soluție sub forma Azure Mobile Services. Prezentarea se adresează dezvol-tatorilor, arhitecților, managerilor de produse și oricui interesat de provocările întâmpinate în dezvoltarea aplicațiilor mobile sau distribuite.

Nivelul de dificultate: mediu – avansat.

Let’s “GamEventify”! - Adina GrigoroiuSă presupunem că doriți să organizați un eveniment destinat

mediului de afaceri. Trăim într-o perioadă în care conferințele, congresele și evenimentele sunt la îndemână, atât virtual, cât și cu participare fizică. Ce poți face pentru a organiza un eveniment inedit? Cum convingi participanții că timpul lor merită investit în evenimentul tău? Această prezentare oferă exemple despre cum pot fi utilizate jocurile pentru a spori implicarea participanților și disponibilitatea lor de a experimenta și a învăța lucruri noi. Desigur, va trebui să fiți deschiși, creativi și disponibili să lucrați din greu. Evenimentele de afaceri cu un concept inovator, distrac-tiv și captivant au un preț. Sunteți gata să-l plătiți?

În cadrul aceastei prezentări participanții vor descoperi cum pot fi folosite jocurile pentru a crește implicarea participanților la evenimentele lor și cum pot crea o experiență memorabilă pentru aceștia. Prezentarea se adresează tuturor celor implicați în orga-nizarea de evenimente, fie conferințe de anvergură orientate spre comunitățile din care fac parte, fie evenimente interne ale com-paniilor în care lucrează.

Nivelul de dificultate: ușor. Healthy Organizations – Andreea Pârvu Într-un context marcat de evoluție constantă și dinamicitate

a pieței, o comparație între conceptul de organizație deșteaptă, centrat pe construirea unei strategii de marketing, financiare

Page 8: Today Software Magazine N41/2015

8 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

sau de tehnologizare, și conceptul de organizație sănătoasă, îl plasează în avantaj competitiv pe piață pe acesta din urmă prin crearea unui mediu care reduce riscul de a crea confuzie, crește moralul și productivitatea echipelor, precum și rata de retenție.

Prezentarea va avea două direcții de analiză:1. Cum se construiește o echipă de leadership coezivă ,2. Cum se creează claritate în organizație .

Prezentarea este adresată tuturor persoanelor care fac parte dintr-o echipă, fie ea de management sau doar funcțională.

Nivelul de dificultate: scăzut.

Start-Ups accross cultures- Șerban ȚîrPrezentarea mea este o perspectivă personală asupra asemă-

nărilor și deosebirilor între start-up-uri din diverse culturi din Occident, SUA și România, pe care le-am remarcat în cursul experienței mele profesionale.

Cei care vor participa vor avea o mai bună înțelegere asu-pra ceea ce înseamnă mecanismele unui start-up. De asemenea vor primi câteva sfaturi legate de cum să își dezvolte propriul start-up.

Prezentarea se adresează persoanelor care sunt familiare cu cultura start-up, cât și celor care vor să inițieze un start-up.

Nivelul de dificultate: ușor.

Machine Learning in the age of Big Data - Daniel SârbeO privire de ansambu pe domeniul de Machine Learning

si Big Data, axat în principal pe motivele pentru care Machine Learning a devenit mai important în epoca BigData, inclusiv un demo de algoritm de tip online machine learning pe care momen-tan îl dezvoltăm la SDL Research.

Participanții vor putea învăța ce poţi face cu Machine Learning în contextul de Big and Small Data. Publicul căruia i se adresează: oricine interesat de domeniile BigData/DataSciene/ MachineLearning.

Nivelul de dificultate: avansat.

Using artificial intelligence for automatizing software development - Răzvan Florian

Se estimează că peste cinci ani, deficitul de programatori va ajunge la nivel global la peste 1 milion de persoane. Sute de mili-arde de euro se pierd anual pentru că nu există cine să scrie tot codul de care este nevoie. Criza resurselor umane pentru dez-voltarea software este cea mai mare preocupare a persoanelor

din conducerea firmelor de IT. Pe de altă parte, tehnologiile de învățare profundă se dezvoltă cu repeziciune. Poate inteligența artificială să crească eficiența programatorilor disponibili? Cât de mult se poate automatiza crearea de software? Cum poate Clujul să participe la următoarea revoluție din programare și să beneficieze de ea? Participanții vor afla despre una dintre cele mai importante transformări care se prefigurează în industria de software.

Publicul căruia i se adresează: Prezentarea se adresează tutu-ror programatorilor și persoanelor care lucrează în industria IT sau sunt interesate de ea.

Nivelul de dificultate: mediu.

Usable Software Design- Alexandru Bolboacă„Usable Software Design” pornește de la observația că progra-

matorul este utilizatorul designului software. Ca urmare, putem folosi tehnici din UX / Usability pentru a îmbunătăți modul în care facem software design.

Participanții vor învăța o abordare nouă a software design, inspirată din povestea de succes a usability și UX în designul industrial și grafic. De asemenea, vom discuta despre cum putem aplica anumite tehnici din UX la software design.

Această prezentare se adresează în special programatorilor și liderilor tehnici din organizații dar și managerilor care vor să crească productivitatea sau să scadă timpul de integrare al unui nou programator.

Nivelul de dificultate: mediu.

The Power of Play- Simona BonghezTuturor ne place să ne jucăm. Studiile au arătat că pe lângă

efectul relaxant, jocurile corect utilizate facilitează procesul de învățare și cresc angajamentul participanților, fie că sunt angajați, studenți sau clienți. Este însă Gamification un concept care rezolvă toate problemele noastre legate de implicare și anga-jament? De ce este el astăzi un subiect controversat? Sunt doar câteva dintre întrebările la care vom căuta un răspuns în această prezentare.

În prezentare vor fi clarificate conceptele de Playful Design, Gamification, Experiential Learning și Serious Games. Vor fi exemplificate modalități de punere a lor în practică, iar participanții vor înțelege beneficiile acestora și modalitatea în care pot fi aplicate în companiile lor, pentru situații concrete cu care se confruntă.

Prezentarea se adresează tuturor celor care sunt dispuși să

evenimentCluj IT Days 2015 din perspectiva prezentărilor

Page 9: Today Software Magazine N41/2015

9www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

încerce abordări noi, care caută soluții mai puțin convenționale. Nivelul este unul general, nu implică cunoștințe tehnice.

Nivelul de dificultate: ușor – mediu.

Programming collaborative robots with ROS - László Tófalvi, Péter Magó

Facem cunoștință cu Baxter un robot de noua generație. Acesta ne va arăta ce poate să facă și cum se programează. Participanții vor putea învăța principii de bază în robotică și ROS. Vor intra în contact cu provocările principale din domeniu.

Prezentarea este pentru programatori, entuziaști de robotică, oameni curioși.

Nivelul de dificultate: mediu.

Struggling with Test Automation - Issues and solutions - Gabriel Fericean

În această prezentare am adunat câteva din provocările întâlnite cu ocazia implementării testelor automate pe proiec-tele pe care am lucrat. Prezentarea o să atingă un spectru larg de tehnologii și tool-uri cum ar fi Selenium WebDriver, UFT sau CodedUI.

Această prezentare le va oferi participanțillor ocazia de a-și îmbogăți cunoștințele despre testarea automată. Prezentarea se adresează tuturor persoanelor interesate de testarea automată, dar în special celor care lucrează în acest domeniu.

Nivelul de dificultate: mediu – avansat.

It is easy to integrate young people in IT companies? - Dan IonescuPrezentarea “E ușor să integrezi noii tineri în firme IT?”

își propune să investigheze câteva realităţi de pe o piaţă a forţei de muncă extrem de competitivă și dură, în care nevoia de noi angajaţi a devenit cronică.

Mulţi dintre acești nou veniţi sunt la primul loc de muncă și sunt foarte tineri. Există particularităţi în abordarea lor? Este o generaţie diferită sau este sindromul clasic “tinerii de azi…”?

Sunt analizate opinii mai generale sau mai concrete, ale celor care se lovesc de această situaţie.

Experienţele altora, mai bune sau mai rele, sugestii de Așa DA sau Așa Nu, toate acestea pot să fie food for thinking pentru participanţi.

Prezentarea se adresează mai ales celor care vin în contact direct cu noii angajaţi: manageri din diverse eșaloane, cei din HR. Orice IT-ist poate să valorifice avantajele modului optim de abordare a unei situații de acest tip.

Nivelul de dificultate: ușor – mediu.

Struggling with Test Automation - Issues and solutions - Gabriel Fericean

În această prezentare am adunat câteva din provocările întâlnite cu ocazia implementării testelor automate pe proiec-tele pe care am lucrat. Prezentarea o să atingă un spectru larg de tehnologii și tool-uri cum ar fi Selenium WebDriver, UFT sau CodedUI.

Această prezentare le va oferi participanțillor ocazia de a-și îmbogăți cunoștințele despre testarea automată. Prezentarea se adresează tuturor persoanelor interesate de testarea automată, dar în special celor care lucrează în acest domeniu.

Nivelul de dificultate: mediu – avansat.

Page 10: Today Software Magazine N41/2015

10 nr. 41/2015, www.todaysoftmag.ro

dispozitivul care protejează toate aparatele conectate la Internet sau Vector Watch, ceasul inteligent cu o autonomie de 30 de zile. Acestea sunt câteva dintre pro-dusele tech inovatoare care vor fi expuse anul acesta la How to Web Conference 2015, eveniment care va aduce împreună peste 1000 de profesioniști în domeniul tehnologiei din regiune. Biletele de tip Early Bird sunt disponibile până marți, 17 noiembrie, pe site-ul conferinței.

How to Web Conference 2015 este cel mai important eveniment dedicat inovației în tehnologie și antreprenoriatu-lui din Europa de Sud-Est fiind organizat în colaborare cu Telekom Romania, IXIA, Bitdefender și CyberGhost. Cei peste 1000 de profesioniști în domeniul tehno-logiei care vor participa la eveniment vor cunoaște actori importanți din industrie, vor vedea și testa produse inovatoare din domeniul Internet of Things și vor desco-peri unele dintre cele mai promițătoare startup-uri din regiune. Toate acestea se adaugă la prezentările susținute de profesioniști cunoscuți, care vor avea loc pe cele două scene ale conferinței.

Zona de expo pentru produse inovatoare și demonstrații pe scenă

Participanții How to Web Conference vor avea ocazia să vadă și să testeze pro-duse inovatoare din domeniul Internet of Things vizitând zona de gadget expo. În plus, pe scena principală a conferinței va avea loc o demonstrație a modului în care funcționează o parte dintre aceste pro-duse. Printre acestea se numără:

• Axosuits, exoschelet medical pen-tru persoanele cu dizabilități, ușor de folosit, care ajută persoanele cu deficiențe locomotorii să își câștige mobilitatea.

• Scooterson, primul scuter inteligent din lume care utilizează o combinație unică de cloud, tehnologie smartphone și analiză de date pentru a îmbunătăți experiența șoferului, maximizând în același timp siguranța acestuia și efici-entizând consumul energetic.

• Bitdefender Box, dispozitiv care protejează de malware toate aparatele conectate la Internet, de la televizoare smart până la frigidere, termostate sau console de gaming.

• Vector Watch, ceasul inteligent cu o autonomie de 30 de zile, singurul pro-dus din gama sa compatibil cu sistemele de operare iOS, Android și Windows

How to Web Conference 2015:

produse inovatoare și oportunități de

networking cu reprezentanți relevanți

din industrie

București, 13 noiembrie 2015 – Axosuits, exoscheletul medical pentru persoanele cu dizabilități;Codie, robotul interactiv care ajută copiii să descopere lumea tehnologiei; Scooterson, primul scuter electric inteligent; Bitdefender Box,

Irina [email protected] PR Manager @How to Web & TechHub Bucharest

eveniment

Page 11: Today Software Magazine N41/2015

11www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Phone.• Codie, robotul de jucărie interac-

tiv care ajută copiii să descopere lumea tehnologiei și îi învață gândirea logică și tehnicile de rezolvare a probleme-lor, cunoștințe utile mai târziu pentru programare.

• Hirrus mini-UAV, drona de supra-veghere care furnizează date relevante în mod rapid, ajutând oamenii să își crească productivitatea, să diminueze costurile sau să își îmbunătățească sem-nificativ calitatea vieții.

• Gravity Lifter, dispozitiv multipre-miat la nivel internațional care folosește câmpul electromagnetic pentru a produce un efect de levitație oricărui produs / obiect cu o greutate maximă de până la 3kg.

• DreamOC, o piramidă de sticlă care emite animații holografice folo-sind un fascicul de lumină și un ecran de proiecție 3D.

• Lighty, primul proiector mobil inteligent care are capacități robotice: mișcare panoramică, conectivitate wire-less și control al vocii.

• TinTag, dispozitiv reîncărcabil de tracking care ajută utilizatorii să își găsească obiectele sau animalele de companie mai ușor.

• Symmer3D , plat formă Delta multifuncțională pentru imprimare 3D, PCB miling și inscripționare cu laser.

Oportunități de networking cu actori importanți din industrie

How to Web Meet, aplicația mobilă a conferinței dezvoltată de echipa mReady, va ajuta participanții să intre în legătură unii cu alții, să discute în mod direct și să stabilească întâlniri. În plus, How to Web Meet va oferi utilizatorilor recomandări în funcție de interese și va facilita ast-fel interacțiunile sociale, îmbunătățind astfel experiența de networking a aces-tora. Aplicația este disponibilă acum în AppStore și pe Google Play, iar participanții la conferință vor primi indi-vidual datele de acces.

În plus, pe toată durata evenimentu-lui două networking lounges vor găzdui mese rotunde, sesiuni de Q&A și “Ask the expert” în cadrul cărora participanții vor avea ocazia să discute cu invitații conferinței.

Studii de caz, discursuri aplicate și bune practici

Toate acestea se adaugă la conținutul de foarte bună calitate: pe cele două scene ale conferinței vor urca antreprenori care au dezvoltat produse de succes la nivel global și profesioniști cu experiență în marketing, product sau development. Aceștia vor aborda teme precum crearea și lansarea de produse cu potențial, orga-nizarea echipelor de produs și metrici, growth hacking, dezvoltarea unei campa-nii de marketing digital, cum să crești prin conținut sau cum să dezvolți o comunitate în jurul produsului tău. Agenda completă a evenimentului este disponibilă online pe site-ul conferinței.

How to Web by NightOportunitățile de socializare con-

tinuă și după încheierea programului oficial al conferinței, când participanții vor fi invitați să interacționeze într-un cadru informal la evenimentele sociale organizate special pentru ei. Astfel joi, 26 noiembrie, discuțiile vor continua la networking cocktail, în timp ce vineri, 27 noiembrie, membrii comunității profesioniștilor în tehnologie sunt invitați la How to Web Rocks, petrecerea care încheie How to Web Conference 2015.

Evenimentul How to Web Conference 2015 organizat în colaborare cu Telekom Romania, Bitdefender, IXIA și CyberGhost, cu sprijinul partene-rilor Microsoft, Avangate, hub:raum, Ambasada Canadei în România, Mozilla, EIT Digital și Okapi Studio, va avea loc pe 26 și 27 noiembrie la Grand Cinema & More (Băneasa Shopping City). Biletele de tip Early Bird sunt disponibile pe site-ul conferinței până marți, 17 noiembrie.

Despre How To WebHow to Web este cel mai însemnat

eveniment dedicat inovației în tehnolo-gie și antreprenoriatului din Europa de Sud-Est. Conferința se adresează ino-vatorilor în tehnologie, antreprenorilor, dezvoltatorilor de produse tech, agențiilor și companiilor de outsourcing interesate de inovație, investitorilor și tuturor celor interesați de tehnologie și inovație. Mai multe detalii despre eveniment și lista vor-bitorilor confirmaţi pentru ediţia de anul acesta sunt disponibile online pe site-ul conferinţei.

Pentru mai multe informații despre How to Web:

Irina Nicoleta Scarlat CMO & Conference Manager Email: [email protected] Telefon: +40 720 034 031www.howtoweb.co Twitter: @how_to_web Facebook: http://www.facebook.com/howtoweb

Page 12: Today Software Magazine N41/2015

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

Adrian Lupau [email protected] Business Development Manager @Fortech

business

Să nu va imaginați însă că dispariţia unei companii se produce peste noapte, să nu uităm că Yahoo este încă o companie mare.

Aduceţi-vă aminte exemplul Nokia care a mizat pe scăderea costului de pro-ducţie în defavoarea inovaţiei. Managerii Nokia urmau mantra japoneză din anii “80: dacă scădem costul de producţie sufi-cient de mult, atunci vom putea accesa o piaţă mai largă de clienţi și astfel vom face profituri mai mari. Însă piața le-a demon-strat că oamenii își doresc mai degrabă produse inovative decât produse ieftine. Cumpărarea pe baza de nevoi primare mai e valabilă pentru maxim cinci pro-cente din ceea ce se cumpără, restul sunt nevoi superioare bazate pe consum, statut, dorinţe și aspiraţii. Sugestiv în acest sens exemplul iPhone.

Ani de zile, în outsourcing s-a mers pe business de volum. Deja există companii ce și-au deschis birouri în Cluj Napoca, eliminând asfel intermediarii din piaţa forţei de muncă și anume firmele de out-sourcing. Ca firmele de outsourcing să rămână competitive la Cluj e nevoie să se reinventeze și să vină cu o abordare nouă a pieţei. Practic e nevoie să folosească expertiza acumulată și să vândă produse în loc de oameni.

Acest lucru e puţin mai greu decât pare, pentru că, deși pare evident, el pre-supune o schimbare la nivel de mentalitate nu doar în rândul companiilor ci și în rân-dul oamenilor ce lucrează în IT. Practic se va trece de la vânzarea timpului unei persoane la vânzarea rezultatului muncii unei persoane. Capacitățile și abilitățile programatorului sunt ieftine sau din ce în ce mai ieftine. În urmă cu câţiva ani se găseau puţini programatori cu experienţă

Salariile din IT vor creşte

Pentru că în ultima perioadă am auzit frecvent că zilele outsourcing-ului sunt numărate și că nu mai este loc de creșterea salariilor, vreau ca prin acest articol să vă conving că salariile în IT vor crește. Nu e nici o glumă! Ecuaţia e simplă:

ori inovezi ori dispari de pe piaţă.

Page 13: Today Software Magazine N41/2015

13www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Young spiritMature organizationA shared vision

Join our journey!

www.fortech.ro

pe mobile. Implicit se plăteau salarii bune. Deja piaţa a reacţi-onat și tot mai mulţi intră în acest segment ceea ce înseamnă un singur lucru: abilitatea unui programator de a cere un salariu premium pe segmentul mobile se diminuează pe zi ce trece.

„Poţi cumpăra timpul unei persoane, chiar prezenţa ei fizică într-un anume loc pentru o perioada de timp şi un număr limitat de mişcări motrice. Dar niciodată nu vei putea cumpăra entuzi-asmul, loialitatea sau devotamentul. Acestea trebuie câştigate”, spunea Clarence Francis, manager al General Foods. Oamenii aleg să urmeze anumite companii în principal datorită modului în care respectivele companii reușesc să îi facă să se simtă impor-tanţi. În cele din urmă ne petrecem timpul acolo unde simţim că putem aduce valoare și putem schimba lumea în mai bine însă în felul nostru. Acesta va fi modul în care companiile vor recruta pe viitor candidaţi de valoare.

Explozia IT-ului din ultimii ani a făcut ca oricine care are minime abilități tehnice să beneficieze de un loc de muncă în IT. Totuși, cei care își vând timpul în schimbul unui salariu, vor ajunge destul de repede să înţeleagă faptul că timpul devine din ce în ce mai ieftin, însă competenţa e un bun din ce în ce mai scump. Până la urmă un client și indirect un angajator, nu își dorește un angajat doar de dragul de a-l pune la un birou unde să muncească ci își dorește în primul rând rezultatul muncii acelui om și expertiza lui.

Gândiţi-vă când mergem la un specialist, fie el doctor, avocat sau arhitect și plătim pentru serviciile acestuia. Nu cred că își pune cineva problema că un medic ce ne furnizează un diagnos-tic în 15 minute să ne taxeze doar 15 minute din timpul său. La fel vor evolua și lucrurile în software. Când expertiza este elementul de bază pentru care cineva este plătit, timpul investit deja devine un subiect de mărime secundară, aceasta dacă mai este cumva luat în calcul. În acest fel vor crește în cele din urmă salariile din Cluj pentru cei care vor înţelege aceste aspecte cât mai devreme.

Page 14: Today Software Magazine N41/2015

14 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

Comunităţi IT

comunități

Transylvania Java User GroupComunitate destinată tehnologiilor Java.Website: www.transylvania-jug.orgData înfiinţării: 15.05.2008 / Nr. Membri: 610 / Nr. Evenimente: 47

Comunitatea TSMComunitate construită în jurul revistei Today Software MagazineWebsites: www.facebook.com/todaysoftmag www.meetup.com/todaysoftmag www.youtube.com/todaysoftmagData înfiinţării: 06.02.2012 /Nr. Membri: 2424/Nr. Evenimente: 32

Cluj Business AnalystsComunitate centrată pe analiza de businessWebsite: www.meetup.com/Business-Analysts-ClujData înfiinţării: 10.07.2013 / Nr. Membri: 91 / Nr. Evenimente: 8

Cluj Mobile DevelopersComunitate axată pe tehnologiile mobileWebsite: www.meetup.com/Cluj-Mobile-DevelopersData înfiinţării: 05.08.2011 / Nr. Membri: 264 / Nr. Evenimente: 17

The Cluj Napoca Agile Software Meetup GroupComunitate centrată pe metodologia Agile de dezvoltare software.Website: www.agileworks.roData înfiinţării: 04.10.2010 / Nr. Membri: 437 / Nr. Evenimente: 93

Cluj Semantic WEB MeetupComunitate destinată tehnologiilor semantice.Website: www.meetup.com/Cluj-Semantic-WEBData înfiinţării: 08.05.2010 / Nr. Membri: 192/ Nr. Evenimente: 29

Romanian Association for Better SoftwareComunitatea oamenilor cu experiență din IT indiferent de tehno-logie sau specializare.Website: www.rabs.roData înfiinţării: 10.02.2011 / Nr. Membri: 251/ Nr. Evenimente: 14

Tabăra de testareComunitate formată din testeri și alți profesioniști din industria IT care, în cadrul unor întâlniri informale lunare, împărtășesc din cunoștințele proprii și învață din experiențele profesionale ale celorlalți membri.Website: www.tabaradetestare.roData înfiinţării: 15.01.2012/Nr. Membri: 1243/ Nr. Evenimente: 107

Luna aceasta ne vedem la Cluj IT Days ! Evenimentul de lansare a revistei îi urmează imediat, în 26 noiembrie. Totodată, la București, în 26-27 noiembrie are loc How To Web. Acestea sunt ultimele două mari evenimente de IT ale acestui an.

Calendar Noiembrie 24-25 (Cluj)Cluj IT Dayswww.itdays.ro

Noiembrie 26 (Cluj)Lansarea numărului 41 al Today Software Magazine www.todaysoftmag.ro

Noiembrie 26-27 (Cluj)How To Web 20152015.howtoweb.co

Decembrie 3 (Cluj)„Steps towards automated driving” workshop @ Bosch facebook.com/events/926482357430895/itdays.ro

Decembrie 3 (Cluj)Let’s meet and talk about Window functions and reducing SQL Server Contentionmeetup.com/SQL-Cluj/events/226808955/

Decembrie 8 (București)Angular JS cu Andrei Rineam e e t u p . c o m / B u c h a r e s t - A- D - C - E - S - M e e t u p /events/226695597/

Decembrie 15 (Cluj)Lansarea numărului 42 al Today Software Magazine www.todaysoftmag.ro

Decembrie 17(Timișoara)Tabara de Testare Timisoara - Meetup #39m e e t u p . c o m / Ta b a r a - d e - Te s t a r e - T i m i s o a r a /events/224894942/

Page 15: Today Software Magazine N41/2015

15www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Sistem de poziționare pentru spații

închise bazat pe semnal Wi-Fi

Acestea fiind spuse, în cadrul eveni-mentului Fedex Day organizat în cadrul companiei Betfair din Cluj, am avut și noi ocazia de a realiza un sistem de acest gen. Ceea ce a făcut să fie și mai interesant și mai provocator a fost faptul că evenimentul Fedex este organizat într-un interval de doar 24 de ore și cu resurse sau instrumentar care nu sunt ale unei agenții secrete. Cu toate acestea, ne-am gândit să încercăm.

Problema: Am putea monitoriza diverși colegi sau dispozitive în cadrul biroului? Problema cea mai delicată este faptul că, de cele mai multe ori, aflarea unei poziții în funcție de semnal (GSM, GPS șamd) se face cu o marjă de eroare destul de mare, ceea ce într-un birou nu prea este acceptabilă pentru că spațiul unui office nu poate fi comparat cu zona geografică a unui oraș.

Soluția: După câteva ore de cercetare am descoperit că ar exista deja unele soluții pe piață, dar că majoritatea nu ne-ar ajuta foarte mult, deoarece ori sunt sisteme private, ori sunt contra cost… Apoi, cu siguranță nu ar fi la fel de distractiv.

Ceea ce am încercat noi, era să avem locația tuturor dispozitivelor conectate în rețeaua internă pe baza fapului că erau fără fir și conectate pe Wi-Fi. Biroul nostru are mai multe puncte de access (AP) fără fir, iar toate acestea sunt administrate independent de către un panoul de control central.

Primul pas a fost interogarea Wireless Lan Controller (WLC) prin intermediul protocolului SNMP și a căuta lista cu toate

Probabil majoritatea dintre voi au văzut binecunoscutul film “Enemy of the state”, film în care este prezentată ideea conform căreia NSA poate afla unde ești localizat, fără ca tu să știi, doar cu ajutorul telefonului mobil. Ideea filmului lansat în 1998 părea science-

fiction la acea vreme, dar în zilele noastre inclusiv 2-3 oameni pot face un sistem de acest gen, singura necunoscută fiind accesul la meta-date.

Bogdan [email protected] Development Security Testing & Assurance Analyst @Betfair

programare

Iacob [email protected] Principal Developer @ Betfair

Page 16: Today Software Magazine N41/2015

16 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

punctele de acces (AP) Wi-Fi prin intermediul metodei SNMP Walk pe cLApIfMacAddress. Pentru fiecare AP din listă, am extras toate dispozitivele conectate la el (bsnMobileStationMacAddr + Adresa MAC a AP-ului în sistem zecimal) și puterea semnalului (Received Signal Strength Indicator - RSSI) (bsnMobileStation-RssiData + Adresa MAC a dispozitivului în sistem zecimal + Adresa MAC a AP-ului în sistem zecimal). Se pot interoga foarte multe informații despre dispozitive (IP, VLAN, metoda de crip-tare șamd), dar noi am mers strict pe variabilele expuse mai sus pentru a ne atinge scopul.

Puterea semnalului (RSSI) este dat în dBm, deci pasul al doi-lea ar fi convertirea acestor date în metri.

Pentru a calcula distanța în metri dintre AP și dispozitiv avem nevoie de doi parametri, și anume: puterea semnalului și frecvența semnalului. Formula de calcul este forma transformată a Free Space Path Loss (FSPL):

Pentru distanța în metri și frecvența în MHz, constanta K are valoarea -27.55, puterea de emisie (Ptx) peste 20dBm (100mW) și frecvența de 2412MHz (2.4GHz) de unde reiese o funcție sim-plă prin care se face transformarea.

De exemplu, pentru signalLevel egal cu -57dBm, rezultatul va fi 7.000397427391188 metri.

Având toate aceste informații, am avut nevoie de o hartă la scală a locului și locațiile AP-urilor și să transformăm distanța la nivel de pixeli. Pentru harta, am folosit o scală de 16px/1m.

Pentru a indica poziția dispozitivului pe hartă în funcție de informațiile disponibile am utilizat multilaterația. Problema multilaterației este scrisă astfel:

unde, n este numărul de AP care recepționează semnal de la dispozitiv (valoarea RSSI), D = (X,Y) este poziția dispozitivului, APi = (Xi, Yi) pozițiile AP-urilor, și Ri este distanța măsurată dintre AP și dispozitiv. Este un sistem non linear, dar liniarizarea este posibilă prin substragerea celei de-a “i”-a ecuație din toate cele n-1 ecuații:

În urma calculelor ne-am așteptat ca toate cercurile să se intersecteze într-un singur punct, însă în cazul real măsurătorile erau afectate de erori, iar cercurile se intersectau în mai mult de un punct. Toate aceste puncte de intersecție identifică o arie iar precizia soluției este afectată.

Dm = (Xm, Ym) este poziția estimată a dispozitivului.

Pasul final a fost de a adăuga elemente grafice de HTML5 (HTML5 Smoke and mirrors) pentru a afișa toate informațiile obținute de la echipamentul de rețea și pentru a vedea mișcarea dispozitivului în timp real pe hartă.

Din păcate, pentru că informațiile de la AP-uri se actuali-zau o dată la 3 secunde, poziția afișată în timp real era de fapt poziția afișată o dată la 3 secunde. Această durată de actualizare poate fi neglijată, deoarece într-un birou de dimensiuni mari în 3 secunde nu poți parcurge o distanță foarte mare și vei fi localizat tot în aria de eroare până la următoarea măsurare.

Soluția finală arăta astfel:

Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi

programare

Page 17: Today Software Magazine N41/2015

17www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Page 18: Today Software Magazine N41/2015

18 nr. 41/2015, www.todaysoftmag.ro

O luare în considerare atât a părerilor con-vergente, cât și a celor divergente în ceea ce privește o anumită viziune este o condiție de bază a evoluției strategiilor de dezvol-tare software.

Arhitectura unui sistem nu se poate defini în mod independent, ea depinde de un context dat, fapt care îl introduce în ecuaţie, pe acesta din urmă, ca un aspect important și definitoriu în alegerea tipa-rului arhitectural. Analiza elementelor componente va aduce mai multă claritate în alegerea formei arhitecturale a soluţiei pe care o construim.

Fiecare dintre noi ne formăm și ne dez-voltăm urmând un traseu anume, fapt care determină formarea unor viziuni diferite asupra tehnologiei. Universităţile pe care le absolvim, firmele prin care trecem, pro-iectele cu care intrăm în contact, studiul individual contribuie la formarea unui pachet de informaţii care ne determina să vedem lucrurile fie într-un mod, fie în altul. Pe de altă parte, rata evoluţiei tehno-logice face ca fiecare dintre noi să asimilăm într-o anume măsură noutăţile apărute.

Un aspect important, într-un mediu atât de dinamic, îl constituie filtrarea informaţiei. Apariţia zecilor și sutelor de tehnologii, pe unitatea de timp, necesită timp de asimilare, criterii de analiză, capa-citate de catalogare. De cele mai multe ori, formatarea noastră profesională este rezultatul concluziilor altora. Îmbrăţișăm preferinţele tehnologice ale firmelor în care lucrăm, preluăm know-how-ul, de multe ori, în mod automat. Toate aces-tea formează un sistem de valori, de cunoștințe,care ne determină capacitatea de lucru. Începem să ne maturizăm în momentul în care putem să ne detașăm de acest întreg aparat de procesare tehnolo-gică și să privim în mod obiectiv lucrurile.

Maturizarea viziunii arhitecturale se dobândește o dată cu participarea la un număr tot mai mare de proiecte și prin interacţiunea cu echipe de lucru tot mai diverse. Varietatea proiectelor ne lăr-gesc cadrul de percepţie a problematicii. Fiecare proiect contribuie la formarea unei noi perspective sau la redefinirea uneia existente.

Proiectarea sistemelor robuste –

câteva repere

Strategiile de dezvoltare software au fost și vor fi un permanent subiect de dez-bateri și contradicţii, care creează totodată un mediu propice dezvoltării ideilor importante. De-a lungul anilor am avut oportunitatea de a întâlni diferite păreri

și atitudini pe marginea acestui subiect.

programare

Romulus Bucur [email protected] Senior .NET developer @Siemens

Page 19: Today Software Magazine N41/2015

19www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Complexitate vs. simplitateApetitul pentru complexitate sau tendinţa spre simplitate sunt

trăsături care ne caracterizează încă din anii de școală. Este lesne de observat că încă din primii ani de școală unii elevi preferă la matematică, rezolvări complexe și alții se mulţumesc cu drumul cel mai scurt spre soluţia problemei. Aceste tendinţe sunt deter-minante pe întreg parcursul vieţii.

Soluţiile complexe aduc noi argumente, deschid un câmp de vizibilitate mai larg, atunci când sunt bine alese. Calităţile cu care înzestrăm o soluţie software pot aduce beneficii directe în scala-bilitate sau în robusteţea aplicaţiei. În schimb, dacă relaţiile dintre aspectele importante nu sunt bine definite atunci complexitatea poate fi o piedică majoră. Nu de puţine ori am întâlnit aplicaţii care încercau să combine cele mai importante tehnologii ale zilei, cu cele mai recomandate arhitecturi, în schimb creau un cadru complex, fără norme bine definite, un soi de șah fără reguli clare. Procesul de dezvoltare și mai apoi de întreţinere al unei astfel de aplicaţii poate fi extrem de dificil.

(sursa http://www.makeyourbestself.com/)

Complexitatea poate fi un atribut al haosului sau unul al evoluţiei. Arhitectura sistemului trebuie să aducă claritate, flexi-bilitate și să înzestreze sistemul cu forţă. Simplitatea unui sistem complex constă în faptul că un număr mare de piese pe tablă de joc, creează un peisaj limpede, intuitiv.

(sursa https://en.wikipedia.org/wiki/Public_transport)

Mediu AgileSistemele software actuale trebuie să se supună unor cerinţe

diferite de cele care se produceau cu 20 de ani în urmă. Mediul Agile de dezvoltare aduce cerinţe extrem de diverse sistemelor, astfel că apariţia unor piese de puzzle, greu de anticipat la startul unui proiect, devine o aproape evidenţă.

Nevoile clienţilor sunt tot mai ridicate astfel că sistemele software trebuie să anticipeze și să integreze o arhitectură cu un nivel ridicat de flexibilitate și de adaptabilitate la un mediu com-plex. Acest fapt “ridică la fileu” nevoia de creare a unor sisteme tot mai complexe și mai inteligente. Inversia controlului (inversion of control) a devenit o cerinţă prioritară în proiectarea sistemelor, fiecare componentă trebuind să aibă capacitatea de a fi bine defi-nită și independentă de celelalte. Același rol important îl joacă și designul orientat pe interfeţe (interface oriented design), etc. . Din start putem afirma că aplicaţiile care nu respectă noile standarde de abstractizare sunt un trouble maker.

Time line-ulO constrângere importantă este dată de termenii de livrare

ai produsului. Aceștia pot exercită o presiune considerabilă în alegerea elementelor arhitecturale. O arhitectură complexă nece-sită timpi de dezvoltare proporţionali, în schimb o arhitectură prea simplistă poate introduce o gama largă de probleme. Astfel

Page 20: Today Software Magazine N41/2015

20 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

tendinţa de a sacrifica modulele de unit testing este aproape evi-denţă, în cele mai multe situaţii. Există un impuls subconștient de a considera faptul că funcţionalitatea modulelor create este asi-gurată doar prin faptul că există cod scris, aspect căruia trebuie să îi acordăm multă atenţie.

Mediul Agile de dezvoltare solicită adăugarea de noi func-ţionalităţi într-un ritm foarte alert, fapt care nu permite o bună planificare și analiză a tuturor implicaţiilor, cum per-mite Waterfall. Astfel introducerea de erori este aproape inerentă. Odată cu adăugarea unui pachet de funcţionalităţi, numărul de erori va fi destul de greu de controlat și timpul alocat evenimentelor neprevăzute va fi consumat în mare parte de repararea de erori introduse pe durata dezvoltării.

(sursa http://driftingtuning.com the-10-most-unreliable-cars-on-the-market-today/)

Nevoia de a crea module fără erori solicită ancorarea fiecărei funcţionalităţi într-un sistem care să asigure integritatea com-portamentului. O modalitate excelenţă de design care să permită asigurarea unui backup de acest fel este oferită de test driven design. Această modalitate de design asigura crearea unor indi-catori de stare al fiecărui aspect.

Designul bazat pe testare (impropriu numit testare) imprimă soluţiei un traseu oarecum diferit de dezvoltare față de cel cla-sic. O minte formată pe pricipiile clasice de programare scapă detalii importante în procesul de design, punând accentul pe alte componente. Designul bazat pe testare(TDD) permite detecta-rea elementelor problemă încă din faza de proiectare. Chiar dacă pentru mulţi acest tip de dezvoltare pare atipic, el oferă garanţia robusteții. Astfel efortul asimilării acestui procedeu de design

conduce la rezultate foarte bune în etapele următoare.

Sistemele a căror arhitectură nu se supun unor normative clare de relaţionare a componentelor și straturilor, cât și modulele al căror comportament nu poate fi garantat în permanentă (prin mecanisme de verificare) constituie un impediment des întâlnit. Timpii de dezvoltare sunt depășiţi, în general, datorită acestor două categorii de probleme. Aceste neajunsuri pot fi ușor depă-șite în cazul în care arhitectura sistemelor software este gândită și realizată cu maturitate.

Proiectarea sistemelor trebuie să ocupe un loc prioritar în dezvoltarea software, altfel aplicatiile pot avea un grad ridicat de

fragilitate. Criteriile de formare a arhitecţilor sunt foarte com-plexe. Chiar dacă multe companii promovează pe astfel de poziţii dezvoltatori cu o experienţă de mai puțin de opt ani, cred că este un interval prea scurt de formare. Procesul de definire a pro-filului unui arhitect durează o perioadă mai mare și implică și alţi factori decât pregătirea pur teoretică. Este importantă inter-acţiunea cu un număr mare de proiecte pentru a putea înţelege bine concluziile autorilor importanţi, cât și a rațiunii care stă la baza acestora. Maturitatea în proiectarea sistemelor survine în momentul în care un programator a asistat la dezvoltarea unui număr consistent de aplicații astfel încât să poată înțelege nea-junsurile, dar să fie capabil să definească sisteme robuste. Doar o experienţă de acest fel poate garanta soliditatea sistemelor create.

programareProiectarea sistemelor robuste –câteva repere

Page 21: Today Software Magazine N41/2015

21www.todaysoftmag.ro | nr. 41/noiembrie, 2015

să o valorifice pentru a-și valida produ-sul. Din acest motiv, aceasta are o mare importanță pentru client și totodată repre-zintă și ultimul test major înainte de livrare. În acest articol voi prezenta cum se pot crea teste pentru Acceptance Testing Driven Development în .NET, utilizând SpecFlow și limbajul Gherkin. Specflow este un instru-ment open-source, care se integrează cu Visual Studio. De asemenea, articolul pre-zintă și cum se poate folosi Selenium Web Driver pentru a simula interacțiunea cu browser-ul.

Teste automate în Continuous Integration Pipeline

Un proces de integrare continuă reușit este definit de teste automate care rulează rapid, au o acoperire bună și nu returnează rezultate eronate. Testele automate sunt de obicei împărțite în mai multe seturi, fiecare având obiectivul său: teste de unitate, teste de acceptare, teste de integrare, teste de sis-tem și teste de securitate.

Testele de acceptare reprezintă o etapă crucială în procesul de punere în funcțiune, întrucât permit echipelor care se ocupă de livrarea produsului să treacă dincolo de procesul de integrare continuă de bază. Odată ce testele automate de acceptare sunt implementate, se pot testa criteriile business de validare pentru aplicație, adică, se poate confirma că aplicația oferă funcționalitate de valoare utilizatorilor. Testele de acceptare sunt în mod tipic rulate pe fiecare versiune a software-ului care trece de testele unitare.

Un test de validare individual are scopul de a verifica dacă criteriile de acceptare a

unei povești (story) sau cerințele business au fost îndeplinite. Criteriile de acceptare/ validare apar în multe variante: ele pot fi funcționale sau non-funcționale. Criteriile funcționale sunt legate de scenariile utiliza-torului final (end-user), fiind strâns legate de procesele business pe care aplicația le face posibile. Criteriile non-funcționale se ocupă de operarea unui sistem, mai degrabă decât de comportamentul speci-fic al funcțiilor. Performanța, capacitatea, disponibilitatea, siguranța, flexibilitatea la modificări, gestionarea erorilor și utilitatea sunt exemple bune de criterii de validare din punct de vedere nefuncțional. Ideea principală este aceea că o poveste sau o cerință specifică este considerată completă și funcțională numai atunci când se demon-strează că trece testul său de acceptare.

Un set de teste de acceptare, nu numai că asigură furnizarea valorii business așteptată de către utilizatorul final, dar ajută și la diminuarea potențialelor regresii ale defectelor sau ale modificărilor neașteptate ale funcțiilor aplicației. Testele automate de acceptare surprind probleme serioase pe care testele de unitate sau testele pe compo-nente, oricât ar fi de cuprinzătoare, nu le-ar putea niciodată detecta. Din punctul de vedere al ciclului de dezvoltare, mai există un alt avantaj major al testării pentru accep-tare: este unul dintre puținele procese care garantează faptul că toate grupurile sunt implicate în procesul de livrare – clienții, analiștii, managerii de proiect și echipa de dezvoltare (dezvoltatori, testeri și dev-ops).

Cheltuielile generale pentru a crea și a menține un set corespunzător de teste de

Acceptance Testing Driven

Development utilizând SpecFlow cu

Selenium în C#

În ultimii ani, pentru companiile de software devine din ce în ce mai evident că împli-nirea cerințelor clientului este esențială. De aceea, procesul de testare a produselor este orientat tot mai mult în această direcție a clientului. Acceptance Test – Driven

Development este una dintre practicile esențiale de testare pe care utilizatorii finali ajung

Sebastian Silaghi [email protected] Senior Software Developer in Test @VE Interactive

Page 22: Today Software Magazine N41/2015

22 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

testare

acceptare sunt mai ales la aplicațiile complexe semnificativ mai mici decât costul efectuării manuale frecvente a testelor de regre-sie și validare, sau decât acela al alternativei de a scoate pe piață software de calitate slabă. O testare eficientă de acceptare ar tre-bui efectuată pentru fiecare lansare, drept o etapă formală odată ce dezvoltarea a fost finalizată și se apropie lansarea.

Privire de ansamblu asupra SpecFlow În lumea .NET, SpecFlow reprezintă unul dintre plugin-

urile cele mai cunoscute pentru Acceptance Testing Driven Development.

SpecFlow are ca scop eliminarea problemelor de comunicare dintre experții care cunosc domeniul de business al aplicației și dezvoltatori, prin includerea specificațiilor de comportament în procesul de implementare efectivă, într-un limbaj ușor de citit și lipsit de ambiguitate. Este un instrument .NET open source inspirat de către framework-ul Cucumber, care permite scri-erea specificațiilor în format Gherkin, fiind succint și ușor de interpretat de către o persoană. Gherkin este un limbaj Business Readable, specific domeniului, care vă permite să descrieți com-portamentul software-ului fără a vă ocupa de modalitatea în care acel comportament este implementat sau de funcționalitatea cerută pentru un sistem dat.

Cele mai frecvent semnalate avantaje ale utilizării SpecFlow sunt :

• încurajează colaborarea dintre membrii echipei – de profil tehnic sau business;

• caracteristicile sistemului pot fi scrise și/sau înțelese de către persoane non-tehnice;

• implementarea mai eficientă a modificărilor;• calitate mai ridicată a produsului;• mai puțină muncă refăcută.

Utilizarea SpecFlow pentru a executa teste cu Selenium WebDriverIntegrarea SpecFlow cu Visual Studio este simplă și constă

în doi pași. Primul pas este să instalați Integrated Development Environmentul utilizând opțiunea Extensions and Updates din meniu, după cum puteți vedea pe imaginea de mai jos:

Ultimul pas este să configurați proiectul din Visual Studio, pentru a funcționa cu SpecFlow prin instalarea pachetului NuGet corespunzător.

SpecFlow suportă multiple framework-uri cunoscute de executare a testelor, precum Nunit și MsTest, dar de asemenea

vine și cu un engine de executare de teste special creat, numit SpecFlow+Runner.

Ca și oricare alte teste din familia Cucumber, un test de vali-dare SpecFlow necesită: un fișier de caracteristici (feature file), definirea pașilor și cod business.

Pentru a defini comportamentul sistemului, crearea unui fișier Feature este obligatoriu. Fișierul acesta conține privirea de ansamblu asupra funcționalității din user story și scenariile scrise în limbaj Gherkin. Este de preferat să avem echipe compuse din oameni cu diferite roluri în procesul de dezvoltare care să lucreze la crearea fișierului de caracteristici, deoarece aceasta duce la îmbunătățirea integrării și comunicării în echipă și reduce durata unui ciclu de dezvoltare pentru funcționalități noi. Un fișier de caracteristici de obicei conține o listă de scenarii, care începe cu cuvântul Scenariu (Scenario). Folosind etichetarea, se pot grupa laolaltă caracteristici și scenarii și se pot reutiliza părți din sce-nariile deja definite. Fiecare scenariu este definit printr-o listă de pași, care trebuie să înceapă cu unul dintre cuvintele cheie: Given (Dat), When (Când), Then (Apoi), But (Dar) sau And (Şi).

Iată un exemplu:

Cuvântul cheie Given stabilește precondiții sau context pen-tru scenariu. Acțiunea, comportamentul pe care ne concentrăm este marcat prin When. Validarea scenariului este realizată utilizând afirmația Then; aceasta verifică de fapt dacă lucru-rile corecte s-au petrecut în etapa When. And poate fi folosit în oricare dintre cele trei secțiuni și servește drept o frumoasă prescurtare pentru repetarea lui Given, When sau Then. Există anumite situații în care este necesar un pas negativ, și atunci poate fi utilizat cuvântul cheie But.

Traducerea liniilor în etape este efectuată prin click dreapta în fișierul de caracteristici și selectarea ”Generate Step definition”. Un ghid va crea scheletul fișierului pentru etape.

Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C#

Page 23: Today Software Magazine N41/2015

23www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Executarea testelor de acceptare la nivelul UI necesită interacțiune cu browser-ul, iar aici Selenium Web Driver ne permite să abstractizăm comunicarea cu aplicația web. În interi-orul etapelor auto-generate, noi putem executa diferite operații bazate pe funcționalitatea Selenium Web Driver, care facilitează interacțiunea cu Document Object Modelul unei pagini web.

Ca și oricare alt test automat, pentru a se putea ocupa de inițializarea testului și de curățarea sa, SpecFlow expune un set de evenimente care pot fi interceptate: BeforeScenario (Înainte de scenariu) și AfterScenario (După scenariu).

În general, acestea pot fi utilizate pentru a realiza logică adițională de automatizare pe evenimente specifice. Chiar dacă sunt globale, ele pot fi restricționate pentru a rula numai pentru funcționalități sau scenarii specifice. Hook-urile BeforeScenario și AfterScenario conțin logică de automatizare care trebuie să ruleze înainte/după executarea fiecărui scenariu ca și în cazul inițializării browser-ului la începutul fiecărui scenariu și dealo-carea obiectelor browser-ului după fiecare executare de test.

Atunci când creăm un test de validare cu SpecFlow, ar trebui să luăm în considerare următoarele drept bune practici:

• Fișierele de caracteristici ar trebui să fie de fapt caracteristici

și nu porțiuni întregi din aplicație, ar trebui să folosească titluri sau etichete descriptive și să conțină scenarii care sunt independente și deterministe.

• Etapele ar trebui să fie bucăți mici, simple și concise de cod. Ar fi de dorit ca ele să fie reutilizabile, să aibă o sigură res-ponsabilitate și o separare bună a preocupărilor (concerns)

• Scrieți scenarii și pentru cazurile non-happy-flow.

• Revedeți, reutilizați și îmbunătățiți-vă scenariile și etapele.

ConcluziiTestele automate de acceptare reprezintă un pas important

în procesul de Continuous Integration, sunt nu numai barieră a calității în procesul de livrare, dar contribuie semnificativ la crearea documentației pentru procesele de business, care ne ajută să evităm problemele comune de mentenanță pe termen lung.

Implementarea testelor de acceptare conduce la formare de echipe interfuncționale în care testerii, analiștii și dezvol-tatorii lucrează împreună pentru a dezvolta în mod corect funcționalitățile sistemului. Dacă comunicarea dintre părțile inte-resate și dezvoltatori este clară, echipele de software funcționează cel mai bine, iar evitarea neînțelegerilor prin definirea testelor de acceptare va crește nivelul de colaborare al echipei.

Implementarea testelor de acceptare folosind instrumentul SpecFlow ne permite să utilizăm exemple și concepte din lumea reală pentru a descrie comportamentul sistemului pe înțelesul acționarilor.

Referințe1. “Specification by Example: How Successful Teams Deliver the Right Software” 1st Edition 2011 by Gojko Adzic 2. “The Cucumber Book: Behaviour-Driven Development for Testers and Developers (Pragmatic Programmers) 1st Edition” 2012 by Matt Wynne and Aslak Hellesøy3. http://www.specflow.org/ 4. http://www.testdriven.com/ 5. http://www.acceptancetesting.info/ 6. https://msdn.microsoft.com/en-us/magazine/gg490346.aspx

Page 24: Today Software Magazine N41/2015

24 nr. 41/2015, www.todaysoftmag.ro

companiilor și produselor care au nevoie de designeri UX, cât și al acestora din urmă prin expunerea aspectelor esențiale care caracterizează etapa premergătoare proiectelor IT, cea de analiză și cercetare, adică auditul de User Experience. Această etapă are scopul foarte clar de a identi-fica dacă și în ce măsură un produs are nevoie de îmbunătățiri în ceea ce privește relația directă cu utilizatorul/clientul.

Produsele software trebuie să trăiască și să crească împreună cu businessul și cu clienții acestuia. Cum știm ce componente trebuie revigorate, refăcute sau regândite?

Totul debutează cu un audit de User Experience. Acesta nu este un aspect ine-dit al procesului de creare de software, ci mai degrabă o componentă de bază a designului industrial încă din stadiile tim-purii ale acestuia. Scopul este crearea unei analize detaliate ce conturează un cadru de intersecție al cerințelor de business cu cele ale clientului precum și modalitatea de a obține obiective concrete referitoare la utilizatori. Acesta poate fi un proces istovitor, dar el poate identifica acțiuni clare de urmat, precum și un plan de a îmbunătăți produsul. Aspectele vizate de o astfel de analiză cuprind: reguli corecte de design, conformitate funcțională,

arhitectura informației și tipare de utilizare.

Întrebările la care trebuie să răspundă auditul de UX sunt:

• Care sunt tendințele actuale și așteptările utilizatorilor pentru această piață?

• Ce am încercat până acum? Ce a funcționat și ce nu?

• Ce probleme sau nevoi ale utili-zatorilor se regăsesc în setul de date studiate?

• Dintre acestea, care aspecte pot fi rezolvate prin designul UI/UX al produsului?

Auditul începe cu partea de cercetare și documentare. Acest proces va genera informații utile pentru realizarea unor modele de cercetare ale utilizatorului, cum ar fi user persona (profilul utilizatoru-lui) sau realizarea de sondaje. Majoritatea companiilor dispun de metode de analiză a datelor de marketing, trafic și utilizarea produsului. De obicei acest tip de date nu este analizat dintr-o perspectivă cen-trată pe utilizator care să ia în considerare mentalitatea utilizatorului în procesul de interacțiune cu produsul.

Auditul de User Experience

O dovadă a maturității domeniului IT din Cluj-Napoca o reprezintă nevoia acută din ultimii ani de designeri UI/UX și implicit conștientizarea că eficiența unui designer se reflectă nu doar în procesele de creație, ci și în analiza și

sintetizarea datelor despre produs. Acest articol își propune să vină atât în ajutorul

programare

Mircea [email protected] UI/UX Designer @ Yardi Romania

Page 25: Today Software Magazine N41/2015

25www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

În continuare vom parcurge o listă de metode și surse de colectat informații și date relevante.

• Interviuri cu factorii decizionali - Efectuarea de intervi-uri cu persoanele aflate în vârful piramidei decizionale, cum ar fi: șefi de departament, manageri de produs, coordonatori ai echipelor de programatori, etc. . Aceste interviuri ar trebui să ofere observații despre utilizatori și componența pietei.

• Statistici de vânzări - deși aceste date sunt folosite în prin-cipal de către departamentul de vânzări, o parte din ele sunt folositoare auditului de UX. O chestiune de remarcat ar fi, de exemplu, secţiunile care reflectă probleme de transmitere ale unor instrucțiuni sau informații utile (caracteristici ale artico-lelor de pe site-ul unui magazin online) către user. Exemplu: un anumit articol vândut online are o rată foarte mare de returnare din cauza alegerii la cumpărare a unor dimensiuni greşite. Dacă această rată este mult mai mare decât a aceluiaşi produs vândut în magazine, înseamnă că ar putea fi o problemă cu claritatea informațiilor de pe site privind dimensiunile acestui produs.

• Informații din Call Center - centrele de asistență (prin telefon sau online) sunt o sursă foarte bună pentru a afla problemele utilizatorilor. Deși multe dintre aceste informații pot fi irelevante, putem afla ce componente ale produselor software lipsesc sau necesită îmbunătățire. Exemplu: În cazul unei pagini de abonare la un serviciu, cu trei variante de abo-nament, un număr mare de clienți sunau pentru a afla care este diferența dintre cele trei tipuri de abonament, în ciuda faptu-lui că diferențele dintre abonamente erau prezentate în pagină. Acest gen de întrebare recurentă reflectă foarte clar faptul că zona de prezentare a abonamentelor necesită îmbunătățiri.

• Web Analytics - Analizele cantitative de trafic pot să ofere o imagine corectă despre câte persoane accesează un site, de unde vin, la ce se uită, precum și statistici pe durate mai lungi de timp. Se pot utiliza instrumente avansate de monitorizare pentru a afla în detaliu care este parcursul de navigare al unui user pe site, în ce locuri acesta va părăsi site-ul și unde pleacă, după ce încetează să mai folosească produsul. De asemenea, o altă metodă utilă sunt programele care înregistrează video acțiunile utilizatorilor pe ecran. În acest fel se pot observa ușor zone în care utilizatorul are probleme sau neclarități. Exemplu:

Se observă că un număr mare de utilizatori cu conturi gratuite părăsesc pagina de cumpărare a unui abonament. La o verificare ulterioară a bazelor de date observăm că mulţi dintre aceştia au cumpărat în cele din urmă un abonament prin telefon. Aceasta înseamnă ca produsul software nu răspunde cum trebuie necesi-tăţilor utilizatorilor.

• Sondaje de opinie - departamentele de marketing se ocupă cu realizarea și colectarea sondajelor de opinie ale utilizatorilor. De obicei, aceste sondaje nu prospectează în mod particular probleme de UX, însă putem afla des-pre unele preferințe sau comportamente ale utilizatorilor.

• Social media - site-urile de recenzii, blogurile, Facebook, Twitter și alte rețele de socializare pot să ne ofere informații unice și directe despre cum percep clienții un anume pro-dus software. Pentru produsele mari, care generează conținut substanțial de social media, există instrumente de analiză ale percepțiilor utilizatorilor de pe platformele de socializare. Un număr mare de utilizatori se plâng de anumite funcționalități ale produselor, dar nu contactează departa-mentul de asistență. Pot fi găsite exemple descrise în detaliu de către utilizatori ce includ capturi de ecran ale problemelor întâlnite precum și sugestii pentru o experiență mai plăcută.

• Studii de piață - acest gen de materiale trebuie parcurse și sondate pentru a găsi informațiile relevante. Deși acest tip de cercetare nu oferă detalii specifice despre designul produselor, el poate servi ca bază pentru anumite ipoteze funcționale, cât și pentru crearea de user personas sau user narratives (scenarii de utilizare). Informațiile utile despre utilizatori ce pot reieși din studiile de piață sunt: competența tehnologică, așteptări inițiale sau nivelul de implicare al utilizatorului în efectuarea sarcinilor.

După finalizarea documentării, o regulă de bază pentru realizarea auditului constă în parcurgerea conștientă a produ-sului prin asumarea rolului utilizatorului și prin încercarea de a îndeplini acțiunile pentru care a fost proiectat acest produs. Se abordează funcționalitățile de bază, pe rând, folosind parcursuri realiste ale utilizatorului.

Trebuie să fim atenți la deciziile și reacțiile pe care le avem și să luăm notițe. Ce obstacole întâlnim? Ce interacțiuni ne creează frustrare? Dacă este posibil, se repetă acest proces cu persoane

Page 26: Today Software Magazine N41/2015

TODAY SOFTWARE MAGAZINE

26 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

care nu sunt familiare cu produsul. Pe durata acestor interacțiuni cu produsul vom ține cont de următoarele aspecte:

• Text expresiv şi digerabil - nu prea scurt, nu prea lung, minimul necesar pentru o bună înțelegere a informației. Trebuie să ne punem întrebarea: Îl ajută acest text pe uti-lizator să înțeleagă contextul (ex: titlul paginii) în care se află sau acțiunea pe care trebuie să o întreprindă?

• Elemente de indicare a acțiunii (call to action) – tre-buie redate compact, dar suficient de expresiv pentru ca utilizatorul să înțeleagă urmarea acestei acțiuni.

• Ab o v e t h e f o l d - c o nț i nu t u l r e l e v a nt p e n -t r u u t i l i z a t o r ș i c a re g e n e re a z ă v e n i t p e nt r u afacere trebuie să se afle pe ecran la prima afișare a ecranului.

• Conținut vizual confortabil - folosirea de imagini sim-ple, relevante pentru baza de utilizatori. Scheme de culori potrivite pentru scopul și tipul produsului. Elemente vizuale care să nu obtureze sau să distragă atenția utilizato-rului de la elementele de indicare a acțiunii (call to action).

• Respectarea normelor culturale, sociale și religioase - folosirea de imagini, simboluri, culori care să nu contravină princi-piilor culturale sociale sau religioase ale bazei de utilizatori.

• Accesibilitate - verificarea valorilor de contrast ale culo-rilor folosite, precum și a dimensiunilor textului sau ale elementelor de interacțiune. Un alt aspect important este creșterea majoră a interacțiunilor de pe aparatele mobile (telefoane, tablete). Trebuie să ne asigurăm că mode-lele de navigare sunt compatibile cu aceste aparate (dimensiuni zone de interacțiune, elemente cu hover, etc.).

• Răspuns la acțiune (feedback status) - sistemul tre-buie să mențină utilizatorul informat cu privire la ce se întâmplă: pasul curent în proces, durata de comple-tare, situația de încărcare, introducerea corectă a datelor.

• Gradul de control şi de libertate al utilizatorului - pără-sirea cu ușurința a unei stări/ pagini alese din greșeală,

posibilitatea de a repeta sau anula ultima acțiune.

• Consecvență şi standardizare - cuvintele folo-site, situații le și acțiunile posibile trebuie să aibă același sens în toate stările și scenariile din produs.

• Prevenirea erorilor - mai bun decât un mesaj de eroare inteli-gent ar fi un design atent, care previne însăși apariția erorii. Sunt de evitat interacțiunile întâmplătoare sau repetate prin dezac-tivarea momentană sau ascunderea butoanelor. Interacțiunile cu potențial destructiv trebuie evidențiate corespunzător.

• Flexibilitate şi eficiență - asigurarea mediilor de interfață diferite, atât utilizatorilor începători, cât și celor avansați. Utilizatorii trebuie să aibă posibilitatea de per-sonalizare a interfeței sau de utilizare a scurtăturilor.

• Principii de design - compoziția vizuală a interfețelor trebuie să respecte principiile de contrast, repetiție, aliniere și proximitate.

• Recunoaşterea, diagnoza şi corectarea erorilor - mesajele de eroare trebuie exprimate într-un limbaj direct și simplu, să indice problema și să sugereze o modalitate de corectare a acesteia.

• Asistență şi documentație- ușor de accesat și ușor de cautat. Este ideală folosirea instrucțiunilor de asistență contextuală, concentrate pe acțiunile curente ale utilizatorului (tooltips).

Indiferent dacă decideți să creați o listă detaliată cu elemen-tele înșirate mai sus sau doar să faceți o trecere în revistă succintă a acestora, un audit de UX este primul pas în a înțelege procesul de design al unui produs cu conținut complex. Deși acest proces pare dificil și laborios, finalizarea lui va oferi percepția corectă și contextul potrivit pentru a lua decizii de design în cunoștinţă de cauză.

Parcurgerea acestui proces de analiză nu necesită ani de experiență însă va trebui să dați dovadă de răbdare, stăruință, curiozitate și atenție la detalii, calităţi necesare unui designer de UX.

programareAuditul de User Experience

Page 27: Today Software Magazine N41/2015

27www.todaysoftmag.ro | nr. 41/noiembrie, 2015

TODAY SOFTWARE MAGAZINE

Întâlnirile OSMTime pentru îmbunătățirea OSM Data

La sfârșitul fiecărei luni, în birourile noastre din UE, organizăm câte o întâlnire OSMTime. Similar formatului Maptime, în cadrul întâlnirii OSMTime, entuziaști car-tografi locali se adună pentru a împărtăși informații referitoare la inițiativele și instrumentele OpenStreetMap și pen-tru a lua parte la activitățile de editare a hărții. În timp ce informațiile și uneltele legate de GIS se află în sfera posibilităților, scopul principal al acestor întâlniri este editarea OpenStreetMap sau mai exact, îmbunătățirea OSM în imediata vecinătate geografică.

Ce am făcut până în prezent?Am abordat subiecte diferite precum:

îmbunătățirea calității și cantității datelor de adresă din OpenStreetMap ( pe par-cursul a 6 luni, în timpul întâlnirilor, am adăugat și editat adrese din Cluj-Napoca), am contribuit la eforturile HOT OSM, am organizat partide de cartografiere locală, am învățat și am utilizat unelte variate pentru a îmbunătăți harta (ScoutSigns, MapRoulette, etc.) și ne-am antrenat în tehnici specifice (ex. cum să comple-tăm imaginile cu geo-referințe și cum să le utilizăm drept suport pentru editarea hărților).

Ultima întâlnire OSMTime: testarea instru-mentului Missing Roads (Drumuri Lipsă)

La ultima noastră întâlnire, am încer-cat instrumentul Missing Roads, dezvoltat de colegii noștri de la Telenav.

După o scurtă introducere a instru-mentului, în care colegii noștri ne-au

arătat cum funcționează acesta și cum să îl utilizăm, toți cartografii au început să edi-teze în zona cu care rezonau cel mai mult.

Distracția a fost posibilă datorită manualului util scris de Martijn van Exel pe blogul său. Puteți vedea întreaga postare pe blog aici, dar pentru como-ditate, vom adăuga pașii de bază care vă vor permite să testați acest instrument. 1. Începeți cu instrumentul web.

Este o modalitate convenabilă de a localiza drumurile care lipsesc dintr-o zonă pentru că îți poți face rapid o idee asupra distribuției datelor drumurilor lipsă.

Dacă mărești suficient de mult, poți să vezi chiar și tronsoanele individuale. Să luăm asta drept exemplu:

Veți observa că există culori diferite pentru trasee și pentru tronsoane. Există trei tronsoane de bază care pot fi de aseme-nea filtrate după tipul lor sau după starea lor, după cum urmează: deschise (albas-tru), rezolvate (verde), nevalide (roșu).

2. Editați harta

Cum instrumentul web este în princi-pal destinat activității de browsing, nu veți putea modifica statutul tronsoanelor din acest instrument, în acest moment. Acest lucru poate fi făcut deocamdată numai în plugin-ul JOSM. Totuși, noi furnizăm linkuri convenabile pentru a edita extin-derea hărții curente în JOSM și iD.

Observația 1: Pentru a verifica rapid dacă există de fapt drumuri în zonă, puteți trece rapid de la nivelul OSM default la un nivel de imagini din aer, prin amabilitatea

ESRI. Observația 2: Interfața principală pen-

tru datele Missing Roads este plugin-ul nostru JOSM. El oferă o funcționalitate de browsing similară cu ceea ce face instru-mentul web, dar cu o vizualizare ușor diferită.

Punctele roșii reprezintă grupuri de drumuri lipsă la zoom mai mic. Când vă apropiați cu zoom-ul, puteți vedea tron-soanele reale și datele coordonatelor.

3. Instalați și activați plugin-ul

Instalați plugin-ul Missing Roads prin modalitatea obișnuită, prin panoul de preferințe al plugin-ului JOSM. Atunci când este instalat, și după un restart JOSM rapid, ar trebui să vedeți stratul Missing Roads și panoul.

Nivelul Missing Roads

Nivelul apare ca și oricare alt nivel JOSM din listă, și bineînțeles pe harta principală, indicându-ți grupurile de dru-muri care lipsesc de fapt.

Ca și orice alt nivel JOSM, acesta trebuie să fie activ dacă dorești să interacționezi cu el. Deci, dacă doriți să selectați tronsoane, va fi nevoie să activați mai întâi nivelul Missing Roads. Missing Roads Panel

În panou, puteți interacționa cu tronsonul/tronsoanele selectate în acel moment. Dacă nu vedeți panoul, ar trebui să îl puteți face vizibil utilizând ctrl-F3 / cmd-F3.

P a n o u l a r e t r e i t a b - u r i c u cantități diferite de informație despre

Drept voluntar, ești mereu în căutare de noi resurse care să îți satisfacă interesul pentru servicii sociale, proiecte civice, cari-tabile sau umanitare. OpenStreetMap este unul dintre acele proiecte OpenSource care a captat interesul a peste 2.300.000 de oameni pentru a se înregistra pe platformă și a contribui la dezvoltarea celei mai mari hărți gratuite a lumii - Free Wiki

World Map.Cum proiectul există din 2004, acum oamenii caută doar modalități, unelte de a ajunge la o nouă piatră de hotar, iar în această privință, unealta drumurilor lipsă – Missing Roads Tool – are un cuvânt de spus.

Întâlnirile OSMTime pentru îmbunătățirea OSM Data

Page 28: Today Software Magazine N41/2015

28 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

tronsonul selectat. Dacă aveți mai mult de un tronson selectat, veți vedea informații despre ultimul tronson pe care l-ați selectat. Tab-ul Tile arată informația de bază despre tronsonul selectat. Tab-ul History arată o istorie a modificărilor de statut și a comentariilor. Tab-ul Have a new idea? Are un link la forumul de idei al Missing Roads. Vă rugăm să trimiteți ideile voastre și bug-urile aici!

Panoul mai are și un număr de butoane de acțiune în partea de jos. Acestea sunt pentru filtrare, adăugare de comentarii și rezolvare de tronsoane. Vom discuta aceste funcții în următoa-rele secțiuni.

FiltrareaSimilar cu instrumentul web, puteți decide ce tronsoane

doriți să vedeți în funcție de starea lor și tipul (probabil). Dacă doriți să eliminați toate filtrele, puteți face click pe Reset. Puteți filtra numai după un status sau tip la un moment dat. Ca și bonus, puteți stabili un prag pentru evidența circulației.

Aceasta vă permite să filtrați tronsoanele care au un număr mai redus de călătorii peste ele. Puteți vedea numărul călătoriilor pentru tronsonul selectat în tab-ul Tile.

ComentariileDacă faceți click pe un buton de comentariu, se va deschide o

fereastră de dialog Add Comment, care vă va permite să adăugați un comentariu la tronsoanele curent selectate pentru ca tovarășii voștri cartografi să le vadă.

Dacă aveți mai multe tronsoane selectate (prin utilizarea butonului Shift în timpul selectării), comentariul va fi aplicat fie-cărui tronson.

Rezolvarea

În final, există trei butoane pentru a rezolva tronsonul/ tron-soanele selectate: butonul lock (închidere) rezolvă un tronson și îl marchează drept gata, butonul unlock (deschidere) marchează tronsonul drept nerezolvat sau deschis din nou, butonul ! mar-chează tronsonul drept nevalid (se utilizează dacă acolo nu există de fapt un drum).

Simplu, nu?

Deci, pe scurt, ceea ce am descoperit în timpul întâlnirii noastre OSMTime este că în anumite zone există multe ”drumuri lipsă” deja prezente (în concluzie, comunitatea OSM este activă),

dar, indiferent de aceasta, fiecare dintre participanți a găsit o zonă care avea nevoie de puțină ”dragoste de cartografiere”.

Sfaturi pentru cartografiere Un demers eficient în utilizarea instrumentului drumurilor

lipsă este cel împărtășit de Martijn: ”nu ar trebui să adăugați dru-muri numai pe baza urmelor. Aveți nevoie de o a doua sursă de validare. De cele mai multe ori, aceasta va fi o imagine din aer. Nivelul aerian default în JOSM este Bing. Imaginile Bing pot fi vechi de câțiva ani. Pentru anumite regiuni, este posibil să fie dis-ponibile imagini mai recente. Căutați straturi aeriene în meniul de imagini JOSM. Deci, asigurați-vă că verificați meniul de ima-gini din nou, dacă editați într-o zonă necunoscută.”

Şi pentru că o imagine valorează cât o mie de cuvinte, iată OSMTime:

programareÎntâlnirile OSMTime pentru îmbunătățirea OSM Data

Dragoș [email protected] Product Manager @ Telenav

Page 29: Today Software Magazine N41/2015

29www.todaysoftmag.ro | nr. 41/noiembrie, 2015

String is a not a single objectA String wraps a char[]. This means that

when you see a new String there could be a new char[] also involved. If you do + with a String it could use a StringBuilder (from Java 5.0) which also wraps a char[]. This means that usually there is more char[] created in Java than String objects. Sometimes char[] is the most common object type in a JVM.

String literals are still StringsA common misconception is that String

literals don’t count. They don’t add to the total after the code has been run at least once, however most of the time the question is about code which is run once. i.e. String literals still count.

Another common misconception is when String literals get loaded. In Java 6 and earlier they were loaded when the Class is loaded, however they are now (Java 7+) loaded when they are first used. This means that a section of code where String literals appear for the first time will create new String objects.

The JVM uses Strings, lots of them.The JVM uses Java code and this uses

Strings. The ClassLoader to load your class uses Strings. The name of the class you want to load is a String as are all the System pro-perties and all environment variables which are created so you can run your program are all Strings, both the values and the key names.

Let us consider a Hello World program and see how many Strings are created so this program can run. Is it 0, 1 or 2 Strings, see if you can guess how many are actually created..

public class HowManyStrings { public static void main(String[] args) throws IOException { System.out.println(„Hello world”); System.in.read(); }

}

This program stops on System.in.read(); allowing me to take a dump of the heap. The utility jmap can give a histogram count of the number of objects currently on the heap, assuming there has been no GCs this will be the number created.

A common question is how many objects or how many Strings does a section of code create. Often the answer is not what you think nor should you really need to know. It is useful to have an idea of when an object is created but there is so many other

factors which are often far more important to consider which can mean the total number for an application is not what you think.

Common misconception:

How many objects does this create?

Peter Lawrey [email protected] CEO @ Higher Frequency Trading Ltd

Page 30: Today Software Magazine N41/2015

30 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

programare

As you can see, the number of Strings was 2490. If I had a few more environment variables or a different update of Java it would be a different number.

In short, if you are arguing over 2 to 5 String in the code you can see, when the code is run once, you may be missing most of the Strings.

But what if I call the code lots of times?If you are talking millions of times, it is likely to matter, but

here is the thing. The JVM will optimise code which called this many times and it can do two things.

Dead Code EliminationCode which the JIT detects doesn’t do anything useful can be

dropped. The JIT is pretty good at this and most likely the exam-ple you are looking at doesn’t do anything useful either. However in real world code, hopefully it does something useful which is where the next optimisation is useful.

Escape AnalysisThe JIT can look at a method (or what the method would

look like after everything it calls has been inlined) and see if an object escapes the method. If it doesn’t escape the method it can be placed on the stack, or effectively have it’s fields unpacked onto the stack. This means no object is created on the heap, and in fact the object header doesn’t even have to be created, all it’s fields, possibly none of it’s fields need to be created. In short, just because you see new String in the code doesn’t mean the JIT has to actually create an object, provided it makes no difference to the result (unless you are counting the number of objects created)

ConclusionThe number of Strings created by even a trivial application is

likely to be far more than you can imagine a use for, but called enough times and you might find that a method no longer creates any objects at all.

Common misconception: How many objects does this create?

programare

Page 31: Today Software Magazine N41/2015

31www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Radu [email protected] Senior Software Engineer @iQuest

programare

Există multe soluții de-a gata pe piață, care ne ajută să facem logging și audit în sis-temul nostru. Presupun că fiecare dintre noi am utilizat măcar o dată în viață log4net sau NLog. Sunt situații în care aveți nevoie de log-uri persistente în memorie, care nu se află pe același aparat pe care rulează sistemul vostru. De exemplu, un caz comun de utilizare poate fi scrierea tuturor acestor informații pe:

• SQL instance,• Azure Blob Storage,• Azure Event Hub.

Dar v-ați întrebat vreodată ce se întâmplă când nu se poate ajunge la această memo-rie. Acest articol va analiza acest caz. Ce se întâmplă dacă memoria pe care sunt păstrate log-urile și auditul nu poate fi accesată?

Să ne imaginăm un sistem care scrie toate log-urile pe Azure Blob Storage iar informațiile de audit sunt trimise direct în

Azure Event Hub, de unde sunt analizate în timp real, pentru a detecta problemele de securitate sau instabilitatea sistemului.

Pentru a reduce încărcătura din rețea, a îmbunătăți performanța (viteza) și a controla costurile, fiecare component are un buffer de unde sunt scrise log-urile și datele de audit. Odată ce un buffer a ajuns la o dimensiune specificată, conținutul este expediat în mod automat. Aceasta ar funcționa perfect atâta timp cât Azure Blob Storage (pentru loguri) și Azure Event Hub (pentru audit) sunt disponibile.

Observații: Vom continua cu situația în care utilizați log4net, dar menționăm că un comportament similar se manifestă și la alte framework-uri de logging.

Ce se întâmplă când una dintre aceste memorii nu poate fi accesată? Ce credeți? …

Logging-ul (înregistrarea) și auditul (verificarea) sunt obligatorii pentru toate aplicațiile. Fără aceste informații, echipa de monitorizare și suport nu ar putea să știe dacă siste-mul funcționează corect și să aniticipe anumite stări de fapt. În plus, din perspectiva

siguranței, trebuie verificate la diferite niveluri ale sistemului cine vă accesează sistemul, care este acțiunea și când se manifestă ea.

Logging pe memorii externe …

lecții învățate

Page 32: Today Software Magazine N41/2015

32 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

Buffer-ul va deveni din ce în ce mai mare. În mod normal, acest buffer este ținut în memorie, deoarece doriți să aveți latență scăzută pentru operațiile de scriere.

Veți începe să consumați din ce în ce mai multă memorie și există o mare probabilitate să sfârșiți prin a rămâne fără memo-rie, ceea ce nu doar vă va bloca componentele sau aplicația, dar vă va face să pierdeți și log-urile curente și datele de audit.

Pierderea acestor date nu vă va ajuta prea mult când veți avea nevoie să descoperiți de ce componenta sau aplicația nu funcționează sau de ce log-urile și datele de audit nu s-au păstrat.

Un alt lucru pe care trebuie să îl luăm în considerare este că atunci când scrii pentru o destinație diferită de cea default (în special locații externe), trebuie să te gândești la cum ar trebui să gestionezi această situație.

Ce ar trebui să fac? Există trei operații importante pe care ar trebui să le faceți:

Înregistrarea evenimentelor (Event Log)Ar trebui să vă asigurați că toate excepțiile și comporta-

mentele ciudate care apar la nivelul înregistrărilor de date sunt scrise în Event Logger. Scrierea excepțiilor în această locație vă va garanta faptul că puteți identifica orice tip de probleme ale mecanismului vostru de logging.

O altă posibilitate este să scrieți direct pe disc, ca fișiere, dar Event Logger este un instrument foarte puternic, iar echipa de monitorizare și suport poate strânge în mod automat toate log-urile evenimentelor, poate defini alerte pentru ele și așa mai departe.

Aceasta ar trebui să fie ultima voastră protecție când sistemul vostru de logging nu funcționează cum v-ați așteptat. Nu uitați să vă gândiți unde să înregistrați datele din momentul în care componenta sau aplicația voastră pornește până în momentul în care componenta voastră de logging este inițializată – ce se întâm-plă dacă aceasta eșuează și cum puteți detecta asta. Acestea sunt două întrebări pe care ar trebui să vi le puneți.

Stocare temporarăÎn momentul în care mecanismul de logging vrea să facă o

expediere, dar detectează că memoria îndepărtată nu poate fi accesată, ar trebui să fie declanșată o acțiune. O posibilitate ar fi să avem un mecanism care să încerce din nou să expedieze datele, dar:

• Pentru cât timp?• Ce ar trebui să faceți cu datele extra?

Cât timp ar trebui să reîncercați? Nu există un răspuns de-a gata. Eu recomand să încercați numai de câteva ori și, după aceea, aveți nevoie de o soluție de rezervă. De exemplu, eu aș face trei încercări (1s, 2s și 4s). Dacă memoria de logging sau audit tot nu răspunde, atunci aș trece la soluția de rezervă, pe care o voi prezenta mai jos.

Ce ar trebui să faceți cu datele extra?Nu puteți stoca date în buffer, deoarece buffer-ul vostru este

deja plin. S-ar putea să fie posibil să faceți asta timp de câteva secunde sau minute, dar aceasta nu se poate realiza timp de o oră sau patru ore. În această situație, ar trebui să expediați toate datele pe care le aveți în buffer către discul vostru local.

În acest fel, vă veți curăța buffer-ul, iar noile înregistrări și date de audit pot fi păstrate fără a avea probleme cu cazul de uti-lizare excepție, în care ați rămas fără memorie. În plus, ar trebui să vă asigurați că, odată ce reușiți să scrieți log-uri sau audit pe sisteme de stocare externă - în cazul nostru a fost blob și event hub-, ar trebui să scrieți toate datele care au fost stocate în memo-ria locală pe memoria externă.

Cu această soluție, va trebui să luați în considerare cazul în care memoria externă nu funcționează o perioadă lungă de timp, iar voi veți rămâne fără spațiu în memoria voastră locală. Ar trebui să aveți un mecanism de curățare pentru aceste situații. Soluția cea mai simplă, care poate fi implementată cu succes, este ca toate înregistrările sau fișierele de audit mai vechi de X ore sau zile să fie șterse.

Logging pe memorii externe … lecții învățate

programare

Page 33: Today Software Magazine N41/2015

33www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Utilizând un asemenea mecanism de curățare, spațiul local necesar sistemului vostru poate fi estimat ușor și nu vor mai exista cazurile speciale în care log-urile și fișierele de audit uti-lizează spațiul disponibil care ar trebui să fie folosit de către alte sisteme care rulează pe același aparat.

Stocare pasivăÎn comparație cu soluțiile anterioare, aceasta este o soluție

opțională, care ar trebui utilizată numai atunci când este cru-cial să primiți log-uri sau date de audit într-un interval de timp anume. Această soluție vine cu costuri suplimentare și poate de asemenea să adauge puțină complexitate sistemului care proce-sează și analizează urmele log-urilor și auditului.

Această soluție nu le exclude pe cele dinainte, deoarece ambele tipuri de stocare, activă și pasivă, pot să nu funcționeze.

Această soluție implică utilizarea a două tipuri diferite de stocare: una activă, care este folosită tot timpul și una secundară, pasivă, care este folosită numai când prima nu este disponibilă.

În concluzie, vă recomand cu căldură să considerați acest caz, pentru întregul vostru sistem. Cel puțin, scrieți în Event Logger orice eroare sau comportament ciudat al mecanismului vostru de logging.

www.3pillarglobal.com

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

Our core competencies include:

ProductStrategy

ProductDevelopment

ProductSupport

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

Page 34: Today Software Magazine N41/2015

34 nr. 41/2015, www.todaysoftmag.ro

Totul a început de la simpla necesitate de a lucra cu datele care vin de pe un API. Aveam nevoie de o metodă destul de simplă și rapidă de a asimila acel API și de a mani-pula datele într-o aplicaţie privată. În acel moment, nu intenționam să folosim un fra-mework JavaScript anume, deoarece doream să utilizăm strict partea de manipulare de date. Au fost câteva variante open-source, dar majoritatea aveau alte dependinţe și era des-tul de complicat să le folosești stand-alone. Astfel, am început să scriem propria noas-tra variantă care să funcționeze exact așa cum ne doream. După ce s-a scris o primă versiune mai complexă, și am observat că funcţionează exact cum ne-am așteptat, ne-am gândit că poate ar ajuta și alţi progra-matori. Așa că ne-am hotărât să publicăm o versiune mai finisată sub forma unei librării open-source. Așa a luat naștere ironwingjs.

Ironwing este scrisă conform noilor stan-darde EcmaScript și se folosește de unele implementări populare precum promises. Totodată, această librărie este construită pe

baza a câteva concepte precum: adapters, storage, proxy objects. Aceste concepte abs-tracte au fost gândite astfel ca ironwing să fie ușor extensibil și practic. Mai mult decât atât, această librărie a fost concepută să fie ușor de folosit în orice aplicaţie și ușor de adaptat în orice framework. Ideea de bază este simplitatea.

InstalareIronwing poate fi instalat folosind una

din următoarele metode afișate mai jos:

$ npm install ironwing# sau$ bower install ironwing

În caz că se utilizează sistemul de ope-rare Windows, aceste comenzi pot fi rulate în cadrul consolei git-bash.

Cum funcţionează

AdaptersUn adapter este un obiect scris după o

interfaţă prestabilită pentru putea fi integrat

Pe scurt, ironwingjs este o librărie JavaScript lightweight și framework-agnostic. Prin framework-agnostic înţelegem o librărie care nu depinde de un framework anume și se poate folosi fără nicio dependinţă în plus. Ironwing oferă manipulare de tip CRUD

peste o interfaţă REST API pentru datele care vin de pe aceasta.

Vă prezentăm ironwingjs

Andrei Cacio [email protected] Web Developer @ Evozon

programare

Page 35: Today Software Magazine N41/2015

35www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

cu ironwing. Out of the box, ironwing este livrat cu un adaptor pentru comu-nicarea cu serverul prin AJAX. Practic acest adaptor este o interfaţă intermedi-ară pentru comunicarea cu API-ul oferit de browser, numit. Acest API oferă o metodă asincronă de comunicare cu ser-verul prin request-uri HTTP de tip JSON. Programatorul nu interacţionează cu adaptorii în mod direct. Aceștia sunt folo-siţi de core-ul ironwing. Scopul adaptorilor sunt de a abstractiza comunicarea cu ser-verul astfel încât procesul să devină ușor de modificat. Oricine poate să scrie pro-priul său adaptor. Încărcarea unui adapter se face folosind metoda astfel:

import ironwing from ‚ironwing’;

ironwing.useAdapter(‚JSON’, [‚/api’]);

Această bucată de cod setează librăria ironwing să folosească request-uri de tip JSON pentru toate operaţiile cu serverul. Acest tip de adaptor are nevoie de un sin-gur parametru, și anume calea către API.

StoragePrin default, ironwing folosește un sto-

rage local (heap). După ce librăria aduce de la server una sau mai multe resurse, aceasta le stochează folosind interfaţa storage-ului pentru a putea fi folosite in viitor. Se poate spune că ironwing cache-uieşte resursele. Spre exemplu, dacă ar fi să aducem o resursă folosind următoarea cale de la API: /users/100 vom proceda astfel:

ironwing(‚users’, 100).then((user) => { console.log(user.attr.name); });

iar dacă dorim să ne folosim de această resursă în altă parte a aplicaţiei, putem avea acces la ea folosind următoa-rea metodă:

var userModel = ironwing.storage.find(‚users’, 100);

sau dacă dorim să avem acces la întreaga colecţie de tip users:

ironwing(‚users’,).then((users) => { console.log(users.length);

});var usersCollection = ironwing.storage.findAll(‚users’);

În următoarea versiune se dorește implementarea unui sistem de folosire a mai multor implementări de tip storage. Un exemplu bun ar fi o implementare de

storage ce se folosește de local storage din browser.

Proxy objectsMetoda este de fapt un factory method care returnează instanţe de tip Model. Fiecare instanţă expune metode CRUD pentru manipularea resursei mapped pe API. Mai mult, ironwing nu modifică în mod direct obiectul deserializat din JSON. Librăria expune un obiect numit proxy care este de fapt intermediarul. Acest obiect poate fi accesat prin cheia . Mai mult decât atât, acest obiect este de fapt o transformare camel cased a denu-mirilor atributelor originale. Acest format este de preferat să fie folosit în aplicaţiile JavaScript de accea ironwing transformă automat orice combinaţie (pascal case, uppercase etc.) în formatul camel case. Orice modificare pe obiectul proxy este automat sincronizată cu obiectul original înainte să fie transmis serverului sub forma serializată. Această tehnică ne permite să avem un control mult mai mare asu-pra cum este modificat obiectul original. Exemplu de folosinţăimport ironwing from ‚ironwing’;var userData = { first_name: ‚Jon’, last_name: ‚Doe’;};ironwing.useAdapter(‚JSON’, [‚/api’]);ironwing.create(‚users’, userDa-ta).then((userModel) => { /** * a POST request is sent to the server * /api/users */ userModel.attr.firstName = ‚Jon’; userModel.attr.lastName = ‚Doe’; userModel.update().then(() => { /** * a PUT request is sent to the server * /api/users/:id */ });});

ConcluzieIronwing este o librărie care poate fi

ușor “conectată” la un RESTful API iar programatorul are direct acces la o mani-pulare CRUD asupra resurselor sale. Noi am decis să publicăm această librărie publicului larg cu speranţa că poate va ajuta pe altcineva la momentul oportun. Deoarece este open source, oricine poate contribui, să raporteze probleme sau pur și simplu să vina cu idei noi legate de cum ar dori să funcţioneze ironwing. Ironwing oferă o viziune diferită de a

rezolva o necesitate de care depindem cu toţii. Scopul și esenţa librăriei este de a fi cât mai ușor de folosit și cât mai ușor extensibilă.

DisclaimerIronwing a fost dezvoltat inițial pentru

proiectul Trubzi în cadrul Evozon Systems din Cluj-Napoca. Evozon este o compa-nie de software fondată în 2005 de catre Gabriel Crețu si Robert Masic, cu clienți de pe toate continentele. Evozon dezvoltă atât aplicații la cerere cât și produse pro-prii precum Trubzi, Calendis, Hoteliqo și framework-uri folosite de către dezvolta-tori din lumea întreagă, precum Essence și Crux.

Page 36: Today Software Magazine N41/2015

36 nr. 41/2015, www.todaysoftmag.ro

dovadă albumul cu creaţiile voastre, pe care le puteţi accesa pe pagina noastră de socializare, unde veţi vedea și construc-ţiile câștigătoare ale acestei provocări (Facebook/azimut.teambuilding). Este de menţionat faptul că în mare parte toate creaţiile au fost realizate într-un timp scurt, participanţii neștiind că o să le cerem să facă acest lucru. Astfel, ne întrebăm care ar fi rezultatele dacă am desfășura această activitate într-o formă organizată, având mai mult timp la dispo-ziţie și cel mai important, având un scop pentru care facem asta!

Se ia o doză de imaginaţie...Vă puteţi oare imagina ce am urmărit

prin lansarea acestei provocări? În pri-mul rând, așa cum am menţionat, am fost foarte curioși să aflăm cât de inventivi pot fi adulţii. În al doilea rând, am dorit să vă implicăm într-o activitate relaxantă care poate contribui la îmbunătăţirea creativi-tăţii. Nu în ultimul rând, scopul campaniei a fost acela de a vedea dacă într-adevăr

astfel de activităţi care stârnesc imaginaţia și creativitatatea pot aduce rezultate uimi-toare de pe urma cărora pot beneficia și alte persoane decât cele implicate. Văzând mii de participanţi de-a lungul anilor în programele nostre de training și team buil-ding, care mereu ne surprind prin soluţiile inovative pe care le găsesc la activităţile noastre, am început să ne întrebăm dacă am putea duce acest lucru la un alt nivel, nivel prin care să creăm ceva care să aibă un impact mai mare și mai de durată. Așa am reușit să gândim un nou program care, bazându-se pe imaginaţia voastră, aduce rezultate cu impact în comunitate. Acum, avem nevoie de ajutorul vostru să îl și implementăm.

Se adaugă un praf de implicare...Programul la care ne referim se

numește ”Toy World” și s-a născut din dorinţa de a ajuta. Pentru că de multă vreme ne gândeam să creăm un program cu impact social, cu resursele pe care le avem, ne-a venit ideea să dezvoltăm

Imaginație + implicare + piese

LEGO= ajutor reciproc

Ce poţi face din piese LEGO? a fost provocarea pe care am lansat-o acum câteva săptămani. Eram curioși să aflăm ce se poate realiza din piese LEGO, iar ima-ginaţia și implicarea voastră ne-au surprins foarte plăcut, motiv pentru care

vă mulţumim! Astfel, ni s-a confirmat încă o dată ideea că și adulţilor le place să se joace și că, la rândul lor, pot fi foarte creativi. În sprijinul afirmaţiei noastre stă ca

educație

Ana-Maria Trifan [email protected] PR & Custumer Care Specialist @ Azimut Happy Employees

Page 37: Today Software Magazine N41/2015

37www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

programe de team building în care să implicăm atât echipele cât și comunitatea. Așadar, provocăm echipele la o zi de teambuilding la birou, în care își vor testa, printre altele, inventivitatea și unde, va trebui ca în finalul programului de teambuilding, să realizeze împreună construcţii din piese de LEGO. Toate piesele utilizate de echipe în această contrucţie vor fi donate copiilor din centrele familiale și de plasament din Cluj-Napoca. Am realizat o listă cu astfel de centre care au fost mai mult decât fericite să audă de iniţiativa noastră, iar companiile care se vor implica în acest program pot să aducă și noi sugestii.

Se amestecă totul cu multe piese LEGO ...De ce piese LEGO? Am ales să utilizăm în acest program pie-

sele de Lego deoarece oferă numeroase beneficii atât adulţilor, cât și copiilor. Apoi, trebuie să recunoaștem că este o activitate foarte

plăcută și provocatoare. Poate că nu mereu am fost conștienti de aportul benefic pe care niște piese de plastic le pot avea asupra noastră, așa că le amintim pe scurt în cele ce urmează.

Beneficiile utilizării pieselor de Lego la:

Şi în final, rezultă că ne putem ajuta reciproc!Luând toate acestea în considerare, ne-am dat seama că

atât organizaţiile, participanţii din programele noastre de team building cât mai ales copiii ar avea numai de câștigat în urma acestei acţiuni. Astfel, s-a născut primul program de team bul-ding Azimut Happy Employees ce include astfel de activităţi: Toy World. Programul se poate desfășura oricând în timpul anului, însă pentru că se aproprie luna decembrie care este una specială pentru copii, ne-am gândit că ar fi un moment oportun în care și noi să contribuim cu cât mai multe zâmbete de fericire. Acest program nu este gândit ca un produs pe care îl vindem pentru a obţine profit, ci ca un program căruia îi măsurăm succesul prin numărul de copii care au ajuns să beneficieze de construcţii LEGO, ce le vor anima curiozitatea și creativitatea.

Vă mulţumim pentru ajutor și implicare! Ne-aţi ajutat să pro-movăm un proiect care nouă ne este foarte drag și care sperăm să reușească să aducă un zâmbet și un cadou cât mai multor copii din Cluj-Napoca. Vă mulţumim și rămâne să vă ţinem la curent cu rezultatele proiectului! Dacă vreţi să aflaţi mai multe detalii despre program sau credeţi că firma în care lucraţi ar fi interesată să se alăture acestei campanii, dați-ne de știre!

Page 38: Today Software Magazine N41/2015

38 nr. 41/2015, www.todaysoftmag.ro

management

Vă propun trei lucruri:1. Analiza modului în care vă petreceți

timpul.2. Însușirea și aplicarea unor instru-

mente moderne de gest ionare a timpului.

3. Simplificare.

Care trebuie să fie rezultatul așteptat? Simplu - creșterea eficienței utilizării tim-pului prin:

• Simplificarea vieții personale,• Creșterea eficienței profesionale.

Ideea de simplitate în plan personal și profesional este abordată atât in filozo-fia americană (Leo Babauta, The Power of Less), cât și în cea europeană și se bazează

pe identificarea esențialului și pe ideea de a elimina sau gestiona inteligent restul.

Punctul de plecare este similar pentru majoritatea dintre noi. Avem un program de lucru încărcat, ne lipsește timpul pen-tru prieteni sau hobby-uri, avem greutate peste medie, începem să avem probleme de sănătate, ducem lipsă de energie și tonus. De multe ori ne confruntăm cu o alimentație nesănătoasă, haotică. Nu reușim să facem sport sau mișcare sufi-cient. Uneori ne confruntăm cu un stres ridicat, avem de îndeplinit multe sarcini și avem de-a face cu probleme la serviciu. Sau chiar mai grav, apare fumatul excesiv, apelăm la datorii și credite. Sună cunoscut?

Time Management: Preia controlul!

Modul în care trăim și ne desfășurăm activitatea azi este caracterizat de viteză și de aglomerație. Ne confruntăm cu un volum copleșitor de sarcini și activități. În plus, suntem asaltați de un exces de informații: mesaje email, știri prin

diverse canale (ziare tipărite, presă online, radio sau TV), apeluri telefonice, mesaje Skype sau alte soluții de instant - messaging, Facebook, Linkedin, documente primite, colegi și colaboratori, clienți, reuniuni în diverse variante. Care trebuie să fie atitudinea și reacția noastră la această situație?

Magnoliu Stan [email protected] Director @ Smart HR

Page 39: Today Software Magazine N41/2015

39www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Având în vedere cele scrise mai sus, cred că trebuie să acționăm. Să nu lăsăm lucrurile la voia întâmplării. Să preluăm controlul propriei vieți. Să preluăm controlul timpului!

Un model simplu, ușor de înțeles și pus în practică presupune câteva etape:

a. Simplificare și reducere la esențial,b. Planificare și stabilirea în scris a unor obiective clare,c. Concentrare,d. Perseverență.

Obiectivele pot fi diferite, atât din sfera profesională, cât și din viața personală. O listă cu obiective posibile, din care reco-mand să alegeți pentru început trei, găsiți mai jos:

1. Să fac sport regulat.2. Să mănânc sănătos.3. Să devin mai eficient si productiv la școală sau la serviciu.4. Să alerg, de exemplu să particip la minim un cros sau

maraton anual.

5. Să îmi cresc veniturile cu un anumit procent sau o anumită valoare.

6. Să mă trezesc devreme in fiecare dimineață, de exemplu la ora 6:00 a.m.

7. Să înot (săptămânal, zilnic sau să particip la diverse concursruri).

8. Să citesc (o carte pe săptămană / lună).9. Să scriu un blog.10. Să îmi achit toate datoriile11. Să economisesc (un anumit din venituri, sau o anumită

sumă lunar).12. Să îmi simplific viața.13. Să eliberez casa și / sau biroul de lucrurile inutile.14. Să slăbesc 10 kg in 6 sau 12 luni.15. Să scriu o carte.16. Să am mai mult timp liber. 17. Să îmi aloc timp pentru un hobby (specific).18. Să vizitez trei locuri noi anual.19. ……………………………………………….20. ……………………………………………….

Ce reprezintă de fapt arta limitării la esențial? Să devenim mai eficienți și productivi, simplificându-ne viața. Cum putem face acest lucru? Iată câteva recomandări:

1. Impuneți limite în ceea ce faceți.2. Identificați esențialul, renunțați la ceea ce nu este

important.3. Simplificați.4. Concentrați-vă pe ceea ce faceți la un moment dat sau într-

o anumită perioadă. 5. Creați obiceiuri sănătoase.6. Începeți cu pași mici.

Să explicăm o parte din ideile de mai sus, pentru a fi mai ușor de înțeles și aplicat.

Ce fel de limite putem impune? La ce se referă?La volumul de emailuri trimise și primite, la numărul de pro-

iecte gestionate, la cantitatea de informații procesată, la cantitatea de obiecte sau documente cu care avem de-a face, la sarcinile și

responsabilitățile curente.De exemplu, vă provoc la un exercițiu de imaginație: varianta

A, cumpărături fără limită (cumperi orice, fără discernământ, fără să fie necesar) vs. varianta B, cumpărături într-un buget de 200 RON, cu o listă scrisă, situație în care aleg doar ceea ce este important sau necesar, fără lucruri inutile. Așa arată viața noas-tră: trăim fără limite!

Drept consecințe ale unui stil de viață haotic, fără limite sunt stresul, lipsa energiei, scăderea eficienței, stările de epui-zare, nemairămânându-ne timp pentru sarcinile cu adevărat importante.

Metoda simplificare: Un exemplu. În cazul în care ne refe-rim la modul în care gestionăm în prezent emailurile, trebuie să începem cu evaluarea situației actuale. Probabil în acest moment verificăm emailurile foarte des, de 15 - 20 ori pe zi. Cum puteți simplifica?

1. Analizați frecvența / numărul / timpul / cantitatea actuală. Stabiliți o limită mai joasă, realistă, utilă.

2. Testați limita stabilită, timp de 1 zi / 1 săptămână. Analizați rezultatul.

3. Dacă nu vă mulțumește, ajustați limita. Testați o săptămână.4. 4. Continuați până stabiliți valoarea optimă. Dezvoltați un

Page 40: Today Software Magazine N41/2015

40 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

obicei, o obișnuință.5. Alegeți alt aspect pe care doriți să îl îmbunătățiți. Repetați

pașii anteriori.

Cum identific ce este esențial pentru mine? Idee: similar cu sculptarea unei statui, începem cu un bloc

de piatră, din care îndepărtăm ce nu ne este necesar și rămâne statuia.

Ca metodă, trebuie să răspundem la câteva întrebări: 1. Care sunt valorile mele?2. Care sunt obiectivele mele?3. Ce îmi face plăcere?4. Ce este important pentru mine?5. Ce acțiune are cel mai mare impact? 6. Ce acțiune are cel mai mare impact pe termen lung?

Simplificați - eliminați ce nu este esențial prin evaluarea situației actuale, eliminați sarcinile neimportante, delegați altele, amânați, refuzați solicitările celorlalți când este cazul.

Concentrarea pe un număr mic de lucruri. Ca o sugestie: ar trebui să alegem „obiectivul unic” asupra căruia să ne con-centrăm. Forme diferite în care se manifestă concentrarea pot fi:

• concentrare pe un obiectiv,• concentrare pe ce se întâmplă acum / prezent,• concentrarea pe ce ai de făcut în acest moment,• concentrare pe aspecte pozitive,• single tasking.

Formarea de obiceiuri noi este o metodă care ne ajută să dobândim obiceiuri de durată.

Cum putem face acest lucru? Iată câțiva pași care trebuie urmați:

• Alegeți un obicei. Unul singur odată.• Faceți un plan: ce fac zilnic, la ce oră. Este importantă înca-

drarea într-o rutină (exemplu: după ce mă spăl pe dinți, alerg 20 min sau fac 100 de flotări). Durata recomandată pentru a implementa acest plan este de 30 zile.

• Faceți public obiectivul propus către colegi, familie, prie-teni sau pe Facebook.

• Măsurați și înregistrați rezultatele, anunțați progresul zil-nic sau periodic.

• După 30 zile: ați dobândit un obicei nou.

Chiar dacă pare simplu sunt câteva reguli care trebuie respectate:

• alegeți un singur obicei odată.• obiceiul trebuie să fie realist și ușor de îndeplinit.• măsurabil. • fii perseverent.• raportare zilnică.• menține o atitudine pozitivă.

Începe cu pași mici, cu un obiectiv simplu, ceva ușor sau cu împărțirea unui obiectiv ambițios în sub- obiective mici, etapi-zate. Utilitatea acestei strategii de a începe cu pași mici este:

• concentrarea atenției;• păstrează energia și entuziasmul;• mai ușor de gestionat;• asigură succesul la fiecare pas;• schimbarea progresivă are un efect durabil.

În concluzie, timpul nostru este mult prea important și valoros pentru a ne permite să îl irosim. Preluați controlul, simplificați-vă viața și formați obiceiuri sănătoase.

Mult succes!

programareTime Management: Preia controlul!

Page 41: Today Software Magazine N41/2015

41www.todaysoftmag.ro | nr. 41/noiembrie, 2015

Cunoscută și sub numele de conferință open space, o ,,neconferință” - da, așa s-ar traduce- se diferențiază de conceptul cla-sic de conferință cu subiecte stabilite de dinainte prin următoarele calități:

• Participanții propun subiecte pro-prii de care sunt interesați. Acestea pot fi subiecte despre care ei au cunoaștere și vor să le arate altora sau subiecte pe care nu le știu, dar depre care doresc să afle de la alți participanți.

• Non-profit, low-cost. Se aseamănă cu o ieșire de weekend la cabană, cu interacțiuni puternic colaborative.

• Ceea ce se întâmplă acolo e sin-gurul lucru care se poate întâmpla. SoCraTes 2015 Germania

De la prima ediție, SoCraTes s-a extins ca eveniment, desfășurându-se în mai multe țări din lume precum Marea Britanie, Belgia, Insulele Canare, Elveția.

Ediția din Germania de acest an a avut loc în Soltau.

Conferința a început joi și s-a încheiat duminică.

Joi, conferința a început spre seară. S-a ținut un World Café, o întâlnire unde participanții s-au cunoscut mai bine între ei.

Vineri și sâmbătă s-a ținut Open Space-ul, atracția principală a conferinței. Duminică, participanții au avut liberta-tea de a ține workshop-uri unde au putut aplica sau discuta despre ce au acumulat în cadrul conferinței, sau de a lucra la diferite proiecte cu oamenii proaspăt cunoscuți la conferință.

Open spaceUnealta principală a open space-ului:

tabla. În partea stângă au fost puse inter-valul de timp disponibil pentru fiecare sesiune (în principiu, o oră fiecare), iar în

SoCraTes 2015 Unconference

Aceasta este ideea de la care a pornit conceptul de ”unconference”. “Cea mai interesantă parte a unei conferințe sunt pauzele de cafea”Adică partea de networking și transfer de informații, se desfășoară cel mai

eficient și plăcut în pauzele dintre sesiuni.

Mihnea Lazar [email protected] Software Developer @ msg systems

Page 42: Today Software Magazine N41/2015

42 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

programare

partea de sus, erau specificate sălile unde conferințele puteau fi susținute.

După World Café-ul de joi, parcipanții se cunoșteau mai bine

și se simțeau mai comozi pentru a-și împărți ideile cu ceilalți. Așadar, au fost invitați să formeze o coadă pentru a-și prezenta ideile de sesiuni.

Coada de oameni care așteptau să-și adauge subiectele se

extindea pe ambele părți ale tablei. Aceasta a fost umplută cu sesiuni, care se întindeau de la 10:30 până la 18:00 în ambele zile! Unele subiecte s-au extins în pe parcursul cinei, după cină, la bar, sau au fost repetate următoarea zi.

În medie au fost 10 participanți la fiecare sesiune, ceea ce a

creat o atmosferă destinsă, asemenea discuțiilor de la berea de după serviciu. Majoritatea subiectelor s-a discutat fără a fi fost pregătite de prezentări prealabile, deci întrebările au fost bineve-nite oricând erau necesare clarificări.

Unele sesiuni au pornit discuții care s-au ramificat în alte sesi-uni. În aceste cazuri, fie au fost continuate în curtea hotelului, la terasă, sau într-o sesiune în următoarea zi, fie s-a făcut schimb de adrese de e-mail sau bloguri.

SoCraTes 2015 Unconference

Page 43: Today Software Magazine N41/2015

43www.todaysoftmag.ro | nr. 41/noiembrie 2015

TODAY SOFTWARE MAGAZINE

Inevitabil, au fost situații în care un participant dorea să plece în timpul unei sesiuni, lucru care a fost perfect în regulă. Participanții erau liberi să meargă la mai multe sesiuni într-o fereastră de timp, și puteau să-și noteze cel puțin unele informații de bază sau adrese de referință în acel timp.

O selecție din subiectele prezentate:1) Front-end web• A fost prezentată librăria Bootstrap. Această librărie

simplifică designul paginilor web, oferind șabloane CSS pre-definite, pentru a fi încorporate div-urilor deja existente din cadrul paginilor.

• Conceptul de grile sau coloane în CSS-uri este o modalitate prin care paginile web responsive își restructurează div-urile pe coloane, în funcție de mărimea ecranului, după cum a intenționat programatorul, pentru a oferi o experiență cât mai bună utilizatorului.

2) Administrarea cunoştințelor şi productivitate• Pune pe blog. Dacă ai o idee sau un articol pe care vrei să

îl împărtășești sau să îl ții minte, un blog poate fi un loc foarte bun pentru a centraliza informațiile.

• Cartea “Getting things done” – David Allen.• Aplicații cu integrare e-mail, pentru a ține cont și a-și rea-

minti de sarcini. Exemple: Todoist, Evernote.• Tehnica Pomodoro, care presupune alocarea unui interval

de timp limitat pentru rezolvarea unei sarcini definite.• Board-uri personale de Kanban.• Mind mapping tools.• Podcast-uri. Exemple: “Turing incomplete”, “.NET rocks”.• Gamificare, prin jocuri care răsplătesc jucătorii pentru sar-

cini încheiate. Exemple: Habit RPG.

3) Introducere în modelarea 3D, cu Blender• Unde un exemplu de model 3D a fost creat în timpul unei

sesiuni, cu ajutorul uneltei Blender.

4) Munca la distanță (remote work), unde s-au împărțit idei și experiențe despre acest proces. Dintre cei prezenți au fost unii care lucrau la distanță, alții care aveau colegi cu care lucrau la distanță, sau alții care erau manageri peste cei care lucrau la distanță.

• Sfaturi: o Comunicarea este îmbunătățită când se face și prin

webcam-uri;o Comunicarea să fie făcută cât mai des, fie prin email-uri

sau pagini de wiki;o Informația să fie centralizată pe un wiki.• Aplicații:o Skype pentru chat audio;

o Slack pentru chat scris;o VNC pentru împărțirea ecranelor;o Google Docs.• Dezavantaje:o Lucrul de unul singur;o Distrageri de acasă sau dintr-un mediu care nu e de

birou;o Greu de relocat.• Avantaje:o Independență la nivelul de timp;o Mai mult timp pentru viața privată;o Lipsa distragerilor de la birou;o Trecerea înapoi la viața privată se face mai rapid.

5) Pair programming la distanță. S-au prezentat unele unelte pentru îmbunătățirea acestui

proces• Saros – plugin Eclipse, prin care doi utilizatori pot lucra

simultan pe același cod. O singură resursă în IDE împărțită la un moment printr-un protocol XMPP, astfel încât utilizatorii împărtășesc text prin acest plugin.

• Tmate – cross-platform instant sharing pentru terminale;• Screen Hero: o Cross platform screen sharing o Calitate HDo Chat audioo Permite mai multe cursoare de mouse pe ecran

6) Codul e muzică.• Unde s-au prezentat exemple de cod care creează muzică,

prin setarea frecvenței, amplitudinii, tonalității și a altor setări ale sunetului, precum și suprapunerea sunetelor, pentru a se crea piese muzicale complexe.

• Limbajul de programare de bază folosit este SuperCollider. Acesta are însă librării și pentru alte limbaje, precum Clojure (librăria Overtone) sau JavaScript (librăria Gibber).

7) Monorepos• Cum își distribuie Facebook și Google codul sursă într-un

singur repository mare. • Folosind un singur repository mare, unde toate sunt conec-

tate, se scurtează timpul de construire, iar dependințele sunt mai ușor de controlat și administrat.

8) Open salaries• Cum un startup din Berlin experimentează având toate

salariile cunoscute de către toți angajații.• Când persoane noi intră în firmă, salariul lor este sta-

bilit prin baza unui grafic bidimensional, unde o axă este pentru experiența profesională, iar cealaltă axă este pentru

Page 44: Today Software Magazine N41/2015

44 nr. 41/noiembrie 2015 | www.todaysoftmag.ro

responsabilitățile acelei persoane. Toți angajații pot participa atunci când se decide salariul noilor angajați.

• La început, majoritatea erau plătiți mai puțin decât ar fi trebuit să primească pe baza graficului.

• În prezent, majoritatea sunt plătiți mai mult decât ar trebui să primească pe baza graficului.

• Într-un document Excel se găsesc toate salariile care ar tre-bui să le primească oamenii și toate salariile pe care le primesc.

• Factori: experiența, rolul în firmă, familia, responsabilita-tea, distanța față de locuință.

9) Concurență, robustețe şi Elixir• Elixir este derivat din Erlang• Cantitatea de MHz care poate fi adăugată în procesoare nu

mai poate fi extinsă cu mult, de către noi tehnologii, datorită principiilor fizice. Așadar, paradigmele de programare ar tre-bui schimbate.

• Funcționalitate bună, robustețe, VM de categorie ușoară, foarte bun din punct de vedere al concurenței, asincron.

• Un ecosistem care permite utilizarea de design patterns pentru construirea de sisteme robuste.

• Îmbunătățiri în Elixir:o Sintaxă îmbunătățită față de Erlang, inspirată din

Ruby,o Compatibilitate deplină cu Erlang, o Țintește spre productivitate îmbunătățită.• Procesele în Elixir sunt econome cu resursele sisteme-

lor folosite.• Codul poate fi schimbat în timpul rulării aplicației (hot

code swapping).

Surse:Poze: https://twitter.com/coderbyheart/Sesiuni SoCraTes 2015: https://www.socrates-conference.de/wiki/2015/index“Code is music”: http://supercollider.github.io/

programareSoCraTes 2015 Unconference

Page 45: Today Software Magazine N41/2015

Partners Supporters Organizer

23rd of Nobember 23rd of Nobember

23rd of Nobember 26th of Nobember0900-1700 0900-1700

0900-1700 0900-1700

JAVA PERFORMANCE WORKSHOP

FUNCTIONAL THINKING JAVA 8, MULTITHREADING AND PROFILING

Price: 250 euro + TVA Price: 90 euro + TVA

FOR SENIOR JAVA DEVELOPERS

FOR MEDIUM & SENIOR DEVELOPERS FOR MEDIUM & SENIOR JAVA DEVELOPERS

WORSKHOP PARTNER:

LEARNING BY HAVING FUNPROJECT MANAGEMENT THROUGH PM GALAXY BOARDGAMEFOR TEAM LEADERS & PROJECT MANAGERS

• Publish/Subscribe and Key-Value store• It supports building and wiring of objects with a simple configuration• Remote access to those components for Java and C#.• Real time updates to live queries via a streams like API using lambdas.• Write lambdas on the client to be executed on the server atomically or asynchronously, for any purpose.• Supports clustered applications.• Support for millions of distributed actors per server.

Chronicle Engine hands on:

An advanced review of how the JVM really uses memory:

Multithreading & Currency

Java 8

Profiling & Tuning

Come to learn and play! Join us on a learning journey, in a workshop about Project Management. Our guide is the first Romanian Project Management boardgame.

If you want to learn or simply recap your project management knowledge, join us for a colorful workshop, full of fun, challenges and AHA! moments related to Project Management best practices.

This workshop is an introduction to project management and offers a clear structuring of projects: a simple approach, but not simplistic. Its goal is to guide participants through project management main stages: initiation, planning, executing, monitoring and controlling, and closing. Traps, challenges and best practices will be experienced with the help of a boardgame especially designed for this purpose: PM Galaxy. The game aims to test your project management knowledge and skills on a fun, challenging route, where the only constant is the struggle for resources. There are five projects in the game, each coordinated by a player. Projects have their own objectives, but are interdependent. The player who completes the project and meets the success criteria listed in the project description wins the game. The game follows closely a traditional Project Management approach, suitable for companies developing their own products or services. The players choose to respond or not to Quizzes, gaining Resources (in exchange for correct answers) and decide how to deal with Challenges and whether or not helping other projects. Resources are shared and – as in real life - limited!

• Why is that a good thing?• What is functional programming?• How can we take advantage of these features?• How does it relate to reactive programming?

The participants can use any of the following languages: Java8, C#, F# , Clojure or Scala.

• How to base line the speed of one thread. • How to identify when using multi-threading makes sense. • What multi-threading model is appropriate for your use case. • How to use thread pools and fork join.

• How to hide problems, how to find problems with performance profiling. • Using JMH for benchmarks. • Writing custom benchmarks, common pitfalls and how to avoid them.

Colors in ProjectsSIMONA BONGHEZ, PHD

Owner of Confucius Consulting, member of the PMI CMAG has over 15 years of experience as a trainer and consultant in management and project management. She truly believes that humour, games and metaphors are powerful tools for having interactive and enjoyable training sessions, thus enforcing the learning process.

Higher Frequency TradingPETER LAWREY

UllinkOVIDIU DEAC

He has a popular blog “Vanilla Java” which gets 120K page views per months, is 3rd on StackOverflow.com for [Java] and 2nd for [concurrency], and is lead developer of the OpenHFT project which includes support for off heap memory, thread pinning and low latency persistence and IPC (as low as 100 nano-seconds)

Price: 250 euro + TVAPrice: 100 euro + TVA

Higher Frequency TradingPETER LAWREY

He has a popular blog “Vanilla Java” which gets 120K page views per months, is 3rd on StackOverflow.com for [Java] and 2nd for [concurrency], and is lead developer of the OpenHFT project which includes support for off heap memory, thread pinning and low latency persistence and IPC (as low as 100 nano-seconds)

Ovidiu is a software engineer with a particular inclination towards code quality and agile development. He worked with imperative languages, C++, Python, Java and C# for more than 10 years before getting to functional programming. A few years ago he started the local FP community in Cluj and organized regular meetups with topics revolving around FP. Currently he works at Ullink, promoting the functional way of thinking. Ovidiu also orchestrates regular FP and TDD trainings.

• What are references, • What is compressed OOPS, • How are the fields in an object laid out.

• How can new features in Java 8 be used to make writing Low Latency application easier? • How do you tune garbage creation in the use of Lambdas?

Pushing Java 8 Lambdas to their limits and beyond:

The most used languages now have functional programming features

During this workshop we will write and discuss code with a functional style and see what the advantages / disadvantages are.

workshops

@GrandHotel Italia, Cluj-Napoca

Page 46: Today Software Magazine N41/2015

powered by

sponsori