Estoy en la misma habitación, de nuevo, desmoronándome entre tantos dolores, y solo me acompaña tu fantasma… ese que no es tuyo sino mío.

Llegó a mi el día que te fuiste, ese día que quise gritar “no me dejes, por favor no te vayas, no me dejes sola”, pero no me alcanzó la voz, y ya era muy tarde porque te habías marchado tan lejos, tan frío… y la oscuridad te abrazó tan dulcemente que sentí envidia y quise ser oscuridad.

Y lloré; aun lloro, porque aunque no estás -ya no-, cada día tu fantasma se sienta a mi lado y me besa la punta de la nariz y me regala recuerdos que ya no consigo soportar. No quiere irse y yo me niego a dejarlo ir, porque es lo único que me queda de ti, y sin el no tengo nada.

Nadie entiende mis tristezas… no podrían; porque mis tristezas se entierran con las uñas en el pecho y se quedan ahí, porque solo yo las entiendo, y ellas me entienden a mi.

©2010-2011 *sultan-alghamdi

Hoy me muero… tal vez mañana sea diferente, tal vez.

Escuchando: Nada, hoy no es día de música, hoy es día de lagrimas y besos rotos.

Se me apagaron las ganas. No queda nada más que el infinito desasosiego que me invade y un mar de colores grises. Mis ojos se desangran sin parar y mis labios se redujeron a cenizas. Ya no importa y la verdad es que, por mucho que me duela admitirlo, no se qué hacer conmigo.

No puedo dormir, pero tampoco estoy despierta. Y tu no estás, porque decidiste que era buen momento para darse por vencido.

¿Y ahora cómo se supone que pueda olvidar, si estoy llena de recuerdos? Están en todos lados, me acechan (lo peor es que yo no quiero dejarlos ir)… y mi voz se ha vuelto el sonido más hueco y triste del mundo.

No queda nada.
No me queda nada.

. . .

Y si, se que esto pasará… porque todo pasa, siempre. Lo que no dejo de preguntarme es ¿cuándo?, ¿cuándo dejaré de sentir esa espada atravesándome el pecho?

Escuchando: Anathema – Judgement

En estos días estaba usando mi netbook y me di cuenta que al hacer tap sobre el touchpad no se ejecutaba el click del ratón y no fue hasta hoy que me digné a buscar la solución. Es tan simple como agregar una línea en un archivo de texto.

Buscamos el archivo /etc/modprobe.d/options.conf, si no existe lo creamos y copiamos la siguiente línea:

options psmouse proto=imps

Luego hacemos (como root):

# modprobe -r psmouse
# modprobe psmouse proto=imps


Y a disfrutar del tap xD

Carlos shared a pretty cool link with me this morning. Codility is a platform to help recruiters and contractors to test developers before hiring them. Both the idea and the execution are beautiful. They’ve done a stunning job.

As part of my visit to the page I gave a try to the demo test. As it was funny to solve it, I’m sharing my solution here. The problem was quite easy. It reads like this:

Equilibrium index of a sequence is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. For example, in a sequence A:

A[0]=-7 A[1]=1 A[2]=5 A[3]=2 A[4]=-4 A[5]=3 A[6]=0

3 is an equilibrium index, because:

A[0]+A[1]+A[2]=A[4]+A[5]+A[6]

6 is also an equilibrium index, because:

A[0]+A[1]+A[2]+A[3]+A[4]+A[5]=0

(sum of zero elements is zero) 7 is not an equilibrium index, because it is not a valid index of sequence A.

Assume the sum of zero elements is equal zero. Write a function int equi(int[] A); that given a sequence, returns its equilibrium index (any) or -1 if no equilibrium indexes exist. Assume that the sequence may be very long.

They gave me 30 minutes to design, code and test my solution. Here it is (tests omitted):

import operator
 
def equi(A):
  if A is None or len(A) == 0:
    return -1
  lsum = index = 0
  rsum = reduce(operator.add, A[1:], 0)
  while True:
    if lsum == rsum:
      return index
    index += 1
    if index == len(A):
      return -1
    else:
      lsum += A[index-1]
      rsum -= A[index]

It scores 100/100 and runs in linear time (that’s tricky because O(n2) algorithms will cause performance tests to fail) :)

Tienes problemas para iniciar httpd y no hay errores en los logs?, Tienes otro programa que que se congela y no tienes ni idea de que pueda estar pasando? es buen momento para empezar a usar strace.

Strace es una utilidad que se usa para correr un comando y visualizar todas sus interacciones con el sistema de forma que puedes ver exactamente que esta haciendo el programa desde que inicia hasta que sale incluso puede ser usado para hacer pruebas de rendimiento y estabilidad. En este articulo lo usaremos solo como una herramienta de diagnostico para ver por que un programa se congela.

El comando strace es fácil de usar, simplemente ejecuta strace al iniciar el servicio o programa que deseas diagnosticar, por ejemplo:

strace date

Esto te debería de dar una salida de bastantes lineas en el terminal. Veamos que pasa cuando una aplicación da error, intentemos correr man sin ningún parámetro.

$ man What manual page do you want?

Ahora veamos que hace man para llegar a ese mensaje:

execve("/usr/bin/man", ["man"], [/* 23 vars */]) = 0 brk(0)                                  = 0x9e89000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7869000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=24131, ...}) = 0 ...
open("/usr/share/locale/en_US.UTF-8/man", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/man", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/man", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=5830, ...}) = 0
mmap2(NULL, 5830, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7865000
close(4)                                = 0
write(2, "What manual page do you want?\n", 30) = 30 ...

Gracias a que man dio como salida "What manual page do you want?" sabemos cual es el error, pero si no nos hubiese dado este mensaje, como sabemos lo que esta pasando? aquí es cuando strace nos ayuda. La salida del strace es mucho mas larga que el párrafo que tenemos arriba pero lo recorte solo para mostrar lo que nos interesa en este ejemplo. Si se fijan el error "-1 ENOENT (No such file or directory)" se repite unas tres veces esto en algunos casos es un indicativo de lo que puede estar pasando.

Identificar los errores es relativamente fácil, por lo general tienen un -1 como salida y no todos los errores son fatales pero nos pueden dar pistas de lo que este mal con el programa

Algunos paramentos interesantes Puedes usar -u seguido del nombre del usuario para ejecutarlo como ese usuario en especifico cosa que es ideal para identificar correctamente problemas de permisos y lo mas seguro es que estés corriendo strace como root pero la mayoría de los servicios tienen sus propios usuarios para correr.

El parámetro -p seguido del PID es útil cuando el proceso que queremos examinar ya esta corriendo.

Personalmente suelo correrlo con estos parámetros:

strace -f -F -v -s 8192  -o <archivo>
  • -f Permite hacerle strace a los posibles forks que haga un programa, por ejemplo httpd.
  • -F Cumple la misma función que -f pero siempre lo pongo por cuestión de costumbre.
  • -v Nos da una salida detallada.
  • -s 8192 Asigno el valor de 8192 como limite de longitud de las cadenas que se van a imprimir. Por defecto es 32 y yo quiero la mayor cantidad de información posible.
  • -o La salida va a ser redirigida a un archivo.

Fedora sale de su fase alfa y entra en beta

La popular distribución de Linux Fedora, ha anunciado hoy su cambio de alfa a beta, aunque no es el método oficial, los usuarios Alfa pueden ejecutar yum clean all y seguidamente un yum upgrade para actualizar, si necesitan algo de documentación pueden revisar Fedora Project wiki: Yum Upgrade FAQ que aunque algo desactualizado seguramente responderá a muchas de sus preguntas.

La opción de menor problemática vendría siendo el instalar desde cero, con un medio físico como CD, DVD o USB esto lo pueden hacer descargando los archivos necesarios desde http://torrent.fedoraproject.org/.

Estamos en los preparativos para la apertura del 7mo Congreso Nacional de Sofwtare Libre - Venezuela 2011. El cual inicia su recorrido por las 11 sede del país este 29 de abril en la ciudad de San Felipe.

El recorrido será de la siguiente manera:
* 29 – 30 de Abril - Yaracuy: San Felipe
* 06 – 07 de Mayo - Anzoátegui: Puerto La Cruz
* 13 – 14 de Mayo - Sucre: Carúpano
* 20 – 21 de Mayo - Monagas: Maturín
* 03 – 04 de Junio - Táchira: San Cristóbal
* 10 – 11 de Junio - Mérida: Mérida
* 24 – 25 de Junio - Lara: Barquisimeto
* 01 – 02 de Julio - Falcón: Coro
* 08 – 09 de Julio - Aragua: Maracay
* 15 – 16 de Julio - Carabobo: Valencia
* 29 – 30 de Julio - Dist. Capital: Caracas
Para mayor información visita su página oficial: CNSL7
Para inscribirte aquí