sondaj de opinie, ping, pubsub, pubsubhub, pubsubhubbub

06 septembrie 2009 de Prashant · Comentarii
Filed under: tehnologie

În cazul în care sunt sceptici, există o metodă în nebunia de mai sus, în titlul postului. În cercurile tech, este puţin probabil că nu aţi auzit de pubsubhubbub. În lunile rapide ani, a fost unul dintre primii trei vorbit despre lucruri. Alte două fiind de criptare homomorphic şi Google val [ 1. ]. Revenind la postul curent - termeni din titlu indică modul în care veţi obţine conţinutul de la alte persoane. Următoarele detalii devin mult mai clar, dacă vă imaginaţi lucruri se întâmplă cu privire la bloguri, chiar dacă acestea nu sunt conceptual limitează la bloguri.

De votare se referă la scenariu în cazul în care clienţii îl tot întreabă pe server, dacă ceva nou a venit. Cât de des pentru a solicita actualizări va fi întotdeauna o problemă cu votare prea frecvente sau prea rare, dar ca un cititor a subliniat aici că un lucru mare, cu de votare este că serverul nu are de a menţine de stat.

Ping se referă la cazul în care atunci când posta un articol, vă (sau software-ul), actualizează, de asemenea, unele populare (central) servicii de actualizare. Unele fundal aici .

Următorul este pubsub, care vine de la publicarea / abonati, unul dintre cele mai vechi teren pentru care a fost făcută aici de Evan Henshaw-Plath şi Kellan Elliott-McCrea (72 de slide-uri, dar merita trece prin). Constrîngerea de exemplu au dat împotriva a fost aceasta - la o anumită dată, FriendFeed tarat Flickr 2,9 milioane de ori pentru a obţine cele mai recente fotografii de 45,754 utilizatori, dintre care 6721 au vizitat Flickr în aceste 24 de ore şi ar putea fi "potenţial", încărcat o fotografie. Act de faptul că ceea ce au propus nu a fost o tehnologie nouă, aşa cum au subliniat "revolutionara tehnologie de noi de 20 de ani". Dacă o face pentru blog-uri, apoi una dintre problemele majore cu XMPP - prezenţa aeriene de date, care poate fi la fel de mare ca 60-70% poate fi redus foarte mult.

pubsubhub vine de la publicarea abonează-te hub şi pubsubhubbub este un protocol, de bază de care este ideea de pubsubhub. Editori în cadrul căreia (spun bloggeri) actualizarea hub, care (poate fi mai mult de un hub-uri, care vorbesc intre ele) se află "undeva în nor", conform protocolului acest lucru se poate impinge sau trage ca pe protocol, dar link-ul următor, în lanţ, hub-ul la client (de exemplu cititori), care se împinge mereu modelul. Această pagină este bun punct de plecare pentru pubsubhubbub, slide-uri Privire de ansamblu sunt bune. Încă de elocvent Anil Dash, o descrie aici, ca butonul de web.
Două alte citiri aferente sunt webhooks care este de fapt callback http. Github foloseste -l, astfel încât nu paypal pentru notificările asincrone de plată în IPN . Deci, face multe altele. Conceptul aferente este rsscloud care este din nou hub pubsub. Urmaţi acest link pentru detalii.

S-ar putea fi întrebaţi care este punctul de scris toate acestea aici, există două 1. Aceste lucruri sunt în valoare de cunoaştere, cel puţin minim şi 2. Acest blog este pubsubhubbub activat acum prin intermediul hub-ul appspot folosirea acestui WordPress plug-in şi hrana pentru animale este de asemenea pubsubhubbub activat prin FeedBurner, link-ul aici
-
[ 1 ]. - Bine introductivă citit pentru criptarea în întregime homomorphic este acest articol de Bruce Schneier şi această discuţie este mai mult sau mai putin singura sursă pentru Google Wave.

-UPDATE - Acest mesaj explică modul în care cerinţa de server public pentru apel invers poate fi lucrat pentru clienti în jurul valorii de desktop prin utilizarea gateway-ul XMPP (pentru pubsubhubbub).

Un pic de asamblare

29 august 2009 de Prashant · Comentarii
Filed under: tehnologie

După ce aţi citit acest articol despre buffer gratuite de blocare şi de a vedea de utilizare a CAS (comparati si swap), m-am simtit ca postarea codul de asamblare să facă acelaşi lucru. Utilizaţi caz acolo a fost de a scrie o metodă de nativ şi să-l de la Java (înapoi la 1,5, atunci când structurile de concurente de date în Java au fost mai mult sau mai puţin inexistente). Fără alte introduceri, voi dezlănţui codul de pe tine :) . Primul este pentru CAS şi al doilea este pentru GCD de calcul folosind algoritmul lui Euclid (acesta poate fi găsit în multe locuri şi tutoriale precum şi).

Compila si rula instrucţiuni de gcc file_name.c ; ./a.out

Compară şi Swap

   # Include 
  # Include 
 / / De schimb - NewValue, comperand este vechi / aşteptat valoare
 / *
  * Funcţie face de fapt următorul lucru - în cazul în care valoarea de la * dest este egal cu oldvalue apoi înlocuiţi-l cu NewValue altfel se lasa neschimbat: nu toate acestea atomic
  *
  * Există două opţiuni pentru valoarea de returnare
  * Valoarea iniţială a 1.is * dest şi lasă povara fxn de asteptare pentru a se compara cu oldval
  * 2.  face aici şi pentru a reveni 0 sau 1, acest lucru ar trebui să fie mai eficientă
  ** /

 / * Schimbă mai târziu, în macro * /
 CAS int (int * dest, int oldvalue, int NewValue) {
	 printf ("(% d,% d,% d)", * dest, oldvalue, NewValue);
	 / * Int CAS (int dest, int oldvalue, int NewValue) {* /
	 / * Int CAS (int dest, int NewValue, int oldvalue) {* /
	 Rezultatul int = 1 ;/ * 1 arată că CAS reuşit şi 0 arată că a eşuat * /
	 / * BTW nevoie pentru a seta CC pentru pavilion platesti!  * /
	 __asm__ __ volatile__ (
			 "Movl% 2,%% eax \ n \ t"
			 "Movl% 3,%% ebx \ n \ t"
			 "0% movl,%% ecx \ n \ t"
			 "LOCK \ n \ t"
			 "CMPXCHG% ebx%, (%% ecx) \ n \ t" / * ar trebui să fie LOCK de pe aceeaşi linie * /
			 "JZ DONE \ n \ t"
			 "Movl $ 0, 1% \ n \ t"
			 "DONE: \ n \ t"
			 : "M =" (destinatie), "= g" (rezultat)
			 : "G" (oldvalue), "G" (NewValue), "M" (destinatie)
			 : "% EAX", "% ebx", "ecx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldvalue, NewValue);
	 a reveni rezultat;
 }

 / * TODO
  * A scrie un alt fxn al AŞM, care pune mai sus, fxn într-o buclă în timp ce încerca şi să păstreze excepţia cazului în care aceasta reuşeşte * /

 int main () {
	 int a = 5, b = 6;
	 int * c = (int *) malloc (sizeof (int));
	 * C = 6;
	 / * Int c = 6; * /
	 printf ("% d \ n", CAS (c, b, b));
	 printf ("% d \ n", CAS (c, b, a));
	 printf ("% d \ n", CAS (c, a, a));
	 printf ("% d \ n", CAS (c, b, b));
	 * C = 6;
	 / * C = 5; * /
	 printf ("valoare schimbarea de la C *% d \ n", * c);
	 printf ("% d \ n", CAS (c, b, b));
	 printf ("% d \ n", CAS (c, b, a));
	 printf ("% d \ n", CAS (c, a, a));
	 printf ("% d \ n", CAS (c, a, b));
	 printf ("% d \ n", CAS (c, b, a));
	 return 0;
 }

Note de formatare - se pare ca evidenţiere Sintaxa WP este adăugarea în final, că ignora.

GCD

 # Include 
 int cmmdc (int a, int b) {
     int rezultat;
     / * Compute mai mare divizor comun folosind algoritmul lui Euclid * /
     __ volatile__ __asm__ ("movl% 1,%% eax;"
                           "Movl% 2,%,% ebx;"
                           "CONTD: cmpl $ 0,%% ebx;"
                           "Je făcut;"
                           "Xorl%% EDX, EDX%%;"
                           "Idivl%% ebx;"
                           "Movl% ebx%,%% eax;"
                           "Movl%% EDX,% ebx%;"
                           "JMP CONTD;"
                           "DONE: movl%% EAX,% 0;": "= g" (rezultat): "g" (a), "G" (b)
     );

     a reveni rezultat;
 }

 int main () {
     int prima secundă,;
     printf ("Introduceti doua numere:");
     scanf ("% d% d", şi în primul rând, şi al doilea);

     printf ("% d de GCD &% d este% d \ n", prima, a doua, cmmdc (prima, a doua));

     return 0;
 }

Lumea Cricketing aşteaptă o Noua Ordine Mondiala

25 august 2009 de Prashant · Comentarii
Filed under: Diverse

Dupa o serie de cinci teste şi se întinde pe aproximativ două luni, cenuşii regenerate Anglia.

Să vorbim despre prima echipa câştigătoare - ordinea lor de mijloc este "medie", dacă nu doriţi să critice. Contribuţia Greame Swann cu BAT va conta nu mai puţin de contribuţie cu mingea. Stuart Broad - cel mai bun all rounder de pornire a fost de non pentru testul 5. Andrew Strauss a fost jucătorul doar coerent şi Jimmy Anderson a fost jucătorul doar coerent.

Punctul de aici nu este de a mustra realizările din echipa câştigătoare, dar pentru a pune în perspectivă, faptul că, în ciuda toate acestea, Australia a pierdut. va trebui să se gândească pentru cateva secunde, în cazul în care a cerut să numească jucătorul lor cel mai bun. Dreapta, a fost BW Hilfenhaus. Hauritz depăşit aşteptările everbody, dar nu era încă suficient de bun pentru a fi selectat pentru două din cele cinci teste. Africa de Sud nu a devenit niciodată un bătăuş lume fără un tors de clasă mondială, Australia nu poate spera să rămână unul fără un un destul de bun, cel puţin. Magicianul a părăsit scena si nu mai arata ca arta, uita magie. Ponting standuri înalt, printre muritorii de mici şi Michael Clarke se ridică foarte des, dar că le face o echipa cu cativa jucatori foarte buni si nu o echipa foarte buna.
Cenuşă 2009 va fi amintit pentru Ashes ultimele Andrew Flintoff lui, sosire Stuart Broad ca un all rounder (în cazul în care, adaugă el ceva mai mult de folclor Ashes la începutul lui promiţător), şi una din secolul al debut cea mai elocventă din toate timpurile de către Trott, dar aceasta va fi, de asemenea, amintit ca punctul în care FI şi Scopuri despre supremaţia Australia, au fost puse în cele din urmă să se odihnească, acesta este de peste. Nu ma intelegeti gresit, inca mai pot scoate la iveală Mike Hussey sau Stuart Clark, dar te simti contribuţia tuturor somitatilor de timp atunci când acestea dispar. Uneori, ei vin pentru a vă reaminti de ei înşişi în IPL, dar totuşi ele nu pot fi înlocuite. Să simt binecuvântat pentru că a văzut Warne, McGrath şi Gilchrist joc împreună şi de a fi susţinut de Waughs, Ponting, Hyden, Martin şi Langer.

Mergând mai departe, Africa de Sud va rămâne mereu o echipă foarte bună, dar au nevoie să câştige semifinale şi să fie mai coerentă în jurul globului, Pakistan va rămâne enigmatic genial, arme indieni tineri vor găsi, probabil, este greu pentru a umple pantofi de predecesorilor extraordinare. Sri Lanka ar trebui să continue să arate sclipiri de artă în ambarcaţiuni. Dar, am putea avea să aşteptaţi pentru cândva înainte de a avea o echipa din dominantă sau înainte de un căpitan se plânge de lipsa de concurenţă, aşa cum Steve Waugh a făcut o singură dată.

Pe o notă legate de - hai să salut revenirea Asif, el are o multime iad potenţial, să sperăm pentru a vedea o parte din şi de bun venit, de asemenea, flori Andy în awatar nou, chiar nu puteţi ţine oameni buni jos pentru mult timp.

Ruby garnituri de a crea un hash

20 august 2009 de Prashant · Comentarii
Filed under: tehnologie

Ieri în timp ce trece printr-unul din programele mele vechi, am găsit acest lucru scris de mine cândva înapoi:

#begin magic
hash=Hash[*CGI.unescape(raw_text).split('&').map{|x| b=x.split("=");b.push(nil) if b.size==1;b}.flatten]
#end magic

Pentru a ucide o parte de suspans permiteţi-mi să dezvăluie că arată ca raw_text

 

, Dreapta a fost redus de la confirmarea de plată PayPal.

Deasupra liniei, dacă rupt în părţi mai prevede:

  unescaped_array = CGI.unescape (raw_text). Split ("&")
   unescaped_array = unescaped_array.collect {| x | = b x.split ("="); b.push (zero) în cazul în b.size == 1; b}
   flattened_array = unescaped_array.flatten
   hash = Hash [* flattened_array] 

Să facem pasi individuali din IRB:

  IRB (principal):. 009:0> unescaped_array = CGI.unescape (raw_text), Split ("&")    

 => ["De succes", "mc_gross = 10.00", "protection_eligibility = neeligibile", "payer_id = U7PPJJ4TSJ47E", "taxa = 0.00", "payment_date = 09:45:30 10 iulie 2009 PDT", "payment_status = aşteptare "]                                                                         

 IRB (principal): 013:0> unescaped_array = unescaped_array.map {| x | = b x.split ("="); b.push (zero) în cazul în b.size == 1; b}  

 => [["De succes", zero], ["mc_gross", "10.00"], ["protection_eligibility", "neeligibile"], ["payer_id", "U7PPJJ4TSJ47E"], ["impozit", "0.00"] , ["payment_date", "09:45:30 10 iulie 2009 PDT"], ["payment_status", "aşteptare"]]                               

 IRB (principal): 014:0> flattened_array = unescaped_array.flatten     

 => ["Succes", zero, "mc_gross", "10.00", "protection_eligibility", "neeligibile", "payer_id", "U7PPJJ4TSJ47E", "impozit", "0.00", "payment_date", "09:45: 30 10 iulie 2009 PDT "," payment_status "," aşteptare "]
 IRB (principal): 015:0>
 hash = Hash [* flattened_array]
 => {"Impozit" => "0.00", "payment_status" => "În aşteptarea", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10.00", "succesul" => zero, "payment_date" = > "09:45:30 10 iulie 2009 PDT", "protection_eligibility" => "neeligibile"} 

BTW, * se numeşte operator de bulină în Ruby

Un alt mod de a crea de distribuire de "matrice de perechi", este de a utiliza injectaţi:

  hash = [[1,2], [3,4]] injecta ({}). {| urmare, elementul de | rezultat [element.first] = rezultat [element.last];} rezultat 

Există o modalitate mai :) Scrie o buclă, pe care o voi lăsa ca un exerciţiu de cititori!

Aici este un caz pic de utilizare independent de crearea de reţele de distribuire din:

  IRB (principal): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Mai mică :: mai mare}

 => {: Mai mică => [1, 2, 3, 4],: o mai mare => [7, 9]} 

Puteţi face mai multe lucruri, în principal din cauza bloc este folosit ca o cheie pentru acel element din hash rezultat.

Gmail, Mutt şi msmtp fix

17 august 2009 de Prashant · Comentarii
Filed under: tehnologie

Dacă utilizaţi mutt şi SMTP pentru a accesa Gmail. Aici este o veste (proastă). Baietii cool de la Google a schimbat din nou certificat. Oh, am să vă întreb - cum îl ştii? Mutt simplă început să se plângă despre certificatul de rău atunci când încearcă să utilizeze msmpt, infamul "msmtp: certificat de verificare TLS eşuat:. Certificatul nu a primit un emitent cunoscut" a salutat-mă pe ecran.

Pentru a traversa confirma -
Doar rula în urma

$ msmtp --serverinfo --host=smtp.gmail.com --tls=on --port=587 --tls-certcheck=off

În loc de Server Thwate vechi acum te-ai urma în segmentul de emitent
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Din fericire, fix este simplu, aici este ceea ce aveţi nevoie pentru a face pe Debian

# apt-get install ca-certificates
# dpkg -s ca-certificates|grep Version
Version: 20090814

După această schimbare doar următoarea linie în tine ~~~V /. Msmtprc

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

tls_trust_file /certs/Thawte SSLWeb Server Roots/thawte Premium Server CA/Thawte Premium Server CA.pem

la

tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt

Git şi Sondaje Awesome

15 august 2009 de Prashant · Comentarii
Filed under: Diverse

Aici sunt două link-uri pentru studiu realizat de git (sistemul de control de versiune) şi minunat (managerul de ferestre) comunitare. Dacă utilizaţi oricare dintre acestea, vă rugăm să luaţi nişte timp să completeze chestionarul. Ganditi-va ca cel mai simplu mod de a contribui înapoi la software-ul utilizat.
Aici sunt link-uri:

Git - http://www.survs.com/survey?id=2PIMZGU0&channel=Q0EKJ3NF54

Awesome - http://www.survs.com/survey?id=8BVEV3FO&channel=BH07CQ040D

Notă - (După cum sa constatat în aceste pagini, dar la partea de jos :) ) -
"Dacă aveţi cookie-urile activate, puteţi trimite mereu sondaj umplut parţial, şi de a reveni la răspunsurile dumneavoastră la timp mai târziu, finalizarea mai târziu."

Hash Îmbinarea în fişierele conf yaml

31 iulie 2009 de Prashant · Comentarii
Filed under: tehnologie

YAML este destul de util pentru scrierea fişierelor de configurare. Avantajul principal este că, se citeşte ca fişier text. Acest lucru functioneaza foarte bine, dacă fişierul dumneavoastră de configurare este plat (nu ierarhie) şi nu are repetiţii.
Dacă fişierul dvs. are configuraţii de repetari, atunci face sens pentru a separa aceste elemente şi reutilizarea lor. Ce vreau să spun este aceasta - să spunem că fişierul de configurare arata ca aceasta:

  de dezvoltare:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: serverului_dvs
     autentificare: your_login
     Parola: top_secret
 de producţie:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: serverului_dvs
     autentificare: your_login
     Parola: top_secret 

Presupunând că codul de mai sus, în / tmp / test.yml aici este modul în care puteţi citi în Python şi Ruby
$cat readyml.py

 # / Usr! / Bin / env python
 din import pprint pprint ca PP
 # În debian trebuie să instalaţi python-yaml
 de la yaml de import de sarcină, load_all, benă
 hash = sarcina (open ('/ tmp / test.yml "))
 PP (hash ["dezvoltare"]) 


$ cat readyml.rb

  # / Usr! / Bin / env ruby
 nevoie de "PP"
 hash = YAML :: sarcina (File.open ('/ tmp / test.yml "). citeşte)
 PP hash ["dezvoltare"] 

aici este la îndemână o linie pentru versiunea Ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' sau puteţi încerca acelaşi lucru în IRB sau consola Python.

Reţineţi că, în fragmentul de cod de mai sus, totul este altfel decât în ​​locaţie de ieşire este aceeaşi în dezvoltarea şi partea de producţie. Acest lucru este în cazul în care identificatorul de nod yml vine pentru a salva. Ideea este simpla avea un set de valori implicite şi suprascrie le în alt loc.
Ai putea trage afară, după cum urmează:

  valori prestabilite: şi implicite
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: expeditor
     smtp_server: serverului_dvs
     autentificare: your_login
     Parola: top_secret
 de dezvoltare:
   : * << Implicite
 de producţie:
   : * << Implicite
   output_location: prod_location 


$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Mare, funcţionează (tm)!.
Se poate spune că am unele tranzacţionate claritate pentru un pic de magie. Aici este o explicaţie mic: &, * si <<: si care este tag-ul ancora poate fi înţeleasă ca identificator nod, * este nod de referinţă şi <<: standuri pentru îmbinare de distribuire.

Pentru mai multe detalii a se vedea fie Specificatii yaml sau wikipedia
Până în prezent, atât de bine, dar există o captură aici, aceste îmbinări de hash nu sunt recursiv. Ce înseamnă aceasta este: să presupunem că doriţi să aveţi nume de expeditor diferit de mail în două medii, poate fi tentat să facă următoarele:

  valori prestabilite: şi implicite
   input_location: common_input
   output_location: dev_location
   mail:
     SENDER_NAME: expeditor
     smtp_server: serverului_dvs
     autentificare: your_login
     Parola: top_secret
 de dezvoltare:
   : * << Implicite
   mail:
     SENDER_NAME: sender_dev
 de producţie:
   : * << Implicite
   output_location: prod_location
   mail:
     SENDER_NAME: sender_prod 

Vă permite să verificaţi

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
nil
$

Hopa, ceva a mers gresit, problema cum sa menţionat mai sus, este că îmbinarea hash nu este recursivă şi în timp ce fuzionează se înlocuieşte mail implicit prin e-mail de producţie care are doar o cheie. Soluţie / în jurul valorii de munca este de a derula un nivel mai mult:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  SENDER_NAME: expeditor
   smtp_server: serverului_dvs
   autentificare: your_login
   Parola: top_secret

 valori prestabilite: şi implicite
   : * << Common_settings
   mail:
     : * << Mail_defaults
 de dezvoltare:
   : * << Implicite
 de producţie:
   : * << Implicite
   mail:
     : * << Mail_defaults
     SENDER_NAME: sender_prod

Vă permite să verificaţi din nou

$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]["mail"]["login"]'
"your_login"
$

Ai spune că au un nivel una mai mult de cuiburi, de bine vă puteţi derula cu siguranta un nivel mai mult, dar apoi devine un dezastru. Deci, dacă nu se încearcă să scrie soluţie pentru turnuri din Hanoi într-un fişier conf, este mai bine să restucture fişier conf mult de săpat în yaml sau altceva. Dar asta este chemarea ta, oricum.

Programatorii avantajos găsi soluţii simple la probleme complexe

30 iunie 2009 de Prashant · Comentarii
Filed under: Diverse

După o lungă perioadă de timp am putut găsi sursa de după-citat

Programatori juniori a crea soluţii simple la probleme simple. Programatori seniori a crea solutii complexe la probleme complexe. Programatorii avantajos găsi soluţii simple la probleme complexe.

Este dintr-un eseu numit Software Frumoasa de Charles Connell.

O alta favorita a mea este Zen de Python -

Frumos este mai bună decât urât.
Explicit este mai bună decât implicit.
Simplă este mai bună decât complexă.
Complexul este mai bună decât complicat.
Plat este mai bună decât imbricate.
Rare este mai bună decât dens.
Lizibilitate contează.
Cazuri speciale nu sunt suficient de speciale pentru a incalca regulile.
Deşi practic bate puritate.
Erorile nu ar trebui să treacă în tăcere.
Cu excepţia cazului în tăcere.
În faţa de ambiguitate, refuză tentaţia de a ghici.
Nu ar trebui să fie una şi de preferinţă, doar un evident mod de a face acest lucru.
Deşi în acest fel nu poate fi evident la prima vedere, daca nu esti olandez.
Acum este mai bine decât niciodată.
Deşi nu este de multe ori mai bine decât * chiar * acum.
În cazul în care punerea în aplicare este greu de explicat, este o idee rea.
În cazul în care punerea în aplicare este uşor de explicat, aceasta poate fi o idee bună.
Spaţii de nume sunt o idee claxonatului mare - hai sa facem mai mult de cele!
-------------------------
şi apoi este clasic Tao de programare

-

de credite ca pe site-ul legat de

Tradus de Geoffrey James

Transcrise de Duke Hillard

Transmise de către Anupam Trivedi, Tampi Sajitha, şi Jagannath Meghshyam

Re-html-zată şi editat de Kragen Sittler

-

Cartea 1 - Silent Void

Astfel, a vorbit programator de master:

"Când aţi învăţat să smulgă codul de eroare din cadrul capcana, se
va fi timp pentru tine să plece. "

1.1

Ceva misterios este format, născut în gol tăcut. Aşteptare singur şi
nemişcat, este la o dată încă şi încă în mişcare constantă. Este sursa de
de toate programele. Nu ştiu numele său, aşa că am să numesc Tao a
Programare.

Dacă Tao este mare, atunci sistemul de operare este mare. Dacă de operare
Sistemul este mare, atunci compilatorul este mare. Dacă compilatorul este mare,
atunci cererea este mare. Utilizatorul este mulţumit şi nu există
armonia în lume.

Tao de programare fluxurilor de departe şi se întoarce pe vântul de dimineaţă.

1.2

Tao a dat naştere la limbaj maşină. Limbaj maşină a dat naştere la
de asamblare.

De asamblare a dat naştere la compilator. Acum, există zece mii
limbi.

Fiecare limba are scopul său, însă umil. Fiecare limbă îşi exprimă
Yin şi Yang a software-ului. Fiecare limba are locul său în cadrul Tao.

Dar nu programa în COBOL, dacă puteţi să-l evite.

1.3

La început a fost Tao. Tao a dat naştere la spaţiu şi timp.
Prin urmare, spatiul si timpul sunt Yin si Yang de programare.

Programatorii care nu înţeleagă Tao sunt mereu în criză de timp
şi spaţiu pentru programele lor. Programatorii care înţeleagă întotdeauna Tao
să aibă suficient timp şi spaţiu pentru a realiza obiectivele lor.

Cum ar putea fi altfel?

1.4

Programatorul este înţelept a spus despre Tao şi urmează-l. Mediu
programator se spune despre Tao şi o caută. O prostie programator
se spune despre Tao si rade la ea.

Dacă nu au fost de râs, nu ar fi nici Tao.

Cele mai mari sunetele sunt cel mai greu să audă.
Mergând mai departe este o modalitate de a se retrage.
Mare talent se prezinta tarziu in viata.
Chiar şi un program de perfecta inca mai are bug-uri.

-------------------------

Cartea 2 - The Masters Ancient

Astfel, a vorbit programator de master:

"După trei zile, fără programare, viaţa devine lipsită de sens."

2.1

Programatorii de vechi au fost misterios şi profund. Noi nu putem înţelege
gândurile lor, asa ca tot ce facem este descrie aspectul lor.

Aware, ca o vulpe de trecere a apei. Alerta, ca un general, pe
câmpul de luptă. Fel, ca o gazda salut oaspeţii săi. Simplu, cum ar fi
uncarved blocuri de lemn. Opac, cum ar fi piscine negre în peşteri întunecate.

Cine poate spune secretele din inimile şi minţile lor?

Răspunsul există numai în Tao.

2.2

Marele Maestru Turing o dată visat că era o maşină. Atunci el sa trezit
a exclamat:

"Nu ştiu dacă am Turing visez că am o maşină, sau o
masina visez că am Turing! "

2.3

Un programator la o companie de calculator foarte mare a mers la un software
conferinţe şi apoi sa întors să raporteze la managerul lui, zicând: "Ce fel
de programatori lucrează pentru alte companii? Ei s-au comportat prost şi au fost
indiferent cu apariţii. Părul lor a fost lung şi neîngrijite şi lor
hainele au fost şifonate şi vechi. Ei au prăbuşit suita noastră ospitalitate şi au
a făcut zgomote grosolane în timpul prezentării mele. "

Managerul a spus: "Eu niciodată nu ar trebui să te-am trimis la conferinta. Aceia
Programatorii trăiesc dincolo de lumea fizică. Ei consideră viaţa absurd, un
accidentale coincidenţă. Ei vin şi pleacă fără a cunoaşte limite.
Fără nici o grijă, ei trăiesc numai pentru programele lor. De ce ar trebui să se deranjeze
cu convenţiile sociale?

"Ei sunt vii în Tao."

2.4

Un novice întrebat Maestrul: "Aici este un programator care nu proiectează,
documente sau teste programele sale. Cu toate acestea, toţi cei care îl cunosc îl consideră unul dintre
cei mai buni programatori din lume. De ce este aceasta? "

Maestrul răspunde: "Asta programator a însuşit Tao. El a plecat
dincolo de nevoia de proiectare, el nu va deveni furios atunci când sistemul de
accidente, dar acceptă univers fără îngrijorare. El a trecut dincolo de
nevoie de documentare, el nu mai pasă dacă cineva vede codul lui.
El a trecut dincolo de nevoia de testare, fiecare dintre programele sale sunt perfecte
în cadrul ei, senină şi elegant, scopul lor evident. Într-adevăr,
el a intrat în misterul lui Tao. "

-------------------------

3 carte - Design

Astfel, a vorbit programator de master:

"Atunci când programul este testat, este prea târziu pentru a face proiectare
modificări. "

3.1

A fost odată un om care a mers la un spectacol comercial calculator. Fiecare zi ca el
a intrat, a spus omul de pază la uşă:

"Sunt un hoţ mare, renumit pentru fapte mele de furt din magazine. Fi
prevenit, pentru acest spectacol comerţului nu va scăpa unplundered. "

Acest discurs deranjat de paza foarte mult, pentru că au fost milioane de
de dolari de interior echipamente de calculator, aşa că a urmărit cu atenţie om. Dar
numai omul rătăcit de la cabina la standul, fredonând încet la el.

Când omul a plecat, paza l-au luat deoparte şi a căutat hainele, dar
nimic nu a fost de a fi găsit.

La zi de expoziţie, omul a revenit şi a certat garda
spunând: "Am scăpat cu o pradă mare ieri, dar astăzi va fi chiar
mai bine "Deci. paza îl privea tot mai strâns, dar fără nici un rezultat.

Pe ultima zi de expoziţie, Garda ar putea restrânge curiozitatea sa
nu mai mult. "Domnule Thief", a spus el, "Eu sunt atât de nedumerit, nu pot trăi în
pace. Vă rugăm să-mi lumineze. Ce este că se fura? "

Omul a zâmbit. "Am furat ideile", a spus el.

3.2

A fost odată un programator de maestru care a scris programe nestructurate. O
programator începător, încearcă să-l imite, de asemenea, a început să scrie
programe de nestructurate. Când novice a cerut comandantului să evalueze său
progres, maestrul l-au criticat pentru scrierea de programe nestructurate,
spunând, "ceea ce este adecvat pentru maestru, nu este adecvată pentru
novice. Trebuie să înţelegem înainte de a transcende structura Tao. "

3.3

A fost odată un programator care a fost anexat la instanţa de dictator militar
de Wu. Warlord întrebat programator: "Ce este mai uşor de a proiecta: o
Pachetul de contabilitate sau un sistem de operare? "

"Un sistem de operare," a răspuns programator.

Warlord a rostit un semn de exclamare de neincredere. "Cu siguranţă un contabil
Pachetul este banal lângă complexitatea unui sistem de operare, "a
a spus.

"Nu este aşa", a declarat programator, "atunci când proiectarea unui pachet de contabilitate,
programator funcţionează ca un mediator între oameni cu diferite
idei: cum trebuie să funcţioneze, modul în care rapoartele sale trebuie să apară, şi modul în care trebuie să
în conformitate cu legile fiscale. Prin contrast, un sistem de operare nu se limitează
de apariţii în afara. La proiectarea unui sistem de operare, programator
urmăreşte simplu armonia între maşină şi idei. Acesta este de ce un
sistemul de operare este mai uşor de a proiecta. "

Warlord de Wu a dat din cap şi a zâmbit. "Asta este tot bine şi bine, dar
care este mai uşor pentru a depana? "

Programatorul a făcut nici un răspuns.

3.4

Un manager a mers la programator de master şi a arătat-i cerinţele
document pentru o nouă cerere. Managerul a întrebat maestrul: "Cât timp
va lua pentru a proiecta acest sistem dacă am atribui cinci programatori să-l? "

"Se va lua un an", a spus maestrul prompt.

"Dar avem nevoie de acest sistem imediat, sau chiar mai devreme! Cât timp va
ia dacă am atribui zece programatori pentru ea? "

Programator de master se încruntă. "În acest caz, va dura doi ani."

"Şi ce dacă am atribui o sută de programatori să-l?"

Programator Comandantul ridică din umeri. "Apoi, de design nu va fi niciodată
finalizat ", a spus el.

-------------------------

Cartea 4 - de codificare

Astfel, a vorbit programator de master:

"Un program bine scris este cer proprie, un program de prost scris este
de propriul iad. "

4.1

Un program ar trebui să fie lumină şi agil, subrutine sale conectat ca un
şir de perle. Spiritul şi intenţia de a programului ar trebui să fie păstrate
pe tot parcursul. Nu ar trebui să fie nici prea putin sau prea mult, nici
bucle inutile nici variabile inutile, nici lipsa de structura, nici
copleşitoare rigiditate.

Un program ar trebui să urmeze Legea `de cel uimire". Ce este această lege?
Este pur şi simplu că programul ar trebui să răspundă întotdeauna la utilizator, în mod
miră faptul că cel puţin el.

Un program, indiferent de cât de complex, ar trebui să acţioneze ca o singură unitate. Programul de
ar trebui să fie regizat de logică în cadrul mai degrabă decât de aparenţelor.

Dacă programul nu reuşeşte în aceste cerinţe, va fi într-o stare de
tulburare şi confuzie. Singura modalitate de a corecta acest lucru este de a rescrie
program.

4.2

Un novice a întrebat maestrul: "Am un program care rulează uneori şi
uneori intrerupe. Am urmat regulile de programare, dar am
complet derutat. Care este motivul pentru aceasta? "

Comandantul a răspuns: "Eşti confuz, deoarece nu înţeleg Tao.
Numai un prost se aşteaptă comportament raţional din semenilor sai. De ce crezi
aştepta de la o maşină care oamenii s-au construit? Calculatoare simula
determinismul; doar Tao este perfectă.

"Regulile de programare sunt tranzitorii, doar Tao este veşnică. Prin urmare
trebuie să contempla Tao, inainte de a primi iluminarea. "

"Dar cum voi şti când am primit iluminarea?" A cerut
novice.

"Programul va rula apoi în mod corect", a replicat maestrul.

4.3

Un maestru a fost explica natura lui Tao de la unul din novici sale. "
Tao este încorporată în toate software-ul - indiferent de cat de nesemnificativ ", a spus
maestru.

"Este Tao într-un calculator de mână?" A întrebat novice.

"Este", a venit răspunsul.

"Este Tao într-un joc video?", A continuat novice.

"Este chiar într-un joc video", a spus maestrul.

"Şi este Tao în DOS pentru un calculator personal?"

Comandantul a tuşit şi a schimbat poziţia sa uşor. "Lecţie este de peste
pentru ziua de azi ", a spus el.

4.4

Programator Prince Wang a fost de codificare software-ul. Degetele dansat pe
tastatură. Programul compilat fără un mesaj de eroare, iar programul de
a fugit ca un vânt blând.

"Excelent!" Printul a exclamat, "tehnica ta este fără cusur!"

"Tehnica?", A spus programatorul de cotitură de la terminalul său, "Ce am
urma este Tao - dincolo de toate tehnicile! Când am început prima dată să I program
ar vedea înainte de a-mi întreaga problemă într-o singură masă. După trei ani am nu
a văzut mai mult această masă. În schimb, am folosit subrutine. Dar acum văd nimic.
Întreaga mea fiinţă există într-un vid fara forma. Simţurile mele sunt în aşteptare. Duhul meu,
libertatea de a lucra fără planului, urmează instinctul propriu. Pe scurt, programul meu
scrie în sine. Adevărat, uneori sunt probleme dificile. Eu le vad
vine, am încetini, mă uit în tăcere. Apoi am schimba o singură linie de cod
şi dificultăţile dispar ca bufe de fum inactiv. Am apoi compila
programul. Eu stau încă şi lăsaţi bucuria de munca umple fiinta mea. Am aproape mea
ochii pentru o clipă şi apoi faceţi log off. "

Wang a declarat Prince, "Vrei ca toate de programatori mele erau la fel de înţelept!"

-------------------------

Rezervaţi 5 - Întreţinere

Astfel, a vorbit programator de master:

"Desi este un program, dar trei linii de mult timp, într-o zi va trebui să fie
menţinută. "

5.1

O uşă bine folosite nu are nevoie de ulei pe balamale.
Un flux de curgere rapidă, nu creşte stagnantă.
Nici un sunet, nici gânduri poate calatori printr-un vid.
Software-ul putrezeste dacă nu este utilizat.

Acestea sunt marile mistere.

5.2

Un manager întrebat un programator cat de mult l-ar lua pentru a termina
Programul pe care el a fost de lucru. "Acesta va fi terminat mâine",
programator răspuns prompt.

"Cred că sunt în curs de nerealist", a spus managerul, "Sincer, cum
de mult va dura? "

Programator gandit pentru un moment. "Am unele caracteristici pe care eu doresc să
adăuga. Acest lucru va dura cel puţin două săptămâni ", a spus el în cele din urmă.

"Chiar că este prea mult să ne aşteptăm", a insistat managerul, "voi fi
îndeplinită dacă vă spun pur şi simplu mă când programul este completă. "

Programatorul a fost de acord la acest lucru.

Câţiva ani mai târziu, managerul retras. Pe cale de pensionare
masa de prânz, el a descoperit programator adormit la terminalul lui. El a fost
programarea toată noaptea.

5.3

Un programator începător a fost odată atribuit un cod simplu pachet financiar.

Novice a lucrat cu furie de mai multe zile, dar atunci când stăpânul său, revizuite
programul său, el a descoperit că acesta conţine un editor de ecran, un set de
generalizată grafica rutine, o interfata inteligenta artificiala, dar
nu mai mică menţiune de nimic financiare.

Când maestrul întrebat despre acest lucru, a devenit novice indignat. "Nu fi
atat de nerabdator ", a spus el," voi pune în chestii financiar în cele din urmă. "

5.4

Are un fermier bun neglija o cultură a plantat?
Are un bun profesor trece cu vederea, chiar studentul cel mai umil?
Are un tată bun a permite un singur copil să moară de foame?
Are un programator bun refuză să se menţină codul lui?

-------------------------

Rezervaţi 6 - Managementul

Astfel, a vorbit programator de master:

"Să programatori fi multe şi managerii de puţini -, atunci totul va fi
productiv. "

6.1

Atunci când managerii organizeze reuniuni interminabile, programatorii scriu jocuri. Când
accountants talk of quarterly profits, the development budget is about to
be cut. When senior scientists talk blue sky, the clouds are about to roll
in.

Truly, this is not the Tao of Programming.

When managers make commitments, game programs are ignored. Când
accountants make long-range plans, harmony and order are about to be
restored. When senior scientists address the problems at hand, the
problems will soon be solved.

Truly, this is the Tao of Programming.

6.2

Why are programmers non-productive?
Because their time is wasted in meetings.

Why are programmers rebellious?
Because the management interferes too much.

Why are the programmers resigning one by one?
Because they are burnt out.

Having worked for poor management, they no longer value their jobs.

6.3

A manager was about to be fired, but a programmer who worked for him
invented a new program that became popular and sold well. As a result, the
manager retained his job.

The manager tried to give the programmer a bonus, but the programmer
refused it, saying, “I wrote the program because I thought it was an
interesting concept, and thus I expect no reward.”

The manager upon hearing this remarked, “This programmer, though he holds
a position of small esteem, understands well the proper duty of an
employee. Let us promote him to the exalted position of management
consultant!”

But when told this, the programmer once more refused, saying, “I exist so
that I can program. If I were promoted, I would do nothing but waste
everyone's time. Can I go now? I have a program that I'm working on.”

6.4

A manager went to his programmers and told them: “As regards to your work
hours: you are going to have to come in at nine in the morning and leave
at five in the afternoon.” At this, all of them became angry and several
resigned on the spot.

So the manager said: “All right, in that case you may set your own
working hours, as long as you finish your projects on schedule.” The
programmers, now satisfied, began to come in at noon and work to the wee
hours of the morning.

————————————————————————–

Book 7 – Corporate Wisdom

Thus spake the master programmer:

“You can demonstrate a program for a corporate executive, but you can't
make him computer literate.”

7.1

A novice asked the master: “In the east there is a great tree-structure
that men call `Corporate Headquarters'. It is bloated out of shape with
vice presidents and accountants. It issues a multitude of memos, each
saying `Go, Hence!' or `Go, Hither!' and nobody knows what is meant. Every
year new names are put onto the branches, but all to no avail. How can
such an unnatural entity be?”

The master replied: “You perceive this immense structure and are
disturbed that it has no rational purpose. Can you not take amusement from
its endless gyrations? Do you not enjoy the untroubled ease of programming
beneath its sheltering branches? Why are you bothered by its
uselessness?”

7.2

In the east there is a shark which is larger than all other fish. Ea
changes into a bird whose wings are like clouds filling the sky. When this
bird moves across the land, it brings a message from Corporate
Headquarters. This message it drops into the midst of the programmers,
like a seagull making its mark upon the beach. Then the bird mounts on the
wind and, with the blue sky at its back, returns home.

The novice programmer stares in wonder at the bird, for he understands it
not. The average programmer dreads the coming of the bird, for he fears
its message. The master programmer continues to work at his terminal, for
he does not know that the bird has come and gone.

7.3

The Magician of the Ivory Tower brought his latest invention for the
master programmer to examine. The magician wheeled a large black box into
the master's office while the master waited in silence.

“This is an integrated, distributed, general-purpose workstation,” began
the magician, “ergonomically designed with a proprietary operating
system, sixth generation languages, and multiple state of the art user
interfaces. It took my assistants several hundred man years to construct.
Is it not amazing?”

The master raised his eyebrows slightly. “It is indeed amazing,” he
said.

“Corporate Headquarters has commanded,” continued the magician, “that
everyone use this workstation as a platform for new programs. Do you agree
to this?”

“Certainly,” replied the master, “I will have it transported to the
data center immediately!” And the magician returned to his tower, well
pleased.

Several days later, a novice wandered into the office of the master
programmer and said, “I cannot find the listing for my new program. Face
you know where it might be?”

“Yes,” replied the master, “the listings are stacked on the platform in
the data center.”

7.4

The master programmer moves from program to program without fear. Nu
change in management can harm him. He will not be fired, even if the
project is cancelled. De ce este aceasta? He is filled with Tao.

————————————————————————–

Book 8 – Hardware and Software

Thus spake the master programmer:

“Without the wind, the grass does not move. Without software, hardware is
useless.”

8.1

A novice asked the master: “I perceive that one computer company is much
larger than all others. It towers above its competition like a giant among
dwarfs. Any one of its divisions could comprise an entire business. Why is
this so?”

The master replied, “Why do you ask such foolish questions? That company
is large because it is large. If it only made hardware, nobody would buy
ea. If it only made software, nobody would use it. If it only maintained
systems, people would treat it like a servant. But because it combines all
of these things, people think it one of the gods! By not seeking to
strive, it conquers without effort.”

8.2

A master programmer passed a novice programmer one day. The master noted
the novice's preoccupation with a hand-held computer game. “Excuse me,”
he said, “may I examine it?”

The novice bolted to attention and handed the device to the master. “I
see that the device claims to have three levels of play: Easy, Medium, and
Hard,” said the master. “Yet every such device has another level of
play, where the device seeks not to conquer the human, nor to be conquered
by the human.”

“Pray, great master,” implored the novice, “how does one find this
mysterious setting?”

The master dropped the device to the ground and crushed it underfoot. And
suddenly the novice was enlightened.

8.3

There was once a programmer who worked upon microprocessors. “Look at how
well off I am here,” he said to a mainframe programmer who came to visit,
“I have my own operating system and file storage device. I do not have to
share my resources with anyone. The software is self- consistent and
easy-to-use. Why do you not quit your present job and join me here?”

The mainframe programmer then began to describe his system to his friend,
saying “The mainframe sits like an ancient sage meditating in the midst
of the data center. Its disk drives lie end-to-end like a great ocean of
machinery. The software is as multifaceted as a diamond, and as convoluted
as a primeval jungle. The programs, each unique, move through the system
like a swift-flowing river. That is why I am happy where I am.”

The microcomputer programmer, upon hearing this, fell silent. But the two
programmers remained friends until the end of their days.

8.4

Hardware met Software on the road to Changtse. Software said: “You are
Yin and I am Yang. If we travel together we will become famous and earn
vast sums of money.” And so the set forth together, thinking to conquer
the world.

Presently they met Firmware, who was dressed in tattered rags and hobbled
along propped on a thorny stick. Firmware said to them: “The Tao lies
beyond Yin and Yang. It is silent and still as a pool of water. It does
not seek fame, therefore nobody knows its presence. It does not seek
fortune, for it is complete within itself. It exists beyond space and
time.”

Software and Hardware, ashamed, returned to their homes.

————————————————————————–

Book 9 – Epilogue

Thus spake the master programmer:

“It is time for you to leave.”

————————————————————————–

If you liked these, you may also like to read worse is better

A bit of shell redirection

May 10, 2009 by prashant · Comentarii
Filed under: tehnologie

Here is how we normally do shell redirection
$ ./pgm.sh args >out.txt 2>err.txt
I wanted to modify it a bit and run as follows
$ ./pgm.sh args
with the requirement that output and error should go to some filename computed inside pgm.sh based on args. One illustrative case could be when date is part of args. So you would like stdout to go to say /your/directory/pgm_out_YYYYMMDD.txt 1

The problem with standard way of redirecting N>file.txt ie, associating file descriptor N to file.txt , is that it works only for the newly forked process and not for the current process.
so
$ echo hi 1>out.txt ; echo hii will send hi to out.txt but will print hii to stdout. 2

This is where exec comes to our rescue. If we add exec 1>somefile.txt then output from rest of the script will go to somefile.txt

$ cat test.sh
#!/usr/bin/env bash
exec 1>out.txt
echo hi
echo hii
$./test.sh will redirect hi as well as hii to out.txt

Similarly to redirect stdout as well as stderr we'll do something like this
cat test2.sh
exec 1>out.txt
exec 2>err.txt
echo out text
echo 1>&2 err text
somenoneexitent command
ls -ld /tmp

Now coming back to original point of redirecting to some file from inside the shell, let's say program computed the filename in some variable OUTFILE, we could have just done exec 1>$OUTFILE

That solves the current problem. But you may like to go through following example which achieves 'random access' of file in shell script. Example is from here
echo 1234567890 > File # Write string to "File".
exec 3<> File # Open "File" and assign fd 3 to it.
read -n 4 <&3 # Read only 4 characters.
echo -n . >&3 # Write a decimal point there.
exec 3>&- # Close fd 3.
cat File # ==> 1234.67890

With comments, this code is self explanatory.
-
1 It can also be done by $ ./pgm.sh args >pgm_out`date +%Y%m%d` but idea is to generate this file name based on some logic in program itself.
2 1 in 1>out.txt is redundant but it clarifies here that we are redirecting fd 1

Sony VAIO review

April 29, 2009 by prashant · Comentarii
Filed under: reviews

A month back I bought a vaio NS25G and have been planning to write this post since then. This post is primarily notes to self and review of the same. Let's get off the mark quickly -

Post has two parts -

I. Review of hardware
II. Installing debian and things to setup

I. Review of hardware

Since I am not a VAIO marketing guy, I'll start other way round -

Why you may not like to buy this laptop :

  1. No bluetooth : believe me, in 2009 sony sells laptop without bluetooth. Sure you can use usb stuff but …
  2. Screen size is 15.4 inches : if you travel a lot then this laptop may not be very handy and also 2.9kg laptop is not exactly the lightest around.
  3. No HDMI output.
  4. No separate graphics card and the likes.(and no dedicated video memory

Now , why you may like to buy it :

  1. This laptop is a damn good desktop. What I mean is this if your requirement is like me – mostly writing programs and trying to use it 25 out of 24 hrs, then with a big screen , extremely comfortable keyboard layout with spacious palm rest and good compute power , it makes a very good combination.
  2. It L2 cache is 2MB and processor/memory system bus are 800MHz. I don't play games so can't say about that but for anything else but a core 2 duo processor with 2GHz freq is good, this is more than enough.
  3. From my usage, I see processor mostly clocks at 1.2GHz, and memory usage ~500MB. That just reinforces previous point.
  4. Battery backup is good, ~2 hrs is what I get.

Just one more thing here – being Sony, it will cost you a bit than other laptops with similar configuration, but that is a call u have to make.

II. Configuring linux (to run out of box ! ) :
It came pre installed with Vista( I think home premium or some fancy name like that). Dungara booted once and created another partition of 150 GB. Debian testing is what I always install and then up(down?)grade to 'unstable' sid.

Things which worked without any problem:

  1. X - unsurprisingly X server had not problem with starting or resolution. After one of the upgrades X refused to start though, but 'X -configure' generated a conf file which worked pretty well.
  2. Audio - Audio output and external mic work fine. kernel version 2.6.29-1-686 #1 SMP and alsa version 1.0.17. This is what you get from
    $ lspci -v |grep Audio 00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Con1.0.17troller (rev 03)
  3. Video cam – just works
  4. Hibernate to disk and back – no problem
  5. Wireless - in short – just works.
    $ lspci |grep -i wireless
    03:13:55 04:00.0 Network controller: Atheros Communications Inc. AR928X Wireless Network Adapter (PCI-Express) (rev 01) .

    I think kernel 2.6..27 onwards it works with the stock kernel source. You dont have to install ndiswrapper or things like t
    hat. As a note, please say good buy gnome-network-manager and welcome wicd, it is just a gui layer but behind the scene they have fixed lot of config stuff like wpasupplient and more.

What doesn't work -

  1. Somehow internal mic refuses to work : ( External mic works fine though. Latest alsa sources did not compile cleanly on debian, so for the time being I bought external Internal mic, will try to dig into it sometime in future though.

Few more misc hints for deiban:

  • Package for devnagri font- ttf-indic-fonts
  • Package for flash player – flashplugin-nonfree
  • Entry in sources.list for mplayer and likes – deb http://www.debian-multimedia.org sid main
  • Entry in sources.list for e17 – deb http://debian.alphagemini.org/ unstable main
  • Entry in sources.list for skype – http://download.skype.com/linux/repos/debian/ stable non-free

oneliner for increasing and decreasing the brightness -

[root]prashant@vaio09:12 PM$ cat bin/incbrightness.sh
#!/usr/bin/env bash
echo $[1+`cat /sys/class/backlight/acpi_video0/brightness `] >/sys/class/backlight/acpi_video0/brightness

you'll have to put this in sudo though.
and to decrease change + to – and … you get the idea, right !

A bit more, if you use enlightenment(e17) here are few more hints -

[enlightenment key bindidings]

You can use following key code and mapping

mute :
KEY="Keycode-160" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master toggle"
hibernate :
KEY="Keycode-165" ACTION="exec" PARAMS="sudo /usr/sbin/hibernate-disk"
volume decrease :
KEY="Keycode-174" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2-"
volume increase:
KEY="Keycode-176" ACTION="exec" PARAMS="/usr/bin/amixer -q set Master 2+"
increase brightness :
KEY="Keycode-212" ACTION="exec" PARAMS="sudo /root/bin/incbrightness.sh"
decrease brightness
KEY="Keycode-101" ACTION="exec" PARAMS="sudo /root/bin/decbrightness.sh"

Pagina urmatoare »