Arta Inaltarii Monitoarelor

Posted in Regula 0 on September 9th, 2011 by Mihnea

Astazi va supunem atentiei un instantaneu surprins in birourile Bitdefender Timisoara inainte de pasul cel mare facut in primavara de catre cel mai miner dintre paminteni. Observam cum primele doua volume din ópusul lui Knuth formeaza un fundament solid pentru demersul creator al lui Silviu. Monitorul s-ar prabusi pur si simplu sub greutatea atitudinilor si descoperirilor cioplite in el daca ar fi sprijinit pe un postament mai putin monumental. Volumul 3, ala despre sortare si cautare este probabil folosit pe post de tirnacop pad.

PS: ortacul si-a actualizat in sfirsit linkedin-ul. Aparent a facut level up de la expert la “Advanced Software Developer”, fiind acum parte dintr-o echipa de servicii profesionale care ofera suporti pentru echipa de servicii profesionale:

Member of Professional Services team, a team that offers outsourcing supports for Ricoh Infoprint Professional Services team.

 

Tags: , , , , , , , , ,

Omul nu este o insula

Posted in Codare cu premeditare, Premiul n00bel on October 28th, 2010 by jos8cal

Agrafa are dreptate. Omul are nevoie de dragoste, de intelegere si de iubire pentru a putea face ceva cu viata lui, pentru a lasa ceva in urma lui. Pentru ca a face ceva in viata e bine, iar a nu face e rau.

Acum vreo 20 de ani vizionare precum Melinda French sau Karen Fries (un fel de Aurora Liiceanu si Alice Nastase) au decis sa lupte impotriva singuratatii in secolul vitezei. Dinsele au inteles ca a sta 12 ore in fata calculatorului este efemer daca nu iti apare din cind in cind o agrafa pe ecran care sa-ti bage maxime si sa-ti asculte opintelile. Dar cum natura umana impinge la dezmat si abuz, oamenii au voit mai mult de la agrafa. Asa ca s-a infiintat Agentia de Asistenti responsabili cu asistarea deciziilor din viata ta. Agrafa, Vrajitorul Merlin, spiritul din sticla, Peedy papagalul, delfinul Kairu si ciinele care iti aduce fisiere cind dai Find File.

Cu timpul insa agentii au fost inlocuiti de chiar Om. Facebook, Twitter, mIRC sau Forumuri sint toate Agentii cu Asistenti in care Omul mascat in Agrafa ofera suport Omului mascat in Om. Inevitabil Microsoft a fost fortat sa puna pe libera Agentia de Asistenti odata cu Windows 7. RIP Agrafa.

Un astfel de Om Mascat in Agrafa (OMA) este, dupa cum probabil ati intuit deja, si Silviu Ardelean. Datul este simplu. Un om intreaba ceva pe un forum. OMA Silviu isi face aparitia zimbind dintr-o poza distanta sub care stau enumerate 4 stele, simbolul calitatii. Dupa cum stiti discutia cu o Agrafa nu se termina niciodata. Te tot intreaba chestii, tu tot dai Next ca nu esti multumit si dupa citeva pagini de Next o inchizi nervos si ii dai Disable din Options. Asa e si cu OMA Silviu. Doar ca forumurile in care dinsul s-a aciuat nu au suport pentru disabled on sight pe userul lui.

Asa, deci omul ala pune o intrebare total retardata si baga urmatoarea eroare de compilare pe codul asta:

error C2440: ‘=’ : cannot convert from ‘int’ to ‘enum DrawShape’

Si vine raspunsul OMA Silviu:

Nu am timp sa fac un proiect si sa-ti testez codul, dar tin sa cred ca obtii eroarea la linia CDrawTool::c_drawShape = m_nToolTemp;

Wow. Avind o singura linie de cod in care se face o atribuire Agrafa a reusit sa se prinda DIN PRIMA fara compilator pe care linie este eroarea. Si ca orice Agrafa nu-si uita menirea: sa ofere solutii:

In rezolvarea problemei, eu as renunta la acest tip enumerare si as folosi tipuri clasice, un vector, structura, etc.

Recomandare luata parca dintr-un tablou de Botticelli. Cu o singura tusa OMA Silviu a reusit sa redea culoare unui thread monocromatic.  El foloseste structuri in loc de enum-uri. Deci asta era secretul lui.

Scoala Ardeleana este adepta clasicismului. Si vocea parca ii este grava si apasata de bruma anilor in care si-a sedimentat cunostintele:

E o eroare clasica… nu poti atribui runtime noi valori unei variabile enumerare.

Dupa ce Marius Bancila a indraznit sa arate ca se poate si a oferit o solutie practica pe codul ala si anume un cicat de cast la int, au sarit Agrafele ca arse, una ca nu se poate, alta ca nu e etic. Deci da: Options->Preferences->OMA Silviu Agent->Disabled.

Intr-un alt thread un alt maximal se intreaba cum sa implementeze o metoda c_str() pe o clasa String, metoda care te duce cu gindul la c_str() din std::string. In ciuda faptului ca are 8 ani de cind se joaca MFC pe nivel expert, OMA Silviu nu stie despre CString ca-si schimba parul in functie de ce caracter set ai setat la proiect. Recunoaste intr-un final ca e prost si habar n-are ce vorbeste si baga urmatoarea maxima:

My bad, se compileaza, dar de fapt nu face ce se asteapta omul sa faca (adica sa copiezi un sir de caractere, chiar daca aloci memorie ptr asta)

Din nou, in cei 9 ani de STL pe nivel expert el crede ca lumea cind vede un c_str() se asteapta sa se intimple o copiere de memorie. Si ca si suport practic pentru retardarea asta ne ofera un sample de gindire Ardeleana, care inca nu m-am prins ce trebuie sa evidentieze in afara de mintea lui bolnava:

Dupa 2 pagini de discutii intre Agrafe despre cum sa faci un return _ptr, Silviu si-a schimbat pozitia si a oferit implementarea lui c_str():

char* c_str() const { return str.c_str(); }

N-a reusit sa-l faca const din prima (desi el citeste sursele STL inca de pe vremea iteratorilor), dar noroc cu varul Cucu care s-a facut ca vede un “typing error” acolo in loc de “retard error”.

Tags: , , , , , , , , ,