Sigueme en Twitter

Archivo de artículos en la categoría "Planeta Linux"

Ir al inicio

Una cita de Richard Stallman

2/07/2008

Al preguntarle si ha pensado en tener hijos:

La idea de unirse con otro en amor para crear una mezcla es muy
romántica, pero las consecuencias son muchas molestias. Por ejemplo,
las peleas arruinan el mismo amor, y hay que dedicar la vida al ganar
dinero.

El crecimiento de población es también muy malo para el mundo. La
población actual parece más que la tierra puede soportar. Estamos
estropeando nuestro mundo. El no tener hijos es un acto muy importante
para protegerlo.

Siempre polémico.

7 Comentarios

También fui al Developer Day de Google

26/06/2008

El evento no estuvo mal, pero siendo Google y siendo para desarrolladores esperaba algo mucho mas técnico, talleres tal vez. En cambio la conferencia fue mas bien un evento de marketing para estar seguros que todos conocíamos sus herramientas.

Google Developer Day

Creo que afecto bastante que solo se contara con un día, y con muy poco tiempo, los expositores apenas tenían 50 minutos para dar su tema por lo que siempre iban un poco apresurados.

Me agrado la cantidad de gente con la que me encontré por allá. De los que ya conocía, me fui con Victor y Gibran, además de ver al buen Luis. Pero también me encontré con bastantes que solo conocía por texto como Xiam, Gnuget, Michoacano, Carlos Leopoldo, Carlitos, Sinue, Chubas, Agkamai, H1pp1e, Chillicoder y GeralOE (con algunos no había cruzado palabra nunca, pero había leído de ellos).

Google Developer Day

Desgraciadamente el evento fue demasiado apresurado y con la gran mayoría pude cruzar un “Hola” y poco mas. El único momento que tuvimos para platicar fue la hora de la comida, a partir de ahí todo fue rápido, cada quien cambiándose de sala cada 50 minutos en cuanto podía sino se quedaba sin asiento si el tema era muy popular. Al final le terminabas perdiendo la pista a todo el mundo.

El día anterior tuvimos el gustazo de ir por unas cheves con Paranoideo, Cupto (y para shock mio, no es comunicologo), Yoselin y Fabela, así que esto hizo que valiera mucho la pena el viaje.

Acá la foto con los Googleros desde la cámara de Victor.

Googlers

4 Comentarios

It’s Science Bitches!

17/06/2008

Porque la ciencia no es aburrida, por orden de preferencia, aquí van tres recomendaciones de libros bastante digeribles para los que no nos dedicamos a ella. No demasiadas formulas y si mucha historia y manzanas para explicarlo todo.

A Briefer History of Time
(Brevísima Historia del Tiempo)
por Stephen Hawking

Un imprescindible. Todos conocemos la obra maestra de Stephen Hawking, “A Brief History of Time”, pues casi 2 décadas después sale esta nueva edición, actualizada con las últimas novedades en la física y escrito de una manera mas sencilla para los mortales.

No por nada llamaron a la gran obra de Hawking “El bestseller que menos gente ha leído”, a pesar de que para gente como el es sencillo, no deja de estar denso para los que no estamos metidos en la materia, este libro vino a solucionar eso.

Habla de cosas tan interesantes como la problemática para encontrar la gran teoría unificada que uniría la mecánica cuántica de Heisenber y Bohr, la teoría general de la relatividad de Einstein y explicaría cualquier fenómeno físico. Una ley para regirlas a todas. Cosas tan interesantes como la materia negra, el viaje en el tiempo o la densa teoría de cuerdas. Todo excelentemente explicado.

Uncertainty: Einstein, Heisenberg, Bohr, and the Struggle for the Soul of Science
(Incertidumbre: Einstein, Heisenberg, Bohr y la lucha por la esencia de la ciencia.)
por David Lindley

Un excelente libro de historia y ciencia. De aquella gran época de viejos establecidos como Einstein, Born, Schrödinger, Bohr, Sommerfeld y jóvenes prodigios como Heisenberg y Pauli.

Grande ver el enfrentamiento del viejo determinismo contra la novedosa incertidumbre, Einstein contra Bohr (y no precisamente en una lucha de lodo.. momento ¿porque escribí eso?) los inicios de la mecánica cuántica. Interesante ver también como afecto la guerra y la Alemania nazi en el desarrollo de la ciencia.

A Short History of Nearly Everything
(Una Breve Historia de Casi Todo)
por Bill Bryson

Este es muy popular, podría decirse que es un ‘Ciencia para Dummies’, contiene muchísima información de como hemos ido resolviendo nuestra curiosidad durante toda nuestra existencia. Geología, Química, Física, Matemáticas, no se extiende demasiado en nada y parece hablar de todo.

Siendo mas de 550+ páginas para mis gustos es demasiado extenso, aún asi es muy interesante conocer nombres y nombres de gente importante en la ciencia y que no ha sido tan reconocida, no todo han sido los Newton, los Einstein o los Darwin.

Esta escrito en un lenguaje muy ligero y cualquier cosa, por tonta que parezca, la explican. Lo mas cercano a un libro de texto escolar, aunque no estoy seguro de que tan bueno sea eso.

10 Comentarios

La cita del día

6/06/2008

“Dios usó fork() para crear a Eva”

Vía | Bash.org

5 Comentarios

Ignorando archivos en Subversion

5/06/2008

Una propiedad de Subversion que viene bien cuando tienes muchos archivos ajenos a tu repositorio mezclados con tu código, es el svn:ignore.

Al hacer un svn status en lugar de tener un resultado con un montón de archivos inservibles ..

$ svn status calc
 M     calc/button.c
?      calc/calculator
?      calc/data.c
?      calc/debug_log
?      calc/debug_log.1
?      calc/debug_log.2.gz
?      calc/debug_log.3.gz

.. puedes tener un resultado con solo los archivos que te interesan filtrando los indeseados, solo tenemos que agregar la propiedad ignore al directorio calc ..

svn propedit svn:ignore calc

.. esto te abrirá un editor donde agregas un patrón (ojo, no es una expresión regular) que en nuestro ejemplo ignorara a todo menos a archivo data.c

calculator
debug_log*

Y listo, ahora el resultado de svn status solo es lo que nos importa.

$ svn status
 M     calc
 M     calc/button.c
?      calc/data.c

Enlace | SVN Book

Sin Comentarios

El Proyecto Euler: Problema 2

22/05/2008

El Proyecto Euler es una serie de problemas de programación, si quieres enterarte de que va esto, lee la introducción.

Problema 2

Cada nuevo termino en la secuencia de Fibonacci es generada agregando los dos términos previos. Comenzando con 1 y 2, los primeros 10 términos serán:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Encuentra la suma de todos los términos pares en una secuencia que no sobrepase los 4 millones.

Para resolverlo de la forma bruta, hay que construir la secuencia de Fibonnaci solamente agregando una condición donde vamos agregando una sumatoria de los números pares, esa verificación es donde muy probablemente se pueda optimizar esto. Mañana salgo de viaje, hasta fines de la siguiente semana revisare que se pudo hacer.

Por cierto, hubiera jurado que el problema antes estaba escrito con el límite de 1 millón, así tenía guardada la solución, me pregunto ¿porque lo habrán cambiado? por lo pronto el siguiente que haga sera completamente nuevo, los dos primeros ya los había resuelto cuando me registre a la página.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
main()
{
    int sum = 0, a = 1, b = 1, c = 0;
    while ( c < 4000000 )
    {
        c = a + b;
        a = b;
        b = c;
 
        if ( c % 2 == 0 ) {
            sum += c;
        }
    }
 
    printf("resultado: %d\n", sum);
    return 0;
}

Conclusión

Lo mas costoso de esta solución es la comprobación de que los números sean pares, y revisando otras soluciones hay muchas formas de evitar esta comprobación.

Como bien notaron Michoacano y Xiam, resulta que si revisamos la secuencia, podemos notar que cada tercer número es par y ya sabiéndolo de antemano nos podemos evitar la comprobación y sumar solo cada tercer número.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
main()
{
    int sum = 0, a = 1, b = 1, c = a + b;
    while ( c < 4000000 )
    {
        sum += c;
        a = b + c;
        b = c + a;
        c = a + b;
    }
 
    printf("resultado: %d\n", sum);
    return 0;
}

Nuevamente, esto ayudara realmente en rangos mucho mas grandes que el que tenemos.

12 Comentarios

El Proyecto Euler: Problema 1

18/05/2008

El Proyecto Euler es una serie de problemas de programación, si quieres enterarte de que va esto, lee la introducción.

Problema 1

Si listamos todos los números naturales debajo de 10 que son múltiplos de 3 o 5, tenemos 3, 5, 6 y 9. La suma de estos múltiplos es 23.

Encuentra la suma de todos los múltiplos de 3 o 5 debajo de 1000.

Este problema lo he visto como de los ‘recomendados’ para poner en las entrevistas para trabajo, simple y rápido, te dice claramente las 3 condiciones a evaluar.

El operador % regresa el residuo de una división, por lo que podemos iterar de uno en uno hasta el límite superior (1000) y verificar si cada número es perfectamente divisible (el residuo es 0) entre 3 o 5, entonces lo podemos almacenar.

Resuelto en C.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
main()
{
    int sum = 0, i;
    for ( i = 1; i < 1000; i++ )
    {
        if ( (i % 3 == 0) || (i % 5 == 0) ) {
            sum += i;
        }
    }
 
    printf("El resultado es: %d", sum);
}

Conclusión

Comparando con resultados del Proyecto Euler, si bien la solución de fuerza bruta que hice no esta mal, si la pregunta exigiera un limite con cantidades grandes no es eficiente hacer un loop comparando resultado por resultado, sino que es mejor calcular las operaciones por separado.

La suma de números divisibles por 3, la suma de números divisibles por 5 y restando finalmente los números divisibles por 15 que sino tendríamos los divisibles comunes de 3 y 5 contados 2 veces. Se puede evadir por completo cualquier loop si utilizamos progresiones aritméticas.

Para poner un poco en contraste, haciendo benchmark (utilizando gprof) de mi solución para el limite de 1 billón (si si, un uno seguido de 9 ceros), este laptop tarda 15.68 segundos.

En cambio la siguiente versión (versión de sandippal en el foro) que utiliza este principio, tarda menos de .01 segundo, ¿bastante no?.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#define NUM 999999999
 
main()
{
  unsigned long long mult3  = NUM / 3;
  unsigned long long mult5  = NUM / 5;
  unsigned long long mult15 = NUM / 15;
  unsigned long long sum3, sum5, sum15;
 
  sum3 = 3  * mult3  * (mult3 + 1) / 2;
  sum5 = 5  * mult5  * (mult5 + 1) / 2;
  sum15 = 15 * mult15 * (mult15 + 1) / 2;
 
  printf("resultado: %lld\n", sum3 + sum5 - sum15);
}

Gracias en especial al comentario de Xiam, grande su explicación.

13 Comentarios

El Proyecto Euler

18/05/2008

¿Que es el Proyecto Euler?

El Proyecto Euler es una serie de retadores problemas de matemática/programación que requerirán mas que un poco de conocimientos de matemáticas para resolver. Aunque las matemáticas te ayudarán a tener métodos elegantes y eficientes, el uso de la computadora y habilidades de programación son requeridos para resolver la mayoría de los problemas.

Desde hace tiempo he querido avanzar con ellos y mi desidia no me ha dejado, así que ahora publicaré los problemas que vaya resolviendo (si, uno por uno) y de paso me doy motivación extra.

También es una perfecta oportunidad para que la vasta fauna del internet pueda corregir mi imperfecta manera de programar, así que cualquier corrección no duden en hacerla, mientras mas me equivoco mas aprendo.

Algunas cosas que notar:

  • Siempre agradeceré que revisen el problema y den su opinión, planeo equivocarme bastante. Los problemas se encuentran si buscamos en el internets o en la página del proyecto, pero el punto es pensar un poco y hacerlo uno mismo, lo demás es perder el tiempo.
  • No pienso leer las respuestas que vienen en el Proyecto Euler hasta que no haya pasado un tiempo considerable desde que lo resolví, entonces publicare la conclusión.
  • Siempre buscare que el programa sea mas eficiente, y por eficiente se entiende que el algoritmo ejecute en menos ciclos de maquina, por lo tanto en menos tiempo. No me importa desarrollar superhabilidades para escribirlo en el menor número de lineas ininteligibles posible.
  • Los quiero hacer todos en C para aprender, así tarde tres veces más y cometa muchos errores como n00b que soy, no me importa, desde la carrera técnica no lo utilizo y ya dan ganas :-)
  • Si planeas hacerlos por tu cuenta, no leas esto antes! básicamente es un spoiler.

Listado de problemas:

  • Problema 1 - Suma todos los números naturales menores a 1000 que son múltiplos de 3 o 5.
  • Problema 2 - Encuentra la suma de todos los números pares en una secuencia de Fibonacci que no pase los 4 millones.
3 Comentarios

Una tienda friki

18/05/2008

Me imaginaba que el día que me encontrara una tienda con este nombre sería.. no se.. ¿friki?

Tienda Friki

Kudos para munix que la noto, yo soy tan distraído que desde el año pasado pasaba por aquí y nunca la vi.

3 Comentarios

¿Para que usar el X-JSON de Prototype?

15/05/2008

En un canal de IRC, hoy una persona me hizo recordar un problema que tuvimos hace un par de semanas en la oficina porque los datos en JSON que regresaba una web, mágicamente desaparecían aun cuando antes estaba funcionando.

En ambos casos fue el mismo error, no se tenia contemplado que los datos enviados fueran a crecer demasiado eventualmente, y como X-JSON utiliza los headers de HTTP, tiene un tamaño limitado.

Yo realmente no le veo el punto de su existencia, ¿enviar estados de una página? ¿mensajes cortos? Para eso mejor utilizar headers correctos de HTTP y cualquier tipo de datos por el cuerpo de la página como fue pensado desde el principio, la confusión que puede crear es mayor que el beneficio.

Si lo dejas a mi opinión: No lo uses, evítalo.

1 Comentario