Fizica pentru dotnetisti

Posted in 112, Regula 0 on November 18th, 2013 by Mihnea

Multi dintre noi au trecut prin clasa a 6-a. Majoritatea au facut experimentul ala cu rigla de plastic, puloverul si bucatelele de hirtie. Din pacate, elevii din Cisnadie, jud. Sibiu, n-au avut acest privilegiu. Printre ei se regaseste si intiiul dotnetist, evanghelist si bautor de ceai chinezesc al tarii, Aurelian Popa:

Eu Propun™ ca la urmatorul code camp in care Aurel ne invata cum sa facem task-uri de 3 zile intr-o ora, sa organizam si un workshop cu scamatorii d-astea. Sa nu mai bata omul atita amar de drum pina in China, cind partea relevanta din China se gaseste deja in ironic botezatul Complex Europa la pretul de 65 de lei:

Micul Aurel

Bonus video – Aurelian la 60 de ani, in lupta cu haterii:

PS: va dati seama cum ar fi daca pe planeta ronua s-ar prinde Discovery sau Wikipedia si ar afla Aurel despre magicienii profesionisti? Sau macar de Magicianul Rilea…

Tags: , , , , , , , , , , , , , ,

Diamante si rubine n-au valoare pentru mine

Posted in 112, Slagare internationale on June 21st, 2013 by Mihnea

Ruby este o artista de etnie conlocuitoare care cinta manele softcore despre dezvoltare personala pe intuneric. Din pacate lucrurile nu se opresc aici. In unele cercuri si mai respingatoare din punct de vedere moral decit consumatorii de reggaeton, Ruby este si numele unui limbaj de programare inventat de un onanist japonez si adoptat de hipsterii pentru care Python este prea mainstream si prea ne-Perl.

Exista multe limbaje penibile pe lume si de obicei nu simt nevoia sa le scot in public si sa ma pis pe ele. Pur si simplu le ignor, cum am facut si cu Ruby pina azi, cind n-am mai putut. Azi am preluat un proiect de la altcineva, si am descoperit ca foloseste ceva numit CocoaPods. Deoarece nu mai auzisem in viata mea de aceasta tehnologie, am dat cu goagal si am aflat ca CocoaPods este “the best way to manage library dependencies in Objective-C projects”. Citation needed.

Bun, deci e un package manager. Spre imensa mea bucurie, primul lucru scris pe pagina lor este ca tot ce trebuie sa faci ca sa-l instalezi e sa scrii “sudo gem install cocoapods”. Asa ca dai, si stai. Dupa ce te uiti cam un minut la terminalul in care nu se intimpla nimic, vrei sa scrii in goagal “sudo gem install cocoapods hangs”. Dar nu apuci sa scrii toata asta, pentru ca dupa ce dai paste la comanda in search box, goagal iti sugereaza singurel sa-ti termini ideea cu “hangs” sau “does nothing”:

sugestiaImbucurator. Mai putin imbucurator e ca nimeni nu pare sa aiba o solutie clara. Afli, totusi, doua lucruri importante. In primul rind, cica daca dai intii “gem update –system” va dura mai putin. In al doilea rind, daca vrei sa vezi ca se intimpla ceva, poti sa-i dai optiunea -V lui gem. Este momentul sa ne intrebam cine pula noastra e gem.

Gem este package managerul lui Ruby. Package managerul de Cocoa se instaleaza folosind package managerul de Ruby, fiind scris in Ruby. Daca n-ar fi asa de rasuflat meme-ul, ar urma o poza cu xzibit care a pus un package manager in package managerul tau ca sa poti managerui package-urile. Apropo, gem e instalat de catre macports, package managerul lui OSX pentru programe open source.

package_managementAici trebuie sa intrerup un pic firul epic ca sa va atrag atentia asupra numelui gem. Cum ar veni, printr-o potriveala cosmica, termenul de gema era deja consacrat pentru “bucata de cod care face ceva util”, dar se incadreaza si in tema mineralogica generala, ca doar rubinul e si el o gema. Jocul de cuvinte este de o asemenea ingeniozitate si dragutenie, incit utilizatorului aproape ca-i rasar panselute in rect de atita bucurie si optimism. De altfel, tot cultul acestui limbaj este saturat de o abominabila dragutenie infantila, de zici ca-i facut de unicornul de plus al unei fetite de 5 ani. Sau ma rog, de un japonez oligofren. Poate ati auzit de cartea lor cu desene presupus amuzante, scrisa de unul care-si spune “why” si care de 4 ani sufera de o criza prelungita de Asperger’s si respira intr-o punga.

In fine, sa lasam unicornii si sa revenim la rulat gem. De curiozitate, am dat cu -V inainte sa-i dau cu update, ca sa pot sa compar cu ce face dupa update, de zic diversi ca merge mai repede. Secretul era ca inainte isi lua fisierele de pe rubygems.org, care probabil e tinut pe dialup acasa la ala cu Asperger’s, iar dupa update le ia de pe amazon. Dupa citeva minute de downloadat 50 de versiuni ale aceluiasi fisier, si dupa ce te intreaba daca e OK sa suprascrie un script instalat tot de el, gem te anunta triumfator ca se pune pe compilat lucruri. Imediat dupa aia, iti zice urmatoarele:

ERROR: While executing gem … (NoMethodError)
undefined method `join’ for nil:NilClass

Ce bine ca folosim un package manager, ca sa evitam problemele care pot aparea daca stam sa compilam din surse! Cautam pe goagal noul indiciu si gasim o voce respectata in comunitatea dezvoltatorilor Ruby: blogul de la Ruby on Rails (pentru neofiti, Rails e o biblioteca pentru transformat Ruby intr-un PHP mai incet). Aici aflam ca e o problema comuna, si ca orice problema comuna, nu poate fi rezolvata de programatorii “sistemului”, caci dinsii sint prea ocupati sa-si deseneze unul altuia curcubee in oracole. Trebuie sa stergi tu de mina directorul source_cache de unde o fi el. Observam si ca autorul postului, fiind un programator web cu experienta, care scrie biblioteci pentru alti programatori web, a dat direct paste la text din consola in HTML, cu enter-uri, asteptindu-se sa ramina formatat. Ia ziceti, cind scrie Chad acolo “run the following command”, care e comanda? “gem env”? “gem env RubyGems”? “gem env RubyGems Environment”?

Am gasit directorul, l-am sters. Fix aceeasi eroare. In acest moment, un coleg a descoperit alt link in care se sugera sa incerci fara -V. Eu am zis ca nu cred asa ceva si am refuzat sa incerc. Cit ma pregateam sa ma uit in cacatul ala de script care da eroare ca sa incerc sa inteleg ce se petrece, colegul a rulat totusi fara -V la el pe calculator. Si a mers. Dupa care am dat si eu, si a mers si la mine. Tocmai am incercat pe un al treilea calculator acum, si se intimpla la fel. Se fute doar daca-i zici sa-ti arate ce face.

“RubyGems is a sophisticated package manager for Ruby.” E o pula.

 

 

 

Tags: , , , , , , , , , , ,

Analfabetia de miercuri dimineata

Posted in 112 on March 28th, 2012 by Mihnea

Ca oricarui militian, lui Ovidiu Cucu ii place sa intocmeasca liste: liste cu norme, liste cu abateri de la norme, liste cu sanctiuni de aplicat pentru abateri de la norme, liste cu sanctionati si sanctionabili etc. De asemenea, e ferm convins ca odata intocmita, o lista trebuie lasata asa cum e; orice manipulare de lista il scoate din ale lui. Astazi el s-a decis sa redacteze o lista cu fruntasi in ale programarii si s-o posteze la avizierul ograzii, ca material de studiu pentru membrii Uniunii Tineretului Codexpert.

Ce e insa cu adevarat interesant e modul in care a luat nastere aceasta pornire. Ovidiu marturiseste ca ideea rabojului i-a venit citind o lista asemanatoare pe site-ul lec-academy.ro, un colt de internet unde niste tutorialisti intreprinzatori isi propun sa ne lumineze zilnic cu vorbe sau imagini din programare sau Microsoft Office. Sa spicuim, dara, din lista celor mai importanti 20 de programatori ai tuturor timpurilor in viziunea extrem de relevanta a acestor antrenori de secretare:

Pe primul loc este Tim Berners-Lee, care “a fost clasat pe locul ntai […] in lista Telegraph a celor 100 de marii genii.”

Ne bucura nespus sa-l vedem pe 2 pe marele programator Matt Mullenweg. Cum, nu stiti cine e Matt? E ala care a facut WordPress.

Urmeaza Larry Page care e “top 27 cei mai bogat miliardari”, precum si colegul sau Sergey, care este “top 28 cei mai bogat miliardari”.

Despre Linus Torvalds aflam ca “exista mii de variante / distributiile de servere de web Linux si multe ruleaza pe el“. Deci Linux ruleaza pe el Linux, sau pe el Linus?

Dennis Ritchie este “creatocul limbajului C si un mare dezvoltator a sistemului de operare UNIX”.

Brian Kernighan este “autorul a mai multe programe UNIX”. Sigur, orice student de la orice facultate de calculatoare este autorul “a mai multe” programe UNIX, ca doar e cursul ala de SO unde te chinuie cu asa ceva, deci locul asta ar trebui impartit de Brian cu toti studentii din toate timpurile. Cel putin eu asta inteleg din epifatul tutorialistilor.

Ken Thompson este “un pionier american in informatica, si a ajutat la crearea limbaj de programare B”. Redactorul a fost si el un mare pionier, motiv pentru care a petrecut mai mult timp la muncile patriotice decit in clasa. Asa se explica de ce nu stie cum se declina “limbaj”.

Rasmus Lerdorf “a autorizat primele 2 versiuni de PHP, si apoi a contribuit la dezvoltarea celor mai recente ale PHP. Astazi, PHP ruleaza peste 34% dintre site-urile online“. Sint curios ce cuvint era in original in engleza, de a tradus Google “autorizat”. De asemenea, daca s-ar fi pus si site-urile offline pe care ruleaza “cele mai recente PHP”, cred ca procentul ala ar fi depasit 100%.

Ca sa nu se simta singur Matt Mullenweg in lista (ala care a scris WordPress, in caz ca ati uitat deja cine e), il avem ceva mai jos si pe celebrul programator Jason Fried, a carui contributie la propasirea omenirii este un site ce “contine unele aplicatii web uimitoare“.

Alan Cooper “este numit parintele Visual Basic, deai mare parte din munca pentru Visual Basic a fost realizata de grupul intern de la Microsoft”. Chiar daca n-a muncit, aparent a fost facut parinte pentru ca “a contribuit la interfata grafica pentru sistemul API“. In caz ca nu stiti, interfata grafica pentru sistemul API este folosita pentru a realiza interfete GUI de urmarit IP-uri.

Larry Wall este S.A. Societate pe actiuni? Silviu Ardelean?

John Resig completeaza constelatia frecatorilor de text din care mai fac parte Matt Mullenweg (ala cu WordPress) si Jason Fried (ala cu site-ul de site-uri). Asta a facut jQuery, dar nu s-a multumit cu atit: el este si blogger.

Guido van Rossum este “autorul limbajul de programare Python”.

Daca vreti sa invatati programare de la oamenii care au intocmit aceasta lista, ii puteti contacta la office@leconline.ro sau direct la sediul din Strada Frumoasa. Frumoasa, da’ proasta.

PS: in ochii albastri ai lui Ovidiu, lista comite o mare nedreptate istorica omitind s-o includa pe Grace Hopper, un fel de Amelia Earhart a programarii. Chestia asta zdruncina tot fundamentul moral pe care este cladit demersul tutorialistic, deci ar fi bine sa nu-i dati crezare si sa folositi in schimb Lista lui Ovidiu cind simtiti nevoia sa va inchinati si nu stiti cui.

 

Tags: , , , , , , , , , , , ,

Concurs SuperEroul Bitdefender

Posted in 112, Regula 0 on January 20th, 2012 by jos8cal

Se pare ca divortul intentat de Silviu Ardelean celor de la Bitdefender i-a adus intr-un an de zile in pragul disperarii. Dupa 3 ani in care s-a luptat cu regula 0 pentru imaginea Bitdefender pe toate forumurile de programare interne si internationale, Silviu s-a retras subit, lasind in urma sa oameni dezorientati si fara reper moral. Contactat telefonic de redactia noastra, Nechifor Trepetnic, angajat Bitdefender, ne-a relatat cu vocea inecata in lacrimi:

Practic nu mai aveam identitate. Am fost decapitati moral si spiritual. Sincer sa va spun, nici nu stiam incotro sa apucam de suparare, asa ca ne-am intors la credinta celor din care ne tragem, adica la daci, mai exact la capul lor de lup.

Firmilian Aristobul, un apropiat al lui Silviu, a completat:

Trebuia sa anticipam plecarea lui Silviu dintre noi, ca nu de nebun isi inalta putin cite putin monitorul spre cer, in fiecare zi. Dar noi, nevrednici, am continuat sa-i exploatam abilitatile de diplomat.

Dorind sa ia atitudine, multinationala a dat zvon in tara, prin gura celor de la Creative Monkeyz, ca va oferi un Wacom Intuos 4 Medium acelui artist care va fi in stare sa conceapa un trup pe masura capului de lup. Iata ce au de spus cei de la CM despre asta:

tot ce trebuie e sa faceti e sa “produceti” o lucrare grafica originala, in care, SuperEroul Bitdefender, imaginat de voi, sa se prezinte in toata gloria. Trebuie sa fie un erou original – poate fi robot, umanoid, animal, leguma, fruct, strutzocangur, rinocerb, etc. (sidekick pentru Bitalau!?). Puteti folosi orice mijloace doriti – fie grafica digitala via Photoshop, Illustrator, etc. ; fie randari din programe 3D, sau desen traditional (also pictura sau fotografie).

Odata realizata imaginea, trimiteti-o pe adresa de email: concurscm@gmail.com. lucrarile selectate apar in concurs, implicit in galerie.

Pozele selectate vor fi expuse in toate galeriile din Valea Jiului, in limita orelor de program.

Noi uram succes tuturor artistilor cu aplecare spre pix.

Tags: , , , , , , , , , , ,

Scoala ardeleana de aritmetica

Posted in 112, Premiul n00bel on April 12th, 2011 by Mihnea

Viata e grea in Valea Jiului. Intre o descindere in abataj si o incursiune horticola la Bucuresti nu-ti ramine mult timp pentru dezvoltare personala. Daca vrei sa-ti cultivi o pasiune, cum ar fi pescuitul, trebuie sa renunti la unele chestii mai putin importante, cum ar fi scoala primara. Tragedia devine evidenta abia cind destinul te forteaza sa dai pestele din mina pe programarea de pe gard si cei din jurul tau descopera ca ai lipsit cind s-a predat impartirea cu rest sau formarea pluralului.

In post-ul despre atoi-ul ortacului va ziceam, printre altele, despre pasiunea lui Silviu Ardelean pentru modulo. Un cititor vigilent a remarcat insa ca nu era prima data cind fostul viitor pescar rescria regulile aritmeticii. Intr-un thread de pe vremea cind Gardianul Ovidiu nu gasise inca un pretext pentru a denunta unilateral dialogul dintre mine si experti povesteam cum aplica Peter principiile programarii defensive:

int& operator[](unsigned int index)
{
    index = index % count();
    return m_elements[index];
}

Ce a inteles minerul din asta:

Totusi… ma intreb daca el a facut vreodata debug pe acest cod. Sincer, ma cam indoiesc, pentru ca atunci, ar fi constatat ca tot timpul elementul ar fi fost valoarea returnata de count() [datorita faptului ca index era mai mic decat aceasta valoare] si in mod normal, ultimul index al lui m_elements ar fi fost count() – 1. Pracic, se accesa un index inexistent ( valoarea returnata de count() ). Sau?

Deci in 2009, pe cind era expert de 8 ani in C++ ([1]), Silviu credea ca restul impartirii lui 4 la 9 este 9. In lumina acestor fapte, ne intrebam ce a vrut de fapt sa faca cu % 10 ala in implementarea lui de atoi(). Sau la implinirea a 10 ani de experienta a descoperit cum functioneaza de fapt modulo si s-a decis sa-l foloseasca si unde nu face nimic, sau a vrut ca atoi-ul lui sa creada ca toate cifrele sint 10. Sau?

Putin mai incolo in thread, insusi Gardianul Ovidiu incearca sa domoleasca zelul cu care minerul explica principiile de convietuire armonioasa cu sizeof (operatorul care returneaza lungimea array-urilor dinamice, daca tineti minte). Ovidiu intinde urmatoarea nada:

size_t v = 0;
while(v < sizeof(v++))
{
    printf("%u", v);
}

Silviu, cu pedala mintii la podea, raspunde:

Fara a rula, iti zic sigur ca va crapa la printf(), chiar daca pasezi “%d” sau “%d”. printf()-ul are limitele sale, ptr. tipuri simple (int, float, char, etc).
Pune std::cout in loc de printf() si nu mai crapa. Chiar afiseaza ok valorile lui v.

Mare atentie, Silviu, ca si pamintul are limitele sale, ca si printf(), si s-ar putea ca intr-o zi sa se surpe pur si simplu sub tine.

In incheierea paginii aflam ce l-a determinat pe Silviu sa schimbe undita cu calculatorul personal:

Daca as lucra intr-un domeniu embeded unde trebuie sa ma supun unor legi mai stricte, atunci las si de la mine. Din fericire doar mi-a mirosit cu ce se mananca si e putin porbabil sa activez vreo data intr-un astfel de domeniu. Acum 2 ani o firma vroia sa ma atraga pe o pozitie de team leader exact pe ceva “embeded” si le-am multumit frumos. Prefer creeativitatea si complexitatea specifica aplicatiilor ptr. PC.

Eu sper ca de fapt aia vroiau sa-l atraga pe Silviu intr-un beci la marginea orasului unde sa-i arate tot felul de pozitii si obiecte emdeduibile in cur. Altfel vreau sa-i cunosc, in primul rind ca sa nu-mi iau vreodata cuptor cu microunde programat de ei si in al doilea rind ca sa le ofer gratuit un abonament gold la RSS-ul site-ului nostru.

Silviu, mopul e la tine. Speram sa nu te dezminti nici de data asta si sa stergi macar “mica scapare” cu operatorul %. Adevaratul test de creativitate va fi insa la aia cu siguranta craparii, ca pe-acolo nu prea vad cum ai putea spala rusinea fara ajutorul mentorului tau (“few cosmetics”, sau?). Sper ca vei opta pentru o explicatie tehnica, cu cuvintele tale, a modului in care functioneaza functiile variadice si mintea minerului. Asta m-ar bucura cu adevarat.

Fig. 1: Silviu propune, codexpertii dau cu mopu'

 

PS: Avind in vedere ca am ris deja de multiple ori de faptul ca multinationala emblematica nu te-a mai dorit asa de tare cum o doreai tu pe ea, poti sa-ti actualizezi linkedin-ul ala, ca nu mai ai ce secret sa tii. In plus, ne-au zis noii tai colegi ca se intreaba daca ti-e rusine cu alegerea facuta, de nu vrei sa o impartasesti public, tu care in rest esti un om asa de deschis.

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Despre simularea si disimularea creierului

Posted in 112, Premiul n00bel on April 8th, 2011 by Mihnea

Motto-ul site-ului scientia.ro este “Stiinta pe intelesul tuturor”. Pe bune, chiar al tuturor? Si al astora? Si al lui Silviu Ardelean? Din ce s-o fi tragind convingerea fondatorilor ca oricine poate intelege “stiinta” – sa fie noblete, naivitate sau comunism? Sa fie oare posibil sa prezinti “stiinta” asta (orice ar fi ea) intr-un asemenea mod incit s-o poata pricepe si cea mai intunecata minte de miner?

Din fericire putem gasi raspunsul negativ la aceasta ultima intrebare pe forumul cu care este inzestrat scientia.ro, unde care cei ce se simt in target – “tuturorii”, daca-mi permiteti – ne arata ce-au inteles si dau glas intrebarilor ce le framinta starea de veghe. Sa-i dam cuvintul lui Sorin_dan84:

Salut. Am vazut de curand o stire despre computere uriase care pot simula clima de pe pamant, si alte chiestii(chiar formarea unei galaxii)…ce spuneti in cati ani credeti ca se poate simul toata viata de pe pamant?     Si de aici ideea unor regizori de filme sf., gen Matrix.

Si daca ar fi creat un simulator al Terei, plecand de la tehnologia actuala(punand in acest simulator cam toate cunostintele stintifice actuale si apoi “furand” noi descoperiri stintifice de la simulator?…..sa zicem ca in simulator 1 an=cu o secunda la noi.
Ar fi un computer cat o metropola…un oras calculator?, daca nu pun in aplicare nanotehnologia.

In caz ca n-ati inteles pentru ca inca asteptati sa se inchida paranteza aia, propunerea lui Sorin este ca cercetatorii sa simuleze niste mini-cercetatori si doar sa se uite ce mini-cerceteaza aia. Eu imi permit sa-i propun o chestie si mai simpla, pe care am vazut-o intr-un film: pentru a obtine ORICE, te apuci si faci un robot care produce acel ORICE, dar de asemenea poate calatori inapoi in timp. Nici nu termini bine de gindit cu gindul la aceasta idee, ca robotul va si aparea linga tine cu obiectul dorit, ca doar te-ai gindit sa-l faci, deci l-ai facut, deci el s-a intors in timp la tine. Nici nu mai e nevoie sa-l faci.

Simtind ca a dat peste o idee de valoare, Sorin continua:

Astept pareri de la specialisti in domeniu….sau poate am dat o idee de proiect, care ar putea fi impartasit(japonezilor sau americanilor – ca la noi e criza ) pt. accelerarea stiitei ……Multumesc.

Cine se baga la implementarea proiectului? Oportunitatile ca asta nu cresc in copaci, o singura data in viata ai sansa sa-ti dea cineva o asemenea idee (daca o ai si p-aia). Ar fi pacat sa dati cu piciorul. Nu faceti ca florin_, care s-a impotmolit in calculele unor alti “specialisti”:

Acum vre-o multi ani in urma citisem undeva ca specialistii in domeniu au venit cu cea mai acurata prezicere a cite PC-uri de pe vremea aia (cam Pentium III la 0.5-1GHz) ar fi necesare sa faca toate operatiunile pe care le face creierul uman (toate functiile si cele constiente si cele inconstiente).

Ei bine cantitatea de PC-uri necesare ar fi  asa de mare ca nu ar fi  incaput in intreg universul vizibil de azi.

Ei bine, eu as propune pur si simplu sa simulam un univers mai mare, in care sa incapa toate PC-urile necesare pentru a simula universul nostru mai mic. Nu stiu daca propunerea mea e fezabila, caci nu ma pricep la calcul polinomial cu n arbitrar:

Explicatia lor tinea de faptul ca sinapsele si retelele neuronale pot executa calcul polinomial cu n arbitrar de mare in timp linear (cu alte cuvinte retelele neuronale ar putea rezolva probleme ce necesita xn operatii intr-un timp proportional nu cu xn ci cu x1 (linear)).

Noroc ca a venit Dendros sa le deschida si mai mult orizonturile:

E doar o parere. Dar daca e adevarata afirmatia lui florin_, suntem departe de a atinge intregul potential al creierului sau poate nu-l vom atinge niciodata pe deplin, fiindca ar putea fi nelimitat, doar sa avem timp suficient.

Luati aminte, daca ai suficient timp, poti sa numeri pina la infinit si poti atinge limita potentialului nelimitat. Totusi trebuie sa recunoasteti ca omul are dreptate, participantii la discutie nu au prea multe sanse de a atinge vreodata pe deplin potentialul unui creier.

Subiectul neuronilor si al retelelor pe care acestia le formeaza apare frecvent in discutiile de pe scientia.ro. Este si normal, caci oamenii care fac diferenta nu se multumesc cu status quo-ul, ci incearca tot timpul sa obtina ceea ce n-au. tavy ne explica cum sta treaba cu translatoarele automate, aceste unelte ale diavolului ce-l sperie pe Silviu Ardelean:

Traducerile nu sunt chestiuni exacte, de multe ori sunt subiective și de multe ori nu se pot face sau dau aberații mari dacă sunt scoase din context. Din acest motiv, la traduceri se pretează mai bine rețelele neuronale în dezavantajul calculului algoritmic.

Stiu ca acum sinteti pe cale sa va inlocuiti toate calculele algoritmice cu retele neuronale, dar mai zaboviti oleaca. Inainte de a te arunca cu capul inainte in truda, e bine sa te intrebi daca meseria pe care incerci s-o practici chiar exista, asa cum face XploreDesign in thread-ul Meseria de programator – mit sau realitate:

Una dintre cele mai căutate profesii  este cea de programator. Sunt foarte multe motivele care te-ar putea determina să optezi pentru o asemenea opțiune, dar cel mai important, după părerea mea, este faptul că această profesie îți oferă o deschidere internațională

Ce coincidenta, si ing. Boata Cristian zice la fel.

Simpla cunoaștere a unui limbaj de programare, sau a unei tehnologii, nu iți poate asigura statutul de programator, mult dorit. E nevoie de mult mai mult. E nevoie de experiență, e nevoie de cunoașterea mai multor limbaje de programare sau de scripting, e nevoie de cunoașterea celor mai noi tehnologii precum și de un portofoliu consistent de lucrari care să te diferențieze de ceilalți concurenți și, un lucru foarte important, e nevoie de ”atitudine” ”pro-to-do”.

Atitudine? Protodo? Portofoliu de lucrari? Inseamna ca Silviu si-a asigurat “statutul de programator virgula mult dorit”. Unde mai pui ca are si inteligenta emotionala…

Afirmatiile provocatoare ale lui Xplorica au alimentat nesiguranta alle_csandr_ei, care n-a mai rezistat si a pus intrebarea ce statea pe buzele tuturor:

As avea si eu o intrebare cat de bine este sa fii programator? ???in comparatie cu alte meserii ma refer

Nici un post despre imbecilitate nu poate fi complet fara un citat din viorel2005, singurul om in viata a carui retardare iese in evidenta chiar si pe codexpert. Sa vedem ce are el de zis despre… pula mea, n-am inteles. Poate gasiti voi vreo legatura intre propozitiile din comunicarea sa, sau macar intre cuvintele din interiorul propozitiilor:

In prima versiune a cartii lui Charles Petzold de programare in Windows, era o propozitie despre niste “eroi necunoscuti” care au pus bazele sistemului Windows(chiar daca a fost inspirat de la Apple, totusi el este un succes comercial). Acum hardware-ul dicteaza totul si apoi software-ul. De aceea nu exista tablete Windows. Si atunci se ajunge intr-o directie managed. Legea lui Moore va limita puterea lui C++.

Cine sloboz e Moore asta, ca eu nu l-am votat?

LE: inca una repede, ca am dat de ea dupa ce am postat. Din putul gindirii numit wikipedia in romana aflam ce-i ala un “systems programmer”:

Programatorul de sistem este persoana care se ocupă de instalarea / generarea și întreținerea sistemului de operare furnizat de producătorul unui calculator pentru a-l adapta la cerințele utilizatorului. Sistemul de operare este frecvent distribuit pe un suport de date într-o formă standard, conținând un maxim de funcțiuni. Din această formă standard programatorul de sistem poate instala sau genera un sistem de operare concret, potrivit configurației hardware individuale și nevoilor utilizatorului.

Zic ca merita un loc caldut in panoplia esecurilor wikipedofile, linga articolul despre CoBra. Tu cind ti-ai generat ultima oara Windows-ul?

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Aventuri 2D in Valea Jiului

Posted in 112, Premiul n00bel on January 27th, 2011 by Mihnea

Dupa cum ne-a obisnuit deja, minerul nu se lasa cu una, cu doua cind spune o timpenie. El continua sa loveasca problema iar si iar, pina aceasta recunoaste ca a ascuns droguri, armament, munitie si masini de scris automate la peneteu, caci cu totii stim ca perseverenta e mama mineritului. Dupa ce i-a explicat lui viorel2005 cum sa reduca numarul de apeluri catre o functie facind parametrii sai variabile globale, a atacat chestiunea de fond, si anume o tehnologie pe care el a descoperit-o cu multi ani in urma: cum sa tii o matrice 2D intr-un array 1D. Daca va amintiti, aceasta problema a mai framintat ograda expertilor, deci clar e o chestie importanta, care ar merita FAQ-ul sau. Oricum, Silviu explica cu cuvintele lui tehnologia in cauza:

Edit: imi cer scuze, din greseala scrisesem corect “column” in subtitrari.

Tags: , , , , , , , , , ,

Cum sa nu trimiti un parametru catre o functie

Posted in 112, Premiul n00bel on January 26th, 2011 by Mihnea

Intrebat cum se poate trimite un array 2D unei functii care vrea un array 1D, Silviu Ardelean propune urmatoarea solutie:

Viorel, daca tot vrei sa folosesti bmp1, de ce nu-l folosesti ca membru al unei clase sau membru global (daca nu lucrezi OOP)? Atunci in functia ta de afisare il apelezi direct fara a-l mai pasa la functie.

Tags: , , , , , , , ,

A doua corectura (la sugestia lui Sorin)

Posted in 112, Codare cu premeditare, Premiul n00bel on November 24th, 2010 by Mihnea

Nici n-am dat bine submit la post-ul anterior, ca Silviu a luat iar atitudine. De data asta a pus “unsigned long” in loc de “long”, dar nu pentru ca ar bijbii in jurul solutiei dupa ce citeste aici, ci pentru ca:

According to Sorin’s observation I changed the long type to unsigned long.

Putin mai devreme, inainte de a vedea post-ul meu, Silviu ii raspunsese direct lui Sorin in felul urmator:

Absolutely. Nobody stops you to replace long with long long or unsigned long long.

Absolutely. Nimeni nu te oprea, dar o faceai degeaba, ca folosea _wstat(), care-ti returneaza dimensiunea pe 32 de biti. Dupa aia poti sa inlocuiesti tu ce vrei, ca e prea tirziu. Acum ar merge inlocuit, dar cineva totusi l-a oprit pe miner si nici dupa a doua corectura nu se descurca cu fisiere mai mari de 4 GB. Poate din a treia ii iese?

Probabil tot in urma “observatiei lui Sorin”, minerul a sters #ifdef-ul rusinos si din FAQ-ul la care tocmai dadusem link. Noroc ca o vreme de acum incolo pagina aia va fi in cache la Google cu aberatia originala. Probabil dupa ce va expira cache-ul, Silviu va pretinde ca a fost asa dintotdeauna (observati ca nu scrie “last edited”, deci MVP Ovidiu Cucu sau MVP Marius Bancila i-au dat o mina de ajutor cu editarea). Nu uitati: el isi recunoaste greselile.

PS: totusi, trebuie sa recunosc ca nu m-as fi gindit ca o functie care returneaza dimensiunea unui fisier poate genera atita amuzament. Inca o dovada ca tot ce-ti trebuie pentru ca sa te poti distra e o problema banala si un miner prost.

Tags: , , , , , , , , , ,

Prima corectura

Posted in 112, Codare cu premeditare, Premiul n00bel on November 24th, 2010 by Mihnea

Dupa cum preziceam in post-ul anterior, Silviu “Virgula” Ardelean si-a modificat pe furis codul la scurt timp dupa ce l-am vorbit de bine pe-aci. Din pacate pentru el, in loc sa-si intrebe prietenii cum se face de fapt (dupa cum i-am sugerat), el a incercat sa ne arate ca poate si singur, ajungind la urmatoarea varianta:

long GetFileSize(const TCHAR *szFilePath)
{
   long nSize = -1;

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

   return nSize;
}

Problema e ca nici asa nu e bine. Acum foloseste _wstat64() si pe 32 de biti, dar degeaba, ca pune rezultatul intr-un long, unde nu incape. A scapat de macro-ul ala penibil care arata ca dupa 8 ani de Visual Studio nu stie cum sa detecteze platforma, dar functia tot e limitata la 2 GB pe 32 de biti.

In timpul ce s-a scurs de la postarea originala, colegu’ jos8cal mi-a aratat ca de fapt dilema nu-i una noua, asa cum credeam eu. Lampasul lui Silviu a mai poposit si in urma cu un an pe spinoasa problema a dimensiunii fisierelor. Atunci avea inca blog cu ceas si sigla lu’ Steaua pe el, deci a avut nevoie de un alt canal prin care sa-si impartaseasca descoperirea cu restul expertilor in C++. Si cum nu-i loc mai bun pentru discutii intre experti decit insasi Comunitatea Expertilor C++, a pus-o de un FAQ la ei. Acum tot va ajunge la vorba mea, ca pentru a corecta post-ul ala fara sa scrie “edited by miner” va trebui sa apeleze la prietenii lui MVP-ei si fondatori de comunitati, cum l-am sfatuit sa faca de la inceput. Poate cu ocazia asta reuseste sa scrie si codul cum trebuie.

Tags: , , , , ,