Archive for the Category ◊ Geek 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#
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
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/

Romanian/Bucharest Linux User Groups. Programmers day.
Sunday, September 13th, 2009 | Author:

După ce am tot găsit multe site-uri ale LUG-urilor din tot felul de orașe din lume, am fost curios dacă există un Linux User Group pe plan local. Așa că am dat un mic search pe Google și am găsit că există Bucharest LUG [1]. Am intrat pe site-ul lor, am văzut că au și un canal de IRC ( #blug.ro pe FreeNode [2]) și am început să vorbesc cu oamenii de acolo.  În acest weekend am fost și la una din întâlnirile lor care a fost destul de interesantă (am aflat mai multe despre o distribuție numită ArchLinux și despre un soft de telefonie IP făcut în România, Yate).

Am mai căutat puțin și am găsit și o listă [3] de LUG-uri și Comunități Open Source din România (ROSEdu is one of them ;) ).

În alte știri, azi s-a sărbătorit Ziua Programatorului [4]. Ziua a fost declarată oficial sărbătoare în Rusia [5].

[1] http://blug.ro

[2] irc://irc.freenode.net/#blug.ro

[3] http://wiki.lug.ro/mediawiki/index.php/Comunit%C4%83%C5%A3i_Linux_din_Rom%C3%A2nia

[4] http://www.programmerday.info/

[5] https://news.slashdot.org/story/09/09/12/1548245/Russias-New-Official-Holiday-mdash-Program

IPv6 Part I: TunnelBroker & IPv6 Certification
Thursday, August 20th, 2009 | Author:

Deși mai configurasem o adresăIPv6 și cu alte ocazii [1], nu intrasem adânc în subiect decât la clasa de BSCI de la Cisco pe care am terminat-o recent. După clasă, pentru că mi-a plăcut subiectul, am încercat să văd IPv6 în viața reală, ceea ce era puțin problematic pentru că legăturile mele la Internet vin numai în varianta IPv4.

Dar am descoperit un site interesant, TunnelBroker [2], care oferă tunele IPv6 peste conexiuni IPv4, gratuit. Provider-ul respectiv are o rețea globală de servere accesibile prin IPv4, dar care routează IPv6 în Internet. Tot ce e nevoie este un server propriu sau un workstation care să aibă un IP public (acesta va fi clientul). Configurația tunelului se face într-o parte automat, pe site și cealaltă parte pe stația locală manual. Instrucțiunile complete se găsesc pe site.

ipv6_ping

Aceeași firmă ce administrează site-ul TunnelBroker și rețeaua de servere, Hurricane Electric, oferă și o certificare [3] de atestare a cunoștințelor despre IPv6. De exemplu, primul test constă într-un quiz despre IPv6 iar al doilea presupune configurarea unui client care să fie capabil să acceseze o pagină IPv6.

IPv6 Certification Badge for AlexJ

Fun fact: Există un ‘experiment’ pentru a promova IPv6 [4], dar care, momentan, pare a fi mort.

[1] http://alexj.info/?p=92

[2] http://www.tunnelbroker.net/

[3] http://ipv6.he.net/certification/cert-main.php

[4] http://ubergeek.ro/2008/08/22/ipv6-experiment/

Security boost in Wireless with VPN
Sunday, June 28th, 2009 | Author:

Când ai un laptop, ești foarte fericit când găsești o conexiune Wireless pentru a te conecta la Internet. Problema este că, de obicei, rețele publice sunt Open, adică nu au nici o securitate în transferul de date. Majoritatea software-ului  nu trimite encriptate datele și este foarte ușor ca cineva să captureze parole sau conversații.

O soluție ar fi VPN, Virtual Private Network. Nu este o soluție implementabilă de oricine, pentru că necesită un server conectat la Internet cu un IP public. Pe serverul respectiv trebuie instalat un daemon cum este OpenVPN [1]. De asemenea, pe fiecare calculator ce va folosi rețeaua VPN va fi necesară instalarea clientului OpenVPN. Pentru fiecare client, se va genera o pereche de chei publică-privată pentru a se asigura că restricționarea accesului la serviciul de VPN.

Un tutorial despre cum se poate crea o rețea VPN se găsește pe site-ul OpenVPN [2]. O versiune mai scurtă și mai practică pe Big Lazy Sysadmin [3].

După crearea rețelei, pe serverul VPN trebuie activată rutarea rețelei private în cea de Internet (cel mai probabil prin NAT). Aici intervine problema unei soluții VPN: tot traficul trece prin serverul respectiv, ceea ce înseamnă că viteza maximă atinsă pe un client este  jumătate din viteza serverului (pentru că traficul trebuie să circule în două direcții). Dar pentru persoanele ce țin la securitate, prețul merită.

[1] http://openvpn.net/

[2] http://openvpn.net/howto.html

[3] http://big.lazyadmin.ro/2007/04/27/openvpn-gateway-tutorial/

Reviews: VMware Server 2 & Windows 7 beta
Saturday, April 11th, 2009 | Author:

VMware oferă versiunile Server gratuit (mai puţin ESX). Versiunea 2.0 a VMware Server a schimbat foarte tare modul de interacţiune cu maşinile virtuale. În  spate rulează un server ce controlează maşinile vituale iar interacţiunea se face printr-o interfaţă web. Instalarea pe un sistem Linux se face foarte uşor (faţă de versiunile precedente) şi accesarea se face printr-un browser folosind utilizatorii din sistem (root by default). Chiar dacă o interfată web ofertă posibilitatea de administrare de la distanţă fără un software client, acestă interfată este ceva mai puţin ergonomică, cel mai greu fiind administrarea hard disk-urilor virtuale şi imaginilor de cdrom.Interacţiunea cu maşina virtuală ce rulează se face printr-o consolă ce poate fi folosită după instalarea unui plug-in. În Firefox pluginul se instalează automat.

După ce am descărcat iar o imagine de Windows 7 beta de pe site-ul MSDN AA [1] , trecând cu Wine peste programul de download manager ce rulează doar pe Windows, am făcut instalarea pe care m-am tot chinuit să o fac [2].

Windows 7 beta review (part II)

Instalarea a fost destul de uşoară şi foarte rapidă (penru cei 3 giga de kit). În compromisul între uşurinţa instalării şi gradul de personalizare a instalării, prima variantă a câştigat. Pentru minusuri în setup see [2].

Imaginea cu care intri prima dată în sistemul de operare este 99% Windows Vista. Se vede că Vista a fost cel mai mult un punct de plecare pentru noul design. Au mai lucrat la unele detalii şi au adăugat şi lucuri noi. Prima schimbare observată a fost în Paint şi Wordpad (Solitaire a rămas în mare la fel :P ). Este destul de important acest lucru pentru că este prima modificare a lor de la Windows 3.11 până în prezent. Ambele arată ceva mai bine şi au o interfată still Microsoft Office 2007. În Wordpad au adăugat suport pentru fişiere OOXML şi, de apreciat, odf (adică ambele standarde open de documente). Chiar şi Calculator a fost uşor modificat.

Versiunea testată nu a venit cu Aero şi, pentru cei ce nu sunt atraşi de interfaţa grafică, încă se poate scoate tema şi reveni la un aspect de Windows 95. Un lucru destul de stresant în Vista era User Account Control (o versiune nereuşită de sudo). În Windows 7 au adăugat un nivel mai mare de control al sensibilităţii (nu doar on/off) şi setarea implicită nu e atât de paranoică. O setare ce părea interesantă era posibilitatea de legare a contului din sistem cu un online account (nu ştiu dacă era .Net Passport sau OpenID pentru că nu mi-a mers). Cea mai neergonomică parte din Vista mi s-a părut administrarea interfeţelor de reţea (necesită mult prea multe click-uri pentru a ajunge la ele) şi, din păcate, şi in Windows 7 a rămas la fel.

Promiţător părea sistemul de recovery. Deşi nu am putut activa opţiunea, pentru fiecare fişier se putea păstra o istorie a modificărilor (un fel de SVN local probabil).

Un lucru dezastruos din punctul meu de vedere este ce au făcut cu taskbar-ul. Au unit Quick Lunch-ul cu Taskbar-ul. Dacă există o scurtătură spre un program, instanţele lui sunt dechise şi grupate peste aceeaşi iconiţă, ceea ce este foarte ineficient. Dar au adaugat un buton perrmanent de show desktop.

Nici impresionat, dar nici foarte dezamăgit de Windows 7 beta (comparativ cu Vista), aştept Release Candidate-ul penrtu a-l testa pe o maşină fizică (mai exact pe laptop, unde această versiune a eşutat grav).

Fun fact: imaginea de pe desktop este un peşte numit beta. [3]

[1] http://www.microsoft-lab.pub.ro/msdnaa/

[2] http://alexj.info/?p=713

[3] http://en.wikipedia.org/wiki/Betta

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