Nr. 41 • www.todaysoftmag.ro • www.todaysoftmag.com No. 36••Noiembrie June 2015 2015 • www.todaysoftmag.ro • www.todaysoftmag.com
TSM
T O D A Y S O F T WA R E MAG A Z I NE
Download from
Windows Store
Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi ce
Auditul de User Experien
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
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?
Innovation, entrepreneurship and technology 24-25 November 2015, Cluj-Napoca
Cluj Arena, Conference Room & Multifunctional Hall
www.itdays.ro
2 days access - 80 euro + TVA
November 24
November 25 Conference Room
Multifunctional Hall
Trends & Leadership Sessions
Startups & Entrepreneurship
Software Architecture
Conference Room
09:00
Coffee & Registration
09:00
Coffee & Registration
09:00
Coffee & Registration
09:30
Opening Remarks Stelian Brad (Cluj IT Cluster) & Ovidiu Mățan (Organizer of IT Days)
09:30
Growth Hacking and Lean Canvas Christoph Steindl (CEO Catalysts Software)
09:30
10:00
Vector Watch in the Context of Wearable Fashion Trends Rareș Florea (Country Commercial Manager Vector Watch)
10:00
Before jumping in the product Mircea Vădan (Fortech)
On synchronizing data in distributed applications Sergiu Damian (iQuarc)
10:10
10:40
Innovation in Product Development and Future of Work Christoph Steindl (CEO Catalysts Software)
10:20
Tools and talents for tomorrow Roxana Rugină (Simplon)
A Reactive World Robert Cristian (3Pillar Global)
10:40
Coffee & Networking Break
10:40
Decisions in Architecture Florin Cardasim (Endava)
11:10
Local Product Launches 11:30
Beyond reality. Virtual Reality. The future of gaming and information visualization Robert Mureșan (CEO Exosyphen)
12:00
The Power of Play Simona Bonghez (CEO Colors in projects)
12:30
Launch of Programez.ro Ovidiu Mățan (TSM) and Vlad Derdeicea (Subsign)
13:00
Lunch Break
11:30
Driving innovation – TechLeague Diana Tîrnovan (Accesa) Florin Pascaru (Accesa) Coffee & Networking Break
Startups & Entrepreneurship
12:20
Start-Ups accross cultures Șerban Țîr (CTO Gemini Solutions)
12:30
ASP.Net 5 (vNext) Performance Characteristics Cătălin Pop (iQuarc)
13:00
Lunch Break
Local startup pitches
Java
Management
Lunch Break
15:00
Be Fast, be Off-JVM, be Chronicle-Queue Vasile Mihali (AROBS)
15:30
jOOQ - an object oriented abstraction interacting with relational databases Silviu Dumitrescu (Telenav)
16:00
Pizza Break
Big Data
Research
Hands on Lab
14:00
Using artificial intelligence for automatizing software development Răzvan Florian (Romanian Institute of Science and Technology)
14:00
Low Latency in Java 8 Peter Lawrey (Higher Frequency Trading)
15:00
Reliable Chip Designs from Low-Powered Unreliable Components Sorin Coțofană (Delft University)
Creating things with a 3D printer Mihai Oltean (Babeș-Bolyai University)
15:30
Programming collaborative robots with ROS László Tófalvi (Accenture) Péter Magó (Accenture)
14:30
Make it Warmer Dan Suciu (3Pillar Global)
15:00
Building a Strong Employer Brand Through Organizational Culture Cristian Philipp (Essential Training and Consulting)
14:30
15:30
Usable Software Design Alexandru Bolboacă (Mozaic Works)
15:30
16:00
Pizza break
Driver assistance systems and outlook into automated driving Cătălin Golban (Bosch)
16:00
Pizza break
16:00
Pizza break
16:20
16:20
Driver assistance systems and outlook into automated driving Cătălin Golban (Bosch)
How to build your own Smart House Călin Bunea (Gemini Solutions)
16:50
Crouching Admin, Hidden Hacker Teodor Olteanu (Betfair)
16:50
Large-scale Data Analytics for Smart City and Industrial Applications Dan Puiu (Siemens)
16:20
Evolving Ideas with BigData tools Tudor Mărghidanu (Yardi)
Automated Testing
16:50
Data modeling in Apache Hadoop Tudor Lăpușan (Telenav)
16:20
17:00
Machine Learning in the age of Big Data Daniel Sârbe (SDL)
Selenium WebDriver patterns for maintanability Vasile Pop (Intel)
16:50
17:50
Networking & wine
Performance testing how the needs for efficiency dictate the Automation Process Codruța Bunea (Yonder)
Partners
How to manage one million messages per second using Azure Radu Vunvulea (iQuest) Implementing Ports-And-Adapters [in the .NET ecosystem] Andrei Larionescu (Yonder)
13:00
Let’s “GamEventify”! Adina Grigoroiu (Colors in projects)
11:30
12:00
12:40
14:00
.NET
Microsoft Cloud Services and Tools tailor-made for startups Radu Ștefan (Microsoft)
Multifunctional Hall
Work with Hundreds of Hot Terabytes in JVMs Peter Lawrey (Higher Frequency Trading)
Coffee & Networking Break
12:00
Conference Room 14:00
11:10
17:20
Struggling with Test Automation -Issues and solutions Gabriel Fericean (Siemens)
17:50
Networking & wine
HR & Management 17:20
Is it easy to integrate young people in IT companies? Dan Ionescu (Danis)
17:50
Networking & Wine
HR & Management 17:20
Healthy Organizations Andreea Pârvu (Endava)
17:50
Networking & Wine
Supporters
Oraganizer
6 Why to participate at Cluj IT Days 2015? Ovidiu Măţan
10 How to Web 2015 Irina Scarlat
12 Salarile din IT vor crește Adrian Lupau
15 Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi Bogdan Oniga și Iacob Nașca
18 Proiectarea sistemelor robuste – câteva repere Romulus Bucur
21 Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C# Sebastian Silaghi
24 Auditul de User Experience Mircea Gui
27 Întâlnirile OSMTime pentru îmbunătățirea OSM Data Dragoș Andronic
29 Common misconception: How many objects does this create? Peter Lawrey
31 Logging pe memorii externe … lecții învățate Radu Vunvulea
34 Vă prezentăm ironwingjs Andrei Cacio
36 Imaginație + implicare + piese LEGO= ajutor reciproc corect Ana-Maria Trifan
38 Time Management: Preia controlul! Magnoliu Stan
41 SoCraTes 2015 Unconference Mihnea Lazăr
editorial
A
Ovidiu Măţan
ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
cest 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 materialele 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 tehnoredactarea ș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ăţan
Founder Today Software Magazine
4
nr. 41/2015, www.todaysoftmag.ro
Redacţia Today Software Magazine Fondator / Editor in chief: Ovidiu Mățan ovidiu.matan@todaysoftmag.com Graphic designer: Dan Hădărău dan.hadarau@todaysoftmag.com Copyright/Corector: Emilia Toma emilia.toma@todaysoftmag.com Traducător: Roxana Elena roxana.elena@todaysoftmag.com Reviewer: Tavi Bolog tavi.bolog@todaysoftmag.com Contabil : Delia Mircea delia.mircea@todaysoftmag.com Programator junior: Alexandru Diniș alexandru.dinis@todaysoftmag.com Marketing și tehnoredactor: Ana-Maria Bivol anamaria.bivol@todaysoftmag.com Tipar realizat de Daisler Print House
Lista autorilor Ovidiu Măţan ovidiu.matan@todaysoftmag.com Editor-in-chief Today Software Magazine
Sebastian Silaghi sebastian.silaghi @veinteractive.com Senior Software Developer in Test @VE Interactive
Irina Scarlat
Dragoș Andronic dragos.andronic@telenav.com
PR Manager @ How to Web & TechHub Bucharest
Product Manager @ Telenav
Adrian Lupau adrian.lupau@fortech.ro
Andrei Cacio andrei.cacio@yahoo.com
Business Development Manager @Fortech
Web Developer @ Evozon
irina.scarlat@howtoweb.co
Bogdan Oniga bognda.oniga@betfair.com Development Security Testing & Assurance Analyst @Betfair
Iacob Nasca iacob.nasca@betfair.com Principal Developer @ Betfair
Radu Vunvulea radu.vunvulea@ iquestgroup.com Senior Software Engineer @iQuest
Ana-Maria Trifan anamaria.trifan@happy-employees.eu PR & Custumer Care Specialist @ Azimut Happy Employees
Produs de
Today Software Solutions SRL str. Plopilor, nr. 75/77 Cluj-Napoca, Cluj, Romania contact@todaysoftmag.com
www.todaysoftmag.ro www.facebook.com/todaysoftmag twitter.com/todaysoftmag ISSN 2284 – 6352
Romulus Bucur romulus.bucur@siemens.com
Magnoliu Stan magnoliu@smart-training.ro
Senior .NET developer @Siemens
Director @ Smart HR
Peter Lawrey peter.lawrey@ highfrequencytrading.com CEO @ Higher Frequency Trading Ltd
Mihnea Lazăr mihnea.lazar@ msg-systems.com Software Developer @ msg systems
Copyright Today Software Magazine Reproducerea parțială sau totală a articolelor din revista Today Software Magazine fără acordul redacției este strict interzisă. www.todaysoftmag.ro www.todaysoftmag.com
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
5
eveniment
Cluj IT Days 2015 din perspectiva prezentărilor
M
ai 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
Ovidiu Măţan
ovidiu.matan@todaysoftmag.com Editor-in-chief @ Today Software Magazine Organizator @ Cluj IT Days
6
nr. 41/2015, www.todaysoftmag.ro
cu experiență în achiziția și prelucrarea În această prezentare vom dezbate datelor. Nivelul de dificultate: mediu. ideile cuprinse în ‚reactive manifesto’, axându-ne pe analiza celor mai importante caracteristici nonfuncționale care Beyond reality. Virtual Reality. The future trebuie asociate unei aplicații moderne. of gaming and information visualization Participanții vor înțelege princi- Robert Mureșan pii de design care se impun a fi luate în Tema prezentării o constiuie jocurile considerare în dezvoltarea unei aplicații în Realitatea Virtuală, mai precis crearea performante. și livrarea unor jocuri care oferă mai mult Prezentarea se adresează dezvoltatori- decât informații vizuale, adică sentimente lor de aplicații și arhitecților. și amintiri fantastice similare cu realitatea. Nivelul de dificultate: mediu. Audiența este generală. Prezentarea va fi făcută într-o formă ușor de înțeles de către toată lumea. Evolving ideas with BigData tools - Tudor Nivelul de dificultate: ușor. Mărghidanu Prezentăm evoluția unui proiect software și trecerea de la tehno- How to build your own Smart House - Călin logiile standard ETL la folosirea unui set Bunea de instrumente BigData pentru imporCum să-ți construiești singur propria tul și prelucrarea datelor într-un mediu casa inteligentă folosind componente elecdistribuit. Ne vom concentra asupra tronice relativ simple și ieftine. În plus vor conceptelor și modelelor de design utili- fi prezentate unele idei de automatizări zate într-un caz concret, luând în calcul interesante și motivante. performanța și gradul de mentenanță. Paticipanții vor învăța că pentru a Participanții vor putea reține concepte implementa diverse automatizări nu este precum BigData, design patterns, câteva nevoie de cunoștințe avansate de elecreguli de luat în calcul când se dezvoltă o tronică, că astfel de automatizări sunt la aplicație. îndemâna oricui. Prezentarea îi vizează pe Prezentarea se adresează programa- cei care dețin cunoștințe medii de progratorilor, analiștilor de date și persoanelor mare și cunoștințe minime de electronică
programare
TODAY SOFTWARE MAGAZINE
și care visează să-și implementeze diverse automatizări în propria On synchronizing data in distributed applications - Sergiu Damian locuință. Mă întreb adesea de ce evoluția alertă a tehnologiilor nu Nivelul de dificultate: mediu. 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 Selenium WebDriver - patterns for maintanability - Vasile Pop Una dintre problemele majore apărute în crearea unui fra- mari? În această prezentare vom insista asupra problemelor legate mework „in-house” de testare a aplicațiilor web este mentenanța. de sincronizarea datelor în aplicații distribuite, adică majoritatea Pașii inițiali sunt în general simpli, numai că în timp cantitatea aplicațiilor de azi, mai ales cele mobile. De asemenea, vom anade cod crește făcând tot mai complicată adaptarea la schim- liza o potențială soluție multiplatformă oferită de Azure Mobile bările aplicațiilor testate. Abordări de design ca PageObjects, Services. Vom vedea împreună de ce problema sincronizării datelor nu LoadableComponent, folosirea de SmartWaits în cod, simplifică păstrarea testelor sincronizate cu aplicația, reprezentând pași care este una trivială, motiv pentru care probabil nu are încă o soluție ar trebui luați în considerare în fazele incipiente ale proiectelor. unanim acceptată. Vom lua în considerare o potențială soluție sub Participanții vor putea să folosească ideile din prezentare în forma Azure Mobile Services. Prezentarea se adresează dezvolproiecte noi sau să rescrie părți din proiecte existente. Trecerea tatorilor, arhitecților, managerilor de produse și oricui interesat la variante mai eficiente de design se poate realiza gradual. de provocările întâmpinate în dezvoltarea aplicațiilor mobile sau Prezentarea se adresează membrilor echipelor de QA sau progra- distribuite. Nivelul de dificultate: mediu – avansat. matorilor interesați de scrierea de teste automate pentru aplicații web. Nivelul de dificultate: mediu. Let’s “GamEventify”! - Adina Grigoroiu Să presupunem că doriți să organizați un eveniment destinat mediului de afaceri. Trăim într-o perioadă în care conferințele, Crouching Admin, Hidden Hacker - Teodor Olteanu Administratorii de rețea duc un adevărat „război” cu persoane congresele și evenimentele sunt la îndemână, atât virtual, cât și rău intenționate care vor să capete acces la datele confidențiale cu participare fizică. Ce poți face pentru a organiza un eveniment ale companiei. Dar de cele mai multe ori totul se întâmplă fără inedit? Cum convingi participanții că timpul lor merită investit în ca noi să avem vizibilitate asupra acestor lucruri. Prezentarea evenimentul tău? Această prezentare oferă exemple despre cum se axează pe importanța implementării câtorva reguli de bază pot fi utilizate jocurile pentru a spori implicarea participanților pentru securizarea rețelelor și sistemelor IT. Veți afla cum să va și disponibilitatea lor de a experimenta și a învăța lucruri noi. apărați împotriva celor mai uzuale tipuri de atacuri și veți asista Desigur, va trebui să fiți deschiși, creativi și disponibili să lucrați la o demonstrație live. Prezentarea se adresează persoanelor inte- din greu. Evenimentele de afaceri cu un concept inovator, distractiv și captivant au un preț. Sunteți gata să-l plătiți? resate de securitatea în IT. În cadrul aceastei prezentări participanții vor descoperi cum Nivelul de dificultate: mediu. pot fi folosite jocurile pentru a crește implicarea participanților la evenimentele lor și cum pot crea o experiență memorabilă pentru „Make It Warmer” ! - Dan Suciu Prezentarea este centrată pe ideea îmbrăţişată de foarte multă aceștia. Prezentarea se adresează tuturor celor implicați în orgalume cum că abordarea agilă a proiectelor software reprezintă nizarea de evenimente, fie conferințe de anvergură orientate spre opusul metodologiilor clasice de management. Un exponent comunitățile din care fac parte, fie evenimente interne ale commarcant în acest sens este Waterfall. Putem considera cele două paniilor în care lucrează. Nivelul de dificultate: ușor. 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 Healthy Organizations – Andreea Pârvu celor care au lucrat în cel puţin o echipă urmând o metodologie Într-un context marcat de evoluție constantă și dinamicitate agilă. a pieței, o comparație între conceptul de organizație deșteaptă, Nivelul de dificultate: ușor – mediu. centrat pe construirea unei strategii de marketing, financiare
www.todaysoftmag.ro | nr. 41/noiembrie 2015
7
eveniment
Cluj IT Days 2015 din perspectiva prezentărilor
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 Țîr Prezentarea 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 asupra 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ârbe O 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 momentan î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 miliarde de euro se pierd anual pentru că nu există cine să scrie tot codul de care este nevoie. Criza resurselor umane pentru dezvoltarea software este cea mai mare preocupare a persoanelor
8
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
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ă tuturor 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ă programatorul 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 Bonghez Tuturor 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 angajament? 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ă
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 proiectele 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.
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 proiectele 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 Ionescu
Prezentarea “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.
www.todaysoftmag.ro | nr. 41/noiembrie 2015
9
eveniment
How to Web Conference 2015: produse inovatoare și oportunități de networking cu reprezentanți relevanți din industrie
B
ucureș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 Scarlat
irina.scarlat@howtoweb.co PR Manager @How to Web & TechHub Bucharest
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 produsele 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 antreprenoriatului din Europa de Sud-Est fiind organizat în colaborare cu Telekom Romania, IXIA, Bitdefender și CyberGhost. Cei peste 1000 de profesioniști în domeniul tehnologiei 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 descoperi 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.
10
nr. 41/2015, www.todaysoftmag.ro
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 produse 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 produse. Printre acestea se numără: • Axosuits, exoschelet medical pentru 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 eficientizâ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 produs din gama sa compatibil cu sistemele de operare iOS, Android și Windows
TODAY SOFTWARE MAGAZINE Phone. • Codie, robotul de jucărie interactiv care ajută copiii să descopere lumea tehnologiei și îi învață gândirea logică și tehnicile de rezolvare a problemelor, cunoștințe utile mai târziu pentru programare. • Hirrus mini-UAV, drona de supraveghere care furnizează date relevante în mod rapid, ajutând oamenii să își crească productivitatea, să diminueze costurile sau să își îmbunătățească semnificativ calitatea vieții. • Gravity Lifter, dispozitiv multipremiat 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 folosind 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 wireless ș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. • Sy mmer3D, platformă 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 astfel interacțiunile sociale, îmbunătățind astfel experiența de networking a acestora. Aplicația este disponibilă acum în AppStore și pe Google Play, iar participanții la conferință vor primi individual datele de acces. În plus, pe toată durata evenimentului 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, organizarea echipelor de produs și metrici, growth hacking, dezvoltarea unei campanii 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.
Pentru mai multe informații despre How to Web: Irina Nicoleta Scarlat CMO & Conference Manager Email: irina.scarlat@howtoweb.co Telefon: +40 720 034 031 www.howtoweb.co Twitter: @how_to_web Facebook: http://www.facebook.com/ howtoweb
How to Web by Night Oportunitățile de socializare continuă ș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 partenerilor 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 siteul conferinței până marți, 17 noiembrie.
Despre How To Web How to Web este cel mai însemnat eveniment dedicat inovației în tehnologie și antreprenoriatului din Europa de Sud-Est. Conferința se adresează inovatorilor î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 vorbitorilor confirmaţi pentru ediţia de anul acesta sunt disponibile online pe site-ul conferinţei.
www.todaysoftmag.ro | nr. 41/noiembrie 2015
11
business
Salariile din IT vor creşte
P
entru 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ţă. Adrian Lupau adrian.lupau@fortech.ro Business Development Manager @Fortech
12
nr. 41/2015, www.todaysoftmag.ro
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 producţie în defavoarea inovaţiei. Managerii Nokia urmau mantra japoneză din anii “80: dacă scădem costul de producţie suficient 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 demonstrat 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 procente 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 outsourcing. 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 presupune o schimbare la nivel de mentalitate nu doar în rândul companiilor ci şi în rândul 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ţă
TODAY SOFTWARE MAGAZINE pe mobile. Implicit se plăteau salarii bune. Deja piaţa a reacţionat ş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 entuziasmul, 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ă importanţ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 diagnostic î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.
Young spirit Mature organization A shared vision Join our journey! www.fortech.ro
www.todaysoftmag.ro | nr. 41/noiembrie 2015
13
comunități
Comunităţi IT
L
una 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.
Transylvania Java User Group Comunitate destinată tehnologiilor Java. Website: www.transylvania-jug.org Data înfiinţării: 15.05.2008 / Nr. Membri: 610 / Nr. Evenimente: 47 Comunitatea TSM Comunitate construită în jurul revistei Today Software Magazine Websites: www.facebook.com/todaysoftmag www.meetup.com/todaysoftmag www.youtube.com/todaysoftmag Data înfiinţării: 06.02.2012 /Nr. Membri: 2424/Nr. Evenimente: 32 Cluj Business Analysts Comunitate centrată pe analiza de business Website: www.meetup.com/Business-Analysts-Cluj Data înfiinţării: 10.07.2013 / Nr. Membri: 91 / Nr. Evenimente: 8 Cluj Mobile Developers Comunitate axată pe tehnologiile mobile Website: www.meetup.com/Cluj-Mobile-Developers Data înfiinţării: 05.08.2011 / Nr. Membri: 264 / Nr. Evenimente: 17 The Cluj Napoca Agile Software Meetup Group Comunitate centrată pe metodologia Agile de dezvoltare software. Website: www.agileworks.ro Data înfiinţării: 04.10.2010 / Nr. Membri: 437 / Nr. Evenimente: 93 Cluj Semantic WEB Meetup Comunitate destinată tehnologiilor semantice. Website: www.meetup.com/Cluj-Semantic-WEB Data înfiinţării: 08.05.2010 / Nr. Membri: 192/ Nr. Evenimente: 29 Romanian Association for Better Software Comunitatea oamenilor cu experiență din IT indiferent de tehnologie sau specializare. Website: www.rabs.ro Data înfiinţării: 10.02.2011 / Nr. Membri: 251/ Nr. Evenimente: 14 Tabăra de testare Comunitate 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.ro Data înfiinţării: 15.01.2012/Nr. Membri: 1243/ Nr. Evenimente: 107
14
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
Calendar Noiembrie 24-25 (Cluj) Cluj IT Days www.itdays.ro Noiembrie 26 (Cluj) Lansarea numărului 41 al Today Software Magazine www.todaysoftmag.ro Noiembrie 26-27 (Cluj) How To Web 2015 2015.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 Contention meetup.com/SQL-Cluj/events/226808955/ Decembrie 8 (București) Angular JS cu Andrei Rinea m e e t u p. c o m / B u c h a r e s t - A- D - C - E - S - Me 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 #39 m 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/
programare
Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi
P
robabil 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 sciencefiction 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 Oniga bognda.oniga@betfair.com Development Security Testing & Assurance Analyst @Betfair
Iacob Nasca iacob.nasca@betfair.com Principal Developer @ Betfair
Acestea fiind spuse, în cadrul evenimentului 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
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
15
programare Sistem de poziționare pentru spații închise bazat pe semnal Wi-Fi 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) (bsnMobileStationRssiData + 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 criptare ș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 doilea 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 simplă prin care se face transformarea.
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.
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.
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 actualizau 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. 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:
16
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
Soluția finală arăta astfel:
TODAY SOFTWARE MAGAZINE
www.todaysoftmag.ro | nr. 41/noiembrie 2015
17
programare
Proiectarea sistemelor robuste – câteva repere
S
trategiile de dezvoltare software au fost şi vor fi un permanent subiect de dezbateri ș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.
Romulus Bucur romulus.bucur@siemens.com Senior .NET developer @Siemens
18
nr. 41/2015, www.todaysoftmag.ro
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ă, capacitate 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 acestea 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 Fiecare dintre noi ne formăm şi ne dez- acest întreg aparat de procesare tehnolovoltăm urmând un traseu anume, fapt care gică şi să privim în mod obiectiv lucrurile. determină formarea unor viziuni diferite Maturizarea viziunii arhitecturale se asupra tehnologiei. Universităţile pe care le absolvim, firmele prin care trecem, pro- dobândeşte o dată cu participarea la un iectele cu care intrăm în contact, studiul număr tot mai mare de proiecte şi prin individual contribuie la formarea unui interacţiunea cu echipe de lucru tot mai pachet de informaţii care ne determina diverse. Varietatea proiectelor ne lărsă vedem lucrurile fie într-un mod, fie în gesc cadrul de percepţie a problematicii. altul. Pe de altă parte, rata evoluţiei tehno- Fiecare proiect contribuie la formarea unei logice face ca fiecare dintre noi să asimilăm noi perspective sau la redefinirea uneia existente. într-o anume măsură noutăţile apărute. O luare în considerare atât a părerilor convergente, 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 dezvoltare 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 tiparului arhitectural. Analiza elementelor componente va aduce mai multă claritate în alegerea formei arhitecturale a soluţiei pe care o construim.
Complexitate vs. simplitate Apetitul 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 determinante 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 scalabilitate 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 (sursa https://en.wikipedia.org/wiki/Public_transport) 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. Mediu Agile Sistemele 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 complex. 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 definită ş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. (sursa http://www.makeyourbestself.com/) Complexitatea poate fi un atribut al haosului sau unul al evoluţiei. Arhitectura sistemului trebuie să aducă claritate, flexi- Time line-ul bilitate și să înzestreze sistemul cu forţă. Simplitatea unui sistem O constrângere importantă este dată de termenii de livrare complex constă în faptul că un număr mare de piese pe tablă de ai produsului. Aceştia pot exercită o presiune considerabilă în joc, creează un peisaj limpede, intuitiv. alegerea elementelor arhitecturale. O arhitectură complexă necesită timpi de dezvoltare proporţionali, în schimb o arhitectură prea simplistă poate introduce o gama largă de probleme. Astfel
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
19
programare Proiectarea sistemelor robuste –câteva repere tendinţa de a sacrifica modulele de unit testing este aproape evidenţă, în cele mai multe situaţii. Există un impuls subconştient de a considera faptul că funcţionalitatea modulelor create este asigurată 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 permite 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.
conduce la rezultate foarte bune în etapele următoare.
(sursa http://driftingtuning.com the-10-most-unreliable-cars-on-the-market-today/)
fragilitate. Criteriile de formare a arhitecţilor sunt foarte complexe. 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 profilului unui arhitect durează o perioadă mai mare şi implică şi alţi factori decât pregătirea pur teoretică. Este importantă interacţ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 neajunsurile, dar să fie capabil să definească sisteme robuste. Doar o experienţă de acest fel poate garanta soliditatea sistemelor create.
Nevoia de a crea module fără erori solicită ancorarea fiecărei funcţionalităţi într-un sistem care să asigure integritatea comportamentului. 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 indicatori 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 clasic. 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 detectarea 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
20
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
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
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ă împlinirea 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 sebastian.silaghi @veinteractive.com Senior Software Developer in Test @VE Interactive
să o valorifice pentru a-și valida produsul. Din acest motiv, aceasta are o mare importanță pentru client și totodată reprezintă ș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 instrument open-source, care se integrează cu Visual Studio. De asemenea, articolul prezintă ș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 sistem ș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 utilizatorului 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 specific 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 demonstrează 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 componente, 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 acceptare: 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
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
21
testare Acceptance Testing Driven Development utilizând SpecFlow cu Selenium în C# acceptare sunt mai ales la aplicațiile complexe semnificativ mai mici decât costul efectuării manuale frecvente a testelor de regresie și validare, sau decât acela al alternativei de a scoate pe piață software de calitate slabă. O testare eficientă de acceptare ar trebui 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 pluginurile 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 scrierea 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 comportamentul 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 WebDriver Integrarea 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
22
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
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 validare 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 scenariile 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 pentru 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ă lucrurile 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.
ș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ă responsabilitate și o separare bună a preocupărilor (concerns) • Scrieți scenarii și pentru
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 interiorul 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.
cazurile non-happy-flow. • Revedeți, reutilizați și îmbunătățiți-vă scenariile și etapele.
Concluzii
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 dealocarea 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
Testele 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 dezvoltatorii lucrează împreună pentru a dezvolta în mod corect funcționalitățile sistemului. Dacă comunicarea dintre părțile interesate ș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țe 1. “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øy 3. http://www.specflow.org/ 4. http://www.testdriven.com/ 5. http://www.acceptancetesting.info/ 6. https://msdn.microsoft.com/en-us/magazine/gg490346.aspx
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
23
programare
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
Mircea Gui Mircea.Gui@Yardi.Com UI/UX Designer @ Yardi Romania
24
nr. 41/2015, www.todaysoftmag.ro
companiilor și produselor care au nevoie arhitectura informației și tipare de de designeri UX, cât și al acestora din utilizare. urmă prin expunerea aspectelor esențiale Întrebările la care trebuie să răspundă care caracterizează etapa premergătoare proiectelor IT, cea de analiză și cercetare, auditul de UX sunt: • Care sunt tendințele actuale și adică auditul de User Experience. Această așteptările utilizatorilor pentru această etapă are scopul foarte clar de a identipiață? fica dacă și în ce măsură un produs are • Ce am încercat până acum? Ce a nevoie de îmbunătățiri în ceea ce privește funcționat și ce nu? relația directă cu utilizatorul/clientul. • Ce probleme sau nevoi ale utilizatorilor se regăsesc în setul de date Produsele software trebuie să trăiască studiate? și să crească împreună cu businessul și cu • Dintre acestea, care aspecte pot clienții acestuia. Cum știm ce componente fi rezolvate prin designul UI/UX al trebuie revigorate, refăcute sau regândite? produsului? Totul debutează cu un audit de User Experience. Acesta nu este un aspect ineAuditul începe cu partea de cercetare dit al procesului de creare de software, ci mai degrabă o componentă de bază a și documentare. Acest proces va genera designului industrial încă din stadiile tim- informații utile pentru realizarea unor purii ale acestuia. Scopul este crearea unei modele de cercetare ale utilizatorului, analize detaliate ce conturează un cadru cum ar fi user persona (profilul utilizatorude intersecție al cerințelor de business cu lui) sau realizarea de sondaje. Majoritatea cele ale clientului precum și modalitatea companiilor dispun de metode de analiză de a obține obiective concrete referitoare a datelor de marketing, trafic și utilizarea la utilizatori. Acesta poate fi un proces produsului. De obicei acest tip de date istovitor, dar el poate identifica acțiuni nu este analizat dintr-o perspectivă cenclare de urmat, precum și un plan de a trată pe utilizator care să ia în considerare îmbunătăți produsul. Aspectele vizate de mentalitatea utilizatorului în procesul de o astfel de analiză cuprind: reguli corecte interacțiune cu produsul. de design, conformitate funcțională,
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 interviuri 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 principal 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 articolelor 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 abonament, un număr mare de clienți sunau pentru a afla care este diferența dintre cele trei tipuri de abonament, în ciuda faptului 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 necesităţ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 despre 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 produs 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ă departamentul 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 produsului 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 www.todaysoftmag.ro | nr. 41/noiembrie 2015
25
programare Auditul de User Experience 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 utilizator 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) – trebuie 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 n u t u l r e l e v a n t p e n tru utilizator și care generează venit pentru afacere trebuie să se afle pe ecran la prima afișare a ecranului. • Conținut vizual confortabil - folosirea de imagini simple, 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 utilizatorului 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ă principiilor culturale sociale sau religioase ale bazei de utilizatori. • Accesibilitate - verificarea valorilor de contrast ale culorilor 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ă modelele de navigare sunt compatibile cu aceste aparate (dimensiuni zone de interacțiune, elemente cu hover, etc.). • Răspuns la acțiune (feedback status) - sistemul trebuie să mențină utilizatorul informat cu privire la ce se întâmplă: pasul curent în proces, durata de completare, 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ă,
26
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
posibilitatea de a repeta sau anula ultima acțiune. • Consec vență și standardizare - cuvintele folosite, situațiile ș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 inteligent ar fi un design atent, care previne însăși apariția erorii. Sunt de evitat interacțiunile întâmplătoare sau repetate prin dezactivarea 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 personalizare 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 elementele î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.
TODAY SOFTWARE MAGAZINE
Întâlnirile OSMTime pentru îmbunătățirea OSM Data
D
rept voluntar, ești mereu în căutare de noi resurse care să îți satisfacă interesul pentru servicii sociale, proiecte civice, caritabile 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
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 cartografi locali se adună pentru a împărtăși informații referitoare la inițiativele și instrumentele OpenStreetMap și pentru 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ă.
arătat cum funcționează acesta și cum să îl utilizăm, toți cartografii au început să editeze î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 comoditate, 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ă Ce am făcut până în prezent? luăm asta drept exemplu: Am abordat subiecte diferite precum: îmbunătățirea calității și cantității datelor Veți observa că există culori diferite de adresă din OpenStreetMap ( pe parcursul a 6 luni, în timpul întâlnirilor, am pentru trasee și pentru tronsoane. Există adăugat și editat adrese din Cluj-Napoca), trei tronsoane de bază care pot fi de asemeam contribuit la eforturile HOT OSM, am nea filtrate după tipul lor sau după starea organizat partide de cartografiere locală, lor, după cum urmează: deschise (albasam învățat și am utilizat unelte variate tru), rezolvate (verde), nevalide (roșu). pentru a îmbunătăți harta (ScoutSigns, MapRoulette, etc.) și ne-am antrenat în 2. Editați harta Cum instrumentul web este în princitehnici specifice (ex. cum să completăm imaginile cu geo-referințe și cum să pal destinat activității de browsing, nu veți le utilizăm drept suport pentru editarea putea modifica statutul tronsoanelor din acest instrument, în acest moment. Acest hărților). lucru poate fi făcut deocamdată numai în plugin-ul JOSM. Totuși, noi furnizăm Ultima întâlnire OSMTime: testarea instrulinkuri convenabile pentru a edita extinmentului Missing Roads (Drumuri Lipsă) La ultima noastră întâlnire, am încer- derea hărții curente în JOSM și iD. Observația 1: Pentru a verifica rapid cat instrumentul Missing Roads, dezvoltat dacă există de fapt drumuri în zonă, puteți de colegii noștri de la Telenav. După o scurtă introducere a instru- trece rapid de la nivelul OSM default la un mentului, în care colegii noștri ne-au nivel de imagini din aer, prin amabilitatea
ESRI. Observația 2: Interfața principală pentru datele Missing Roads este plugin-ul nostru JOSM. El oferă o funcționalitate de browsing similară cu ceea ce face instrumentul 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 tronsoanele 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 drumuri 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. Panoul are trei tab-uri cu cantități diferite de informație despre
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
27
programare Întâlnirile OSMTime pentru îmbunătățirea OSM Data 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.
dar, indiferent de aceasta, fiecare dintre participanți a găsit o zonă care avea nevoie de puțină ”dragoste de cartografiere”.
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ătoarele secțiuni.
Sfaturi pentru cartografiere
Filtrarea Similar 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.
Un demers eficient în utilizarea instrumentului drumurilor lipsă este cel împărtășit de Martijn: ”nu ar trebui să adăugați drumuri 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 disponibile imagini mai recente. Căutați straturi aeriene în meniul de imagini JOSM. Deci, asigurați-vă că verificați meniul de imagini din nou, dacă editați într-o zonă necunoscută.” Și pentru că o imagine valorează cât o mie de cuvinte, iată OSMTime:
Comentariile Dacă 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 fiecărui tronson. Rezolvarea În final, există trei butoane pentru a rezolva tronsonul/ tronsoanele selectate: butonul lock (închidere) rezolvă un tronson și îl marchează drept gata, butonul unlock (deschidere) marchează tronsonul drept nerezolvat sau deschis din nou, butonul ! marchează 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ă),
28
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
Dragoș Andronic dragos.andronic@telenav.com Product Manager @ Telenav
Common misconception: How many objects does this create?
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. Peter Lawrey peter.lawrey@ highfrequencytrading.com CEO @ Higher Frequency Trading Ltd
String is a not a single object
The JVM uses Strings, lots of them.
A 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.
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 properties and all environment variables which are created so you can run your program are all Strings, both the values and the key names.
String literals are still Strings
Let us consider a Hello World program and see how many Strings are created so this A common misconception is that String literals don’t count. They don’t add to the program can run. Is it 0, 1 or 2 Strings, see if total after the code has been run at least you can guess how many are actually created.. once, however most of the time the question public class HowManyStrings { is about code which is run once. i.e. String public static void main(String[] args) throws IOException { literals still count. System.out.println(„Hello 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.
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.
www.todaysoftmag.ro | nr. 41/noiembrie, 2015
29
programare Common misconception: How many objects does this create?
Escape Analysis 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 Elimination Code which the JIT detects doesn’t do anything useful can be dropped. The JIT is pretty good at this and most likely the example 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.
30
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
The 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)
Conclusion The 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.
programare
Logging pe memorii externe … lecții învățate
L
ogging-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ă sistemul 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. Radu Vunvulea radu.vunvulea@iquestgroup.com Senior Software Engineer @iQuest
Există multe soluții de-a gata pe piață, care ne ajută să facem logging și audit în sistemul 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 loguri 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.
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 Dar v-ați întrebat vreodată ce se întâmplă disponibile. când nu se poate ajunge la această memoObservații: Vom continua cu situația în rie. Acest articol va analiza acest caz. Ce se întâmplă dacă memoria pe care sunt păstrate care utilizați log4net, dar menționăm că un comportament similar se manifestă și la alte log-urile și auditul nu poate fi accesată? framework-uri de logging. Să ne imaginăm un sistem care scrie Ce se întâmplă când una dintre aceste toate log-urile pe Azure Blob Storage iar informațiile de audit sunt trimise direct în memorii nu poate fi accesată? Ce credeți? … www.todaysoftmag.ro | nr. 41/noiembrie, 2015
31
programare Logging pe memorii externe … lecții învățate 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ă memorie, 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.
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?
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.
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ă fac?
Ce ar trebui să faceți cu datele extra?
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 comportamentele 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âmplă dacă aceasta eșuează și cum puteți detecta asta. Acestea sunt două întrebări pe care ar trebui să vi le puneți.
32
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
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 utilizare 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 memoria 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.
TODAY SOFTWARE MAGAZINE
Our core competencies include:
Product Strategy
Product Development
Product Support
3Pillar Global, a product development partner creating software that accelerates speed to market in a content rich world, increasingly connected world. Our offerings are business focused, they drive real, tangible value.
www.3pillarglobal.com
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 utilizează 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 crucial 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 procesează ș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.todaysoftmag.ro | nr. 41/noiembrie 2015
33
programare
Vă prezentăm ironwingjs
P
e 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.
Andrei Cacio andrei.cacio@yahoo.com Web Developer @ Evozon
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 manipula datele într-o aplicaţie privată. În acel moment, nu intenționam să folosim un framework 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 destul de complicat să le foloseşti stand-alone. Astfel, am început să scriem propria noastra 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 programatori. 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.
baza a câteva concepte precum: adapters, storage, proxy objects. Aceste concepte abstracte 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.
Instalare Ironwing 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 operare Windows, aceste comenzi pot fi rulate în cadrul consolei git-bash.
Cum funcţionează
Ironwing este scrisă conform noilor standarde EcmaScript şi se foloseşte de unele Adapters implementări populare precum promises. Un adapter este un obiect scris după o Totodată, această librărie este construită pe interfaţă prestabilită pentru putea fi integrat
34
nr. 41/2015, www.todaysoftmag.ro
TODAY SOFTWARE MAGAZINE cu ironwing. Out of the box, ironwing este livrat cu un adaptor pentru comunicarea cu serverul prin AJAX. Practic acest adaptor este o interfaţă intermediară pentru comunicarea cu API-ul oferit de browser, numit. Acest API oferă o metodă asincronă de comunicare cu serverul prin request-uri HTTP de tip JSON. Programatorul nu interacţionează cu adaptorii în mod direct. Aceştia sunt folosiţi de core-ul ironwing. Scopul adaptorilor sunt de a abstractiza comunicarea cu serverul astfel încât procesul să devină uşor de modificat. Oricine poate să scrie propriul său adaptor. Încărcarea unui adapter se face folosind metoda astfel:
storage ce se foloseşte de local storage din browser.
Proxy objects
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 singur parametru, şi anume calea către API.
Metoda 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 denumirilor 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 asupra cum este modificat obiectul original.
Storage
Exemplu de folosinţă
import ironwing from ‚ironwing’; ironwing.useAdapter(‚JSON’, [‚/ api’]);
Prin default, ironwing foloseşte un storage 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 cacheuieş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ătoarea 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
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ă.
Disclaimer Ironwing a fost dezvoltat inițial pentru proiectul Trubzi în cadrul Evozon Systems din Cluj-Napoca. Evozon este o companie 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 proprii precum Trubzi, Calendis, Hoteliqo și framework-uri folosite de către dezvoltatori din lumea întreagă, precum Essence și Crux.
import ironwing from ‚ironwing’; var userData = { first_name: ‚Jon’, last_name: ‚Doe’; }; ironwing.useAdapter(‚JSON’, [‚/ api’]); ironwing.create(‚users’, userData).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 */ }); });
Concluzie Ironwing este o librărie care poate fi uşor “conectată” la un RESTful API iar programatorul are direct acces la o manipulare 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 www.todaysoftmag.ro | nr. 41/noiembrie 2015
35
educație
Imaginație + implicare + piese LEGO= ajutor reciproc
C
e 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 imaginaţ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
Ana-Maria Trifan anamaria.trifan@ happy-employees.eu PR & Custumer Care Specialist @ Azimut Happy Employees
36
nr. 41/2015, www.todaysoftmag.ro
astfel de activităţi care stârnesc imaginaţia şi creativitatatea pot aduce rezultate uimitoare 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 building, 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 Se ia o doză de imaginaţie... Vă puteţi oare imagina ce am urmărit implementăm. prin lansarea acestei provocări? În primul rând, aşa cum am menţionat, am fost Se adaugă un praf de implicare... foarte curioşi să aflăm cât de inventivi pot Programul la care ne referim se fi adulţii. În al doilea rând, am dorit să vă numeşte ”Toy World” şi s-a născut din implicăm într-o activitate relaxantă care dorinţa de a ajuta. Pentru că de multă poate contribui la îmbunătăţirea creativi- vreme ne gândeam să creăm un program tăţii. Nu în ultimul rând, scopul campaniei cu impact social, cu resursele pe care a fost acela de a vedea dacă într-adevăr le avem, ne-a venit ideea să dezvoltăm 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 dispoziţie şi cel mai important, având un scop pentru care facem asta!
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 piesele 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 bulding 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ă promovă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!
www.todaysoftmag.ro | nr. 41/noiembrie 2015
37
management
Time Management: Preia controlul!
M
odul î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 magnoliu@smart-training.ro Director @ Smart HR
Vă propun trei lucruri: 1. Analiza modului în care vă petreceți timpul. 2. Însușirea și aplicarea unor instrumente moderne de gestionare a timpului. 3. Simplificare. Care trebuie să fie rezultatul așteptat? Simplu - creșterea eficienței utilizării timpului prin: • Simplificarea vieții personale, • Creșterea eficienței profesionale. Ideea de simplitate în plan personal și profesional este abordată atât in filozofia americană (Leo Babauta, The Power of Less), cât și în cea europeană și se bazează
38
nr. 41/2015, www.todaysoftmag.ro
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 pentru 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 suficient. 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?
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 recomand 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 datoriile 11. 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 întro 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 proiecte 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 noastră: 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 epuizare, nemairămânându-ne timp pentru sarcinile cu adevărat importante. Metoda simplificare: Un exemplu. În cazul în care ne referim 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 www.todaysoftmag.ro | nr. 41/noiembrie 2015
39
programare Time Management: Preia controlul! obicei, o obișnuință. 5. Alegeți alt aspect pe care doriți să îl îmbunătățiți. Repetați pașii anteriori.
• Măsurați și înregistrați rezultatele, anunțați progresul zilnic sau periodic. • După 30 zile: ați dobândit un obicei nou.
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?
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ă.
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 concentră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ă încadrarea î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, prieteni sau pe Facebook.
40
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
Î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, etapizate. 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!
SoCraTes 2015 Unconference
A
ceasta 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 mihnea.lazar@ msg-systems.com Software Developer @ msg systems
Cunoscută și sub numele de conferință open space, o ,,neconferință” - da, așa s-ar traduce- se diferențiază de conceptul clasic de conferință cu subiecte stabilite de dinainte prin următoarele calități: • Participanții propun subiecte proprii 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 singurul lucru care se poate întâmpla.
SoCraTes 2015 Germania
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 libertatea 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 space
De la prima ediție, SoCraTes s-a Unealta principală a open space-ului: extins ca eveniment, desfășurându-se în tabla. În partea stângă au fost puse intermai multe țări din lume precum Marea valul de timp disponibil pentru fiecare Britanie, Belgia, Insulele Canare, Elveția. sesiune (în principiu, o oră fiecare), iar în www.todaysoftmag.ro | nr. 41/noiembrie, 2015
41
programare SoCraTes 2015 Unconference
partea de sus, erau specificate sălile unde conferințele puteau fi susținute.
Î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ă World Café-ul de joi, parcipanții se cunoșteau mai bine după serviciu. Majoritatea subiectelor s-a discutat fără a fi fost și se simțeau mai comozi pentru a-și împărți ideile cu ceilalți. pregătite de prezentări prealabile, deci întrebările au fost bineveAșadar, au fost invitați să formeze o coadă pentru a-și prezenta nite oricând erau necesare clarificări. ideile de sesiuni.
Unele sesiuni au pornit discuții care s-au ramificat în alte sesiCoada de oameni care așteptau să-și adauge subiectele se extindea pe ambele părți ale tablei. Aceasta a fost umplută cu uni. În aceste cazuri, fie au fost continuate în curtea hotelului, la sesiuni, care se întindeau de la 10:30 până la 18:00 în ambele zile! terasă, sau într-o sesiune în următoarea zi, fie s-a făcut schimb de Unele subiecte s-au extins în pe parcursul cinei, după cină, la bar, adrese de e-mail sau bloguri. sau au fost repetate următoarea zi.
42
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
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 predefinite, 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 reaminti 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 sarcini î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 HD o Chat audio o 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 conectate, 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 stabilit prin baza unui grafic bidimensional, unde o axă este pentru experiența profesională, iar cealaltă axă este pentru www.todaysoftmag.ro | nr. 41/noiembrie 2015
43
programare SoCraTes 2015 Unconference 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 trebui să le primească oamenii și toate salariile pe care le primesc. • Factori: experiența, rolul în firmă, familia, responsabilitatea, 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 trebui 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 sistemelor 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/
44
nr. 41/noiembrie 2015 | www.todaysoftmag.ro
workshops @GrandHotel Italia, Cluj-Napoca 0900-1700
23rd of Nobember
JAVA PERFORMANCE WORKSHOP
LEARNING BY HAVING FUN PROJECT MANAGEMENT THROUGH PM GALAXY BOARDGAME
FOR SENIOR JAVA DEVELOPERS
An advanced review of how the JVM really uses memory: • What are references, • What is compressed OOPS, • How are the fields in an object laid out.
FOR TEAM LEADERS & PROJECT MANAGERS 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. 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!
Pushing Java 8 Lambdas to their limits and beyond: • 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?
Chronicle Engine hands on: • 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.
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.
PETER LAWREY Higher Frequency Trading
SIMONA BONGHEZ, PHD
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)
Colors in Projects 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.
Price: 250 euro + TVA
Price: 90 euro + TVA 0900-1700
23rd of Nobember
0900-1700
23rd of Nobember
0900-1700
26th of Nobember
FUNCTIONAL THINKING
JAVA 8, MULTITHREADING AND PROFILING
The most used languages now have functional programming features
Java 8
• • • •
Multithreading & Currency
FOR MEDIUM & SENIOR DEVELOPERS 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?
During this workshop we will write and discuss code with a functional style and see what the advantages / disadvantages are. The participants can use any of the following languages: Java8, C#, F# , Clojure or Scala.
OVIDIU DEAC Ullink 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.
Price: 100 euro + TVA
FOR MEDIUM & SENIOR JAVA DEVELOPERS
• 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.
Profiling & Tuning • 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.
PETER LAWREY Higher Frequency Trading 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 + TVA WORSKHOP PARTNER:
Partners
Supporters
Organizer
sponsori
powered by