Tuesday, October 21, 2014

Ștergerea elementelor unei liste în timpul iterării

Începând cu Java 1.5, avem la dispoziție forma for-each a clasicului ciclu for. Aceasta ne ajută să iterăm rapid o colecție, astfel:

for (String element : list) {
   System.out.println(element);
}

unde variabila list a fost declarată și inițializată astfel:

List<String> list = new ArrayList<>() { {
      add("Luni");
      add("Marti");
      add("Miercuri");
      add("Party");
      add("Joi");
      add("Vineri");
   }
};

ACTUALIZARE: Se pare că varianta aceasta de adăugare a elementelor e un anti-pattern, deci nu e bine să o folosim. Detalii aici:
http://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/

O problemă devenită deja clasică este ștergerea de elemente în timpul iterării. Dacă în interiorul ciclului for scriem ceva de genul:

for (String element : list) {
   if (element.equals("Party")) {
      list.remove(element);
   }
}

se aruncă la runtime o excepție java.util.ConcurrentModificationException.
Nu putem folosi forma for-each a ciclului for pentru a șterge elemente în timpul iterării, dar avem la dispoziție interfața java.util.Iterator, care expune metoda remove(). Aceasta se dovedește a fi exact ce avem nevoie:

for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
   if (iterator.next().equals("Party")) {
      iterator.remove();
   }
}


Metoda remove() șterge ultimul element returnat de metoda next(), declarată în interfața Iterator. Totuși, trebuie să ținem cont de faptul că această operație este opțională, după cum se menționează în Javadoc. În concluzie, atunci când folosim iteratori putem atât să iterăm colecția, cât și să ștergem elementele acesteia.

Monday, October 20, 2014

Adăugarea rapidă a unor elemente într-o listă nouă

Am întâlnit unele situații în care am avut nevoie rapid de o listă (java.util.List) căreia să-i adaug, la fel de rapid, câteva elemente. Primul lucru ce îmi venea în minte era să creez o astfel de listă, căreia să-i adaug apoi, rând pe rând elemente, apelând metoda add() astfel:

List<String> list = new ArrayList<>();
list.add("Luni");
list.add("Marti");
list.add("Miercuri");
list.add("Joi");
list.add("Vineri");

O modalitate destul de enervantă și ineficientă, nu?
La un moment dat însă, am găsit o variantă ceva mai elegantă, care se folosește de clase interne, anonime:

List<String> list = new ArrayList<>() { {
      add("Luni");
      add("Marti");
      add("Miercuri");
      add("Joi");
      add("Vineri");
   }
};

ACTUALIZARE: Se pare că varianta aceasta e un anti-pattern, deci nu e bine să o folosim. Detalii aici:
http://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/

În plus, un coleg de muncă mi-a atras atenția că există o variantă și mai rapidă:

List<String> list = Arrays.asList("Luni", "Marti", "Miercuri", "Joi", "Vineri");

Acest ultim exemplu este discutat pe StackOverflow, la următoarea adresă:


Răspunsul acceptat menționează, de asemenea, și faptul că această modalitate nu permite adăugarea de noi elemente acelei liste, întrucât este ”fixed-size”, după cum spune și documentația:



Friday, March 7, 2014

Decizii

Deschizi încet o ușă,
Ea scârțâie ușor.
Pe mân-ai o mănușă.
Urmezi un coridor.

Ridici și-aprinzi o torță,
Poteca se desparte.
Picioarele n-au forță,
Cu gândul ești departe.

În piept simți un răsunet,
O voce cum te cheamă.
Ai vrea să-i poți răspunde,
Ai vrea, dar 'ți-este teamă.

Thursday, March 6, 2014

Dincolo de perdea

Dincolo de perdea un țipăt se-aude,
Dincolo de perdea sunt lucruri mărunte.
Dincolo de perdea sunt ferestrele ude,
Dincolo de perdea vrei apa să se zvânte.

Dincolo de perdea  ai gânduri profunde,
Dincolo de perdea rugina pătrunde.
Dincolo de perdea lumina surâde,
Dincolo de perdea, nu te mai ascunde.

Wednesday, December 18, 2013

2. MARIUS

               Pe măsură ce mă apropiam de centrul orașului, acolo unde era situată mica terasă la care mă întâlneam cu Marius de obicei, străzile erau din ce în ce mai aglomerate. Pe lângă faptul că drumul în sine era extrem de îngust, se mai găsea câte-un ”deștept” să-și parcheze mașina de teren ”pe avarii” fix în dreptul magazinului în care avea treabă. Nu puține au fost ocaziile în care oglinzile laterale ale limuzinei mele aproape că s-au cunoscut într-un mod intim cu cele ale mașinii ”deșteptului”, lucru care a făcut să-mi sporească starea de iritare. Obișnuiam să le spun câteva vorbe dulci, şuierate printre dinţi, șoferilor care își lăsau mașina ”pe avarii” în locuri în care îi încurcau pe alții, dar în momentul acela mi-am dat seama că făceam același lucru. Surprins de mine însumi, pentru o clipă am crezut că am înţeles ceva; am încercat neplăcutul sentiment că fusesem programat să mă conformez societății în care trăiesc. Brusc, mi-am scuturat corpul, ca și când încercam să înlătur o greutate ce-mi stătea pe umeri, și mi-am zis: ”gândești prea mult”.
Terasa era pe o străduță lăturalnică, pavată cu piatră cubică, unde numai pietonii aveau acces. Pereții înalți ai clădirilor ce vegheau asupra culoarului cenușiu de piatră împiedicau razele soarelui să ajungă la nivelul solului mai mult de câteva ore pe zi. În acele momente mă bucura acest lucru deoarece, pe măsură ce soarele se ridica pe bolta cerească, atmosfera era din ce în ce mai înăbușitoare; o zi de vară autentică.
Ajunsesem mai devreme, așa că am comandat un espresso pentru a-mi face așteptarea mai puțin plictisitoare și ceva mai aromată. Unul dintre motivele pentru care frecventam această terasă era cafeaua pe care o puteam comanda aici. La o altă masă stătea un grup de liceeni care păreau să nu aibă chef de școală și profitau de vremea frumoasă și WiFi-ul gratuit.
În sfârșit, Marius se apropie și se așeză pe scaunul din fața mea, însă răspunsul meu la salutul lui fu absent, ceea ce-l determină să mă întrebe puțin suspicios:
- Eşti OK?
- Da... cred. De ce mă întrebi?
- Arăți de parcă ai fi pe altă lume.
- Asta pentru că sunt din altă lume, i-am răspuns privindu-l serios pentru o clipă, iar mai apoi rânjind ștrengărește. O umbră trecu peste chipul lui Marius, apoi zâmbi şi el, părând că intră în jocul meu.
Adevărul era că într-adevăr, mintea mea era preocupată cu altceva în momentul în care Marius se așezase la masa la care mă aflam. La puțin timp după ce ajunsesem la terasă, un Alfa Romeo de culoare neagră se oprise la câțiva zeci de metri distanță, atât cât i-au permis stâlpii ce blocau accesul pe drumul pietonal să se apropie. Deși autoturismul era parțial acoperit de umbră, am putut distinge pe locul șoferului figura unui bărbat brunet, care purta ochelari de soare de aviator și se uita în direcția mea. Mașina, figura nebărbierită și cu trăsături dure îmi păreau cunoscute, iar mintea mea a început să caute frenetic amintiri, imagini, care să-mi răspundă la întrebarea: de unde? Acela era momentul în care Marius şi-a făcut apariția și mi-a întrerupt gândurile.
Cu Marius mă cunoșteam din prima zi de muncă și, chiar dacă nu lucram în același departament și nu ne întâlneam prea des în timpul programului, ne-am împrietenit la scurt timp după mutarea mea în acest oraș. Era politica firmei ca noii veniți să fie primiți călduros, iar Marius se oferise să îmi arate împrejurimile. Din acea seară, care începuse cu schimbul standard de întrebări despre vreme și sporturile preferate, am făcut o tradiție să petrecem serile de vineri la terasa unde ne aflam și acum. Pe timpul iernii localul își restrângea activitatea în interiorul clădirii, care era de fapt o încăpătoare sală, decorată rustic și dominată de un șemineu bine hrănit cu lemn uscat, plăcut mirositor.
Colegul meu era un tip despre care încă nu puteam să spun că l-am descifrat. Știam ce hobby-uri are, ce îi place să mănânce și ce nu, ce haine are în dulap, dar nu reușisem încă să trec dincolo de privirea aceea hotărâtă, cu nuanțe de verde și maroniu, care îmi lăsa impresia că ascunde ceva interesant. Singurul lucru cu adevărat important pe care-l observasem la el era inexplicabila putere de a convinge şi de a-şi aduna oameni în jurul lui, mai ales persoane de sex feminin. Invidioşii se grăbeau să tragă concluzia că totul se datorează fizicului său armonios proporţionat şi feţei lui de model Calvin Klein. Era genul ăla de bărbat pentru care exerciţiile fizice la sală nu mai reprezentau de mult o provocare; însă el nu făcea asta cu scopul de a deveni o conservă de muşchi, ci pur şi simplu avea nevoie să-şi consume energia cumva. Aşa cum sunt unii oameni care la micul dejun ar servi o pernă moale, care pur şi simplu au la dispoziţie tot atâta energie cât se găseşte într-o baterie 777, tot aşa există oameni care s-ar urca şi pe pereţi, numai să facă ceva.
Marius arăta bine, dar cu toţii ştim deja că nu asta e cheia masculinităţii. Altceva îl făcea pe Marius să pozeze – pe bună dreptate – în bărbatul irezistibil. Ştia cum să se comporte cu o femeie. Dacă era într-un local şi voia să intre în vorbă cu o necunoscută, ştia cum s-o abordeze. Întotdeauna mergea la sigur, nu am văzut nicio situaţie în care Marius să fie flituit. Uneori puteam să jur că Marius are cumva încorporat un radar Doppler care îi transmitea tot ce avea nevoie să ştie despre cea cu care urma să intre în vorbă. Când ne plictiseam de cafeneaua în care ne întâlneam vineri seara, dar totuşi aveam chef să mai socializăm şi nu voiam să mergem acasă, găseam un bar ori un club în care uitam de timp, de responsabilităţi şi de tot ce se numeşte realitate. Se întâmpla uneori, stând noi la bar, că Marius zărea o femeie extrem de atrăgătoare, care părea să nu aibă pe moment companie.
- Pune mâna şi notează, îmi zicea el, ridicându-se elegant şi păşind hotărât spre ea. Era genul ăla de femeie care era sătulă de textele fumate ale majorităţii băieţilor în corp de bărbat ce şi-au compus poezia, au repetat-o temeinic, iar acum îşi încercau norocul recitând-o răguşit, căutând inspiraţie în decolteul ei. Nu şi în cazul lui Marius; el ştia exact de ce are nevoie acea femeie; de un bărbat care să nu fie intimidat de frumuseţea ei, care să poată purta cu ea o discuţie interesantă, ce nu ar plictisi-o în primele trei minute; care să o facă să râdă pe bune, ca şi când spiriduşul ăla irlandez ar gâdili-o la tălpi; şi toate porcăriile alea pe care majoritatea dintre noi oricum nu le înţelegem şi nu le putem şti, pentru că dacă era altfel, Marius nu ar mai fi aşa meseriaş. Aşa vedeam eu lucrurile prin sticla paharului de cocktail, în timp ce mă uitam în jur plictisit, dându-mi seama că pierdusem compania lui Marius pentru seara respectivă.
În timp ce sorbeam din cafea şi o plimbam prin gură preţ de câteva secunde, ca să-i pot savura cât mai mult aroma, încercam să mă concentrez la ceea ce-mi spunea Marius. În ciuda eforturilor mele de a nu da atenţie gândurilor întunecate despre lucrurile ce mi s-au petrecut în dimineaţa asta, o dată la câteva zeci de secunde mă surprindeam gândindu-mă tot acolo. Era ca o frântură dintr-o manea pe care ai auzit-o urlând într-un BMW când aşteptai la semafor, şi pe care nu mai reuşeşti să ţi-o scoţi din cap... „tot la mine vine banu, eu sunt căpitanu’…”.
Din tot ce îmi spusese Marius până în acel moment nu prinsesem decât „propunere”, „încredere” şi „secret”.
- Ce zici, pot să am încredere în tine? au fost vorbele lui, care mă treziră din reveria mea.
- Absolut, vreau să aud ce ai să-mi dezvălui.

Wednesday, May 22, 2013

1. DIMINEAŢA

Am auzit pe cineva spunând odată că omul e singura creaţie de pe pământ a lui Dumnezeu care poate gândi abstract. Poate că m-am gândit o dată sau de două ori la asta, dar n-am zăbovit prea mult asupra acestui gând niciodată. Nu eram genul care să se framânte excesiv pe o temă pe care, oricum, nu o voi înţelege pe deplin. Dar în dimineaţa asta stăteam pur şi simplu în pat cu ochii aţintiţi în tavan, fără să mă uit la ceva anume. Nu mă obosisem să mă ridic pentru a da la o parte jaluzelele, nu mă îndemna nimic să fac asta. Intensitatea luminii care intra în cameră îmi dădea de înţeles că afară ori e înnorat, ori e ceaţă. În ultimele două săptămâni plouase aproape în fiecare zi, aşa că am votat rapid pentru un cer înnorat. Mi-am amintit o poantă ce-o auzisem zilele trecute cu privire la vremea care numai a vară nu semăna şi am zâmbit, uşor amuzat.
Am uitat repede gluma, pentru că în dimineaţa asta nu puteam să mă concentrez mai mult de câteva secunde asupra unui gând. Era ca în acele zile când îmi aminteam în faţa oglinzii că trebuie sa fac ceva important înainte de a pleca la servici, dar uitam complet de acel lucru cu mult înainte să-mi termin de periat dinţii.
M-am întors alene într-o parte şi am căscat plictisit. Azi nu trebuia să merg la servici; era sâmbătă şi, pe deasupra, mă aşteptau două săptămâni de concediu. Nu-mi propusesem să fac mare lucru azi, simţeam nevoia să-mi iau o zi liberă de la orice activitate după o lungă perioadă de stres şi muncă susţinută. Totuşi, aveam un sentiment ciudat. Mă dezobişnuisem să stau fără a face ceva constructiv. “Până la urmă, trebuie să recunosc că e bună şi rutina la ceva. Lipsa asta de ocupaţie mă omoară. Ridică-te din pat!” Am ascultat supus vocea din capul meu şi am dat la o parte cearşaful, ridicându-mă în acelaşi timp. M-am îndreptat instinctiv spre fereastră şi am tras perdeaua de umbră. M-am oprit în faţa uşii de sticlă care cobora de la tavan până la podea.
Camera era separată de balcon printr-un perete de sticlă, care îmi oferea o vedere largă la munţii împăduriţi care răsăreau în faţă la câteva sute de metri. Blocul de apartamente era construit pe coasta unui deal abrupt, care se afla la marginea unui masiv muntos. Între acesta şi munţii pe care-i admiram acum era un culoar adânc, împânzit de străzi întortocheate, cu imobile plantate iscusit în locuri greu accesibile sau chiar ciudate. Mintea mea de muritor de rând nu înţelegea cum au reusit acei ingineri să planteze locuinţe în asemenea locuri.
Am răsucit mânerul şi am deschis larg uşa, când o adiere uşoară de aer rece mă învălui imediat. Cu coada ochiului am observat cum se înfiora perdeaua de mătase de la cealaltă fereastră sub influenţa curentului care străbătea acum camera. Mi-am îndreptat din nou privirea înainte şi am ridicat uşor capul. Norii coborâseră în dimineaţa aceasta mai mult ca de obicei şi acopereau vârful muntelui din faţa mea cu o pătură pufoasă de culoare gri închis.
Mă mutasem în acest oraş de la câteva sute de kilometri distanţă când compania la care lucram avea nevoie la această filială de încă un om în echipă pentru un proiect de cercetare. Apartamentul îl închiriasem de câteva luni, dar mi-am dat seama că până acum n-am observat cu adevărat panorama ce se deschidea dincolo de fereastră.
Programul zilnic mă acaparase atât de mult încât, până acum, nu cunoşteam din acest oraş pitoresc de munte decât străzile pe care trebuia să le străbat cu maşina în grabă, pentru a ajunge la laborator înainte de ora şapte. Fiecare zi era încărcată şi stăteam peste program mult după ce un ceas mare de perete ne dădea de ştire că a fost ora şase. Doar cand ieşeam din laboratorul luminat puternic de tuburi cu neon, realizam că seara acapara totul în jur cu repeziciune. “Ei bine, a mai trecut o zi”, spuneam cu voce scăzută, ca pentru mine. După ce schimbam câteva vorbe cu colegii care încă mai erau acolo la acea oră, ne îndreptam împreună spre parcare. Fasciculul de lumină provenită de la faruri se despărţea când maşinile se îndreptau fiecare în direcţii diferite.
Nici viaţa socială nu-mi era strălucită. Eram înconjurat toată ziua de nişte oameni inteligenţi care păreau interesanţi, fiecare în felul lui, însă mi-am dat seama că nu-i cunoşteam cu adevărat. Oare ce se ascunde, de fapt, în spatele acelei feţe tot timpul zâmbitoare? Dar celălalt, să fie oare atât de superficial? Sau se ascunde de ceva mai adânc în viaţa lui? Aş fi putut să-mi amintesc chipul fiecărei persoane pe care o cunosc din acest oraş şi să-mi pun întrebări despre aceasta.
Am clipit de câteva ori, concentrându-mă din nou asupra imaginii predominant verde din faţa mea. Am făcut rapid un plan, care să mă ţină ocupat toată ziua.
Am sărit sub duş şi preţ de câteva minute doar am stat sub jetul fierbinte, fiind rezemat de peretele acoperit cu o faianţă de culoare crem, ornamentată cu motive florale. Aşa rezemat cum stăteam, desenam cu degetul pe faianţa aburită, urmărind liniile imaginate de designer. Întorcându-mă în sufragerie, am apucat din mers telecomanda şi am deschis televizorul pe un canal unde se difuzau ştiri. “Grozav”, mi-am zis, “iar a crescut Euro”. Am dat sonorul mai tare decât de obicei pentru a auzi din bucătărie. Deschizând frigiderul, am ridicat o sprânceană a dezgust. “Ia să vedem, ce-avem azi la micul dejun? Cereale sau… cereale? Eşti un bucătar desăvârşit” mi-am zis cu sarcasm. Am turnat nişte suc de portocale într-un bol şi am adăugat cereale, după care m-am îndreptat spre sufragerie, de unde se auzea televizorul care era deschis. Începuse rubrica meteo. Se părea că azi urma să iasă soarele, în cele din urmă. “Aşa mai vii de-acasă” am zis eu cu voce tare.
Am aruncat repede nişte haine lejere pe mine şi am ieşit din casă. Ca să ajung la maşina parcată la marginea străzii ce se vedea de la balcon, trebuia să traversez o curte ca o mică platformă acoperită cu gazon şi apoi să cobor câteva zeci de scări abrupte. În dreapta era pe două nivele, mica grădină cu flori a familiei Gruia. Coborând scările, am salutat-o pe vecina mea, care curăţa o tufă de trandafiri superbi.
-    Bună dimineaţa, doamnă Gruia!
-    Bună dimineaţa, Tudor!
-    În sfârşit vom avea o zi însorită, am remarcat eu continuându-mi drumul.
Doamna Gruia răspunse tot ceva legat de vreme. „Discuţia clasică între vecini” m-am gândit eu involuntar.
Hainele cu care eram îmbrăcat şi încălţămintea comodă îmi permiteau să fac mişcări mai ample, aşa că nu mă deranja să cobor câte două-trei scări deodată. În câteva secunde eram lângă maşina pe care o parcasem lângă trotuar. Şoseaua era îngustă, aşa că strada era cu sens unic, care te obliga să urci spre cartierul vechi al oraşului. Maşinile riveranilor erau parcate pe marginea stângă a şoselei, din lipsă de opţiuni; coasta abruptă a dealului pe care erau cocoţate locuinţele nu permitea şi construirea de garaje. M-am aşezat pe scaunul şoferului, apoi am răsucit cheia în contact, ascultând cu satisfacţie cum torcea motorul de 5 litri al Audi-ului. De când lucram în această companie banii nu mai erau o problemă, aşa că am profitat din plin de beneficiile materiale. Am demarat cu gândul ca prima oprire să fie la magazinul de pâine. Maşina, masivă de altfel, urca graţios pe străduţele înguste şi întortocheate, scânteind când soarele, care în sfârşit se arătase de după perdeaua de nori, reuşea să arunce câteva raze printre crengile brazilor de pe culmea dealului.
După câteva minute plăcute de condus pe străzile cartierului vechi, înaintea mea s-a deschis o piaţă destul de largă care se umplea din când în când cu oameni, la diverse evenimente urbane. Piaţa avea forma unui patrulater, pe fiecare latură aflându-se o înşiruire de clădiri vechi.
Am coborât din maşină şi am zăbovit cu privirea asupra unei clădiri masive în formă de L, a cărei faţadă îţi dădea impresia că aparţinuse unei familii de nobili iubitori de artă. Casa avea trei nivele, dar şi acoperişul avea înălţimea unui etaj. La cotul care descria litera L, acoperişul era despărţit, făcând loc unei încăperi ridicată deasupra celorlalte trei nivele. Faţada acestei încăperi privilegiate era decorată cu un balcon cu balustradă semi-rotundă, accesul în acesta fiind posibil prin trei uşi înalte de sticlă, având partea de sus boltită. Balcoanele etajelor inferioare erau mai mari, dispunerea lor amintindu-mi de problema turnurilor din Hanoi. Toate ferestrele erau mari, dintr-un lemn de culoare maro închis, de esenţă tare; chiar dacă nu mă pricep la tâmplărie, mi-am dat seama că au fost lucrate cu grijă. La primul etaj se vedeau din stradă lădiţe lungi pline cu flori. Muşcatele erau înflorite şi se revărsau peste balustradă cu inflorescenţele lor de un roşu provocator.
În plan secund se înălţa o clădire impunătoare de biserică. Avea două turnuri, cel estic dominându-l pe cel vestic. Ambele erau ascuţite şi îţi lăsau impresia că zgâriau văzduhul şi dacă norii s-ar fi lăsat îndeajuns de jos, înţepătura acoperişului de tablă neagră i-ar fi desumflat ca pe nişte baloane cu aer cald. În curtea bisericii se intra printr-un portal de piatră nu prea bogat ornamentat, dar cu un aer solemn. De o parte şi de alta a portalului erau arborate două drapele ale României, pe care le-am salutat cu mândrie în timp ce treceam de porţile din fier forjat. Nu aveam de ce să mă grăbesc să fac cumpărăturile, aşa că am ales să fac o scurtă plimbare pe aleile din curtea lăcaşului de cult. Aleea principală era pavată cu piatră cubică perfect aranjată, deşi părea să fie acolo de câteva decenii bune. În stânga mea, un grup de turişti s-au oprit în faţa unei clădiri cu aceeaşi arhitectură care te anunţa că e veche şi a văzut mult din istoria poporului român, în desfăşurare. După câteva minute de mers într-un ritm domol am văzut în faţa mea acelaşi portal prin care intrasem. Înconjurasem curtea fără să-mi dau seama când am făcut asta, fiind cufundat în gânduri. Ceva ciudat mi-a atras atenţia şi am revenit brusc la realitate. Pe partea dreaptă a aleii erau înşirate câteva morminte de marmură neagră. Numele scrise pe pietrele funerare îmi erau cunoscute. Totuşi, mi se părea ciudată asocierea dintre biserică, unde se presupunea că oamenii trebuiau să găsească viaţă, şi mormintele, care reprezentau moartea. Am ieşit, încercând să-mi izolez în minte sentimentul neplăcut care mă cuprinsese.
Jucându-mă cu cheile pe degetul arătător, am intrat în magazinul de pâine, mai mult ghidat de miros decât de explicaţia firmei care era atârnată deasupra intrării. De după tejghea mă întâmpină cu un zâmbet cald o doamnă plinuţă, mai în vârstă, pe care o recunoşteam deoarece mai făcusem cumpărături aici de câteva ori. Mirosul de pâine proaspătă îmi dădea o senzaţie de foame, deşi mâncasem cu mai puţin de o oră în urmă. Mirosul era familiar şi îmi amintea de anii copilăriei când eram în orăşelul natal şi mă trimiteau părinţii să cumpăr pâine de la un magazin asemănător. De mai bine de cinci ani mă tot mutam dintr-un oraş în altul, după cum era nevoie în companie, şi îmi lipsea stabilitatea, sentimentul acela de siguranţă, că toate lucrurile familiare, care ajung să-ţi fie dragi până la urmă, vor fi acolo tot timpul pentru tine.
-    Te servesc cu ceva, drăguţă? s-a auzit vocea caldă a doamnei de după tejghea.
-    Poftiţi? am răspuns eu nedumerit, scuturând uşor capul ca şi când mă trezeam dintr-un somn profund.
-    Avem franzelă proaspătă. Încă e caldă, uite.
Îmi întinse o franzelă bine rumenită să o verific. Am presat uşor coaja crocantă între degetul mare şi arătător şi mi-am ridicat privirea mulţumită:
-    M-aţi convins, iau două din acestea şi o legătură de covrigi. Să fie cu sare, nu mă dau în vânt după cei cu mac.
În timp ce vânzătoarea punea produsele într-o pungă mare de hârtie maro, mi-am verificat cu palma buzunarul de la spate, acolo unde ţineam de obicei portofelul. Am făcut o grimasă când mi-am dat seama că îl uitasem în maşină. M-am întors spre vânzătoare să-i explic situaţia:
-    Ah, mi-am uitat portofelul în maşină. Mă întorc într-un minut.
Maşina era parcată la câţiva zeci de metri de magazin, suficient de aproape cât să observ privirea alertă a vlăjganului care dădea târcoale automobilului. Când mă văzu că ies, s-a uitat cu ură spre mine şi a tras un şut portierei aşa, ca să văd eu. Am început să alerg spre el nervos, cu o viteză pe care nu credeam că mai sunt în stare să o ating. Însă nici el nu era mai prejos, strecurându-se cu uşurinţă printre maşinile parcate şi apoi printre oamenii surprinşi de ceea ce vedeau. Mişcările lui îmi aminteau de concursurile de parkour pe care le urmăream cu ani în urmă la televizor. În cele din urmă am scăpat de pietoni şi am intrat pe o porţiune dreaptă unde mi-am dat seama că sunt mai rapid decât el. Simţeam cum mi se zbate inima în piept şi tâmplele îmi zvâcneau dureros. „Probabil de la efortul brusc, fără să mă fi încălzit înainte”, mă gândeam încercând să mă concentrez la mişcările lui.
Îl urmam la vreo zece metri distanţă, când a cotit brusc la stânga şi a intrat pe o străduţă pietonală, umbrită de un zid înalt care probabil aparţinea vechii cetăţi. Din loc în loc se vedeau intrânduri, chiar dedesubtul micului acoperiş de ţiglă care proteja întreaga lungime a zidului, de unde gărzile puteau supraveghea tot ce mişcă în exteriorul cetăţii. Modelul ţiglei avea un efect ameţitor în timp ce alergam nebuneşte, aşa că am întors privirea şi m-am concentrat asupra ţintei mele.
După câteva zeci de metri pe străduţa asta întunecoasă am văzut patru siluete care ies din umbră în faţa celui pe care-l urmăream. Când a trecut de ei, s-a oprit brusc. Am făcut la fel, dându-mi seama că erau împreună. Între mine şi grupul care stătea nemişcat cu faţa spre mine, erau vreo douăzeci de metri acum. Un gând mi-a fulgerat prin minte: „Vânătorul devine vânat, în cele din urmă.” Locul în care eram era pustiu, însă nu intrasem suficient de mult încât să nu pot bate în retragere. Am început să păşesc rigid în spate, în timp ce aveam ochii aţintiţi asupra celui care stătea în faţa celorlalţi. Grupul era nemişcat. În timp ce mă retrăgeam, îmi calculam fiecare mişcare, concentrându-mă la maximum, ştiind că pericolul încă nu a trecut, deşi cei din faţa mea nu trădau vreo intenţie de a ataca.
Când am ieşit în strada aglomerată, am răsuflat uşurat şi am simţit ceva rece pe faţă. Mi-am atins fruntea cu degetele şi am înţeles că faţa îmi era inundată de sudoare. Inima încă îmi bătea puternic, însă respiraţia devenea din ce în ce mai regulată, pe măsură ce mă îndreptam spre piaţa unde lăsasem maşina. Încercam să mă liniştesc, dar ceva îmi spunea să fiu alert în continuare. Cine ştie ce se ascunde în mulţime. O lamă ascuţită nu are nevoie decât de o fracţiune de secundă şi trece uşor neobservată.
Când am ajuns la maşină, am verificat cu atenţie portiera. Din fericire, adidasul puştiului nu a lăsat nicio zgârietură sau adâncitură în tablă. Doar lustrul era puţin şters. Mi-am amintit de franzelele mele, aşa că am luat portofelul din torpedou şi m-am întors la magazinul de pâine.
-    Ah, credeam că nu te mai întorci, drăguţă! spuse vânzătoarea cea amabilă.
-    Pentru o clipă, la fel am crezut şi eu.
-    Nu înţeleg, replică doamna plinuţă cu ochii mari de uimire.
-    Nici eu, am răspuns eu scurt, dându-i de înţeles că nu vreau să vorbesc despre asta.
-    Vai de mine, arăţi de parcă te-a alergat ursul!
N-am răspuns nimic.
Am plătit pentru ceea ce vânzătoarea pusese în punga de hârtie cu cincisprezece minute în urmă, am mulţumit şi m-am îndreptat spre ieşire.
-    Să ai o zi bună, drăguţă! am auzit-o pe doamna cea plinuţă urându-mi în timp ce ieşeam.
Am mulţumit cât de cald am putut şi am ieşit cu o grimasă pe faţă, întrebându-mă de ce mi se tot adresează cu „drăguţă”.
Mă îndreptam îngândurat spre maşină rupând din colţul uneia dintre franzele. Gustul proaspăt al franzelei mă făcea să mă simt mai bine. Dar nu puteam să mă desprind de un gând: „Oare ce-o fi însemnând chestia asta?” Deodată mă străfulgeră o idee: „Ei nu erau interesaţi de maşină, ci de mine!”

Înainte să apuc să deschid portiera, am simţit telefonul vibrând în buzunarul pantalonilor. M-am grăbit să pun pachetul pe scaunul din dreapta şi am luat telefonul în mână. Era Marius, un coleg din echipa de la laborator.
-    Salut! Se auzi vocea lui Marius în receptorul telefonului.
-    Salut, Marius. Ce surpriză! Sper că totul e în regulă la laborator.
Niciunul dintre colegi nu mă sunase până acum, decât în interes de serviciu.
-    A, stai liniştit, nu de asta te-am sunat, veni răspunsul lui rapid. Voiam doar să te chem la o cafea la terasa obişnuită. Am să-ţi spun ceva.
-    Bine, spun eu. Ne vedem acolo într-un sfert de oră.
-    Perfect, confirmă Marius.
    Am pornit motorul şi am demarat. Coborând pe o stradă dreaptă şi îngustă, m-am surprins gândind cu voce tare. „Ce dimineaţă ciudată.”

Monday, October 10, 2011

Subversion + Eclipse (Partea intai)

Zilele astea am avut prima experienta cu Subversion, dupa ce m-am hotarat ca e timpul sa-mi instalez si eu un sistem de control al versiunilor. Cu ceva timp in urma am citit putin despre asta si am aflat ca Subversion ar fi un produs potrivit pentru ce am eu nevoie.

De ceva timp simteam nevoia sa fac backup destul de des unui proiect personal, care s-a nascut din dorinta de a invata ceva nou. Dar backup-ul manual e ceva copilaresc in zilele noastre, asa ca in weekendul asta mi-am luat inima in dinti si am inceput sa caut cum se instaleaza si configureaza un server Subversion si apoi, cum se foloseste minunatia asta impreuna cu Eclipse. Cautand, am aflat de Subclipse, un plugin care realizeaza integrarea de care aveam nevoie.

Voi descrie in continuare pasii pe care i-am urmat pentru a instala Subversion, Subclipse si cum mi-am importat proiectul in Subversion. Pentru toate astea am pus cap la cap niste articole excelente, pe care nu le-am gasit chiar asa de greu. Voi adauga la sfarsitul articolului linkurile catre paginile de unde m-am inspirat.
  
Mai intai de toate, am descarcat Subversion in varianta ZIP. 
La adresa http://subversion.apache.org/packages.html se gasesc mai multe posibilitati de a descarca Subversion. Eu am ales din sectiunea pentru Windows, Win32Svn (32-bit client, server and bindings, MSI and ZIPs; maintained by David Darj).

Dupa ce am despachetat arhiva intr-un loc convenabil de pe hard-disk (ex. c:\svn-win32-1.6.17), am setat o variabila de sistem cu numele SVN_HOME.

(variabilele de sistem se seteaza astfel: Click-dreapta pe My Computer -> Properties -> Advanced -> Environment Variables -> System Variables -> New)

Variabila mea contine calea spre directorul care contine distributia de Subversion (ex. SVN_HOME = c:\svn-win32-1.6.17). Apoi, am pus in Path calea spre directorul bin al distributiei de Subversion (cunoscut si sub numele de SVN). Lucrul asta l-am facut astfel: am selectat variabila de sistem Path si am apasat Edit. La sfarsitul sirului, am adaugat un caracter ; (punct si virgula), iar apoi am scris: %SVN_HOME%\bin. Dupa confirmarea prin intermediul butonului OK, am putut folosi comenzile specifice Subversion, oricare ar fi fost directorul curent in Command Prompt.

Apoi am deschis linia de comanda si am creat un nou "repository" astfel: 
   svnadmin create "c:\svn-win32-1.6.17\repository"

In interiorul noului director repository exista un director numit conf. De aici am deschis svnserve.conf si am decomentat liniile care contineau:
   anon-access = none
   auth-access = write
   password-db = passwd
Apoi am adaugat un nume de utilizator si o parola corespunzatoare in fisierul passwd din acelasi director conf.
Ca Subversion sa fie intotdeauna disponibil, l-am instalat ca serviciu Windows, care sa porneasca de fiecare data cand porneste sistemul 
de operare. Am rulat comanda: 
   sc create svnserver binpath= "c:\svn-win32-1.6.17\bin\svnserve.exe --service 
-r c:\svn-win32-1.6.17\repository" displayname= "Subversion" depend= Tcpip start= auto 
Fiindca nu era pornit inca serviciul, am rulat comanda: 
   net start svnserver
Acum avem un server Subversion functional. Continuarea povestii va veni in urmatorul articol.
Asa cum am promis, iata articolele din care m-am inspirat: