Archivo

Archivo para la categoría ‘kodegeek’

Venezuela prohibe juegos de video violentos: El estado como niñera

Jueves, 11 de Marzo de 2010

Hoy terminé de jugar ‘Call of Duty: Modern Warfare 2‘. El juego tiene los mejores gráficos que he visto hasta la fecha en el XBOX 360, la acción te sumerge de cabeza en la historia y simplemente no puedes dejar de jugar hasta que terminas.

El juego es increíblemente violento, cargado de estereotipos (los Musulmanes pobres subversivos, los rusos bélicos e invasores). En una de las escenas uno participa en una masacre en un aeropuerto, en contra de civiles indefensos para luego ser traicionado y ejecutado en el sitio (nota, el juego ofrece una opción para saltar estas misiones porque estan claros que son ofensivas aunque por otro lado si es asi entonces ¿porqué fueron incluidas?).

¿Es un mal juego? Hay una linea muy delgada aquí. A mi me pareció entretenido, lo renté (no lo compré) y pienso moverme al siguiente juego. Yo estoy claro que hay cosas equivocadas con el juego pero al mismo tiempo me provocó ponerme en los zapatos de estos soldados ficticios, jugar al agente de misiones especiales (similar a James Bond).

Es por eso que los juegos tienen una categoría por edad en los Estados Unidos. Este juego es catalogado como “Apto para adultos” (Mature) y se supone que usted es mayor de edad para comprarlo. La libertad de expresión le permite a usted no comprar el juego y decidir si sus hijos pueden jugarlo o no.

En los Estados Unidos la gente se queja con el congreso y cuando hay juegos que se pasan de la raya le se pasan leyes para tener mejor control. La gente no compra estos juegos, los critican y estos pierden valor en el mercado, lo cual le da un escarmiento a las compañías que abusan de la libertad de expresión.

No es un sistema perfecto, pero al menos la gente tiene la última palabra.

¿Que se hace en Venezuela? En Venezuela se prohíben y se ofrece cárcel a quienes los vendan. Sin preguntarle a nadie.

Esta medida que tiene poco tiempo de haber sido implantada en Venezuela y si usted sabe utilizar Google (¿qué, usted utiliza otra cosa? :) ) seguro encontrará sitios como este reseñando la medida.

Esta ley en mi opinión no resuelva problemas serios y no ofrece una protección real en contra de los juegos violentos. En mi opinión:

  • Le quita poder de decisión al consumidor. Es responsabilidad de los padres el educar a sus hijos y decirles que es correcto. Si bien hay muchos idiotas que prefieren que tomen decisiones por ellos todavía existen los padres capacitados que puede decidir por si mismos lo que es mejor para sus hijos
  • La línea de lo que es violento y lo que no es muy sutil en muchos casos. Sin un estándar esta medida se convertirá en una fuente de abusos y discriminación
  • ¿Quien se va a a segurar que estas leyes se cumplan, cuando no hay un reglamento claro?¿cuanto va a costar eso? ¿quien va a pagar para que este sistema se mantenga?

Me parece que es un arreglo a medias o peor aún un intento poco sutil de tapar las verdaderas razones de la inseguridad en Venezuela. Si bien es cierto que hay mucha basura en los vídeo juegos de hoy en día también hay que reconocer que el consumidor es inteligente y que sabe lo que hay que comprarle a un niño. El estado Venezolano tiene mejores cosas que hacer (como solucionar la creciente crisis energética) que andar preocupándose de lo que juegan unos pocos privilegiados en el país (que alguien me corrija y me diga si una vídeo consola es barata en Venezuela en donde los importadores le ganan hasta 2 veces más el precio al hardware).

La gente no es estúpida y puede decidir por si misma si un producto es bueno o malo. El estado no debe decidir por ellos, en todo caso debe proporcionar herramienta para castigar a quienes tratan de tomar ventaja del sistema.

Bueno, no me voy a extender más. Voy a ir a jugar otro juego violento, Halo ODST el cual no dejo que lo vea mi hijo Sebastian por razones obvias :)

kodegeek, venezuela , ,

¿Amanda se vuelve una solución comercial?

Sábado, 27 de Febrero de 2010

Hoy leyendo mis correos de la lista de Amanda (a la cual estoy metido más por razones sentimentales que otra cosa) me conseguí con esto:

Greetings;

I have taken note that there have been no new snapshots made available in a
bit over 3 weeks now, and other than the downloads page, all of the rest of
the new web pages point to paid support.

What is the future direction of amanda?

No es una sorpresa, yo ya habia visto algo de esto en Community East con ZAmanda. Amanda es en mi opinión el mejor software de respaldo de código abierto que existe hoy en día y su evolución hacia software comercial con raíces de código abierto (como MySQL) es evolucionaría.

Yo realmente creo que el producto va a mejorar, sobre todo que ahora puede ser considerado una alternativa con soporte pago para las empresas (y definitivamente no creo que lo cierren).

java, kodegeek, linux, opensource , , ,

Kodegeek busca colaboradores para el blog

Lunes, 1 de Febrero de 2010

Kodegeek, uno de los blogs con más tiempo en la blogosfera Venezolana está buscando colaboradores para escribir artículos relacionados con tecnología. Puede ser de cualquier lenguaje de programación, análisis de tecnologías o de cualquier cosa relacionada con el mundo Geek. ¡Si estas interesado envíame tu curriculum y dime porque que quieres escribir en el blog!

La idea es darle más pluralidad al blog para que otras personas se beneficien con múltiples puntos de vista.

Puedes contactarme en la siguiente dirección: josevnz ‘at’ kodegeek.com, este es el momento perfecto para intercambiar ideas.

kodegeek, venezuela , ,

Aprendiendo JavaFX: Animaciones

Domingo, 24 de Enero de 2010

Más código del curso de JavaFX. Aún sigo retrazado, la entrega final es el 3 de Febrero pero aún tengo esperanzas de llegar a tiempo :) .

En este caso, estuve trabajando en la lección de animaciones; La idea es hacer que un par de tiburones se paseen por la pantalla de manera indefinida:

Animación de tiburones en JavaFX

Animación de tiburones en JavaFX

El código como siempre se lo pueden bajar desde la página de KodeGeek en Source Forge.

Las gracias a Sebastian (mi hijo de 3 años) ya que me dio una pista sobre como resolver el problema. Hasta que la animación no salió no se fué a jugar con sus juguetes :D

¡Que lo disfruten!

java, javafx, kodegeek, programación , ,

Aprendiendo JavaFX: GUI basics II

Domingo, 10 de Enero de 2010

Aqui les dejó el código de la tarea de esta sección del curso de JavaFX en JavaPassion . El resultado se ve como esto:

En este ejercicio el circulo se mueve en sentido contrario al cuadrado proporcionalmente (sólo en el eje X).

Que lo disfruten, pienso seguir agregando respuestas del curso (admito que estoy muy retrasado con respecto a la entrega final, pero no pienso rendirme :) )

java, javafx, kodegeek, opensource, programación , ,

Aprendiendo JavaFX en JavaPassion

Viernes, 8 de Enero de 2010

Este año me decidí a aprender cosas no relacionadas directamente con mi trabajo; En este caso estoy jugando con JavaFX, en particular haciendo el curso JavaFX de JavaPassion, dictado por Sang Shin.

El lenguaje se ve interesante, en particular el concepto de ‘binding’ es muy útil ya que todo el código del patron de Swing ‘listeners’ no es necesario.

Para la muestra, un ejercicio del curso en el cual nos piden hacer una vela usando las primitivas gráficas:


/*
* Main.fx
* Candle proyect
* Created on Jan 3, 2010, 12:51:42 PM
*/

package my_javafx_guibasics;

import javafx.scene.effect.Reflection;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.paint.LinearGradient;
import javafx.scene.paint.RadialGradient;
import javafx.scene.paint.Stop;
import javafx.scene.Scene;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

/**
* @author josevnz at kodegeek.com
* License: GPL
*/
var totalWidth = 250;
var xCenterForComponents = (totalWidth / 2) - 50; // Sightly aligned to the left
var candleWidth = 50;
var radiousYflame = 35;
var centerYflame = 50;

var flame = Ellipse {
centerX: bind xCenterForComponents
centerY: centerYflame
radiusX: candleWidth * 0.30
radiusY: radiousYflame
fill: RadialGradient {
centerY: 1.0
centerX: 0.5
stops: [
Stop {
offset: 0.2
color: Color.BLUE
},
Stop {
offset: 0.6
color: Color.RED
}
Stop {
offset: 0.9
color: Color.ORANGE
}
]
}
};

var candle = Rectangle {
height: 150
width: candleWidth
translateX: bind xCenterForComponents - (candleWidth /2)
translateY: (radiousYflame + centerYflame) - 4
fill: LinearGradient {
startX: 0.0,
startY: 0.0,
endX: 1.0,
endY: 0.0
stops: [
Stop {
offset: 0.0
color: Color.WHITE },
Stop {
offset: 1.0
color: Color.BLACK
}
]
}
stroke: Color.BLACK
};

var candlePiecesGrp = Group {

content: [
flame,
candle
]
effect: Reflection {
fraction: 0.9
topOpacity: 0.5
topOffset: 3
}
}

Stage {
title: "My JavaFX GUI Basis"
width: totalWidth
height: totalWidth * 2
scene: Scene {
content: candlePiecesGrp
}
}

Y el resultado
JavaFX candle

Pienso ir colocando el código de los ejercicios para quienes lo quieran bajar y jugar (listo para usar en NetBeans), todo GPL.

java, kodegeek

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

Stupid Zombie 1.1 ya fué liberado, quizas la última versión

Miércoles, 28 de Octubre de 2009

Hoy me tomé el día libre y decidí trabajar en el proyecto. Después de una demora de varios meses (en los cuales puse mis energías en otros proyectos personales) decidí liberar el código de la versión 1.1.

Debo decir que me costó mucho mantener el foco y quizas esta sea la última versión de StupidZombie por un buen tiempo; Es un proyecto que requiere tiempo y la herramienta se encuentra en un punto en donde hace lo que quiere y su principal cliente (yo) está contento como se comporta.

¿Habrán mejoras? ¿Nuevas versiones? No lo sé. He visto muchas descargas pero nadie ha escrito pidiendo cosas nuevas (hay interés sin embargo, incluso existe un proyecto derivado en Kenai.com el cual tiene un instalador nativo para Windows).

El proyecto es formal, tiene artefactos como documentación, sitio web. Sin embargo mantener esos artefactos no es divertido y toma tiempo el cual quiero usar para echar código, lo cual fué la idea inicial del proyecto. Así que sin ayuda adicional simplemente he decidido enfocarme en aprender nuevas cosas, de manera más informal (por ejemplo, no he tenido tiempo para jugar con mi teléfono con Android).

Asi que espero que disfruten esta versión. Pienso mantenerla en linea de manera indefinida, pero mi centro de atención definitivamente está en otro lado ;)

José.

java, kodegeek, opensource, programación

Enviando Tweets desde Java usando Twitter4J: ¿Como proteger consumerKey and consumerSecret?

Sábado, 18 de Julio de 2009

Bueno, mientras buscaba como agregar soporte para Facebook en StupidZombie, me conseguí con un problema interesante. Twitter4J requiere que definamos consumerKey y consumerSecret en el objeto Twitter en cada llamada.

Lo cual trae problemas, ya que si distribuimos esas claves entonces cualquiera puede hacerse pasar por nuestra aplicación (No es un problema en una aplicación web pero si en una de escritorio). El problema es peor si la aplicación es OpenSource porque entonces un Script-Kiddie puede hacer de las suyas sin mucho esfuerzo.

1
2
//twitter.setOAuthConsumer(consumerKey, consumerSecret);
accessToken = twitter.getOAuthAccessToken(token, tokenSecret, pin);

Lo que mas me preocupa es que autenticación de escritorio no funciona si no lo definimos. Por ejemplo, en el código que escribí la vez pasada esto es lo que ocurre si no incluimos la linea que esta comentada en el párrafo anterior:

1
2
3
Jul 18, 2009 10:18:49 PM com.kodegeek.blog.twitter.TwitterPing getAccessToken
INFO: Token=Ujq2pzpG7PwZVAJmGHjWrDiVzFz6wfmxzx9r85y7s TokenSecret=hBHVuOWdJPBe5r3iVXklSJuwawssjqoBslLHXhzlE Pin=4129706
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Neither user ID/password combination nor OAuth consumer key/secret combination supplied

Por ahora ando preguntándole al autor como resolver este asunto. La gente de Java API de FaceBook tiene una solución a este problema, lo hacen creando algo llamado ‘temporary secret

Actualización: El siguiente “hack” parece funcionar, pues el código de HttpClient revizar por NULL o cadenas de caracteres vacias:

1
2
3
		Twitter twitter = new Twitter();
		twitter.setOAuthConsumer(" ", " ");
		twitter.setOAuthAccessToken(accessToken);

internet, java, kodegeek, opensource, programación , , ,