miércoles, 14 de enero de 2009

Accessing GET-parameters with Restlet

Today, I needed to read HTTP-GET parameters in a restlet, e.g. http://localhost/restlet?someParam=foo, and came up with:
request.getResourceRef().getQueryAsForm().getFirstValue("someParam");

Referencia aqui

How to export environment variables for a java Runtime.exec in Linux

Usar el comando linux "env", luego de él van las variables a exportar y al final el comando que se quiere ejecutar dentro del nuevo environment.

Ej: para ejecutar test.sh con la variable LOG_DIR=/home/pablo/logs:

env LOG_DIR=/home/pablo/logs /home/pablo/test.sh

lunes, 29 de diciembre de 2008

levantar IP que apunte a la loopback interface en ubuntu

Comandos mágicos para que las IPs 10.1.0.2 y 10.1.0.3 apunten a la loopback interface:

sudo ifconfig lo up
sudo ifconfig lo 127.0.0.1
sudo ifconfig lo:0 10.1.0.2
sudo ifconfig lo:1 10.1.0.3

sudo route add -host 127.0.0.1 lo
sudo route add -host 10.1.0.2 lo:0
sudo route add -host 10.1.0.3 lo:1

y así sucesivamente para agregar las IPs que se quiera

miércoles, 10 de diciembre de 2008

Cuidado con acceder a BD dentro un rowhandler ibatis

IDbConnection documentation says:

Note that while a DataReader is open, the Connection is in use exclusively by that DataReader. You will not be able to execute any commands for the Connection, including creating another DataReader, until the original DataReader is closed

jueves, 27 de noviembre de 2008

variable++ o ++variable?

Por fin me topé con un caso real en que cometí el error de usar variable++ sin pensar en las fatales consecuencias.

Lo siguiente deja siempre a c con el valor 0:

int c = 0;
for (int i = 0;true; i++) {
c =(c++)%1000;
...
}

Eso porque c++ quiere decir que justo luego de evaluar la expresión de la derecha, c debe incrementarse en 1. Entonces, la expresión se evalúa en cero, c queda en 1, pero como a c luego se le asigna el valor de la expresión, que es cero, c queda en cero.

Solución: ++c.

sábado, 22 de noviembre de 2008

Cómo dejar a Tuna como demonio en init.d

Copiar o mover el archivo:
dist/tuna_in_init.d
en la ruta:
/etc/init.d/tuna

Tiene la siguiente estructura:

pablo@pablo-desktop:~$ more /etc/init.d/tuna

#!/bin/sh
#
# chkconfig: - 90 90

### BEGIN INIT INFO
# Provides: tuna
# Description: SSH-Tunnel Administrator
### END INIT INFO

case "$1" in
'start')
COMANDO PARA INICIAR
;;
'stop')
COMANDO PARA DETENER
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

Finalmente, avisarle al sistema que hay un nuevo script en init.d:

pablo@pablo-desktop:~$ sudo update-rc.d tuna defaults

Opcionalmente a eso, se puede crear un link simbólico en:
/etc/rc6.d/K90tuna que apunte a
/etc/init.d/tuna

jueves, 20 de noviembre de 2008

Cómo setear encoding ISO a sitio web alojado en apache UTF8

Simplemente escribir en la raiz del sitio un .htaccess:

[pablo@pc mipaginaweb]# more .htaccess
AddDefaultCharset ISO-8859-1