Archive for Retardare

Ani de liceu

Posted in Premiul n00bel, Stand-up philosophy with tags , , , , , , , on January 27, 2011 by jos8cal

In orice clasa exista cite un elev care invata si restul care copiaza de la dinsul. Stupoarea maxima apare cind dupa corectare primesc toti nota 2, deoarece cel de la care s-a copiat a prins o zi proasta si a raspuns pe linga. Caz concret pe bancile scolii ardenele:

Marius Bancila despre accesarea unui array 2D:

unsigned char* bmp1;
bmp1=new unsigned char[rows * cols];
for(int i=0;i<rows;i++)
   for(int j=0;j<cols;j++)
      bmp1[i * rows + cols] = i+j;

Silviu Ardelean confirmindu-si clasa de copiac notoriu:

Viorel, urmeza sfatul lui Marius de-a folosi array-ul uni-dimensional pentru stocarea imaginii. Cu astfel de buffere se lucreaza in procesarea de imagini.

Anyway… renunta la abordarea cu array-ul 2D si rezolva-ti problema cu un banal array 1D via bmp1[i*row + coloum] = i+j;

Stati jos, 2.

Inflexible special tool that could fail.

Posted in Codare cu premeditare, Premiul n00bel, Stand-up philosophy with tags , , , , , , , , , , , , , , , , on January 16, 2011 by jos8cal

Nu cred ca-l cunoasteti pe mesajflaviu. El este un impatimit al jocului “La Perete, La perete, Stop!”. Jocul asta este pentru el ce a fost birna pentru Nadia Comaneci, adica o rampa de lansare. Antrenamentele si meciurile oficiale se desfasoara pe codexpert.ro.

Regula jocului este simpla: mesajflaviu sta cu spatele la Programare si se uita printr-o gaura aflata in peretele cu care pare ca se stie intim. Lumea din gaura este o lume fascinanta pe care mesajflaviu o urmareste hipnotizat, dar ca orice lume fascinanta, pare o utopie.

In spatele sau, la o distanta considerabila, stau in ordinea stelelor si diplomelor, Raspundacii. Aliniati precum negustorii de la sosea care vind ceapa sau echipament rustic pentru imobile, ei ofera Raspunsuri.

Mesajflaviu se intoarce confuz din cind in cind si intreaba multimea de experti despre semnificatia a ceea ce vede prin gaura. Rolul si misiunea raspundacilor este de a inlatura ceata din ochii lui si de a-i conferi o siguranta in privire si in ziua de miine. Cind unuia dintre raspundaci i se pare ca a atins un moment cairotic, creierul da startul unei stari de bine, stare care nu poate duce decit la lucruri marete. FAQ-ul este produsul acestei stari cairotice. Odata conceput, el este aplicat pe gaura cu menirea clara de a corecta vederea celui ce priveste prin ea.

Tematica intrebarilor este Programarea in general si viata de programator in particular. Intrebari precum “Pot trimite un string prin WM_CHAR“, “Cum pot trimite un CString prin PostMessage” sau “Cum se stocheaza o variabila membru tip custom?“, au tinut cu sufletul la gura firme si birouri intregi de programatori, toti in asteptarea raspunsurilor. S-au facut pariuri si s-a dat in bobi. Cum lesne se poate intui, marele pariu era pentru momentul aparitiei starii cairotice la vreun raspundac, adica momentul unui FAQ.

Si iata ca momentul cairotic l-a lovit pe Silviu Ardelean. Again.

Se poate schimba numarul versiunii de program automat, pentru cazul cand programul isi face update?” zice mesajflaviu fara sa-si dezlipeasca ochiul de la gaura. Neintelegind intrebarea, dar totusi in posesia unui raspuns care contine cuvintele “versionare” si “program“, Silviu pune tirnacopul jos si ia atitudine PROPUNIND de la sine citire o solutie la intrebarea pusa in joc. Vazind ca MVP Ovidiu Cucu n-a inteles nimic, dar totusi a ramas profund fascinat de raspuns, Silviului i se aprinde lampasul. Pune mina pe tirnacop si il arunca in departare. Unde-si va gasi tirnacopul hodina, acolo va pune Silviu de un FAQ. Sau cu cuvintele sale:

“Subiectul cred ca se preteaza unui FAQ si cu permisunea d-voastra il voi supune curand spre aprobare.”

Din pacate si Microsoft si-a aruncat tirnacopul acum 6 ani in aceeasi directie si au pus-o si ei de acelasi FAQ. Bineinteles ca asta nu este un motiv sa nu faca si Silviu unul in care sa nu mentioneze sursa si sa PROPUNA dinsul un workaround la o problema de mult apusa:

“Manually editing of binary files version in the resource editor of Visual Studio IDE is not a viable solution.”

“We can use a special tool that does this thing for us. ”

“Unfortunately this approach is not the most flexible and could fail.”

“In order to avoid this issue and edit the version only in a single place I propose the following workaround:”

Deci sa nu folositi NICIODATA un “special tool” pentru ca nu e flexibil si oricum nu o sa mearga. S-a auzit acolo in spate, da? Am sters si eu rusinea mea de tool scris in python care face asta in 8 linii de cod. Sa-mi fie rusine pentru inflexibilitate tool-ului si pentru abordarea sortita esecului.

Bine, daca este sa fim corecti, noi stim ca Silviu se mai inspira de pe net pentru a-si gasi cuvintele, dar niciodata nu ofera sursa. Acum ceva timp s-a inspirat cu copy/paste pentru a gasi rima cuvenita intr-o oda adresata XML-ului.

Ichi ni san shi

Posted in Codare cu premeditare, Premiul n00bel with tags , , , , , , , , , on October 6, 2010 by jos8cal

Retardarea minerului este maxima. Dinsul crede ca ai nevoie de un geam ca sa scrii niste numere sau text pe disk folosind CArchive:

Înteţeg că versionarea în aplicaţii MDI s-ar putea demonstra folosind şi o aplicaţie consolă după mintea coroiului […]

Cum poţi demonstra un concept dintr-o arhitectură  OOP Windows (MFC) altfel decât creeând o astfel de aplicaţie MDI (Multiple Document Interface)?[…]

Dar fireşte, un luceafăr al huilei ca tine sau Mihnea făceaţi treaba aia în juma’ de oră. În 45 de minute era gata şi articolul în Word.

Deschide in pula mea Visual Studio macar o data in viata ta si da-i sa-ti faca o aplicatie consola cu suport de MFC si baga codul asta in .cpp:

Deci se poate si fara geam si a si durat exact 3 minute sa-l scriu, nu 3 ani de cind sta plina de bug-uri mizeria ta de aplicatie pe codexpert si ai reusit sa o faci sa mearga abia in august 2010, dupa lungi negocieri purtate cu retardarea ta. Si nu e nevoie de niciun Word care sa explice nimic, ca orice om care stie sa citeasca cod, citeste in pula mea. Si ca sa-i faci multiversionare mai bagi un int si mai faci un if() deci inca 3 minute. Asa ca mars la tirnacop.

Daca n-ai prins ce ziceam despre triunghi n-am sa stric poanta explicindu-ti. Si nu-ti fa griji ca lumea este dezinformata doar pentru ca nu ne cunoaste personal. Munca ta vorbeste de la sine. Am dat link la cod si la poze, este indeajuns pentru cineva care stie despre ce e vorba sa se prapadeasca de ris.

Flame-ul cu operatorul post versus pre incrementare pe iteratori a pornit de la un banal FAQ util la interviuri.

Citeste titlul FAQ-ului: Intrebare: Care din operatorii ++, prefix (++i) sau postfix (i++) ar trebui folosit?

Unde pula mea vezi tu scris cuvintul interviu? Deci sugi pula. Raspunsul corect este nu conteaza (implicit vorbim in release unde /O2 este BY DEFAULT ON). Inteleg ca esti un retardat prost si nu crezi ca zic eu, dar vezi ca mentorul tau este de acord cu mine:

Point taken. Lucrurile n-au stat insa asa tot timpul. Te invit sa adaugi un comentariu la FAQ.

Am adaugat un coment la FAQ-ul pizdii dar evident ca mi-a fost sters. Deci sugeti pula amindoi.

Cit priveste aptitudinile tale despre care crezi ca s-au schimbat in timp, te invit la o retrospectiva pe acest blog, sa vezi ca esti in continuare o cauza pierduta in programare. Cautari in map-uri, manevre, versionari si serializari, copiere de memorie, you name it.

Cât de tembel poţi să fi să califici un om după un nivel de acum şapte ani şi jumătate? Chiar nu aveam timp să reinventez roata[…]

Codul asta luat de tine de pe net cum zici tu, aduna niste numere la un sir de caractere, nu vad nicio roata de reinventat. Si btw, uita-te prin codul articolelor tale si corecteaza pe unde intorci CString prin valoare de prin functii, ca acum 7 ani.

M-a facut mama ortac

Posted in Codare cu premeditare, Premiul n00bel, Stand-up philosophy with tags , , , , , , , , , , , on October 5, 2010 by jos8cal

Când plini de praf cu paşi trudiţi,
Ieşim din mina obosiţi,
Ne doare ca-n lumina sa
Pământul ţine-o lume rea.

Asta fredona Silviu Marius Ardelean in timp ce-si sapa cariera de programator din galeriile reci si ude ale Vaii Jiului catre Timisoara. Cind a dat de lumina neonului de multinationala s-a pus pe scris despre normalitate. Pentru ca lui ii pasa. Si pentru ca scriind poti schimba ceva. Mai ales cind te citeste doar nevasta-ta si restul care rid de tine.

Asa ca automat s-a luat de postul in care se discuta despre imbecili ca el care reinventeaza nimicul pe unde-l prind. Prin MFC sau prin 3D, dupa caz. Dind curs lecturii si neintelegind nimic, spusele lui Mihnea si a altora citati i s-au parut nelalocul lor si asta pentru ca si el are un sistem personal de a defini spatiul. Sa vedem asadar cum defineste Silviu Marius Ardelean un triunghi:

Deci CTriangle deriveaza din CFigure iar Figura ca si concept general are un punct in stinga si unul in dreapta. Directii clare de a defini spatiul, timpul si retardarea. Daca ne uitam in cod sint si mai epice, ca se cheama m_ptUpperLeft si m_ptBottomRight.

Poza asta face parte dintr-un tutorial despre OOP scris de miner pe post de jurnal tinut prin tunelul carierei pe care o sapa de mic. Jurnal tip briceag elvetian care contine nelipsitele sectiuni pentru un programator specialist, sectiuni precum: Bancul Zilei, un ceas, IP-ul celui ce-l citeste si emblema Stelei Bucuresti. Coperta te imbie sa o deschizi deoarece pe dinsa sta scrijelit urmatorul text:

Bine ati venit pe site-ul unui specialist in domeniul software.

Din pacate nu s-au salvat si pozele. Am avut noroc ca poza cu triunghiul am salvat-o cu mult inainte ca Silviu sa decida sa-l copieze pe Marius Bancila si sa-si faca bloage tehnice si de atitudine dinamitindu-si trecutul.

Ca orice labar prost cu idei putine si fixe el se ofera sa ajute lumea bolnava in care se invirte, sa o schimbe, sa-i ofere acces la dimensiunea sa. Asa ca n-am scapat nici eu de momentul in care i-am zis ca abereaza FAQ-uind lumea printr-un indrumar patimas catre programatorii mai saraci cu duhul, despre cum ca pre incrementarea la interatorii containerelor STL este recomandata in favoarea post incrementarii. Evident noi vorbim despre cod in Release, ca doar asta ajunge la clienti (fie ei si colegii tai carora le faci softul de facturi).

Fara o legatura directa dar izvorind in acelasi imbold onanist de a te baga in seama cu chestiuni pe care nu le stapinesti, el are o mai veche pasiune pentru optimizat cicaturi inutile:

Observam cum parametrii vin si pleaca ca-n gara, cum se aloca spatiu intr-un CString si cum se face un undefined behaviour cind esti miner si optimizezi tu incrementarea.