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.
jueves, 27 de noviembre de 2008
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
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
[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
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.
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
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/
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:
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
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ásicospace:
"Xfce Menu"-> Settings -> Keyboard Settings, hacer una asociación entre gnome-launch-box y gnome-launch-box.
Logout, login en el Xfce, tipearspace y algo como "spread" para que encuentre el SpreadSheet de OpenOffice.
Probado en Xubuntu 7.04 "Feisty Fawn"
Instalación:
sudo apt-get install gnome-launch-box
Configurar el clásico
"Xfce Menu"-> Settings -> Keyboard Settings, hacer una asociación entre gnome-launch-box y gnome-launch-box.
Logout, login en el Xfce, tipear
Probado en
Suscribirse a:
Entradas (Atom)