jueves, 11 de diciembre de 2008

Configurar SVN para el envío de e-mails sin MTA

Podemos configurar SVN para que envíe un e-mail al realizar el commit de una versión del repositorio pero el script que viene por defecto con el programa utiliza sendmail el cual necesita que haya un servidor de SMTP corriendo en nuestra PC. Nosotros podemos utilizar un script hecho en bash que utilice una cuenta en Gmail y que envíe los e-mails utilizando mutt.

Para ello nos vamos al directorio del repositorio SVN y creamos el script:
$ vim post-commit
#!/bin/bash

# post-commit script
# @autor: Matias J. Magni
# @email: matias.magni@gmail.com

# ----------------------------------------------------------------------------------

# variables a modificar. separar direcciones de correo electronico con un espacio.

mails="matias.magni@gmail.com thegoldmember@gmail.com"
ip="mjm.homelinux.com"

# ----------------------------------------------------------------------------------

# $1: home de svn
# $2: revision del repositorio

i=0;
autor=$(svnlook author $1 -r $2)
log=$(svnlook log $1 -r $2)
archivos=$(
for linea in $(svnlook changed $1 -r $2)
do
i=$(($i+1))
if [ $(($i%2)) -eq 1 ]
then
echo "<li>"
else
echo $linea
fi
done
)
fecha=$(svnlook date $1 -r $2 | cut -f 1,2,4,5,6,7 -d " ")

# contenido del mail
mensaje="<h1>La revisión $2 del repositorio ya se encuentra disponible.</h1>
Modificado por <b>$autor</b>.<br><br>
<b>Fecha de modificación:</b> $fecha<br><br>
<b>Comentario de modificación:</b><br>
<pre>$log</pre><br>
<b>Archivos modificados:</b><br>
<ul>$archivos</ul><br>
<b>URL:</b> svn://$ip$1"

# envio del e-mail.
echo $mensaje | mutt -e 'set content_type="text/html"' -s "SVN - Cambios en el repositorio" $mails

El e-mail debería ser una cosa así:

svn_mail

Pero para poder hacer esto necesitaremos que mutt esté configurado para poder acceder a nuestra cuenta Gmail. Lo primero que debemos hacer es configurar nuestra cuenta para que sea accesible vía protocolo IMAP, para lo cual accedemos a nuestro correo y nos vamos a Configuración > Reenvío y correo POP/IMAP y habilitamos IMAP. Luego, debemos editar un archivo rc que pondremos en nuestro home directory:
$ vim .muttrc
set imap_user = "aquí va el e-mail"
set imap_pass = "aquí va el password"

set smtp_url = "smtp://aquí va el nombre de la cuenta@smtp.gmail.com:587/"
set smtp_pass = "aquí va el password"
set from = "aquí va el e-mail"
set realname = "aquí va tu nombre"

set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed="+[Gmail]/Drafts"

set header_cache=~/.mutt/cache/headers
set message_cachedir=~/.mutt/cache/bodies
set certificate_file=~/.mutt/certificates

set move = no

set sort = 'threads'
set sort_aux = 'last-date-received'
set imap_check_subscribed

ignore "Authentication-Results:"
ignore "DomainKey-Signature:"
ignore "DKIM-Signature:"
hdr_order Date From To Cc

Solucionar problemas de DNS usando Speedy

No sé si se habrán dado cuenta pero ultimamente el servidor DNS de Speedy anda muy mal, para solucionar este problema podemos usar los servidores de openDNS. Para cambiar nuestros DNS hacemos lo siguiente:
# vim /etc/resolv.conf

Y escribimos dentro del archivo:

nameserver 208.67.222.222
nameserver 208.67.220.220

Fallo de segmentación en Gestionador de Paquetes

Si al ejecutar Synaptic, apt-get o aptitude les tira un error de fallo de segmentación (segmentation fault), deben hacer lo siguiente para solucionar el problema:
# rm /var/cache/apt/*.bin

Instalar las fuentes de Windows en Linux

Sólo hay que montar la partición con Windows y luego ejecutamos lo siguiente:
# mkdir /usr/share/fonts/truetype/windows/
# cd $DIR_MONTAJE_WINDOWS/WINDOWS/Fonts
# cp *.ttf /usr/share/fonts/truetype/windows/
# fc-cache -f -v

En mi caso DIR_MONTAJE_WINDOWS="/media/Windows XP".

Reparar VMWare en Linux

Si tenemos problemas ejecutando vmware en Linux se puede solucionar haciendo lo siguiente:
# ln -sf /lib/libgcc_s.so.1 /usr/lib/vmware/lib/libgcc_s.so.1/libgcc_s.so.1
# ln -sf /usr/lib/libpng12.so.0 /usr/lib/vmware/lib/libpng12.so.0/libpng12.so.0

Si esto no llega a funcionar siempre está Google ;)

Revisar el correo con gmail-notify nuevamente

Como se habrán dado cuenta Gmail cambió de URL y ya no es más http://gmail.google.com sino que ahora es http://mail.google.com lo cual produjo un fallo en el funcionamiento de gmail-notify que se puede solucionar facilmente gracias a que fue programado en python! :D

Hacemos lo siguiente, escribimos en consola:

# gedit /usr/lib/gmail-notify/notifier.py

Dentro del archivo fuente hacemos Crtl+F y buscamos "mail.google.com" y aparecerán 2 líneas de código dentro del método gotourl que serán las que vamos a modificar:

def gotourl( self, wg=None):
print "----------"
print "launching browser "+self.options['browserpath']+" http://gmail.google.com"
os.system(self.options['browserpath']+" http://gmail.google.com &")

Nos tiene que quedar así:

def gotourl( self, wg=None):
print "----------"
print "launching browser "+self.options['browserpath']+" http://mail.google.com/mail/"
os.system(self.options['browserpath']+" http://mail.google.com/mail/ &")

Cambiar la IP en Ubuntu 8.10 Intrepid Ibex

Lamentablemente la interfaz gráfica GTK que le hicieron al nuevo daemon llamado networking no anda, es así, no anda! :(

Para cambiar la dirección IP deben hacer lo siguiente, modificamos el archivo interfaces del demonio de networking poniendo los valores correspondientes a nuestra configuración de red:
# vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.3
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

y reiniciamos el daemon:
# /etc/init.d/networking restart

Nota:
No intenten por ningún motivo cambiar la ip con el comando ip addr add... porque les va a cambiar la dirección IP en su momento, pero al reiniciar la PC va a volver a la configuración que esté en el archivo ya que siempre que iniciemos sesión se va a ejecutar el demonio de networking.

¿Windows o Linux?

¿Qué ventajas tiene Linux sobre Windows?

  • Es más seguro

    • Ya que la gran mayoría de los ataques de hackers son dirigidos a servidores Windows al igual que los virus los cuales se enfocan principalmente a servidores con éste sistema operativo.

    • La plataforma Linux es más robusta lo cual hace más difícil que algún intruso pueda violar el sistema de seguridad de Linux.

  • Es más rápido

    • Al tener una plataforma más estable, ésto favorece el desempeño de aplicaciones de todo tipo tales como: bases de datos, aplicaciones XML, multimedia, etc.

    • La eficiencia de su código fuente hace que la velocidad de las aplicaciones Linux sean superiores a las que corren sobre Windows lo cual se traduce en velocidad de su página.

  • Es más económico

    • Ya que requieren menor mantenimiento. En servidores windows es más costoso debido a que es necesaria una frecuente atención y monitoreo contra ataques de virus, hackers y errores de código, instalación y actualización de parches y service packs.

    • El software Linux así como también un sin número de aplicaciones son de código abierto (gratuitos).

    • No requieren supervisión tan estrecha ni pagos de pólizas de mantenimiento necesarias para obtener los Service Packs.

¿Qué ventajas tiene Windows sobre Linux?

  • Es más fácil

    • Al ser de mayor facilidad de uso Windows en este momento continúa siendo el sistema operativo más comercial lo cual se refleja en la disponibilidad de aplicaciones, facilidad de mantenimiento así como soporte en el desarrollo de nuevas aplicaciones, puntos que pueden ser cruciales en la elección de servidores que corren aplicaciones web.

  • Aplicaciones desarrolladas en menor tiempo

    • Fruto de la inversión realizada por Microsoft y aunado a una comunidad de programadores cada vez más grande se ha logrado facilitar el desarrollo de aplicaciones y sistemas que corran sobre servidores Windows lo cual se ve reflejado en tiempos de desarrollo menores.

    • La curva de aprendizaje en el sistema Windows es mucho menor.

Es lo que aparece en cualquier página de internet porque es cierto, googleen un poco y van a encontrar lo mismo ;) Mi apreciación personal es que para trabajar es mucho mejor usar un sistema basado en núcleo Linux que uno Windows. Para jugar, hacer diseño gráfico (aunque para esto es mejor un MAC OS desde mi punto de vista), si es que se siente más familiarizado con Windows se puede usar para trabajar pero no lo recomiendo. Para la gente que programa también recomiendo un sistema Linux, sobre todo para los programadores Java y los scripters, si usan .NET me atrevo a decir que Mono es casi tan versátil y con la misma curva de productividad que la herramienta propietaria. Por lo menos a mi me resulta cómodo Mono, pero bueno, cada quién tiene sus gustos. Uds. deciden que usar no yo, así que elijan dependiendo a la finalidad que va a tener la máquina, si es un servidor con los ojos cerrados les recomiendo Debian ;)

Instalando Windows en Linux

# apt-get install windows
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
windows necesita las siguientes dependencias
virus, troyanos, spywares, adwares, rootkits, phising, malwares.
Paquetes Recomendados:
antivirus
antispyware
firewall
Se utilizarán 1000000Gb de espacio, ¿Desea Continuar? S/N

miércoles, 3 de diciembre de 2008

Emulando Guitar Hero 3 en Wine

guitar_hero_3

Para instalar el Guitar Hero 3 en linux hay que tener instalado wine.

En Ubuntu o Debian:
# apt-get install wine

Luego procedemos a la instalación del juego:

  1. Hacemos doble-click en el instalador del juego y realizamos nuestra típica instalación Windows.

  2. Después hay que copiar el crack, y la pregunta es: ¿dónde se encuentra ubicado el juego?, bueno, si no modificamos el directorio de instalación por defecto, el juego se encontrará en $HOME/.wine/drive_c/Archivos de programa/Aspyr/Guitar Hero III. Copiamos el crack ahí y ya estaríamos en condiciones de ejecutar el juego.

  3. Si al ejecutarlo sale un cartel que dice que la memoria virtual está desactivada o algo parecido hacemos lo siguiente. Copiamos el texto que aparece a continuación y lo pegamos en un archivo que se llamará virtualmemory.reg:
    [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Memory Management]
    "ClearPageFileAtShutdown"=dword:00000000
    "DisablePagingExecutive"=dword:00000000
    "LargeSystemCache"=dword:00000000
    "NonPagedPoolQuota"=dword:00000000
    "NonPagedPoolSize"=dword:00000000
    "PagedPoolQuota"=dword:00000000
    "PagedPoolSize"=dword:00000000
    "SecondLevelDataCache"=dword:00000000
    "SystemPages"=dword:00000000
    "PagingFiles"=hex(7):43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\
    00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,30,00,30,00,20,00,31,00,35,00,\
    30,00,30,00,00,00,00,00
    "PhysicalAddressExtension"=dword:00000000
    "SessionViewSize"=dword:00000030
    "SessionPoolSize"=dword:00000004
    "WriteWatch"=dword:00000001

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
    "ClearPageFileAtShutdown"=dword:00000000
    "DisablePagingExecutive"=dword:00000000
    "LargeSystemCache"=dword:00000000
    "NonPagedPoolQuota"=dword:00000000
    "NonPagedPoolSize"=dword:00000000
    "PagedPoolQuota"=dword:00000000
    "PagedPoolSize"=dword:00000000
    "SecondLevelDataCache"=dword:00000000
    "SystemPages"=dword:00000000
    "PagingFiles"=hex(7):43,00,3a,00,5c,00,70,00,61,00,67,00,65,00,66,00,69,00,6c,\
    00,65,00,2e,00,73,00,79,00,73,00,20,00,31,00,30,00,30,00,20,00,31,00,35,00,\
    30,00,30,00,00,00,00,00
    "PhysicalAddressExtension"=dword:00000000
    "SessionViewSize"=dword:00000030
    "SessionPoolSize"=dword:00000004
    "WriteWatch"=dword:00000001

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG]
    "Seed"=hex:ac,28,70,71,d1,c7,76,6e,33,06,81,61,85,59,1f,67,58,c1,88,11,b0,d7,\
    43,04,40,43,af,73,d8,1f,c0,6b,73,cd,0c,72,2a,c4,e6,3c,1a,51,98,f3,e1,ad,0e,\
    d8,9a,6a,86,7b,1e,e6,97,23,b1,61,3e,4e,97,73,9b,03,d8,78,dc,f6,f2,fb,1e,2b,\
    a0,70,a0,97,2e,98,d7,17


  4. Luego ejecutamos en consola:
    $ wine regedit


  5. Vamos a Registro -> Importar archivo de registro... y seleccionamos el archivo que acabamos de crear.

  6. Finalmente, el juego estará listo para ejecutarse.


Anda muy bien este juego, el único problema es la configuración del teclado, al querer configurarlo desde el juego se traba la ventana y hay que matar el proceso. La única manera de configurar las teclas es desde el archivo de configuración del juego, para ello hacemos lo siguiente:
$ cd "$HOME/.wine/drive_c/windows/profiles/$USER/Configuración local/Datos de programa/Aspyr/Guitar Hero III"

$ vim AspyrConfig.xml

y escribimos lo siguiente dentro del archivo:
1 <?xml version="1.0" encoding="utf-8"?>
2 <r>
3 <s id="Video.Width">800</s>
4 <s id="Video.Height">600</s>
5 <s id="Options.GraphicsQuality">1</s>
6 <s id="Options.Crowd">0</s>
7 <s id="Options.Physics">0</s>
8 <s id="Options.Flares">0</s>
9 <s id="AudioLagReminderShown">1</s>
10 <s id="Sound.SongSkew">-0.1</s>
11 <s id="Debugging.FullScreen">0</s>
12 <s id="Video.MultiSampleQuality">0</s>
13 <s id="Video.MultiSampleType">0</s>
14 ?
15 <s id="6f1d2b61d5a011cfbfc7444553540000">237 238 239 240 241 318 245 244 235 316 311 245 243</s>
16 </r>

Nota: los números son los números de línea que agrega el vim, no hay que escribirlos.

Los números 237 238 239 240 241, etc, son las teclas asignadas (a cada tecla del teclado y mouse le corresponde un número que mas adelante especifico) y esto es lo que tenemos que hacer manualmente, ya que si queremos hacerlo desde el juego, se nos tilda.

La cuestion es es la siguiente; independientemente del orden en que les aparezcan los colores de las "cuerdas en la guitarra" en el juego, el orden de las mismas en el archivo es siempre el mismo, por ejemplo: Verde=237 rojo=238 amarillo=239 azul=240 naranja=241 el 235 representa el strend (sería cuando se le da con la púa a la cuerda de la guitarra) que sería en este caso la tecla shift, el 316 es el otro strend (uno es down y otro up) y el 318 es la barra, que representa start power, que es cuando usan el overdrive. Solamente esas son las teclas que nos interesan.

Esta es la lista de la asignación de tecla/numero:

F1: 237
F2: 238
F3: 239
F4: 240
F5: 241
F6: 242
F7: 243
F8: 244
F9: 245

LAS TECLAS F10, F11 Y F12 no las detecta. Seguimos...

Click izq mouse: 400
Click der mouse: 401
Click centro (o click de scroll): 402
º (abajo del Esc): 253

Números, pero no los del teclado numérico, sino los que estan sobre las letras:

0: 200
1: 201
2: 202
3: 203
4: 204
5: 205
6: 206
7: 207
8: 208
9: 209
': 273
¡: 234

Backspace: no la detecta
Tabulación: 323
q: 304
w: 331
e: 232
r: 305
t: 322
y: 341
u: 324
i: 256
o: 295
p: 297
` (a la derecha de la p): 263
+: 306
a: 210
s: 313
d: 227
f: 236
g: 252
h: 254
j: 258
k: 259
l: 262
ñ: 315
´ (a la derecha de la ñ): 214
ç: 220
Shift izq:258