Author Archives: stefano

Retomando Java gracias a Twitter

Hace tiempo que tenía ganas de aprender un nuevo lenguaje de programación pero me faltaba un incentivo. Ahora ya tengo el incentivo solo es cuestión de tiempo. El lenguaje elegido es Java

Mi primera aplicación en java (había hecho otras antes para la universidad pero ya no recuerdo como eran).

Esta pequeña aplicación utiliza la biblioteca Twitter4J la cual nos entrega una serie de clases y funciones para manejar de manera fácil el api de twitter.


import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;

import java.util.List;

public class Main {

public static void main(String[] args) {
if (args.length < 1) {
System.out.println("No TwitterID specified.");
System.exit(-1);
}
try {
Twitter twitter = new Twitter();
List<Status> messages = twitter.getUserTimeline(args[0]);
int i = 0;
for (Status message : messages) {
if( i <= 1) {
System.out.println("<@"+args[0]+"> "+message.getText()+ " date:"+message.getCreatedAt()+ "\n");
i++;
}
}
System.exit(0);
} catch (TwitterException te) {
System.out.println("Failed to get messages: " + te.getMessage());
System.exit( -1);
}
}
}

Con este simple código podemos obtener los últimos 5 mensajes de una cuenta de twitter.

¿Cómo saber que programa esta usando algun puerto determinado?

A cualquier sysadmin le ha tenido la necesidad de saber que programa esta utilizando algún puerto específico en linux. Una solución a este problema es el uso del comando lsof su uso es sencillo.


stefano@bender:~$ sudo lsof -i TCP:7070
COMMAND  PID     USER   FD   TYPE DEVICE SIZE NODE NAME
java    6000 openfire   64u  IPv6  20495       TCP *:7070 (LISTEN)

Como podrán ver nos informa que comando ejecutado es java y el usuario es openfire, con esta información ya podemos estar mas tranquilos.

Configurar bridge con ethernet en VMware Fusion

Para los que usen VMware fusion y necesiten hacer un bridge entre la ethernet y su máquina virtualizada esta es la solución.

Deben editar el siguiente archivo

/Library/Application\ Support/VMware\ Fusion/boot.sh

Buscar las siguientes lineas


# vmnet-bridge puts itself in background (daemon mode)
# Bridge to host network interface 'en0'.
#"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 en0
# Bridge to the primary host network interface (which can change over time).
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 ''

Y cambiarlas por


# vmnet-bridge puts itself in background (daemon mode)
# Bridge to host network interface 'en0'.
"$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 en0
# Bridge to the primary host network interface (which can change over time).
# "$LIBDIR/vmnet-bridge" -d /var/run/vmnet-bridge-vmnet0.pid vmnet0 ''

Y luego ejecutar


sudo /Library/Application\ Support/VMware\ Fusion/boot.sh --restart

Información extraida desde http://blog.braceta.com/vmware-fusion-airport-bridged-interface/

Mi propio logrotate

Tengo la siguiente estructura para almacenar los logs de los sitios que tiene el servidor sitio.tld/subdomino-<access|error>.log, necesitaba que cada uno los sitios tuviera su propio registro de estadisticas utilizando awstats, el problema es que no super como hacer que cada vez que se ejecutara el rotatelog se actualizaran todas las estadisticas para cada uno de los dominios. Por lo que decidí hacer mi pripio logrotate utilizando bash y cron, el script es el siguiente:


#! /bin/bash

/usr/lib/cgi-bin/awstats.pl -config=awstats -update

for i in $(ls /var/log/apache2/); do

cd /var/log/apache2/

if [ -d $i ]; then

#ejecutar awstats
cd /etc/awstats/
config=awstats.$i.conf
if [ -f $config ];then
/usr/lib/cgi-bin/awstats.pl -config=$i -update
fi

#ejecutar el rotate
cd /var/log/apache2/$i
for j in $(ls *.log); do
savelog -m777 -q $j

#reiniciar apache2
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
done
else
#archivos sueltos
savelog -m777 -q $i
if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
/etc/init.d/apache2 reload > /dev/null
fi
fi

done

luego con un cron corro el script cada X dias

El funcionamiento es el siguiente. Reviso el directorio /var/www buscando los directorios que existen ahi (recordemos que un directorio es un sitio.tld) luego compruebo que exista el archivo de configuracion para ese dominio, de ser así ejecuto el awstats y luego realizo el savelog y reinicio el apache para que cree el nuevo log.

Soy un n00b en bash, se que el script se puede optimizar, espero sus mejoras :)

Nuevo proyecto buscopension.com

Finalmente he terminado la version beta de mi proyecto buscopension.com (actualmente la url es http://beta.buscopension.com), la idea de este proyecto es facilitar la vida a las personas que están en busca de una pension (en un principio dentro de la ciudad de Concepción), el concepto es simple cada dueño de pension agrega su pension utilizando el mapa (previo registro) y luego todos los visitantes podrá buscar una pension utilizando el mapa o simplemente señalando cerca de que lugar quieren ubicar una pension.

Ahora solicito su ayuda para que revisen el sitio y reporten los errores y agregen las pensiones :)

Gracias a bilson por la ayuda durante la programación y a todos lo que reportaron errores (que no fueron pocos).

http://beta.buscopension.com