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

martes, 18 de noviembre de 2008

Google Apps Gets a 99.9% Guarantee

David Gerard passes along a posting on Google's official blog announcing that they have extended the three-nines SLA for the Premier Edition of Google Apps from Gmail alone to also cover the Calendar, Docs, Sites, and Google Talk services. 99.9% uptime translates to 45 minutes a month of downtime, and the blog post puts this in context with Gmail's historical reliability, which has been between three and four times as good over the last year (10-15 min./mo.). It also claims, based on research by an outside group, that Gmail's historical reliability beats that of in-house hosted solutions such as Groupwise and Exchange, on average. Reader Ian Lamont adds an article in The Standard that digs down into the details of the SLA, revealing for instance that outages of less than 10 minutes aren't counted against the monthly 45 minutes.

http://tech.slashdot.org/article.pl?sid=08/11/02/2222226

viernes, 14 de noviembre de 2008

Comando linux para eliminar archivos que cumplan una regex

Ejemplo, eliminar todos los archivos (incluyendo subdirectorios) que contengan la palabra "200":

find . -regex ".*200.*" -exec rm {} \;

Nota: {} es tomado como el nombre del archivo encontrado por find.

Comando linux para contar cada tipo de linea de un archivo

Si tengo un archivo archivo con lineas iguales agrupadas (lo que se puede crear con sort), como el sgte contenido:

hola como estas
hola como estas
hola como estas
Hola, como has estado?
Hola, como has estado?
Yo estoy bien
Yo estoy bien
Yo estoy bien
Yo estoy bien
Yo estoy bien

y quiero un conteo de cada tipo de línea, como el sgte ejemplo:
hola como estas => 3
Hola, como has estado? => 2
Yo estoy bien => 5


Uso:

cat archivoConLineasIgualesAgrupadas.txt | awk -F'jasdjfasdfsd' 'BEGIN {ultima="";contador=0;} {if ($1 == ultima) {contador++;} else { printf ("%s => %i\n",ultima,contador);contador=1;ultima=$1; }} END { printf ("%s => %i\n",ultima,contador);contador=1;ultima=$1; }'> resumen.txt

lunes, 10 de noviembre de 2008

xrdp: remote desktop server para linux

Based on the work of rdesktop, xrdp uses the remote desktop protocol to present a GUI to the user.
Unlike Windows NT/2000/2003/2008 server, xrdp will not display a Windows desktop but an X window desktop to the user.


http://xrdp.sourceforge.net/

Google Chart API

The Google Chart API lets you dynamically generate charts. To see the Chart API in action, open up a browser window and copy the following URL into it:

http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World

Press the Enter or Return key and - presto! - you should see the following image:

Yellow pie chart


http://code.google.com/apis/chart/

miércoles, 5 de noviembre de 2008

Evitar escribir passwords ssh con sshpass

No sólo se puede con putty en windows, también en linux con sshpass.

En ubuntu se instala como se intuiría:
sudo apt-get install sshpass

Entonces, para crear una conexión ssh con la password (ej: dIjfl3nSS) en la línea de comandos:

sshpass -p dIjfl3nSS ssh algunhost.cl -lpablo

Gnome Launch Box en xubuntu

El katapult o launchy o quicksilver para gnome, llamado Gnome Launch Box funciona en xubuntu.

Instalación:
sudo apt-get install gnome-launch-box

Configurar el clásico space:
"Xfce Menu"-> Settings -> Keyboard Settings, hacer una asociación entre gnome-launch-box y gnome-launch-box.

Logout, login en el Xfce, tipear space y algo como "spread" para que encuentre el SpreadSheet de OpenOffice.

Probado en
Xubuntu 7.04 "Feisty Fawn"