存在與時間

Posted in Stand-up philosophy on March 15th, 2016 by jos8cal

Odata cu virsta isi face simtita prezenta si golul profesional si de obicei devine vizibil cind incepi sa ai mai multe hobby-uri decit timp liber. Lucrurile nu au stat insa tot timpul asa.

In amurgul omenirii chinezii se aflau intr-o stare degradanta din punct de vedere profesional. Fara o directie clara precum cea pe care o au astazi multumita unor companii de hardware, chinezii au fost pusi in situatia extrema de a trebui sa-si inventeze lumea. Roaba, busola, cosciugul sau hirtia sint doar citeva din lucrurile pentru care le multumim zi de zi. Hirtia de exemplu le-a adus faima mondiala, iar oamenii au construit lacasuri unde se inchid zi de zi pret de 5-10 minute pentru a oferi un omagiu Chinei si a avea o relatie intima cu ea.

Reminiscentele acestei mentalitati primitive pot fi intilnite si astazi in China. Aflat intr-o permanenta lupta cu timpul in incercarea sa de a rezolva task-uri evaluate la 3, 4 zile-om in sub o ora, Aurelian s-a vazut nevoit sa dezgroape valorile chinezesti si a mers chiar la sursa pentru o metaforica intoarcere in timp, la masa de lucru, la momentul Zero cind Hirtiei i se taia cordonul ombilicar. Mai jos avem o inregistrare de o inestimabila valoare epistemologica, un graunte incoltit inghetat in timp. Asa trebuie sa fi fost odata pe Pamint:

Update: Mai jos avem si partea a doua unde hirtia este aratata cu degetul si umilita in public. Atentie, imagini socante!

Tags: , , , , ,

Festivalul National de vorbit in public “Titlul fara nume” Fest

Posted in Premiul n00bel on February 29th, 2016 by jos8cal

… a ajuns la editia a VII-a si este in continuare in cautare de noi talente!

Prin urmare, daca aveti un titlu cu care credeti ca puteti intretine atmosfera timp de 45 de minute, sinteti asteptat cu drag pe 7 Mai la Cluj pentru a va invinge frica de vorbe si de public. Intrarea este libera, va asteptam cu drag!

PS. Mai jos aveti lista cu Titlurile aflate in concurs anul acesta:

primul11

 

 

 

 

 

 

 

 

 

 

 

 

Tags: , , , , , , ,

Adios muchaches

Posted in Stand-up philosophy on January 8th, 2016 by jos8cal

Garbage At The Deonar Landfill Site As Trash Mountain Rising in Mumbai Swamps Modi 21st Century Vision...Boys play as cows graze through garbage at the Deonar landfill site in Mumbai, India, on Wednesday, March 11, 2015. Mumbai is running out of space for its waste, and Deonar, Asia's oldest and largest dumpsite, is bursting. Each day, more than 500 trucks line up along a two-lane dirt road in an eastern suburb, waiting to add to a mountain of refuse tall enough to submerge the White House twice over. Photographer: Dhiraj Singh/BloombergInceput trist de an. Ca si cum pierderea lui George Pruteanu nu ar fi fost indeajuns, unul dintre cei mai importanti duhovnici ai miscarii in principal spirituale despre C++ si-a incetat activitatea subit, lasind in urma sa un munte de pliante, ghiduri si vouchere despre limba C++. Mirosul greu de carte a patruns rapid prin galeriile miniere dorind parca sa dezmierde pentru ultima oara nasul bine lucrat a lui Silviu.

Mirosul l-a luat prin surprindere cu asa o forta incit ultimele vorbe ale maistrului Scott si-au gasit drumul spre libertate printr-un ragnet lung indreptat spre cerul galeriei. Batrinii spun ca echo-ul inca mai poate fi auzit prin galerie sau daca asculti atent o floare de mina.

Am reusit sa aflam si noi mesajul prin chiar insusi Silviu: “Magnificent CPU Chaches Presentation. https://www.youtube.com/watch?v=WDIkqP4JbkE … We will miss you @Scott__Meyers!”

Magnificent intr-adevar! Chiar si Urban Dictionary este in complet acord cu Silviu: “Chach: Definition: Noun-A person (usually male)who attempts to exhibit a cool and popular look but generally comes across as either an asshole and/or a total loser.”

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

Feedback loop

Posted in Regula 0 on December 7th, 2015 by Mihnea

O sa rup un pic tacerea aici ca sa va infrumusetez acest inceput de saptamina cu o noua isprava a tovarasului Ovidiu Cucu. In ultimul timp, vajnicul militian duce o lupta acerba cu botii de spam care au luat cu asalt ograda expertilor. Din pacate insa, cind iti petreci tineretea in comitetul disciplinar al unei uzine comuniste redactind autodenunturi, autocritici si compendii de reguli, iti distrugi iremediabil partea din centrul limbajului care ii ajuta pe oameni sa faca diferenta dintre un postac onest si unul cu intentii capitalist-antisociale.

In fapt: utilizatorul haleema, originar pare-se din Bistrita-Nasaud, cu fix un post la activ, lanseaza o intrebare: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.” Intrebarea zace fara raspuns vreme de 9 luni, pina o vede Ovidiu si o ia personal: Windows, multi-view, docking, MFC, FAQ! Daca nu el, atunci cine? Si unde mai pui ca are si raspunsul potrivit, caci intimplator a scris un articol pe blog despre asta, acum mai bine de un an?

haleema intreaba

 

Din pacate insa, imboldul raspundac pe care l-a simtit Ovidiu nu era izvorit doar din pasiunea pentru MFC. Familiaritatea cu subiectul merge mai adinc, deoarece cu vreo 4 luni inainte, Ovidiu insusi se intrebase pe sine, in aceeasi sectiune a site-ului: “Cum fac o aplicatie similara cu File Explorer-ul din Windows, care eventual sa aiba caracteristici noi ca de exemplu view-uri multiple, taburi, paneluri docabile etc.

cucu raspunde

Observati vreo similitudine? Sa fie haleema un bot care reproduce alte postari de pe forum, ca sa para ca spune ceva coerent, ca sa poata apoi sa bage un link la Viagra in semnatura, sau la homepage? Greu de spus. Nu e ca si cum ar mai exista exemple pe forum. Si in fond, Ovidiu are chiar un protejat care raspunde la intrebari pe care nu le intelege copiind chestii gasite pe internet, si despre el stim ca nu e un bot, nu?

Nea’ Ovidiu, daca auzi un tiuit puternic in urechi de citeva zile, nu-l baga in seama pe doctorul care-ti spune ca e tinitus. Se cheama feedback si e ca atunci cind pui un microfon linga boxa la care e conectat, doar ca la matale s-a inchis circuitul prin intermediul forumului.

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

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: , , , , , , , , , , , , , ,

Geniu de Stiinta Roman – Realizarea Imposibilului

Posted in Premiul n00bel, Stand-up philosophy on November 2nd, 2013 by jos8cal

Pe data de 19 Octombrie 2013, Imposibilul a fost Realizat. Ovidiu Anghelidi CEO Inventikon a declarat pentru cel mai important portal de nulostiinta din Romania, CodExpert:

“Buna ziua,
As dori sa prezint “Realizare Imposibilului”, o scurta poveste care poate sa inspire pe altii despre
cum se poate ca fara studii de specialitate, fara a vorbi cu nimeni, fara a obtine nici un ajutor 
si aproape fara nici un ban, sa ajungi la nivel mondial intr-un domeniu de cercetare de varf si 
sa descoperi lucruri importante.

Ma numesc Ovidiu si am facut trei descoperiri importante: 
1. am rezolvat o problema complexa de biologie moleculara in neurostiinta
2. am gasit un algoritm criptograhic care e imposibil de descifrat (unbreakable encryption) 
3. am gasit o noua sursa de energie

Am facut de asemenea cea mai mare simulare de creier din lume (a se vedea urmatorul articol de pe Discovery Channel)
http://www.inventikon.com/articles/discovery.html

Pentru mai multe informatii a se vedea pagina urmatoare:
http://www.inventikon.com/ovidiu/index1.php

Multumesc.

Cu stima,
Ovidiu Anghelidi

Email: oanghelidi@inventikon.com
Telefon: 1-647-701-8803″

 

Redactia noastra a reusit sa obtina mai multe informatii despre Complexa Problema de Biologie Moleculara in Neurostiinta si chiar sa publice Fisa de lucru folosita de Ovidiu pe parcursul celor 40 de ani de pelerinaj mental. Este vorba despre Germinatia Bobului de Fasole si energiile ascunse de acestea. Aparent modul de viata retras al bobului este foarte asemanator cu cel a lui Ovidiu, de unde si sursa de inspiratie.

IMG_0461

Proiect: Bobul de fasole si sursa de energie.

Scopul Activitatii: Observarea cresterii si dezvoltarii la fasole.

Modul de lucru:

  1. Puneti la incoltit 10 seminte de fasole:- intr-o cutie de plastic (farfurie), pe un strat de vata acoperit cu sugativa (servetel);
  2. Umeziti “patul” (vata si sugativa);
  3. Asezati pe “patul” umed, semintele;
  4. Acoperiti semintele cu sugativa (servetel);
  5. Mentineti umezeala permanent.
  6. Observati etapele germinatiei, crestere si dezvoltarea la fasole!
  7. Dupa formarea frunzelor, plantati fasolea intr-un ghiveci cu pamant.
  8. Continuati ingrijirea plantei asigurandu-i umezeala, lumina, caldura, aer.
  9. Notati observatiile:
  • a) – pana la formarea frunzelor – ZILNIC!
  • b) – dupa plantare – SAPTAMANAL!

 La sfarsitul experimentului – comentariu personal pe toate forumurile din Romania in legatura cu activitatea desfasurata.

ETAPELE GERMINATIEI LA FASOLE

2 aprilie – am pus la incoltit 10 seminte de fasole
3 aprilie – au inceput sa-si mareasca volumul
4 aprilie – a crapat tegumentul la cateva din seminte
5 aprilie – a inceput sa creasca radacina
6 aprilie – a cazut tegumentul
7 aprilie – au aparut primele frunze
8 aprilie – plantele au crescut cativa cm
12 aprilie – am plantat fasolea in pamant
15 aprilie – plantele au crescut si au aparut mai multe frunze
Concluzie:
Toate semintele folosite la experiment au incoltit si s-au dezvoltat, deci sint un geniu.
Comentariu:
Acest experiment a fost unul interesant deoarece am putut observa toate etapele germinatiei, cresterii si dezvoltarii plantei.
Si filmul marturiehttp://www.youtube.com/watch?v=93q6FZhTrlY

Sa ma fut in politete

Posted in Regula 0 on September 18th, 2013 by Mihnea

retard-baby2Cum pula mea s-a ajuns sa fie mai important sa fii politicos decit sa stii despre ce vorbesti?

Este o chestie pe care o tot vad pe forumuri, liste de discutii etc. Sa-i spunem sindromul Marius Bancila. Vine un prost – sa-i spunem Silviu Ardelean – si emite o timpenie. Ii arati ca-i prost si-l rogi sa nu mai posteze imbecilitati. Apare un moderator – sa-i spunem tot Marius Bancila, ca sa rimeze cu sindromul – si te avertizeaza sa nu-i mai spui lui Silviu Ardelean sa-si tina gura, ca nu-i frumos. CUM SLOBOZ BA? In loc sa-i spuna Silviului ca e inacceptabil sa vorbesti timpenii (sau sa-l baneze direct), Mariusul e preocupat de mentinerea atmosferei de voie buna si cooperare tovaraseasca. Ca si retardatii e oameni, si are si ei inteligenta lor emotionala, nu?

Da, stiu. Daca iti antagonizezi interlocutorul, comunicarea se duce pulii, asa ca daca vrei sa fii constructiv trebuie s-o iei cu frumosul. Problema cu aceasta regula de cacat este ca presupune existenta unui interlocutor. Eu nu vorbeam de cazurile in care cineva greseste pur si simplu si il corectezi, ci de situatiile in care e implicat un Silviu, unde e evident de la inceput ca n-ai cu cine sa discuti. Presupusul interlocutor e atit de prost incit nu numai ca nu poate, dar nici nu vrea sa inteleaga argumentele pe care le aduci. In mod normal, Mariusul ar trebui sa-i stearga aberatiile. Daca n-o face, ceilalti participanti la discutie au obligatia morala de a face misto de retardat, pentru a se asigura ca viitorii cititori ai thread-ului nu sint indusi in eroare. Eu asa vad lucrurile.

Dar sa lasam numele generice si sa trecem la un exemplu practic. Un domn de la Valve a propus ca VC++ sa dea warning-uri cind dai parametri aiurea la functii care accepta format string-uri, asa cum fac deja diverse alte compilatoare. VC++ da si el warning-uri d-astea, dar doar cind ii dai cu /analyze, ceea ce dureaza inacceptabil de mult IRL. Validarea asta nu e costisitoare (dupa cum ne dicteaza atit bunul simt, cit si faptul ca nu incetineste semnificativ compilarea acolo unde e implementata deja), deci ar putea fi mutata din analizorul static in compilator.

In acest moment se amesteca in discutie Silviul de serviciu, cu numele de scena UnitUniverse, care nu vrea ca compilatorul sa faca “special process” pentru printf, care e o functie ordinara. Fiind foarte prost, el este de parere ca problema reala sta in faptul ca printf foloseste “extractie binara” si “masti binare” pentru a extrage parametrii, deci compilatorul n-are ce face. Ca si Silviul real, este preocupat de noile cuceriri ale tehnicii in materie de generat code bloat si incetinit compilatorul, asa ca face si el o Propunere: sa inlocuim printf cu template-uri variadice (sigur, nu inainte de a inlocui enumurile cu vectori).

Imboldit iar de spiritul civic, am considerat ca-i datoria mea sa-i spun boului ca nu e vorba de printf, ci de un mecanism pentru marcat format string-urile ca sa le poata verifica compilatorul. Care mecanism exista deja in VC++ sub forma macro-ului _Printf_format_string_. Ce a inteles retardatul (care stapineste limba lui Shakespeares la fel de bine ca omologul sau din Valea Jiului):

Yes, providen switchers to enable the detecting is an considerable idea. But, as i written previously, the printf extracting tail arguments with binary cutters, I’m doubt if they could implement such kind of checking mechanism.

I-au zis doi oameni ca e facut. I-am zis si cum e facut si i-am dat si link la cum fac alte compilatoare. De aici, el a concluzionat ca nu se poate face din cauza “taietoarelor binare”. In pula mea.

I-am raspuns ca nu stiu ce-s alea binary cutters si ca-s convins ca nici el nu stie, dar ca indiferent de ce crede el, mecanismul exista deja si trebuie doar mutat din analizor in compilator. De asemenea i-am recomandat sa nu-si mai dea cu parerea in probleme pe care nu le stapineste. Nu i-am zis sa nu-si mai dea IN PULA MEA cu parerea. I-am zis fara mui si puli. Rezultatul a fost ca s-a autosesizat Mariusul local si mi-a sters comentariul.

Lasind la o parte faptul ca-i urez cancer militianului care a facut asta, doresc sa insist un pic asupra unui model de comportament (ca nu pot sa-i spun gindire) ce este des intilnit printre Silvii. Cum ajunge imbecilul sa deduca cu mintea lui ca nu se poate face, dupa ce i-am aratat cum e facut, si i-am dat si link-uri?

Raspunsul e simplu si nesurprinzator: prostia. Silviul porneste cu o Opinie. Desi undeva adinc in fiinta lui licare ideea ca de fapt nu prea stie despre ce e vorba, odata ce-si formeaza si exprima Opinia, vocea interioara este sugrumata si Silviul se lanseaza cu toata forta intru sustinerea Opiniei. Nu conteaza daca ii dai argumente, link-uri sau bucati de cod pe care le-ar putea baga intr-un compilator ca sa verifice ca-i prost. Cind parcurge raspunsul tau, Silviul sare pur si simplu peste partile pe care nu le intelege. Nu le vede. Este un mecanism de aparare: faptul ca nu intelege ceva ar insemna ca e prost. El nu vrea sa fie prost, asa ca lucrurile pe care nu le pricepe trebuie sa fie irelevante. De la irelevant la inexistent este un pas foarte mic, pe care intelectul sau de batracian cu trisomie il face fara ezitare.

Pentru a vedea cum percepe un Silviu o discutie, iti poti sterge toate argumentele. Textul ramas pare o simpla Opinie. Aha! Silviul are si el o Opinie. De ce ar fi Opinia ta mai buna decit Opinia lui?

Revenind: e OK ca intr-o discutie despre compilatoare pe MSDN sa spui ca printf foloseste taietoare binare pentru extras argumente, dar nu e OK sa ii recomanzi unui bou sa nu vorbeasca despre lucruri pe care nu le intelege. Idiocracy.

PS: tag-urile pentru acest post s-au scris practic singure. Le-am luat direct de la ultimul post de pe blogul de atitudine al minerului.

PPS (adica post-post-scriptum, Ovidiu): in curind e ziua de nastere a minerului si i-am pregatit o surpriza.

EDIT: multumim Pintea:

yPuhX91

Tags: , , , , , , , , ,

Problemele infrastructurii locale

Posted in Regula 0 on July 19th, 2013 by Mihnea

Desi tot auzim ca romanii sint fruntasi la internet, publicatia noastra a raportat in trecut ca exista zone din unele orase mari ale tarii unde aprovizionarea cu internet se face greu sau chiar deloc. Un exemplu este strada Venus din Timisoara, mai ales la numarul 33. Aceste lacune ale infrastructurii cauzeaza grave probleme in activitatea agentilor economici, impiedicindu-i sa foloseasca motoare de cautare consacrate in procedura de validare a aptitudinilor candidatilor din cadrul procesului de recrutare, ceea ce in cazuri extreme poate duce chiar la angajarea lui Silviu Ardelean.

Cu toate astea, lucrurile se regleaza uneori de la sine, dupa cum ne invata celebrul mistic si autor de citate pentru Facebook Paolo Coelho. Ne face o deosebita placere sa va informam (cu o oarecare intirziere, ce-i drept) ca S.C. Firma Unde HR-ul Nu Are Acces La Google S.R.L. s-a prins in sfirsit ca Silviu nu este asa de avansat pe cum s-ar putea deduce din titlul postului pe care-l ocupa, asa ca minerul nostru preferat trudeste de vreo 3 luni intr-o noua multinationala emblematica: Visma.

Cititorii cu spirit civic se vor grabi sa se intrebe daca pe strada Coriolan Brediceanu, unde muncesc cei aproximativ 128 de programatori de la Visma Timisoara plus Silviu Ardelean, sunt aceleasi probleme de livrare a agentului internetic ca in zona strazii Venus (mai ales ca se intersecteaza cu strada Circumvalatiunii, si clar nu poti avea internet pe o strada care se cheama asa). De data asta insa, angajarea lui Silviu nu s-a produs din vina unor deficiente de infrastructura, ci ca urmare a unei cumetrii. La Visma lucreaza de ceva vreme ingerul pazitor al lui Silviu, Marius Bancila. Ii uram sa culeaga ce-a semanat.

examen_cnh

Bonus story.

 

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: , , , , , , , , , , ,

What would you be if you were attached to another object by an inclined plane, wrapped helically around an axis?

Posted in Codare cu premeditare, Slagare internationale on January 23rd, 2013 by Mihnea

Tovarasi, am infrint. Minerul ex-multinational emblematic Silviu Virgula Ardelean pare sa se fi vindecat de tutorialita, militianul Ovidiu a demisionat de la Radio Erevan, iar singurul semn de viata din directia ograzii cu experti este sunetul mocirlos pe care il face pulanul flasc al cite unui fondator cind mai usuie un elev de liceu care are nevoie urgent sa-i faca cineva tema. Cred ca este timpul sa gasim noi mineri, dar jugul capitalist ne-a cam impiedicat sa dedicam timpul cuvenit activitatii de largire a orizonturilor si abatajelor.

Pina una-alta, o sa va delectez cu doua slagare internationale. In deschidere ne cinta formatia NewTek, care in SDK-ul de Lightwave ne ofera o viziune lirica alternativa asupra puterilor lui 2:

#define IQ_CTRL         1
#define IQ_SHIFT        2
#define IQ_ALT          4
#define IQ_CONSTRAIN    8
#define IQ_ADJUST       16
#define MOUSE_LEFT      32
#define MOUSE_MID       64
#define MOUSE_RIGHT     96
#define MOUSE_DOWN      128

Aceste constante sint combinate intr-un bit field care-ti zice starea butoanelor cind iti vine un eveniment de mouse. Cind bitii 5 si 6 sint setati, nu inseamna ca userul tine apasat pe left si middle, ci ca tine apasat pe right. Era absolut vital sa se faca economie de un bit, chiar daca asta inseamna ca “sistemul” nu poate sa-ti spuna cind userul tine apasat pe mai multe butoane in acelasi timp. In caz ca va intrebati, variabila care tine bit field-ul e int, deci masura de austeritate n-a izvorit din utilizarea unui char, ci pur si simplu din spirit civic si responsabilitate sociala.

Lasind aritmetica in sant cu botul umflat, este timpul sa ne ocupam un pic si de algebra. Pentru neinitiati, un quaternion este un hack matematic care-ti permite sa encodezi o rotatie in 3D folosind 4 numere. In practica, cel mai des construiesti un quaternion dintr-un vector care reprezinta axa de rotatie si unghiul de rotatie in jurul axei respective. Primele 3 numere din quaternion sint componentele vectorului inmultite cu sinusul jumatatii unghiului, iar al 4-lea numar este cosinusul jumatatii unghiului. Orice implementare de quaternion dintr-o biblioteca de algebra contine un constructor sau o functie care ia un vector si un unghi si face manevra asta cu sin si cos. 3D Studio Max are si el asa ceva:

/*! \remarks Constructor. The quaternion is initialized from the
 vector <b>V</b> and angle <b>W</b> passed. The quaternion is
 then normalized.\n\n
*/
GEOMEXPORT Quat(const Point3& V, float W);

In caz ca aveam dubii, autorul remarca clar (ma rog, cit de clar se poate intr-un comentariu minjit cu puroi de doxygen) ca acest constructor face un quaternion dintr-un vector si un unghi. Asa ca te pui linistit pe scris cod si rotit obiecte si cind rulezi observi ca ele nu prea se rotesc cum ai dori tu. Si te uiti peste cod, si pare bun, si totusi nu merge. Si intr-un final te paleste inspiratia sa privesti in interiorul quaternionilor si vezi ca nu contin deloc ce ar trebui. Codul constructorului, fiind foarte complicat, nu putea fi pus in header, ci sta intr-un cpp (care ajunge sa fie un DLL, ca sa treci printr-un import table de fiecare data cind vrei sa initializezi 4 floati). Din fericire insa, Autodesk ofera apropiatilor bucati din sursele de Max, astfel incit putem lectura quat.cpp si vedea urmatoarea grozavie (cu tot cu indentarea de oligofreni):

Quat::Quat(const Point3& V, float W) {
    x = V.x; y = V.y; z = V.z; w = W;
    Normalize();
    }

Cum ba pula? Cum este W un unghi, daca tu il asignezi direct in a 4-a componenta, fara sa faci muismul cu sin si cos de juma din el? Cum cacat ti s-a parut mai util sa faci asta intr-un constructor care ia vector si scalar, decit sa faci ce face tot restul lumii?

Citeva linii mai jos intilnim si urmatoarea gema:

Quat Quat::operator+(const Quat &q) const {
   //return(Quat(x + q.x,y + q.y,z + q.z,w + q.w));
   return *this * q;
   }

Deci dragii mei, in algebra autodesciana, inmultirea si adunarea sint una si aceeasi operatie, caci unui mintos i s-a parut ca “+” este un simbol potrivit pentru compozitia quaternionilor (care, apropo, nu e comutativa ca + ala pe care-l stim cu totii, daca e sa ne legam de detalii). Lucru documentat de altfel si-n header, daca ignori comentariul de la sfirsitul liniei. Cred ca comentariul ala e comentat, deci n-are nici un efect:

/*! \remarks This operator is the same as the <b>*</b> operator. */
GEOMEXPORT Quat operator+(const Quat&) const; // sum of two quaternions

Tirnacop + tirnacop = tirnacop * tirnacop pentru valori foarte mari ale lui 2.

Tags: , , , , , , , , ,