Diamante si rubine n-au valoare pentru mine

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

5 Responses to “Diamante si rubine n-au valoare pentru mine”

  1. thefatredguy Says:

    Ala mic, negru, cu asperger, respira in punga si pregateste inlocuitorul pentru Ruby. Ruby e deja prea mainstream.

  2. RRR Says:

    Off-topic: In patterns we trust.
    De ce să mai instanțiem obiectu’ plm de tip Pulă, când putem instanția obiectu’ plm de tip FațadăDePulă?!
    http://visualstudiomagazine.com/Articles/2013/06/18/the-facade-pattern-in-net.aspx?Page=1
    Peste un an-doi lumea o să dea o lege care să spună clar că înainte să apară religia patternpulilor oamenii nu știau să scrie cod, trăiau în peșteri și mâncau căcat de pe jos ca să supraviețuiască.

  3. Mihnea Says:

    Eu cred ca poza de la inceput e graitoare: programare pentru faiantari. De asemenea, imi place cum masina lui nu reduce rpm-ul dupa ce schimba in sus. Dupa ce ajungi la 5000 rpm, de fiecare data cind chemi Accelerate() o sa tot schimbe, ca o sa fie tot timpul peste limita. Aceeasi poveste la Brake(), doar ca in sens invers, si ca daca pui frina in a 6-a, o sa ajungi la 0 rpm in a 3-a. Cutie automata sport facuta de dotnetisti zugravi.

    Cred ca articolul e bazat pe o ciorna scrisa de miner pe cind lucra in “industria automotive” la Siemens si nu avea voie sa faca cast-uri, dar avea voie sa nu stie sa indexeze un array.

  4. anasd Says:

    de ce e alex velea la tag-uri? =))))

  5. Mihnea Says:

    Datorita similitudinilor de preocupare, talent si etnie cu Ruby.

Leave a Reply

Optionally add an image (JPEG only)