viernes, octubre 31, 2014

Explicaciones alternativas de los conceptos del LVM

Los conceptos que maneja el LVM como PV (Phisical Volume), VG (Volume Group) y LV (Logical Volume) son difíciles de explicar. Una forma alternativa de hacerlo es utilizar la idea del dinero, bancos y préstamos.

El dinero lo proporciona los ingresos (PV) de los ahorradores, que lo guardan los bancos en sus reservas (VG), que se dan en prestamos (LV) a los clientes del banco. El dinero de los PV es espacio de disco. Los VG van creciendo su reserva con el espacio que le da los PV. Y los VG van entregando ese espacio que tienen a los LV que lo piden y que son los discos 'virtuales'.

sábado, octubre 18, 2014

Escorpiones en el cuarto de baño

Cuando escucho canciones del grupo Scorpions por la radio las reconozco al instante, el cantante parece cantar siempre desde el cuarto de baño.

sábado, octubre 11, 2014

Lecturas retomadas

Hay muchos libros que empiezo y dejo a medias. No me gusta. En estos últimos meses he finalizado "El maestro de go" y "Guerra Mundial Z".

También he retomado "El mapa del tiempo" y "Tango de la guardia vieja". Entremedias he leido "Hellraiser", "El camino de los reyes" y "El libro del cementerio". Éste último libro de Neil Gaiman me ha gustado mucho.

sábado, septiembre 27, 2014

La Ryder Chess

Al final del torneo Sinquefield de 2014, se jugó una competición denominada Ultimate Moves. La idea era que Rex Sinquefield (mecenas de la copa Sinquefield) y Randy Sinquefield (hijo de Rex) eligieran un equipo cada uno de ellos con los participantes del torneo y los echaran a 'pelear' entre sí en varias modalidades de partidas rápidas y semirápidas, en las que también jugaban padre e hijo.

Recordando esto y coincidiendo con la celebración de la Ryder Cup de este fin de semana, he pensado que se podría hacer algo similar en el ajedrez. En los torneos entre equipos de ajedrez, introducir las modalidades foursomes (jugadores alternan los movimientos), fourballs (jugadores forman mini equipos jugando individualmente) e individuales, podría darle una dimensión muy agradable a la competición. Por ejemplo, en el golf, un deporte tan individual como puede serlo el ajedrez, este modo de juego 'ryder' lo hace mucho más entretenido de ver. En todo caso, no tiene porque ser foursomes, fourballs & individuales, pero sí algo parecido.

En la retrasmisión que dieron online de la competición Ultimate Moves, era curioso ver las risas que se echaban los jugadores cuando veían errores o tenían que jugar posiciones en las que su compañero les había dejado en una situación comprometida.

miércoles, septiembre 24, 2014

Los concursos de chefs

Para mi, la cocina es una cuestión de tiempo y preparación, realizar una receta de la forma adecuada requiere su tiempo para ofrecer algo de comer que sea perfecto. Da igual lo que prepares. Quitar ese tiempo o incluir dificultades a la receta (como falta de ingredientes), va en contra de ese principio básico. Así que cuando veo en la tele un concurso en donde compiten una serie de Chef, me rechina por todos lados.

La cocina es una arte (efímero), como lo es construir un edificio. A nadie le gusta que por meterle prisas al arquitecto, se le olvide terminar una planta del edificio o que no tenga que sustituir las vigas de acero por otras de mala calidad que no van a aguantar porque han dicho que no pueden usar vigas de acero. Pero estos concursos, para incrementar el nivel de dificultad, van por ese camino y no me gusta que lo hagan. Así que no me queda más remedio que ver otra cosa.

Sin grua

A principio de la semana me fije que quitaron la grua de la torre Cajasol (o Torre Pelli o Torre Sevilla). Algún día la terminaran, creo que llevan dos años de retraso.

domingo, septiembre 14, 2014

Acceder a particiones de discos con LVM que están en archivos de imágenes en formato qcow de qemu

Ya el título del artículo se las trae, pero es así, es lo que tuve que hacer la semana pasada en el trabajo debido a un descuido y una configuración errónea en el backup.

En el trabajo, para hacer los backups de las máquinas virtuales que tenemos, no respaldamos todos los directorios de las máquinas al completo, sino que tenemos una serie de savesets (/etc/, /root/, /usr/local/, /opt, /var, /home) que son los que copiamos todos los días utilizando rsync. Durante una intervención en una de esas máquinas virtuales, eliminamos el contenido de un directorio del que no teníamos copia de seguridad y no nos dimos cuenta de ello hasta que fue demasiado tarde.

Aunque empezamos a mirar diferentes formas de recuperar el contenido, advertimos de que estas máquinas, al ser MV de un hipervisor con KVM, vimos que el directorio /var/ del hipervisor estaba respaldado por el rsync. Y dentro de /var esta /var/lib/libvirt que tiene la configuración de las máquinas virtuales y de los discos que utilizan las maquinas virtuales (Yuju!!). Así que era posible recuperar el contenido, al disponer de una copia de seguridad de la máquina al completo de la noche anterior. Sólo teníamos que montar los discos de la copia de seguridad.

Como primer intento, pensamos en copiar los discos al hipervisor y levantar una nueva máquina virtual, pero el hipervisor se encontraba en otra sede, por lo que llevar un disco de 12 GB iba a tardar cerca de cuatro horas. Otra solución, era montar los discos, localizar los dispositivos y acceder a las particiones, sin necesidad de levantar una máquina virtual, trabajando desde un equipo que tuviera acceso a las ficheros de imágenes de los discos que estaban en la copia de seguridad. Mucho más rápido.

El primer problema era acceder al formato qcow que tienen los discos de qemu. Con ellos directamente no podíamos trabajar, por lo que había que convertirlos a formato raw. Esto se puede lograr con el comando qemu-img y la opción convert. Si le añadimos la opción -p obtenemos el progreso de la conversión entre qcow y raw.
$ qemu-img convert -p servidor015.qcow servidor015.raw
El comando anterior, nos genera un nuevo archivo llamado servidor015.raw con el que podremos trabajar a partir de ahora. El siguiente paso ha sido ver que es lo que hay en la imagen raw (discos, particiones, formatos, etc). Realmente, no hace nada, solo nos va a mostrar lo que tenemos dentro del fichero raw.
$ disktype servidor015.raw
--- servidor015.raw
Regular file, size 12 GiB (12884901888 bytes)
GRUB boot loader, compat version 3.2, boot drive 0x80
DOS/MBR partition map
Partition 1: 500 MiB (524288000 bytes, 1024000 sectors from 2048, bootable)
  Type 0x83 (Linux)
  Ext3 file system
    UUID 205F140C-E079-4970-9D62-7EFA29DB423B (DCE, v4)
    Last mounted at "/boot"
    Volume size 500 MiB (524288000 bytes, 512000 blocks of 1 KiB)
Partition 2: 11.51 GiB (12359565312 bytes, 24139776 sectors from 1026048)
  Type 0x8E (Linux LVM)
  Linux LVM2 volume, version 001
    LABELONE label at sector 1
    PV UUID k9Aj9f-v3Uh-iNlg-K6s4-HAAS-1JO9-3Dnr77
    Volume size 11.51 GiB (12359565312 bytes)
    Meta-data version 1
El siguiente paso es utilizar losetup. Con este comando podemos montar la imagen como un device en el sistema.
$ losetup /dev/loop0 servidor015.raw
El device es /dev/loop0, y los siguientes pasos se van encargar de utilizar el dispositivo /dev/loop0 y seguir con el trabajo. No olvidemos que queremos acceder a la partición que tiene los datos de un servidor virtual del que tenemos una imagen en formato qcow de sus discos.

Antes de seguir, hay que echar un vistazo al dispositivo, dependiendo de lo que encontremos haremos una cosa u otra. En este paso, podemos utilizar fdisk, que nos tiene que aportar una información similar a la que obtuvimos con disktype. La diferencia es que fdisk se utiliza sobre un dispositivo (/dev/loop0) en lugar de emplearla sobre un archivo como hicimos con disktype. Si utilizamos fdisk sobre el fichero, hubiera dado un mensaje de error.
$ fdisk /dev/loop0
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Orden (m para obtener ayuda): p
Disk /dev/loop0: 12.9 GB, 12884901888 bytes, 25165824 sectors
Units =3D sectors of 1 * 512 =3D 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Identificador del disco: 0x0000320b
   Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/loop0p1   *        2048     1026047      512000   83  Linux
/dev/loop0p2         1026048    25165823    12069888   8e  Linux LVM
Orden (m para obtener ayuda): quit
Llegados a este paso del trabajo, vemos que no tenemos directamente dispositivos /dev/sdaX o /dev/sdbX, sino que nos han aparecido dispositivos de LVM, lo que nos complica un poco la vida, al tener que montar antes el LVM.

Lo primero aquí es leer los dispositivos que aparecen en /dev/loop0 y agregarlos al sistema.
$ kpartx -a /dev/loop0
Luego creamos unos directorios de trabajo que necesitaremos posteriormente y hacemos un scan de los grupos de volúmenes de lvm.
$ mkdir /mnt/p1
$ mkdir /mnt/p2
$ vgscan
  Reading all physical volumes.  This may take a while...
  Found volume group "VolGroup" using metadata type lvm2
Con esto, ya tenemos un grupo de volúmenes llamado VolGroup, que no esta activo. Para poder utilizarlo, hay que activarlo primero.
$ vgchange -ay VolGroup
  2 logical volume(s) in volume group "VolGroup" now active
$ vgdisplay
  --- Volume group ---
  VG Name               VolGroup
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               11,51 GiB
  PE Size               4,00 MiB
  Total PE              2946
  Alloc PE / Size       2946 / 11,51 GiB
  Free  PE / Size       0 / 0
  VG UUID               XR6jkV-pokl-kI2y-d1MY-jjTm-5O1T-BUeD4k
Podemos comprobar los dispositivos que se han creado mirando en /dev/VolGroup/ y /dev/mapper
$ ls /dev/VolGroup/
lv_root  lv_swap
$ ls /dev/mapper/
control           loop0p1           loop0p2           VolGroup-lv_root VolGroup-lv_swap
El último paso a dar será montar las particiones. Como los datos están en el lv_root, nos centramos en él y lo montamos para ver si hemos tenido suerte.
$ mount /dev/mapper/VolGroup-lv_root /mnt/p2
$ ls /mnt/p2/
usr var root home etc lib datos imagenes lost+found
Todo esto, no se me ocurrió de golpe -no soy tan listo-, pero sabía que era posible hacerlo y gracias a las recetas de Antonio Mario (montar imagen qcow) y David Robinson (montar lvm) pude combinarlo y lograrlo.


Prevía a toda esta película, agregamos los directorios 'extras' que faltaban en la configuración del backup de la máquina. 

sábado, septiembre 13, 2014

Volviendo a Thunderbird

En Junio de 2006 empece a probar el cliente de correo Evolution. Las carpetas de búsqueda fueron el principal motivo del cambio, ya que por aquel entonces Mozilla Thunderbird carecía de ellas. Debido a unos problemas de rendimiento, por la cantidad de mensajes que tengo en mi cuenta de correo del trabajo, Evolution había dejado de ser manejable por una serie de problemas y estaba buscando alternativas.

Los problemas que tengo con Evolution estaban localizados inicialmente en las carpetas de búsquedas, parecía que todo el tiempo esta haciendo reindexaciones (tenía una 10 búsquedas predefinidas). Por ese motivo las tuve que desactivar (adiós a la característica que me hizo migrar a Evolution). Pero el problema seguía estando presente. Ha llegado a ser tan grave que ni siquiera podía búsquedas 'normales' de ningún tipo sin que se me quede el cliente de correo medio colgado (demasiados ficheros en el maildir???).

Como primera alternativa, vuelvo a probar Thunderbird. Veo que siguen teniendo mbox como formato por defecto para guardar los mensajes, pero la característica de las carpetas de búsqueda la tienen implementada. Me parece que el sistema maildir es más conveniente y echo en falta una opción para cambiarlo de forma transparente (hay formas para cambiar a maildir, pero me parecen peregrinas). Esperaré a ver que tal se porta.

Nrpe, sudoers y requiretty

Me ha pasado alguna que otra vez que cuando he configurado algún comando remoto que debía ejecutarse como root mediante el demonio nrpe, estos comandos fallaban miserablemente, pero si se ejecutaban desde la shell, bajo el usuario nrpe, no ocurría lo mismo, saliendo todo correctamente.

El problema es la opción 'default requiretty' del fichero /etc/sudoers que aparece por defecto y que obliga a que los comandos que hacen uso de permisos de sudo, necesiten ejecutarse desde un terminal. Y precisamente, los comandos invocados remotamente por nrpe carecen de dicho terminal. Comentar la opción en el fichero /etc/sudoers soluciona los problemas.

Lo que haces marca la diferencia

Soy de la opinión de que lo importante es lo que haces, muy por encima de lo que eres o lo que tienes.

sábado, septiembre 06, 2014

Retransmisión atinada

La retrasmisión de las partidas en directo del torneo de ajedrez Sinquefield 2014, en inglés de su majestad la reina de Inglaterra, son francamente buenas. Me entero de la mitad de la mitad de lo que dicen, pero aún así, el acierto en la elección de los comentarios es notable.

Para Yasser Seirawan todas las jugadas son un 'guauuu' y Maurice Ashley consigue explicarte por qué se hacen unos movimientos y no otros. Jennifer Shahade ha tomado el papel de hacer las preguntas que los aficionados harían, permitiendo que Yasser y Maurice le den réplica sin parecer pedantes ni aburridos, evitando despliegues irritantes de posiciones.

Además de que los tres son grandes maestros, también se nota que Jennifer y Yasser son buenos divulgadores. Maurice, entre sus muchas habilidades, destaca también por ser un experto motivador, dando conferencias sobre ello, así que no es de extrañar el éxito de la retransmisión en un campo que puede ser considerado muchas cosas, pero que no destacaría por ser tildado de emocionante.

martes, septiembre 02, 2014

Instalación de pseudonube con OwnCloud

Ayer noche me entretuve en probar OwnCloud. Detallo los pasos para la instalación de OwnCloud en una máquina virtual con Centos 6.5.

Habilitar el repositorio de OwnCloud para Centos
# cd /etc/yum.repos.d/
# wget http://download.opensuse.org/repositories/isv:ownCloud:community/CentOS_CentOS-6/isv:ownCloud:community.repo
Instalamos los paquetes de OwnCloud y de mysql para la Base de datos
# yum -y install owncloud
# yum -y install mysql-server
Configuramos los demonios del servidor web y de la base de datos para que se inicien al arrancar el sistema, ademas de levantarlos ahora para continuar con la instalación
# chkconfig mysqld on
# chkconfig httpd on
# service httpd start
# service mysqld start
Accedemos al mysql para configurar la password de root y creamos la base de datos en el mysql para luego utilizarla en el software de instalación de OwnCloud 
# /usr/bin/mysqladmin -u root password 'password'
# mysql --user=root -p
> create database owncloud;
> CREATE USER 'owncloudusr'@'localhost' IDENTIFIED BY 'owncloudpwd';
> GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloudusr'@'localhost' ;
El último paso es acceder por por http a la url http://server/owncloud para terminar instalación. Aquí creamos un usuario con permisos de administrador y la conexión con la base de datos que hemos creado en el paso anterior.

Hay tres pasos adicionales que hacer que resumo de forma somera:
  1. Configurar el servidor web para que utilize https.
  2. Configurar router de casa para que haga un NAT hacia el servidor de nuestra red de casa donde está instalado el OwnCloud.
  3. Habilitar en un servicio de DNS Dinámico tipo no-ip o dyndns para acceder desde fuera de nuestra red de casa al servidor que tiene el OwnCloud.
Como mi objetivo era probar una solución de 'nube', OwnCloud me ha desilusionado un poco. Realmente no es una nube como tal, OwnCloud proporciona una aplicación que instalado en sistema tipo AWS o OVH, disponer de nuestros archivos en la red al modo que lo hace DropBox. Quien proporciona la infraestructura de la nube no es OwnCloud, sino el proveedor elegido por nosotros.

Pensaba más bien en un escenario en el que tengo un servidor en una oficina de Londres y levanto una instancia de un sistema de ficheros al que la gente de la oficina de Londres puede acceder (o remotamente). Pero luego levanto otra instancia, en Sidney, en la que instalo otra nube en un servidor de la mismo. A esta nube le digo que sus archivos están en la nube de Londres. De tal forma, que todo lo que haga en Londres, lo tengo en Sidney (la gente que trabaja en Sidney accede a la nube de la oficina de Sidney, pero si se cae Londres no lo nota y si se cae Sidney, puede acceder a la nube de Londres).

Y a la inversa para la nube de Londres, si hay algún cambio en la nube de Sidney, tienen que recogerlo en Londres. De tal forma, que hay una única nube soportada por la infraestructura de los servidores de cada oficina. A esta nube puedes enganchar otros oficinas. Es un equipo redundado, todas las oficinas son 'masters' y los archivos están a la misma vez en todos los sitios. En apariencia no hay nube en Londres ni en Sidney. Hay una única nube, aunque físicamente hay dos nubes con el mismo contenido replicado en cada una.

Pero eso es lo que creía que ofrecía OwnCloud. Una vez que he visto la documentación, corrijo mi error. OwnCloud en ningún momento dicen que vaya a hacer nada de eso. Desde luego, hace muy bien su trabajo y la interfaz web para el manejo de archivos (muy parecida a DropBox) es buena. Los clientes para escritorio y dispositivos móviles no los he probado, pero supongo que lo harán igualmente bien. En todo caso, lo repito, mis espectativas no coinciden con lo que OwnCloud ofrece.

domingo, agosto 31, 2014

Batería del coche estropeada

Creo que han pasado cuatro años desde que cambié la batería del coche. No he prestado atención a los síntomas, que empezaron a la vuelta de las vacaciones (deje el coche dos semanas parado) cuando le costaba algo de trabajo arrancar y los elevalunas no funcionaban del todo bien, quedándose atrancados. No comprendo porque las baterías no tienen un chivato que indica que esta dando fallos.

La política de los bandos

En temas que tienen que ver con la política -y puede quedar raro escribir de esto en el blog-, mantengo mis opiniones reservadas a un ámbito muy cercano de amigos y familiares más íntimos, pero de vez en cuando surge comentar algo sobre la situación actual. Y cada vez que esto pasa, me queda un regusto amargo.

Tengo la sensación de que no es que nada se haga bien, sino de que no hay ningún interés de que se hagan las cosas bien, pensando en que mañana podemos tener un país mejor, con unas leyes para todos y que sean un ejemplo para los demás. No es que sea de ahora, sino que ha sido de siempre. Si uno mira hacia atrás en la historia del país, los hechos confirman lo que digo. Pocas leyes se hicieron que no fueran pensadas para mantener el status quo o para revertir cambios que se hicieron anteriormente, tanto de un bando como de otro.

Y sobre todas las cosas, el concepto de 'los bandos' lo domina todo. O estas con uno o con otro para siempre. No lo comprendo y no lo comparto. La política, por encima de todo, deber ser un arte del equilibrio para saber ceder en algunas cosas y ganar en otras. Lamentablemente, esto se ha entendido muy pocas veces. También los ciudadanos tenemos nuestra parte de culpa, primando más convertirse en hincha de un partido político sobre cualquier otro tipo de consideración. En cualquier caso, en una democracia si no se comprende y se respeta al resto, mal uso se le va a dar a la misma.

domingo, agosto 24, 2014

Comics futuribles

Le tengo el ojo echado al tercer volumen de los recopilatorios de Hellboy (edición integral en cartoné forrado en tela y publicado a principios de año) y a la saga Locke & Key que acaban de publicar en español el sexto y último libro titulado Alfa y Omega, de la que he leido algunos números sueltos en formato CBR.

Mi pequeña colección de comics, que apenas ocupa una balda de una estantería, esta formada por Gaiman, Moore, Miller, Jodorowsky, Mignola, Spiegelman y Tsuchiya entre otros.

domingo, agosto 17, 2014

# kill -9 vacaciones

Es un título autoexplicativo que se me ocurrió esta tarde al rato de llegar a casa. De momento en google no hay ninguna ocurrencia del mismo. Al menos la vuelta de la vacaciones ha traído una buena noticia, la planta parece que aún respira.

viernes, agosto 15, 2014

Torneo más fuerte de la historia

Todos los años se establece una loca carrera para ver quien organiza el torneo de ajedrez más fuerte de la historia y todos los años la cosa se va superando. Olvidan, que debido a la inflación del ELO que sufren los jugadores, es una carrera sin fin. Ahora le toca a la copa Sinquefield, que se celebrara a finales de agosto y principio de septiembre.

Me gusta mucho más la consideración que hacen en chessmetrics, en la que para establecer la fortaleza de torneo no hacen la media de los puntos ELO de sus jugadores, sino que hacen el cálculo en función de su posición en el ranking. Por ejemplo, el torneo más fuerte de la historia fue el celebrado en Vienna-1882 en el que solo faltaba el noveno jugador más fuerte de la época, estando presentes los nueve restantes de los diez primeros. Empatado con el de Linares-1993 (que también falto el jugador noveno de los diez mejores).

PD: Es una pena que chessmetrics no esté actualizada.
PDD: En la copia Sinquefield están presente los números #1, #2, #3, #5, #8 y #9.

jueves, agosto 14, 2014

La lambada en ocho bits

Esa es la música que le han puesto al camión del butano en la Antilla cuando pasa por las calles reclamando la atención de los veraneantes. Podrían cambiarla un poco, se mete dentro de la cabeza y ningún conjuro de expulsión es capaz de sacarla de allí.

miércoles, agosto 06, 2014

Configurar Stockfish con xinetd y systemd

Detallo a continuación la forma de ofrecer Stockfish como un servicio para acceder al motor de ajedrez mediante una ip y un puerto remoto.

Descargar, compilar y instalar Stockfish
#!/bin/bash
NOMBRE=stockfish
VERSION=$NOMBRE-$(date +"%F")
if [ -e "$VERSION" ]; then
echo "Directorio $VERSION existe, se procede a borrarlo"
rm -rf $VERSION
fi
if [ -h "$NOMBRE" ]; then
echo "Borrando enlace simbolico"
rm -f $NOMBRE
fi
echo "Obteniendo version del repositorio"
git clone https://github.com/official-stockfish/Stockfish.git $VERSION
cd $VERSION/src
make build ARCH=x86-64-modern
cd ../..
ln -s $VERSION/src/ $NOMBRE
Lo de arriba descarga stockfish, lo compila y deja un enlace simbólico a la última versión compilada. Lo bueno de esto, es que podemos ir descargando versiones nuevas para probar sin borrar lo anterior, con solo cambiar el enlace simbólico, usaremos una versión u otra.

Hasta aqui, mas o menos lo normal. Ahora hay que distinguir como vamos a invocar el servicio remoto. Podemos hacerlo mediante xinetd.d al estilo unix antiguo o al nuevo estilo con systemd.

Instalación como servicio bajo xinetd.d estilo sysinit de System V

Se necesitan crear dos ficheros, el primero sirve para indicar a xinetd que cuando se encuentra una petición dirigida al puerto 3333, ejecute el script de arranque del engine stockfish.
cat /etc/xinetd.d
# default: on
# description: An RFC 863 discard server.
# This is the tcp version.
service stockfish
{
disable         = no
server          = /usr/local/bin/chess_server_stockfish.sh
socket_type     = stream
protocol        = tcp
user            = alidhaey
wait            = no
port            = 3333
only_from = localhost
}
El segundo es la propia invocación del engine. He añadido algunos detalles más para que deje en el log el momento de su invocación y de su cierre.
cat /usr/local/bin/chess_server_stockfish.sh
#!/bin/bash
BINENGINE=/usr/local/stockfish/
LOG="/tmp/chess-server-stockfish.log"
/bin/echo "Start $(/bin/date)" > $LOG
/bin/echo >> $LOG
$BINENGINE/stockfish
/bin/echo  | /usr/bin/tee -a $LOG
/bin/echo "Stop $(/bin/date)" | /usr/bin/tee -a $LOG
Instalación como servicio bajo systemd

Con Systemd la cosa va a cambiar, es posible que haya otro forma, ya que aún estoy aprendiendo como funciona systemd, pero no es complicado.
[root@hppavilion system]# pwd
/etc/systemd/system
Creamos el fichero de definición del socket para el servicio de stockfish
[root@hppavilion system]# cat stockfish.socket
[Unit]
Description=Stockfish Engine Chess
[Socket]
ListenStream=3333
Accept=yes
[Install]
WantedBy=sockets.target
y el fichero para el servicio propiamente dicho
[root@hppavilion system]# cat stockfish@.service
[Unit]
Description=Stockfish Engine Chess
[Service]
ExecStart=/home/alidhaey/src/stockfish/stockfish
StandardInput=socket
Y para habilitar el servicio y arrancarlo podemos hacer
systemctl enable stockfish.socket
systemctl status stockfish.socket
systemctl start stockfish.socket
systemctl status stockfish.socket
netstat -nap | grep :3333
En la ruta /home/alidhaey/src/stockfish/stockfish tenemos el fichero resultando de compilar el engine.

Prueba final
[alidhaey@hppavilion ~]# telnet localhost 3333
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Stockfish 220714 64 SSE4.2 by Tord Romstad, Marco Costalba and Joona Kiiski
uci
id name Stockfish 220714 64 SSE4.2
id author Tord Romstad, Marco Costalba and Joona Kiiski
option name Write Debug Log type check default false
option name Write Search Log type check default false
option name Search Log Filename type string default SearchLog.txt
option name Contempt Factor type spin default 0 min -100 max 100
option name Min Split Depth type spin default 0 min 0 max 12
option name Threads type spin default 1 min 1 max 128
option name Hash type spin default 32 min 1 max 1048576
option name Clear Hash type button
option name Ponder type check default true
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Emergency Move Horizon type spin default 40 min 0 max 50
option name Emergency Base Time type spin default 60 min 0 max 30000
option name Emergency Move Time type spin default 30 min 0 max 5000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name Slow Mover type spin default 80 min 10 max 1000
option name UCI_Chess960 type check default false
uciok
quit
Connection closed by foreign host.
Si recibimos un uciok, cuando le mandemos el comando 'uci', es que todo ha ido como la seda.

sábado, agosto 02, 2014

Movil actualizado a ios7

Después de esperar a que los comentarios sobre la actualización de IOS7 para el iPhone4 fueran positivos, me he decidido a hacerlo esta tarde. No he tenido problemas al respecto. El cambio de look es extraño. Respecto a como reaccionan las aplicaciones, no noto diferencia alguna. El movil va a cumplir cuatro años. No está nada mal.

Cómo utilizar el servicio Secrets Manager para guardar las claves privadas de SSH

Para guardar la clave privada en el servicio Secrets Manager como un secreto en modo texto sin formato, sigue estos pasos Supongamos que la ...