enquesta, tennis, PubSub, pubsubhub, PubSubHubbub

6 set 2009 per Prashant · Comentaris
Filed under: la tecnologia

En cas que es mostren escèptics, hi ha un mètode en la bogeria més amunt, en el títol del post. En els cercles de tecnologia, és poc probable que vostè no ha sentit parlar de PubSubHubbub. En ràpides mesos, ha estat un dels tres va parlar de les coses. Dos de ser xifrat homomórfico i Google d'ona [ 1. ]. Tornant al lloc actual - els termes en el títol d'indicar com obtenir el contingut d'altres persones. Següents dades sigui més clar, si t'imagines les coses que succeeixen pel que fa als blocs, tot i que no estan conceptualment limita als blocs.

Sondeig fa a la situació en què els clients segueixen preguntant al servidor si alguna cosa nova ha arribat. Amb quina freqüència per demanar canvis sempre serà un problema amb les enquestes molt freqüents o poc freqüents també, però com un lector va assenyalar aquí que una cosa gran, amb les enquestes és que el servidor no ha de mantenir l'estat.

Ping es refereix al cas en que quan es publiqui un article, vostè (o el seu programari) també actualitza algunes populars (central) els serveis d'actualització. Una mica d'història aquí .

El següent és PubSub que significa de publicació / subscripció, un dels primers terreny de joc ja que es va fer aquí per Evan Henshaw-Plath i Kellan Elliott-McCrea (72 diapositives, però val la pena anar a través). Exemple convincent que va donar contra l'era això - en una data determinada, es va arrossegar Flickr Friendfeed 2,9 milions de vegades per obtenir les últimes fotos de 45,754 usuaris, dels quals 6.721 havien visitat Flickr a les 24 hores i podria haver "potencialment" ha pujat una foto. Tingueu en compte que el que proposava no era una nova tecnologia, com ells assenyalen "nova i revolucionària tecnologia de 20 anys d'edat". Si ho fas per als blocs, a continuació un dels principals problemes amb XMPP - la presència de sobrecàrrega de dades, que pot ser tan alta com el 60-70% es pot reduir molt.

pubsubhub significa publicar centre de subscripció i PubSubHubbub és un protocol, el nucli és la idea de pubsubhub. Els editors en la qual (diuen els blocaires) actualitzar el centre dels quals (pot haver més d'un els centres, que parlen l'un a l'altre) es troba "en algun lloc del núvol", segons el protocol es pot empènyer o tirar d'acord amb el protocol, però el següent baula de la de la cadena, el centre al client (per exemple els lectors) que es busqui sempre el model. Aquesta pàgina és un bon punt de partida per PubSubHubbub, diapositives visió general són bones. Sempre eloqüent Anil Dash es descriu aquí , com botó de web.
Dos lectures relacionades són webhooks que és bàsicament devolucions de trucada de http. Github utilitza ell, el mateix passa amb PayPal per notificacions asíncrones de pagament en el IPN . El mateix passa amb molts altres. Concepte relacionat és RSSCloud que és una altra vegada centre de PubSub. Seguiu aquest enllaç per més detalls.

Vostè podria preguntar-se quin és el punt d'escriure tot això aquí, hi ha dos 1. Aquestes són les coses és important conèixer, com a mínim, si més no i 2. Aquest bloc és PubSubHubbub permès ara a través del centre appspot ús d'aquest wordpress plugin de alimentació i també és habilitat a través de FeedBurner PubSubHubbub, enllaç aquí
-
[ 1 ]. - Bona lectura introductòria per al xifrat complet homeomorfo és l' article de Bruce Schneier i la conversa és més o menys l'única font per a Google Wave.

-ACTUALITZACIÓ - Aquest missatge s'explica com l'exigència de devolució de trucada per al servidor públic es pot treballar al voltant dels clients d'escriptori mitjançant l'ús de passarel · XMPP (per PubSubHubbub).

Una mica d'acoblament

29 agost 2009 per Prashant · Comentaris
Filed under: la tecnologia

Després de llegir aquest article sobre tampons de bloqueig lliures i veient l'ús de CAS (comparar i intercanviar), em vaig sentir com alliberar el codi en assemblador per fer el mateix. El cas d'ús sobre el que havia d'escriure un mètode natiu i en diuen de Java (de nou en 1,5, quan les estructures de dades concurrents en Java eren més o menys inexistent). Sense més preàmbuls, vaig a alliberar el codi en què :) . En primer lloc és per al CAS i el segon és per a la informàtica GCD utilitzant l'algorisme d'Euclides (aquest es pot trobar a molts llocs i tutorials, així).

Donat les instruccions de gcc file_name.c ; ./a.out

Compara i Swap

   # Include 
  # Include 
 / / Canvi - nuevovalor, comperand és vell / valor esperat
 / *
  * Funció que realment fa el següent - si el valor a * dest és igual a oldValue continuació, substituir-la per una altra nuevovalor deixar-ho com està: fer tot això de forma atòmica
  *
  * Hi ha dues opcions per al valor de retorn
  * El valor inicial de 1.is * dest i deixar la càrrega de la FXN trucant al comparar-lo amb OLDVAL
  * 2.  fer-ho aquí i tornar 0 o 1, això ha de ser més eficient
  ** /

 / * Després es convertirà en macro * /
 ques int (int * dest, int oldValue, int nuevo_valor) {
	 printf ("(% d,% d,% d)", * dest, oldValue, newvalue);
	 / * Int CAS (int dest, int oldValue, int nuevo_valor) {* /
	 / * Int CAS (int dest, int nuevovalor, int oldValue) {* /
	 int resultat = 1 ;/ * 1 mostra que el CAS va tenir èxit i 0 mostra que van fallar * /
	 / * Per cert necessitat d'establir cc per apallissar la bandera!  * /
	 __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" / * ha de tancament pot ser en la mateixa línia * /
			 "FET jz \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "FET: \ n \ t"
			 : "= M" (destí), "= g" (resultat)
			 : "G" (oldValue), "g" (nuevo_valor), "m" (destí)
			 : "% Eax", "% ebx", "ECX", "CC"
			 );
	 printf ("(% d,% d,% d)", * dest, oldValue, newvalue);
	 return resultat;
 }

 / * TOT
  * Escriure altre FXN asm que posa per sobre de FXN en un bucle while i seguir intentant si no aconsegueix * /

 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 ("valor de canvi de c * a% 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;
 }

Notes de format - sembla marcador wp sintaxi és l'addició de al final, ignorar això.

GCD

 # Include 
 int mcd (int a, int b) {
     int resultat;
     / * Calcular màxim comú divisor mitjançant l'algorisme d'Euclides * /
     __asm__ volatile__ __ ("movl% 1,%% eax;"
                           "Movl% 2,%% ebx;"
                           "Cont: CMPL $ 0,%% ebx;"
                           "Je Fet";
                           "Xorl%% EDX,%% EDX;"
                           "Idivl%% ebx;"
                           "Movl% ebx%,%% eax;"
                           "Movl%% EDX, ebx%%;"
                           "JMP cont;"
                           "FET: movl%% eax, 0%;": "= g" (resultat): "g" (a), "g" (b)
     );

     return resultat;
 }

 int main () {
     int primer segon,;
     printf ("Introduïu dos enters:");
     scanf ("% d% d", i en primer lloc, i segon);

     printf ("El MCD de% d &% d és% d \ n", primer, segon, mcd (primer, segon));

     return 0;
 }

Mundial de cricket Espera un Nou Ordre Mundial

25 agost 2009 per Prashant · Comentaris
Filed under: miscel · lanis

Després d'una sèrie que abasta cinc proves i aproximadament dos mesos, les cendres d'Anglaterra recuperats.

Anem a parlar sobre l'equip que guanya primer - l'ordre del medi és "mitjà" si no vol crítiques. Contribució Greame de Swann amb el bat comptarà ni més ni menys que la contribució amb la pilota. Stuart Broad - la millor arrencada va ser tot més rodó no per a la prova de cinquè. Andrew Strauss va ser el batedor consistent i només Jimmy Anderson va ser l'únic jugador de bitlles consistent.

El punt aquí no és per reprendre als èxits de l'equip guanyador, sinó per posar en perspectiva el fet que malgrat tot això, Austràlia va perdre. hauràs de pensar per uns segons, si se li demana trucar al seu millor jugador de bitlles. Correcte, BW va ser Hilfenhaus. Hauritz va superar les expectatives everbody, però encara no era prou bo per ser seleccionat per a dues de les cinc proves. Sud-àfrica mai es va convertir en un batedor món sense un control de nombre de classe mundial, Austràlia no pot aspirar a seguir sent un sense que un prou bo un per almenys. Mag va deixar l'escenari i no es veu com l'art més, oblidar la màgia. Ponting s'alça entre els mortals inferiors i Michael Clarke es posa dret molt sovint, però que els fa un equip amb molt bons jugadors i no és un equip molt bo.
Ashes 2009 serà recordat per les cendres últims Andrew Flintoff, l'arribada de Stuart Broad com tot més rodó (afegint folklore una mica més cendres al seu prometedor començament), i un del segle debut més eloqüent de tots els temps per Trott, però també serà recordat com el punt on peròs sobre la supremacia d'Austràlia van ser finalment va posar a descansar, es va acabar. No m'entenguis malament que encara es pot descobrir Mike Hussey o Stuart Clark, però se sent la contribució de tots els grans del moment en què aquests van a faltar. De vegades vénen a recordar-li a si mateixos en la IPL, però encara no poden ser reemplaçats. Anem sento beneït per haver vist Warne, McGrath i Gilchrist jugant junts i amb el suport de Waughs, Ponting, Hyden, Martin i Langer.

Amb vista al futur, Sud-àfrica seguirà sent sempre un equip molt bo, però que necessiten per guanyar les semifinals i ser més coherent a tot el món, Pakistan seguirà sent enigmàtica brillant, indis nois joves, probablement li resultarà difícil omplir les sabates de predecessors extraordinàries. Sri Lanka ha de seguir per mostrar indicis d'art en l'art. Però, potser hauríem d'esperar algun temps abans de comptar amb un equip dominant, tots fora o abans d'un capità es queixa de la falta de competència, com Steve Waugh va fer una vegada.

En una nota relacionada - donem la benvinguda a la volta de Asif, que té un munt infern de potencial, esperem a veure una mica d'això i també la benvinguda a Flor de Andy al awatar nova, a la dreta no es pot mantenir als homes bons per molt temps.

robins per crear un revestiment de hash

20 agost 2009 per Prashant · Comentaris
Filed under: la tecnologia

Ahir, mentre passava per un dels meus vells programes, vaig trobar aquest escrit per mi fa algun temps:

#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

Per matar a alguns de suspens que em revelen que raw_text sembla

 

, A la dreta que s'ha reduït de reconeixement de pagament de PayPal.

Per sobre de la línia en cas de trencament de les peces es llegeix millor:

  unescaped_array = CGI.unescape (raw_text). split ('&')
   unescaped_array unescaped_array.collect = {| x | b = x.split ("="); b.push (zero) si b.size == 1, b}
   flattened_array = unescaped_array.flatten
   hash = hash [* flattened_array] 

Farem els passos individuals a l'IRB:

  IRB (main):. 009:0> = unescaped_array CGI.unescape (raw_text) split ('&')    

 => ["Èxit", "mc_gross = 10,00", "protection_eligibility = no elegible", "payer_id = U7PPJJ4TSJ47E", "impostos = 0.00", "payment_date = 09:45:30 10 juliol 2009 PDT", "payment_status = Pendent "]                                                                         

 IRB (main): 013:0> = unescaped_array unescaped_array.map {| x | b = x.split ("="); b.push (zero) si b.size == 1, b}  

 => [["Èxit", nil], ["mc_gross", "10.00"], ["protection_eligibility", "no elegible"], ["payer_id", "U7PPJJ4TSJ47E"], ["impost", "0,00"] , ["payment_date", "09:45:30 10 juliol 2009 PDT"], ["payment_status", "Pendent"]]                               

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

 => ["Èxit", nul · la ", mc_gross", "10.00", "protection_eligibility", "no elegible", "payer_id", "U7PPJJ4TSJ47E", "imposat", "0,00", "payment_date", "09:45: 30 de 10 juliol 2009 PDT "," payment_status "," Pendent "]
 IRB (main): 015:0>
 hash = hash [* flattened_array]
 => {"Impost" => "0,00", "payment_status" => "Pendent", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "l'èxit" => nil ", payment_date" = > "09:45:30 10 juliol 2009 PDT", "protection_eligibility" => "no elegible"} 

Per cert, * es diu operador de splat en Ruby

Una altra forma de crear hash a partir de "matriu de parells" és l'ús de la injecció:

  hash = [[1,2], [3,4]] injectar ({}). {| resultat, l'element | resultat [element.first] = resultat [element.last];} resultat 

Hi ha una manera més :) Escriure un bucle, que vaig a deixar com un exercici per als lectors!

Aquest és un cas poc ús sense relació de la creació de hash a partir de les matrius:

  IRB (main): 005:0> [1,2,3,4,7,9] group_by {| x | x <5.?  : Menor :: major}

 => {: Menor => [1, 2, 3, 4],: major => [7, 9]} 

Pot fer més coses, bàsicament resultat de l'illa s'utilitza com a clau d'aquest element en el hash resultant.

gmail, mutt i msmtp solució

17 agost 2009 per Prashant · Comentaris
Filed under: la tecnologia

Si utilitzeu mutt i smtp per accedir a Gmail. Aquesta és una notícia (dolenta). Nois cool de Google va tornar a canviar de certificat. Ah, li pregunto - ¿com s'ho coneixerà? Mutt simple va començar a queixar-se de certificat no vàlid en intentar utilitzar msmpt, infame "msmtp: la verificació de certificats TLS ha fallat:. El certificat no té un emissor conegut ' em va saludar a la pantalla.

Per creuar confirmar -
Només ha d'executar després de

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

En lloc de Servidors Thawte vell et després en el segment d'emissor
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Afortunadament solució és simple, això és el que ha de fer en debian

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

Després d'això només canviar la línia següent en vostè ~ /. 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

a

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

Git i Enquesta Impressionant

15 agost 2009 per Prashant · Comentaris
Filed under: miscel · lanis

Aquí hi ha dos enllaços per al reconeixement per part de git (sistema de control de versions) i de la comunitat impressionant (gestor de finestres). Si utilitzeu qualsevol d'aquests, si us plau servei mica de temps per omplir el qüestionari. Penseu en això com la forma més senzilla de contribuir al programari que utilitza.
Aquí hi ha els enllaços:

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

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

Nota - (com es troba en aquestes pàgines però a la part inferior :) ) -
"Si tens les galetes habilitades, sempre es pot presentar l'enquesta parcialment ple, i tornar a les seves respostes en el moment més tard, completant més tard."

La fusió dels hashes dels arxius de conf YAML

31 juliol 2009 per Prashant · Comentaris
Filed under: la tecnologia

YAML és molt útil per escriure fitxers de configuració. Principal avantatge és que, es llegeix com a fitxer de text. Això funciona molt bé si el seu fitxer de configuració és plana (sense jerarquia) i no té repeticions.
Si el seu fitxer de configuració té repeticions, llavors té sentit per separar els elements i tornar a usar-los. El que vull dir és això - diguem que el seu arxiu de configuració és la següent:

  el desenvolupament:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: su_servidor
     d'inici de sessió: your_login
     contrasenya: top_secret
 producció:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: su_servidor
     d'inici de sessió: your_login
     contrasenya: top_secret 

Suposant que el codi anterior a / tmp / test.yml aquí és com es pot llegir en Python i Ruby
$cat readyml.py

 #! / Usr / bin / python env
 pprint d'importació pprint com pp
 # Debian al d'instal · lar python-YAML
 de la càrrega d'importació YAML, load_all, bolcat
 hash = càrrega (open ('/ tmp / test.yml'))
 pp (hash ['desenvolupament']) 


$ cat readyml.rb

  #! / Usr / bin / env ruby
 requereix 'pp'
 hash = YAML :: load (File.open ('/ tmp / test.yml'). llegir)
 pp hash ['desenvolupament'] 

aquí hi ha una mà un traçador de línies de la versió de Ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' o pots intentar el mateix a l'IRB o la consola de python.

Tingueu en compte que en el fragment de codi anterior, tot és diferent d'ubicació de sortida és la mateixa en el desenvolupament i la part de producció. Aquí és on identificador de node yml ve a rescatar. La idea és senzilla té un conjunt de valors predeterminats i reemplaçar ells en lloc diferent.
Vostè podria separar-la de la següent manera:

  per defecte i per defecte:
   input_location: common_input
   output_location: dev_location
   mail:
     sender_name: emissor
     smtp_server: su_servidor
     d'inici de sessió: your_login
     contrasenya: top_secret
 el desenvolupament:
   <<: * Els valors per defecte
 producció:
   <<: * Els valors per defecte
   output_location: prod_location 


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

Gran, que funciona (tm)!.
Es podria dir que negocien una mica de claredat a una mica de màgia. Aquí hi ha una petita explicació: &, * i <<: i que és etiqueta d'ancoratge pot ser entès com a identificador de node, * és la referència de node i <<: és sinònim de fusió de hash.

Per a més detalls vegi bé les especificacions YAML o wikipedia
Fins aquí tot bé, però hi ha un problema aquí, aquestes fusions hash no són recursius. El que significa és el següent: diguem que vostè vol ser el nom del remitent per al correu diferents en dos ambients, vostè pot estar temptat a fer el següent:

  per defecte i per defecte:
   input_location: common_input
   output_location: dev_location
   mail:
     sender_name: emissor
     smtp_server: su_servidor
     d'inici de sessió: your_login
     contrasenya: top_secret
 el desenvolupament:
   <<: * Els valors per defecte
   mail:
     sender_name: sender_dev
 producció:
   <<: * Els valors per defecte
   output_location: prod_location
   mail:
     sender_name: sender_prod 

Permet comprovar

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

Vaja, alguna cosa va sortir malament, el problema com es va esmentar anteriorment és que la combinació hash no és recurrent i si bé la fusió del reemplaçar de correu electrònic per defecte per correu de la producció que té una sola clau. Solució / s treball al voltant de desenrotllar un nivell més:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  sender_name: emissor
   smtp_server: su_servidor
   d'inici de sessió: your_login
   contrasenya: top_secret

 per defecte i per defecte:
   <<: * Common_settings
   mail:
     <<: * Mail_defaults
 el desenvolupament:
   <<: * Els valors per defecte
 producció:
   <<: * Els valors per defecte
   mail:
     <<: * Mail_defaults
     sender_name: sender_prod

Anem a comprovar de nou

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

Sabia vostè que tens un nivell de més d'implantació, així que definitivament es pot desenrotllar un nivell més, però llavors es converteix en un desastre. Per tant, si vostè no està tractant d'escriure la solució a les torres de Hanoi en un arxiu de conf, és millor restucture conf a cavar en YAML o alguna altra cosa. Però això és la crida de totes maneres.

Grans programadors trobar solucions simples a problemes complexos

30 juny 2009 per Prashant · Comentaris
Filed under: miscel · lanis

Després de molt temps vaig poder trobar la font de la següent cita-

Programadors júnior creen solucions simples a problemes simples. Programadors sènior crear solucions complexes a problemes complexos. Grans programadors trobar solucions simples a problemes complexos.

És a partir d'un assaig anomenat Programari Bella per Charles Connell.

Una altra de les meves preferides és El Zen de Python -

Bell és millor que lleig.
Explícit és millor que implícit.
Simple és millor que complex.
Complex és millor que complicat.
Plànol és millor que niat.
Dispers és millor que dens.
La llegibilitat compte.
Els casos especials no són prou especial com per trencar les regles.
Encara practicitat batega puresa.
Els errors mai ha de passar en silenci.
Si no explícitament silenciades.
Davant l'ambigüitat, rebutja la temptació d'endevinar.
Hauria d'haver una-i preferiblement només una òbvia manera de fer-ho.
Encara que d'aquesta manera pot no ser òbvia en un primer moment a menys que siguis holandès.
Ara és millor que mai.
Encara que mai és sovint millor que * dret * ara.
Si la implementació és difícil d'explicar, és una mala idea.
Si l'aplicació és fàcil d'explicar, pot ser una bona idea.
Els espais de noms són una idea genial tocant la botzina - anem a fer més d'aquests!
-------------------------
i llavors no és el clàssic Tao de la Programació

-

crèdits com en el lloc dels vinculats

Traduït per Geoffrey James

Transcrit pel duc Hillard

Transmès per Anupam Trivedi, Tampi Sajitha i Jagannath Meghshyam

Re-html-hissada i editat per Kragen Sittler

-

Llibre 1 - El Buit Silenciós

Així va parlar el mestre programador:

"Quan hagi après a prendre-li el codi d'error del marc de la trampa, es
serà el moment de que et vagis. "

01/01

Una cosa misteriós es forma, neix en el buit silenciós. Espera sol i
immòbil, que és alhora quiet i en moviment constant. És la font
de tots els programes. No sé el seu nom, així que ho anomenaré el Tao de la
Programació.

Si el Tao és gran, llavors el sistema operatiu és gran. Si l'operació
el sistema és gran, llavors el compilador és grandiós. Si el compilador és gran,
llavors l'aplicació és gran. L'usuari està complagut i no existeix
harmonia al món.

El Tao de la Programació flueix lluny i torna amb el vent del matí.

01/02

El Tao va donar a llum a llenguatge de màquina. El llenguatge de màquina va donar a llum a la
assemblador.

El assemblador va donar a llum al compilador. Ara hi ha deu mil
idiomes.

Cada llenguatge té el seu propòsit, encara que sigui humil. Cada llengua expressa la
Yin i el Yang del programari. Cada llenguatge té el seu lloc dins del Tao.

Però no programes en COBOL si pots evitar-ho.

1/3

Al principi era el Tao. El Tao va donar a llum a espai i el temps.
Per tant espai i el temps són el Yin i el Yang de la programació.

Els programadors que no comprenen el Tao sempre s'acaba el temps
i l'espai per als seus programes. Els programadors que comprenen el Tao sempre
tenen prou temps i espai per aconseguir els seus objectius.

Com no podia ser d'altra manera?

01/04

El programador savi li parlen Tao i el segueix. La mitjana
programador es va parlar de Tao i el busca. El programador insensat
es va parlar de Tao i es riu d'ell.

Si no fos per la rialla, no hauria Tao.

Els sons més alts són els més difícils d'escoltar.
Amb vista al futur és una manera de retirar-se.
El gran talent es manifesta al final de la vida.
Fins i tot un programa perfecte encara té errors.

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

Llibre 2 - Els Antics Mestres

Així va parlar el mestre programador:

"Després de tres dies sense necessitat de programació, la vida perd tot sentit."

01/02

Els programadors d'abans eren misteriosos i profunds. No podem imaginar
seus pensaments, així que tot el que fem és descriure la seva aparença.

Conscient, com una guineu creuant l'aigua. Alerta, com un general en la
camp de batalla. Amable, com un amfitrió saludant als seus convidats. Simple, com
blocs de fusta sense tallar. Opac, com piscines negres en coves fosques.

Qui pot comptar els secrets dels seus cors i ments?

La resposta només existeix en el Tao.

02/02

El Gran Mestre Turing una vegada va somiar que era una màquina. Quan ell es va despertar
va exclamar:

"No sé si sóc Turing somiant que sóc una màquina, o un
màquina somiant que sóc Turing! "

03/02

Un programador d'una companyia molt gran d'ordinadors va ser a un programari
conferència i després va tornar a reportar-amb el seu cap, dient: "Quina classe
dels programadors treballar per a altres empreses? No es comporten i es
sense preocupar-se per les aparences. El seu cabell era llarg i descuidat, i la seva
robes estaven arrugades i velles. Es va estavellar la nostra suite d'hospitalitat i
fa sorolls grollers durant la meva presentació. "

El gerent va dir: "Jo mai hauria d'haver enviat a la conferència. Aquells
Els programadors viuen més enllà del món físic. Consideren que la vida absurda, una
coincidència accidental. Vénen i se'n van sense conèixer les seves limitacions.
Sense cura, ells viuen només per als seus programes. Per què es molesten
amb les convencions socials?

"Ells estan vius dins del Tao."

2/4

Un novici li va preguntar al Mestre: "Aquí és un programador que mai dissenya,
documents o proves dels seus programes. No obstant això, tots els que el coneixen ho consideren un dels
els millors programadors del món. Per què és això? "

El mestre respon: "Aquest programador s'ha arribat a dominar el Tao. S'ha anat
més enllà de la necessitat d'un disseny, no s'enfada quan el sistema
accidents, sinó que accepta l'univers sense preocupació. S'ha anat més enllà de la
la necessitat de documentació, sinó que ja no li importa si algú més veu el seu codi.
Ha anat més enllà de la necessitat de proves, cadascun dels seus programes són perfectes
dins de si mateixos, serens i elegants, el seu propòsit és auto-evident. En veritat,
que ha entrat en el misteri del Tao. "

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

Llibre 3 - Disseny

Així va parlar el mestre programador:

"Quan el programa s'està provant, és massa tard per fer el disseny
els canvis ".

1/3

Hi havia una vegada un home que va anar a una fira d'informàtica. Cada dia, quan
va entrar, l'home li va dir al guàrdia a la porta:

"Sóc un gran lladre, renombrado pels meus gestes de robar botigues. Ser
previngut, per aquesta fira no escaparà unplundered ".

Aquestes paraules van incomodar molt al guàrdia, perquè hi havia milions de
de dòlars a l'interior dels equips informàtics, per la qual cosa va observar a l'home acuradament. Però
l'home només vagava d'estand en estand, murmurant per a si.

Quan l'home va sortir, el guàrdia lo a part, va buscar entre la roba, però
no hi havia res que trobar.

L'endemà de la fira, l'home va tornar i va renyar al guàrdia
dient: "em vaig escapar amb un gran botí d'ahir, però avui serà encara
millor. "Així que el guàrdia el va veure cada vegada més a prop, però va ser en va.

En l'últim dia de la fira, el guàrdia va poder contenir la seva curiositat
ja no. "Lladre Senyor," va dir, "Estic tan confós que no pot viure en
la pau. Si us plau m'il · lumini. Què és el que t'estan robant? "

L'home va somriure. "Estic robant idees", va dir.

03/02

Hi havia una vegada un mestre programador que escrivia programes no estructurats. A
programador novell, tractant d'imitar, també va començar a escriure
programes no estructurats. Quan el novici li va preguntar al mestre per avaluar la seva
el progrés, el mestre el va criticar per escriure programes no estructurats,
dient: "El que és apropiat per al mestre no és apropiat per al
principiant. Vostè ha d'entendre el Tao abans de transcendir l'estructura. "

03/03

Hi havia una vegada un programador que estava assignat a la cort del senyor de la guerra
de Wu. El senyor li va preguntar al programador: "Què és més fàcil de dissenyar: una
paquet de comptabilitat o un sistema operatiu? "

"Un sistema operatiu", va dir el programador.

El senyor de la guerra va llançar una exclamació d'incredulitat. "Sens dubte, una rendició de comptes
paquet és trivial comparat amb la complexitat d'un sistema operatiu ", que
, Va dir.

"No és així", va dir el programador, "l'hora de dissenyar un paquet de comptabilitat,
el programador opera com un mediador entre persones que tenen diferents
Idees: com ha d'operar, com ha de lliurar els seus informes, i com s'ha de
conforme a les lleis tributàries. Per contra, un sistema operatiu no es limita
per les aparences externes. Quan es dissenya un sistema operatiu, el programador
busca l'harmonia més simple entre màquina i idees. Per això, una
sistema operatiu és més fàcil de dissenyar. "

El senyor de Wu va assentir i va somriure. "Això és tot el bo i bé, però
que és més fàcil de netejar? "

El programador no va respondre.

4/3

Un gerent va ser el mestre programador i li va mostrar els requisits
document per a una nova aplicació. El gerent li va preguntar al mestre: "Quant de temps
es triga a dissenyar aquest sistema si li assigno cinc programadors? "

"Prendrà un any", va dir el mestre ràpidament.

"Però tenim aquest sistema immediatament, o fins i tot abans! El temps que es
prendre si li assigno 10 programadors? "

El mestre programador va arrufar les celles. "En aquest cas, prendrà dos anys".

"I si li assigno 100 programadors?"

El mestre programador va arronsar les espatlles. "Llavors el disseny mai serà
completat ", va dir.

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

Llibre 4 - Codificació

Així va parlar el mestre programador:

"Un programa ben escrit és el seu propi cel, un programa mal escrit és
el seu propi infern. "

01/04

Un programa ha de ser lleuger i àgil, les seves subrutines connectades com un
collaret de perles. L'esperit i la intenció del programa s'ha de mantenir
en tot. No ha de ser ni massa poc o massa, ni
bucles innecessaris ni variables sense usar, ni falta d'estructura ni
excessiva rigidesa.

Un programa ha de seguir la llei del menor Sorpresa '. Quina és aquesta llei?
És simplement que el programa sempre ha de respondre a l'usuari en la forma
que sorprèn si més no ell.

Un programa, sense importar la seva complexitat, ha d'actuar com una sola unitat. El programa
ha de ser dirigit per la lògica interna i no per les aparences externes.

Si el programa no compleix aquests requisits, serà en un estat de
desordre i confusió. L'única manera de corregir això és reescriure el
programa.

2/4

Un novici li va preguntar al mestre: "Tinc un programa que a vegades corre i
De vegades avorta. He seguit les regles de programació, però sóc jo
totalment desconcertat. Quina és la raó d'això? "

El mestre va respondre: "Estàs confós perquè no entens el Tao.
Només un ximple espera comportament racional dels seus companys humans. Per què ho fa
esperem que d'una màquina que els humans han construït? Ordinadors simular
el determinisme, i només el Tao és perfecte.

"Les regles de la programació són transitòries i només el Tao és etern. Per tant
has contemplar el Tao abans de rebre la il · luminació. "

"Però, com sabré quan he rebut la il · luminació?", Va preguntar el
principiant.

"El teu programa anirà llavors correctament", va contestar el mestre.

4/3

Un mestre estava explicant la naturalesa del Tao a un dels seus novicis. "El
Tao està encarnat en tot programari - sense importar com insignificant ", va dir
el mestre.

"És el Tao en una calculadora de mà?", Va preguntar el novici.

"És", va ser la resposta.

"És el Tao en un videojoc?", Va continuar el principiant.

"És fins i tot en un joc de vídeo", va dir el mestre.

"I és el Tao en el DOS per a un ordinador personal?"

El mestre va tossir i va canviar lleugerament la seva posició. "La lliçó ha acabat
per ara ", va dir.

04/04

El programador del Príncep Wang va ser la codificació del programari. Els seus dits ballaven sobre el
teclat. El programa va compilar sense un missatge d'error, i el programa
va córrer com un vent suau.

"Excel · lent!", Va exclamar el Príncep, "La seva tècnica és impecable!"

"La tècnica?", Va dir el programador girant des del seu terminal, "El que
segueixo és el Tao - més enllà de totes les tècniques! Quan vaig començar a programar jo
a veure davant meu tot el problema en una sola massa. Després de tres anys que no
ja vaig veure aquesta massa. En canvi, vaig fer servir subrutines. Però ara no veig res.
Tot el meu ser existeix en un buit sense forma. Els meus sentits estan ociosos. El meu esperit,
la llibertat de treballar sense un pla, segueix el seu propi instint. Al meu programa curt,
escriu en si. És cert que de vegades hi ha problemes difícils. Els veig
que ve, m'aturo, miro en silenci. Llavors canvi una sola línia de codi
i les dificultats s'esvaeixen com núvols de fum. Llavors va compilar el
programa. Em quedo quieta i deixar que l'alegria del treball ompli el meu ésser. Tanco la meva
els ulls per un moment i després tanqueu la sessió. "

Príncep Wang va dir, "Tant de bo tots els meus programadors fossin tan savis!"

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

Llibre 5 - Manteniment

Així va parlar el mestre programador:

"Tot i ser un programa, sinó tres línies de llarg, algun dia haurà de ser
mantingut ".

01/05

Una porta ben usada no necessita oli en les seves frontisses.
Un corrent que flueix ràpid no creix estancada.
Ni el so ni els pensaments poden viatjar a través del buit.
Software es podreix si no s'utilitza.

Aquests són grans misteris.

5/2

Un gerent li va preguntar a un programador quant de temps el portaria a acabar la
programa en què estava treballant. "Estarà acabat demà," el
Programador respondre ràpidament.

"Crec que estàs sent poc realista", va dir el gerent, "En realitat, com
Quant de temps prendrà? "

El programador va pensar per un moment. "Tinc algunes característiques que ho desitgin
afegir. Això prendrà com a mínim dues setmanes ", va dir finalment.

"Tot i que és massa esperar", ha insistit el gerent, "seré
satisfet si simplement em diuen que el programa s'ha completat. "

El programador d'acord amb aquesta.

Diversos anys més tard, el gerent es va retirar. En el camí al seu retir
dinar, ell va descobrir que el programador adormit en el seu terminal. Ell havia estat
la programació de tota la nit.

3/5

Un programador novell se li va assignar una vegada per codificar un paquet financer senzill.

El novici va treballar furiosament per molts dies, però revisat quan el seu amo
seu programa, va descobrir que contenia un editor de pantalla, un conjunt de
generalitzada de gràfics rutines, una interfície de la intel · ligència artificial, però
ni la més mínima menció de res financer.

Quan el mestre li va preguntar sobre això, el novici es va indignar. "No siguis
tan impacient ", va dir," vaig a posar en la matèria financera amb el temps. "

05/04

Té un bon agricultor descuidar el cultiu s'ha plantat?
Té un bon mestre per alt, fins i tot els estudiants més humils?
Té un bon pare permetre que un sol nen que mori de fam?
Un bon programador es neguen a mantenir el seu codi?

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

Llibre 6 - Gestió

Així va parlar el mestre programador:

"Deixeu que els programadors ser moltes i molt pocs els gerents - llavors tot serà
productiva ".

01/06

Quan els administradors tenen una infinitat de reunions, els programadors escriuen jocs. Quan
comptadors parlen de guanys trimestrals, el pressupost de desenvolupament està a punt de
tallar. Quan els científics parlen d'alt nivell del cel blau, els núvols estan a punt de rodar
in

En veritat, aquest no és el Tao de la Programació.

Quan els directius a prendre compromisos, programes de jocs són ignorats. Quan
els comptadors fan plans a llarg termini, l'harmonia i l'ordre estan a punt de ser
restaurat. Quan els científics d'alt nivell davant els problemes que ens ocupa, el
els problemes es resoldran aviat.

En veritat, aquest és el Tao de la Programació.

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.

06/03

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. El
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. Do
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. No
change in management can harm him. He will not be fired, even if the
project is cancelled. Why is this? 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
it. 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.”

02/08

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 · Comentaris
Filed under: technology

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 · Comentaris
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"

Pàgina següent »