lunes, 25 de junio de 2012

Usando la API de twitter con PERL y NET::Twitter parte 2 "Home TimeLine"

Continuando con el uso de la API de Twitter usando PERL ahora veremos como obtener tu Timeline.

Continuando con el script anterior, vamos a agregar un metodo para llamar e imprimir el time line (los ultimos 20 tuits de nuestro timeline)

Nota: elimine los comentarios del script anterior, se pueden revisar en el código del post anterior.

y recuerden en la página de cpan, esta la documentación de la biblioteca y sus metodos: http://search.cpan.org/dist/Net-Twitter/lib/Net/Twitter.pod


!#/usr/bin/perl
use strict;
use Data::Dumper;
use Net::Twitter;

my $youraccesstoken='';    
my $youraccesstokensecret='';   

my $twitterconsumer = 'SdXKgscRc82fcWkzKn3IA';
my $twitterconsumersecret = 'ZLZyzIVaTgXqdMmvszBRI64zWIzIRRa525y8gzaIBA';

my $nt = Net::Twitter->new(
 traits          => ['API::REST', 'OAuth'],
 consumer_key    => $twitterconsumer,
 consumer_secret => $twitterconsumersecret,
);

if ($youraccesstoken && $youraccesstokensecret) {
 $nt->access_token($twitteraccesstoken);
 $nt->access_token_secret($twitteraccesstokensecret);
}

unless ( $nt->authorized ) {
 print "Authorize this app at ", $nt->get_authorization_url, " and enter the PIN#\n";
 
 my $pin =; # wait for input
 chomp $pin;
 
 my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin);

 print 'Id Usuario: '.$user_id'."\r\n".'Screen name: '.$screen_name."\r\n";
print 'Access token: '.$access_token."\r\n".'Access Token Secret: '.$access_token_secret."\r\n";

}

get_timeline();

sub get_timeline {

my $timeline = $nt->home_timeline();#Este metodo regresa un arrayref

my ($x,$y);

# recorremos el array
    foreach $x(0..@{$timeline-1}){
        foreach $y(0..@{$timeline[$x]}-1)
        {
            print $timeline[$x][$y]->{user}->{screen_name}.":"."\n";
            print $timeline[$x][$y]->{text}."\n";
            print "====================================\n";
        }

        }
#para ver el objeto "timeline" y comprender un poco mas como es que esta armado
#podemos usar Dumper para verlo.

print Dumper($timeline);


}

miércoles, 20 de junio de 2012

Usando la API de twitter con PERL y NET::Twitter parte 1 "Autentificación"

Por curiosidad hace poco comencé a jugar con la API de twitter y lo hice con JAVA y la biblioteca twitter4j, pero solo es para sacarme el polvo en JAVA y ver como funciona twitter.

En mi trabajo comenzamos un proyecto web, que incluye a twitter, y algo de lo que ya hice en java me funcionó para el proyecto, solo que estamos utilizando PERL para ello. Tan fácil como desde CPAN instalar la biblioteca Net::Twitter.
En CPAN esta documentada, los métodos que usa pero a diferencia de  JAVA hay menos ayuda  ejemplos en la web de como usarla. Así que voy a estar subiendo algunos ejemplos básicos de su uso.
Cabe aclarar que no soy un "guru" en perl, de hecho soy bastante nuevo así que me ha servido de practica. Son libres de corregir, criticar y mejorar y compartir la mejora ;D

Lo primero, la autentificación, hay un ejemplo en la pagina de cpan:

!#/usr/bin/perl


use strict;
use Data::Dumper;
use Net::Twitter;

my $youraccesstoken='';     #esta variable contendra el Token Access para autentificarte en twitter, primero la declaramos vacía, después de autentificar tendrá un valor y lo mejor es guardarlo para su uso posterior
my $youraccesstokensecret='';     #esta variable como la anterior una vez obtenido su valor, lo mejor es guardarla

my $twitterconsumer = 'SdXKgscRc82fcWkzKn3IA'; #Estos valores los obtienes al registrar tu aplicación en la página de http://dev.twitter.com
my $twitterconsumersecret = 'ZLZyzIVaTgXqdMmvszBRI64zWIzIRRa525y8gzaIBA';

my $nt = Net::Twitter->new(
 traits          => ['API::REST', 'OAuth'],
 consumer_key    => $twitterconsumer,
 consumer_secret => $twitterconsumersecret,
);

#validamos si el Token acces y el Token Access Secret tienen valores

if ($youraccesstoken && $youraccesstokensecret) {
 $nt->access_token($twitteraccesstoken);
 $nt->access_token_secret($twitteraccesstokensecret);
}

#validamos si los datos de acceso son correctos si no lo son imprime la URl para autorizar la aplicación

unless ( $nt->authorized ) {
 print "Authorize this app at ", $nt->get_authorization_url, " and enter the PIN#\n";
 #esperamos por entrada el PIN que dio la página
 my $pin =; # wait for input
 chomp $pin;
 
        #Aquí obtenemos verificamos el PIN y si todo esta bien, nos regresa una lista con el Access token, el access token secret, el id del usuario y su screen name
 my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin);

        print 'Id Usuario: '.$user_id'."\r\n".'Screen name: '.$screen_name."\r\n";
 print 'Access token: '.$access_token."\r\n".'Access Token Secret: '.$access_token_secret."\r\n";

 exit();

}
Nota: Si usan UBUNTU, las librerías también las pueden encontrar en los repositorios de Ubuntu, como "libnet-twitter-perl" e instalarla desde synaptic  o un "apt-get install".

lunes, 14 de mayo de 2012

Restaurando la partición SWAP en UBUNTU 12.04

El domingo por la mañana sin nada que hacer, decidí probar Archbang una distro basada en ArchLinux, basicamente un ArchLinux con OpenBox, cabe decir que mi netbook vuela con esta distro, muy liviana y estable y trabajó "Out Of The Box" mas tarde pondré una guía de lo que realicé para instalarla y lo posterior a la instalación. Bueno retomando el tema, es que al momento de instalar Archbang formatee la partición SWAP y cuando inicie Ubuntu marcaba un error al inicio al no encontrar la partición SWAP, ademas de haber deshabilitado la hibernación. 
 Lo que pasó fue que al formatear la partición SWAP cambio el UUID y al tratar de montarla no encontraba el UUID anterior. La solución es obtener el nuevo UUID y editar fstab, para ello tecleamos lo siguiente en la terminal:

$ blkid

*Esto mostrará los UUID de las particiones y mostrará algo como lo siguiente*


/dev/sda3: UUID="425e41ab-d585-4adb-a014-589f9224de9b" TYPE="ext4" 
/dev/sda5: UUID="df09fa38-6e0f-4c08-9b43-35014e1c8220" TYPE="swap" 
/dev/sda6: UUID="6278d7a0-d59b-481e-ba77-21b517294580" TYPE="ext4" 


copiamos el UUID de la partición SWAP y editamos fstab

$ sudo nano /etc/fstab

buscamos la sección de la partición swap y cambiamos el UUID anterior por el nuevo


# swap was on /dev/sda5 during installation
UUID=df09fa38-6e0f-4c08-9b43-35014e1c8220 none            swap    sw              0       0

y guardamos los cambios.

si por alguna razón sigue sin detectar la partición swap

podemos teclear:

$ sudo swapon -U df09fa38-6e0f-4c08-9b43-35014e1c8220

para indicarle que usaremos esa partición para swap. Con esto se habilitará la SWAP y la hibernación de vuelta, pero me di cuenta que al hibernar no estaba guardando el estado del sistema, al arrancar no cargaba el estado del sistema como lo deje.

Lo que hay que hacer es editar el archivo "resume" en "/etc/initramfs-tools/conf.d"

*respaldamos el archivo "resume* 
$ cp /etc/initramfs-tools/conf.d/resume /home/tuusuario/resume.back

$ sudo nano /etc/initramfs-tools/conf.d/resume


y editamos la linea con el nuevo UUID


RESUME=UUID=df09fa38-6e0f-4c08-9b43-35014e1c8220

y guardamos, después ejecutamos:

$ sudo update-initramfs -u


y con esto tendremos de vuelta la hibernación correcta.



viernes, 11 de mayo de 2012

Creando WINEPREFIX para instalar aplicaciones con WINE UBUNTU 12.04

En el post anterior Ejecutando aplicaciones de Windows con WINE, vimos como ejecutar aplicaciones con WINE y como ejecutarlas para que se defina el directorio de trabajo, y mencione a WINEPREFIX.
WINEPREFIX es una variable de entorno que determina con que carpeta WINE trabajará. Bueno estos "WINEPREFIX" se pueden utilizar para manejar de mejor forma las aplicaciones de windows instaladas con WINE, esto nos permite evitar mezclar instalaciones y por ende poder desinstalar la aplicación con solo borrar el directorio donde se creo el WINEPREFIX.

martes, 8 de mayo de 2012

Netbeans 7.1.2. problemas en menu con Ubuntu 12.04

Actualice mi S.O. de Ubuntu 11.10 a Ubuntu 12.04 *Planeo aguantar con el hasta que termine su soporte* y una de las aplicaciones que actualice fue el IDE de Oracle, Netbeans, de su versión 7.1.1 a 7.1.2 y de usar el JDK 6 pase al 7.
El problema surgió al querer comenzar un proyecto nuevo, la ventana de dialogo al crear un proyecto nuevo, se mostraba vacía y solo me permitía "cancelar".



Después de leer en los foros y postear esta duda sin respuesta, vi que usuarios estaban teniendo problemas con los menús de Netbeans en Ubuntu 12.04, así que decidí probar la siguiente solución:

http://hanynowsky.wordpress.com/2012/04/27/netbeans-ide-look-feel-under-ubuntu-12-04/

En resumen, el problema parece ser con el "Look and feel (L&F)" de Java, que utiliza para Linux el L&F GTK, la solución es cambiar este L&F por el "nativo" llamado "Metal"

Para esto, hay que editar el siguiente archivo: netbeans.conf


Este generalmente se encuentra en la siguiente dirección:

/usr/local/netbeans-7.1.2/etc/netbeans.conf


$ gksudo gedit /usr/local/netbeans-7.1.2/etc/netbeans.conf


y añadimos la siguiente linea a las opciones de netbeans:

-J-Dswing.aatext=true -J-Dawt.useSystemAAFontSettings=lcd --laf Metal
 
y con esto, mostrará el L&F Metal


Y se solucionará por lo pronto este problema.

miércoles, 18 de abril de 2012

Ejecutando aplicaciones de Windows con WINE

Como es bien sabido, WINE permite ejecutar ciertas aplicaciones nativas de Windows en Linux, mi problema se presentó cuando al tratar de ejecutar una aplicación, para ser mas exacto un juego, el emulador NeoRage para Windows, si no me encontraba en el directorio donde se encuentra el programa, no puede leer los archivos necesarios para ejecutarse, pero en cambio si desde la terminal me posicionaba en el directorio y ejecutaba el programa se ejecutaba sin problemas.

$ cd /home/jaxnet/NeoGeo
$ wine neorage.exe

-funciona bien-

pero si el caso es que desde mi directorio "home" lo ejecuto no lee los archivos.

Entonces leyendo en la wiki de WINE di con la solución:

si ejecutamos desde un lanzador creado por nosotros en el escritorio o desde otro directorio diferente a donde este el programa, hay que usar:

$ wine start /Unix "/home/jaxnet/NeoGeo/neorage.exe" 

con esto WINE define el directorio de trabajo para el programa

O si tenemos el programa en otro WINEPREFIX 

$ WINEPREFIX="$HOME/NeoGeo" wine start "C:\\NeoGeo\\neorage.exe" 

en la próxima entrada escribiré como crear  un "WINEPREFIX" para aplicaciones, esto permite un mejor manejo a la hora de instalar y configurar programas.


Aquí una imagen del lanzador que hice para la aplicación 

viernes, 16 de marzo de 2012

Problemas para accesar a cuenta de GMAIL desde ThunderBird

Hoy por la mañana al abrir mi cliente de correo thunderbird, marcó un error al cargar la bandeja de entrada de mi cuenta de correo de Gmail, con una notificación como la siguiente:

Alerta de la cuenta max.correo@gmail.com: Web Login required: http://support.google.com/mail/bin/answer.py?hl=es&answer=78754 (failure)

y una ventana de error mostrando el siguiente mensaje:

La identificación con el servidor imap.googlemail.com es incorrecta

Introduzca nueva contraseña                                              Cancelar Reintentar

Bien, después de leer de que se trata el error, este se puede deber si configuras tu cliente de correo para comprobar si tienes nuevos correos con demasiada frecuencia.

para corregir el problema, basta con entrar a la página que se muestra en la notificación


http://support.google.com/mail/bin/answer.py?hl=es&answer=78754

Y dar clic en el enlace que dice "desbloquear CAPTCHA"

Con eso bastó para resolver mi problema.