A patra corectura

Truda afunda continua in galeria sapata de Silviu Ardelean. Cu ajutorul cititorilor nostri a reusit sa-si corecteze si “micile scapari” legate de character set, a aflat de FindFirstFile() si chiar a incercat sa trateze path-urile care contin wildcard-uri, lucru care nu prea i-a iesit. In momentul de fata, codul pentru cazul in care nu vrei sa folosesti WinAPI este:

long long GetFileSizeFast(const TCHAR *szFilePath)
{
    if (!szFilePath || !szFilePath[0] ||
        !PathFileExists(szFilePath))
        return -1;

    long long nSize = -1;
    struct __stat64 buf;
    nSize  = (_tstat64( szFilePath, &buf ) == 0) ?
        buf.st_size : -1;
    if (S_ISDIR(buf.st_mode)) nSize = -1;

    return nSize;
}

Sigur, ne-am putea intreba de unde frica asta de WinAPI, avind in vedere ca _tstat64() e o functie care exista doar pe Windows, deci oricum poti sa te bazezi ca ai WinAPI la dispozitie. De asemenea, ne-am putea intreba cum eviti folosirea lui WinAPI, cit timp chemi PathFileExists(), o functie WinAPI. Cei mai circotasi ar putea comenta chiar despre inutilitatea apelului la PathFileExists(), avind in vedere ca functia _tstat64() trateaza singura caile cu wildcard-uri prin ele. Eu va spun doar atit: “mici scapari”.

In cazul in care nu tinem sa scriem cod portabil cu functii care exista doar pe Windows, miinile negre ne intind si o varianta cu WinAPI:

long long GetFileSizeFastest(const TCHAR* szFilePath)
{
    if (!szFilePath || !szFilePath[0] ||
        !PathFileExists(szFilePath))
        return -1;

    WIN32_FIND_DATA sFileData;
    HANDLE hFind = FindFirstFile(szFilePath, &sFileData);
    if (hFind == INVALID_HANDLE_VALUE)
        return -1;

    FindClose(hFind);

    return  (sFileData.nFileSizeHigh * (MAXDWORD+1LL)) +
        sFileData.nFileSizeLow;
}

Din nou clevetitorii ar putea sa se intrebe cum e functia asta “Fastest”, daca ea interogheaza filesystemu’ de 2 ori despre fisier. In cei 9 ani care l-au facut expert in C++, Silviu n-a invatat inca sa compare string-uri; vorba aia, abia a aflat despre fisiere, sa avem un pic de rabdare cu el. Inca o data: “mici scapari”.

Intr-unul din comentariile pe care probabil le va sterge in curind, minerul a marturisit ca lucreaza la o aplicatie care valideaza numele de fisiere folosind expresii regulate. Stie ca se poate si fara, dar nu e “profesional”. Chestia asta suna intr-un asemenea hal, incit ma tem ca ar putea sa fie o tentativa de sarcasm din partea lui, poate chiar prima in cei 30 de ani de cind e expert in Atitudine. Daca e pe bune, e doar o noua “mica scapare”, nimic grav.

Problema e ca se cam aduna “micile scapari” si ca numarul lor creste dupa fiecare corectura, in loc sa scada. Cam de cite “mici scapari” o fi avind nevoie pentru a realiza ca de fapt are de-a face cu o “mare scapare” in ceea ce priveste programarea?

Retorica aceasta este flasca, evident. Puroiul are o intreaga pleiada de justificari pentru faptul ca de 9 ani si 4 zile nu reuseste sa scrie o functie care sa afle dimensiunea unui fisier. In primul rind, in mintea lui (pardon, a unui “prieten”) e acceptabil sa publici cod care nu se compileaza, pentru ca ala care-l ia trebuie sa mai munceasca si el, futu-l in gura de oportunist. Cu alte cuvinte, cind unu’ e asa de incepator incit cauta pe net cum se afla dimensiunea unui fisier, in mod cert este calificat sa recunoasca cazurile limita care pot aparea si sa le trateze singur (sau sa stie cum sta treaba cu WIN32). Silviu i-a aratat ce era mai important, si anume numele unei functii. Mai departe se descurca incepatorul ala, desi Silviu nu s-a descurcat, cu toti cei 9 ani de dat la tirnacop cu care se lauda. Cred ca asta insemna “and staff” ala de dupa pleonasmul cu “CRT run-time library”.

Un suflet mare a incercat sa-i explice ca lumea are tendinta sa te creada prost daca publici prostii, aratind chiar cu degetul in directia lui Bullschildt, dar Silviu nu e un om care sa faca legaturi (desi ocazional il mai paleste cite un moment Poirot). Putem doar specula motivul pentru care Silviu n-a sters acel comentariu eretic si speram ca-i implicat un anumit tip de morcov, dar oricum, a explicat pe blog-ul de atitudine de ce are el dreptul sa faca pe Domnul Trandafir:

În cariera mea am întâlnit mulţi oameni talentaţi, foarte buni profesionişti, dar la toţi am văzut slăbiciuni tehnice. Cu siguranţă şi Mihnea are, la fel cum am şi eu.

Trebuie sa recunosc ca asta m-a enervat un pic. Acest Pitic Porno al forumurilor romanesti de programare, care nu stie sa caute intr-un map sau sa afle dimensiunea unui fisier, poate vedea “slabiciuni tehnice” la altii, pisa-l-as in inima. Mai mult, lacunele mele le scuza pe ale lui, chiar daca ale lui sint in subiecte care i s-ar parea banale unui elev de liceu, iar pe ale mele poate doar sa le conjectureze in baza filosofiei “nimeni nu-i perfect”. Desi i-am mai explicat de vreo doua ori, el continua sa ignore faptul ca eu nu scriu tutoriale, deci nu conteaza cit de incompetent sint. Cind scrii ceva, nu te raportezi la ceilalti gaozari care scriu timpenii pe codeguru sau pe blogurile lor “tehnice”, bai pula. Te raportezi la rezultate, ca programarea e o stiinta exacta, nu e expresionism abstract. Daca postezi cacaturi care nu merg si pe care nici tu nu le intelegi, puti demonstrabil a prost si faptul ca mai sint si altii ca tine nu e o scuza.

Tot in ultima lui luare de pozitie, ortacul revine la o tema mai veche, cea a Adversarului Colectiv. In urma cu ceva vreme el era convins ca jos8cal si cu mine sintem aceeasi persoana pentru ca ne luam de timpeniile lui, desi acum neaga ca ar fi zis asa ceva. Acum ma face pe mine raspunzator de faptul ca cineva a pus niste cod gresit intr-un comentariu la el pe blog. Aparent eu trebuia sa ma iau si de ala, dar n-am facut-o pentru ca si eu gresesc, sau ceva; n-am inteles, logica subterana imi scapa uneori. Minerul n-a priceput inca faptul ca tintele predilecte ale acestui blog sint oamenii care persista in prostie chiar si dupa ce li se spune ca ar fi mai bine sa stea in banca lor si sa se rezume la pus intrebari, iar el primeste atit de multa atentie pentru ca e cel mai penal reprezentat al acestei subspecii.

In finalul justificarii si-asa destul de dezlinate, Silviu recurge la o manevra des intilnita la imbecilii ramasi fara argumente: expresia “m-am plictisit”. Laolalta cu acuza “f(r)ustratule”, sau eventual dupa ce aceasta se dovedeste ineficienta, aruncarea lui “m-am plictisit” intr-o discutie se face in speranta ca il vei inchide pe interlocutor cind realitatea iti e potrivnica, dar vrei totusi sa cazi in picioare. Pentru a completa starea de spirit in care era el cind facea apel la respect (din pacate a sters apelul intre timp), ma vad fortat sa reiau un pasaj liric citat de colegu’ jos8cal intr-un post mai vechi despre felul in care societatea si Internetul il dezamagesc zilnic pe Silviu:

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.

Deoarece un bou nu poate supravietui niciodata singur, Ovidiu “MVP” Cucu a tinut sa-si arate in mod subtil solidaritatea cu cauza mineriadei. Cititorii nostri fideli sigur n-au nimic mai bun de facut decit sa tina minte cum speculam acum citeva post-uri ca Ovidiu este cel care-l ajuta pe Silviu sa-si spele trecutul fara sa lase urme. Atasatul politic pe linga uzina Codexpert a decis sa-si dea jos masca, semnind citet ultima editare a periplului codexpertic al lui Silviu prin lumea fisierelor. Motivul trecut de MVP in condica este “Few cosmetics“. Asta e noul eufemism aprobat in Sedinta Extraordinara de catre AXTI pentru “facut sa mearga dupa un an”. Cosmetica e ce le va trebui lor daca Mos Craciun imi aduce anul asta aruncatorul ala de flacari de care-i tot zic.

PS: avem doua pagini noi la care se poate ajunge din coltu’ rusinii, adica din dreapta-sus: Idei in Monolog, cu citate din viata si opera personalitatilor din programarea romaneasca, si Intreaba-l pe Capitanul Kirk unde invitatul nostru semi-permanent Iacob Tiberu ia interviuri acelorasi personalitati.

Advertisements

9 Responses to “A patra corectura”

  1. brigata cu dex-u-n dinti Says:

    corecteaza “inca odata: mici scapari” cu “inca o data: mici scapari”. e vorba de o enumerare (o data, de doua ori) si se scrie despartiti. 😛

  2. Am corectat, mersi. Sper ca acum isi va putea justifica minerul toate dezacordurile, i-urile lipsa si virgulele intre subiect si predicat prin aceasta greseala a mea.

  3. brigata cu dex-u-n dinti Says:

    oricum nu se prindea, ca lui nu ii plac enumerarile. 🙂

  4. You bad pipl listen to me: you bad pipl leev Silviu alon. He good man, you bad man. He teach pipl how to program, you say ugly thing of him.
    I poor student in Bangladesh. My English not good, I can’t read MSDN. My English bad, only good for Silviu blog.
    Bangladesh poor, pipl has slow Computer, I need Fast File Size! Slow File Size no good.
    I need learn find File size fast, not much code. His code better, no open file, nu close handle. Yunow, Me lazy.

  5. Ba baieti, ce naiba ? N-a mai facut omu’ (a se citi “THE Man”) nimic demn de a fi mentionat ?

    Ma plictisesc asteptand … 😀

  6. Iata ca Silviu are o omoloaga in lumea filosofiei de budoar. WordPress a bagat comentariul de deasupra la spam, dar eu l-am adus inapoi ca sa se poata scalda tot omul in Bezna Zorilor, aceasta metafora cu iz de huila ce nu ne lasa sa uitam ca unii incearca sa Aiba O Parere chiar si acolo, sub pamint. Din eseul la care duce link-ul de mai sus mie mi-a placut urmatorul pasaj:

    “Experienta ne-a invatat pe toti ca perfectiunea, indiferent asupra carei entitati alegem sa o aplicam, e mai mult o iluzie dacat un dat.”

    Toti neexperimentatii care iau perfectiunea drept un dat si nu se feresc sa imbrace nimicul in constatari pompoase sint rugati sa purceada in directia beznei zorilor pentru doza zilnica de epistemologie. Experimentatii pot accede direct la nivelul urmator, procurindu-si singuri revista Cool Girl de pe unde pot.

  7. thefatredguy Says:

    Hmm, n-a mai iesit nimic din mina in ultima vreme. Pacat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: