MarioDebian, mi devlog

Bitácora de un desarrollador newbie.

Descubriendo cuando estan a punto de estafarte

Ando encaprichado de un HTC Magic y he empezado buscando en segundamano.es. Ya había comprado alguna cosilla y nunca había tenido problemas.

Total que encuentro esta oferta: Htc magic a estrenar, [captura de pantalla por si lo borran]

¿Cómo me dí cuenta?

  1. Mosquea que el timezone de su correo sea -700 diciendo que vive en Huesca.
  2. Mirando las cabeceras del mensaje, (su correo es yahoo) se ve la Ip desde donde accedió al webmail:
    	Received: from [93.112.215.238]
    	by web111909.mail.gq1.yahoo.com via HTTP;
    	
    whois: inetnum: 93.112.0.0 - 93.112.255.255 netname: TELEMOBIL-SA descr: Telemobil S.A. descr: Calea Bucuresti, nr. 2B bis, descr: Balotesti, Jud Ilfov, Romania country: ro
  3. Hizo una rebaja sin pedirla.
  4. La forma de pago era un poco rara... Western Union y una empresa de transportes llamada delivery-europa.eu, siendo el destinatario Rumano.

Me ha faltado muy poco para picar, pero una búsqueda de la confianza en western union y las ventas en segunda mano me han dado 2 buenas pistas: [1] y [2].

 

Pues blanco y en botella como se suele decir. Ya lo he denunciado en segundamano.es. A todo esto sigo interesado en comprar un HTC Magic (o Hero).





Sistemas de control de versiones en la vida real

Los sistemas de control de versiones no son ninguna novedad (CVS, SVN, GIT, Mercurial...) lo que si es novedad es empezar a usarlos en sitios que hace unos años ni siquiera se hubieran contemplado.

Tenía ganas de hablar sobre este tema pero me acaba de convencer un bug que acabo de recibir: #537237 .

Desde hace ya varios meses en todos los servidores que administro y en mi portátil personal tengo montado el directorio /etc bajo control de versiones con GIT. Hacerlo es de lo más sencillo que hay:

cd /etc
git init
git add .
git commit -m "importado /etc"

¿Qué ventajas tiene esto?

Pues más que en un equipo de escritorio (que puede ayudarnos a arreglar cosas si andamos con Debian unstable) en los servidores es super útil.

¿Hay que crear un VirtualHost en Apache o editar cierta configuración?

Nuevo "commit" con su respectivo comentario y eso queda para la historia si alguna vez nos da problemas y no sabemos por donde arreglarlo tenemos el log y los diff.

Existen paquetes como etckeeper que se encargan de la parte más complicada por nosotros, pero a mi me sirve con usar git a pelo. Una de las cosas que he añadido es un disparador para apt que se encargue de hacer un commit cada vez que instalamos o desinstalamos algo. (lo tomé prestado de algún sitio y ahora no recuerdo donde)

#!/bin/bash
set -e
caller=$(ps axww | mawk '/aptitude|apt-get/ {for (i=5; i<=NF ; i++) printf ("%s ",$i); printf ("\n") }' | head -1)
STATUS="$(git status)" || true
if echo $STATUS | grep '\(modified\|new\|remove\)' > /dev/null 2>&1 ; then
echo "git-snapshot-script: found changed files"
echo $STATUS
git commit -a -m "snapshot after: $caller"
else
echo "  **GIT** git-snapshot-script: no changes"
fi
echo "  **GIT** git-snapshot-script: done"

Basicamente se lee el nombre de proceso que llama a este script (por ejemplo: apt-get install postfix) se mira si el directorio /etc ha cambiado y se hace el commit quedando en el log el programa que provoco esos cambios.

Para que el invento funcione debemos decirle a apt que llame al script:

cat /etc/apt/apt.conf
DPkg {
Post-Invoke {"cd /etc ; ./apt/git-snapshot-script";};
}

IMPORTANTE: Procura que el directorio /etc/.git solo pueda leerlo y escribirlo root (chmod 700 /etc/.git; chown root:root /etc/.git), con ese directorio se puede sacar el /etc/shadow por ejemplo y probar programas de fuerza bruta para sacar las contraseñas.

Mi vicio por git no termina aquí. Últimamente ando modificando unos cuantos CMS para uso personal o para clientes y un día puse esas web bajo control de versiones, ¡qué gozada! hacer mini-cambios y poder revertirlos, jugar con varias ramas, etiquetar... y para ejemplo un botón, Galopín es nuestro sistema de facturación interno y he ido tocando cosas que no acababan de convencerme, aquí está el git publicado. El primer import tiene parches ya de varios años de uso ;)