Mostrando entradas con la etiqueta Terminal. Mostrar todas las entradas
Mostrando entradas con la etiqueta Terminal. Mostrar todas las entradas

miércoles, 8 de noviembre de 2023

Fedora 39. Rápido y sin problemas, como de costumbre

No vamos a contar el cuento de todas las veces anteriores. Para los detalles, lea esta entrada

Igual de rápido y sin problemas. Nada más que decir. Por cierto, precioso fondo.



martes, 25 de abril de 2023

Fedora 38: la actualización es cada vez más sencilla

A pesar de que he intentado esperar un mes antes de actualizar a Fedora 38, no me he podido resistir y he transformado mis tres ordenadores principales (trabajo, casa y portátil personal).

Impresiones... Cada vez más fácil. Fue tal que así (ejecución como administrador):

dnf upgrade --refresh # sin problemas

dnf install dnf-plugin.system-upgrade # solo preciso en el portátil

dnf system-upgrade download --releasever=38

Un solo problema aquí, con una incompatibilidad entre la librería libheif instalada y la futura de fedora 38. Hubo que desinstalarla para que el proceso siguiera. Sin embargo, no fue necesario aplicar --allowerasing, siempre necesario hasta ahora. La carga necesitó entre 11 y 19 minutos, según ordenador. El que más necesitó, aparte de la velocidad de la red, tenía que bajar 3807 paquetes, 6,1GB

dnf system-upgrade reboot

Listo. Luego revisé lo más importante:

1. Si no se había modificado el fichero 90-override.conf de /etc/sysctl.d, donde incluyo kernel.sysrq = 1 para activar las teclas mágicas y fs.inotify.max_user_watches = 300000 para que dropbox no proteste por los ficheros que puede abrir. Sin problemas.

2. Estado de Dropbox - activo  y sin problemas

3. Demonio onedrive - activo  y sin problemas

4. Control de extensiones de gnome - hubo que actualizar casi todas y alguna ya no era compatible y hubo que eliminarla. Ningún problema. Cada día uso menos...

5. Aprovechando la situación, actualización de paquetes de R mediante update.packages(ask = F) dentro de R (que se actualice R no quiere decir que se actualicen los paquetes internos, que no dependen de Fedora)

Listo. Todo actualizado, sin pérdida de datos.

Tengo que decir que ni siquiera había realizado copia de seguridad, por varias razones: 

1. Siempre ha funcionado.

2. La aplique primero en el ordenador que no contiene la copia maestra.

3. La que pesó más, actualicé tan rápido debido a las discusiones que tengo en diferentes foros frente a los fanboys de Ubuntu. Como me caliento, no me pude contener. Defectos que tiene uno.

miércoles, 30 de octubre de 2019

Actualización a Fedora 31 por comandos. Esta vez sí

Esta vez, al contrario que cuando lo intenté para hacer el salto Fedora 29 a 30, todo ha ido como la seda. Los mismos comandos de siempre:

su - # Terminal  en administrador para evitar teclear demasiado

dnf upgrade --refresh # Actualización del sistema (reboot, por que cambió kernel...)

dnf install dnf-plugin-system-upgrade # Plugin de actualización

dnf system-upgrade download --releasever=31 # Inicia la actualización y baja el software

dnf system-upgrade reboot # Reinicia y actualiza todo

Dos ordenadores; el primero alrededor de 2890 paquetes, 4,4GB, bajo los paquetes en 7 minutos (11MB/s, aproximadamente) y el segundo más de 2900 paquetes, 4,3 GB en 3 minutos y 20 segundos (23MB/s). Luego el primero tardó un total de 30 minutos en terminar toda la actualización. El segundo, a sabiendas de que iba a tardar más, por que es más viejo y lento, lo dejé con los comandos enlazados (&& si y solo si ha terminado bien el primero, ejecuta el segundo)

dnf system-upgrade download --releasever=31 && dnf system-upgrade reboot

y lo deje a su aire, con lo que no medí el tiempo. Los dos arrancan bien y el único defecto son algunas extensiones de gnome


y que no hay manera de ver el icono de Dropbox en el panel superior.

Solo me falta el portátil. Si hay alguna variación, actualizaré la entrada.

Ventajas: rápido, fácil, software instalado, no hay que modificar configuraciones...
Inconveniente: con lo que nos divierte instalar desde cero, particionar discos, faltarle al respeto a los programadores...
Sin un solo fallo. Casi vale la pena aplicar la actualización grafica para dummies en la aplicación software.

[ACTUALIZACIÓN:] El portátil igual de bien

miércoles, 13 de marzo de 2019

bchunk: extracción de pistas de un disco de música con formato bin cue

En ocasiones podemos encontrar entre los extras de un DVD de una película la banda sonora. Como ya he dicho hace poco, estay con la idea de eliminar completamente todas las unidades ópticas de los ordenadores y los Cds y DVDs, que ocupan mucho sitio, se leen muy lentamente y, al contrario de lo que pensábamos hace años, ahora sabemos que no podemos asegurar su duración en el tiempo. El último DVD con el que he estado transformando para eliminarlo, la unidad con extras presenta una banda sonora que se extrae como un fichero bin,


una imagen en formato binario, cuyas pistas están referenciadas por un fichero cue. Este formato no es manejable en los dispositivos que usamos para escuchar la música. Muchas páginas Web recomiendan IsoBuster para la extracción de las pistas; pero IsoBuster es un programa para Windows, y aunque en su página Web nos recuerda que podemos usar Wine, creo que todos los usuaros de Linux preferimos usar un comando en terminal que tener que instalar un paquete de Windows. Y esto nos lleva a bchunk.
bchunk (BinChunker) es un programa que nos permite, como dice su página Web "binchunker converts a CD image in a ".bin / .cue" format (sometimes ".raw / .cue") to a set of .iso and .cdr tracks". Es decir, simplemente con esta orden

bchunk fichero.bin fichero.cue nombre.bso

nos extrae de una imagen bin de un disco de audio las pistas en formado cdr. Si queremos extraer un formato más sencillo de manejar (para la transformación de un cdr precisamos SoX —Sound eXchange, the Swiss Army knife of audio manipulation, como podéis ver en man sox—), con la opción -w extrae las pistas en formato WAV. Es decir,

bchunk -w fichero.bin fichero.cue nombre.bso

extrae las piezas de música en formato wav. Luego con cualquier conversor (a mi me gusta soundkonverter) lo podemos comprimir en flac sin pérdida y/o pasarlo al formato que queramos. Yo suelo guardar los originales ripeados en formato FLAC sin pérdida, que queda aproximadamente en la mitad de tamaño que un wav; si luego vuestros dispositivos necesitan otro formato, por ejemplo MP3, lo generáis desde el FLAC y siempre se conserva una copia sin pérdida.
Para más opciones, revisen man bchunk, donde explica algunas características especiales para imágenes bin en formatos PSX o raw.

martes, 8 de enero de 2019

Conversión de un PDF a imagen. Imagemagick, convert y la calidad obtenida

Al contrario que la entrada anterior, ahora me han pedido que convirtiera una ficha editable en una imagen. Lo más sencillo es convertir el ODT en writer a pdf y este a una imagen con convert (comando de imagemagick),


sin importar el número de páginas, ya que convert convierte a cada una en una imagen.

$ convert fichero.pdf fichero.png  # o jpg, según las posibilidades del programa destino

El problema es la calidad de salida. Para PDFs con texto e imágenes, los resultados salen mejor introduciendo algunos parámetros

$ convert -density 300 -quality 96 fichero.pdf fichero.png

Y así sale de manera adecuada. Y si no, que cada uno se ajuste a las muchas posibilidades de convert

man convert

Nada como un terminal pata negra



lunes, 22 de octubre de 2018

Cuando nos olvidamos de tune2fs...

Cada vez que compramos un disco duro y lo formateamos para nuestro uso no debemos olvidarnos de revisar como se distribuye su espacio, por que el sistema operativo puede estar "sisándonos" parte del espacio. Cada vez que formateamos a ext4 un disco, reserva un 5% para root; sí, ese que solo es necesario de vez en cuando. Solo es necesario mantener una parte del disco para root en el disco de sistema; los demás no necesitan darle medio diezmo al administrador, y muchas veces nos olvidamos. Y lo digo por que yo me he olvidado en las últimas adquisiciones, como descubrí el otro día. Pero no hay que preocuparse, tune2f nos lo soluciona, como ya había señalado aquí y aquí y luego olvidado.
Para estar seguros, primero comprobamos como se distribuye el disco tras su formateo:

su -c 'tune2fs -l /dev/sdxn' # o sudo para los amantes del riesgo

y buscamos:

...
Block count:                   x # Según en disco
Reserved block count:              1/5 x # Seguro que no da cero

...

Ejemplo para disco sistema 256GB:

Block count:              244190456
Reserved block count:     12209522

Si es así, podemos aplicar la medicina

su -c 'tune2fs -r 0 /dev/sdxn'  # -r reserved-block-count

o

su -c 'tune2fs -m 0 /dev/sdxn' # -m reserved-block-percentage

El valor x depende según la identificación del dispositivo (a, b, c...) y n según la partición, lo que vuelve a cero los bloques reservados. En el caso de ser un disco de sistema debemos dejar algo para root, para evitar que en algún momento el disco pueda quedar sin espacio y el sistema no pueda escribir los ficheros log. Es decir, hay que mantener un porcentaje razonable en función del tamaño de disco, que visto el tamaño de los discos de hoy, y aunque antes haya recomendado un 2%, creo que ahora con un 1% es más que se sobra.

No os olvidéis. Lo digo por que un 5% de los discos actuales es mucho espacio.



martes, 27 de febrero de 2018

Diferentes formas de sustituir caracteres por un Intro/Enter. Expresiones regulares

De una columna de usuarios obtenida de Moodle he extraído una lista separada por comas. Como tenía que terminar haciendo una lista de usuarios con una apariencia presentable, había que sustituir la coma por un INTRO. El primer pensamiento fue hacerlo en Writer; en buscar y sustituir tenemos que indicar un grupo de caracteres que signifiquen INTRO. INTRO es un símbolo especial que debe ser representado con un símbolo de escape previo, es decir un "backslash" \, y luego una n; \n representa un INTRO. Simplemente así:


sin olvidar activar las Expresiones regulares o 'RegEx'  (como es considerado \), ya que si no lo sustituiría por \n sin más.

Luego me dije que gedit también lo puede hacer, y sí puede. La forma es en todo similar; buscar y reemplazar, activar Expresión regular y poner de nuevo \n


Y finalmente el amigo hckorootx lo ha perfeccionado para el terminal con el comando sed; aquí el resumen que me ha mandado:
"La sintaxis no es muy complicada:
$ sed 's/texto_original/texto_nuevo/g' -i fichero.txt
donde:
s/ --> comando SUSTITUIR (por defecto, solo se sustituye la primera coincidencia).
/g --> opción del comando s/ que obliga a sustituir todas las coincidencias hasta fin de fichero.
-i --> sobreescritura directa del fichero pasado como argumento."


Así que una pequeña prueba de demostración:



El terminal gana por rapidez, como siempre, con una simple línea así:
sed 's/\,/\n/g' -i prueba.coma.txt

Aquí incluyo una lista de Expresiones regulares que puede ser útil conocer.

martes, 24 de octubre de 2017

Manipulando vídeos en el terminal: mencoder

Muchas veces tenemos vídeos muy interesantes, pero demasiado largos para ser utilizados en una clase o charla. El inconveniente está en poder separar un fragmento y adaptar ese fragmento para que pueda ser proyectado en cualquier PC, sobre todo si no se conservan las tomas iniciales para volver a montar el trozo necesario.

En este caso tenemos un vídeo de 2014, resolución 640x480 —no recuerdo por que se grabó en esta resolución—, con codificación h264 de video y AAC de audio. La duración es de 37 minutos y 50 segundos de los que nos interesaba tener solo el fragmento desde 9'07'' hasta 11'07''. Estoy seguro que existen muchas formas gráficas de extraer ese fragmento, e incluso páginas web donde se podría realizar, pero ninguna tan rápida como esta orden de terminal:

mencoder -ss 00:09:07 -endpos 00:11:07 -oac pcm -ovc copy video.mp4 -o fragmento.mp4


Por alguna razón que aun estoy revisando no me permitió hacer -oac copy —una entrada para el futuro—. En todo caso, en mi ordenador y en mi portátil el fragmento, al igual que el vídeo original, funciona perfectamente, pero muchos ordenadores con Windows 7 y Windows 10 que he probado en diferentes salas no disponen de decodificadores para leer estos video y/o audio, así que lo más sencillo es reconvertirlo a un avi con los clásicos XviD/DivX y MP3. De nuevo podemos afirmar que existen muchas formas gráficas de hacerlo, pero de nuevo ninguna tan rápida como el terminal:


mencoder fragmento.mp4 -oac mp3lame -ovc xvid -lameopts preset=standard:fast -xvidencopts pass=1 -o fragmento.avi



Más rápido, imposible.

PD. Para más información
Codificación básica con mencoder
Mencoder en archlinux

viernes, 17 de marzo de 2017

Nautilus. Problemas... ¿con vlc?



Desde hace un tiempo —largo, no me acuerdo cuando empezó— estoy teniendo problemas con nautilus. El sistema —Fedora 25, pero también con 24 y 23...— se inicia, llamo a nautilus, trabajo en lo que sea y, tarde o temprano, nautilus se bloquea y hay que recurrir al teminal y matarlo

killall nautilus

Debido a ello normalmente llamo a nautilus desde el terminal, para leer los errores y comprender que pasa. En general los errores son del tipo

Stream with high frequencies VQ coding
libpng warning: iCCP: known incorrect sRGB profile

que asocio a un plugin de conversión de imágenes,

[00007f5f38d31c08] core decoder error: failed to create audio output
[000055be0e896ee8] pulse audio output error: digital pass-through stream connection failure: No soportado
[000055be0e896ee8] core audio output error: module not functional
[00007f5f38d57de8] core decoder error: failed to create audio output

que asumo que es algún sonido con codec no soportado,

pero cuando se bloquea todo los errores suelen ser

VLC media player 3.0.0-git Vetinari (revision 2.2.0-git-10582-g9eb9eb0bd2)
[00005596eb6311c8] core libvlc: Ejecutar vlc con la interfaz predeterminada. Use «cvlc» para usar vlc sin interfaz.
Failed to open VDPAU backend libvdpau_va_gl.so: cannot open shared object file: No such file or directory
QObject::~QObject: Timers cannot be stopped from another thread

que deberíamos asociar a VLC. El problema está en que muchos bloqueos se hacen sin que haya llamado a VLC o a cualquier vídeo.

Lo llevo con resignación. Una pequeña cruz de cada día

jueves, 15 de diciembre de 2016

sysqr no responde. ¿Dónde se activan las teclas mágicas?

Esta entrada tiene cierta relación con la anterior. En los tres ordenadores que tengo funcionando con Fedora 25, dos funcionan perfectamente con Wayland, descontando algunas alteraciones que iré explicando cuando las comprenda, pero un tercero, el más potente, el más moderno, muestra ciertas respuestas extrañas cuando está en el sistema gráfico Wayland. Fundamentalmente, el sistema muestra una granulación en el monitor y a partir de ese momento deja de responder a las órdenes gráficas y no deja llamar a un escritorio de texto (Ctrl+Alt+ F2 a F7, siendo F1 el que soporta el sistema gráfico). Este ordenador es el único que tiene una tarjeta gráfica externa, nVidia, por cierto; los demás llevan gráficas de Intel incorporadas en el procesador, y lo digo por si eso tiene que ver y alguno ve la relación. Además las primeras veces que se me bloqueó  el sistema no fui capaz de realizar una salida ordenada mediante sysrq (REISUB) y tuve que saltar el sistema con la tecla de reseteo.
Como había indicado en una entrada en la instalación de Fedora 18, la localización de los ficheros de configuración del sistema había cambiado de Fedora 17, /etc/sysctl.conf, al directorio /usr/lib/sysctl.d en Fedora 18, actuando desde  ese momento en el fichero /usr/lib/sysctl.d/00-system.conf. Y así apliqué tras la instalación de Fedora 25


y sin embargo no se ejecutaba la orden AltGr+ImpPant + REISUB.  Para comprender lo que supone, cada una de las letras ejecuta lo siguiente:

R pone el teclado en modo RAW (recobrar el control desde el entorno gráfico X al teclado)
E termina todos los procesos (end) (envía el comando Sigterm a todos los procesos, para finalizarlos ordenadamente)
I interrumpe todos los procesos (envía el comando Sigkill a todos los procesos, para forzar su terminación)
S sincroniza el disco duro (synchronize, descargar datos de la memoria a los ficheros en el disco duro)
U desmonta todos los sistemas de ficheros (unmount y volver a montar los sistemas de ficheros como de solo lectura)
B reinicia la máquina (reBoot)


Para evitar un tercer reseteo estuve evaluando los diferentes ficheros de configuración —/usr/lib/sysctl.d/— y en el fichero 50-default.conf aparece un mensaje así

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See sysctl.d(5) and core(5) for documentation.

# To override settings in this file, create a local file in /etc
# (e.g. /etc/sysctl.d/90-override.conf), and put any assignments
# there.

# System Request functionality of the kernel (SYNC)
#
# Use kernel.sysrq = 1 to allow all keys.
# See http://fedoraproject.org/wiki/QA/Sysrq for a list of values and keys.
kernel.sysrq = 16

Para que veamos lo que supone cada número dentro del sysrq, el orden es:

0 - disable sysrq completely
1 - enable all functions of sysrq
>1 - bitmask of allowed sysrq functions (see below for detailed function description):
     2 - enable control of console logging level
     4 - enable control of keyboard (SAK, unraw)
     8 - enable debugging dumps of processes etc.
     16 - enable sync command
     32 - enable remount read-only
     64 - enable signalling of processes (term, kill, oom-kill)
     128 - allow reboot/poweroff
     256 - allow nicing of all RT tasks

Es decir, la el comando kernel.sysrq = 1 ejecutado en el primer fichero (00) de configuración es anulada por la kernel.sysrq = 16 colocado por systemd (50). Así que he sido obediente a systemd y he trasladado a un fichero /etc/sysctl.d/90-override.conf kernel.sysrq = 1, dejándolo fuera del directorio de configuración, y lo he eliminado del fichero 00. Algo exclusivo este systemd


Listo

lunes, 27 de abril de 2015

Cuando la máscara gráfica nos engaña...

, siempre nos queda el terminal.
¿A que me refiero? Muy simple. Tengo una impresora Canon  i-Sensys MF6140dn. Es capaz de escanear a doble cara y guardar en diferentes formatos los resultados. El problema fundamental es que no consigo que se comunique con mi ordenador. Controlo la máquina, la administro desde Linux, puedo bloquear usuarios, pero no se comunica como impresora, escáner o fax a mi equipo —o al menos aun no he sido capaz de lograrlo—; como solución escaneo y guardo los resultados en dispositivos USB. Curiosamente el otro día escaneé uno documento una primera vez y no fui capaz de verlo en Nautilus; creyendo que no se había guardado o que en una extracción rápida a lo mejor se había corrompido —solo admite dispositivos FAT32— lo volví a escanear, y seguía sin salir. Sin embargo, s epodía ver como iba guardando como scan0001, scan0002... hasta 0005; es decir, tenía los documentos de 0000 a 0005, lo que eran solo copias del mismo trabajo de escaneo. Al observarlo en el terminal, aparecían todos los ficheros ocultos a nautilus, y al copiarlos en un directorio, ya aparecían también de forma gráfica.
En resumen, no te fíes de la apariencia gráfica, que no siempre es verdadera, sobre todo en unidades USB que se montan y desmontan de forma seguida o CDs que extraes y pones otro a continuación. Las máscaras gráficas parecen mantener en memoria un aspecto gráfico que no se corresponde al dispositivo.


miércoles, 21 de enero de 2015

¿Cuánto espacio tiene realmente un disco de 5TB? tune2fs

La pregunta que siempre nos hacemos es ¿cuánto me queda de la cantidad teórica que tiene un disco? Como bien sabemos las compañías que fabrican discos pueden decir que 1GB es 1000 MB, en vez de 1024 y 1TB son 1000GB, en vez de 1024, con lo que 5 TB (5x1024x1024), en vez de 5.242.880 MB son aproximadamente 4,6TB (algo más de 4.800.000 MB). Sobre eso no hay más que discutir, ya que está legalmente aceptado. Lo segundo es que al formatear el disco duro en ext4, el sistema se guarda el 5% para root, bloqueando el uso de más de 200GB (ver aquí, por ejemplo) al usuario normal. Si aplicamos tune2fs en la partición correspondiente (en este caso sdd1)

su -c 'tune2fs -m 0 /dev/sdd1' # -m reserved-block-percentage

al poner la opción m en cero el dispositivo sdd, partición completa sdd1 no retiene ningún sector para root y queda todo disponible para el usuario.


Solo mantengo un porcentaje reservado a root en sda1, el disco sólido en el que está instalado el sistema. Como se puede ver en la imagen, hemos liberado más de 200GB del disco de 5TB teóricos (4,6 reales).

jueves, 13 de noviembre de 2014

Extracción de imágenes desde un vídeo mkv

Recordemos ese vídeo que extraímos hace unos días de un DVD y convertimos en mkv utilizando de Handbrake, y que luego recortamos mediante avidemux. De ese vídeo me han preguntado si era capaz de extraer unas imágenes en jpg para utilizarlas individualmente sin tener que incluir un vídeo. Por supuesto dije que sí. Luego estuve valorando las diferentes posibilidades.
Primera, avidemux, pero no descubrí la forma de extraer imágenes fuera de ir pidiendo de una en una (File -> Save image). Siempre es mejor sacar tiras completas para escoger la que nos de la mejor visualización.
Segunda opción por mi conocida; si disponemos de un vídeo con formato adecuado para él, VirtualDub nos convierte un vídeo en una tira de imágenes en milésimas de segundo. Aunque es una aplicación pensada para windows, podemos utilizarla en Linux, por que VirtualDub funciona perfectamente por wine. El problema es que nos exigiría una codificación más, ya que VirtualDub solo admite "Video for Windows (VFW) compatible codec..."


y es preferible evitarlo, ya que HandBrake ya lo ha recodificado una vez, y ahora otra más siempre genera pérdida de calidad; eso sin olvidar de que para convertirla a imagen JPG se va a recodificar otra.

Tercera, y más sencilla y adecuada, ffmpeg. En concreto en sus FAQ encontramos la instrucción básica

ffmpeg -i movie.mkv movie%d.jpg

Perfecto. El único problema es que el vídeo dura 1 hora y 5 minutos y solo se necesitan para lo que queremos 13 segundos. La orden directamente sobre el vídeo nos generaría 97500 imágenes (65minutos x 60 segundos x 25fps). Así que lo mejor es ejecutar solo sobre la porción menor posible del vídeo.
Podríamos volver a dividir mediante avidemux, pero genera diferentes problemas en función de la localización de los "keyframes", los fotogramas base sobre los que se marca la compresión de todos los siguientes. Sin embargo, la división mediante mkvmerge GUI no generó ningún problema y lo pudimos dejar en 13 segundos (primero en cortes de 20 minutos, luego 5 del que nos interesaba, luego 1 minuto y luego de 20 segundos, que el programa dejó en 13)


En la pestaña de Opciones generales, Modo de corte (Dividir según duración) y luego los segundos (formato horas:minutos:segundos).

Luego aplicamos la orden ffmpeg y se obtienen un lote completo de fotos. Ahora solo nos queda elegir las mejores y las podemos poner en una presentación, sin tener que cargar un vídeo.

PD. Por cierto, aplicaciones gráficas, pero al final, recurrimos al terminal

miércoles, 16 de julio de 2014

Extraer texto plano de una presentación odp

y, ¿para qué?, dirán algunos.
Hagamos una pequeña introducción.
En general, cuando tenemos tiempo, preparamos correctamente nuestros materiales de clase y charlas. Primero revisamos la "historia del arte", es decir, que se sabe hasta hoy de este tema; segundo, hacemos una selección de los documentos necesarios para los objetivos que tiene la clase, charla... lo que sea. Tres, si es posible, añadimos de nuestra propia cosecha los últimos avances que hemos realizado, si son interesantes para el tema. Cuatro, generamos un documento síntesis de toda esa información con las citas correspondientes; un documento bien hecho y bien citado se puede actualizar muy fácilmente con las novedades sobre el tema y nos facilita mucho el trabajo. Quinto, con ese documento generamos las presentaciones cuando tenemos que desarrollar clases o charlas.
Lo que pasa es que muchas veces nos falta el factor tiempo, así que 1, 2 y 3 se hacen juntos, se mezclan en un formato virtual cerebral y se pasa al punto cinco omitiendo el cuatro.
En resumen, actualmente, por falta de tiempo, no generamos los documentos síntesis.
Y de repente, ¡ALARMA!,  te piden que entregues el documento de la presentación, y como todavía no se han diseñado escáneres de cerebro que permitan extraer el contenido de la versión virtual interna (que además está seguramente muy desordenada, según las costumbres de cada cual, ese documento no existe; está solo en tu mente y en unos directorios llenos de ficheros que nadie sabe si fueron usados o no. La redacción de ese documento es especialmente difícil, por que los contenidos están en tu interior, pero el orden de exposición lo has delegado en una herramienta llamada presentación —nos pasa a todos; las aplicaciones como PowerPoint, Impress o incluso Prezi hace que no mantengamos el orden en la cabeza. Tenemos la información, pero hemos perdido el orden—.
Nos queda redactar el documento siguiendo las presentaciones o...
extraer el texto del documento ppt, odp...

Por supuesto, extraer el texto de un PDF es muy sencillo con el comando pdftotext, un comando de la suite de software xpdf, pero que también se encuentra en poppler-utils, un derivado de xpdf. Instalamos

su -c 'yum -y install poppler-utils'
    passwd

y el comando

pdftotext fichero.pdf

nos genera un fichero.txt con el texto plano del documento pdf.
Sin embargo, en este caso tenía un documento odp. Por supuesto, podemos convertirlo a pdf en la libreoffice y lugo aplicar pdftotext, pero no es necesario. Podemos recurrir al comando odt2txt, que convierte el texto de los ficheros OpenDocument en texto plano. Instalamos

su -c 'yum -y install odt2txt'
    passwd

y ejecutamos

odt2txt fichero.odp

y obtenemos un fichero.txt con el texto plano de la presentación.
Siempre es más fácil escribir un documento a partir del esquema que tenemos preparado que volver a seguir una presentación e ir desarrollando los contenidos. O al menos eso creo yo.


miércoles, 21 de mayo de 2014

Scrot, o como ImpPant cómodamente en KDE

En general soy usuario de gnome como escritorio para Linux. Sin embargo, hay algunas excepciones; en los ordenadores de pocos recursos solía instalar XFCE (a partir de ahora lo intentaré con LXDE) y en mi ordenador principal, en el que tengo KDE (la razón es que misteriosamente, gnome no funciona  adecuadamente en ese PC). Esa situación me genera algunos problemas, seguramente por falta de práctica en KDE; uno de ellos es la incomodidad del uso de la tecla ImpPant para capturar una ventana. Por suerte, y gracias a DesdeLinux, la solución la tenemos en el terminal. Un comando de terminal que me permite capturar un pantallazo.
Lo más sencillo,

$ scrot


y ya tenemos en nuestra carpeta de usuario una captura. Si queremos evitar el terminal en la captura, me ha salido bien usando Alt-F2 en vez del terminal o

$ scrot - d 5

que retrasa el disparo 5 segundos y mientras tanto has enviado el terminal a otro escritorio (esta en gnome).


Para los que quieren ventanas,o áreas de selección

$ scrot -s

y luego se seleccionan con el ratón.


Me dirán los puristas de KDE que lo único que hay que hacer es configurar bien o usar shutter, pero me gusta el terminal.

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!

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, 5 de septiembre de 2013

Búsqueda de ficheros. Terminal, ls y tree

En ocasiones es necesario encontrar ficheros que hemos utilizado -o no- en el pasado y que tenemos almacenados en el disco duro. Muchos años atras, cuando el disco duro tenía 40 MB y había 10 usuarios por ordenador los ficheros se guardaban en disquetes y eran fáciles de encontrar, pero hoy, con discos de hasta 4 TB, la información se almacena el disco duro y, con suerte, en una copia externa en otro disco duro. Este sistema nuevo de manejar la información nos pone ante discos duros con cientos de miles de ficheros en decenas de miles de directorios. Incluso el almacenamiento en la nube está saturado de decenas de miles. Como ejemplo, mi Dropbox, que tiene solo lo que estoy usando actualmente para trabajar ha llegado a 23 GB y decenas de miles de ficheros; véase


y el directorio de usuario tiene más de medio millón de ficheros


Por supuesto, cuando es necesario encontrar algún fichero de los trabajos de hace 20 años, o incluso 8, como me ha pasado a mi la semana pasada, a veces los ficheros no se encuentran fácilmente, bien por que ahora usamos una lógica distinta a la que usábamos antes para los nombres de los directorios o de los ficheros o por que los hemos recolocado una y otra vez a lo largo de los años. He estado toda la semana encontrando una solución en terminal, partiendo de una orden ls general, que luego tunelizaba hasta un filtro grep basándome con un pequeño grupo de caracteres que debieran estar en el nombre de esos ficheros.
Para verlo pondremos un ejemplo, partiendo de los ficheros CR2 que hemos estado utilizando para la entrada anterior; si tecleamos

ls -Rla | grep CR2

obtenemos lo siguiente,


Vemos los ficheros, pero no sabemos donde están. Cada letra de las opciones son para algo
R - orden recursiva. Así, mira todos los subdirectorios del directorio donde la hemos lanzado (en est aso, el home de usuario (más de 50.000 directorios y 600.000 ficheros)
l - nos da información de los permisos, el propietario y grupo del fichero, los inodos, su tamaño y nombre; sin embargo, no nos da la ruta absoluta
a - muestra todos los ficheros y directorios, incluidos los ocultos

Eso nos deja con la tranquilidad de ver que están, pero sin saber exactamente donde. Para ello debemos usar el comando tree (como muy amablemente me indicó ayer mi amigo hckorootx). Si ejecutamos

tree -afiR $PWD | grep CR2

obtenemos lo que queríamos, la ruta completa a los ficheros


Las opciones incluidas son:
a -  de nuevo incluye los ficheros ocultos
f - está es la opción que nos transmite las rutas completas de los ficheros
i - evita que la ruta quede dibujada en líneas de indentación de los directorios, que es difícil de leer
R - búsqueda recursiva en todos lo subdirectorios

Si no incluimos $pwd, obtenemos la ruta a partir del directorio base del usuario que ha ejecutado


Eso sí,Linux diferencia mayúsculas de minúsculas, así que si hubieramos pedido

tree -afiR $PWD | grep cr2

hubiera salido otra cosa


Para evitar eso, y teniendo enuenta que s muy difícil recordar que tipo de letra usábamos hace tiempo (y sobre todo en windows, que no diferencia mayúsculas y minúsculas), debemos incluir la opción -i en el filtrado realizado por grep


tree -afiR $PWD | grep -i cr2


Perfecto.



martes, 26 de febrero de 2013

Enlaces interesantes para gráficos en R

Revisando R-bloggers, un blog dedicado a R que leo habitualmente he descubierto unos artículos que puedes ser interesantes para ver las posibilidades que nos da R respecto a los gráficos. En el primero veo que no soy el único que ha encontrado la comodidad del uso de los gráficos vectoriales para ahorrarnos problemas de resolución; al mismo tiempo también destaca las limitaciones de Windows cuando utilizamos software libre que ha sido diseñado bajo condiciones muy diferentes a las de un sistema propietario como Windows. He encontrado en este artículo un aliciente más para usar software libre.
El segundo artículo que quiero destacar nos enseña las posibilidades reales de lograr gráficos muy atractivos visualmente en R.


Cierto es que tenemos que aprender al menos algunas nuevas rutinas y trabajar con comandos en terminal, pero ese aprendizaje nos conduce a lograr muchas más habilidades, competencias y conocimientos.

Merece la pena el esfuerzo.

jueves, 14 de febrero de 2013

Como generar un lanzador gráfico de un script e incorporarlo a los favoritos en gnome 3.6

Esta entrada se debe a un comentario en una de las entradas anteriores, alrededor de la instalación de jdownloader en Fedora. La duda era sobre la forma más cómoda de llamar a JDownloader y la conveniencia o no de teclear. Para mi lo más cómodo y lo que hago habitualmente es buscar la línea de comandos en el historial, simplemente dando a la flecha superior. Para ello lo mejor es generar una única línea con los dos comandos

cd .jd && java -Xmx512m -jar JDownloader.jar

Sí, existen formas más cómodas de llamar a un programa, y a ello vamos.
Para no tener que teclear generamos un script en gedit, nano o con el editor de textos que queramos con los comandos y le llamamos por ejemplo j.


Una vez generada, tenemos que darle permisos de ejecución


Como se ve he puesto su (sin -), y así el administrador está situado en la carpeta personal del usuario que ha pedido la autenticación de administrador, y así no hay que jugar con directorios. Sí, sé que se puede hacer de forma gráfica, pero la verdad es que eso nunca lo hago a clics. Ya está; ya tenemos un script en la carpeta personal con permisos de ejecución a la que simplemente tecleando en terminal

. j

ya lanzaría jdownloader (que, por supuesto, hemos instalado antes según las instrucciones de aquí).

Sin embargo, para los que le prefieren los clics del ratón, vamos a generar un lanzador de aplicaciones de forma gráfica. La forma en terminal la ha explicado perfectamente hckorootx en esta entrada. La forma gráfica está explicada en esta página del proyecto Fedora.
Una vez que tenemos el script, generamos un lanzador en nemo (o nautilus, versiones 3.4 o anteriores); en el nautilus actual en gnome 3.6 no aparece esa posibilidad. Simplemente buscamos un área vacía en nemo y mediante el clic derecho de ratón pedimos "create launcher" (perdonar la foto, pero los capturadores de pantalla no capturan estas ventanas emergentes),


y aparece una ventana como ésta


que ahorra a los que odian el terminal tener que cubrir las líneas en gedit. Las rellenamos,


Y el resultado, visto en el gedit, es igual que el que obtiene el amigo hckorootx. Como podemos ver, aunque el nombre solo muestra lo que hemos escrito -jdownl-, el fichero creado tiene un "apellido" jdownl.desktop (lo digo por si luego se quiere editar y dice que no existe tal fichero; su verdadero nombre es con .desktop).


Aunque ya es perfectamente funcional y podemos cliquear sobre él y lanzar JDownloader, podemos ser más puristas y hacerlo visible con el resto de las aplicaciones. Para ello simplemente lo movemos (de forma GUI o CLI, según gustos) al directorio

/usr/share/applications

donde están los lanzadores. Y así ya está disponible en Aplicaciones y con el botón derecho podemos incorporarla a Favoritos, y lo tendremos en el Dash izquierdo.


Con esto espero haber ayudado a los que tienen respeto al terminal. Solo es necesario acudir al terminal una vez (y hasta se puede evitar). Reconozco que es más cómodo así, pero hay varias razones por las que conocer el terminal es muy útil. La primera, las facilidades gráficas cambian muy rápidamente -como ejemplo, nautilus en gnome 3.6- y lo que sabemos ahora puede no servir mañana. Los conocimientos del terminal suelen ser útiles mucho más tiempo. La segunda, cuando sistema gráfico de un ordenador genere problemas y nos encontremos con acceso solo a una pantalla de texto, ¿qué podemos hacer si no conocemos los comandos básicos y un editor de texto de terminal? Tener una chuleta con lo fundamental del terminal al alcance puede ser la salvación en algunos momentos.

Cuando tenga un rato, trataré de generar un lanzador por combinación de teclas, para hacerlo más fácil. Sin embargo, desde mi punto de vista, nada es más rápido que . j; solo cuatro teclas, (punto, espacio, j, Intro). Y aun así seguiré dando a la flechita hasta llegar a la línea con los comandos, por que soy un animal de costumbres.