Blogul lui Mișu

 Blogul lui Mișu Blogul lui Mișu


Un mic blog personal... o mică parte din mine :] Un loc unde scriu tot ce vreau, începând cu experiențele IT și până la careva stări emoționale %)
RSS postsRSS comments

Personale


Comenteaza





Cross-Compilarea și rularea Win32 pe siteme Unix-like
Intro     Utilizând un sistem de operare Unix-like, nu e prea mare plăcăre, ca în scopuri educative, să-ți părăsești, măcar  mediul pentru a utiliza Win32 API. Totuși, există posibilitatea de cross-compilare, față de care mulți sunt sceptici. În orice caz, compilez strict în scopuri educative, fără a reutiliza binarele în altă parte. Necesitate     Studiind cursul de "Event-Driven Programming on Win32 API", ar fi trebuit să-mi trag o mașină virtuală cu oarecare Windows și să-mi ridic tot environmentul meu preferat pe acea mașinică virtuală, ceea ce nu mi-a părut cea mai bună idee la prima vedere, dar e o ieșire din situație și asta. Cerințe Un calculator cu sistem de operare unix-like; Librăriile MinGW și compilatorul mingw-gcc pentru Linux sau pentru Mac OS X. Ceva alcool: Wine. Pentru Mac OS X recomand WineBottler. Notă:  În distribuțiile linux veți găsi de obicei pachete precompilate cu mingw32-gcc și wine. Utilizare Compilăm în linia de comandă: i386-mingw32-gcc -mwindows file.c -o file.exe Executăm din linia de comandă: wine file.exe Ce poate fi mai simplu? ; ) În dependență de mediul de instalare și variabila $PATH probabil să fie necesară rularea compilatorului prin path absolut, sau ajustarea variabilei $PATH. Plus, dacă utilizezi vim, poți mapa compilarea și executarea, unui shortcut, cum am făcut-o eu: nmap <F8>:<C-U>!i386-mingw32-gcc -mwindows %:r.c -o %:r.exe && wine %:r.exe<CR> Outro

    Utilitatea Cross-compiling-ului este extrem de mare. La fel putem compila produse spre exemplu pentru arm, sau oricare altă arhitectură de destinație. Acum poți compila același cod practic pe orice mașină.     Happy programming!
Cum să convingi pe cineva contrar voinței acestuia. Despre microbuze.


    Când ai o problemă mult prea dificilă și subtilă, vine timpul conformării cu un compromis. Dar cum convingi mulțimea? Cum îți justifici decizia în fața ei? Exact! Doar prin contradicție. Crează, modelează extrema cea mai rea posibilă și impune-o mulțimii, dar fă așa ca ea (mulțimea) să nu realizeze șiretlicul tău. Fă ca totul să decurgă în circumstanțe normale.     Teoria-i clară? Nu? Hai că-ți explic acu... Alde consiliul municipal având profituri bune de la serviciul maxi-taxi, și fiind în relații tare bune cu administratorii rutelor de microbuze, au început să dorească profituri mai mari, care, fără o eventuală majorare de preț ar fi o misiune imposibilă. "Dar cum să majorezi taxa pentru o călătorie?" Se întrebă unanim consiliul, căci dacă ar majora, mulțimea ce-i votează i-ar judeca. Deci, trebuiește de înscenat extrema cea rea. Cum? De convins alde șoferii de microbuze să protesteze o zi, două, trei... "De CONVINS?!" te întrebi tu mirat... Exact, anume așa! Pentru că un protest de câteva zile ar însemna câteva zile fără profit. Un profit destul de bunicel, de altfel. Dar cum de făcut situația și mai rea? Simplu, de anunțat presa că se vor suplini cursele de transport public tradițional, pe când în realitate nu a fost cam așa. (Troleibuzele nu sunt conduse de roboți, ci de oameni... Angajați ce scuipă-n pod, RTEC nu are din câte știu..) Totul pentru un singur scop, pentru a convinge cetățeanul de rând că unica soluție ar fi compromisul cu alde maxi-taxi-urile. Decizia compromisului trebuie să apară în subconștientul fiecărui cetățean, pentru că la momentul legiferării deciziei, să nu fie pentru nimeni o surpriză. Ceva timp, și ideea "Mai ghine deam șinși lei decât așa bardak" va fi la majoritatea clienților de transport public. Condiții?     Ok, hai să lăsăm într-o parte toate teoriile conspirative și imaginația mea... Ieri, pe site-ul primăriei a apărut un anunț tare vesel: Condiții înaintate administratorilor rutelor municipale de microbuz. Niște condiții de nedescris! Fenomenal de interesante. Citindu-le, realizăm că până acum, fumatul, vorbitul la telefon în timpul conducerii microbuzului, brutalizarea pasagerilor, nerespectarea orarelor(sau chiar lipsa lor) au fost o chestie absolut normală. Eu presupun că acele condiții sunt unele firești, și fără respectarea lor, atât șoferii de microbuze cât și administratorii rutelor meritau să mănânce peste bot fie penalizați, fără careva avertizare. Preț/Necesitate/Obligație?     Acum hai să fim realiști. Chiar credeți că o taxă de 5 lei i-ar face pe șoferi mai puțin bădărani needucați? Vă asigur eu, unii nici cu taxe înzecite nu au să fie altfel, pe când cei culți(da, știu, îs puțini de ăștia), și acum se comportă adecvat. Despre faptul că ei prestează un serviciu public care trebuie să activeze în interes public am mai scris. Cum naiba să le dai licență celor care asumându-și dreptul de a presta serviciu public, pot brusc să perturbeze viața urbană? Regulile de joc le pun consiliul municipal, cui nu-i place: "давай, до свидания!", ar trebui să zică primăria, desigur, dacă eventual consiliul nu-și trage foloase pe urma acestor decizii. Realitate...     Spre final, vreau să zic, că sunt pentru investirea în transportul public tradițional. Dar, cu toate astea, fizic noi nu avem capacitatea de a asigura transportul în siguranță doar prin troleibuze. Da, mie-mi place să merg cu troleibuzul... Da, mie-mi plac troleibuzele noi... De fapt îmi place să merg și în microbuze, dar nu în alea pline până-n parbrizul frontal, în care mai mereu ești îndemnat să "treci mai în fund".     ...Șoferii de microbuze continuă se se plângă pe salarii de 1200 lei... :))))) (plus vreo 5-6 plicuri cu același nominal fiecare) Artwork by Avalonix Au mai scris: Andrei (1) (2), 2nitZza, Irena, Mihaela
Mâzgălitură în cap.
    În ultima vreme, risc să mă repet, gândurile mele au luat forma unei mari mâzgălituri... În capul meu toate polițele, s-au răsturnat și datele s-au dezintegrat... Învățat - lucrat - învățat - socializat - îndrăgostit - lucrat - nu dormit - învățat, așa o buclă dinamică în fiecare zi m-a făcut să înțeleg, oarecum, că îmbătrânesc trece vremea și nu mai am timp de nimic... Sau, mai bine zis am timp (cum zicea și Mihaela)... Doar că nu-mi permit uneori să-l utilizez așa cum aș vrea eu, ceea ce până la urmă poate nu-i rău... Nu știu...     Alaltăieri, după ce am finalizat toate task-urile critice, simțeam nevoia să ies din încăpere, să fug undeva departe... Da' unde? În spații închise nu mă mai pot focaliza în totalitate asupra lucrurilor ce trebuiesc efectuate. În scurt timp am hotărât să mă mai duc o dată la Valea Morilor.     Eram prin Chișinău, undeva la sectorul râșcani, bd. Moscovei cu str. Alecu Russo ca să fiu mai exact... Căutam "the shortest path" până la Valea Morilor... Și, am hotărât să merg pe jos... Nu că ar fi prima oară, nu că mi-ar fi fost greu să merg cu transportul public, da' e ceva mai cool să meditezi, să structurezi gândurile mergând pe jos, decât să trec "mai în fund" și să ascult șanson în microbuzele moldovenești. La final am făcut 6km și ceva, merși în totalitate pe jos, în aproximativ o oră... Tot timpul ăsta m-am deconectat aproape în totalitate de la realitate... Ba mai mult, la un moment dat m-am abătut de la traseul planificat pentru vreo 10 minute... Am mers sub soare, apoi sub ploaie, cu gândul la soare, apoi iar sub soare... Vremea era alternantă... Aproape ca și gândurile mele...

6.33 km... E tare simplu! :)     Odată ajuns la destinație, am fost de-a dreptul captat de culorile și sunetele care le percepeam... Nu, nu eram high :D Doar că de tare mult timp nu am prea stat în sânul naturii, singur, să-mi filtrez gândurile, să lucrez... Lume nu era prea multă, eu m-am așezat și mi-am scos laptopul și am învățat ce aveam de învățat... Eram unicul cu laptop pe perimetrul vizibil... Probabil toți alde IT rebeata guys, stau undeva în încăpere călduroasă și lucrează... Afară totuși e mai cool ; )     Ah da, despre ce vroiam eu să vă povestesc? Asta cam e tot... Nu vroiam să scriu direct despre microbuze marșrutneci, nu de alta, da' eu nu-s blogger și susmenționații "marșrutneci" nu merită timpul meu... Un lucru vroiam să vă zic, special pentru new generation, mai mergeți pe jos până la cea mai apropiată stație de troleibuze (dacă nu puteți/doriți mai mult), care nu doar sunt mai libere, dar mai sunt și ecologice...     O zi bună! :)
Transportul public din Chișinău. Serviciul Maxi-Taxi.
    Se întâmpla azi. Era trecut de ora 22, mergeam cu microbuzul spre casă. La un moment dat a urcat o doamnă ce a acuzat șoferul că a așteptat microbuzul mai bine de 25 de minute pe când pe orarele lor oficiale aprobate de către primărie(?) intervalul între microbuze trebuie să fie 7 minute la ora asta. Tot atunci am aflat că noi, pasagerii, ar trebui să-i mulțumim șoferului, pentru că ne face ditamai serviciu/înlesnire mergând la ora asta, citez "în minus"(nu are profit) "cu dzășe oameni în crușe", ba mai mult, am aflat că domnul șofer merge în condițiile date LA ORA ASTA nu pentru că are careva obligațiuni impuse de primărie/șef, dar pentru că trăiește în regiunea stației terminus spre care se îndrepta, și oarecum merge și el acasă. Well, omul se crede mare filantrop că își permite LA ORA ASTA să ducă pasagerii acasă... măi măi măi... Ca un bonus își mai permite să înjure cât încape (da apropo, oamenii psihic dezechilibrați nu trebuie să fie angajați la posturi publice, da' asta deja-i altă temă...). Păi stați fraților, voi mergeți doar când vă e comod? Atunci când cuvintele cheie sunt "treșiț mai în fund, fășeț loc la oameni(a se subînțelege 'loc la încă trei lei')", atunci când în loc de 12-16 locuri pe scaune strângeți încă atâția oameni minimum, în picioare? Din câte știu, profitabilitatea normală se consideră când toate scaunele sunt ocupate, păi cum stăm cu profitabilitatea când dinnafară se văd doar funduri și nu mai e loc unde de intrat? Deci dacă în careva intervale de timp este așa o supraprofitabilitate, dar așa intervale îs mai bine de juma de zi, păi rămâne loc și pentru mers "în minus", nu? Și oamenii ăștia vor mărire de tarife? Pfff... Și serviciul nostru maxi-taxi mai are o mulțime de lacune. Habar n-am cum se impozează veniturile lor. Teoretic ar trebui să fie eliberate bilete pentru fiecare călătorie.(În genere politica de bilete e puțin învechită, dar asta deja-i altă discuție) Sunt sigur că și tu nu ai primit niciodată bilet în microbuz. Ironic, dar în unele microbuze stă o rolă de bilete legată de bara de susținere, sau mai mult, inscripții ingenioase:

Eu am cerut bilet și am fost înjurat de către nenea șofer. La categoria de foițe puse de formă merg și orarele lor ce nu sunt respectate, atenționări precum că păzea "În microbuze acționează hoți de buzunare" ș.a. Păi iată dragi șoferi/șefi de maxi-taxi, nu uitați că nu trebuie să ieșiți "la pescuit" doar în orele de vârf, nu trebuie să vă comportați ca niște animale sălbatice. Nu uitați, pe lângă toate cele scrise mai sus, fiind șoferi de transport public vă asumați răspunderea pentru sănătatea călătorilor Dvs. Vorbind despre schimbări, ele ar trebui să vină de mai sus, dar am impresia că  Ministerul Transporturilor și Primăria nu cam au mare motivare de a schimba ceva, ba chiar scot foloase pe seama acestor neajunsuri. Alexandru Lebedev scria: Călătoria cu microbuzul poate fi o plăcere? Andrei Fornea scria: Preţul la microbuz trebuie să crească cu 33 bani Alexei a filmat un iepuraș de la "SRL AFGBASVET": Șofer iresponsabil pe ruta de microbuz 169 (pe curaj mai puteți găsi filmulețe interesante la temă) Victor Ciobanu scria: Mafia "marşrutcilor". Artwork by Stinger.MD: IMG
TEDxChișinău - Impresii


   A trecut și ziua de 7 mai - o zi minunată petrecută în cadrul evenimentului TEDx Chișinău. Boring. Break It! Per total mi-a plăcut și sunt gata să vin și la următoarele evenimente de acest tip, așa că, bravo organizatorilor pentru că într-un fel sau altul mi-ați captat atenția.    Prima parte a evenimentului a cam avut de suferit din cauza boxelor vechi și probabil incorect setate care distrăgeau atenția ascultătorilor prin "buzzz-ueală", dar, după prima pauză, calitatea sunetului s-a îmbunătățit considerabil și nu a jucat mari feste pe parcursul evenimentului.    În următoarele rânduri aș vrea să fac un mic total, cu scurte feedback-uri pentru fiecare speaker și probabil o frază (parafrazată) din discurs, care mi-a rămas în memorie până la momentul actual. %) Deci, să-i dăm foc!   - Kyra Gaunt (ted fellow) - În opinia mea, ea ar fi trebuit să fie parte din "cireașa de pe tortă" și să nu fie plasată ca primul speaker. Un discurs bun, doar că primele minute eram cam abătut și pierdusem ceva esență. Până la urmă discursul ei mi-a plăcut mult, a fost întradevăr unul puternic, o temă foarte actuală e cea a plictiselii studenților și o soluție destul de banală a fost prezentată, anume cea de comunicare cu fiecare în parte și abordarea fiecărui student ca pe o personalitate, nu ca pe o piesă ce vine pe bandă rulantă și pleacă. Din păcate puțini profesori (în speciali cei ajunși la vârsta de pensionare) utilizează așa metode. Ah da, păcat că a plecat devreme de la eveniment, aș fi fost bucuros să schimb câteva cuvinte cu dânsa. ... apropo, în timpul la Open Lunch am discutat cu Ohad Sternberg, care face voluntariat la noi în Moldova, în funcție de profesor la ULIM. Prin coincidență, sau nu, el a făcut ore cu Kyra Gaunt și i-a plăcut mult, cel puțin nouă ne-a oferit doar feedback pozitiv referitor la profesoara lui %) "...Bob: I think I need to grow up!..."   - Dumitru Alaiba - Speaker-ul e interesant, tematica la fel, doar că e prea vastă pentru a fi pe deplin abordată în 18 minute. Efectul butterfly a captat atenția la multe persoane, inclusiv și pe a mea. Partea proastă e că am simțit o barieră, cea de comunicare, presupun că în cazul în care Dumitru avea să ne vorbească în română, avea să ne spună și mai multe lucruri așa cum le vede el. Pe lângă asta, Dumitru a avut ghinionul să aibă cele mai multe glitch-uri cu sunetul, chestia asta deasemenea dezorientează. Sper să-l văd pe Dumitru și la alte evenimente, poate chiar cu aceiași tematică studiată mai amănunțit. "...Stereotype: Amsterdam - Marijuana, Whores..."   - Vincent Noth - O persoană superbă :) din câte am înțeles el deasemenea face voluntariat în Moldova. În momentul când a ieșit pe scenă, a uimit pe toți cu gesturile și emoțiile din vorbele lui. S-a simțit liber în fața noastră și ne-a povestit totul din suflet. Nu am avut nici un fel de barieră, la fel, sunt sigur că nici el nu se simțea după vre-o una. Tematica aleasă e una interesantă, chiar vroiam ceva timp în urmă să scriu ceva vre-un articol referitor la supradoza și intoxicarea cu informație stând în fața calculatorului ce duce la plictiseală și lipsă de motivație. Desigur, nu mă gândesc nici pe aproape la vre-o soluție gen renunțarea la tehnologii, ci doar la îmbunătățirea atât a tehnologiilor cât și a viziunilor utilizatorului îmbinată cu time management, astfel ca el să știe la sigur ce vrea și cât timp are posibilitatea și dorința să consume informație. "... Boring people get bored ..."   - Pavel Zingan - A vorbit în rusă. Cel mai probabil a făcut o alegere corectă. Începutul a fost nice, dar chestia cu captarea investițiilor în lift a mai fost discutată de dânsul și în opinia mea nu a fost prea bine îmbinată cu ideea propriu zisă. Până la urmă visul său a fost relatat foarte ambiguu, probabil are planuri mari și nu vrea să facă sharing la idee :D "...Не надо прыгать на тонкий лёд..."   - Cristian Ziliberberg - A vorbit în engleză, dar presupun că putea să aleagă o limbă în care vorbește ceva mai liber... %) Pe scenă s-a simțit puțin frustrat (presupun), dar pare a fi ambițios, deștept, știe ce vrea și tinde spre perfecțiune prin toate detaliile. Tema abordată de dânsul e una actuală și foarte vastă. Prezentarea simulărilor a fost nice, a înviorat cât de cât publicul.   - Dumitru Dediu - A avut un speech foarte curat și clar, a interacționat cu publicul cât de cât. Are un accent englez nice, și e excelent că a vorbit anume engleza. Speech-ul lui oarecum împărțit în două bucăți a atins atât tematică mai abstractă adică îmbinarea extremelor, cât și cea fixă, și anume „Global Warming”. Sper că a convins ascultătorii să treacă la LED-uri și lămpi economice. Desigur, „Încălzirea Globală” e încă o temă foarte vastă, ce poate fi abordată din o multitudine de puncte de vedere și felul în care a făcut-o Dumitru a fost unul destul de interesant. Referitor la îmbinarea extremelor, a fost captivant. "... Oxymoron: Global - Moldovan! ..."   - Kalman Mizsei - Prima parte a discursului, și anume până când a realizat că ceva nu e în regulă cu slideshow-ul, a fost destul de nice, a doua parte, însă, a fost puțin mai boring. A trecut de mai multe ori pe același loc, ne-a zis în repetate rânduri cât de tare Moldova sucks și cât de săracă e, și, până la final așteptam să-și termine discursul. Sorry, probabil nu am prins esența la timp, sau ea nici nu a fost :))   - Vitalie Eșanu - A vorbit românește. Bravo! A făcut o alegere corectă. A fost evident, Vitalie nu are mega capacități oratorice, vorba poietului „Mai puține cuvinte - mai multe fapte”, în schimb are o carismă nemăsurabilă. În 30 de secunde a reușit să învioreze toată sala și să captiveze atenția tuturor ascultătorilor. A urcat puțin nesigur pe scenă, a vorbit simplu, a vorbit despre sine, a folosit un limbaj minimalist și nesofisticat, a fost natural și anume asta l-a adus mult mai aproape de public. Mie mi-a plăcut foarte tare, pe twitter era forfotă mare cu feedback exclusiv pozitiv în adresa lui Vitalie. Vreau să-l văd mai des pe la diverse conferințe publice. "... Voi toți cunoașteți Objective-C, nu? ..." "... 95 de vieți ..." "... „Dacă nu vei învăța, ai să tragi sapa ca mine până la sfârșitul vieții” - Natalia Eșanu ..."   - Sorin Hadârcă - Deci, discursul acestei persoane l-am așteptat mult. Și așteptările nu au fost în zadar. În primul rând a avut o engleză fluentă și corectă. Deasemenea prezentarea a fost una bine pusă la punct, presupun că a fost desenată cu mâna sa. Original. Eu sunt foarte departe de tot ce ține de economie, dar a fost evident conturată ideea celor 3 pastile, și anume prima pastilă - socialismul care nu a avut succes, a doua - capitalismul, care deasemenea nu funcționează cum s-ar fi presupus, și a treia, compromisul dintre cele două. Ne-a relatat că "Pack and Go" nu e cea mai bună idee. Totodată mi-a plăcut că a relatat despre capitalism și socialism fără a recurge la careva doctrine și viziuni politice. Bravo, se vede că e matur, serios și s-a pregătit nu doar pentru noi, dar și pentru TED.com. "... Solutions? Pack & Go ..."   - Alexandru Zgardan - Well, încă o persoană matură, serioasă și cu opinie stabilă. Discursul său a fost la același nivel cu cel a lui Sorin Hadârcă. Ambii vorbitori ne zic prin ideile sale că e timpul să luăm atitudine cât de curând posibil. Emoțiile vorbitorului nostru le simțeam și eu, în unele momente treceau fiori prin tot corpul. Până la urmă, ne-a sugerat să ne ocupăm cu alte activități noaptea decât să dormim =D. Da, acest om are capacitate de a atrage atenția către vorbele sale, plus, se vede că întradevăr îi pasă și e preocupat de această problemă, chiar aș fi curios să merg la universitate la orele dumnealui. "... „Tăt o să șie ghine”. NO way! „nu o să șie ghine” ..."   - Ion Grosu - Am plâns!!! Tare, la fel ca și majoritatea persoanelor din sală. Deacord, a fost o idee bună să fie Ion plasat ultimul. La momentul când majoritatea era deja obosită, avea o cantitate mare de informație ce trebuie prelucrată, o mulțime de idei, viziuni și întrebări noi, să-l vezi pe Ion Grosu cu o temă tare, organizată destul de nostim a fost foarte bine. #șinșiaceoașe organizatorilor pentru așa decizie. Referitor la Ion, am impresia că s-a simțit în fața noastră la fel ca în împrejurare de prieteni, fără complexe și bariere, ceea ce e extrem de bine pentru o persoană ce vorbește în public. Deasemenea îmi pare bine că a interacționat cu ascultătorii, Chuck Norris, #onotole, Lady Gaga ș.a. Toți am înțeles că Ion are "a piece of interesting" mare :D. Mai puțină informație - mai mult Fun %) Nu cred că lui Ion tare-i păsa de formatul TED când era pe scenă. Și totuși discursul are idee, idee ce merită răspândită.    Deci, m-am străduit să fac câte o mini-recenzie la fiecare speaker. Opinia e total subiectivă și desigur poate să nu coincidă cu a cititorilor blogului.    Trecând peste toate momentele tehnice de care organizatorii știu bine, pot să zic una, evenimentul a avut loc cu succes, a atins multe din așteptările mele, m-a lăsat pe alocuri impresionat, motivat, inspirat și totodată mi-a creat multe întrebări și idei, deci timpul nu s-a trecut în zadar. Plus la toate am socializat, am făcut cunoștință cu multă lume nouă, am revăzut lume veche și am susținut puțin lumea reală =D    Acum eu sper că organizatorii deja plănuiesc eventuale noi evenimente, și sunt sigur că în caz de necesitate, majoritatea din cei ce susțin proiectul ar fi deacord să ajute dezvoltarea lui în limitele posibilităților sale. ps. eu m-am infectat cu piesa de la event. Vă invit să o audiați în caz că nu ați fost prezenți în sală ;] UPD - Despre eveniment au mai scris: Alex Brăguța, Victoria Vlad, Vali Rotaru, Andrei Haret (dacă a mai scris cineva, vă rog sugerați-mi printr-un comentariu)
Cum mi-am customizat linia de comandă sub linux...
   Salut! Astăzi voi scrie despre felul în care mi-am "construit" linia de comandă după gusturile și necesitățile mele. 1 .bashrc    Așa cum, probabil știți că sunt iubitor de chestiuțe colorate în terminal, mi-am configurat promptul cu mai multe culori. Aici puteți găsi o listă de variabile și culori accesibile în bash, foarte util post pe archwiki. Spre exemplu, eu am inclus lista de variabile cu culori în .bashrc, și acum e mult mai simplu și lizibil codul, cu variabile în loc de secvențe escaped: prompt_command () { local st=$? [ $st -eq 0 ] && \ local p="${BBlack}>${Green}>${BGreen}>${Color_Off}" || \ local p="${BBlack}>${Red}>${BRed}>${Color_Off}" PS1="\n ${IPurple}(\t) ${Yellow}\u@\h ${IYellow}\w\n${Color_Off}${p} " } PROMPT_COMMAND=prompt_command În secvența de mai sus, variabila $p e un string (>>>) ce ia culoare roșie (gradient improvizat) dacă comanda precedentă s-a executat cu vreo eroare și culoare verde dacă a mers ok. Controlul se face după variabila $?. În rest e usual stuff, colorat :] 2 git, git-completion și viață frumoasă    De ceva vreme încoace, am descoperit și utilizez git-ul destul de activ. Primele impresii au fost pozitive, și totuși ceva mai lipsea... Fiind deprins cu subversion și în lipsă de autocomplete a comenzilor lui git, am făcut niște aliasuri, de genul: git co (git checkout, co luat din SVN), git ci (git commit) etc... Și totuși mai lipsea ceva... Spre exemplu, pentru a face checkout la un alt branch, trebuia întâi să listez toate branch-urile ca abia apoi să găsesc ceea ce-mi trebuie și să fac checkout etc.    La un moment dat, m-am gândit că pot să-mi fac un script care să se ocupe de asta, și să facă aceste lucruri pentru mine, și, când colo, am dat de un lucru gata făcut! git-completion! bingo! Tot ce trebuie să faci e: wget http://github.com/git/git/raw/master/contrib/completion/git-completion.bash -O ~/.git-completion.bash și apoi să adaugi în .bashrc linia: source $HOME/.git-completion.bash Tadam! Acum ai autocompletion! (apropo, fraza asta mi-a adus aminte de sloganul de anul trecut de la PublikaTV, și anume: "Moldova, acum ai televiziune!". Ei da evenimentul nostru e mai important.)    Odată cu autocompletion, a venit și colorarea la git diff, și câteva funcții predefinite. Una din ele, o să o examinăm aici. Funcția dată are numele de __git_ps1(), și se poate include în $PS... eu am pus-o înainte de newline, și dacă sunt în directorie cu repozitorie git, îmi arată, branch-ul curent, și starea lui, dacă e modificat și nu e făcut commit îmi marchează cu * branc-ul. Până la urmă, după diverse șlefuiri, command prompt-ul îmi arată așa:

PS. ce-mi mai trebuie? un GNU screen, vim, htop, moc, mc, mplayer, rtorrent(color) și sunt sigur că terminalul nu o să se plictisească... ;D
Light HTTP Server în 10 secunde
  Bună dimineața dragă cititorule!   Dorești să faci share la careva fișiere, sau pur și simplu să testezi un micro server HTTP? Utilizezi linux ca sistem de operare? Ai python, preinstalat? Nimic mai simplu! Mergi în directoria pe care o dorești să fie setată ca server root:   cd /calea/spre/directoria/dorită Și execută comanda:   python -m SimpleHTTPServer   Acum tot ce este în acea directorie, e accesibil pe adresa http://localhost:8000 sau http://127.0.0.1:8000 de pe calculatorul gazdă, și de pe http://[ip-ul real]:8000 (în caz că nu este vreo aplicație ce restricționează accesul pe portul dat). IP-ul ce poate fi privit din extern se poate afla ușor mergând pe pagina: http://www.whatismyip.com/.   Prin urmare totul se rezumă la o comandă, foarte utilă și comodă în cazurile expuse mai sus în locul serverelor Apache ș.a... ps. python-ul de obicei este instalat odată cu sistemul de operare. pps. teoretic această comandă ar trebui să funcționeze și pe w$, dar nu am testat și nici nu m-am documentat în domeniu, pot să zic una, merge perfect prin cygwin de pe windows :] Nota Bene: Despre acest feature am citit vreo jumătate de an în urmă pe blogul lui Marius Voilă. UPD: Dacă aveți instalat și python 3, atunci executați   python2 -m SimpleHTTPServer pentru că în python3 SimpleHTTPServer a fost comasat cu BaseHttpServer, și utilizarea acestuia e puțin diferită, probabil o să-l iau ca motiv să mai scriu vre-un blogpost mai detaliat pentru acesta.
Mai avem timp...
   Iată că au rămas mai puțin de 24 de ore până la startul alegerilor parlamentare anticipate în R.Moldova. După o campanie electorală pe alocuri mai grea sau mai murdară, putem trage careva concluzii și merge la vot în data de 28.    În timpul campaniei electorale, tinerii au creat diverse activități în a motiva populația să iasă la vot. Una din cele mai cunoscute a fost campania Contăm, deci VOTăm care creat câteva spoturi video ironice foarte nice după părerea mea.    Toate circumstanțele cred că te-au convins deja că trebuie să mergem și să folosim dreptul unic de a alege liber. Nu fi indiferent, mergi la vot! Numărătoarea inversă deja a început!    ps. Odată cu campania electorală s-a sfârșit și toamna de afară... Vai, ce frumos ninge la Chișinău! Natura se purifică de murdăriile rămase din campania electorală.    pps. iată încă 3 spoturi video, create de Viorel Mardare, care mi-au plăcut:
Posting with GoogleCL Tools
aekamon! it works! :D Google Command Line tools rawks ;D Get it here, or simply install binaries from your repository, aka python-gdata & googlecl.
(Bash) Divizarea fișierelor audio lossles și conversia lor în format mp3
   Iată că într-o bună zi am copiat toată discografia formației Pixies în format mp3, o calitate strașnic de proastă. Nu m-am gândit mult și am făcut rm -rf ./Pixies\ Discography de pe calculator. Am copiat în schimb aceiași discografie în format lossles, și anume flac sub forma de imagini .cue cu referință la un singur fișier flac per album. Pe device-urile mobile flac e imposibil de folosit, plus că și are o dimensiune alogică pentru un aparat de buzunar, deci ieșirea din situație e conversia. În cazul nostru o simplă conversie din flac în mp3 e imposibilă pentru că toate piesele dintr-un album sunt comasate într-un singur fișier.    Însă ăsta nu e sfârșitul, ne vin în ajutor mai multe instrumente special concepute pentru divizare/editare a tagurilor/conversie a formatul lossless. Avem nevoie de următoarele tools-uri: cuetools, shntool, flac, lame, mp3info, și altele (gen: grep, sed, id3v2) care deja la sigur sunt instalate.    Studiind man-page-urile acestor tools-uri am creat un mic scriptuleț în bash pe care l-am numit flac2mp3 și se execută ca ./flac2mp3 /calea_spre_flac /calea_spre_cue și își face treaba singurel mai departe. #!/bin/bash F_FILE=$1 C_FILE=$2 if [ ! -r "$F_FILE" -o ! -r "$C_FILE" ] then echo "Can't read file $F_FILE or $C_FILE" >&1 exit 1 fi cuebreakpoints "$C_FILE" | shnsplit -o 'cust ext=mp3 lame -b 320 --vbr-new -V 0 --quiet - %f' "$F_FILE" cuetag.sh "$C_FILE" split-track* for i in split-track*.mp3 do TITLE="`id3info "$i" | grep '^=== TIT2' | sed -e 's/.*: //g'`" TRACKNUM="`id3info "$i" | grep '^=== TRCK' | sed -e 's/.*: //g'`" mv -v "$i" "$TRACKNUM - $TITLE.mp3" done echo "Done!"    Lucrul lui constă din câțiva pași foarte simpli, pe care o să încerc să-i explic mai jos: - scriptul încearcă să determine dacă fișierele .cue și .flac există și dacă există permisiunea de a le citi; - cuebreakpoints determină intervalele pe care sunt plasate piesele; - shnsplit divizează acel fșier .flac și îl convertează automat în mp3 prin tool-ul lame; - cuetag.sh extrage id3 info din .cue și o distribuie fișierelor mp3 proaspăt create - și în sfârșit, pentru a nu lăsa denumirile urâte gen split-trackXX.mp3, încercăm să le redenumim folosind informația din id3 tags. Numele finale e de forma tracknum - title.mp3    În cazul meu am băgat încă 2 linii în script pentru a determina timpul de execuție a lui. La început: start_time=$(date +%s);, ce ia valoarea numărului de secunde începând cu 1970-01-01 00:00:00 UTC ;] și la sfârșit am băgat echo "Script execution time: $(($(date +%s) - start_time)) secs.";. În 85 secunde am convertat un flac de 140MB și am obținut 8 fișiere mp3 pe un netbook. Un rezultat foarte bun, IMO ^_^ ps. Noapte bună ;D
Restaurarea cablului de date pentru iPhone/iPod
   Ehm... Mi-ați simțit lipsa? Sper că nu... Am fost la odihnă ceva timp. Deci, fiind înafara țării, din lumea tehnicii moderne aveam cu mine doar un iPhone, care mă ghida datorită GPS-ului și busolei magnetice integrate. Într-o bună dimineață, m-am trezit cu cablul de date deteriorat la ambele capete de către un copil mic. Ehh, copiii, ce să le zici, doar am fost și noi ca ei... :) Plus că acel cablu, nu era unul original apple, și nu m-am supărat tare.    În acel moment am rezolvat problema procurând unul nou, nu de alta, dar nu aveam nici un instrument cu care aș fi putut să-l restaurez pe acel deteriorat. Ajungând acasă, însă, am hotărât să încerc să-l fac.    Am început desigur cu determinarea schemei, adică ce cablu și unde trebuie conectat ;D și schema nu s-a lăsat mult căutată. În imaginea atașată, portul usb are următoarele proprietăți: 1 -> +5V, 2 -> data-, 3 -> data+, 4 -> GND.

   Pe lângă toate detalile tehnice, acuratețea a fost un factor destul de important în realizarea acestei restaurări. Deci protecția gumată de pe portul USB l-am tăiat atent cu lama dintr-o parte laterală, pentru ca mai apoi cu niște adeziv să pot pune totul la locul său. În imaginile de mai jos ve-ți vedea pașii care i-am făcut și rezultatul final :)







   Well, în rezultatul final, vedeți că am întărit un pic "codița" USB-ului. Am făcut-o cu ajutorul la câțiva centimetri de filament pentru pescuit.    M-a costat vreo 15 minute doar. Cablul arată bine, se ține trainic :) Update: O metodă interesantă propusă de Dirtyrobotic de a păzi cablurile de la uzura în apropiere de stecker: [Vezi Imaginea] plus o metodă creativă de a personaliza cablurile UTP: [Vezi Imaginea].
(Bash) Redimensionarea imaginilor în masă
   Vre-un an și ceva în urmă, pe când nu aveam mare idee despre bash, citisem pe blogul lui Adrenalin articolul "Cum De Redenumit Fișiere În Masă?", la acel moment nu prea mă interesau așa chestii, însă acum îmi dau seama cât sunt de utile ;]    Astăzi, doream să bag niște poze pe foto.torrentsmd.com, dar mi'am dat seama repede că acel motor de gestionare a imaginilor (4images) nu vrea să'mi accepte imaginile originale și să le redimensioneze așa cum îi place lui, deci am luat repede hotărârea să redimensionez local imaginile fără să pierd mult timp ;D. Pentru asta, desigur, am scris repede un scriptuleț în bash. În primul rând ne trebuiește mogrify, tool din ImageMagick. cd /calea/spre/directoria/cu/fotografii mkdir ./resized for i in *.JPG; do cp "$i" ./resized/"$i"; mogrify -resize 900x600 ./resized/"$i"; echo "$i" redimensionat; done;    În mai puțin de 10 minute, scriptul a redimensionat, totodată păstrând copia originală peste 450 fotografii a câte 4-8MB fiecare, dar voi, în cât timp avea s'o faceți manual? ^_^    Deasemenea e posibilă redimensionarea după procentaj sau unul adaptiv bazat pe triangulație, plus încă o mulține de features ale lui mogrify, mai multe detalii: man mogrify    ps. bash-ul e accesibil și în windows sub cygwin, diskurile sunt montate virtual în /cygdrive. Lucru tare, încercați și voi.
Torrents.MD Extension pentru Google Chrome
Ceva timp în urmă, hotărâsem să fac o extensie pentru Google Chrome a site-ului Torrents.MD. Făcusem ceva simplu ce practic foloseam doar pentru notificările despre mesajele noi și, în scurt timp mă lăsasem de idee. Mulțumită lui flienteen, care a venit cu noi idei în implementare și optimizare, am scos în final ceva bun, dar totuși încă "crud". Avem o mulțime de idei, careva deja semi-implementate, și sperăm să venim cu update-uri dese. Prima extensie oficială pentru google chrome creată pentru a ușura navigarea pe iubitul vostru site - Torrents.MD. Capacități:  - Notificări sonore la recepționearea unui mesaj privat nou, cu opțiunea de a elimina notificarea;  - Notificare vizuală lângă logotipul Torrents.MD cu numărul mesajelor noi, necitite;  - Afișarea numărului de mesaje noi necitite, torrente noi și teme la urmărire în pop-up;  - Căutarea rapidă a torrentelor;  - Căutarea torrentelor după id'ul IMDb;  - Posibilitatea de a adăuga butonul "Friends"(Prieteni) în popup;  - Localizare, în 3 limbi (rusa/româna/engleza) ce se setează automat în dependență de limba selectată a browserului;  - Layout plăcut la actualizarea extensiei; Instalează acum! | Install it now! | Установи сейчас! Developers: flienteen and mishunika Orice idei/sugestii/critici/obiecții sunt binevenite... Le puteți lăsa aici în comentarii, pe topicul special de pe torrentsmd sau să'mi scriți pe mail.
Motivația... de unde începem?
    În primul rând, hai să formulăm o definiție cât mai perfectă a motivației aducând la cunoștința cititorului toate ramurile și tipurile ei, pentru ca mai apoi să fim apți de dezbate tema dată... Hai să începem de la rădăcina cuvântului, și anume "motiv" (din lat. moveo - a mișca, a activa). În viziunea mea, motivul este un pretext, o cauză generată de diverși factori, ce duc până la urmă la apariția efectului. De obicei, această cauză este una rațională și logică, adică ceva normal, un fenomen clasic "cauză-efect". Totuși rămâne loc și pentru pretextele mai puțin logice, stârnite de diverse sentimente, necesități bizare, dorințe nebune, emoții trăite sau doar rîvnite, pretexte rezultante din comportament etc.     Prin urmare motivația este acel fenomen ce ne justifică să acționăm într-un fel sau altul, e un fenomen foarte interesant și totodată extrem de complex. La moment mă simt motivat să studiez acest fenomen, straniu, nu? %) Cu toate astea încă nu am identificat ce anume m-a îndemnat să fac așa un studiu, probabil lenea, care, uneori e mai evidențiată decât motivația și, probabil, conștiința care tinde să scape de lene prin a avea o motivație mai mare, dar totuși zic să lăsăm și la propriu și la figurat lenea pe altă dată.    Din articolele citite și analizate de pe wikipedia și din rezultatele afișate de google am aflat că sunt două curente fundamentale de motivație formulate de către psihologii moderni. Aceste două tipuri sunt: [1]    - motivația intrinsecă - e acel tip în care persoana urmărește o activitate cu scop de explorare, cunoaștere, e ceva ce vine dinnăuntru, o valoare lăuntrică, ce nu necesită o recompensă materială; acest tip de motivație este de caracteristic perioadei de copilărie, când tânărul „explorator” vrea să cunoască totul despre lucrurile ce îl înconjoară. Chiar și în perioada de adolescență este destul de accentuat tip a motivației, spre exemplu unii tineri studiază limbi străine, fără a avea un scop bine definit, ei o fac din pasiune și plăcere, sau practică careva sporturi care la nivel fizic provoacă discomfort, ori stau zile întregi cu chitara în brațe exersând careva note/cântece neavând planuri pe viitor în ceea ce ține dezvoltarea  talentelor muzicale, etc...;    - motivația extrinsecă - e tipul în care persoana urmărește, prin efortul depus, lucruri ca banii, prestigiu, statut și multe alte fleacuri pentru care lumea își roade gâturile unul altuia. Totuși statistica arată că mult mai multe lucruri create au fost nu pe baza motivației extrinseci, căci banii, statutul social duce adesea spre o tendință spre monopolizare, pentru a nu se pierde din arealul de acoperire, fiindcă ființa umană așa e concepută, ca fiind lacomă, hapsână și egoistă (^_^). Da! Exact așa, și să nu încercați să spuneți că nu știți despre ce e vorba. Cineva spunea „am să fac X sume de bani, și după ce ajung la țelul dorit, mă las, și încep a trăi viața mai departe”, însă nu aici a fost sfârșitul, chiar dobîndirea a sumelor chiar de sute de ori mai mari decât cele propuse.    Toate factele expuse mai sus, sunt o simplă parte din teoria psihologiei moderne, și nu cred că spune prea multe pentru un simplu cititor, care și-a pierdut câteva minute din viață pentru a parcurce acest text. Am să încerc mai departe să relatez pe scurt, ceea ce în viziunea mea e motivația, de unde vine și încotro ne îndreaptă.   Un tip interesant de motivație, în viziunea mea este acea ce se căpătată prin încurajare. De multe ori, începem să ne perfecționăm în urma cărorva laude aduse de către apropiații noștri. Dar, de ce oare? De mici copii, ne este insuflat că orice laudă își are un scop ascuns, și mai ales atunci când lauda nu este prea meritată, apare tendința către perfecționare. Odată cu astfel de încurajări, vine și entuziasmul, care pe lângă perfecționarea în domeniu duce și la creșterea autoaprecierii/imaginii proprii. Desigur un overdose de autoapreciere (самооценка) nu duce spre bine, de aia cel mai bine e ca totul să fie în echilibru. Totuși mă strădui să dau valoare persoanelor ce merită, persoanelor ce știu, că pot și mai mult decât fac, pentru că o parte mică din aprecierea mea să devină un imbold pentru motivația sa.   Totuși, sunt oare banii o sursă inevitabilă pentru sporirea motivației, entuziasmului, succesului? Pentru mine banii nu sunt un scop ce trebuie dobîndit, ei sunt mai degrabă o necesitate, adică, ceea ce fac, nu o fac pentru bani, o fac pentru alte motive (plăcere, prietenie, pasiune, whatever), și banii care iese din treaba asta (dacă iese) sunt o simplă recompensă. Cum n-ar fi, dar banii motivează, doar că nu la același nivel ca ați factori. Totul e diferit de la om la om, și totul depinde de educație, necesități, posibilități, doar că, în opinia mea, banii nu trebuie să fie un punct de pornire în oricare activități.    Haideți să admitem că faceți un lucru, și la un moment dat vă dați seama că nu mai sunteți motivat de el, și că nu mai doriți să-l mai faceți. În primul rând v-aș sfătui să studiați motivele, ce au cauzat această întoarcere de situație, ca să puteți reactivea acea motivație, și doar dacă vă provoacă discomforturi să vă lăsați de acel lucru.    În fine, totul se reduce la câteva întrebări: "Ce vreau?", "Ce știu?", "Ce pot face?", "Ce îmi place cel mai mult să fac?". Și iată atunci când răspunsurile acestor întrebări ajung la un punct comun, atunci se poate de vorbit despre motivație/entuziasm/voință de lucru. To be continued... ps. niște hrană pentru minte:
Primul post %)
ehm... Neavând ce face, sau poate din contra, am hotărât să'mi creez un blog... Vă întrebați pentru ce l-am creat? Singur mă întreb... Probabil curiozitatea m-a motivat să-l fac... De fapt, ce e curiozitatea? Eu cred că e așa un sentiment datorită căruia mulți s'au ars, au mâncat peste bot sau chiar și'au găsit sfârșitul, dar și mai mulți au dobândit ceva important, important nu doar pentru sine, dar și pentru întreaga omenire... Prin crearea acestui blog sper să merg pe a doua ideie, adică să creez ceva important nu doar pentru mine, dar și pentru întreaga omenire %) huh... Acesta e primul post, nu?... Oare de ce nu am scris un text-test tip "Lorem ipsum dolor..." sau "The quick brown fox jumps over the lazy dog"? Hm... Cred că am vrut să scriu un post cu sens, nu știu cât de tare s-a primit, dar totuși l-am scris... L-am scris? L-am scris! ae!

Generat în 0.304 secunde.