Beruflich Dokumente
Kultur Dokumente
41
www.todaysoftmag.ro
www.todaysoftmag.com
No.
36Noiembrie
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
www.itdays.ro
November 24
November 25
Conference Room
Multifunctional Hall
Software Architecture
Conference Room
09:00
09:00
09:00
09:30
Opening Remarks
Stelian Brad (Cluj IT Cluster) & Ovidiu Man (Organizer of IT Days)
09:30
09:30
10:00
10:00
On synchronizing data in
distributed applications
Sergiu Damian (iQuarc)
10:10
10:40
10:20
A Reactive World
Robert Cristian (3Pillar Global)
10:40
10:40
Decisions in Architecture
Florin Cardasim (Endava)
11:10
Beyond reality. Virtual Reality. The future of gaming and information visualization
Robert Murean (CEO Exosyphen)
12:00
12:30
Launch of Programez.ro
Ovidiu Man (TSM) and Vlad Derdeicea (Subsign)
13:00
Lunch Break
11:30
12:20
12:30
ASP.Net 5 (vNext)
Performance Characteristics
Ctlin Pop (iQuarc)
13:00
Lunch Break
Java
Management
Lunch Break
15:00
15:30
16:00
Pizza Break
Big Data
Research
Hands on Lab
14:00
14:00
15:00
15:30
14:30
Make it Warmer
Dan Suciu (3Pillar Global)
15:00
14:30
15:30
15:30
16:00
Pizza break
16:00
Pizza break
16:00
Pizza break
16:20
16:20
16:50
16:50
16:20
Automated Testing
16:50
16:20
17:00
16:50
17:50
Partners
13:00
Lets GamEventify!
Adina Grigoroiu (Colors in projects)
11:30
12:00
12:40
14:00
.NET
Multifunctional Hall
12:00
Conference Room
14:00
11:10
17:20
17:50
HR & Management
17:20
Is it easy to integrate
young people in IT companies?
Dan Ionescu (Danis)
17:50
HR & Management
17:20
Healthy Organizations
Andreea Prvu (Endava)
17:50
Supporters
Oraganizer
6
Why to participate at
Cluj IT Days 2015?
Ovidiu Man
10
How to Web
2015
Irina Scarlat
12
Salarile din IT
vor crete
Adrian Lupau
15
Sistem de poziionare pentru spaii
nchise bazat pe semnal Wi-Fi
Bogdan Oniga i Iacob Naca
18
Proiectarea sistemelor robuste
cteva repere
Romulus Bucur
21
Acceptance Testing Driven
Development utiliznd SpecFlow cu
Selenium n C#
Sebastian Silaghi
24
Auditul de User Experience
Mircea Gui
27
ntlnirile OSMTime pentru
mbuntirea OSM Data
Drago Andronic
29
Common misconception:
How many objects does this create?
Peter Lawrey
31
Logging pe memorii externe
lecii nvate
Radu Vunvulea
34
V prezentm
ironwingjs
Andrei Cacio
36
Imaginaie + implicare + piese LEGO= ajutor
reciproc corect
Ana-Maria Trifan
38
Time Management:
Preia
controlul!
Magnoliu Stan
41
SoCraTes 2015 Unconference
Mihnea Lazr
editorial
Ovidiu Man
ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine
Ovidiu Man
Lista autorilor
Ovidiu Man
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
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
Director
@ Smart HR
Peter Lawrey
peter.lawrey@
highfrequencytrading.com
CEO @ Higher Frequency
Trading Ltd
Mihnea Lazr
mihnea.lazar@
msg-systems.com
Software Developer
@ msg systems
eveniment
Ovidiu Man
ovidiu.matan@todaysoftmag.com
Editor-in-chief
@ Today Software Magazine
Organizator
@ Cluj IT Days
programare
i care viseaz s-i implementeze diverse automatizri n propria On synchronizing data in distributed applications - Sergiu Damian
locuin.
M ntreb adesea de ce evoluia alert a tehnologiilor nu
Nivelul de dificultate: mediu.
aduce neaprat cu ea i creterea productivitii industriei? Poate
pentru c, dei avem tehnologii mai avansate, complexitatea i
viteza cu care se desfoar viaa noastr sunt din ce n ce mai
Selenium WebDriver - patterns for maintanability - Vasile Pop
Una dintre problemele majore aprute n crearea unui fra- mari? n aceast prezentare vom insista asupra problemelor legate
mework in-house de testare a aplicaiilor web este mentenana. de sincronizarea datelor n aplicaii distribuite, adic majoritatea
Paii iniiali sunt n general simpli, numai c n timp cantitatea aplicaiilor de azi, mai ales cele mobile. De asemenea, vom anade cod crete fcnd tot mai complicat adaptarea la schim- liza o potenial soluie multiplatform oferit de Azure Mobile
brile aplicaiilor testate. Abordri de design ca PageObjects, Services.
Vom vedea mpreun de ce problema sincronizrii datelor nu
LoadableComponent, folosirea de SmartWaits n cod, simplific
pstrarea testelor sincronizate cu aplicaia, reprezentnd pai care este una trivial, motiv pentru care probabil nu are nc o soluie
ar trebui luai n considerare n fazele incipiente ale proiectelor. unanim acceptat. Vom lua n considerare o potenial soluie sub
Participanii vor putea s foloseasc ideile din prezentare n forma Azure Mobile Services. Prezentarea se adreseaz dezvolproiecte noi sau s rescrie pri din proiecte existente. Trecerea tatorilor, arhitecilor, managerilor de produse i oricui interesat
la variante mai eficiente de design se poate realiza gradual. de provocrile ntmpinate n dezvoltarea aplicaiilor mobile sau
Prezentarea se adreseaz membrilor echipelor de QA sau progra- distribuite.
Nivelul de dificultate: mediu avansat.
matorilor interesai de scrierea de teste automate pentru aplicaii
web.
Nivelul de dificultate: mediu.
Lets GamEventify! - Adina Grigoroiu
S presupunem c dorii s organizai un eveniment destinat
mediului de afaceri. Trim ntr-o perioad n care conferinele,
Crouching Admin, Hidden Hacker - Teodor Olteanu
Administratorii de reea duc un adevrat rzboi cu persoane congresele i evenimentele sunt la ndemn, att virtual, ct i
ru intenionate care vor s capete acces la datele confideniale cu participare fizic. Ce poi face pentru a organiza un eveniment
ale companiei. Dar de cele mai multe ori totul se ntmpl fr inedit? Cum convingi participanii c timpul lor merit investit n
ca noi s avem vizibilitate asupra acestor lucruri. Prezentarea evenimentul tu? Aceast prezentare ofer exemple despre cum
se axeaz pe importana implementrii ctorva reguli de baz pot fi utilizate jocurile pentru a spori implicarea participanilor
pentru securizarea reelelor i sistemelor IT. Vei afla cum s va i disponibilitatea lor de a experimenta i a nva lucruri noi.
aprai mpotriva celor mai uzuale tipuri de atacuri i vei asista Desigur, va trebui s fii deschii, creativi i disponibili s lucrai
la o demonstraie live. Prezentarea se adreseaz persoanelor inte- din greu. Evenimentele de afaceri cu un concept inovator, distractiv i captivant au un pre. Suntei gata s-l pltii?
resate de securitatea n IT.
n cadrul aceastei prezentri participanii vor descoperi cum
Nivelul de dificultate: mediu.
pot fi folosite jocurile pentru a crete implicarea participanilor la
evenimentele lor i cum pot crea o experien memorabil pentru
Make It Warmer ! - Dan Suciu
Prezentarea este centrat pe ideea mbriat de foarte mult acetia. Prezentarea se adreseaz tuturor celor implicai n orgalume cum c abordarea agil a proiectelor software reprezint nizarea de evenimente, fie conferine de anvergur orientate spre
opusul metodologiilor clasice de management. Un exponent comunitile 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: uor.
abordri ca fiind extreme? i dac da, exist o cale de mijloc n
abordarea proiectelor sofT? Acestea sunt doar cteva ntrebri la
care voi rspunde n cadrul prezentrii, adresndu-m tuturor
Healthy Organizations Andreea Prvu
celor care au lucrat n cel puin o echip urmnd o metodologie
ntr-un context marcat de evoluie constant i dinamicitate
agil.
a pieei, o comparaie ntre conceptul de organizaie deteapt,
Nivelul de dificultate: uor mediu.
centrat pe construirea unei strategii de marketing, financiare
eveniment
eveniment
Irina Scarlat
irina.scarlat@howtoweb.co
PR Manager
@How to Web & TechHub Bucharest
10
11
business
12
S nu va imaginai ns c dispariia
unei companii se produce peste noapte, s
nu uitm c Yahoo este nc o companie
mare.
Aducei-v aminte exemplul Nokia
care a mizat pe scderea costului de producie n defavoarea inovaiei. Managerii
Nokia urmau mantra japonez din anii
80: dac scdem costul de producie suficient de mult, atunci vom putea accesa o
pia mai larg de clieni i astfel vom face
profituri mai mari. ns piaa le-a demonstrat c oamenii i doresc mai degrab
produse inovative dect produse ieftine.
Cumprarea pe baza de nevoi primare
mai e valabil pentru maxim cinci procente din ceea ce se cumpr, restul sunt
nevoi superioare bazate pe consum, statut,
dorine i aspiraii. Sugestiv n acest sens
exemplul iPhone.
Young spirit
Mature organization
A shared vision
Join our journey!
www.fortech.ro
13
comuniti
Comuniti IT
una aceasta ne vedem la Cluj IT Days ! Evenimentul de lansare a revistei i urmeaz imediat, n 26 noiembrie. Totodat, la
Bucureti, n 26-27 noiembrie are loc How To Web. Acestea sunt ultimele dou mari evenimente de IT ale acestui an.
14
Calendar
Noiembrie 24-25 (Cluj)
Cluj IT Days
www.itdays.ro
Noiembrie 26 (Cluj)
Lansarea numrului 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)
Lets meet and talk about Window functions and reducing
SQL Server Contention
meetup.com/SQL-Cluj/events/226808955/
Decembrie 8 (Bucureti)
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 numrului 42 al Today Software Magazine
www.todaysoftmag.ro
Decembrie 17(Timioara)
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
robabil majoritatea dintre voi au vzut binecunoscutul film Enemy of the state, film n
care este prezentat ideea conform creia NSA poate afla unde eti localizat, fr ca tu
s tii, doar cu ajutorul telefonului mobil. Ideea filmului lansat n 1998 prea 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
15
programare
Sistem de poziionare pentru spaii 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 informaii 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 distana n metri dintre AP i dispozitiv
avem nevoie de doi parametri, i anume: puterea semnalului i
frecvena semnalului. Formula de calcul este forma transformat
a Free Space Path Loss (FSPL):
16
17
programare
trategiile de dezvoltare software au fost i vor fi un permanent subiect de dezbateri i contradicii, care creeaz totodat un mediu propice dezvoltrii ideilor
importante. De-a lungul anilor am avut oportunitatea de a ntlni diferite preri
i atitudini pe marginea acestui subiect.
Romulus Bucur
romulus.bucur@siemens.com
Senior .NET developer
@Siemens
18
19
programare
Proiectarea sistemelor robuste cteva repere
tendina de a sacrifica modulele de unit testing este aproape eviden, n cele mai multe situaii. Exist un impuls subcontient de
a considera faptul c funcionalitatea modulelor create este asigurat doar prin faptul c exist cod scris, aspect cruia trebuie
s i acordm mult atenie.
Mediul Agile de dezvoltare solicit adugarea de noi funcionaliti ntr-un ritm foarte alert, fapt care nu permite o
bun planificare i analiz a tuturor implicaiilor, cum permite Waterfall. Astfel introducerea de erori este aproape
inerent. Odat cu adugarea unui pachet de funcionaliti,
numrul de erori va fi destul de greu de controlat i timpul
alocat evenimentelor neprevzute va fi consumat n mare
parte de repararea de erori introduse pe durata dezvoltrii.
fragilitate. Criteriile de formare a arhitecilor sunt foarte complexe. Chiar dac multe companii promoveaz pe astfel de poziii
dezvoltatori cu o experien de mai puin 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
ali factori dect pregtirea pur teoretic. Este important interaciunea cu un numr mare de proiecte pentru a putea nelege
bine concluziile autorilor importani, ct i a raiunii care st la
baza acestora. Maturitatea n proiectarea sistemelor survine n
momentul n care un programator a asistat la dezvoltarea unui
numr consistent de aplicaii astfel nct s poat nelege neajunsurile, dar s fie capabil s defineasc sisteme robuste. Doar o
experien de acest fel poate garanta soliditatea sistemelor create.
20
n ultimii ani, pentru companiile de software devine din ce n ce mai evident c mplinirea cerinelor clientului este esenial. De aceea, procesul de testare a produselor
este orientat tot mai mult n aceast direcie a clientului. Acceptance Test Driven
Development este una dintre practicile eseniale 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, utiliznd 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 interaciunea cu
browser-ul.
21
testare
Acceptance Testing Driven Development utiliznd SpecFlow cu Selenium n C#
acceptare sunt mai ales la aplicaiile complexe semnificativ mai
mici dect costul efecturii manuale frecvente a testelor de regresie i validare, sau dect 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.
22
Cuvntul cheie Given stabilete precondiii sau context pentru scenariu. Aciunea, comportamentul pe care ne concentrm
este marcat prin When. Validarea scenariului este realizat
utiliznd afirmaia Then; aceasta verific de fapt dac lucrurile corecte s-au petrecut n etapa When. And poate fi folosit
n oricare dintre cele trei seciuni i servete drept o frumoas
prescurtare pentru repetarea lui Given, When sau Then. Exist
anumite situaii n care este necesar un pas negativ, i atunci
poate fi utilizat cuvntul cheie But.
Traducerea liniilor n etape este efectuat prin click dreapta
n fiierul de caracteristici i selectarea Generate Step definition.
Un ghid va crea scheletul fiierului pentru etape.
cazurile non-happy-flow.
Revedei, reutilizai i mbuntii-v scenariile i etapele.
Concluzii
Referine
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 Hellesy
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
23
programare
Mircea Gui
Mircea.Gui@Yardi.Com
UI/UX Designer
@ Yardi Romania
24
25
programare
Auditul de User Experience
care nu sunt familiare cu produsul. Pe durata acestor interaciuni
cu produsul vom ine cont de urmtoarele aspecte:
Text expresiv i digerabil - nu prea scurt, nu prea lung,
minimul necesar pentru o bun nelegere a informaiei.
Trebuie s ne punem ntrebarea: l ajut acest text pe utilizator s neleag contextul (ex: titlul paginii) n care
se afl sau aciunea pe care trebuie s o ntreprind?
Elemente de indicare a aciunii (call to action) trebuie redate compact, dar suficient de expresiv pentru
ca utilizatorul s neleag urmarea acestei aciuni.
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 afiare a ecranului.
Coninut 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 atenia utilizatorului de la elementele de indicare a aciunii (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 interaciune. Un alt aspect important este
creterea major a interaciunilor de pe aparatele mobile
(telefoane, tablete). Trebuie s ne asigurm c modelele de navigare sunt compatibile cu aceste aparate
(dimensiuni zone de interaciune, elemente cu hover, etc.).
Rspuns la aciune (feedback status) - sistemul trebuie s menin utilizatorul informat cu privire la ce
se ntmpl: pasul curent n proces, durata de completare, situaia de ncrcare, introducerea corect a datelor.
Gradul de control i de libertate al utilizatorului - prsirea cu uurina a unei stri/ pagini alese din greeal,
26
rept voluntar, eti mereu n cutare 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 hri gratuite a lumii - Free Wiki
World Map.Cum proiectul exist din 2004, acum oamenii caut doar modaliti, unelte de a ajunge la o nou piatr de hotar, iar n
aceast privin, unealta drumurilor lips Missing Roads Tool are un cuvnt de spus.
ESRI.
Observaia 2: Interfaa principal pentru datele Missing Roads este plugin-ul
nostru JOSM. El ofer o funcionalitate de
browsing similar cu ceea ce face instrumentul web, dar cu o vizualizare uor
diferit.
Punctele roii reprezint grupuri de
drumuri lips la zoom mai mic. Cnd v
apropiai cu zoom-ul, putei vedea tronsoanele reale i datele coordonatelor.
3. Instalai i activai plugin-ul
Instalai plugin-ul Missing Roads prin
modalitatea obinuit, prin panoul de
preferine al plugin-ului JOSM. Atunci
cnd este instalat, i dup un restart JOSM
rapid, ar trebui s vedei stratul Missing
Roads i panoul.
Nivelul Missing Roads
Nivelul apare ca i oricare alt nivel
JOSM din list, i bineneles pe harta
principal, indicndu-i grupurile de drumuri care lipsesc de fapt.
Ca i orice alt nivel JOSM, acesta
trebuie s fie activ dac doreti s
interacionezi cu el. Deci, dac dorii
s selectai tronsoane, va fi nevoie s
activai mai nti nivelul Missing Roads.
Missing Roads Panel
n panou, putei interaciona cu
tronsonul/tronsoanele selectate n acel
moment. Dac nu vedei panoul, ar trebui
s l putei face vizibil utiliznd ctrl-F3 /
cmd-F3.
Panoul are trei tab-uri cu
cantiti diferite de informaie despre
27
programare
ntlnirile OSMTime pentru mbuntirea OSM Data
tronsonul selectat. Dac avei mai mult de un tronson selectat,
vei vedea informaii despre ultimul tronson pe care l-ai selectat.
Filtrarea
Similar cu instrumentul web, putei decide ce tronsoane
dorii s vedei n funcie de starea lor i tipul (probabil).
Dac dorii s eliminai toate filtrele, putei face click pe Reset.
Putei filtra numai dup un status sau tip la un moment dat.
Ca i bonus, putei stabili un prag pentru evidena circulaiei.
Aceasta v permite s filtrai tronsoanele care au un numr mai
redus de cltorii peste ele. Putei vedea numrul cltoriilor
pentru tronsonul selectat n tab-ul Tile.
Comentariile
Dac facei click pe un buton de comentariu, se va deschide o
fereastr de dialog Add Comment, care v va permite s adugai
un comentariu la tronsoanele curent selectate pentru ca tovarii
votri cartografi s le vad.
Dac avei mai multe tronsoane selectate (prin utilizarea
butonului Shift n timpul selectrii), comentariul va fi aplicat fiecrui 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 ntlnirii
noastre OSMTime este c n anumite zone exist multe drumuri
lips deja prezente (n concluzie, comunitatea OSM este activ),
28
Drago Andronic
dragos.andronic@telenav.com
Product Manager
@ Telenav
Common misconception:
How many objects does this create?
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
world);
System.in.read();
}
}
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.
30
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 doesnt escape the method it
can be placed on the stack, or effectively have its fields unpacked
onto the stack. This means no object is created on the heap, and
in fact the object header doesnt even have to be created, all its
fields, possibly none of its fields need to be created. In short, just
because you see new String in the code doesnt 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
31
programare
Logging pe memorii externe lecii nvate
Buffer-ul va deveni din ce n ce mai mare. n mod normal,
acest buffer este inut n memorie, deoarece dorii s avei laten
sczut pentru operaiile de scriere.
Vei ncepe s consumai din ce n ce mai mult memorie i
exist o mare probabilitate s sfrii prin a rmne fr memorie, ceea ce nu doar v va bloca componentele sau aplicaia, dar v
va face s pierdei i log-urile curente i datele de audit.
Pierderea acestor date nu v va ajuta prea mult cnd vei
avea nevoie s descoperii de ce componenta sau aplicaia nu
funcioneaz sau de ce log-urile i datele de audit nu s-au pstrat.
Stocare temporar
n momentul n care mecanismul de logging vrea s fac o
expediere, dar detecteaz c memoria ndeprtat nu poate fi
accesat, ar trebui s fie declanat o aciune. O posibilitate ar
fi s avem un mecanism care s ncerce din nou s expedieze
datele, dar:
Pentru ct timp?
Ce ar trebui s facei cu datele extra?
Ce ar trebui s fac?
32
Product
Strategy
Product
Development
Product
Support
www.3pillarglobal.com
Stocare pasiv
n comparaie cu soluiile anterioare, aceasta este o soluie
opional, care ar trebui utilizat numai atunci cnd este crucial s primii log-uri sau date de audit ntr-un interval de timp
anume. Aceast soluie vine cu costuri suplimentare i poate de
asemenea s adauge puin complexitate sistemului care proceseaz i analizeaz urmele log-urilor i auditului.
Aceast soluie nu le exclude pe cele dinainte, deoarece
ambele tipuri de stocare, activ i pasiv, pot s nu funcioneze.
Aceast soluie implic utilizarea a dou tipuri diferite de
stocare: una activ, care este folosit tot timpul i una secundar,
pasiv, care este folosit numai cnd prima nu este disponibil.
n concluzie, v recomand cu cldur s considerai acest caz,
pentru ntregul vostru sistem. Cel puin, scriei n Event Logger
orice eroare sau comportament ciudat al mecanismului vostru
de logging.
33
programare
V prezentm ironwingjs
Andrei Cacio
andrei.cacio@yahoo.com
Web Developer
@ Evozon
Instalare
Ironwing poate fi instalat folosind una
din urmtoarele metode afiate mai jos:
$ npm install ironwing
# sau
$ bower install ironwing
Cum funcioneaz
Ironwing este scris conform noilor standarde EcmaScript i se folosete de unele Adapters
implementri populare precum promises.
Un adapter este un obiect scris dup o
Totodat, aceast librrie este construit pe interfa prestabilit pentru putea fi integrat
34
Proxy objects
Storage
Exemplu de folosin
Prin default, ironwing folosete un storage local (heap). Dup ce librria aduce
de la server una sau mai multe resurse,
aceasta le stocheaz folosind interfaa
storage-ului pentru a putea fi folosite in
viitor. Se poate spune c ironwing cacheuiete resursele. Spre exemplu, dac ar fi
s aducem o resurs folosind urmtoarea
cale de la API: /users/100 vom proceda
astfel:
ironwing(users, 100).then((user)
=> {
console.log(user.attr.name);
});
Disclaimer
Ironwing a fost dezvoltat iniial pentru
proiectul Trubzi n cadrul Evozon Systems
din Cluj-Napoca. Evozon este o companie de software fondat n 2005 de catre
Gabriel Creu si Robert Masic, cu clieni
de pe toate continentele. Evozon dezvolt
att aplicaii la cerere ct i produse proprii precum Trubzi, Calendis, Hoteliqo i
framework-uri folosite de ctre dezvoltatori din lumea ntreag, precum Essence
i Crux.
Concluzie
Ironwing este o librrie care poate fi
uor conectat la un RESTful API iar
programatorul are direct acces la o manipulare CRUD asupra resurselor sale. Noi
am decis s publicm aceast librrie
publicului larg cu sperana 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 funcioneze ironwing.
Ironwing ofer o viziune diferit de a
www.todaysoftmag.ro | nr. 41/noiembrie 2015
35
educaie
e poi face din piese LEGO? a fost provocarea pe care am lansat-o acum cteva
sptmani. Eram curioi s aflm ce se poate realiza din piese LEGO, iar imaginaia i implicarea voastr ne-au surprins foarte plcut, motiv pentru care
v mulumim! Astfel, ni s-a confirmat nc o dat ideea c i adulilor le place s se
joace i c, la rndul lor, pot fi foarte creativi. n sprijinul afirmaiei noastre st ca
Ana-Maria Trifan
anamaria.trifan@
happy-employees.eu
PR & Custumer Care Specialist
@ Azimut Happy Employees
36
V mulumim pentru ajutor i implicare! Ne-ai ajutat s promovm un proiect care nou ne este foarte drag i care sperm s
reueasc s aduc un zmbet i un cadou ct mai multor copii
din Cluj-Napoca. V mulumim i rmne s v inem la curent
cu rezultatele proiectului! Dac vrei s aflai mai multe detalii
despre program sau credei c firma n care lucrai ar fi interesat
s se alture acestei campanii, dai-ne de tire!
37
management
Magnoliu Stan
magnoliu@smart-training.ro
Director
@ Smart HR
38
responsabilitile curente.
De exemplu, v provoc la un exerciiu de imaginaie: varianta
A, cumprturi fr limit (cumperi orice, fr discernmnt,
fr s fie necesar) vs. varianta B, cumprturi ntr-un buget de
200 RON, cu o list scris, situaie n care aleg doar ceea ce este
important sau necesar, fr lucruri inutile. Aa arat viaa noastr: trim fr limite!
Drept consecine ale unui stil de via haotic, fr limite
sunt stresul, lipsa energiei, scderea eficienei, strile de epuizare, nemairmnndu-ne timp pentru sarcinile cu adevrat
importante.
Metoda simplificare: Un exemplu. n cazul n care ne referim la modul n care gestionm n prezent emailurile, trebuie s
ncepem cu evaluarea situaiei actuale. Probabil n acest moment
verificm emailurile foarte des, de 15 - 20 ori pe zi. Cum putei
simplifica?
1. Analizai frecvena / numrul / timpul / cantitatea actual.
Stabilii o limit mai joas, realist, util.
2. Testai limita stabilit, timp de 1 zi / 1 sptmn. Analizai
rezultatul.
3. Dac nu v mulumete, ajustai limita. Testai o sptmn.
4. 4. Continuai pn stabilii valoarea optim. Dezvoltai un
www.todaysoftmag.ro | nr. 41/noiembrie 2015
39
programare
Time Management: Preia controlul!
obicei, o obinuin.
5. Alegei alt aspect pe care dorii s l mbuntii. Repetai
paii anteriori.
40
Open space
41
programare
SoCraTes 2015 Unconference
Unele sesiuni au pornit discuii care s-au ramificat n alte sesiCoada de oameni care ateptau s-i adauge subiectele se
extindea pe ambele pri 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 pn la 18:00 n ambele zile! teras, sau ntr-o sesiune n urmtoarea zi, fie s-a fcut 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 urmtoarea zi.
42
o
Slack pentru chat scris;
o
VNC pentru mprirea 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 viaa privat;
o
Lipsa distragerilor de la birou;
o
Trecerea napoi la viaa privat se face mai rapid.
5) Pair programming la distan.
S-au prezentat unele unelte pentru mbuntirea acestui
proces
Saros plugin Eclipse, prin care doi utilizatori pot lucra
simultan pe acelai cod. O singur resurs n IDE mprit la
un moment printr-un protocol XMPP, astfel nct utilizatorii
mprtesc 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 frecvenei, amplitudinii, tonalitii i a altor setri
ale sunetului, precum i suprapunerea sunetelor, pentru a se
crea piese muzicale complexe.
Limbajul de programare de baz folosit este SuperCollider.
Acesta are ns librrii i pentru alte limbaje, precum Clojure
(librria Overtone) sau JavaScript (librria 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 dependinele sunt
mai uor de controlat i administrat.
8) Open salaries
Cum un startup din Berlin experimenteaz avnd toate
salariile cunoscute de ctre toi angajaii.
Cnd persoane noi intr n firm, salariul lor este stabilit prin baza unui grafic bidimensional, unde o ax este
pentru experiena profesional, iar cealalt ax este pentru
www.todaysoftmag.ro | nr. 41/noiembrie 2015
43
programare
SoCraTes 2015 Unconference
responsabilitile acelei persoane. Toi angajaii pot participa
atunci cnd se decide salariul noilor angajai.
La nceput, majoritatea erau pltii mai puin dect ar fi
trebuit s primeasc pe baza graficului.
n prezent, majoritatea sunt pltii mai mult dect ar trebui
s primeasc pe baza graficului.
ntr-un document Excel se gsesc toate salariile care ar trebui s le primeasc oamenii i toate salariile pe care le primesc.
Factori: experiena, rolul n firm, familia, responsabilitatea, distana fa de locuin.
9) Concuren, robustee i Elixir
Elixir este derivat din Erlang
Cantitatea de MHz care poate fi adugat n procesoare nu
mai poate fi extins cu mult, de ctre noi tehnologii, datorit
principiilor fizice. Aadar, paradigmele de programare ar trebui schimbate.
Funcionalitate bun, robustee, VM de categorie uoar,
foarte bun din punct de vedere al concurenei, asincron.
Un ecosistem care permite utilizarea de design patterns
pentru construirea de sisteme robuste.
mbuntiri n Elixir:
o
Sintax mbuntit fa de Erlang, inspirat din
Ruby,
o
Compatibilitate deplin cu Erlang,
o
intete spre productivitate mbuntit.
Procesele n Elixir sunt econome cu resursele sistemelor folosite.
Codul poate fi schimbat n timpul rulrii aplicaiei (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
workshops
@GrandHotel Italia, Cluj-Napoca
0900-1700
23rd of Nobember
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)
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.
23rd of Nobember
0900-1700
23rd of Nobember
0900-1700
26th of Nobember
FUNCTIONAL THINKING
Java 8
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.
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)
Partners
Supporters
Organizer
sponsori
powered by