lunes, diciembre 28, 2009

Computers



Computer science is no more about computers than astronomy is about telescopes. -- Edsger Dijkstra

Acabo de terminar de leer un artículo publicado por Bjarne Stroustrup acerca de las diferencias entre las Ciencias de la Computación y la Programación aplicada a las Empresas/Industrias.

Hicieron eco de este en Barrapunto, Reddit, Hacker News y no los comentarios no tienen desperdicio :)

[*] La imágen es del observatorio mayor de la Facultad de Ciencias Astronómicas y Geofísicas de la Universidad Nacional de La Plata.

miércoles, diciembre 23, 2009

Cualo: Juego en Pygame




Recorriendo las cosas de mi disco encontré un juego que hice para una presentación de PyGame hace unos meses.

Lo acabo de publicar por si alguien le interesa mirarlo:

http://bitbucket.org/alejolp/cualo-pygame/get/tip.zip

martes, diciembre 22, 2009

Buscando en Twitter con Google Real Time



Buscando sobre árboles en Google me encontré con que Google ya se encuentra integrado con Twitter:





La opción de Google Real Time Search nos permite realizar búsquedas en vivo en Twitter y se encuentra integrada en Google Trends:

http://www.google.com/search?esrch=&tbs=rltm%3A1&tbo=u&hl=en&q=tree

jueves, diciembre 17, 2009

Este blog es miembro de Planeta PyAr



Planeta Python Argentina:
Gracias Joaquin por el logo!

    Cambios en NIC Argentina: nuevo sistema de registro y administración



    Acabo de ver esto en www.Nic.ar

    NIC Argentina implementará durante 2010 un nuevo sistema de registro y administración de nombres de dominio. Por tal motivo, se informa que todas las Entidades Registrantes deberán regularizar sus datos registrales. Aquellas que al 1ro de marzo de 2010 no hayan regularizado sus datos registrales serán dadas de baja al igual que los dominios que estuvieran registrados a su nombre.

    DATOS REGISTRALES – ACTUALIZACIÓN (Domicilio, Teléfono, etc.)
    Estos datos deben estar "actualizados" dado que la falsedad o inexactitud de los mismos puede derivar en la pérdida de nombres de dominio y/o bajas de Entidades Registrantes.

    DATOS REGISTRALES – REGULARIZACIÓN (Nombre de fantasía, datos duplicados, etc.)
    Los datos registrales de las Entidades Registrantes deben corresponder a Personas Físicas y/o Jurídicas reales. Por tal motivo aquellas Entidades que estén registradas con nombres de fantasía, razones sociales inexistentes, datos desactualizados, entidades duplicadas, etc. deberán regularizar su situación, pues, de lo contrario, podría derivar en la pérdida de nombres de dominio y/o bajas de Entidades Registrantes.

    CORREO ELECTRÓNICO
    Es obligatorio para todas las Entidades tener asociada una dirección de correo electrónico válida y que se encuentre activa. Por tal motivo, se recuerda a quienes aún no hayan inscripto su correo electrónico, que deberán hacerlo con anterioridad al 01/03/2010 ya que, de no ser así, la Entidad será dada de baja junto con los dominios que estuvieran registrados a su nombre.

    CUIT / DNI
    Es obligatorio para todas las Entidades registrar su CUIT, CUIL o DNI. Debido a ello, se recuerda a quienes aún no lo hayan registrado, que deberán hacerlo con anterioridad al 01/03/2010 ya que, de no ser así, la Entidad será dada de baja junto con los dominios que estuvieran registrados a su nombre.

    Reunión del PLUG: Diciembre 2009


    Este viernes 18 de Diciembre se realizará en la Ciudad de La Plata a las 20:00hs la última reunión del PLUG del año. El lugar de la reunión será Dok en calle 8 esquina 54.

    El PLUG es el Grupo de Usuarios de GNU/Linux de La Plata, un grupo de amigos con intereses en común sobre computadoras, linux, software libre y demás.

    No es una reunión de expertos, están todos invitados a participar sin importar cuánto conocen del tema :)

    Pueden encontrar más información del PLUG en su sitio web, www.plug.org.ar.

    miércoles, diciembre 16, 2009

    martes, diciembre 15, 2009

    monos rastafari bailando al ritmo de la musica de bob marley


    (falta la música pero no voy a ser tan cruel de poner un MIDI embedido en mi blog...)

    martes, diciembre 08, 2009

    PHP No sabe sumar




    Leyendo feeds encontré un viejo post de Facundo Batista donde dice que PHP No sabe sumar:
    $r = 3 + 058;
    echo $r."\n";
    ?>
    Ese código en PHP imprime "8".

    WTF?! Esta es una de esas cosas que me hacen sentir FURIA, IRA, MUERTE, PESTE, DESTRUCCIÓN MASIVA. ¿Cómo es que alguien en su sano juicio va a hacer semejante idiotez?

    El error está en que el número 058 intenta interpretarse como un octal, pero no es válido (el 8 no es un dígito octal!) y el número se trunca hasta el ultimo dígito válido. El "058" se interpreta como "05".

    Buscando en bugs.php.net encontré un reporte de bug del año 2004 en donde se menciona este bug, y la única respuesta fue:
    I once looked into fixed this, but this would slow down PHP dramatically in all cases where numbers are used inside scripts. Hence it's not worthwhile to "fix" this.

    Veamos de vuelta... en una versión relativamente moderna de PHP (5.2.6) qué pasa...
    $ php5 -r "echo 3 + 058 . \"\\n\";"
    8
    $ php5 -v
    PHP 5.2.6-1+lenny3 with Suhosin-Patch 0.9.6.2 (cli) (built: Apr 26 2009 22:16:23)
    Copyright (c) 1997-2008 The PHP Group
    Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
        with XCache v1.2.2, Copyright (c) 2005-2007, by mOo
        with Suhosin v0.9.27, Copyright (c) 2007, by SektionEins GmbH

    Ya está. Si alguien quiere seguir programando en ese lenguaje de mala muerte, yo avisé!

    Hay una página llamada PHPWTF.org en donde se juntan otras de estas joyitas ...

    Ahora, ¿qué pasa en Python?

    >>> 3 + 058
      File "", line 1
        3 + 058
              ^
    SyntaxError: invalid token

    ¡OH SI! y tal como dice Facundo en su post:
    "Ningún error debería pasar silenciosamente", dice el Zen de Python.

    Por favor, no usen PHP. Usen Python. Ruby. Java. Lo que sea, pero por favor, basta de usar PHP.

    lunes, noviembre 30, 2009

    Invitaciones de Google Wave



    Tengo varias invitaciones de Google Wave disponibles. Si alguien quiere alguna me tiene que decir el nombre de mi nuevo gato dejando un comentario con su email. No se olviden de la dirección de mail (y que sea de Gmail!) sino no te puedo invitar.

    jueves, noviembre 12, 2009

    Séptimas Jornadas de Software Libre en la UNLP



    Se encuentra disponible el cronograma definitivo de las Séptimas Jornadas de Software Libre a desarrollarse por la Facultad de Informática, UNLP. Junto a las charlas se darán dos talleres en PC a los que habrá que inscribirse si se desa asistir:
    Fecha y lugar

    La fecha es el 13 de Noviembre en el primer piso del Ex-Liceo (calle 50 y 115, La Plata).

    Charlas
    • 9.00 Hs. - Presentación de las Jornadas
    • 9.15 Hs. - JavaFX. Tecnología Java para el desarrollo de aplicaciones RIA. Orador: Vanessa Aybar
    • 10.15 Hs. - Django: Sitios webs dinámicos con Python. Orador: Alejandro Santos
    • 11.15 Hs. - Desarrollando con Symfony. Orador: Christian Rodriguez
    • 12.15 Hs. - Software libre para la administración de redes. Oradores: Leandro Di Tomasso – Joaquin Salvarredy - Matías Banchoff
    • 12.45 Hs. - Mejor prevenir que curar. Backups con Bacula. Oradores: Sofía Martin - Matías Banchoff
    • 13.15 Hs. – Intervalo
    • 14.30 Hs. - 404: Tu número de la suerte. Servidores web libres. Oradores: Aldo Vizcaino
    • 15.30 Hs - Testing de aplicaciones web utilizando herramientas libres. Oradores: Anahí Rodriguez – Valeria Soria 
     Vía: Portal de Software Libre del LINTI

    miércoles, noviembre 04, 2009

    Corolario de la Ley de Godwin



    La Ley de Godwin dice:
    "A medida que una discusión en línea se alarga, la probabilidad de que aparezca una comparación en la que se mencione a Hitler o a los Nazis tiende a uno".
    El Corolario sobre lenguajes de programación de la Ley de Godwin dice:
    "A medida que una discusión en línea sobre lenguajes de programación se alarga, la probabilidad de que aparezca una comparación en la que se mencione a Java o a cafeteras tiende a uno".

    martes, octubre 27, 2009

    Reunión del PLUG



    El Grupo de Usuarios Linux de La Plata está organizando la próxima reunión, con fecha tentativa el Viernes 13 de Noviembre a realizarse el mismo día que las Séptimas Jornadas de Software Libre en la Universidad Nacional de La Plata.
    La reunión la estamos coordinando a través de nuestra Lista de Correos. Están invitados a participar de ambos eventos y a unirse a la lista :)

    jueves, septiembre 03, 2009

    Día de la Libertad de Software



    El Día de la Libertad de Software es una celebración anual a nivel mundial del software libre y de código abierto. Es un evento de educación pública, no solo para celebrar las virtudes de este tipo de software, sino para promover su uso para el beneficio del público.

    En La Plata se realizará el Sábado 26 de Septiembre de 2009, y para más información se puede entrar al sitio de la organización en:

    http://softwarefreedomday.org/teams/southamerica/argentina/La_Plata

    jueves, agosto 27, 2009

    Regional Latinoamericana de la Competencia de Programación ACM- IBM



    Accenture auspicia la competencia en la sede Argentina
    http://www.dc.uba.ar/icpc

    La Regional Latinoamericana de la Competencia Internacional de Programacion de la ACM (34th ACM International Collegiate Programming Contest sponsoreada por IBM) se llevará a cabo el sabado 24 de octubre de 2009 simultáneamente en Chile, Colombia,Venezuela, Peru, Brasil y Argentina, Bolivia, México y Cuba.

    Los primeros equipos de la Regional pasarán a la Final Mundial que se realizará en febrero de 2010 en Harbin, China.

    El Departamento de Computación de la Facultad de Ciencias Exactas y Naturales de la Universidad de Buenos Aires será una de las sedes de la Regional Sudamérica/Sur. La competencia en la sede Argentina está auspiciada además por Accenture.

    Ver más detalles en el aviso adjunto o en:

    http://icpc.baylor.edu/icpc
    http://www.dc.uba.ar/icpc

    viernes, agosto 14, 2009

    gcc: undefined reference to vtable for



    Estuve obteniendo el siguiente error:
    Networking.cpp:193: undefined reference to `vtable for Client'

    Es mensaje de error es bastante oscuro, pero la solución es muy simple: en caso de usar clases con funciones virtual, gcc exige que éstas funciones sean implementadas en un archivo .cpp:

    Si tenemos el siguiente Client.h:
        class Client {
        public:
            Client() {
                // ...
            }
            virtual ~Client() {
                // ...
            }
            virtual void foo() {
                // ...
            }
        }


    Tendremos que dividirlo en dos. En Client.h habrá que tener:
        class Client {
        public:
            Client() {
                // ...
            }
            virtual ~Client();
            virtual void foo();
        }


    Y en Client.cpp:
    Client::~Client() {
        // ...
    }
    void Client::foo() {
        // ...
    }


    Para más información lerr la FAQ de gcc sobre vtables.

    miércoles, agosto 12, 2009

    Mercurial y Git: Múltiples repositorios en SourceForge



    Mañana en SourceForge van a implementar el soporte de múltiples repositorios para Git y Mercurial.

    El link habla únicamente de Mercurial, pero llegó un mail desde SF.Net diciendo que el soporte de múltiples repositorios será también para Git.

    Tanto Git como Mercurial son sistemas de control de revisiones distribuidas que permiten mantener a todo momento el historial de cambios en forma local. Esto es algo muy útil cuando se desea acceder a la historia de un proyecto rápidamente.

    Una razón más para hostear proyectos Open Source en SourceForge!

    lunes, agosto 10, 2009

    Cambio de skin



    Cambié un poco la apariencia del blog, ahora es un poco más "human friendly".

    martes, agosto 04, 2009

    Compiling Python C extensions using gcc



    Just a quick reminder. To manually compile a Python C extension on Linux using gcc and without distutils the magic command is:
    gcc --shared -fPIC $(python-config --cflags) $(python-config --ldflags) base85.c -o base85.so

    Then, to test the new extension:
    $ PYTHONPATH=. python
    Python 2.5.2 (r252:60911, Jan 4 2009, 21:59:32)
    [GCC 4.3.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import base85
    >>> base85
    <module 'base85' from 'base85.so'>

    viernes, julio 24, 2009

    Debconf 9



    ¡Arrancó la semana de charlas en DebConf9! Se pueden ver por streamming todas ellas, transmitidas en vivo desde Cáceres, España.

    Para poder verlas hay que usar un reproductor de streamming OGV/OGG, por ejemplo el VLC. Hay dos salas simultáneas y las URLs son:
    • http://video.debconf.org:8000/Upper_talkroom.ogv.m3u
    • http://video.debconf.org:8000/Lower_talkroom.ogv.m3u

    El cronograma completo se puede ver en la sección de Streams de la página web de DebConf.

    martes, julio 07, 2009

    Ultimo momento! Gmail deja de ser Beta



    Ahora lo ves...



    Ahora no lo vés!

    domingo, julio 05, 2009

    Mozilla Firefox 3.5 en Linux amd64/x86_64



    Hoy se me ocurrió probar Firefox 3.5, pero en la página de Mozilla no hay binarios para amd64/x86_64, por lo que tuve que compiarlos manualmente.

    Me resulta muy extraño que no esté listo para bajar ya que no tuve ningún problema en compilarlo. Incluso una vez terminada la compilación, se genera automáticamente el .tar.bz2 que te bajarías de la web de Mozilla.

    En Debian Lenny amd64 para sacar a Shiretoko (Firefox 3.5) andando es muy simple.

    Como no estaba muy seguro de qué había que hacer, empecé creando una jailroot con debootstrap (me encantan las jailroot!) para poder experimentar un poco. La idea de usar la jailroot es para no tener un montón de paquetes instalados que solo se usan para compilar los fuentes.

    El segundo paso es conseguir los fuentes desde el FTP de Mozilla.

    Para estar seguro de que todo compile bien instalé las dependencias de compilación del Iceweasel de Debian haciendo:
    aptitude build-dep iceweasel
    Luego tuve que instalar los siguientes paquetes:
    build-essential locales autoconf automake less libdbus-glib-1-dev libasound2-dev libidl-dev libiw-dev libx11-dev libxt-dev
    Por último, hay que descomprimir los fuentes y crear un nuevo archivo de configuración llamado .mozconfig que contenga:
    . $topsrcdir/browser/config/mozconfig
    ac_add_options --enable-application=browser
    ac_add_options --disable-tests
    ac_add_options --enable-crypto
    ac_add_options --disable-debug
    ac_add_options --enable-optimize
    ac_add_options --with-l10n-base=..

    mk_add_options MOZ_CO_PROJECT=browser
    mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-ff
    mk_add_options MOZ_MAKE_FLAGS=-j4
    Luego compilar todo y generar el paquete final con:
    make -f client.mk build && cd obj-ff && make package
    Si no hubo ningún problema, el tarball comprimido con Shiretoko 3.5 debería estar en:
    opt-ff/dist/firefox-3.5.en-US.linux-x86_64.tar.bz2
    Shiretoko es el nombre interno de desarrollo que le dieron a la nueva versión del navegador. Para que el paquete compilado diga "Firefox" en vez de "Shiretoko" hay que usar una opción de compilación adicional. Esto es asi por cuestiones de Copyright y de licencias propias de Mozilla.

    Lo único que cambia es el nombre y las imágenes. Por mi cuenta, Shiretoko me parece bien :)

    viernes, junio 05, 2009

    Monkey Island Special Edition



    Hi! My name is Guybrush Treepwood and I wanna be a Pirate!


    Seeehh

    LucasArts va a lanzar una versión moderna del clásico juego "The Secret of Monkey Island"!:

    http://www.lucasarts.com/games/monkeyisland/

    En la pagina hay un video mostrando el juego, y Ron Gilbert publicó en su blog la historia del juego, con algunos detalles que vale la pena leer:

    http://grumpygamer.com/8280380

    miércoles, abril 08, 2009

    You Scored as ...



    You Scored as Captain Malcolm Reynolds

    Also known as "Captain Tight Pants".Simply put, you are a Browncoat-turned-pirate, but with a conscience.You are a leader of men and women, but you tend to fall for whores.

    RiVER
    100%
    Captain Malcolm Reynolds
    100%
    Kaylee, the Mechanic
    100%
    First Mate Zoe
    100%
    Shepherd Book
    88%
    Inara, the "Companion"
    88%
    Jayne Cobb, resident bad-ass
    88%
    Simon, the Doctor
    75%
    Wash, the Pilot
    75%

    lunes, marzo 30, 2009

    And the winner is ...



    Just read at the Python-devs mailing list:
    Dear Python developers,

    The decision is made! I've selected a DVCS to use for Python. We're switching to Mercurial (Hg).

    The implementation and schedule is still up in the air -- I am hoping that we can switch before the summer.

    It's hard to explain my reasons for choosing -- like most language decisions (especially the difficult ones) it's mostly a matter of gut feelings. One thing I know is that it's better to decide now than to spend another year discussing the pros and cons. All that could be said has been said, pretty much, and my mind is made up.

    To me, the advantages of using *some* DVCS are obvious. At PyCon, Brett already announced that Git was no longer being considered -- while it has obviously many fans, it also provokes strong antipathies. So it was between Hg and Bzr (both of which happen to be implemented in Python FWIW). Based on a completely unscientific poll (basically whatever feedback I received in my personal inbox or on Twitter), Hg has a strong following among Python developers and few detractors, while few (except Canonical employees) seem to like Bzr. In addition, most timing experiments point towards Hg being faster than Bzr for most operations, and Hg is (again, subjectively) easier to learn for SVN users than Bzr.

    http://mail.python.org/pipermail/python-dev/2009-March/087931.html

    lunes, marzo 23, 2009

    Rfgb rf yb dhr cnfn ...



    Phnaqb hab rfgá pba vafbzavb. Nuben dhr cerfgb ha cbpb qr ngrapvóa, rfgr cbfg cnerpr FCNZ, ununun.

    domingo, marzo 15, 2009

    Cambio de hora

    relojes atómicos

    Para aquellos Argentinos que hicieron el cambio de horario de verano, les recuerdo que ya estamos de vuelta en GMT-3. Si aún no volvieron a la hora anterior, van a tener que cambiar la hora una hora para atrás. Ejemplo: si tenés las 11:00, vas a tener que cambiarlo a las 10:00.



    Para ver una súper página que te dice qué hora es: http://wwp.greenwichmeantime.com/time-zone/south-america/argentina/

    La foto de los relojes atómicos la saqué desde: http://www.leapsecond.com/hpclocks/

    viernes, marzo 13, 2009

    ¡¡Me quedó muy claro!!





    Como para que no haya dudas al respecto.

    domingo, marzo 08, 2009

    Haciendo desaparecer una web



    Supongamos que tenemos una pagina web hace rato, y queremos hacerla desaparecer: que cuando alguien entre, ya sea directamente o por medio de un enlace, nos rebote a otra pagina mostrando algún mensaje:
    "Este sitio web se encuentra en mantenimiento permanente, por favor no vuelva nunca más".
    Si estás usando Apache y tenés la posibilidad de editar un archivo .htaccess, hay dos formas de hacerlo. La primera es usar RedirectMatch creando un archivo llamado .htaccess en el directorio raiz del sitio web:
    RedirectMatch (.*) http://www.otrositio.com/mantenimiento.html
    RedirectMatch ^$ http://www.otrositio.com/mantenimiento.html
    Es muy importante tener en cuenta que esas dos reglas son catch-all. Si la redireccion se hace al mismo sitio entonces tendrás un bucle infinito muy feo, y tu hosting se va a enojar mucho.

    Una buena opción para evitar eso sería crear un subdominio, por ejemplo "mantenimiento.tusitio.com" en donde ahi no existan esas reglas y aparezca el mensaje.

    La segunda alternativa, tambien dentro del archivo .htaccess, es usar mod_rewrite de Apache:
    <IfModule mod_rewrite.c>

    RewriteEngine On
    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l

    RewriteRule (.*) index.php [QSA,L]

    </IfModule>
    En este caso podemos tener un mejor control de cómo hacer la redireccion, ya que de acuerdo a las reglas anteriores el modulo de Rewrite la va a hacer solo cuando el archivo que se pida no exista.

    De esta forma se puede mover el contenido de todo el sitio a una carpeta con otro nombre, y poner una portada que muestre un mensaje adecuado.

    miércoles, marzo 04, 2009

    Premio al mejor comando



    El ganador:
    wget --mirror ftp://servidor
    El comando wget sirve para bajar cosas, y la opción --mirror permite armar una replica de un sitio remoto. En especial, si se le indica una dirección FTP creará una replica exacta del sitio.

    El secreto está en mantener localmente un listado de los archivos en el servidor remoto. De esa forma, con hacer un "ls" el programa puede saber qué archivos nuevos, borrados o modificados hay y poder acelerar el proceso. Además, en caso de cortarse la conexion wget intentará reconectarse y continuar descargando.

    En mi caso pude hacer un backup de un sitio remoto descargando todo por FTP en 21 horas:
    FINISHED --2009-03-04 09:20:29--
    Downloaded: 140417 files, 3,1G in 20h 59m 56s (43,1 KB/s)

    martes, febrero 24, 2009

    Nuevos drivers Broadcom




    El 21 de Enero, 2009, Broadcom lanzo una nueva versión de los drivers unificados 802.11a/b/g/n de Linux de 32 y 64 bits para placas basadas en los chips BCM4311, BCM4312, BCM4321, y BCM4322. En especial, las portátiles Dell con la placa WiFi "Genérica Dell" utilizan este driver.

    En mi caso parecen haberme resuelto algunos detalles de la WiFi de mi portátil, por lo que recomiendo que actualicen aquellos que los tengan.

    Cementerio de Fuentes



    ¡Otra nueva fuente en el cementerio de fuentes! La última fué una Vitsuba COL-45-B. En la foto se puede ver a la izquierda.

    En estos días voy a tener que salir a comprar una fuente un poco mejor, seguro que me haga de alguna Thermaltake parecida a la que ya tengo de 430W en mi Desktop (W0070-RU).

    Tengo esperanzas que el disco en realidad no funcionaba por la fuente defectuosa. ¡Mi fileserver volverá a renacer!

    jueves, febrero 19, 2009

    Jugando con la caché

    Ya todos estamos más que familiarizados con el concepto de localidad de las referencias. Y se me ocurrió tomarme unos minutos para analizar qué tanto impacto puede llegar a tener en un programa de computadora.

    El ambiente de investigación "ideal" sería reiniciar en Linux en modo usuario simple, desconectando el mouse y otros periféricos que no sean necesarios para reducir la interferencia de interrupciones.

    En mi caso no es así. Estoy haciendo un trabajo para la facu en OpenOffice, escuchando Dire Straits en VLC y con el firefox abierto en mi GMail. Da igual!

    La idea es analizar qué ocurre si siempre estoy intentando modificar una posición de memoria que no está en la caché del procesador. Para eso se usa una gran matriz que se recorre por filas o por columnas asignandole un valor a los elementos de ésta.

    Entonces decidí escribir un simple programa en C que acepta por dos valores por parametro: el tamaño de una matriz y un boolean para ver si la matriz se recorre por filas o por columnas. El codigo es el siguiente:

    int msize, mdir;
    int *mptr;

    void initm() {
        int x, y, tam = msize * msize;

        if (mdir) {
            for (x = 0; x < tam; ++x) {
                mptr[x] = x;
            }
        } else {
            for (x = 0; x < msize; ++x) {
                for (y = 0; y < tam; y += msize) {
                    mptr[x+y] = x;
                }
            }
        }
    }

    Fue compilado con gcc de la siguiente forma:
    $ gcc -Wall -O2 -o cache.out cache.c
    Y los resultados son más que alentadores:
    $ time ./cache.out 15000 1

    real 0m0.937s
    user 0m0.184s
    sys 0m0.728s

    $ time ./cache.out 15000 0

    real 0m7.063s
    user 0m6.180s
    sys 0m0.856s
    Recorriendo la matriz por columas el programa es siete veces más lento que recorriendo por filas la misma matriz.

    Como siempre, todos mis programas los ejecuto al menos una vez bajo valgrind. Los resultados son también muy interesantes!!
    $ time valgrind -q ./cache.out 15000 1

    real 0m22.026s
    user 0m21.009s
    sys 0m0.872s

    $ time valgrind -q ./cache.out 15000 0

    real 1m0.161s
    user 0m58.972s
    sys 0m0.880s
    Así acaba mi experimento poco científico del día.

    martes, febrero 17, 2009

    Mirror Debian Lenny



    Con motivos del lanzamiento oficial de Debian Lenny decidí ajustar el mirror local que tengo en mi pequeño fileserver personal. Actualmente se encuentra recauchutado de la siguiente forma:
    $ du -sh debian-local*
    27G debian-local
    2.8G debian-local-security
    21G debian-local-testing
    Usando debmirror en un script cron que corre cada 24 hs se mantiene bastante actualizado. "debian-local" es un mirror de etch con sources incluidos; en "debian-local-security" están las actualizaciones de seguridad de etch+lenny y en "debian-local-testing" estan lenny sin sources. En esta nueva release se fueron de escala, ya que el mirror etch con sources es casi del mismo tamaño que el mirror lenny sin sources!!

    Hace unos días murió un disco del fileserver (en el que convenientemente no tengo ningun RAID configurado), voy a esperar que haga menos calor para ver si resucita. Mientras tanto voy a mudar el mirror a otro disco con cosas menos importantes, y ver si puedo recuperar mis dos discos (el que murió y el que le presté a Pedro) para configurar un RAID.

    El script para actualizar el mirror Debian es:
    #!/bin/sh

    MIRROR_HOST="ftp.br.debian.org"

    # Stable

    debmirror -a i386 \
    -s main,contrib,non-free,main/debian-installer \
    -h $MIRROR_HOST \
    -d etch -r /debian --progress \
    -e http --ignore-release-gpg --nosource \
    /var/big1/www/debian-local

    # Secure Stable

    debmirror -a i386 \
    -s main,contrib,non-free \
    -h security.debian.org \
    -d etch/updates,lenny/updates -r / --progress \
    -e http --ignore-release-gpg --nosource \
    /var/big1/www/debian-local-security

    Simba Cuadrado

    simba squared (simba cuadrado)

    Siguiendo el ritmo de postear una vez por semana,

    [2 horas mas tarde]

    Ah si, postear. Recién llego de almorzar y ya salgo para la facu. Estoy haciendo el curso de verano de Matemática 3 (Probabilidades y Estadísticas) y ya tengo la cabeza bastante quemada.

    miércoles, febrero 11, 2009

    Status




    ¿Qué es de mi vida, qué ando haciendo en estas semanas? Los que me conocen saben que de repente desaparecí de la faz de la tierra. Sigo viviendo en donde siempre, pero ya no me conecto al messenger.

    ¡Estoy estudiando! Decidí que ya es hora y de una buena vez de recibirme: sacar el título y de ahí seguir para adelante. Me falta rendir 4 finales para llegar al APU y no voy a dejar que pase ni un solo día.

    Además, me puse a hacer trabajos freelance haciendo programitas en Python. Es todo tan simple y sencillo que cuando me pongo a programar un sistema feo (y que en otra época hubiese odiado), ¡ahora me divierto! :D

    Y como para no terminar de aburrirme, tomé las riendas nuevamente en AONX. Ahora no tengo NADA de tiempo libre, aunque de a poco y más adelante voy a intentar hacer algo. Si estás interesado o curioso en saber de qué estoy hablando podés dar una vuelta por la página del proyecto, o leer el post de brainstorm del blog.

    lunes, febrero 09, 2009

    Chau WordPress, Hola BlogSpot

    Me cansé de tener que preocuparme por mantener actualizada la versión de mi WordPress self-hosted. De ahora en más voy a bloggear por aquí y además aprovecho para tirar a la basura todas las porquerías que había en el viejo blog.