encuesta, mesa de ping, pubsub, pubsubhub, PubSubHubbub

06 de septiembre 2009 por prashant · Comentarios
Filed under: la tecnología

En caso de que se muestran escépticos, hay un método en la locura más arriba, en el título del post. En los círculos de tecnología, es poco probable que usted no ha oído hablar de PubSubHubbub. En rápidas meses, ha sido uno de los tres habló de las cosas. Otros dos de ser cifrado homomórfico y Google de onda [ 1. ]. Volviendo al puesto actual - los términos en el título de indicar cómo obtener el contenido de otras personas. Siguientes datos sea más claro, si te imaginas las cosas que suceden en lo que respecta a los blogs, a pesar de que no están conceptualmente limita a los blogs.

Sondeo se refiere a la situación en la que los clientes siguen preguntando al servidor si algo nuevo ha llegado. ¿Con qué frecuencia para pedir cambios siempre será un problema con las encuestas muy frecuentes o poco frecuentes también, pero como un lector señaló aquí que una cosa grande, con las encuestas es que el servidor no tiene que mantener el estado.

Ping se refiere al caso en que cuando se publique un artículo, usted (o su software) también actualiza algunas populares (central) los servicios de actualización. Un poco de historia aquí .

El siguiente es PubSub que significa de publicación / suscripción, uno de los primeros terreno de juego ya que se hizo aquí por Evan Henshaw-Plath y Kellan Elliott-McCrea (72 diapositivas, pero vale la pena ir a través). Ejemplo convincente que dio contra la era esto - en una fecha determinada, se arrastró Flickr Friendfeed 2,9 millones de veces para obtener las últimas fotos de 45,754 usuarios, de los cuales 6.721 habían visitado Flickr en las 24 horas y podría haber "potencialmente" ha subido una foto. Tenga en cuenta que lo que proponía no era una nueva tecnología, como ellos señalan "nueva y revolucionaria tecnología de 20 años de edad". Si lo haces para los blogs, a continuación uno de los principales problemas con XMPP - la presencia de sobrecarga de datos, que puede ser tan alta como el 60-70% se puede reducir mucho.

pubsubhub significa publicar centro de suscripción y PubSubHubbub es un protocolo, cuyo núcleo es la idea de pubsubhub. Los editores en la que (dicen los bloggers) actualizar el centro de los cuales (puede haber más de uno los centros, que hablan el uno al otro) se encuentra "en algún lugar de la nube", según el protocolo se puede empujar o tirar de acuerdo con el protocolo, pero el siguiente eslabón de la de la cadena, el centro al cliente (por ejemplo los lectores) que se busque siempre el modelo. Esta página es un buen punto de partida para PubSubHubbub, diapositivas visión general son buenas. Siempre elocuente Anil Dash se describe aquí , como botón de web.
Otros dos lecturas relacionadas son webhooks que es básicamente devoluciones de llamada de http. Github utiliza él, lo mismo ocurre con PayPal para notificaciones asíncronas de pago en el IPN . Lo mismo ocurre con muchos otros. Concepto relacionado es RSSCloud que es otra vez centro de PubSub. Siga este enlace para más detalles.

Usted podría preguntarse ¿cuál es el punto de escribir todo esto aquí, hay dos 1. Estas son las cosas merece la pena conocer, como mínimo, por lo menos y 2. Este blog es PubSubHubbub permitido ahora a través del centro appspot uso de este wordpress plugin de alimentación y también es habilitado a través de FeedBurner PubSubHubbub, enlace aquí
-
[ 1 ]. - Buena lectura introductoria para el cifrado completo homeomorfo es el artículo de Bruce Schneier y la conversación es más o menos la única fuente para Google Wave.

-ACTUALIZACIÓN - Este mensaje se explica cómo la exigencia de devolución de llamada para el servidor público se puede trabajar alrededor de los clientes de escritorio mediante el uso de puerta de enlace XMPP (por PubSubHubbub).

Un poco de ensamblaje

29 de agosto 2009 por prashant · Comentarios
Filed under: la tecnología

Después de leer este artículo acerca de tampones de bloqueo libres y viendo el uso de CAS (comparar e intercambiar), me sentí como publicar el código en ensamblador para hacer lo mismo. El caso de uso sobre lo que había que escribir un método nativo y lo llaman de Java (de nuevo en 1,5, cuando las estructuras de datos concurrentes en Java eran más o menos inexistente). Sin más preámbulos, voy a liberar el código en que :) . En primer lugar es para el CAS y el segundo es para la informática GCD utilizando el algoritmo de Euclides (éste se puede encontrar en muchos lugares y tutoriales, así).

Compila y ejecuta las instrucciones de gcc file_name.c ; ./a.out

Compara y Swap

   # Include 
  # Include 
 / / Cambio - nuevovalor, comperand es viejo / valor esperado
 / *
  * Función que realmente hace lo siguiente - si el valor en * dest es igual a oldValue continuación, sustituirla por otra nuevovalor dejarlo como está: hacer todo esto de forma atómica
  *
  * Hay dos opciones para el valor de retorno
  * El valor inicial de 1.is * dest y dejar la carga de la FXN llamando al compararlo con OLDVAL
  * 2.  hacerlo aquí y devolver 0 o 1, esto debe ser más eficiente
  ** /

 / * Después se convertirá en macro * /
 cas 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 resultado = 1 ;/ * 1 muestra que el CAS tuvo éxito y 0 muestra que fallaron * /
	 / * Por cierto necesidad de establecer cc para vapulear 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" / * debe de cierre puede ser en la misma línea * /
			 "HECHO jz \ n \ t"
			 "Movl $ 0,% 1 \ n \ t"
			 "HECHO: \ n \ t"
			 : "= M" (destino), "= g" (resultado)
			 : "G" (oldValue), "g" (nuevo_valor), "m" (destino)
			 : "% Eax", "% ebx", "ecx", "cc"
			 );
	 printf ("(% d,% d,% d)", * dest, oldValue, newvalue);
	 return resultado;
 }

 / * TODO
  * Escribir otro FXN asm que pone por encima de FXN en un bucle while y seguir intentando si no logra * /

 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 cambio 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;
 }

Notas de formato - parece marcador wp sintaxis es la adición de al final, ignorar eso.

GCD

 # Include 
 int mcd (int a, int b) {
     int resultado;
     / * Calcular máximo común divisor mediante el algoritmo de Euclides * /
     __asm__ volatile__ __ ("movl% 1,%% eax;"
                           "Movl% 2,%% ebx;"
                           "Cont: CMPL $ 0,%% ebx;"
                           "Je Hecho";
                           "Xorl%% edx,%% edx;"
                           "Idivl%% ebx;"
                           "Movl% ebx%,%% eax;"
                           "Movl%% edx, ebx%%;"
                           "Jmp cont;"
                           "HECHO: movl%% eax, 0%;": "= g" (resultado): "g" (a), "g" (b)
     );

     return resultado;
 }

 int main () {
     int primer segundo,;
     printf ("Introduzca dos enteros:");
     scanf ("% d% d", y en primer lugar, y segundo);

     printf ("El MCD de% d &% d es% d \ n", primero, segundo, mcd (primero, segundo));

     return 0;
 }

Mundial de cricket Espera un Nuevo Orden Mundial

25 de agosto 2009 por prashant · Comentarios
Filed under: misceláneos

Después de una serie que abarca cinco pruebas y aproximadamente dos meses, las cenizas de Inglaterra recuperados.

Vamos a hablar sobre el equipo que gana primero - el orden del medio es "medio" si no quiere críticas. Contribución Greame de Swann con el bate contará nada menos que la contribución con el balón. Stuart Broad - el mejor arranque fue todo más redondo no para la prueba de quinto. Andrew Strauss fue el bateador consistente y sólo Jimmy Anderson fue el único jugador de bolos consistente.

El punto aquí no es para reprender a los logros del equipo ganador, sino para poner en perspectiva el hecho de que a pesar de todo esto, Australia perdió. tendrás que pensar por unos segundos, si se le pide llamar a su mejor jugador de bolos. Correcto, BW fue Hilfenhaus. Hauritz superó las expectativas everbody, pero todavía no era lo suficientemente bueno para ser seleccionado para dos de las cinco pruebas. Sudáfrica nunca se convirtió en un batidor mundo sin un control de número de clase mundial, Australia no puede aspirar a seguir siendo uno sin que uno lo suficientemente bueno uno por lo menos. Mago dejó el escenario y no se ve como el arte más, olvidar la magia. Ponting se yergue entre los mortales inferiores y Michael Clarke se pone de pie muy a menudo, pero que los hace un equipo con muy buenos jugadores y no es un equipo muy bueno.
Ashes 2009 será recordado por las cenizas últimos Andrew Flintoff, la llegada de Stuart Broad como todo más redondo (si añade folclore un poco más cenizas a su prometedor comienzo), y uno del siglo debut más elocuente de todos los tiempos por Trott, pero también será recordado como el punto donde peros sobre la supremacía de Australia fueron finalmente puso a descansar, se acabó. No me entiendas mal que todavía se puede descubrir Mike Hussey o Stuart Clark, pero se siente la contribución de todos los grandes del momento en que éstos van a faltar. A veces vienen a recordarle a sí mismos en la IPL, pero aún no pueden ser reemplazados. Vamos siento bendecido por haber visto Warne, McGrath y Gilchrist jugando juntos y con el apoyo de Waughs, Ponting, Hyden, Martin y Langer.

De cara al futuro, Sudáfrica seguirá siendo siempre un equipo muy bueno, pero que necesitan para ganar las semifinales y ser más coherente en todo el mundo, Pakistán seguirá siendo enigmática brillante, indios chicos jóvenes, probablemente le resultará difícil llenar los zapatos de predecesores extraordinarias. Sri Lanka debe seguir para mostrar atisbos de arte en el arte. Pero, tal vez tengamos que esperar algún tiempo antes de contar con un equipo dominante, todos fuera o antes de un capitán se queja de la falta de competencia, como Steve Waugh hizo una vez.

En una nota relacionada - demos la bienvenida a la vuelta de Asif, que tiene un montón infierno de potencial, esperemos a ver algo de eso y también la bienvenida a Flor de Andy en el awatar nueva, a la derecha no se puede mantener a los hombres buenos por mucho tiempo.

rubíes para crear un revestimiento de hash

20 de agosto 2009 por prashant · Comentarios
Filed under: la tecnología

Ayer, mientras pasaba por uno de mis viejos programas, encontré este escrito por mí hace algún tiempo:

#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

Para matar a algunos de suspenso que me revelan que raw_text parece

 

, A la derecha que se ha reducido de reconocimiento de pago de PayPal.

Por encima de la línea en caso de rotura de las piezas se lee mejor:

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

Vamos a hacer los pasos individuales en el IRB:

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

 => ["Éxito", "mc_gross = 10,00", "protection_eligibility = no elegible", "payer_id = U7PPJJ4TSJ47E", "impuestos = 0.00", "payment_date = 09:45:30 10 de julio 2009 PDT", "payment_status = Pendiente "]                                                                         

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

 => [["Éxito", nil], ["mc_gross", "10.00"], ["protection_eligibility", "no elegible"], ["payer_id", "U7PPJJ4TSJ47E"], ["impuesto", "0.00"] , ["payment_date", "09:45:30 10 de julio 2009 PDT"], ["payment_status", "Pendiente"]]                               

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

 => ["Éxito", nula ", mc_gross", "10.00", "protection_eligibility", "no elegible", "payer_id", "U7PPJJ4TSJ47E", "impuesto", "0.00", "payment_date", "09:45: 30 de julio 10, 2009 PDT "," payment_status "," Pendiente "]
 irb (main): 015:0>
 hash = hash [* flattened_array]
 => {"Impuesto" => "0.00", "payment_status" => "Pendiente", "payer_id" => "U7PPJJ4TSJ47E", "mc_gross" => "10,00", "el éxito" => nil ", payment_date" = > "09:45:30 10 de julio 2009 PDT", "protection_eligibility" => "no elegible"} 

Por cierto, * se llama operador de splat en Ruby

Otra forma de crear hash a partir de "matriz de pares" es el uso de la inyección:

  hash = [[1,2], [3,4]] inyectar ({}). {| resultado, el elemento | resultado [element.first] = resultado [element.last];} resultado 

Hay una manera más :) Escribir un bucle, que voy a dejar como un ejercicio para los lectores!

Este es un caso poco uso sin relación de la creación de hash a partir de las matrices:

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

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

Puede hacer más cosas, básicamente resultado de la manzana se utiliza como clave de ese elemento en el hash resultante.

gmail, mutt y msmtp solución

17 de agosto 2009 por prashant · Comentarios
Filed under: la tecnología

Si utiliza mutt y smtp para acceder a Gmail. Esta es una noticia (mala). Chicos cool de Google volvió a cambiar de certificado. Ah, ¿le pregunto - ¿cómo se lo conocerá? Mutt simple comenzó a quejarse de certificado no válido al intentar utilizar msmpt, infame "msmtp: la verificación de certificados TLS falló:. El certificado no tiene un emisor conocido ' me saludó en la pantalla.

Para cruzar confirmar -
Sólo tiene que ejecutar después de

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

En lugar de Servidor Thawte viejo te después en el segmento de emisor
Issuer:
Common Name: Google Internet Authority
Organization: Google Inc
Country: US

Afortunadamente solución es simple, esto es lo que tiene que hacer en debian

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

Después de esto sólo cambiar la línea siguiente en usted ~ /. 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 y Encuesta Impresionante

15 de agosto 2009 por prashant · Comentarios
Filed under: misceláneos

Aquí hay dos enlaces para el reconocimiento por parte de git (sistema de control de versiones) y de la comunidad impresionante (gestor de ventanas). Si utiliza cualquiera de estos, por favor saque algo de tiempo para rellenar el cuestionario. Piense en ello como la forma más sencilla de contribuir al software que utiliza.
Aquí están los enlaces:

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

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

Nota - (como se encuentra en esas páginas pero en la parte inferior :) ) -
"Si tienes las cookies habilitadas, siempre se puede presentar la encuesta parcialmente lleno, y regresar a sus respuestas en el momento más tarde, completando más tarde."

La fusión de los hashes de los archivos de conf YAML

31 de julio 2009 por prashant · Comentarios
Filed under: la tecnología

YAML es muy útil para escribir archivos de configuración. Principal ventaja es que, se lee como archivo de texto. Esto funciona muy bien si su fichero de configuración es plana (sin jerarquía) y no tiene repeticiones.
Si su archivo de configuración tiene repeticiones, entonces tiene sentido para separar los elementos y volver a usarlos. Lo que quiero decir es esto - digamos que su archivo de configuración es la siguiente:

  el desarrollo:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: su_servidor
     de inicio de sesión: your_login
     contraseña: top_secret
 producción:
   input_location: common_input
   output_location: dev_location
   mail:
     smtp_server: su_servidor
     de inicio de sesión: your_login
     contraseña: top_secret 

Suponiendo que el código anterior en / tmp / test.yml aquí es cómo se puede leer en Python y Ruby
$cat readyml.py

 #! / Usr / bin / python env
 pprint de importación pprint como pp
 # Debian en el que instalar python-YAML
 de la carga de importación YAML, load_all, volcado
 hash = carga (open ('/ tmp / test.yml'))
 pp (hash ['desarrollo']) 


$ cat readyml.rb

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

aquí hay una mano un trazador de líneas de la versión de Ruby
$ ruby -rpp -e 'pp YAML::load(File.open("/tmp/a.yml"))["development"]' o puedes intentar lo mismo en el IRB o la consola de python.

Tenga en cuenta que en el fragmento de código anterior, todo es distinto de ubicación de salida es la misma en el desarrollo y la parte de producción. Aquí es donde identificador de nodo yml viene a rescatar. La idea es sencilla tiene un conjunto de valores predeterminados y reemplazar ellos en lugar diferente.
Usted podría separarla de la siguiente manera:

  por defecto y por defecto:
   input_location: common_input
   output_location: dev_location
   mail:
     sender_name: emisor
     smtp_server: su_servidor
     de inicio de sesión: your_login
     contraseña: top_secret
 el desarrollo:
   <<: * Los valores por defecto
 producción:
   <<: * Los valores por defecto
   output_location: prod_location 


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

Grande, que funciona (tm)!.
Podría decirse que negocian un poco de claridad a un poco de magia. Aquí hay una pequeña explicación: &, * y <<: y que es etiqueta de anclaje puede ser entendido como identificador de nodo, * es la referencia de nodo y <<: es sinónimo de fusión de hash.

Para más detalles vea bien las especificaciones YAML o wikipedia
Hasta aquí todo bien, pero hay un problema aquí, estas fusiones hash no son recursivos. Lo que significa es lo siguiente: digamos que usted desea tener el nombre del remitente para el correo diferentes en dos ambientes, usted puede estar tentado a hacer lo siguiente:

  por defecto y por defecto:
   input_location: common_input
   output_location: dev_location
   mail:
     sender_name: emisor
     smtp_server: su_servidor
     de inicio de sesión: your_login
     contraseña: top_secret
 el desarrollo:
   <<: * Los valores por defecto
   mail:
     sender_name: sender_dev
 producción:
   <<: * Los valores por defecto
   output_location: prod_location
   mail:
     sender_name: sender_prod 

Permite comprobar

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

Vaya, algo salió mal, el problema como se mencionó anteriormente es que la combinación hash no es recurrente y si bien la fusión de lo reemplazó de correo electrónico de forma predeterminada por correo de la producción que tiene una sola llave. Solución / es trabajo en torno a desenrollar un nivel más:

  common_settings: & common_settings
 input_location: common_input
 output_location: dev_location
 mail_defaults: & mail_defaults
  sender_name: emisor
   smtp_server: su_servidor
   de inicio de sesión: your_login
   contraseña: top_secret

 por defecto y por defecto:
   <<: * Common_settings
   mail:
     <<: * Mail_defaults
 el desarrollo:
   <<: * Los valores por defecto
 producción:
   <<: * Los valores por defecto
   mail:
     <<: * Mail_defaults
     sender_name: sender_prod

Vamos a comprobar de nuevo

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

¿Sabía usted que usted tiene un nivel de más de anidación, así que definitivamente se puede desenrollar un nivel más, pero entonces se convierte en un desastre. Por lo tanto, si usted no está tratando de escribir la solución a las torres de Hanoi en un archivo de conf, es mejor restucture conf a cavar en YAML o alguna otra cosa. Pero eso es la llamada de todos modos.

Grandes programadores encontrar soluciones simples a problemas complejos

30 de junio 2009 por prashant · Comentarios
Filed under: misceláneos

Después de mucho tiempo pude encontrar la fuente de la siguiente cita-

Programadores junior crean soluciones simples a problemas simples. Programadores senior crear soluciones complejas a problemas complejos. Grandes programadores encontrar soluciones simples a problemas complejos.

Es a partir de un ensayo llamado Software Hermosa por Charles Connell.

Otra de mis favoritas es El Zen de Python -

Hermoso es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Disperso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son lo suficientemente especial como para romper las reglas.
Aunque practicidad late pureza.
Los errores nunca debe pasar en silencio.
A menos que explícitamente silenciadas.
Frente a la ambigüedad, rechaza la tentación de adivinar.
Debería haber una-y preferiblemente sólo un obvio manera de hacerlo.
Aunque de esa manera puede no ser obvia en un primer momento a menos que seas holandés.
Ahora es mejor que nunca.
Aunque nunca es a menudo mejor que * derecho * ahora.
Si la implementación es difícil de explicar, es una mala idea.
Si la aplicación es fácil de explicar, puede ser una buena idea.
Los espacios de nombres son una idea genial tocando la bocina - vamos a hacer más de esos!
-------------------------
y entonces no es el clásico Tao de la Programación

-

créditos como en el sitio de los vinculados

Traducido por Geoffrey James

Transcrito por el duque Hillard

Transmitido por Anupam Trivedi, Tampi Sajitha y Jagannath Meghshyam

Re-html-izada y editado por Kragen Sittler

-

Libro 1 - El Vacío Silencioso

Así habló el maestro programador:

"Cuando haya aprendido a arrebatarle el código de error del marco de la trampa, se
Habrá tiempo para que te vayas. "

1.1

Algo misterioso se forma, nace en el vacío silencioso. Espera solo y
inmóvil, que es a la vez quieto y en movimiento constante. Es la fuente
de todos los programas. No sé su nombre, así que lo llamaré el Tao de la
Programación.

Si el Tao es grande, entonces el sistema operativo es grande. Si la operación
el sistema es grande, entonces el compilador es grandioso. Si el compilador es grande,
entonces la aplicación es grande. El usuario está complacido y no existe
armonía en el mundo.

El Tao de la Programación fluye lejos y regresa con el viento de la mañana.

1.2

El Tao dio a luz a lenguaje de máquina. El lenguaje de máquina dio a luz a la
ensamblador.

El ensamblador dio a luz al compilador. Ahora hay diez mil
idiomas.

Cada lenguaje tiene su propósito, aunque sea humilde. Cada lengua expresa la
Yin y el Yang del software. Cada lenguaje tiene su lugar dentro del Tao.

Pero no programes en COBOL si puedes evitarlo.

1.3

En el principio era el Tao. El Tao dio a luz a espacio y el tiempo.
Por lo tanto espacio y el tiempo son el Yin y el Yang de la programación.

Los programadores que no comprenden el Tao siempre se acaba el tiempo
y el espacio para sus programas. Los programadores que comprenden el Tao siempre
tienen suficiente tiempo y espacio para lograr sus objetivos.

Como no podía ser de otra manera?

1.4

El programador sabio le hablan Tao y lo sigue. El promedio
programador se habló de Tao y lo busca. El programador insensato
se dijo sobre el Tao y se ríe de ella.

Si no fuera por la risa, no habría Tao.

Los sonidos más altos son los más difíciles de escuchar.
De cara al futuro es una manera de retirarse.
El gran talento se manifiesta al final de la vida.
Incluso un programa perfecto todavía tiene errores.

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

Libro 2 - Los Antiguos Maestros

Así habló el maestro programador:

"Después de tres días sin necesidad de programación, la vida pierde todo sentido."

2.1

Los programadores de antes eran misteriosos y profundos. No podemos imaginar
sus pensamientos, así que todo lo que hacemos es describir su apariencia.

Consciente, como un zorro cruzando el agua. Alerta, como un general en la
campo de batalla. Amable, como un anfitrión saludando a sus invitados. Simple, como
bloques de madera sin tallar. Opaco, como piscinas negros en cuevas oscuras.

¿Quién puede contar los secretos de sus corazones y mentes?

La respuesta solo existe en el Tao.

2.2

El Gran Maestro Turing una vez soñó que era una máquina. Cuando él se despertó
exclamó:

"No sé si soy Turing soñando que soy una máquina, o un
máquina soñando que soy Turing! "

2.3

Un programador de una compañía muy grande de computadoras fue a un software
conferencia y luego regresó a reportarse con su jefe, diciendo: "¿Qué clase
de los programadores trabajar para otras empresas? No se comportan y se
sin preocuparse por las apariencias. Su cabello era largo y descuidado, y su
ropas estaban arrugadas y viejas. Se estrelló nuestra suite de hospitalidad y
hace ruidos groseros durante mi presentación. "

El gerente dijo: "Yo nunca debería haber enviado a la conferencia. Aquellos
Los programadores viven más allá del mundo físico. Consideran que la vida absurda, una
coincidencia accidental. Vienen y se van sin conocer sus limitaciones.
Sin cuidado, ellos viven sólo para sus programas. ¿Por qué se molestan
con las convenciones sociales?

"Ellos están vivos dentro del Tao."

2.4

Un novicio le preguntó al Maestro: "Aquí es un programador que nunca diseña,
documentos o pruebas de sus programas. Sin embargo, todos los que lo conocen lo consideran uno de los
los mejores programadores del mundo. ¿Por qué? "

El maestro responde: "Ese programador se ha dominado el Tao. Se ha ido
más allá de la necesidad de un diseño, no se enoja cuando el sistema
accidentes, sino que acepta al universo sin preocupación. Se ha ido más allá de la
la necesidad de documentación, sino que ya no le importa si alguien más ve su código.
Ha ido más allá de la necesidad de pruebas, cada uno de sus programas son perfectos
dentro de sí mismos, serenos y elegantes, su proposito es auto-evidente. En verdad,
que ha entrado en el misterio del Tao. "

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

Libro 3 - Diseño

Así habló el maestro programador:

"Cuando el programa se está probando, es demasiado tarde para hacer el diseño
los cambios ".

3.1

Había una vez un hombre que fue a una feria de informática. Cada día, cuando
entró, el hombre le dijo al guardia en la puerta:

"Yo soy un gran ladrón, reconocido por mis hazañas de robar tiendas. Ser
prevenido, por esta feria no escapará unplundered ".

Estas palabras incomodaron mucho al guardia, porque había millones de
de dólares en el interior de los equipos informáticos, por lo que observó al hombre cuidadosamente. Pero
el hombre solamente vagaba de stand en stand, murmurando para sí.

Cuando el hombre salió, el guardia lo llevó aparte y buscó entre sus ropas, pero
no había nada que encontrar.

Al día siguiente de la feria, el hombre regresó y regañó al guardia
diciendo: "me escapé con un gran botín de ayer, pero hoy será aún
mejor. "Así que el guardia lo vio cada vez más cerca, pero fue en vano.

En el último día de la feria, el guardia pudo contener su curiosidad
ya no. "Ladrón Señor," dijo, "Estoy tan confundido que no puede vivir en
la paz. Por favor me ilumine. ¿Qué es lo que te están robando? "

El hombre sonrió. "Estoy robando ideas", dijo.

3.2

Había una vez un maestro programador que escribía programas no estructurados. A
programador novato, tratando de imitarlo, también comenzó a escribir
programas no estructurados. Cuando el novicio le preguntó al maestro para evaluar su
el progreso, el maestro lo criticó por escribir los programas no estructurados,
diciendo: "Lo que es apropiado para el maestro no es apropiado para el
principiante. Usted debe entender el Tao antes de trascender la estructura. "

3.3

Había una vez un programador que estaba asignado a la corte del señor de la guerra
de Wu. El señor le preguntó al programador: "¿Qué es más fácil de diseñar: una
paquete de contabilidad o un sistema operativo? "

"Un sistema operativo", dijo el programador.

El señor de la guerra lanzó una exclamación de incredulidad. "Sin duda, una rendición de cuentas
paquete es trivial comparado con la complejidad de un sistema operativo ", que
, dijo.

"No es así", dijo el programador, "la hora de diseñar un paquete de contabilidad,
el programador opera como un mediador entre personas que tienen diferentes
Ideas: cómo debe operar, cómo debe entregar sus reportes, y cómo se debe
conforme a las leyes tributarias. Por el contrario, un sistema operativo no se limita
por las apariencias externas. Cuando se diseña un sistema operativo, el programador
busca la armonía más simple entre máquina e ideas. Por ello, una
sistema operativo es más fácil de diseñar. "

El señor de Wu asintió y sonrió. "Eso es todo lo bueno y bien, pero
que es más fácil de depurar? "

El programador no respondió.

3.4

Un gerente fue al maestro programador y le mostró los requisitos
documento para una nueva aplicación. El gerente le preguntó al maestro: "¿Cuánto tiempo
se tarda en diseñar este sistema si le asigno cinco programadores? "

"Tomará un año", dijo el maestro rápidamente.

"Pero tenemos este sistema inmediatamente, o incluso antes! El tiempo que se
tomar si le asigno diez programadores? "

El maestro programador frunció el ceño. "En ese caso, tomará dos años".

"¿Y si le asigno cien programadores?"

El maestro programador se encogió de hombros. "Entonces el diseño nunca será
completado ", dijo.

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

Libro 4 - Codificación

Así habló el maestro programador:

"Un programa bien escrito es su propio cielo, un programa mal escrito es
su propio infierno. "

4.1

Un programa debe ser ligero y ágil, sus subrutinas conectadas como un
collar de perlas. El espíritu y la intención del programa debe mantenerse
en todo. No debe ser ni demasiado poco o demasiado, ni
bucles innecesarios ni variables sin usar, ni falta de estructura ni
excesiva rigidez.

Un programa debe seguir la Ley del Menor Asombro '. ¿Cuál es esta ley?
Es simplemente que el programa siempre debe responder a la información en la forma
que asombra por lo menos él.

Un programa, sin importar su complejidad, debe actuar como una sola unidad. El programa
debe ser dirigido por la lógica interna y no por las apariencias externas.

Si el programa no cumple estos requisitos, será en un estado de
desorden y confusión. La única forma de corregir esto es reescribir el
programa.

4.2

Un novicio le preguntó al maestro: "Tengo un programa que a veces corre y
A veces aborta. He seguido las reglas de programación, pero soy yo
totalmente desconcertado. ¿Cuál es la razón de esto? "

El maestro respondió: "Estás confundido porque no entiendes el Tao.
Sólo un tonto espera comportamiento racional de sus compañeros humanos. ¿Por qué lo hace
esperamos que de una máquina que los humanos han construido? Informática simular
el determinismo, y sólo el Tao es perfecto.

"Las reglas de la programación son transitorias y sólo el Tao es eterno. Por lo tanto
debes contemplar el Tao antes de recibir la iluminación ".

"Pero, ¿cómo sabré cuando he recibido la iluminación?", Preguntó el
principiante.

"Tu programa correrá entonces correctamente", contestó el maestro.

4.3

Un maestro estaba explicando la naturaleza del Tao a uno de sus novicios. "El
Tao está encarnado en todo software - sin importar cuán insignificante ", dijo
el maestro.

"Es el Tao en una calculadora de mano?", Preguntó el novicio.

"Es", fue la respuesta.

"Es el Tao en un videojuego?", Continuó el novato.

"Es incluso en un juego de video", dijo el maestro.

"Y es el Tao en el DOS para un ordenador personal?"

El maestro tosió y cambió ligeramente su posición. "La lección ha terminado
por hoy ", dijo.

4.4

El programador del Príncipe Wang fue la codificación del software. Sus dedos bailaban sobre el
teclado. El programa compiló sin un mensaje de error, y el programa
corrió como un viento suave.

"¡Excelente!", Exclamó el Príncipe, "Su técnica es impecable!"

"La técnica?", Dijo el programador girando desde su terminal, "Lo que
sigo es el Tao - más allá de todas las técnicas! Cuando empecé a programar yo
a ver delante de mí todo el problema en una sola masa. Después de tres años que no
ya vi esta masa. En cambio, usé subrutinas. Pero ahora no veo nada.
Todo mi ser existe en un vacío sin forma. Mis sentidos están ociosos. Mi espíritu,
la libertad de trabajar sin un plan, sigue su propio instinto. En mi programa corto,
escribe en sí. Es cierto que a veces hay problemas difíciles. Los veo
que viene, me detengo, miro en silencio. Entonces cambio una sola línea de código
y las dificultades se desvanecen como nubes de humo. Entonces compilo el
programa. Me quedo quieta y dejar que la alegría del trabajo llene mi ser. Cierro mi
los ojos por un momento y luego cierre la sesión. "

Príncipe Wang dijo, "¡Ojalá todos mis programadores fueran tan sabios!"

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

Libro 5 - Mantenimiento

Así habló el maestro programador:

"A pesar de ser un programa, sino tres líneas de largo, algún día tendrá que ser
mantenido ".

5.1

Una puerta bien usada no necesita aceite en sus bisagras.
Una corriente que fluye rápido no crece estancada.
Ni el sonido ni los pensamientos pueden viajar a través del vacío.
Software se pudre si no se utiliza.

Estos son grandes misterios.

5.2

Un gerente le preguntó a un programador cuánto tiempo le llevaría a terminar la
programa en el que estaba trabajando. "Va a estar terminado mañana," el
Programador respondió rápidamente.

"Creo que estás siendo poco realista", dijo el gerente, "A decir verdad, ¿cómo
Cuánto tiempo tomará? "

El programador pensó por un momento. "Tengo algunas características que lo deseen
agregar. Esto tomará al menos dos semanas ", dijo finalmente.

"A pesar de que es demasiado esperar", insistió el gerente, "voy a ser
satisfecho si simplemente me dicen que el programa se ha completado. "

El programador de acuerdo con esta.

Varios años más tarde, el gerente se retiró. En el camino a su retiro
almuerzo, él descubrió que el programador dormido en su terminal. El había sido
la programación de toda la noche.

5.3

Un programador novato se le asignó una vez para codificar un paquete financiero sencillo.

El novicio trabajó furiosamente por muchos días, pero revisado cuando su amo
su programa, descubrió que contenía un editor de pantalla, un conjunto de
generalizada de gráficos rutinas, una interfaz de la inteligencia artificial, pero
ni la más mínima mención de nada financiero.

Cuando el maestro le preguntó acerca de esto, el novicio se indignó. "No seas
tan impaciente ", dijo," voy a poner en la materia financiera con el tiempo. "

5.4

¿Tiene un buen agricultor descuidar el cultivo se ha plantado?
¿Tiene un buen maestro por alto, incluso los estudiantes más humildes?
¿Tiene un buen padre permitir que un solo niño que muera de hambre?
¿Un buen programador se niegan a mantener su código?

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

Libro 6 - Gestión

Así habló el maestro programador:

"Dejad que los programadores ser muchas y muy pocos los gerentes - entonces todo será
productiva ".

6.1

Cuando los administradores tienen un sinfín de reuniones, los programadores escriben juegos. Cuando
contadores hablan de ganancias trimestrales, el presupuesto de desarrollo está a punto de
cortar. Cuando los científicos hablan de alto nivel del cielo azul, las nubes están a punto de rodar
in

En verdad, este no es el Tao de la Programación.

Cuando los directivos a tomar compromisos, programas de juegos son ignorados. Cuando
los contadores hacen planes a largo plazo, la armonía y el orden están a punto de ser
restaurado. Cuando los científicos de alto nivel frente a los problemas que nos ocupa, el
los problemas se resolverán pronto.

En verdad, este es el Tao de la Programación.

6.2

¿Por qué los programadores no productiva?
Debido a que su tiempo se desperdicia en las reuniones.

¿Por qué los programadores de rebelde?
Debido a que la gestión interfiere demasiado.

¿Por qué los programadores de renuncia de uno en uno?
Debido a que se quemó.

Después de haber trabajado para la gestión de los pobres, ya no el valor de sus puestos de trabajo.

6.3

Un gerente estaba a punto de ser despedido, pero un programador que trabajaba para él
inventó un nuevo programa que se hizo popular y se vendió bien. Como resultado, el
gerente retuvo su puesto de trabajo.

El gerente intentó darle al programador un bono, pero el programador
se negó, diciendo: "Escribí el programa porque pensé que era una
concepto interesante, y por lo tanto no espero ninguna recompensa. "

El gerente al oír esto comentó, "Este programador, aunque se mantiene
una posición de poca estima, entiende bien la tarea propia de un
de los empleados. Vamos a promoverlo a la posición exaltada de la gestión
asesor! "

Pero cuando dijo esto, el programador, una vez más se negó, diciendo: "Yo existo para
que puedo programar. Si yo fuera promovido, no haría nada, pero los residuos
tiempo para todos. ¿Puedo ir ahora? Tengo un programa que estoy trabajando. "

6.4

Un gerente se dirigió a sus programadores y les dijo: "En lo que respecta a su trabajo
hora: vas a tener que venir a las nueve de la mañana y salir
a las cinco de la tarde. "Al oír esto, todos ellos se enojaron y varios
renunció en el acto.

Entonces el gerente dijo: "Muy bien, en ese caso usted puede configurar su propia
las horas de trabajo, siempre y cuando haya terminado sus proyectos a tiempo. "El
los programadores, ahora satisfechos, comenzaron a llegar al mediodía y trabajar para la wee
horas de la mañana.

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

Libro 7 - Sabiduría empresarial

Así habló el maestro programador:

"Se puede demostrar un programa para un ejecutivo de una empresa, pero no se puede
hacerle conocimientos de informática. "

7.1

Un novicio le preguntó al maestro: "En el este hay una gran estructura de árbol
que los hombres llaman `la sede de las empresas". Se hinchado fuera de forma con
vicepresidentes y contadores. Se emite una gran cantidad de notas, cada uno
diciendo: Ve, ahí! " o `Ve, acá!" y nadie sabe lo que quiere decir. Cada
año nuevos nombres se colocan en las ramas, pero todo fue en vano. ¿Cómo puede
como una entidad natural será? "

El maestro respondió: "Uno percibe esta inmensa estructura y son
preocupa que no tiene ningún propósito racional. No se puede tomar a partir de diversiones
sus giros sin fin? No te gusta la facilidad de la programación sin problemas
bajo sus ramas refugio? ¿Por qué te molesta su
inutilidad? "

7.2

En el este hay un tiburón que es más grande que todos los demás peces. Lo
se transforma en un pájaro cuyas alas son como nubes que llenan el cielo. Cuando esta
pájaro se mueve por todo el país, que trae un mensaje del Corporativo
Sede. Este mensaje se cae en medio de los programadores,
como una gaviota haciendo su marca en la playa. Entonces el ave se monta en el
el viento y, con el cielo azul a sus espaldas, vuelve a casa.

Las miradas de asombro programador novato en el pájaro, porque él lo entiende
no. El programador promedio teme la llegada de las aves, pues teme
su mensaje. El maestro programador continúa trabajando en su terminal, por
él no sabe que el pájaro ha ido y venido.

7.3

El mago de la Torre de Marfil llevó su último invento para la
maestro programador para examinar. El mago de ruedas un cuadro negro de gran tamaño en
el maestro de la oficina, mientras que el maestro esperó en silencio.

"Este es un sistema integrado, distribuido, de uso general de estación de trabajo", comenzó
el mago ", de diseño ergonómico con un operativo propio
sistema, idiomas sexta generación, y el estado del usuario de múltiples arte
interfaces. Tomó a mis asistentes varios cientos de años el hombre para construir.
¿No es increíble? "

El maestro levantó las cejas ligeramente. "Es realmente increíble",
, dijo.

"La sede corporativa se ha mandado," continuó el mago, "que
todo el mundo utilizan esta estación de trabajo como una plataforma para nuevos programas. ¿Está de acuerdo
a esto? "

"Por supuesto", contestó el maestro: "Yo he transportado a la
del centro de datos inmediatamente! "Y el mago regresó a su torre, así
satisfecho.

Varios días después, un novato metido en la oficina del maestro
y el programador dijo: "No puedo encontrar el listado de mi nuevo programa. Hacer
Sabes dónde podría ser? "

"Sí", respondió el maestro, "los listados están apilados en la plataforma en
el centro de datos. "

7.4

El maestro programador se mueve de un programa a otro sin miedo. No
cambio en la dirección puede hacerle daño. No se disparará, incluso si el
proyecto se cancela. ¿Por qué es esto? Él está lleno de Tao.

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

Libro 8 - Hardware y Software

Así habló el maestro programador:

"Sin el viento, la hierba no se mueve. Sin el software, el hardware es
inútil ".

8.1

Un novicio le preguntó al maestro: "Percibo que una empresa de informática es mucho más
más grande que todos los demás. Se eleva por encima de su competencia como un gigante entre los
Las enanas. Cualquiera de sus divisiones podría abarcar un negocio completo. ¿Por qué es
esto es así? "

El señor le respondió: "¿Por qué preguntas tan tontas? Esa compañía
es grande porque es grande. Si sólo hace el hardware, nadie compraría
él. Si sólo hace el software, nadie lo usaría. Si sólo se mantiene
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. "Yo
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. Y
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
el mundo.

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. Lo hace
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 · Comentarios
Filed under: la tecnología

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.
tan
$ 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 · Comentarios
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
    sombrero. 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 siguiente »