Archive for March, 2008

16th Mar 2008

Know your low-level

De multe ori ne-am intrebat la facultate sau liceu de ce invatam niste lucruri (uneori teoretice) pe care nu prea le vom folosi. De multe ori acele lucruri sunt introduceri catre niveluri inalte de cunoastere a unui limbaj, calculator sau a unei materii.

De abia prin anul 2 de facultate am inceput sa invatam cateva lucruri de nivel scazut legat de calculatoare: assembly, achizitii de date, aritectura calculatoarelor, retele de calculatoare. Sa stii cum lucreaza o functie, o comanda sau un protocol te ajuta foarte mult sa eviti bottleneck-uri, sa-ti optimizezi codul sau sa folosesti comenzile cele mai optime pentru operatiile potrivite.

Spre exemplu daca vreti sa inmultiti un numar cu o putere de a lui 2 e mai usor si mai optim sa lucrezi cu operatori pe biti: >> <<:

X << 5 este acelasi lucru cu X=X*2^5. Invers, X >> 5 rezulta in X = X/2^5. Asta fiindca in binar deplasarea la stanga cu o cifra a unui numar inseamna inmultirea acelui numar cu 2 (identic si in sistemul zecimal, unde deplasarea la stanga inseamna inmultire cu 10).

In domeniul retelelor de calculatoare afli cum functioneaza metodele de detectare si corectie a erorilor ceea ce te vor ajuta mai tarziu daca doresti sa dezvolti un algoritm de criptare.

Trebuie si sa stii cum sa folosesti optim resursele calculatorului, cum functioneaza garbage collectorul limbajului pe care-l folosesti, daca chiar trebuie sa folosesti int in loc de char sau chiar byte, ce sunt indexii in domeniul bazelor de date, cum functioneaza si cum sa-i folosesti.

Trebuie sa-ti cunosti mediul ca sa-l folosesti optim si ca sa supravietuiesti.

Tags: , ,

Posted by Posted by Auras under Filed under Uncategorized Comments 3 Comments »

03rd Mar 2008

Perceptia umana

Nu intotdeauna socoteala din targ se potriveste cu cea de acasa. La fel si cu optimizarile: nu intotdeauna ceea ce ai calculat se simte si in viata reala.

Spre exemplu in linux poate parea ca fisierele sunt copiate dintr-o parte in alta cu viteza mare si desi este adevarat, viteza comparativa cu Windows poate nu fi asa mare. In linux nu avem progress bar pe cand in windows da. Cam asa este si cu Windows XP vs Windows Vista. Windows Vista care are un algoritm improvizat de copiere fata de XP de fapt copiaza mai rapid fisierele dintr-o parte in alta din 2 motive:
1. Au facut estimarea idioata a timpului de copiere (care dureaza 12 secunde) inainte sa se inceapa copierea
2. Progress bar-ul in Vista ramane permanent pe ecran pana cand se scrie ultimul bit pe cand nu asa se intampla si la XP unde progress barul dispare dupa cache-uirea (copierea in memorie, nu si pe hdd) ultimului bit.

Alt test interesant este acest studiu in care se ruleaza progress baruri care sunt afisate de catre functii diferite dar toate dureaza au aceeasi durata de executie. Persoanele care au participat in acest test nu au stiut ca toate ruleaza la fel de mult si li s-au parut ca unul e mai rapid ca altul.

Mai multe puteti citi si de la Jeff Atwood.

Despre optimizarea performantei cu utilizatorii in gand este interesant acest articol. De aici exemplul cu lifturile mi-a placut foarte mult:

A classic example occurred in the 1930s in New York City, where “users” in a large new high-rise office building consistently complained about the wait times at the elevators. Engineers consulted concluded that there was no way to either speed up the elevators or to increase the number or capacity of the elevators. A designer was then called in, and he was able to solve the problem.

What the designer understood was that the real problem was not that wait time was too long, but that the wait time was perceived as too long. The designer solved the perception problem by placing floor-to-ceiling mirrors all around the elevator lobbies. People now engaged in looking at themselves and in surreptitiously looking at others, through the bounce off multiple mirrors. Their minds were fully occupied and time flew by.

Tags: , ,

Posted by Posted by Auras under Filed under Uncategorized Comments 1 Comment »

02nd Mar 2008

Social gaming

Conceptul de social gaming s-ar putea traduce prin multiplayer gaming, dar eu ma voi referi la intalnirea fizica dintre jucatori inainte inceperii meciului.

Nimic nu se poate compara cu a-ti vedea inamicul cum se enerveaza si injura in timp ce mananca bataie la o partida de joc. Desigur, poti folosi teamspeak sau ce alta functie de comunicare audio este disponibila in joc dar tot nu se compara cu experienta reala.

Acum cativa ani astfel de intalniri se intamplau foarte des deoarece fenomenul internet nu luase amploare, in special fenomenul broadband necesar pentru majoritatea de jocuri multiplayer din ziua de azi. Aceste intalniri se intamplau cel mai des in internet cafe-uri dar de cele mai multe ori aici nu toate persoanele participau in aceeasi competitie. Iar unele conditii nu le puteai asigurai: performanta pc-urilor, a perifericelor (mausi, tastaturi), igiena, “vecinii”, etc.

O alta forma de socializare gameristica o luau “camp-urile” organizate la noi in tara de catre reviste de jocuri: vezi LEVEL fan camp. Campul avea si are cel mai mare numar de participanti la o astfel de adunare si se organizeaza sub principiul BYOC: bring your own computer. Tu trebuia sa-ti aduci de acasa PC-ul si tie ti se ofereau infrastructura: mese+scaune, conexiune la retea/internet, jocuri si cazare + masa. Este si cea mai organizata forma si incepi sa socializezi cu gameri noi pe care nu i-ai cunoscut niciodata. Deobicei se organizeaza si turnee/concursuri cu premii. Astfel la sfarsit te poti alege si cu putina notorietate :) .
Campuri nu stiu daca se mai organizeaza dar stiu ca se organizeaza computer fest-uri (LAN party-uri mai mari) si turnee de jocuri, adunari de 1-2 zile/nopti in care poti veni cu calculatorul intr-o locatie mare si participi in diferite concursuri de jocuri asemanator cu camp-ul.

Ultima forma si cea mai raspandita pana si in ziua de azi o au LAN party-urile dar nu cele amploare mare ci cele care se desfasoara intr-o casa/apartament de bloc intre prieteni deobicei. Investitiile sunt minime: mancare si bautura iar conditiile sunt deobicei ca la mama acasa :) . Eu am participat la acestea cel mai des in ultimii ani si mai des in ultimul an, de cand mi-am luat laptop. Fiindca majoritatea prietenilor mei au laptop atunci mobilitatea este foarte mare si tot ce ne trebuie este un router wireless.
Fiindca avem laptopuri si nu gaming desktop-uri asta inseamna ca si aria jocurilor ce le putem rula este restransa dar suficient de larga incat ne putem permite sa jucam foarte ok jocuri de acum 2 generatii, campionul fiind DotA, un mod de Warcraft 3 TFT.

Adesea luam laptopurile si in vacanta si incingem o partida prin baruri, tren, aeroport, cabana/hotel, etc.

DotA Lan Party

Tags: , , ,

Posted by Posted by Auras under Filed under Uncategorized Comments 5 Comments »