Archivo

Archivo para diciembre, 2009

Migrando KodeGeek de CVS a Subversion en SF.net

Viernes, 25 de diciembre de 2009

Bueno, creo que ya era hora de hacerlo. Así que lo hice en varios pasos, siguiendo las recomendaciones de SF.net:

  • Hacer un respaldo del código existente en CVS:

    rsync -av rsync://elangelnegro.cvs.sourceforge.net/cvsroot/elangelnegro/* .

    Hasta ahora bien.
  • Crear un vaciado para SVN usando cvs2svn:
    Hmm, no tan rápido:

    auyan:sf josevnz$ ~/Downloads/cvs2svn-2.3.0/cvs2svn --dumpfile=svndump .
    ERROR: cvs2svn uses the anydbm package, which depends on lower level dbm
    libraries. Your system has dbm, with which cvs2svn is known to have
    problems. To use cvs2svn, you must install a Python dbm library other than
    dumbdbm or dbm. See http://python.org/doc/current/lib/module-anydbm.html
    for more information.
    auyan:sf josevnz$

    OK, vamos a ver que tan difícil es de hacer en OSX. Lo primero que hice fué actualizar Python (2.5 -> 3.1.1) usando un paquete pre-compilado:

    auyan:sf josevnz$ /Library/Frameworks/Python.framework/Versions/3.1/bin/python3
    Python 3.1.1 (r311:74543, Aug 24 2009, 18:44:04)
    [GCC 4.0.1 (Apple Inc. build 5493)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.

    El script cvs2svn fué escrito en Python 2.5, no 3. Así que lo convertimos con un poco de ayuda:

    auyan:sf josevnz$ /Library/Frameworks/Python.framework/Versions/3.1/bin/2to3 -w ~/Desktop/cvs2svn-2.3.0/cvs2svn
    RefactoringTool: Skipping implicit fixer: buffer
    RefactoringTool: Skipping implicit fixer: idioms
    RefactoringTool: Skipping implicit fixer: set_literal
    RefactoringTool: Skipping implicit fixer: ws_comma
    RefactoringTool: Refactored /Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn
    --- /Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn (original)
    +++ /Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn (refactored)
    @@ -69,7 +69,7 @@

    try:
    svn_main(os.path.basename(sys.argv[0]), sys.argv[1:])
    -except FatalException, e:
    +except FatalException as e:
    sys.stderr.write(str(e) + '\n')
    sys.exit(1)

    RefactoringTool: Files that were modified:
    RefactoringTool: /Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn

    Más las librerías de cvs2svn:

    auyan:sf josevnz$ for file in `ls ~/Desktop/cvs2svn-2.3.0/cvs2svn_lib/*.py`; do /Library/Frameworks/Python.framework/Versions/3.1/bin/2to3 -w $file; done
    # Montón de paja omitida por brevedad :)

    Además de unos pequeños cambios en el código (las líneas que requieren edición tienen número por delante):


    1 #!/Library/Frameworks/Python.framework/Versions/3.1/bin/python3
    2 ##!/usr/bin/env python
    3 # (Be in -*- python -*- mode.)
    55 #if not ((2,4) < = version < (3,0)):
    56 # sys.stderr.write(
    57 # version_error + ' version %d.%d.%d.\n'
    58 # % (version[0], version[1], version[2],)
    59 # )
    60 # sys.stderr.write(version_advice)
    61 # sys.exit(1)

    Sin embargo el Python 3 es anal acerca de la mezcla de espacios y tabulación:

    ...
    TabError: inconsistent use of tabs and spaces in indentation

    Traté de arreglarlo rápidamente, pero lo que hice fué empeorar la situación:

    auyan:sf josevnz$ perl -p -i -e 's#\t# #g' /Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn_lib/*.py
    auyan:sf josevnz$ ~/Desktop/cvs2svn-2.3.0/cvs2svn --dumpfile=svndump .
    Traceback (most recent call last):
    File "/Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn", line 68, in <module>
    from cvs2svn_lib.main import svn_main
    File "/Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn_lib/main.py", line 30, in <module>
    from cvs2svn_lib.svn_run_options import SVNRunOptions
    File "/Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn_lib/svn_run_options.py", line 40, in <module>
    from cvs2svn_lib.svn_output_option import DumpfileOutputOption
    File "/Users/josevnz/Desktop/cvs2svn-2.3.0/cvs2svn_lib/svn_output_option.py", line 83
    cvsauthor = to_utf8(cvsauthor)
    ^
    IndentationError: unindent does not match any outer indentation level

    No me jodan. Demasiado tratar de que este script funcione con Python 3, ¿será más fácil instalar las librerías faltantes y que Python 2.5 las reconozca?

    Me decidí entonces de usar las librerías compatibles con DBM. Nos las bajamos de Oracle y compilamos:


    auyan:db-4.8.26 josevnz$ pwd
    /Users/josevnz/Desktop/db-4.8.26
    auyan:db-4.8.26 josevnz$ ./dist/configure && make
    auyan:db-4.8.26 josevnz$ cd build_unix/
    auyan:build_unix josevnz$ ../dist/configure && make && make install && export DYLD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.8/lib:$DYLD_LIBRARY_PATH

    Instalé entonces capa de Python que enlaza con DBM, bsddb3 4.8.1:

    auyan:bsddb3-4.8.1 josevnz$ pwd
    /Users/josevnz/Downloads/bsddb3-4.8.1
    auyan:bsddb3-4.8.1 josevnz$ python setup.py build

    Y como todo salió bien:

    sudo python setup.py install

    Pero ¿funcionará ahora?:


    auyan:sf josevnz$ ~/Downloads/cvs2svn-2.3.0/cvs2svn --dumpfile=svndump .
    # Omitiendo salida del comando....
    cvs2svn Statistics:
    ------------------
    Total CVS Files: 362
    Total CVS Revisions: 603
    Total CVS Branches: 0
    Total CVS Tags: 0
    Total Unique Tags: 0
    Total Unique Branches: 0
    CVS Repos Size in KB: 7377
    Total SVN Commits: 228
    First Revision Date: Thu Jan 13 16:10:27 2005
    Last Revision Date: Sat Jul 18 23:49:03 2009
    ------------------
    Timings (seconds):
    ------------------
    2.132 pass1 CollectRevsPass
    0.063 pass2 CleanMetadataPass
    0.009 pass3 CollateSymbolsPass
    0.163 pass4 FilterSymbolsPass
    0.017 pass5 SortRevisionSummaryPass
    0.031 pass6 SortSymbolSummaryPass
    0.089 pass7 InitializeChangesetsPass
    0.095 pass8 BreakRevisionChangesetCyclesPass
    0.092 pass9 RevisionTopologicalSortPass
    0.031 pass10 BreakSymbolChangesetCyclesPass
    0.080 pass11 BreakAllChangesetCyclesPass
    0.062 pass12 TopologicalSortPass
    0.169 pass13 CreateRevsPass
    0.016 pass14 SortSymbolsPass
    0.009 pass15 IndexSymbolsPass
    1.075 pass16 OutputPass
    4.134 total

    ¡Exito! :D

  • Importar el código de nuevo en SVN:

    Ahora no queda otra más que tratar de importar el archivo que fué creado en el paso anterior:

    auyan:sf josevnz$ ls -l svndump
    -rw-r--r-- 1 josevnz josevnz 8600150 Dec 25 20:53 svndump
    gzip svndump

    SF.net tiene una consola especial para estos casos. En este caso cree mi nueva sesión y me dispuse a trabajar:

    auyan:~ josevnz$ ssh -t josevnz,elangelnegro@shell.sourceforge.net create
    The authenticity of host 'shell.sourceforge.net (216.34.181.119)' can't be established.
    RSA key fingerprint is b4:c5:6c:36:f7:ad:2c:23:52:e1:84:3e:77:61:5d:59.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'shell.sourceforge.net,216.34.181.119' (RSA) to the list of known hosts.
    josevnz,elangelnegro@shell.sourceforge.net's password:

    Requesting a new shell for "josevnz" and waiting for it to start.
    queued... creating... starting...
    This is an interactive shell created for user josevnz,elangelnegro.
    Use the "timeleft" command to see how much time remains before shutdown.
    Use the "shutdown" command to destroy the shell before the time limit.
    For path information and login help, type "sf-help".

    [josevnz@shell-23008 ~]$
    [josevnz@shell-23008 ~]$ timeleft
    Time remaining before shutdown: 239 minutes.

    Subiendo el código:

    auyan:sf josevnz$ rsync -aiv svndump.gz josevnz,elangelnegro@web.sourceforge.net:htdocs
    josevnz,elangelnegro@web.sourceforge.net's password:
    building file list ... done

    sent 6067785 bytes received 42 bytes 49132.20 bytes/sec
    total size is 6066914 speedup is 1.00

    Y finalmente el proceso de importación en varios pasos:

    [josevnz@shell-23008 ~]$ adminrepo --checkout svn
    Lock and checkout the svn repository for elangelnegro? [ny] y
    Repository locked -- starting checkout copy.
    ...

    [josevnz@shell-23008 ~]$ ls -l /home/groups/e/el/elangelnegro/htdocs/svndump.gz
    -rw-rw-r-- 1 josevnz elangelnegro 6066914 Dec 26 01:53 /home/groups/e/el/elangelnegro/htdocs/svndump.gz
    [josevnz@shell-23008 ~]$ gunzip /home/groups/e/el/elangelnegro/htdocs/svndump.gz
    [josevnz@shell-23008 ~]$ svnadmin load /svnroot/elangelnegro < /home/groups/e/el/elangelnegro/htdocs/svndump
    ....
    ------- Committed revision 227 >>>

    < << Started new transaction, based on original revision 228
    * editing path : trunk/src/java/main/com/kodegeek/blog/twitter/TwitterPing.java ... done.
    [josevnz@shell-23008 ~]$ adminrepo --save svn

  • Desactivar el soporte de CVS para el proyecto

    Primero verifiqué que podía acceder el nuevo repositorio:

    svn co https://elangelnegro.svn.sourceforge.net/svnroot/elangelnegro elangelnegro

    Y después de eso desactive el acceso a CVS.

Así que de ahora en adelante el código está disponible usando SVN en la siguiente ubicación:

  • svn co https://elangelnegro.svn.sourceforge.net/svnroot/elangelnegro elangelnegro

¡Que lo disfruten!

java, kodegeek, opensource, programación

Regalos del 25 de Diciembre

Viernes, 25 de diciembre de 2009

Como siempre lo más importante es la salud y la familia, gracias a Dios eso está bien. En lo económico este año sobrevivimos una de las peores recesiones en los Estados Unidos, en una sola pieza.

En fin, tengo muchas cosas por las cuales debo estar agradecido; Sin embargo y como siempre los voy a desviar un poco y en vez de hablar de cosas más trascendentales los voy a entretener un poco con frivolidades ;)

¿Listo? Muy bien, aquí va mi lista informal de los regalos de este 25 de Diciembre, estilo KodeGeek:

Aumente su conocimiento con la Enciclopedia de Halo

Halo Encyclopedia
Mención honorifica a Hengel y Beata por este regalo

En serio. ¿Qué Geek no sabe que es la raza Covenant? o ¿Cual es el modelo de la armadura de Master Chief?. Si usted no quiere ser la vergüenza de la próxima reunión con sus amigos entonces este es el libro que debe tener a la mano. Es un precioso manual ilustrado sobre la mitología de Halo que incluye armamentos, lugares e historia.

Por otro lado no recomiendo que sus amigas sepan que usted lo tiene ya que puede causar que su solteria se prolongue por unos 40 años más :) (Si, es un repelente de novias seguro).

Batman, en cualquiera de sus versiones

Lego Batman
Usted puede ser mi mejor amigo si me lo da de regalo

Es Batman. Esta hecho de Legos. No hay que decir más nada…

Está bien, nadie me lo regalo. Pero si usted quiere ser mi amigo, sólo tiene que pagar $30K por esta belleza en Fao. Si, contácteme por correo para darles la dirección de mi casa para el envió.

NOOK, O la invasión de Linux y Android

NOOK is coming my way
¡Veronica es simplemente la mejor!. Nook ya viene, mis días de cargar libros en el tren están contados

A ver, por donde comenzamos a hablar del Nook:

  • Puedo prestar mis libros a mis amigos
  • Usa Java y Linux, plataforma Android
  • Wi-fi, además de super integración con la tienda de Barnes & Noble
  • Se puede modificar. Hay detalles abundantes de como hacerlo

Lo siento Amazon, pero creo que Kindle la va a tener cuesta arriba. Por los momentos me toca esperar, pero ya les escribiré un articulo en cuando tenga el mio a la mano.

Bolso de mano con motivos

Handbag
Mi bolso de mano seguro dará de que hablar

Simplemente original. No creo que pueda llevarlo al trabajo (ya saben, siempre hay alguien que pueda sentirse ofendido :)) pero seguro le conseguiré uso para llevar mis documentos y periquitos electrónicos por allí.

¿Y ustedes que recibieron de regalo?

De verdad espero que hayan recibido cosas de su agrado y que estas navidades las pasen super bien; Los invito a comentar como siempre y a compartir su lista de regalos ;)

kodegeek

Avatar: ¿Vale la pena?

Domingo, 20 de diciembre de 2009

Yo tenia serias dudas cuando vi los cortos en YouTube sobre Avatar. En particular la historia es la de Pocahontas pero contada con extraterrestres azules y los humanos son los malos.

¿Vale la pena verla entonces?

Debo empezar admitiendo que estaba equivocado sobre los efectos especiales. La tecnología es grandiosa y la única forma de apreciar esta película es verla en 3D (Si la ven, recuerden poner atención a los gestos faciales de los actores. Lo otro es la atención a los detalles). La actuación es decente (sobre todo Sigourney Weaver en un papel que evoca a sus series de Alien) y la acción es fluida, no recuerdo un sólo momento aburrido (logré aguantar mis ganas de ir al baño es las 2 horas y pico que dura la aventura).

En pocas palabras es la mejor historia de ciencia ficción del 2009, no veo como no va a ganar premios el año que viene. Si tiene que escoger una película este año para ver entonces ya sabe cual debe ser.

En serio, de verdad vale la pena :D

Ahora los dejo mientras me voy a dormir pensando en extraterrestres azules y robots de combate gigantes…

movies

%d personas les gusta esto: