Sigueme en Twitter

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

Ir al inicio

AbbrrMe 0.2

9/07/2008

Pedro Santana ha modificado la extensión de Abbrr de la que les comente hace días. Ahora funciona sobre los links, un menú adicional aparecerá cuando abres el menú contextual sobre ellos.

Gracias Pedro!

Instala AbrrMe 0.2

La extensión la he agregado al sandbox de extensiones de mozilla, si tienes cuenta y te sientes buena gente, se te agradece el instalarla y darle alguna calificación desde alla para que así pueda ser pública.

AbbrrMe en Mozilla

10 Comentarios

Contando lineas de código

6/07/2008

Cloc es una herramienta hecha en perl para contar lineas de código.

Lo grande de todo es que tiene la habilidad de detectar y separar por lenguaje de programación, ademas de distinguir los resultados para que estos no sean inflados por lineas blancas o comentadas.

Estaba acostumbrado a algún simple script que contara los totales, cuando mucho descontando las lineas vacias, pero este va un poco mas allá. Muy recomendable.

Visto en FOSSwire

1 Comentario

Extensión de Firefox de Abbrr.com

4/07/2008

Cuando Twitter todavía no incluía soporte directo con Tinyurl hice una extensión para Firefox y así ahorrarme el estar entrando a Abbrr cada vez que se necesitaba acortar una URL. El caso es que cuando ya no lo necesite tanto en Twitter mi uso fue muy casual y perdí un poco el interés.

Aún así el servicio sigue teniendo muy buena pinta y sigue generando URLs mas cortas que con otros servicios mas populares, agrégale que lo creo un latino (Victor Bracco) y tienes un buen incentivo para utilizarlo.

Cuando la instalas no hace nada llamativo, no agrega toolbars, iconos o manda mensajes. Simplemente la ejecutas desde el menú contextual y en un par de segundos te deja el resultado en el portapapeles listo para pegar.

Pensé en publicarla cuando la enchulara un poco mas, pero ahora no lo veo necesario, así que ahí va.

Instala AbbrrMe

Actualización

Esta versión ya no es la mas nueva. Siempre encontraras las nuevas versiones directo de mozilla o de mi repositorio.

8 Comentarios

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

6 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.

11 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