jueves, 24 de noviembre de 2011

Añadir acción al menú contextual en Windows

La aplicación GNU 'gzip.exe' es de consola de comandos y por comodidad he creado la acción 'Comprimir APK a gz' que ejecuta 'gzip -k' sobre ficheros del tipo APK:
  1. Copiamos 'gzip.exe' a 'C:\WINNT' (es un buen sitio porque está en los "Path")
  2. En una carpeta cualquiera, abrimos 'Herramientas -> Opciones de carpeta'
  3. En 'Tipos de archivo' añadimos una nueva extensión (si no existe ya)
  4. En 'Opciones avanzadas' añadimos una nueva acción con:
  • Acción: Comprimir APK a gz
  • Aplicación: C:\WINNT\gzip.exe -k "%1"

martes, 27 de septiembre de 2011

Conferencia Empresas de Software Libre

El sábado 24 asistí a una conferencia de empresas de Software Libre. Tres empresas españolas explicaron cómo hacen dinero desarrollando software libre.

Todas ellas coincidieron en que la mayoría de sus proyectos tienen una parte de software privativo, bien por conveniencia a la hora de ciertas negociaciones, bien por facilitar convencer a los directivos o bien porque en ese momento es la pieza clave que les hace ser competitivos (en ese caso suele liberarse el código más adelante).

Los tres coincidieron en resaltar que lo importante es el modelo de negocio, entender quién eres como empresa y no el software libre en sí, que lo veían más como una herramienta útil, que como un modelo ético.

  • Javier Viñuales, Yaco
    • Destacó la importancia de una buena red de contactos para conseguir empleados, asesoramiento... Para mantener dicha red hay que contribuir a la comunidad publicando código en proyectos libres.
  • Alvaro del Castillo, Andago
    • Comenzó con un vídeo de Stallman sobre el que comentó que no puede usarse como presentación ante nadie, aunque sus ideales son muy importantes para no perder el norte en cuanto a la libertad del software. Participan mucho en concursos específicos de software libre, en los que se cobra por la implantación y soporte.
  • Juan José Sanchez, Igalia
    • No pudo asistir y en su lugar hablaron dos compañeros suyos. Este empresa tiene una peculiaridad sorprendente: es completamente horizontal. Todas las decisiones importantes se toman en asamblea donde todos los empleados tienen un voto (tanto los recién llegados como los socios fundadores), todos los empleados que están en la misma fase cobran exactamente lo mismo y todos ellos llegan a ser socios en la última fase. Esto les obliga a aumentar sus ingresos constantemente, para lo cual se han internacionalizado de forma bastante abrupta y procuran involucrarse en proyectos muy especializados, que pocas empresas puedan realizar y por los que las grandes multinacionales pagan grandes cantidades.

viernes, 14 de enero de 2011

DNI Electrónico en GNU/Linux Ubuntu

Esta é unha guía para por a funcionar o DNIe en sistemas baseados en Ubuntu. En concreto probeino en Galinux 9.10 e Trisquel Awen 3.5 (ambos baseados en Ubuntu 9.10 Karmic Koala de 32bits).

A maioría dos tutoriales que encontrei son de cando non existía software DNIe para Karmic e tíñase que empregar o software de Jaunty Jakalope. Agora xa hai software para Karmic. Funcionoume cos dous.

Básicamente hai que dar tres pasos:
  1. Instalar o software do lector
  2. Instalar o software do DNI Electrónico
  3. Configurar o navegador Web Mozilla Firefox (ou baseado nel)

Paso1
Enlace
Instalamos por este orden:
  1. libopensc2_0.11.7-7_i386.deb
  2. opensc_0.11.7-7_i386.deb
Estes paquetes están en http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/1.4.6.Ubuntu_Jaunty_32/Ubuntu_Jaunty_opensc-dnie_1.4.6-2_i386.deb.tar

Agora hai que indicar ó Synaptic que bloquee estes paquetes para que non se actualicen, senon deixará de funcionar.



Paso2

Instalamos:
  • opensc-dnie_1.4.7-1_i386.deb
Este paquete está en http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/1.4.7.Ubuntu_Karmic_32/Ubuntu_Karmic_opensc-dnie_1.4.7-2_i386.tar

Nota: nun dos sistemas tiven que engadir os seguintes paquetes para que funcionara todo:
  • pcscd
  • pcsc-tools (creo que esto solo é necesario se queremos usar o comando de consola 'pcsc_scan' para verificar o funcionamento do lector)
Agora podemos facer unhas comprobacións executando nunha consola 'pcsc_scan':
  • conectamos o lector ó PC e debe aparecer a súa identificación na consola
  • introducimos o DNIe no lector e debe aparecer a súa identificación na consola



Paso3
  • Executamos 'Aplicacións > Ofimática > Rexistrar módulo DNIe PKCS#11'.
  • Comprobamos que se instalou o certificado no navegador Web en 'Editar > Preferencias > Opcións avanzadas > Cifrado > Ver certificados > Autoridares > DIRECCION GENERAL DE LA POLICIA'.
  • Instalamos o dispositivo de seguridad no navegador Web en 'Editar > Preferencias > Opcións avanzadas > Cifrado > Dispositivos de seguranza > Cargar'. Indicamos como nome "DNIe PKCS#11", e como ruta '/usr/lib/opensc-pkcs11.so'.
  • Reiniciamos o navegador Web e volvemos a 'Dispositivos de seguranza' para comprobar que agora un dos 'Virtual Slot' aparece como 'DNI electrónico (PIN1)' ó meter o DNIe no lector. Se pinchamos nel pediranos o PIN que nos entregaron na policía.
  • Agora xa podemos usar o DNIe para identificarnos nas Web que o implementen. Esta páxina é so para verificar que a identificación co navegador Web funciona: http://www.dnielectronico.es/como_utilizar_el_dnie/verificar.html


Tutoriais:
  • http://nauj27.com/blog/2009/11/17/dnie-en-ubuntu-9-10-karmic-koala/
  • http://bitelia.com/2009/12/como-instalar-un-lector-de-dnie-en-ubuntu-9-10
  • http://monkiki.wordpress.com/2010/02/09/instalacion-y-uso-del-dni-electronico-en-ubuntu/
  • http://www.agnix.org/?q=node/2493



Utilidades:

viernes, 10 de diciembre de 2010

Cambio a Pepephone

Me acabo de cambiar a Pepephone para poder tener una tarifa sin establecimiento de llamada.

Yo hago muchas llamadas cortas y otras muchas son cortas lo quieras o no (sale un buzón de voz, un fax, se corta nada más descuelgan, no se escucha nada al otro lado...). No me gusta pagar 0,15€ cada vez que sucede esto. Además si no pagas el establecimiento puedes hacer más llamdas del tipo "Dónde estás" por el mismo precio.

La tarifa que permite esto es la Tarifa Movilonia (http://www.pepephone.com/tarifamovilonia/).

0,12€ por minuto puede parecer caro, pero si la llamada se alarga pasa a 0,07€/min. con lo que comparado con una tarifa constante de 0,07€/min. + 0,15€ de establecimiento, sale más o menos igual (http://www.movilonia.com/tarifa-movil-sin-establecimiento-llamada-pepephone-movilonia-vip/comparativas/).

La configuración es la siguiente:
  • Internet: APN=gprsmov.pepephone.com
  • SMS: Centro de servicio=+34607003110
  • MMS: APN=mms.pepephone.com, usuario=wap@wap, Contraseña=wap125, IP Proxy= 212.073.032.010, Puerto Proxy=80, Servidor de Mensajes=http://mms.pepephone.com/servlets/mms
  • En el panel de control Web se puede solicitar que nos envíen la configuración anterior a nuestro teléfono.
  • Activar llamadas perdidas: primero desactivamos el buzón de voz y todos los desvíos con ##002# y tecla de llamada o envío. Finalmente **62*603000603# y tecla de llamada o envío.
El servicio de llamadas perdidas es al contrario que Simyo: da de menos. Solo avisan de las llamadas recibidas mientras estamos fuera de cobertura o con el teléfono apagado. P.e. cuando alguien nos llama mientras estamos hablando no nos mandan un SMS de aviso al acabar la conversación.

Se puede pedir a Atención al Cliente (1212 ,, 902337373 ,, 634501212 ,, pepephone@pepephone.com) que nuestro teléfono de fuera de cobertura cuando nos llaman mientras estamos hablando (en lugar de dar comunicando), en cuyo caso sí nos llegaría un SMS avisando. Me da la impresión de que es una especie de apaño no fiable y no hay ningún código USSD para hacerlo uno mismo.

martes, 16 de marzo de 2010

Script Bash de copia de seguridade de Gnu a Samba

# Copyright 2010 Adrián Chapela, Manuel Cameselle
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.

# ==============================================================
# Copia de seguridade GNU de disco local a unidade de rede Samba v1.1
# ==============================================================
#
# O script, copia DIR_CONFIGURACION e copia comprimidos DIR_DOCUMENTOS, DIR_CORREO e DIR_ESCRITORIO por rede
# mediante Samba a //SMB_SERVER/SMB_SHARE. Suponse que o usuario ten como login 'usuario1', que existe o directorio
# local '/mnt/snap', que o servidor Samba chámase 'snap' que ten unha carpeta no raíz chamada 'backups' e que
# o acceso é mediante un usuario con login 'usuario_samba' con permiso de acceso total a dito subdirectorio.
# Na variable 'limite_copias' indícase a antigüedade máxima das copias (eliminaránse as que excedan).
# Suponse que o script executarase dende a propio directorio no que está. Se non hai que cambiar 'LOG_FILE'.
# Ó acabar a copia ordéase o apagado do equipo.
#
# O uso recomendado é:
# 1.- Pechar a sesión gráfica (para asegurar que non perdamos nada cando apaguemos o equipo)
# 2.- Lanzar o script
# Para non ter problemas de permisos, podemos lanzar o script como root, pero non convén deixar aberta a sesión de root,
# así que hay que bloqueala ou pechala sen que o proceso de copia morra. Para facer isto nunha sesión de texto:
# 1.- Entramos como root
# 2.- executamos 'screen'
# 3.- Lanzamos o script (p.e. ./copia_seguridade_gnu_a_samba.sh usuario1)
# 4.- Saímos de screen con 'CTRL+a d'
# 4.- Saímos da sesión de root con 'exit'

#!/bin/bash
# Copia de seguridade

#Recibe o nome (login) do usuario do que queremos facer a copia.

#Configuracións USUARIO
usuario=$1
DIR_DOCUMENTOS=/home/$1/Documentos
DIR_CORREO=/home/$1/.mozilla-thunderbird
DIR_ESCRITORIO=/home/$1/Escritorio
DIR_CONFIGURACION=/etc


#Posible mellora: xerar un array de directorios para poder engadir ou quitar directorios fácilmente
#Posible mellora: xerar un array de directorios/ficheiros para excluir da copia

#Ficheiros LOG
LOG_FILE=/var/log/$0.log
#OLLO: o script debe executarse dende o directorio onde está, porque senón $0 collería a ruta completa...
ERROR_LOG_FILE=/tmp/erro

MOUNT_ERROR=/tmp/mount_error

# Samba datos
SMB_USER=administrador
#Se non cubrimos a password (recomendado) pedirase por consola...
SMB_PWD=
SMB_MOUNT=/mnt/snap
SMB_SERVER=snap
SMB_SHARE=backups

# Variables de control
MONTADO=0
fin=0
x=0
num=10
cantidade_copias=0
limite_copias=5

#########
#Funcións
#########
function imprime {
#imprime en pantalla o texto e ademais o engade a ficheiro

echo $1 #se queremos recibir unha data aquí ten que estar nun formato "compacto" coma `date +%d-%m-%Y_%H:%M:%S`
echo $1 >>$2
}

function copia {
#copia o contido indicado (opcionalmente con compresión)
#Parámetros:
# $1 -> nome do directorio destino (doc, escritorio, correo, etc)
# $2 -> ruta do directorio orixe (DIR_DOCUMENTOS, DIR_CORREO, DIR_ESCRITORIO)
# $3 -> tipo de copia (f=tar.gz, d=directorio)

if [ ! -d "$SMB_MOUNT/clientes/$usuario/$1" ]; then
imprime "O directorio $SMB_MOUNT/clientes/$usuario/$1 non existía -> creámolo." $LOG_FILE
mkdir $SMB_MOUNT/clientes/$usuario/$1
fi

imprime `date +%d-%m-%Y_%H:%M:%S`" - Copiando '$1': '$2'..." $LOG_FILE
if [ $3 = "f" ]; then
tar cvfz $SMB_MOUNT/clientes/$usuario/$1/$1-`date +%d-%m-%Y`.tar.gz $2 2> $ERROR_LOG_FILE
elif [ $3 = "d" ]; then
mkdir $SMB_MOUNT/clientes/$usuario/$1/$1-`date +%d-%m-%Y`
cp -vRu $2/* $SMB_MOUNT/clientes/$usuario/$1/$1-`date +%d-%m-%Y`/ 2> $ERROR_LOG_FILE
fi
cat $ERROR_LOG_FILE >> $LOG_FILE
imprime `date +%d-%m-%Y_%H:%M:%S`" - '$1' copiado." $LOG_FILE

#Cantidade de copias
cantidade_copias=`ls -l $SMB_MOUNT/clientes/$usuario/$1/ |grep $1- |wc -l`
if [ $cantidade_copias -gt $limite_copias ]; then
imprime `date +%d-%m-%Y_%H:%M:%S`" - Cantidade de copias de '$1' maior ao límite. Borrando antigas..." $LOG_FILE
cantidade_copias=0
rm -rf `find $SMB_MOUNT/clientes/$usuario/$1 -type $3 -mtime +$limite_copias` 2>> $LOG_FILE
fi
}

#################
#Script principal
#################
imprime `date +%d-%m-%Y_%H:%M:%S`" - Iniciando aplicación..." $LOG_FILE

if [ "$1" != "" ]; then
while [ $MONTADO -lt 1 ]; do
if [ "$SMB_PWD" != "" ]; then
mount -t smbfs -o username=$SMB_USER,password=$SMB_PWD //$SMB_SERVER/$SMB_SHARE $SMB_MOUNT &> $MOUNT_ERROR
else
echo "Introduza contrasinal de '"$SMB_USER"' en '"$SMB_SERVER"'"
mount -t smbfs -o username=$SMB_USER //$SMB_SERVER/$SMB_SHARE $SMB_MOUNT &> $MOUNT_ERROR
fi

cat $MOUNT_ERROR >> $LOG_FILE

MONTADO=`mount |grep //$SMB_SERVER/$SMB_SHARE| wc -l`

if [ $x -gt $num ]; then
MONTADO=1
fi

sleep 5

let x=x+1

if [ $x -gt "1" ]; then
imprime "Reintento "$x $LOG_FILE
imprime "########################" $LOG_FILE
fi
done

if [ $x -lt $num ]; then
if [ ! -d "$SMB_MOUNT/clientes/$usuario" ]; then
imprime "O directorio $SMB_MOUNT/clientes/$usuario non existía -> creámolo." $LOG_FILE
mkdir $SMB_MOUNT/clientes/$usuario
fi

#Documentación, proxectos variados (tar.gz)
if [ "$DIR_DOCUMENTOS" != "" ]; then
copia "doc" $DIR_DOCUMENTOS "f"
fi

#Correo electrónico (tar.gz)
if [ "$DIR_CORREO" != "" ]; then
copia "correo" $DIR_CORREO "f"
fi

#Carpeta Escritorio (tar.gz)
if [ "$DIR_ESCRITORIO" != "" ]; then
copia "escritorio" $DIR_ESCRITORIO "f"
fi

#Configuración equipo (copia directorio sen compresión)
if [ "$DIR_CONFIGURACION" != "" ]; then
copia "etc" $DIR_CONFIGURACION "d"
fi

umount $SMB_MOUNT
else
imprime `date +%d-%m-%Y_%H:%M:%S`" - Erro montando Samba - Anulamos copia." $LOG_FILE
fi

imprime `date +%d-%m-%Y_%H:%M:%S`" - Finalizamos aplicación e ordeamos o apagado do equipo..." $LOG_FILE

# Apagamos o equipo
shutdown -h now "Apagado por copia de seguridade"
else
imprime `date +%d-%m-%Y_%H:%M:%S`" - Debe indicar o usuario do que quere facer a copia - Anulamos copia." $LOG_FILE

imprime `date +%d-%m-%Y_%H:%M:%S`" - Finalizamos aplicación." $LOG_FILE
fi

lunes, 15 de marzo de 2010

Conferencia Richard Stallman

El jueves 30 de abril de 2009 (¡sí!, ¡hace casi un año! O:-), Richard Stallman (el mentor del software libre) dio en Vigo dos conferencias en español sobre el software libre y las patentes, respectivamente.

Software Libre:
  • Considera que el software debe ser libre por cuestiones éticas y de bien común para la sociedad.
  • Enumera 4 libertades que desde GNU describen el software libre:
  • Libertad 0: ejecutarlo -> sin restricciones
  • Libertad 1: modificarlo-> estudiarlo y adaptarlo (acceso al código fuente)
  • Libertad 2: copiarlo -> redistribuir copias
  • Libertad 3: distribuirlo -> redistribuir copias modificadas
  • Sin alguna de estas libertades falta, el software no es bueno para la sociedad ya que estamos atados de alguna u otra manera, lo que nos perjudicará a corto, medio o largo plazo.
  • Considera que las razones éticas son las únicas que garantizan el bienestar de la comunidad a largo plazo.
  • Aquellos, como Linus Torvalds, que apoyan al software libre por razones prácticas y no éticas, no hacen bien a la comunidad a largo plazo.
  • Insistió en que Ubuntu, Trisquel, Galinux, Debian, etc. son sistemas operativos GNU con kernel Linux. No le gusta que se llamen Linux ya que esto solo es el núcleo (una pequeña parte) y fue lo último que se añadió. Todo el trabajo hecho durante años por GNU queda marginado. Tampoco considera correcto GNU/Linux ya que equipara ambas cosas.

Patentes:
  • No cumplen con su propósito y en el campo de la informática son totalmente inadecuadas. No entra a valorar si pueden ser adecuadas en otros campos.

Comenzó con estilo serio, aunque "pintoresco", pero tuvo bastantes momentos de humor:
  • Sobre la piratería piensa que no está bien atacar barcos con otros barcos.
  • Sobre la piratería informática piensa que no está bien atacar barcos con ordenadores.
  • Sorprendió con su dominio del español realizando varios juegos de palabras como "Te quiero mucho" (mientras bebía té) o "Por las noches quierote".
  • Al final se disfrazó de fiel de la iglesia "emacs".

Mucho después me enteré de que hace años que escribió un libro (libre, claro :-) sobre estas dos cuestiones. Se puede comprar la edición impresa, descargar la edición digital gratuitamente o ver la edición digital online.

Si no me equivoco volverá a estar en Vigo este 30 de abril de 2010.

jueves, 11 de marzo de 2010

Error VPN en Galinux/Ubuntu 9.10

Na 9.04 a autenticación de 'Certificados (TLS)' funcionaba ben, pero na 9.10 hai que facer o seguinte cambio (apaño):
  • Cambiar o tipo de autenticación de 'Certificados (TLS)' a 'Contrasinal con certificados (TLS)' e ¡inventarse un usuario, contrasinal e contrasinal de chave privada!.