Archive for the Category ◊ Funny Stuff ◊

Python is like music…
Wednesday, July 20th, 2011 | Author:

Sunt foarte amator în ceea ce privește muzica (nu mă refer la ascultat muzică :P ). Și dacă nu era de ajuns că încercam să cânt fără talent la chitară, mai nou încerc să învăț să cânt la pian. Dar dacă la chitară oricine poate să cânte ceva, la pian, aparent ai nevoie de ceva cunoștințe de teorie muzicală.

Și m-am apucat de acorduri la pian, bazându-mă pe ce știam la chitară. Dar cum ureche muzicală nu am, calculam pe hârtie care sunt notele echivalente între cele două instrumente.

Dar parcă nu era eficient… hai să aducem puțin geekyness în ecuație. Și la Python sunt amator, dar totuși sunt mai talentat în programare :P . Așa că hai să scriem niște generatoare de note și acorduri. Câteva zeci de minute mai târziu, “biblioteca” python de muzică de mai jos.

Așa că cine știe teorie muzicală și vrea să invețe python, sau cine știe python și vrea să vadă ce e acela un acord, să se uite pe pychords.

#!/usr/bin/python

def next_note(note):
# note can be A,B,C,D,E,F,G
	if note == 'G':
		return 'A'
	else:
		return chr(ord(note)+1)

def next_semitone(semitone):
# semitone can be A,A#,B,C,C# etc.
	if len(semitone)>1 :
		if semitone[1] == '#':
			return next_note(semitone[0])
	if semitone[0] == 'B':
		return 'C'
	if semitone[0] == 'E':
		return 'F'
	return semitone[0] + '#'

def next_nth_semitone(semitone, n):
	for i in range(n):
		semitone = next_semitone(semitone)
	return semitone

def next_pitch(pitch):
# pitch can be A0,A#0,C4 etc.
	if pitch[1] == '#':
		semitone = pitch[:2]
		octave = int(pitch[2:])
	else:
		semitone = pitch[0]
		octave = int(pitch[1:])
	semitone = next_semitone(semitone)
	if semitone == "C":
		octave = octave+1
	return semitone + str(octave)

def next_stream(init, function, size):
	stream = []
	for i in range(size):
		stream.append(init)
		init=function(init)
	return stream

def major_chord(note):
	print note+" chord:"
	print note,next_nth_semitone(note, 4),next_nth_semitone(note, 7)

def minor_chord(note):
	print note+"m chord:"
	print note,next_nth_semitone(note, 3),next_nth_semitone(note, 7)

# Guitar with standard tuning (fret 0 is open fret)
print next_stream("E4", next_pitch, 13)
print next_stream("B3", next_pitch, 13)
print next_stream("G3", next_pitch, 13)
print next_stream("D3", next_pitch, 13)
print next_stream("A2", next_pitch, 13)
print next_stream("E2", next_pitch, 13)

major_chord("A")
minor_chord("B")

Dacă am făcut ceva greșeli, commentariile sunt binevenite, cât timp sunt malițioase :P .

Și iată și rezultatul inițial dorit, și anume cum arată notele pe o chitară standard.

['E4', 'F4', 'F#4', 'G4', 'G#4', 'A4', 'A#4', 'B4', 'C5', 'C#5', 'D5', 'D#5', 'E5']
['B3', 'C4', 'C#4', 'D4', 'D#4', 'E4', 'F4', 'F#4', 'G4', 'G#4', 'A4', 'A#4', 'B4']
['G3', 'G#3', 'A3', 'A#3', 'B3', 'C4', 'C#4', 'D4', 'D#4', 'E4', 'F4', 'F#4', 'G4']
['D3', 'D#3', 'E3', 'F3', 'F#3', 'G3', 'G#3', 'A3', 'A#3', 'B3', 'C4', 'C#4', 'D4']
['A2', 'A#2', 'B2', 'C3', 'C#3', 'D3', 'D#3', 'E3', 'F3', 'F#3', 'G3', 'G#3', 'A3']
['E2', 'F2', 'F#2', 'G2', 'G#2', 'A2', 'A#2', 'B2', 'C3', 'C#3', 'D3', 'D#3', 'E3']

Poate să calculeze și acordurile majore și minore:

A chord:
A C# E
Bm chord:
B D F#
Graduation
Wednesday, August 04th, 2010 | Author:

4 ani de CS…done()

Eşti student la Calculatoare Part III
Thursday, December 10th, 2009 | Author:

Strânse în ultimul an…

Ești student la Calculatoare dacă…

  • vezi că a doua zi e 14 februarie și te gândești că “mâine se scoate ultima versiune de Debian”, nu că e Valentine’s day
  • citești linia de mai sus după 8 luni și afirmi că “Dar parcă s-a scos pe 15 totuși… a întâziat cu o zi”
  • scuza ta pentru că ai întârziat la o întâlnire este că nu s-a sincronizat calculatorul cu serverul NTP
  • în ghiozdanul tău ai oricând un cablu USB-MiniUSB, un cablu UTP și un cablu de consolă
  • utilizările pentru uleiul de gătit Bunica sunt: făcut omletă, clătite, cartofi prăjit și, cel mai des, uns ventilatoare de la coolere
  • te ceartă prietena ta că ai venit târziu acasă… pentru că ai stat să instalezi Windows 7 și Linux
  • scuza pentru că ai uitat o zi de naștere este că Google Calendar nu a trimis mesaj să te anunțe
  • știi ultima versiune de kernel și noile feature-uri de pe GMail, dar nu știi că a căzut guvernul țării
  • încerci să convingi pe părinți să înlocuiască sistemul de telefonie de acasă cu unul de Voice over IP
  • atunci când se ia curentul la sala serverelor, viața ta nu mai are sens
Junos Presentation
Wednesday, September 30th, 2009 | Author:

în weekend-ul acesta a avut loc un eveniment de team building al instructorilor din Academia Cisco UPB (ccna.ro), unde s-au ținut și o serie de prezentări. Cum în ultimul timp am fost implicat în lucruri legate de Juniper, am vrut să fac o prezentare funny și în același timp ironică (prezentare Juniper pentru Academia Cisco :P ). Din păcate, din cauza unor schimbări de program nu am mai ținut prezentarea, dar măcar o fac publică (conține destul de multe lucruri utile).

The MIT Way:Un alt mod de a ține un curs
Tuesday, September 15th, 2009 | Author:

Iată un exemplu de curs mai aparte de la MIT [1] (Massachusetts Institute of Technology), pe sistemul MIT OpenCourseWare [2].

Iată și un interviu al profesorului Walter Lewin.

[1] http://web.mit.edu/

[2] http://ocw.mit.edu/

Culese timp de două săptămâni în grupul de studenți de la Calculatoare ce au fost la cursul de securitate din Paris.

Ești student la Calculatoare…

- daca îți ia mai mult timp să îți faci bagajul de gadget-uri decât cel de haine

- dacă checklist-ul pentru plecare se află într-un Google Notebook

- dacă înainte să pleci în excursie îți printezi starea vremii de pe AccuWeather și hărțile orașului de pe Google Maps… în dublu exemplar…

- dacă atunci când ieși din gară, din grupul de 10 studenți de Calculatoare, doi își scot GPS-ul şi alţi 3 hărțile printate (de pe Google Maps, see above…) şi se ceartă că  nu se ‘mapează’ corect

- dacă atunci când ajungi la hotel, prima grijă este dacă există Wireless Access Point în clădire

- dacă faptul că nu există reţele wireless open, nu te oprește de a ‘găsi’  Internet

- dacă mergi la KFC/McDonalds doar pentru a avea acces la HotSpot

- dacă într-o echipă de 11 oameni din toată Europa, propui ca numele echipei să fie un acronim din securitate, un cod de mesaj HTTP sau o formulă matematică

- dacă eşti impresionat de sistemul automatizat de colectat tăvile murdare din cantină

- dacă numeri scările de la un obiectiv turistic în hexa

- dacă o iconiţă de pe harta turistică ție se pare că seamănă cu o iconiţă din toolbarul de la Firefox

- dacă te gândeşti că Mona Lisa ar arăta mai bine dacă o editezi în Photoshop


Eşti student la Automatică şi Calculatoare dacă …
Thursday, February 05th, 2009 | Author:

Facultatea îşi lasa o amprentă asupra ta. Iată câteva exemple (based on true facts :P ) colecționate în ultimii 3 ani.

Eşti student la Calculatoare dacă

  • petrecerea de Revelion o dai cu muzică de pe YouTube (new)
  • ţii minte numărul apartamentul unde trebuie să mergi la petrecere făcând asocierea cu portul de DNS (new)
  • pentru a stabili o întâlnire trebuie mai întâi să dai invite pe Google Calendar (new)
  • nu te apuci de învatat decât atunci când cade conxiunea la net sau curentul
  • îţi dai seama că a venit sesiunea şi ceilalţi din cămin învaţă pentru că îţi creşte viteza la Internet
  • vorbeşti cu cei din camera vecina pe messenger pentru ca îţi este lene să te duci până la ei
  • foloseşti cablu de reţea UTP pe post de fir de rufe
  • nu te uiţi la televizor pentru că îţi ia mai mult să treci peste toate canalele fără să gasăşti nimic decât ţi-ar lua să downloadezi un film de pe reţea
  • când te culci urezi celorlati “nb!”
  • există în camera de cămin mult mai multe procesoare decât oameni
  • mâncarea de acasă vine în cutii de placi video
  • nu ai nici apă nici net la camin, dar speri ca mai întâi să vină netul
  • îţi strigi colegii nu pe nume ci pe ID-ul de messenger
  • vezi un 3 şi întrebi “ce-i epsilonul asta pe dos?”
  • nu ai mai fost de ani buni la cinema pentru că exista DivX-ul
  • propui ca la petrecerea de revelion să “cumpăram cam un giga de caşcaval”
  • întrebi dacă “esti stabil pe materia de TS”
  • vezi un minus şi te gândeşti că ai circuit inversor
  • nu mai ştii sa faci adunări / înmultiri decât pe regiştrii de 32biţi
  • atunci când ceilalţi pleacă la discotecă, tu vii de la un laborator de reţele
  • visezi cum desenezi un Hodograf
  • te saluţi cu colegii tăi prin SYN şi ACK

DISCLAIMER. Original postate (by me) pe dIMLight [1] în diverse articole ( [2], [3], [4] ).

[1] http://dimlight.all4u.cc/old

[2] http://dimlight.all4u.cc/?p=19

[3] http://dimlight.all4u.cc/?p=21

[4] http://dimlight.all4u.cc/?p=23

xkcd: geek thinking
Thursday, January 15th, 2009 | Author:

no comment needed :P

xkcd

I'm an idiot

Comentariul la comic este “Sadly, this is a true story. At least I learned about the OS X ‘say’ command.” :)

[1] http://xkcd.com/530/

For Xmass…
Friday, December 26th, 2008 | Author:

Christmas comic form xkcd:

Versiunea completă aici [1] .

Pentru geeks, vă ofer “A Geeks Guide To Surviving Christmas” [2] .

Şi o colindă tradiţională geeky aici [3] (nu am rezistat pâna la capăt :P ) .

Crăciun fericit! :)

[1] http://xkcd.com/521/

[2] http://www.youtube.com/watch?v=5jbATEEmM2o

[3] http://www.youtube.com/watch?v=n0iH1Yx0pRY

Remember dIMLight
Wednesday, December 24th, 2008 | Author:

Acum câțiva ani, niște colgi de liceu și cu mine aveam un site numit dIMLight. Site-ul conținea diverse articolele mai mult sau mai puțin fară sens. Era interesant pentru că a fost construit de la 0 de noi (lot’s of CSS, PHP & mySQL) și cu toate acestea, și acum seamăna foarte mult [1] cu un CMS ca WordPress și funcționa destul de bine. Când am pierdut găzduirea de la nimic.org (adresa era dimlight.nimic.org ) a fost închis.

Pentru că am ajuns și eu acasa, am vrut să fac un update al sistemului de operare de pe serverul meu de acasă, trecând de la OpenSuSe 10.2 la Debian Lenny. Printre lucrurile care trebuiau migrate, am dat peste codul site-ului și baza de date. Am decis să îl pun undeva online pentru posterioritate.

După instalarea Debian cu Apache2, PHP5 și mySQL5 am migrat site-ul spre adresa [1] http://dimlight.all4u.cc/old/ . O migrare nu e niciodată ușoară, mici bug-uri au fost rezolvate, dar totuși site-ul a fost codat destul de inteligent.

Totuși am dorit o renaștere a site-ului. Cu acest scop am zis să migrez conținutul pe WordPress. Am avut ocazia să testez noua versiune de  WordPress, 2.7 (care este foarte interesantă… probabil voi trece toate instanțele mele de wp pe ea). Așa că două zile am stat să copiez toate articolele în baza de date a noului site [2]. Am încercat să păstrez datele postărilor. Rezulatul: dIMLight 2.0 ( [2] http://dimlight.all4u.cc ).

[1] http://dimlight.all4u.cc/old

[2] http://dimlight.all4u.cc/

[3] http://dimlight.all4u.cc/?p=211