miércoles, 26 de marzo de 2014

Aunque parezca increíble, hoy me he comprado un libro sobre Windows.



Para ser exactos The Windows Command Line Beguinner's Guide. Parece una incongruencia, pero lo que ocurre es que cada día me siento más ignorante respecto al sistema operativo Windows. No es un grave problema, ya que no lo utilizo, salvo raras excepciones, pero cuando me preguntan sobre los problemas que tienen todos los días las personas que me rodean, me doy cuenta de que me estoy olvidando totalmente de la forma en que funciona ese SO que también fue el mío durante muchos años. Así que cuando tenga un rato libre, me leeré ese folleto para recordar viejos tiempos, y de paso conocer una parte que no usaba mucho cuando era "Windows User", sus comandos. Amazon tiene buen ojo (o me espía en la red) y debió darse cuenta de que necesitaba algo así y me lo ofreció a buen precio... ¿quién se iba a resistir?

PD. Así, de paso, recordaremos a MS-DOS. Los jóvenes no saben seguramente de que hablo, pero en otros tiempos era el sistema con el que hacíamos funcional los PCs (era un terminal puro y duro).

miércoles, 19 de marzo de 2014

Compresión y optimización de documentos PDF

He tenido un problema con un documento extraído directamente con un escáner. El pdf final presentaba una buena calidad de visionado, pero a costa de un tamaño excesivo. La solución podría haber sido extraer cada página, que no era más que una imagen, tratarla individualmente, y generar un nuevo pdf (como ya hemos hecho en ocasiones, empezando como aquí o aquí).



Como tenía que ser algo rápido, primero lo intenté haciendo una conversión a través de pdftk pasando de pdf a un documento ps de gran volumen, y luego reconvertirlo a pdf, que suele quedar más "ligero"

pdf2ps fichero.pdf resultado.ps

ps2pdf resultado.ps fichero.mas.pequeno.pdf

Si bien es cierto que logré una reducción de tamaño, y que el resultado mantenía mucha calidad, la reducción era solo del 20% y el documento seguía aun poco manejable para enviarlo por la red. Así que decidí aplicar el script shrinkpdf. La reducción fue espectacular, quedando alrededor del 8% del volumen original, pero era completamente ilegible. Finalmente, en este enlace encontré este script

#!/bin/bash

DPI=150
PDF_DESTINATION=""

help() {
echo "optimize_pdf help"
echo "-h : show this help"
echo "-d : (optional) output pdf document resolution, by default : 150"
echo "-s : pdf source file, this file must exist"
echo "-o : pdf output file"
}

full_path() {
if [ -z $1 ]; then
exit;
else
if [ `expr substr ${1:-a} 1 2` != "/" ]; then
FULL_FILE=`pwd`"/"$1
fi
fi
echo $FULL_FILE
}

isNumeric(){ echo "$@" | grep -q -v "[^0-9]" ;}

while getopts "s:o:d:h" flag
do
case $flag in
#Source : source file
"s")
PDF_FILE=`full_path $OPTARG`
if [ ! -e $PDF_FILE ]; then
echo "Please provide a valid source file"
exit=1
fi
;;
#Output : output file
"o")
PDF_DESTINATION=$OPTARG
;;
#Dpi : desired resolution
"d")
if [ -z `isNumeric $OPTARG` ]; then
DPI=$OPTARG
else
echo "Please provide a numeric value for your DPI"
exit=1
fi
;;
"h")
exit=1
;;
esac
done

#Is there a target file?
if [ -z $PDF_DESTINATION ]; then
echo "Please provide a file name for output"
exit=1
fi

#At least one error, we're not going any further
if [ $exit ]; then
help
exit
fi

pdftops \
-paper match \
-nocrop \
-noshrink \
-nocenter \
-level3 \
-q \
"$PDF_FILE" - \
| ps2pdf14 \
-dEmbedAllFonts=true \
-dUseFlateCompression=true \
-dOptimize=true \
-dProcessColorModel=/DeviceRGB \
-dUseCIEColor=true \
-r72 \
-dDownsampleGrayImages=true \
-dGrayImageResolution=$DPI \
-dAutoFilterGrayImages=false \
-dGrayImageDownsampleType=/Bicubic \
-dDownsampleMonoImages=true \
-dMonoImageResolution=$DPI \
-dMonoImageDownsampleType=/Bicubic \
-dDownsampleColorImages=true \
-dColorImageResolution=$DPI \
-dAutoFilterColorImages=false \
-dColorImageDownsampleType=/Bicubic \
-dPDFSETTINGS=/prepress \
- "$PDF_DESTINATION"


La guardé como texto plano y la ejecuté directamente

. optimize_pdf.sh -s input.pdf -o output.pdf

y con el conseguí una reducción al 25% y con un documento visible de forma aceptable. Como se puede ver, es fácil manejar alguno de los parámetros, aunque por la premura de tiempo no toqué nada. Cubiertas las necesidades en 1 segundo de computación.

¡Qué haríamos sin el terminal y sin los usuarios que dominan bash y nos regalan estas utilidades!

martes, 18 de marzo de 2014

Reinstalación por "Emergency mode". Sin solución, por ahora [ACTUALIZADA]

Desde el momento en que incluí el quinto disco en el ordenador he tenido un mensaje de Emergency mode

"Welcome to emergency mode! After logging in type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode."




que me obliga a comenzar siempre con Ctrl+D.
Después de reinstalar el sistema, con lo que de paso me he vuelto a gnome, el error sigue. Sin embargo ahora sé -o creo saber- cual es el origen. Según he revisado en la red, la razón fundamental para que systemd entre en "Emergency mode" es un error de montaje en uno de los dispositivos indicados en /etc/fstab. En la reinstalación he probado 3 discos distintos en la entrada 3 de la placa de entrada frontal y, a pesar de intentar repetidos arreglos, me ha dado error tras error en los discos introducidos a través de ese punto, tanto lo ponga en SATA 5 como SATA 6. Es resumen, espero que volviendo a fstab y comentando el dispositivo que no monta en arranque (hay que arrancar con el suelto y meterlo luego en caliente) espero repararlo, y a largo plazo pedir una camisa nueva para esa entrada.

[ACTUALIZACIÓN] Pues va a ser que no. fstab está bien y el error persiste. Cuando tenga tiempo tendré que revisar todos los logs. 

[ACTUALIZACIÓN 2] La solución, como es natural, es seguir las instrucciones del sistema. Leyendo los logs aparece un problema en la partición sdb1 (disco home) y recomienda e2fsck. Sencillo. Haré una entrada especial.

jueves, 13 de marzo de 2014

Una de manualidades y estaño

Se trata de una operación a corazón abierto de un ratón. Los síntomas eran muy graves; si bien la rueda permitía deslizarse y pulsar, los movimientos del ratón no se transmitían al monitor. El diagnóstico parecía claro; se habían soltado los conectores del emisor LED. Comenzamos la disección del paciente, y pudimos comprobar que así era. La luz no emitía salvo que se colocara correctamente




La solución más fácil era una eutanasia rápida y papelera, comprando uno nuevo. Pero en estos momentos es difícil encontrar ratones de portátil cableados (pequeños y de cable corto), ya que la moda lleva a inalámbricos, que además son mucho más caros.
Y por esas razones era preferible una recuperación del paciente. Para ello llamamos a un cirujano competente, hckorootx, curtido en la cirugía con estaño.
Por desgracia estaba rota las conexiones de cobre en la plancha, así que hubo que abrir una nueva conexión con cutter homologado y rascado fino (dilatación coronaria electrónica)



Y luego pegar de forma generosa el estaño para generar una nueva conexión (bypass)


Y listo


Cirugía rápida, indolora y de bajo coste. Le llevo más tiempo al ATS ayudante (yo mismo) volver a montar adecuadamente al paciente.

PD. El paciente ya está trabajando.

viernes, 7 de marzo de 2014

La "comodidad" del software propietario

Estos días unos cuantos compañeros me han pedido un curso acelerado y simple de R. Es decir, como entrar, como salir, como introducir datos y los comandos básicos, más algunos manuales para empezar a trabajar con este lenguaje estadístico y evitar otro software más caro, aunque quizás más fácil de empezar a usar.


A pesar de esto, mientras estoy preparando una guía para "dummies", me encuentro todos los días cómo estas mismas personas están trabajando con SPSS.


Nuestra Universidad ofrece este programa comercial para su uso interno. Por supuesto, SPSS es el paquete estadístico, de entre los que conozco, en el que más fácilmente se ejecutan órdenes, aunque no necesariamente donde más fácilmente se interpretan los resultados (sencillo "input", más complejo "output"). El problema fundamental está en que esa sencillez de hacer un análisis con dos clicks (a veces solo uno) hace parecer innecesario entender lo que estamos haciendo, con lo cual luego los usuarios básicos son incapaces de entender la salida. Peor aun, en ocasiones se aplican análisis equivocados, simplemente por que no saben que mecanismos internos ejecutan, y no conocen las características que deben cumplir las variables que entran en esos análisis.

Bien, es cierto que R, como programa que se ejecuta en un terminal, tiene una curva inicial más dura, o vertical, pero una vez superado este primer obstáculo, la propia rutina del programa nos obliga a saber lo que hacemos, al menos en parte, y nos ayda a entender más fácilmente lo que obtenemos, y cometer menos errores en la elección de las pruebas a realizar. Esperemos que tras el curso acelerado, al menos pueda hacer comprender este concepto.

Nos queda señalar que, como última contrapartida del software comercial, si por falta de presupuesto desaparece del portafolios de programas ofrecidos por las Universidades y administración, vamos a tener un problema grave si el personal no está preparado para usar otro software menos intuitivo, pero quizás más completo y versátil...

y además de libre, gratuito, mira tú.

jueves, 6 de marzo de 2014

Windows y el retorno de carro

En ocasiones los diferentes comportamientos de los sistemas operativos nos causan algunos problemillas. Como es bien sabido, Windows domina el mercado, y eso nos supone a los usuarios de Linux que tenemos que llevar todo nuestro material preparado para "otro" SO, ya que raramente encontraremos dispositivos con el nuestro. En general eso no es ningún problema, ya que es algo que llevamos siempre en mente, pero en ocasiones tenemos algunos "olvidos".
En este caso, aparte de la presentación habitual, transformada a PDF y proyectada por impressive, para evitar alteraciones de fuentes y descolocación de imágenes, llevaba ficheros de texto plano con comandos de R. La intención de llevar texto plano era que siempre en más seguro copiar los comandos desde un programa básico de texto plano y pegarlos en R que hacerlo desde un tratamiento de textos más complejo, ya que puede alterar algunos caracteres (comillas, por ejemplo). Como bien sabemos, Windows introduce un carácter de retorno de carro antes del que indica cambio de línea (CR + LF), como hacen Linux y Mac OS (LF). Eso significa que cuando se lee un fichero de texto plano de origen Linux en un bloc de notas sale algo parecido a esto (imagen forzada, pero nos sirve para la explicación)


Y así  es como que quedó a mi la lista de comandos cuando la quise enseñar. Y así la estaban viendo los alumnos en sus dispositivos. Para solucionar el problema la preparé para que llevara los comandos adecuados (CR + LF).
¿Cómo realicé el cambio? Lo intenté inicialmente mediante el comando sed (ver aquí más información), pero por alguna razón no me funcionaba, así que recurrí a unix2dos (que realmente está incluido en el paquete dos2unix). Simplemente instalamos el paquete

su -c 'yum install dos2unix'
   palabra admin

y aplicamos

unix2dos -n ficheroprevio.txt fichero nuevo.txt

y ya está. Fácil.


Más fácil sería si no me hubiera olvidado de estas cosas, que saberlas las sé, al menos algunas.