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'>