Documente Academic
Documente Profesional
Documente Cultură
com
TSM
T O D A Y
S O F T WA R E
MAG A Z I NE
De ce Agile?
Componente vizuale java fx
Tradiia dus mai departe: Bionic Bird
Dosare de Startup: Foody
Java vs. Objective-C
Cum poate o companie de outsourcing
s devin un partener de ncredere
6
Interviu cu Peter Lawrey
Ovidiu Man
8
Tradiia dus mai departe:
Bionic Bird
Laurence Blestel
10
Dosare de startup: Foody
Radu Popovici
12
Comunicarea ntr-un startup
Mircea Vdan
14
How to Web
Startup
Spotlight
Irina Scarlat
17
Share Cluj Jurnal tehnic
Silvia Rusanu
20
Cum poate o companie de
outsourcing s devin
un partener de ncredere
Clin Lupo
22
5 greeli frecvente n
securizarea reelelor windows
Teodor Olteanu
25
Comunicarea cu clientul
Bogdan Murean
28
De ce
Agile?
Alexandru Bolboac
31
Componente vizuale Java FX
Silviu Dumitrescu i Diana Blan
34
Automatizare folosind puppet
Claudiu Demian
36
Cod curat limitri,
gestionarea erorilor i a
obiectelor
Radu Vunvulea
38
Sfaturi strvechi pentru un Product Owner
Sun Tzu Arta rzboiului
Liviu tefni Baiu
41
Java
vs.
Objective-C
Bogdan-Alexandru Vldu
44
Eliminarea diferenelor dintre business i
tehnologie n zona testrii automate
Mdlin Ilie
editorial
Ovidiu Man
ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine
Ovidiu Man
Lista autorilor
Liviu tefni Baiu
Mircea Vdan
www.clujstartups.com
Claudiu Demian
Irina Scarlat
Systems Administrator
@ Yardi
PR Manager
@ How to Web &
TechHub Bucharest
Bogdan-Alexandru Vldu
Mdlin Ilie
liviu.baiu@endava.com
claudiu.demian@yardi.com
Bogdan-Alexandru.Vladut@
msg-systems.com
Java Developer
@ msg systems Romnia
mircea.vadan@gmail.com
irina.scarlat@howtoweb.co
mdlin.ilie@endava.com
Cluj Java Discipline Lead
@ endava
Alexandru Bolboac
Bogdan Murean
Director of Engineering
@ 3Pillar Global
Silvia Rusanu
Clin Lupo
Senior Developer
@ ISDC
Radu Vunvulea
Silviu Dumitrescu
Laurence Blestel
Radu Popovici
Relations presse
@ XTIM
Associate
@ Gemini Solutions Foundry
Teodor Olteanu
Diana Blan
Java developer
@ Accesa
alex.bolboaca@mozaicworks.com
Silvia.Rausanu@isdc.eu
Radu.Vunvulea@iquestgroup.com
laurence@mybionicbird.com
Teodor.Olteanu@betfair.com
bogdan.muresan@3pillarglobal.com
calin.lupo@endava.com
silviu.dumitrescu@accesa.eu
radu.popovici@geminisols.com
Diana.Balan@accesa.eu
interviu
Ovidiu Man
ovidiu.matan@todaysoftmag.com
Editor-in-chief
Today Software Magazine
schimb, este mai bine s foloseti un volum o metod simpl i rapid de stocare de
de lucru real pentru o zi sau o sptmn. date. Not: deoarece harta este pstrat
pe disk, ea este limitat numai de mrin agenda workshop-ului, avem subiec- mea spaiului liber de pe discul tu i nu
tul Low level Java programming, how to de mrimea heap. Cum este off heap, nu
make using Unsafe safer? (Programarea contribuie la timpul de pauz al GC-ului
Java low level,cum s faci utilizarea Unsafe tu, indiferent ct este de mare. De asemes fie mai sigur?), ceea ce sun foarte inte- nea, necesit un timp scurt de ncrcare la
resant. Poi s oferi un indiciu cititorilor restart, cci nu este nevoie s fie ncrcat n
heap. O hart de 1000M poate dura 10ms
notri?
[Peter] Pe scurt, vrei o bibliotec care pentru a fi gata de utilizare.
te ncurajeaz s utilizezi Unsafe ntr-un
n ultimul articol al tu de pe blog,
mod sigur. Noi folosim o bibliotec pe care
o numim Java-Lang, care are un thread (fir) Chronicle Map i Yahoo Cloud Service
sigur, versiuni de 64 bii ale ByteBuffer, Benchmark, propunerea ta era de a utiliza
care v permite accesul la fiierele de valori de 100 bii pentru perechi valori cheie
memorie partajate, ntr-o manier rela- pentru a obine rezultate mai bune. Totui,
tiv sigur. Ceea ce ar trebui s fie i mai menionezi efectul de colectare de deeuri n
interesant este c putei utiliza structuri de teste. Cum putem de asemenea minimiza
date pe care noi le-am construit pe aceast intervenia cumulrilor de deeu n codul
bibliotec pentru a susine irurile, Maps i de performan nalt?
[Peter] n Yahoo Cloud Ser vice
Sets, care au interfee mai simple cu care s
lucrezi. Ambele Queue i Map pot persista Benchmark, deeurile produse devin n
i distribui date ntre procese pe acelai final o constrngere. La aproximativ 3
aparat ntr-un ritm de 30+ M operaii per milioane de citiri/scrieri pe secund, bensecund. Ceea ce ar fi fost imposibil de chmark-ul poate utiliza pn la 90% din
CPU.
fcut n Java pur, n oricare alt mod.
Cel mai bun loc pentru a ncepe s
De exemplu, poi scrie
reduci
reziduul este s rulezi un test reaMap<String, String> map =
list
ntr-un
profiler de memorie. Eu utilizez
ChronicleMapBuilder.of(String.
class, String.class).
YourKit,
dar
mai exist i alte profiler-e
createPersistedTo(file);
comerciale
bune.
Odat ce vezi unde se
// you can now use the map as normal.
genereaz
cea
mai
mare
parte a reziduului,
map.put(hello, world);
le
poi
nlocui
cu
alternative
care creeaz
String s = map.get(hello);
mai puine reziduuri sau deloc. De exem[Peter] Ceea ce e magic n legtur cu plu, utilizai primitive, obiecte simple n
aceasta este c intrarea este vizibil n mai loc de Maps, obiecte mutabile reciclate, sau
puin de o micro-secund la toate JVM- structuri de date off heap.
Cel mai mare beneficiu al reducerii
urile de pe computerul tu i persist. Este
startups
ai mult dect o dron acionat de elice, Pasrea Bionic prima pasre veridic, controlabil prin micarea minii, este
obiectul unei campanii crowdfunding pe Indiegogo. Edwin Van Ruymbeke, director al XTIM, inginer aeronautic i
inventator al Psrii Bionice, prezint ornitopterul care poate zbura cu o agilitate asemntoare psrilor. XTIM a lucrat
timp de 3 ani la aceast pasre extraordinar controlat de smartphone.
Muli ani am lucrat pentru firma bunicului i a tatlui meu, inventatori ai TIM,
bine-cunoscuta pasre care zboar btnd
din aripi, propulsat de o band elastic.
Drept parte a cursurilor mele de inginerie
aeronautic, am studiat zborul psrilor
i am visat s gsesc o cale de a nlocui
banda de cauciuc care propulsa pasrea cu
un motor electric i o baterie, astfel nct s
poat fi dirijat de la distan.
Acest lucru a devenit posibil numai
odat cu apariia noilor telefoane mobile,
care sunt uoare i compacte, ct i cu
complet funcional.
A patra etap ($ 400,000) este de a
controla planarea Psrii Bionice. Aceasta
va fi suficient de stabil n zborul su pentru a nregistra filmulee clare, ceea ce ne
duce la etapa final ($ 800,000): inseria
unei micro-camere de luat vederi n interiorul corpului psrii bionice.
inovatoare care au
fost patentate.
pilor. n
rndunelele!
Ce educaie ai? Cum ai deprins
abilitile pentru a
dezvolta
Pasrea
comparaie cu un sistem cu
elice, noi avem dezavantajul de
a
avea o micare alternativ, care, teoretic,
irosete mult energie numai prin inerie.
Trebuie s accelerezi /opreti/ accelerezi
aripile n fiecare ciclu. O elice doar se
rotete i poate nainta toat puterea sa n
aer. Dup luni ntregi de cercetare, aripile
noastre au atins o eficien apropiat de
cea a elicelor. Cu un motor identic, propulsarea vertical a psrii noastre este
similar cu cea a unui elicopter de jucrie
pe care l putei gsi pe pia.
Bionic?
[Edwin Van Ruymbeke] Eu sunt inginer aeronautic. Asta este ceea ce am studiat
i am absolvit o coal Franuzeasc de
ingineri. Dar n perioada anilor n care am
mbuntit pasrea mecanic, am mers
mult mai departe cu studiile mele dect
era necesar pentru acea jucrie. Am creat
prototipuri diverse, am fcut calcule, programe pentru a studia principiul de btaie
a aripilor. De asemenea, eu cred c a fi
inventator este o stare de spirit pe care o ai
toat viaa. i pui cap la cap toate ideile sau
n videoclip pare c ai controla pasrea gndurile care vor rezulta n final n ceva
prin micarea smartphone-ului care este cu totul nou.
tehnica din spatele acestui lucru? Cum este
De ce o pasre? Toat lumea lucreaz
pasrea controlat mai exact, prin aplicaie
la drone n zilele noastre; de ce ai decis s
sau gesturi?
[Edwin Van Ruymbeke] Noi folo- construieti o pasre, n schimb?
[Edwin Van Ruymbeke] M-am decis
sim senzorul inclus n smartphone-uri.
Senzorul G, senzorul de cmp magnetic. s fac o pasre acum mult vreme. Este
Un algoritm calculeaz unghiul de ncli- proiectul de o via. A nceput n mintea
nare a telefonului i l transform ntr-o mea cnd lucram la pasrea mecanic. La
comand ctre sistemul de direcie al acea vreme, tehnologia motoarelor i a
psrii. Cnd nclini telefonul spre stnga bateriilor nu era suficient de uoar pen(i proporional la unghi), pasrea se va tru a reui asta. Dar ateptam momentul
ntoarce spre stnga (respectiv dreapta). cnd aceasta va deveni posibil, iar acel
Precizia poate fi reglat prin setrile apli- moment a venit n sfrit odat cu batericaiei pentru a se putea adapta simului ile Lipo i motoarele fr miez. Eu nu am
oricui. Aceste gesturi foarte naturale de urmat niciodat trendul. i m mndresc
a controla direcia de zbor a psrii face destul de mult c nu sunt numrul o mie
utilizatorul s simt c interacioneaz care am fcut o dron multi-rotor, i c am
direct cu pasrea, iar, dup puin antrena- dezvoltat ceva unic.
ment, s uite de dispozitivul de control.
Devine mult mai intuitiv dect un emitor standard.
Exist vreo pasre anume care a servit
drept model pentru Pasrea Bionic sau
pentru comportamentul su de zbor?
[Edwin Van Ruymbeke] Forma corpului i proporia dintre lungimea corpului i
anvergura aripii este inspirat de o pasre
rpitoare. Arat ca un mini-vultur. n ceea
ce privete comportamentul su de zbor,
viteza de btaie a aripilor este mai mare, i
ar fi mai apropiat de cea a unui porumbel. Dar cu performana sa foarte bun de
planare, se apropie din nou de o pasre
de prad. Rezultatul este un amestec. Dar
cele care o ndrgesc cel mai mult cnd
zboar pe cer i vin s se joace cu ea sunt
Laurence Blestel
laurence@mybionicbird.com
Relations presse
@ XTIM
startups
Dosare de startup
Foody Prima platform de loializare de restaurante din Romnia
m fcut cunotin cu Iulian si Vlad acum aproape un an cnd ne-au trecut pragul cu o idee de aplicaie destinat platformelor mobile, denumit Foody. Iulian venea la mas cu experiena sa din domeniul HORECA, Vlad, cu expertiza tehnic,
iar Gemini Solutions Foundry cu nvturile culese n urma celor 10 ani de lucru cu startup-uri. Aa c ne-am aezat la
mas i am nceput s ntoarcem acea idee pe toate prile i s o cizelm pentru a defini ct mai bine un MVP ce avea s apar mai
trziu pe pia.
Un MPV (Minimum Viable Product)
este un produs ce conine un set minimal
de funcionaliti cheie ce permit lansarea pe pia ntr-un timp ct mai scurt cu
efort i costuri minime. n urma feedbackului obinut va porni o nou iteraie ce va
rafina produsul dup dorinele pieei, n
acest fel evitndu-se un scenariu n care se
construiete produsul perfect pe care nu l
utilizeaz nimeni.
O alt definiie ar fi: MVP-ul este o
versiune a unui produs ce permite unei
echipe s primeasc o cantitate maxim de
cunotine validate despre clienii si cu un
efort minim depus.
10
Radu Popovici
radu.popovici@geminisols.com
Associate
@ Gemini Solutions Foundry
11
startups
u ocazia unui startup care a implicat ca tem de gndire comunicarea, am ajuns la concluzia c, la fel ca i n alte proiecte
sau organizaii, aceast comunicare e o umbrel care formeaz baza lucrului n echip i a interaciunii umane ntre cofondatori, utilizatori sau ali stakeholder-i. Aa c din aceast perspectiv, mi-am pus ntrebarea c, dac ar fi s ncep un
nou startup, cum a face-o i ce sfaturi mi-a da valorificnd experiena de pn acum? Iar rspunsul l gsii mai jos, n rndurile
ce urmeaz. Am intrat n contact cu lumea startup-urilor acum aproape trei ani i, pn acum, am fost implicat n UseTogether cu
spinoff-ul generat (Momly) i n ZenQ. n acelai timp, am avut ocazia s vorbesc cu ali fondatori de startup-uri din comunitatea din
Cluj/Romnia, dar i cu cei prezeni n cele dou acceleratoare la care am participant (Launchub i TechPeaks).
Comunicarea intern, n echip, ncepe de fapt nainte
de startup. Extrem de rar se ntmpl ca un startup s ajung
departe cu o echip ai crei membri se cunosc de puin timp
sau superficial. Co-fondatorii sunt ca nite frai/surori n care
ncrederea ar trebui s fie extrem de mare. Iar pe lng acest
factor, e nevoie i de o potrivire n mindset i atitudine. Am
ntlnit cazuri n care co-fondatorii lucrau bine mpreun, dar
nu ncercau s se neleag sau s in legtura ca prieteni; cnd
momentele grele au aprut, nu au reuit s le depeasc, tocmai
pentru c nu aveau o legtur mai puternic. Cu ct un startup
are o echip mai mare cu att mai mult se subiaz conexiunile
ntre membrii echipei, din simplul motiv c timpul petrecut
cu una sau dou persoane se mparte, de exemplu la 4 sau la 5
persoane i inevitabil ajunge s fie mai puin, deci dureaz mai
mult ca legturile s prind rdcini. La nceputul unui startup,
cred c accentul cade mai ales pe formarea i ntrirea echipei
i nu pe dezvoltarea produsului. Dac produsul se schimb, nu
12
Mircea Vdan
mircea.vadan@gmail.com
www.clujstartups.com
13
eveniment
ucureti, 30 octombrie 2014. 32 de startup-uri din 10 ri vor participa n luna noiembrie la How to Web Startup Spotlight,
competiie i program de mentorat adresat echipelor din Europa Central i de Est care dezvolt produse tech cu potenial
disruptiv. Acestea vor participa la workshop-uri i sesiuni de mentorat i vor avea ocazia s i prezinte produsele pe scena
principal a How to Web Conference 2014 i s intre astfel n cursa pentru premiile n valoare total de 20.000 USD oferite de IXIA,
partener principal al programului.
Startup-uri early-stage n tehnologie care dezvolt produse n domeniul tehnologiilor purtabile, internet of things, mobile,
medtech sau ecommerce au aplicat la Software-as-a-Service ntregului ecosis- utilizatorii s i monitorizeze consumul
cea de a treia ediie How to Web Startup tem (site-uri web, agenii, companii de energetic i pe furnizorii de energie s gestioneze perioadele de ncrcare crescut a
Spotlight. Participanii au fost selectai de ecommerce sau publicitate);
Axosuits (Romnia): exoschelei uor reelei;
un juriu de specialitate lund n consideEkipa (Serbia): aplicaie care conecrare experiena echipei, dimensiunea pieei de folosit i accesibili ca pre pentru perteaz grupuri de trei prieteni cu alte
i tendinele actuale, validarea utilizatori- soanele cu dizabiliti;
Bethall (Grecia): platform care aduce grupuri de trei prieteni i le faciliteaz
lor, creterea iniial, costul de achiziie al
utilizatorilor, scalabilitatea i fezabilitatea mpreun pasionaii de pariuri sportive i acestora ntlnirile n diferite localuri;
Fastrrr (Ungaria): echipament care
le permite acestora s gseasc i s publice
afacerii.
permite practicanilor de sporturi naupreviziuni;
Bitrise (Ungaria): platform care tice s determine viteza exact pe ap i s
Cine sunt participanii How to Web
automatizeaz
dezvoltarea de aplicaii iOS detecteze cele mai mici diferene de vitez
Startup Spotlight 2014?
cauzate de schimbri de vreme sau de conn
cloud;
Cele 32 de echipe dezvolt produse
Blushr (Romnia): aplicaie mobil diii tehnice;
n domenii precum software, hardware,
fittter (Romnia): aplicaie mobil
internet of things, mobile sau med- care ajut adolescenii cu vrste cuprinse
tech. Aceste echipe provin din Romnia, ntre 13 i 17 ani s descopere care dintre i web n domeniul sntii i fitnessului care conecteaz cltorii de business
Polonia, Grecia, Ungaria, Ucraina, Serbia, prietenii lor i plac.
CloudPress (Romnia): plaform prin cu antrenorii i i ajut s i menin
Muntenegru, Bulgaria, Slovenia i Moldova
i vor participa ntre 19 i 21 noiembrie care designerii pot crea site-uri Wordpress obiceiurile sntoase de via pe durata
la How to Web Startup Spotlight 2014. responsive n manier vizual i le pot deplasrilor;
Geostep (Muntenegru): aplicapublica la final printr-un singur click;
Acestea sunt:
DailyOne (Ungaria): aplicaie de ie care permite crearea de vntori de
3Deva (Romnia): adaptor hardware
care transform dispozitivele mobile n crowdfunding pentru organizaiile comori interactive i ajut utilizatorii s
descopere atracii turistice neobinuite i
nonprofit;
aparate de realitate virtual;
Devicehub (Romnia): platform web impredictibile;
Attensee (Polonia): statistici online de
Latio Inc (Ucraina): kit de dezvoleye-tracking pentru optimizarea conver- care analizeaz datele generate de miliarde
de dispozitive conectate la internet i te tare software personalizabil, care permite
siei pe site-urile web;
dezvoltatorilor i companiilor s integreze
Av an d or C on s u m er Prof i l i ng ajut s iei cele mai bune decizii;
Ecoisme (Ucraina / Polonia): un ser- tehnologiile iBeacon fr a se pierde n
(Romnia): platform deschis de
date ale consumatorilor disponibil ca viciu i un dispozitiv electronic care ajut detalii;
L i f e b o x
(Romnia): Aplicaie
mobil care i
remintete s mprteti fotografiile cu
prietenii care au fost
Young spirit
alturi de tine la un
Mature organization
eveniment;
A shared vision
Marketizator
( R om n i a ) :
Join our journey!
Platform 3 n 1 pentru optimizarea ratei
de conversie pe siteurile de ecommerce;
www.fortech.ro
O b l i c o
(Romnia): aplicaie
14
vor avea ocazia s formeze conexiuni valoroase cu personaliti cheie din industrie
la nivel global.
Startup Spotlight 2014 se desfoar n
paralel cu How to Web Conference 2014,
cel mai important eveniment dedicat inovaiei, tehnologiei i antreprenoriatului din
Europa de Sud-Est. Cea de a cincea ediie
internaional a How to Web reprezint un
nou nceput: evenimentul se maturizeaz
i propune un format mai complex care
trateaz n profunzime subiecte specifice.
Astfel, pe scena principal se va discuta
despre tendinele n tehnologie i antreprenoriat, n timp ce track-urile specializate
despre product management, dezvoltarea
de jocuri i investiiile de tip angel vor oferi
unor categorii specifice de audien ansa
de a acumula cunotine i competene
relevante pentru domeniile lor de interes.
Bilete Early Bird sunt disponibile online
pe site-ul conferinei howtoweb.co/tickets
pn joi, 13 noiembrie.
Irina Scarlat
irina.scarlat@howtoweb.co
PR Manager
@ How to Web & TechHub Bucharest
15
comuniti
Comuniti IT
oiembrie este singura lun din acest an n care v-am recomandat s participai la toate evenimentele din calendarul nostru.
Conferine importante au loc precum: Microsoft Summit, How To Web 2014, MOBOS, OSOM, DefCamp i bineneles
evenimentul anual organizat de Today Software Magazine: Cluj IT Days 2014. V invitm s participai la ele !
Calendar
Noiembrie 12 (Cluj)
Lansarea numrului 29 al Today Software Magazine
www.todaysoftmag.ro
Noiembrie 12-13 (Bucureti)
Microsoft Summit 2014
www.mssummit.ro
Noiembrie 14-16 (Cluj)
3 Day Startup Cluj
cluj.3daystartup.org
Noiembrie 19 (Cluj)
4th BigData/DataScience
meetup.com/Big-Data-Data-Science-Meetup-ClujNapoca/events/216156792
Noiembrie 20-21 (Bucureti)
How To Web 2014 - recomandat de TSM
2014.howtoweb.co
Noiembrie 20-21 (Cluj)
MobOS Conference
romobos.com
Noiembrie 23 (Cluj)
#15 PM Meetup - Monitoring & Controlling Process
meetup.com/PMI-Romania-Cluj-Napoca-Project
-Management-Meetup-Group/events/213993162/
Noiembrie 24 (Cluj)
OSOM Open Source Open Mind
osom.ro
Tabra de testare
Comunitate format din testeri i ali profesioniti din industria
IT care, n cadrul unor ntlniri informale lunare, mprtesc
din cunotinele proprii i nva din experienele profesionale ale
celorlali membri.
Website: www.tabaradetestare.ro
Data nfiinrii: 15.01.2012/Nr. Membri: 1243/ Nr. Evenimente: 107
16
Noiembrie 24 (Cluj)
Workshop-urile Cluj IT Days 2014
www.itdays.ro
Noiembrie 25-26 (Cluj)
Cluj IT Days - recomandat de TSM
itdays.ro
Noiembrie 28-29 (Bucureti)
DefCamp 2014
defcamp.ro
concurs
programare
m auzit prima data de Share Cluj cnd nc era n stadiul de idee, cnd echipa nc
lucra s clarifice scopul proiectului, se gndea cum s implice mai mult lume
i cum s pun Clujul pe harta lumii. Iniial, rolul meu n proiect era de a fi un
ambasador al Clujului, ns participnd la o edin de proiect i avnd pe masa de discuie
partea tehnic a proiectului, am devenit imediat un membru al echipei.
Silvia Rusanu
Silvia.Rausanu@isdc.eu
Senior Developer
@ ISDC
Prima soluie
Soluia adevrat
17
programare
Share Cluj - Jurnal tehnic
Implementarea
18
Lansarea
19
management
rima provocare a oricrei companii de outsourcing este gsirea de noi clieni. Odat (i dac) acest lucru se ntmpl presiunea
se mut spre a menine i dezvolta relaia. Ca s fim sinceri cu noi nsine, la nceputul relaiei cu noul client eti departe de a
fi considerat partener (chiar mai departe de a fi considerat partener de ncredere). Eti considerat un simplu furnizor i este
normal i de ateptat ca la nceput sa existe o oarecare doz de scepticism n ceea ce te privete. Dar relaiile pot evolua i ar putea
trece prin stagiile descrise n rndurile de mai jos. Nu e un model pe care l-am gndit eu i nu a dori s mi-l asum (sursa: www.
trainingindustry.com), ns mi se pare a fi valid.
Furnizor aprobat
poi dezvolta relaia cu clienii ti? Care este drumul de la furniAi un model de tarifare bun i o reputaie (destul de) bun. zor aprobat la partener de ncredere? Privind napoi la relaia de
Felicitri! Ai ajuns pe lista furnizorilor. Dar nc nu este perceput ncredere dezvoltat cu furnizorii ti, poi identifica unele aciuni
care te-au adus ntr-o astfel de relaie. Sunt sigur c exist mai
ca avnd un avantaj competitiv fa de ceilali furnizori.
multe modaliti de a deveni un partener de ncredere, dar a
vrea s i spun propunerea mea, distilat din experiena Endava
Furnizor preferat
Eti vzut ca fiind mai eficient i primeti mai mult de munc i proprie n relaiile cu clienii si furnizorii.
dect ceilali furnizori de pe lista iniial. Eti acum ntr-un club
mai select dar eti nc implicat doar n execuie. Doar c faci mai Premisele
mult dect ceilali furnizori.
Pentru a ajunge s fii un partener de ncredere exist o serie
de premise. Acestea sunt de asemenea puncte care v-ar obine
contractul n primul rnd. Nu voi insista foarte mult pe acestea,
Consultant
Aduci valoare produsului clientului tu i eti perceput ca un deoarece acestea pot fi considerate ca fiind de bun sim, ns
lider de opinie cnd vine vorba de tehnologie. Lucrezi mpreun merit menionate. Lucrurile care te pun pe lista de furnizori i
care sunt primul pas n a deveni un partener de ncredere sunt:
cu clientul i i sftuieti de CUM s lucreze.
Calitatea serviciilor livreaz mai mult i mai bine dect
se
ateapt clientul. Sau cel puin livreaz ce ai promis.
Contribuitor strategic
Preul - dac nu te poi ncadra n bugetul clienilor ti nu
Stai la masa de lucru cu privire la DE CE, care problemele de
vei primi ansa de a dovedi ct eti de bun.
afaceri pe termen mai lung. n acest moment te-ai mutat n zona
Capabilitile poi livra tot ce are nevoie clientul tu? Sau
de parteneriat i i ajui clientul n o gam mai larg de provocri
i poi construi capacitile suficient de rapid pentru a satisface
cu care se confrunt.
cererea noului tu client?
Partener de ncredere
20
diverse
Implic-te devreme i n mod constant n
business pentru a nelege care e direcia
business-ului i n mod constant revizuii
ateptrile voastre.
Ajut-l s creasc
i cunoti clientul i tii ce vrei s
realizai mpreun. Dar cum poi tu (i
organizaia ta) s i ajui clientul s se dezvolte i s devin mai de succes? Asigur-te
c vei crea soluii de ctig reciproc, c vei
lucra i nva mpreun. Nu te rezuma
n a-i vinde doar produsul sau serviciul.
Creeaz valoare i cretere pentru i pentru
clientul tu!
de lucru constant.
Acum i cunoti clientul, i nelegi
nevoile i i tii ce vrea s realizeze. Poi
oferi calitate, servicii competitive i i poi
ajuta clientul n a dezvolta n continuare
produsul su. Ai artat c vrei s contribui,
c nu i e team s pui ntrebrile dificile
i eti interesat de succesul lor, nu numai
ctigul tu. Clientul tu are ncredere n
tine s fii sincer atunci cnd i cere prerea i are ncredere n opinia ta, deoarece ai
dovedit a fi un bun cunosctor al domeniului. Eti transparent cu munca ta i ai reuit
s te conectezi cu clientul tu ca individ.
Acum eti un partener de ncredere.
n cele din urm, nu te atepta s
dezvoli o relaie de partener de ncredere
cu toate conturile i clienii ti. Motivele
i factorii sunt destule i pot varia de la
stabilirea preurilor, calitatea perceput a
serviciului, probleme de comunicare sau
pur i simplu nu facei clic.
i ine minte c nu este vorba doar despre servicii de calitate, capabiliti, preuri
i alte lucruri pe care le-ar putea crede ca
fiind simple pentru a asigura o relaie de
lung durat. Acestea sunt importante,
dar pentru a deveni un partener de ncredere ai nevoie de mai mult. Ai nevoie s te
concentrezi pe nevoile clientului, de comunicare i transparen.
Clin Lupo
calin.lupo@endava.com
Client Engagement Manager
@ Endava
21
securitate
programare
n acest articol voi descrie cteva dintre greelile frecvente care pot duce la probleme
de securitate grave i voi prezenta i unele soluii care ne permit s ne aprm mpotriva acestor tipuri de ameninri. Dac suntei interesai de securitatea sistemelor
de operare Windows, atunci acest articol este pentru voi!
Teodor Olteanu
Teodor.Olteanu@betfair.com
End User Computing Lead
@ Betfair
p aro l a : Mi c k e y Mi nni e P l u t o Hu e y
LouieDeweyDonald GoofySacramento.
Cnd a fost ntrebat de ce folosete o
parol att de lung, el ddu ochii peste
cap spunnd: Hei! IT-ul mi-a spus c
parola trebuie s aib cel puin 8 caractere
(n.r. n englez character nseamn i personaj) i s includ cel puin o capital (n.r.
capital n englez are sens dublu: majuscul sau capital.)
Aceasta este o glum, desigur. Dar realitatea este c o parol lung i complicat,
nu v protejeaz n toate situaiile!
Un studiu realizat de BitDefender n
2010 arat c 75% dintre persoane folosesc aceeai parol pentru site-urile de
social media ct i pentru adresele lor de
e-mail. Cazuri de site-uri importante ca
Facebook, LinkedIn, Twiter i altele, care
au fost sparte i parolele a mii de utilizatori furate sunt bine cunoscute. Deci, dac
un hacker are parola de Facebook a unui
angajat de-al vostru are cel mai probabil i
acces la csua acestuia de e-mail i astfel la
date confideniale din companiei voastre.
De fiecare dat cnd introducei o
parol pentru a v autentifica, exist
cel puin un mecanism care trebuie s
cunoasc acea parol pentru a o folosi mai
trziu cu scopul de a v permite accesul.
Atunci cnd salvm o parol n Windows
Greeala 1: Nenelegerea parolelor
Un a u d i t r e c e n t , a d e s c o p e - acesta este stocat n SAM (Security
rit c un angajat utiliza urmtoarea Accounts Manager) sau n baza de date
22
programare
Ntds.dit din Active Directory. Dar, faptul c sistemul de operare poate reutiliza
parola nseamn totodat i c alii o pot
decripta!
n multe cazuri, atacatorii nici nu trebuie s tie parola ci pot folosi tehnica
pass the hash pentru a rula cod maliios
pe calculatoarele voastre, autentificndu-se
folosind hash-ul parolei. Dar recent au fost
dezvoltate utilitare avansate, care permit
decriptarea hash-urilor care sunt stocate
n memorie.
Mimikatz este o aplicaie creat de
Benjamin Delpy (aka gentilkiwi), care
extrage parole n format text din WDigest
(un DLL adugat n Windows XP, care
este folosit pentru a autentifica utilizatori
prin cu ajutorul HTTP Digest) interfaat
prin LSASS (Local Security Authority
Subsystem Service) . Deci, dac v-ai
conectat vreodat la un sistem folosind
un cont de administrator de domeniu i
cineva a rulat Mimikatz pe acel sistem
atunci, practic, ntreaga voastr infrastructur este n minile atacatorului.
Nu exist o metod unic de aprare
mpotriva acestei tehnici.Drept urmare
practicile standard de aprare trebuie
aplicate n acest caz - de exemplu, utilizarea de firewall-uri, sisteme de intrusion
detection, autentificarea 802.1x, IPSec,
software-ul antivirus, criptare complet
de disc, reducerea numrului de persoane
cu privilegii sporite, aplicarea proactiv de
patch-uri de securitate etc. .
Blocarea Windows-ului de a mai stoca
parolele in cache poate limita atacatorii s
mai obin hash-uri din memorie, ceea ce
nseamn, de obicei, c acel cont int trebuie s fie conectat la main atunci cnd
atacul este executat, pentru ca atacatorul
23
securitate
5 greeli frecvente n securizarea reelelor windows
regul: nu permite trafic pe care nu-l
recunoti. De asemenea, trebuie s fii
contieni de faptul c cele mai multe dintre protocoale conin spaiu pentru date n
ele. De exemplu, muli administratori se
concentreaz asupra monitorizrii reelei
pe protocoale TCP i UDP. ICMP este
adesea trecut cu vederea, dar este aproape
la fel de viabil pentru transferul de date.
Transferul de date prin intermediul ICMP
este posibil, dar nimeni nu monitorizeaz
traficul ICMP. Voi permitei ping-uri din
afara reelei tale?
O alt ameninare major este instalarea de coninut piratat, care de cele mai
multe ori poate avea malware ataat. V
recomand s pstrai locaia unde avei
kiturile de instalare pentru aplicaiile pe
care le utilizai intern la zi cu ultimele
versiuni i s stocai checksum-urile lor
ntr-un alt loc astfel nct s putei valida
kiturile de instalare ca fiind autentice cnd
este nevoie. Fiierele de instalare injectate
cu malware nu sunt neaprat recunoscute
de antivirus, iar injectarea fiierului cu
malware poate avea loc chiar nainte de
a descrca fiierul undeva pe reea ntre
voi i site-ul de unde l descrcai. Aadar
trebuie s fii ateni de unde descrcai
kiturile de instalare.
Se recomand s implementai o
soluie de inventariere software, astfel nct
s putei afla n orice moment ce software
este instalat n reeaua dumneavoastr.
24
programare
management
Bogdan Murean
bogdan.muresan@3pillarglobal.com
Director of Engineering
@ 3Pillar Global
eoria spune c 90% din munca unui manager de proiect este comunicare. Ceea
ce este cu adevrat important este faptul c pentru un manager de proiect comunicarea se afl peste tot n jurul lui. Ceea ce nu remarcm noi ntotdeauna este c
cizelarea abilitilor noastre de comunicare ncepe mult mai devreme i este parte integrant a mediului nostru de lucru i a vieii noastre mai mult dect ne dm seama n mod
contient. Dac ne referim strict la locul de munc, comunicarea se desfoar n toate
direciile i are loc ntre persoane cu diferite abiliti de comunicare i cu diferite specializri cum ar fi: developer-i, testeri, administratori, persoanele de pe resurse umane. Dintre
toate aceste posibile conexiuni cred c cel mai sensibil canal de comunicare este cel cu
clientul i asupra acestuia mi-am propus s m focalizez n acest articol.
n contextul actual al dezvoltrii de
software, cnd trendul este dat de metodologiile Agile, ntreaga echip este expus
interaciunii cu clientul. Acest fapt deschide
un canal de comunicare destul de complex
ntre oamenii ce au un background tehnic
i oamenii orientai nspre afaceri. Dac
pentru un manager de proiect stpnirea
acestui canal de comunicare este obligatorie
i face parte din munca de zi cu zi, oamenii orientai spre tehnic ar putea ntmpina
dificulti n construirea acestei puni ce
tranziteaz limbajul tehnic spre limbajul
cotidian. Cnd este important s livrm un
mesaj, trebuie s avem n vedere, printre
altele, dou aspecte foarte importante:
Valoarea coninutului: n primul
rnd, dac vrem s demonstrm ceva,
dac vrem s ne facem nelei, trebuie s
scoatem n eviden foarte clar valoarea
adus de ideea noastr. n consecin,
primul aspect important este s putem
explica valoarea coninutului.
Coninutul: n al doilea rnd, trebuie
s punem pe mas argumentele corecte
pentru a explica ideea n sine. Orict
de bun ar fi ideea, n marea majoritate
a cazurilor nu se explic de la sine. Cu
att mai mult, dac avem de-a face cu o
25
management
Comunicarea cu clientul - Un joc mai greu dect ne imaginm
versiune. Bineneles c va trebui fcut
un studiu, s-ar putea s fie nevoie chiar
de un prototip i n final vor rezulta tone
de argumente care mai de care mai valide
ce vor susine aceast necesitate. Totui
beneficiile acestei schimbri vor fi explicate total diferit celor implicai (sau doar
interesai) n aceast schimbare. Echipa
de implementare va discuta despre faptul c noua versiune va permite o mai
uoar integrare cu modulul de securitate;
va discuta despre uurina cu care noul
framework poate fi personalizat n funcie
de nevoile curente i va discuta despre
suportul pe care noul framework l ofer
n mod nativ pentru scrierea unit testelor,
suport inexistent n versiunea ce se vrea a fi
nlocuit. n schimb cnd echipa va merge
n faa clientului lucrurile se complic. Ei
trebuie s tie ct timp va lua schimbarea i ci dintre membrii echipei vor fi
implicai, iar aceast combinaie va da costul operaiunii. Odat puse crile pe mas,
echipa are nenumrate variante pentru
a motiva beneficiile pe care schimbareai.
Unit testele vor asigura o stabilitate mai
mare a aplicaiei, deci vor reduce costurile
de ntreinere. n acelai timp cu noua versiune de framework implementarea noilor
funcionaliti este mult mai rapid astfel
nct dup cteva iteraii timpul investit n
upgrade va fi amortizat. Echipa nu va avea
ntotdeauna ctig de cauz, dar nelegnd
ce aduce valoare clientului cu siguran va
avea mai multe anse de reuit. i dup
multe discuii ntre membrii echipei, ntre
echip i client, ntr-o pauz de igar,
cineva de la resurse umane se va apropia
conspirativ de managerul de proiect i va
ntreba: Am auzit c v-ai ncins la discuii
nu glum e totul n regul?; Da, vrem
Cred cu convingere c cel mai uor e pentru o persoan tehnic s gseasc exemple
care s aib legtur cu viaa de zi cu zi.
Ceva ce toat lumea nelege, ceva la care
se pot raporta cu toii. Pentru c discuiile
cu clienii sunt aproape ntotdeauna mici
vnzri , trebuie s ne alegem cuvintele
i analogiile cu mare grij. Haidei s
ncercm iar un mic joc imaginativ.S ne
imaginm c trebuie s explicm avantajele testrii continue de-a lungul unei
iteraii cuiva care nu tie nimic despre
Agile i Scrum. Vom ncepem s povestim
despre integrarea rapid a testrii i a fixrii erorilor n procesul de dezvoltare, vom
continua s povestim despre reducerea
numrului de erori i vom termina prin
a povesti despre o aplicaie mai stabil la
sfritul fiecrui sprint. Clientul va asculta
cu interes, va sorbi fiecare explicaie mai
mult dect valid a cum se va desfura
procesul i n acelai timp n mintea lui va
avea loc urmtorul monolog: Sprint
sprint unde am auzit eu de sprinturi?
Usain Bolt e super tare la sprinturi .
Va zmbi la propria-i glum i noi vom
pleca cu convingerea c l-am fcut s ne
mnnce din palm. Peste dou zile vom
avea aceeai discuie. O alt abordare ar
fi s facem o analogie cu gtitul. Nu spun
asta doar pentru c sunt gurmand. Toat
lumea tie, mai mult sau mai puin, cum se
pregtete mncarea. S comparm planificarea unei noi versiuni cu un plan de gtit
pe apte zile. Fiecare zi va fi o iteraie i n
fiecare zi va trebui s facem ceva diferit de
mncare. Testarea i fixarea erorilor o vom
asemna cu splatul vaselor. Dac nu splm vasele n fiecare zi, buctria s-ar putea
s fie plin de vase murdare nc din ziua
a cincea. Iar la sfritul zilei a aptea cnd
Our core competencies include:
Product
Strategy
www.3pillarglobal.com
26
Product
Development
Product
Support
(pe vremea cnd pointer-ul era cea mai tare devine mult mai uor de jucat, mai apetichestie inventat dup roat) n momen- sant i chiar mai distractiv.
tul de fa am cam pierdut trenul i mi-a
fost destul de greu s prind explicaiile.
Gndii-v cam ce simte o persoan care
chiar n-are nici o treab cu programarea
cnd aude aceti termeni. n cazul meu,
unul dintre colegi a realizat c nc atept
explicaii i mai n glum, mai n serios a
nceput sa-mi explice ca i unui copil mic:
,,tii , Bogdan, fiierele acestea sunt toate
puse la un loc ntr-unul singur. Apoi, un
mic vrjitor din calculator (unul bun, nu
unul ru) face fiierul acela mic de tot
astfel nct s ajung mai repede unde e
nevoie de el. Aadar, cteodat este nevoie
ca un om tehnic s explice ceea ce face ca
i cum s-ar adresa unui copil.
tim c este n natura noastr, n codul
nostru genetic, s acionm ntotdeauna
n acele circumstane n care ne simim
confortabili. Dac toat ziua ne nvrtim
ntr-un anturaj ce vorbete aceeai limb
ca i noi i povestim fr restricii, ne va
fi foarte greu s ne schimbm modul de a
ne pregti argumentele n acea jumtate de
or pe zi n care povestim cu clientul. Acest
lucru vine de obicei cu experiena, cu mult
munc dar i cu o mentalitate adecvat.
E important de menionat c din cauza
evoluiei n domeniu, din cauza metodologiilor Agile care ncurajeaz interaciunea
continu ntre oamenii tehnici i client
(mai ales n lumea outsourcing-ului, a
exportului de servicii) este de dorit s fim
mcar contieni de acest mod de a gndi.
Contextul n care ne manifestm, n care
au loc discuiile ne oblig la utilizarea unui
anumit tip de limbaj. Dar o dat ce tim
s jonglm cu cuvintele, cu situaiile, jocul
27
programare
De ce Agile?
Cunoaterea adevrat const n a-i ti gradul de ignoran.
Confucius
Alexandru Bolboac
alex.bolboaca@mozaicworks.com
Agile Coach and Trainer, with a
focus on technical practices
@Mozaic Works
28
programare
este benefic pentru dezvoltarea de software.
2. Punctele de control ncetinesc producia.
Eram la acel moment un dezvoltator de software interesat de
cum s execui n mod repetitiv proiecte de succes. CMMI avea
potenial, dar n acelai timp putea s se transforme cu uurin
ntr-un proces greu de ntreinut care nu asigura succesul.
Confuzie
La momentul respectiv din cariera mea, am nceput s caut
orice tip de cunoatere care ar putea ajuta. Cum fac alte companii
dezvoltare de software? Exist principii fundamentale de urmat
pentru a crea software de nalt calitate n timp ce menii clienii
fericii? Care sunt ingredientele succesului?
Am nceput prin a citi cri i articole pe tema asta.
Lucrrile lui Fred Brooks _The Mythical Man Month_
i _No silver bullet_ mi-au deschis ochii ctre ceva ce nu
contientizasem nainte: dezvoltarea de software este diferit de
celelalte industrii. Pn la urm, s adaugi oameni la un proiect
de construcie ce este n ntrziere va ajuta proiectul s se termine mai repede. Nu i n cazul dezvoltrii de software: s adaugi
oameni unui proiect deja ntrziat n mod normal l va ntrzia
i mai mult (lucru tiut sub forma de legea lui Brooks). Mai
interesant, legea lui Brooks poate uneori fi evitat. Motivul pentru
care proiectul este livrat mai trziu este c oamenii care se altur
proiectului trebuie nti s nvee. Dar, dac sunt alei astfel nct
s aib deja cunotinele necesare, vor ajuta n loc s ncetineasc
livrarea.
Cartea lui Steve McConnel, Software Estimation:
Demystifying the Black Art a fost o alt lectur interesant.
Modul prin care fceam estimri la vremea respectiv era ghicitul. CMMI m expusese deja la metode de estimare, dar cartea
mi-a oferit o mai bun nelegere. Ca inginer, am gsit tentante i
cu mult sens ideile de a profita de statistici i de a face peer review
pentru a mbunti estimrile.
Pe de alt parte dezvoltarea de software prea c nu se nelege
bine cu statistica. Un lucru pe care l-am nvat din lecturile mele
(m tem c nu-mi amintesc sursa exact) a fost c bug-urile nu
erau distribuite uniform n cod. n mod ciudat, nu sunt: ele tind
s se grupeze. O prim consecin este c zonele n care un bug
este gsit ar trebui verificate cu mai mult grij pentru alte buguri. Totui, dac distribuia normal nu se aplic la localizarea
bug-urilor n cod merit s ne ntrebm: s-ar aplica distribuia
normal la estimri?
Crile i articolele au fost foarte interesante, dar tot nu am
ajuns la concluziile cutate despre cum s faci dezvoltare de software de succes. Ce ar ajuta: mai mult proces, estimri mai precise,
mai multe practici, programatori mai buni?
Nimeni nu prea s tie.
Atunci m-am decis s m mut ntr-o companie mic de dezvoltare de produs, s m implic ntr-o comunitate agile n apte
orae romneti i n mod treptat s m ndrept ctre training i
coaching agile, lean i tehnic.
29
programare
De ce Agile?
dintre semnatarii Manifestului Agile i co-autor al uneia dintre
primele cri despre Scrum. Am simit c am cochetat cu ideea
nainte, fr a pune ns degetul pe ea.
Ca s fim mai exaci:
Software-ul este cunoatere codat i foarte precis.
Codat, din moment ce este scris n cod. Precis, deoarece
computerele nu pot lucra cu ambiguitate.
Aceast declaraie simpl are impact n fiecare aspect al dezvoltrii de software. Iat cteva aspecte pe care le-am extras:
Dezvoltarea de software const n traducerea cerinelor
ambigue n cod precis.
Ceea ce este echivalent cu a construi cunotine.
Cnd construieti cunotine, sunt de ajutor oricte creierul
poi folosi. De aceea, planificarea n echipa i programare n
pereche pot fi foarte eficiente.
Calitatea rezultatului i eficiena procesului este influenat
de cte pierderi are transferul de cunotine. Cel mai bun transfer de cunotine se face prin comunicare fa-n-fa, din cauza
feedback-ului instant i de nalt calitate (poziia corpului, gesturile feei i minilor, micarea ochilor, inflexiunile vocale
etc.). Documentele nu ofer niciun feedback-ul cititorilor; va
trebui s discutai cu autorul pentru a le nelege mai bine. (A
nu se nelege c documentaia nu este de ajutor pe termen
lung.)
Oamenii au tendina de a subestima precizia necesar.
Feedback-ul continuu este singura modalitate de a se muta
asimptotic ctre ea.
Un numr foarte mare de decizii este necesar pentru a
obine o cunoatere exact. Aceste decizii sunt mprite ntre
client i echipa de dezvoltare. Echipa are nevoie de ntregul
context, astfel nct deciziile lor s se potriveasc cu nevoile
clientului.
Structurarea cunoaterii construite este un impediment cu
care nc ne luptm n industria software.
Programatorii au nevoie de o minte special, pregtit s
transforme cerinele ambigue n cod precis.
nvarea continu este inclus n dezvoltarea de software.
Pn la urm, nvarea nu este altceva dect construirea de
cunotine.
De ce Agile?
30
programare
programare
abelele reprezint unul dintre cele mai puternice instrumente folosite n JavaFX pentru afiarea datelor, suportnd urmtoarele aciuni:
Silviu Dumitrescu
silviu.dumitrescu@accesa.eu
Java Line Manager
@ Accesa
Diana Blan
Diana.Balan@accesa.eu
Java developer
@ Accesa
31
programare
Componente vizuale Java FX
proprieti:
tableColumn: instana TableColumn din spatele
TableCell;
tableView, TableView-ul asociat cu TableCell;
tableRow, TableRow-ul n care TableCell-ul este
plasat;
Pentru a identifica intersecia, TableCell conine o proprietate de index.
Cell<T> este utilizat pentru o celul individual ntr-un
TableView. Fiecare celul este asociat unui singur item de
date, reprezentat de proprietatea item. O celul este responsabil
de renderizarea itemului care rezid n el, care este de obicei un
text. O celul permite customizarea printr-un cell factory.
API-ul Cell este utilizat pentru virtualizarea controalelor
precum ListView, TreeView i TableView. Un Cell
este un control etichetat, folosit pentru a renderiza o unitate ntrunul dintre controalele mai sus amintite. Cell este responsabil
att pentru afiare ct i pentru editarea item-ului. Pe lng text,
Cell poate fi reprezentat de alte controale precum CheckBox,
ChoiceBox sau orice Node precum HBox, GridPane
sau chiar Rectangle. Deoarece ListView, TreeView,
TableView precum i alte asemenea controale pot fi folosite
pentru afiarea unei cantiti mari de date, nu este practic s
crem un Cell pentru fiecare item din control. Fiecare celul
este reutilizat, ceea ce face acest control virtualizat.
Deoarece Cell este un Contro,el are n spate un model.
Skin-ul su este responsabil pentru definirea look and layoutului, n timp ce Behaviour este responsabil pentru manipularea
evenimentelor i utilizarea acelor informaii continute pentru a
modifica starea. Cell este stilizat prin CSS ca orice alt control.
Pentru a specializa o celul utilizat pentru un TableView
trebuie s furnizm o implementare a funciei callback cellFactory() definit pe TableView. Cell factory este apelat
de platform ori de cte ori o nou celul trebuie s fie creat.
Implementarea unui cell factory este responsabil pentru crearea
unei instante Cell i pentru configurarea necesar pentru ca
Cell s reacioneze la schimbrile strii sale.
Cell factory este responsabil de virtualizarea skin-urilor de
container pentru a renderiza reprezentarea predefinit a unui
item Cell. Spre exemplu, ntr-un ListView convertete itemii la un String si apeleaz Labeled.setText(String).
Dac dorim s specializm celula utilizat n ListView, trebuie s furnizm implementarea funciei callback definit pe
ListView.
Cell factory este apelat de platform ori de cte ori determin
c o celula trebuie s fie creat. Spre exemplu, un ListView are
10 milioane de itemi. Crearea tuturor celor 10 milioane este foarte
costisitoare. Aadar, implementarea skin-ului ListView va crea
doar attea celule ct s umple spaiul vizual. Dac se redimensioneaz spaiul vizual, sistemul va determina dac este nevoie
de crearea altor celule. n acest caz va apela cellFactory()
(dac exist vreuna) pentru a crea o implementare Cell. Dac
nu este furnizat niciuna implementarea predefinit este utilizat.
ObservableList este modelul de date care st la baza lui
TableView. O instan TableView este definit astfel:
TableView<Person> table = new TableView<>();
ObservableList<Person> teamMembers =
getTeamMembers();
table.setItems(teamMembers);
O dat setat lista de itemi, TableView este automat updatat ori de cte ori lista teamMembers se modific. Dac lista
de itemi este disponibil nainte ca TableView s fie instaniat,
este posibil s o trimitem direct n constructor.
Ceea ce mai trebuie s facem este s mprim datele coninute
n model n una sau mai multe instane TableColumn. Pentru
a crea un TableView cu dou coloane, ce afieaz firstName
i l a s t N a m e vom
folosi codul:
public class DataTable extends
Application {
TableView<Person>
table = new TableView<>();
BorderPane root
= new BorderPane();
VBox mainBox =
new VBox(); //
Container for content
final
ObservableList<Person> teamMembers =
FXCollections.observableArrayList(
new Person(Ion, Tech),
new Person(Petre,Petrescu),
new Person(Doru, Dorescu),
new Person(Vasile, Vasilescu));
@Override
public void init() {
Label centerLbl = new Label(Persons);
centerLbl.setStyle(-fx-font-size:16pt;
-fx-font-weight:bold;);
table.setItems(teamMembers);
TableColumn<Person, String> firstNameCol = new TableColumn<Person, String>(First Name);
firstNameCol.setCellValueFactory(
new PropertyValueFactory<Person,String>(firstName));
TableColumn<Person, String> lastNameCol =
new TableColumn<Person, String>(Last Name);
lastNameCol.setCellValueFactory(
new PropertyValueFactory<Person,String>
(lastName));
table.getColumns().setAll(firstNameCol, lastNameCol);
mainBox.getChildren().add(centerLbl);
mainBox.getChildren().add(table);
32
programare
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle(Data Table);
root.setCenter(mainBox);
primaryStage.setScene(new Scene(root, 400, 300));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Prin aceasta
am d e f i n it c om plet proprietile
minime cerute pentru a crea o instan
TableView. Nici
o alt proprietate a
clasei Person nu
va fi afiat pentru c
nu avem definite alte
TableColumn.
Implementarea
unui cell fac tor y
este responsabil nu
doar pentru crearea instanei Cell,
dar i pentru configurarea acelei
celule. n exemplul
urmtor am creat
o clas Callback
ce are ca atribute
instane ale claselor
TextAlignment
i F o r m a t cu
parametrii:
S, tipul generic
al lui TableView;
T, tipul coninutului n toate celulele lui TableColumn
public class FormattedTableCellFactory<S, T>
implements Callback<TableColumn<S, T>,
TableCell<S, T>> {
private TextAlignment alignment;
private Format format;
public TextAlignment getAlignment() {
return alignment;
}
public void setAlignment(TextAlignment alignment) {
this.alignment = alignment;
}
public Format getFormat() {
return format;
}
public void setFormat(Format format) {
this.format = format;
}
@Override
public TableCell<S, T> call(TableColumn<S, T> p) {
TableCell<S, T> cell = new TableCell() {
@Override
public void updateItem(Object item, boolean empty) {
if (item == getItem())
return;
Respectiv:
FormattedTableCellFactory<Person, String> xx = new
FormattedTableCellFactory<>();
xx.setAlignment(TextAlignment.CENTER);
firstNameCol.setCellFactory(xx);
V mulumim pentru lectur i ateptm cu plcere, ca ntotdeauna, discuiile cu toi cei interesai.
33
programare
Claudiu Demian
claudiu.demian@yardi.com
Systems Administrator
@ Yardi
34
/etc/puppet/modules/lighttpd/manifests/init.pp:
class lighttpd {
package{lighttpd:
ensure => installed,
}
file{/etc/lighttpd/lighttpd.conf:
content => template(lighttpd/
lighttpd.conf.erb),
notify => Service[lighttpd];
}
service{lighttpd:
ensure => running,
enable => true,
}
}
programare
ocup de instalarea Apache-ului, a serverului MySQL, a PHP-ului
i a oricror alte servicii conexe din Linux (autentificare, NTP,
etc.). Problema care apare este c acest modul risc s ajung prea
mare i greu de gestionat. n plus, i pierde din portabilitate. O
soluie mai elegant este desprirea configuraiilor n patru module separate, reducndu-se astfel complexitatea fiecruia.
Clasa reprezint un bloc de cod care poate fi instaniat.
Fiecare modul are definit n fiierul manifests/init.pp clasa
principal a modulului. Instanierea unei clase la nivelul unui
nod, astfel nct s se aplice schimbrile sale se realizeaz folosind
directiva include.
/etc/puppet/manifests/site.pp:
node /web\d+/ {
include lighttpd
}
Objective C
jobs-cluj@yardi.com
Yardi Romania
35
programare
Cod curat
limitri, gestionarea erorilor i a obiectelor
n ultimele trei luni am ncercat s scriu despre diferite subiecte prezentate n Clean Code. Chiar dac acesta este al patrulea
articol pe aceast tem, am sentimentul c mai exist nc multe probleme despre care ar trebui s discutm atunci cnd vorbim
despre un cod curat i bine scris.
Subiectul de azi
36
cadrul metodei,
Metode din obiectele care sunt trimise drept argumente,
Metode din obiectele instaniate n
clasa n care metoda este implementat
Hibride
programare
Nul
Gestionarea erorilor
Concluzie
Limitri
37
management
nul dintre cele mai vechi i folosite tratate militare este Arta rzboiului.
Cartea a fost scris n jurul anului 500 .e.n. de ctre un general de la curtea
regelui inutului Wu i prezint un set de treisprezece capitole cu precepte
despre tactic i strategie destinate comandanilor de armate.
Am citit cartea cu destul de mult
vreme n urm, dar urmrind tendinele
actuale referitoare la tehnici de comunicare i management, am decis s o recitesc
i s mprtesc cteva dintre sfaturile
strvechi ale lui Sun Tzu aplicabile unei
poziii moderne precum aceea de Product
Owner.
Argumentaie
liviu.baiu@endava.com
Senior Business Consultant
@ Endava
38
a s i g u r a r e a c o n d i i i l o r d e
transparen i claritate a ordinelor
(militare).
prezentarea ordinelor (militare) pe
care armata le va executa n perioada
urmtoare.
ntrebri
management
De asemenea, un Product Owner este
singurul responsabil pentru prezentarea
viziunii ctre echip precum i pentru
asigurarea unei nelegeri comune a viziunii i a produsului n rndul tuturor
celor implicai, att membri ai echipei ct
i responsabilii de produs din exteriorul
echipei. Succesul unui proiect depinde de
modul n care Product Owner-ul reuete
s menin toate aceste persoane concentrate asupra scopului proiectului, dar i de
modul n care Product Owner-ul reuete
s canalizeze eforturile tuturor ctre livrarea cerinelor care aduc valoarea cea mai
mare produsului final.
Rolul de Product Owner implic i
responsabilitatea de a fi n permanen
informat despre schimbrile care apar pe
piaa pe care urmeaz s fie lansat produsul dar i despre modul n care evolueaz
comportamentul grupului int de consumatori. De asemenea, este important i s
reacioneze la acestea pentru ca produsul
s se poat livra n cel mai scurt timp.
Mediul de lucru al echipei este o alt
responsabilitate a Product Owner-ului,
pentru ca echipa s aib posibilitatea
de a-i desfura activitatea n condiii
optime. Aceast responsabilitate este indirect i este mprit ntre Product Owner
i Scrum Master. Aria de responsabilitate
a Product Owner-ului se refer la alinierea echipei SCRUM la mediul i procesele
interne ale organizaiei.
Toate cele de mai sus trebuie privite prin prisma livrrii produsului
ntr-un mod eficient din punct de vedere
al costurilor. Un Product Owner trebuie s compare valoarea pe care o aduc
funcionalitile care se implementeaz
cu suma costurilor implicate. Acesta este
unul dintre cei mai importani indicatori
care intervin n stabilirea prioritii unei
cerine, dar i n evaluarea maturitii i
succesului proiectului.
n Arta rzboiului, generalul este
responsabil pentru obinerea victoriei
(Scop i Rezultat). Pentru a atinge acest
rezultat, generalul are nevoie de un plan
clar, de metode pentru a menine moralul
trupelor i dedicaia acestora pentru obinerea victoriei, de resurse de calitate i de
logistic eficient, dar i de disciplin si
comunicare.
Generalul este singurul care poate da
ordine (cerine) armatei i trebuie s fie la
curent cu micrile de trupe ale inamicului pentru a putea s decid urmtoarele
manevre ale armatei sale (Prioritatea i
iteraiile).
Sun Tzu prezint in detaliu factorii
Cea de-a doua ntrebare (Poate fi considerat Arta rzboiului un ghid pentru
un Product Owner?), are acelai rspuns
Da. Iar argumentele sunt prezentate n
cele ce urmeaz.
n cartea sa, Sun Tzu a prezentat
mai mult dect rolul i responsabilitile
comandantului armatei, oferind detalii
despre ce semnific victoria, care sunt strategiile i tacticile pentru a o obine, cum
se pot folosi n mod eficient diferitele categorii de armate. De asemenea, a prezentat
importana trupelor de informaii i spionaj, care joac un rol deosebit de important
n adaptarea strategiei n funcie de manevrele inamicului, adic in capacitatea de a
reaciona la schimbare.
Un alt element important pentru un
39
management
Sfaturi strvechi pentru un Product Owner Sun Tzu Arta rzboiului
general este capacitatea de a obine maximum de rezultate meninnd costurile la
minimum. Conform lui Sun Tzu, aceasta
se poate realiza prin folosirea resurselor
inamicului n special hrana al crei cost
crete pe msur ce armata nainteaz n
teritoriul inamic. Un alt precept specific
modul n care micrile de trupe trebuie
planificate n funcie de viteza de deplasare
a diferitelor categorii de armate (infanterie, cavalerie, care de lupt), precum i
de importana sincronizrii manevrelor
(aceasta poate fi echivalat cu importana
calculrii indicatorului velocity pentru
echipele de SCRUM i a folosirii judicioase
a resurselor).
O calitate important a unui general,
aa cum o prezint Sun Tzu, este aceea de
a identifica, msura i evalua permanent
schimbrile care survin n teatrul de rzboi
i de a reaciona rapid la acestea, adaptnd
n permanen planurile tactice. Acesta
este cel mai important argument pentru
rspunsul meu.
Evaluarea permanent a teatrului de
rzboi este descris astfel de Sun Tzu:
Bibliografie
MobOS 2nd edition will consists of a 2 days-conference, first day dedicated to mobile technology presentations and open panel
talks, while the second day will host 4 workshops, iOS and Andoid related, for both beginners and advanced developers.
10 presentations, 4 workshops, 6 international speakers and 4 local speakers, 2 full-days in Cluj Napoca to engage in the
world of Mobile technology development. Were looking forward to meeting you there!
2 key speakers for each track will deliver on the second day 2 workshops
When: 20 21 November 2014
Where: Golden Tulip Ana Dome Hotel
40
programare
n rndurile acestui articol mi propun s realizez o scurt introducere n mediul de dezvoltare iOS, urmrind n special caracteristicile limbajului de programare Objective-C. Voi viza elementele definitorii ale limbajului, precum i detalii privind cel
mai utilizat framework n acest context, Cocoa-Touch. Concluziile exprimate n acest articol sunt din punctul de vedere al unui
Acest tip de instaniere implementeaz practic DesignPattern-ul Abstract Factory. Clasa abstract NSNumber
returneaz, n funcie de metoda de instaniere apelat, o instan
a uneia dintre urmtoarele clase:
NSCFNumber pentru toate tipurile numerice i pentru
tipul caracter;
NSBooleanNumber pentru tipul primitiv boolean.
Ulterior, n cod, apelnd metode precum intValue, booleanValue etc., vor fi create obiecte concrete (sunt, de fapt, tipuri
primitive): fie prin returnarea valorii cu care a fost instaniat factory-ul dac este stocat acelai tip cu cel cerut de apelul metodei
-, fie convertind valoarea la tipul solicitat. Dei Objective-C nu
implementeaz auto-(un)boxing, putem identifica dou avantaje
-(void) setNumerator:(int) numerator andDenominator:
ale acestei abordri:
(int) denominator{
subclasele NSNumber cuprind metode utile de conversie
self.numerator = numerator;
ntre
tipurile de date (metode asemntoare sunt implementate
self.denominator = denominator;
}
i
de
clasele
wrapper din Java);
...
n
acest
fel vor fi utilizate preponderent tipurile de date
MSGFraction *fraction = [[MSGFraction alloc] init];
[fraction setNumerator: 3 andDenominator: 7];
primitive , fiind instaniat un obiect wrapper doar n situaiile
necesare. De exemplu, pentru stocarea datelor ntr-o list. n
Acum, dup ce am fcut cunotin cu Objective-C, putem
Java, dei conversia de la tipuri primitive la obiecte wrapper
vorbi despre tipurile de date ale acestui limbaj de programare.
este facil, folosirea celei de-a doua opiuni poate introduce
Objective-C este o extensie a limbajului C, fiind astfel motenite
probleme de performan semnificative.
toate tipurile de date existente n C: arrays, pointeri, structuri etc.
.Poate singura diferen important n ceea ce privete tipurile de
n ceea ce privete aplicarea principiilor OOP n Objective-C,
date numerice din Objective-C fa de Java sunt tipurile unsigned,
pstrate n cazul primului limbaj menionat. Spre deosebire de prima diferen fa de Java poate fi identificat n cazul definiJava, unde exist cte o clas wrapper pentru fiecare tip nume- rii unei clase. Dac n Java o clas este definit ntr-un singur
ric primitiv, aici gestionarea se realizeaz prin intermediul unei fiier, avnd extensia .java, n Objective-C o clas const din dou
singure clase, NSNumber. Aceast clas cuprinde metode utile componente:
componenta public, denumit interfa, cuprinde metode instaniere specifice pentru fiecare tip de date. De exemplu,
dele publice ale clasei. Trebuie menionat faptul c interfaa din
pentru instanierea unui obiect ce reprezint un ntreg unsigned,
Objective-C nu este echivalent cu cea din Java. Aici trebuie
poate fi utilizat una dintre urmtoarele construcii:
definite att metodele instanei, ct i metodele clasei (metoNSNumber *num = [[NSNumber alloc] initWithUnsigneddele statice din Java). O posibilitate pe care eu o consider util
Int: 7];
este aceea a declarrii cmpurilor n interfa. Dac aceste
sau
variabile sunt marcate cu identificatorul @property atunci vor
www.todaysoftmag.ro | nr. 29/noiembrie, 2014
41
programare
Java vs. Objective-C
fi generate automat metode getter i setter, n funcie de parametrii specificai. n Java, o astfel de abordare este posibil cu
ajutorul framework-ului Lombok, ns acesta necesit un compilator special;
#import <Foundation/Foundation.h>
@interface MSGFraction : NSObject
@property (nonatomic) int numerator;
@property (nonatomic) int denominator;
-(void) setNumerator:(int) numerator
andDenominator:(int) denominator;
@end
42
Bogdan-Alexandru Vldu
Bogdan-Alexandru.Vladut@
msg-systems.com
Java Developer
@ msg systems Romnia
43
testare
management
na dintre cele mai mari provocri ale echipelor Agile este o planificare a activitilor de testare care s respecte urmtoarele
condiii:
Echipa testeaz exact ce Produc Owner-ul a menionat n criteriile de acceptan.
ine pasul cu specificaiile care se schimb continuu.
Preconizeaz un nivel ridicat de acoperire (coverage) a criteriilor de acceptan prin aplicarea testelor automate i gsete
echilibrul dintre efortul investit n testare (att manual ct i automat) i importana/impactul/riscul scenariului care este testat.
Testarea automat rezolv a doua parte, prin crearea unui set repetabil de teste care evolueaz continuu i care poate fi executat n
orice moment pentru a ne asigura c funcionalitatea existent nu a fost afectat de adugarea de funcionaliti noi.
Ce?
Spider este o aplicaie pe care am scriso pentru a rezolva aceast a treia parte.
Creeaz un raport al testelor automate cu
o mapare clar ntre scenariile de testare
scrise n format BDD i testele automate
efective. Folosind acest raport, Product
Owner-ul poate decide mai departe dac
vrea s ridice nivelul de acoperire al testelor automate n ariile de business mai
Raportul generat va prezenta grafic
riscante, s trag un semnal de alarm
dac user story-uri cu impact sczut sunt ct de mult dintr-un user story este acoperit de testele de Selenium. Partea verde
tratate cu o importan prea mare.
va spune valoare exact a procentului de
acoperire (lungimea total a unei bare
Cum?
Spider se bazeaz pe convenii. reprezint numrul total de story points).
Cr iter iile de accept an din User Partea albastr nu are o conotaie negaStories sunt transformate n scenarii tiv (motiv pentru care nu am ales roul).
44
Cnd?
Unde?
mdlin.ilie@endava.com
Cluj Java Discipline Lead
@ endava
sponsori
powered by