Generar PDF para Blurb a partir de Latex

Blurb es estricto con el formato del PDF (a fin de evitar problemas a posteriori). Con ConTEXt es relativamente sencillo crear el PDF a partir de los ficheros TEX. Añade el siguiente código (convenientemente adaptado al tamaño de tu libro)


\setupinteraction
[title=TITULO,
subtitle=SUBTITULO,
author=AUTOR,
keyword={PALABRA CLAVE}
GTS_PDFXVersion=PDF/X-3:2002
]

\pdfobjcompresslevel=0%
\pdfminorversion=3%
\setupbackend
[format=PDF/X-3:2002,
intent=ISO Uncoated]

\pdfpageattr{
/MediaBox [0 0 369.00000 594.00000]
/BleedBox [0.00000 0.00000 369.00000 594.00000]
/CropBox [0 0 369.00000 594.00000]
/TrimBox [0.00000 0.00000 369.00000 594.00000]
}

\pdfcatalog{
/PageMode /UseNone
/OutputIntents [ << /Info (none) /Type /OutputIntent /S /GTS_PDFX /OutputConditionIdentifier (Blurb.com) /RegistryName (http://www.color.org/) >> ]
}

Mas informacion en Tex StackExchange y en The Grey Blog

Una forma cómoda de usar Context es a través del contenedor Docker que ha creado silkeh (dentro del repositorio de contenedores Latex en DockerHub)

“Extensiones” interesantes de latex:

  • Edmac: formateo de “ediciones críticas” de texto
  • Verse: formateo de poesía

Soporte internacional Linux

Como ya adelantamos en Xmodmap, el uso de Linux con lenguas no inglesas no es trivial (a pesar de que distribuciones mayoritarias como Ubuntu hagan que lo parezca)

Lo más recomendable es usar un “stack” UTF8:

  • configurar el teclado para soporte de “dead tilde”, que es la forma de introducir caracteres locales a la que estamos acostumbrados… pero ojo que acento til (~) para vocales (por ejemplo, ã) es AltGr+4, no AltGr+Ñ…
    • setxkbmap es deadtilde
  • terminal compatible con UTF8, como urxvt
  • definir los locales convenientemente. Por ejemplo,
    • export LANG=es_ES.UTF8
    • export LC_CTYPE=es_ES.UTF8
  • Soporte “meta”: comprobar que los modificadores de teclado son los que queremos:

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

    Backup sistema Linux

    La Ley de Murphy tiene muchas manifestaciones. Una de ellas es que cuánto más antigua es tu copia de seguridad, más probable es que pierdas información, bien datos o aplicaciones. Es una ley con excepciones. Por ejemplo, acabas de hacer un backup y cuando vas a restaurar los datos perdidos, descubres que la copia no se había hecho bien :-p

    Una actualización de sistema te puede dejar el ordenador tirado y sin ganas de arrancar (“init not found” y similares)

    Un sistema Linux simple no ocupa demasiado, con lo cual se puede respaldar integramente. Como mínimo, el contenido de /boot (kernel e initrd, más concretamente) y los módulos (/usr/lib/modules/version)

    Xmodmap: configura el teclado para el entorno grafico en Linux

    Xorg/X11 (la infraestructura gráfica más típica en Linux) permite traducir libremente los “códigos de tecla” (o Keycodes, que produce el teclado) en los “símbolos de tecla” (KeySims) que interpretan las aplicaciones gráficas. Gracias a esta flexibilidad, un mismo teclado puede usarse para introducir caracteres de diversos idiomas.

    Para identificar códigos de tecla se pude usar el comando xev

    Para editar la configuración de traducción (tabla de asignación de teclas y mapa de modificadores de tecla) se puede usar el comando xmodmap.

    # muestra tabla de asignación de teclas
    # para cada tecla se muestra el símbolo asociado, según la siguiente estructura:
    # tecla sola (1a columna), mays+tecla (2a), cambio_modo+tecla (3a), cambio_modo+mays+tecla (4a)
    # ISO_Level3_shift + [[ tecla (5a), mays+tecla (6a), cambio_modo+tecla (7a), cambio_modo+mays+tecla (8a) ]]
    xmodmap -pke

    “cambio_modo” se puede asignar a cualquier tecla, de forma análoga a la tecla mayúsculas. Normalmente, cambio_modo se asigna a Alt Gr (código 108), pero podemos asignarlo al Alt izquierdo (código 64)

    #mapa de modificadores de tecla
    xmodmap -pm
    shift
    lock
    control
    mod1
    mod2
    mod3
    mod4
    mod5

    Con estos dos comandos se puede generar un fichero inicial de configuración:

    xmodmap -pke >> ~/mi_modmap
    xmodmap -pm >> ~/mi_modmap

    Típicamente, a las teclas “Windows” (o “manzana” en Mac) se las vincula a Super (Super_R y SuperL, códigos 133 y 134). La tecla “menú contextual” tiene el código 135.

    También se podría utilizar xmodmap para configurar la tecla meta en Emacs. A veces conviene probar con un terminal distinto de xterm, ya que puede ser el culpable de que no funcione la tecla meta.

    Una forma de utilizar Alt Gr es asignarlo como “cambio_modo”. Luego, para cada tecla que vayamos a usar con Alt Gr habría que definir el carácter que deseamos para la combinación con “cambio_modo” (o sea, la tercera columna). Por ejemplo,

    # Asignar cambio_modo a Alt Gr
    xmodmap -e "keycode 108 = Mode_switch"
    # Asignar simbolo de euro a la combinacion Alt Gr+ e
    xmodmap -e "keycode  26 = e E EuroSign E"

    Otra opción más común hoy en día es asignar a Alt Gr “ISO_Level3_Shift”, de modo que para las teclas que queramos usar con Alt Gr definiremos la columna 5 (ISO_Level3_Shift). Si quisiésemos asignar una tecla a la combinación Alt Gr + Mays, entonces usaríamos la columna 6 (ISO_Level3_Shift + Mays).

    xmodmap -e “keycode 108 = ISO_Level3_Shift”
    # Ademas de definir el simbolo de euro para ISO_Level3_Shift, también definimos cent para ISO_Level3_Shift + Mays
    xmodmap -e “keycode  26 = e E e E EuroSign cent EuroSign”

    Combinando “cambio_modo”, mayúsculas (mays) y ISO_Level3_Shift, podemos asignar hasta 4 símbolos por cada tecla o_O

    Una vez personalizado el fichero, se puede cargar automáticamente añadiendo xmodmap ~/mi_modmap a ~/.xinitrc

     

    GPFS

    Sistema de ficheros paralelo de alto rendimiento creado por IBM

    Cuotas

    # Cuota por defecto
    mmdefedquota -u fs0
    
    # Cambiar cuota usuarios
    mmedquota -u jcuenca
    
    # Mostrar cuota
    mmlsquota
    
    # "Informes"
    mmrepquota -u -v -a
    mmrepquota -g -v -a
    

    Resolución de problemas

    Algunos comandos de gpfs usan una shell distribuida (rsh por defecto). Para aprovechar ssh, configurar así:

    mmfsadm dump cfgmgr | awk '/ up / {print $3} /\(cluster/ {exit} /Current clock/ {exit} ' > /tmp/wcoll
    export WCOLL=/tmp/wcoll
    export GPFS_rshPath=/usr/bin/ssh 
    # Test mmdsh date
    

    Comandos útiles GPFS

    # inodos disponibles
    mmdf /dev/fs1
    
    # aumentar número de inodos máximo
    mmchfs /dev/fs1 -F XX 
    
    # informacion detallada (por ejemplo, estado de los hilos para comprobar si hay hilos colgado)
    mmfsadm dump all
    
    # reiniciar demonio GPFS, "revocando" cualquier token I/O que tuviese
    mmfsadm cleanup
    
    # sólo en casos extremos
    mmfsck
    

    Inkscape básico

    Cambiar el tamaño de la caja de texto: seleccionar la caja con la herramienta “Texto” y arrastrar las esquinas. Si en lugar de “Texto” se usa la herramienta selección, entonces el texto se deforma para ajustarse a las nuevas dimensiones (que quizá no es lo que solemos querer hacer…)

    Una forma rápida de reducir el número de nodos de un trayecto es con el comando “Simplificar”

    ArchLinux en Thinkpad T420

    El paquete tp_smapi añade módulos del kernel para controlar la carga de la batería y el acelerómetro

    # Cargar la batería cuando se encuentre entre el 40% y el 80% de capacidad
    echo 40 > /sys/devices/platform/smapi/BAT0/start_charge_thresh echo 80 > /sys/devices/platform/smapi/BAT0/stop_charge_thresh

    También se puede controlar la carga con TLP. Configuralo en /etc/default/tlp y habilitalo con systemctl enable tlp-init.service

    Para ajustar automaticamente los ventiladores (y reducir el ruido del portátil) se puede usar thinkfan. Se configura en /etc/thinkfan.conf

    sensor /sys/devices/platform/coretemp.0/temp1_input
    sensor /sys/devices/virtual/hwmon/hwmon0/temp1_input
    
    (0, 0, 55)
    (1, 48, 60)
    (2, 50, 62)
    (3, 52, 64)
    (4, 56, 66)
    (5, 59, 70)
    (6, 63, 75)
    (7, 66, 32767)

    También hay que añadir un parámetro al módulo thinkpad_api, por ejemplo en /etc/modprobe.d/thinkfan.conf

    options thinkpad_acpi fan_control=1

    Por último, hay que habilitar thinkfan:

    systemctl enable thinkfan.service

    En lugar de thinkfan, también puedes controlar los ventiladores manualmente:

    cat /proc/acpi/ibm/fan
    status:         enabled
    speed:          2592
    level:          auto
    commands:       level <level> (<level> is 0-7, auto, disengaged, full-speed)
    commands:       enable, disable
    commands:       watchdog <timeout> (<timeout> is 0 (off), 1-120 (seconds))
    echo "level auto" > /proc/acpi/ibm/fan

    Las teclas especiales se pueden programar en /etc/acpi/handler:

    # Volumen button/volumedown) # VOLDN 00000080 00000000 K amixer set Master playback 1- ;; button/volumeup) # VOLUP 00000080 00000000 K amixer set Master playback 1+ # Fn+F9 controla Bluetooth button/f24) SYSFS=”/sys/devices/platform/thinkpad_acpi/bluetooth_enable” case “$(cat “$SYSFS”)” in 0)                                                                                                                                                                                 echo 1 > “$SYSFS”                                                                                                                                                                ;;                                                                                                                                                                               1)                                                                                                                                                                                 echo 0 > “$SYSFS”                                                                                                                                                                ;;                                                                                                                                                                               esac ;;

    Aunque no es específico para el T420, puede ser útil escoger la variante dead_tilde del teclado es en X11, a fin de poder escribir cosas como “não”. Por defecto, en esta variante la dead_tilde se asigna a la tecla 4, con lo cual habría que pulsar Alt-Gr+4 y luego a para conseguir “ã”

    Para la sesión actual, se puede configurar la disposición del teclado con setxkbmap:

    setxkbmap es deadtilde
    

    Para hacer el cambio permanente, se puede incluir en la configuración de Xorg:

    # /etc/X11/xorg.conf.d/10-keyboard.conf
    Section "InputClass"
            Identifier "Keyboard Default"
            MatchIsKeyboard "yes"
            Option "XkbLayout" "es"
            Option "XkbVariant" "dead_tilde"
    EndSection
    

    Compilación de software Linux en Windows 64

    Install mingw 64 sjlj en c:/mingw
    mingw-get autoconf msys-libregex
    #export MINGW_PATH=C:/mingw
    #export MING_PATHS=/include
    (although scons seems to not detect it)

    Install msys+7za+wget…. 64 bit en c:/msys
    Install java64 en c:java

    From msys.bat run the commands

    Install git for windows

    Clone xmipp repository

    Run xmipp/install.sh

    Install windows version of python 2.7?

    Source xmipp/.xmipp.bashrc

    BUILD
    ./setup.py compile
    which in turn calls
    xmipp_python external scons/scons.py
    You can pass options to scons directly, like
    xmipp_python external scons/scons.py gtest=false CXXFLAGS=-mwindows quiet=false mode=compile
    (-mwindows might help with the crtdbg bug, but what fixed in Condor is just commenting the include…)
    Use CXXFLAGS=/include (since inside Ming, include is in /include), JNI_CPPATH=/c/Program Files/java/jdk…

    scons build process may fail, in which case hand-compilation is not that hard:

    # compile
    x86_64_w64_mingw32-g++ -D__MINGW__ -fpermissive -D_JNI_IMPLEMENTATION -c file.cpp
    Includes: -I/include -I/c/java…../include
    # link
    x86_64_w64_mingw32-g++ -llibxyz -shared *.o -o libxxx.dll
    # binary – use above parameters (-D, -I, -L…) as needed
    x86_64_w64_mingw32-g++file.cpp -o file.exe

    In Java, libraries are looked for in %PATH%

    Take into account that POSIX support in Windows is tiny (unless you install the Interix module available in the Ultimate and Server editions). Specifically, memory mapping and file locking should be done with the native Windows API
    Open binary files with fopen “b” (even though POSIX does not require it, windows needs it)
    In Mingw, paths are c:/dir1/file2.txt

    Chuleta PostgreSQL

    \list (show databases)
    \du (show users)
    \connect db
    \dt (show tables)

    Create user
    From shell (user postgres): createuser username
    From psql: create role

    Delete user
    Shell: dropuser
    psql: drop role

    Change password

    ALTER USER xx WITH PASSWORD ‘zzzzzzzzzzzzzzz’;

    Arranque en Debian (cada línea llama a la siguiente, hasta llegar a la ultima que es el comando que realmente se ejecuta)

    /etc/init.d/postgresql start

    pg_ctlcluster 9.0 main start

    /usr/lib/postgresql/9.0/bin/pg_ctl start -D /var/lib/postgresql/9.0/main -s -o -c /etc/postgresql/9.0/main/postgresql.conf

    /usr/lib/postgresql/9.0/bin/postgres -D /var/lib/postgresql/9.0/main -c config_file=/etc/postgresql/9.0/main/postgresql.conf

    Normalmente, postgres escribe los logs a stderr, y redirige stderr a los ficheros de log (/var/log/postgresql/postgresql-9.0-main.log)

    Pero en ocasiones (por ejemplo, los permisos del directorio /var/lib/postgresql/9.0/main/ no son 700) no llega a escribir en el log. En estos casos puede resultar util ejecutar postgres directamente

    Comandos configuracion CUPS

    # Lista de impresoras configuradas
    lpstat -a
    
    # Lista de controladors disponibles
    lpinfo -m
    
    # Añadir impresora
    lpadmin -p impre1 -E -v lpd://direccion_impre1/ -m controlador
    # Tambien se puede asignar un PPD a la impresora (<a href="http://www.openprinting.org">repositorio de PPD</a>):
    lpadmin -p impre1 -P /dir/mi_impresora.ppd
    
    # Mostrar opciones del controlador de la impresora
    lpoptions -p impre1 -l
    # Configurar impresión a doble cara (Duplex)
    lpadmin -p impre1 -o Duplex=DuplexNoTumble
    
    #Borrar impresora
    lpadmin -x impre1
    
    # cupsctl: comando para hacer cambios básicos a cupsd.conf
    # Dejar de compartir impresoras
    cupsctl --no-share-printers
    # Otras opciones de cupsd.conf
    # No integrar automáticamente impresoras en red (puede que se ignore si cups-browsed esta ejecutándose)
    Browsing Off
    
    

    Artículos relacionados:

    Comandos de impresión en Linux
    Opciones por defecto CUPS ignoradas

    Chuleta Conkeror

    • Ctl-X Ctl-C salir
    • ; elegir en que marco centrar el foco
    • Ctl-x Ctl-f : abrir nuevo buffer
    • Alt-n / Alt-p : desplazamiento entre buffers
    • q cerrar buffer
    • Espacio / Retroceso: desplazamiento página a página
    • f ir a. Luego, enter: en el mismo buffer. Alt-enter: solo mover el foco. Ctl-enter: abrir en otro buffer
    • **c Copiar texto
    • F / B : adelante / atrás (histórico páginas)
    • b crear marcador
    • Ctl-s : buscar

    Exim

    En /etc/aliases se pueden usar pipes para redirigir el correo a scripts. Esto est desactivado en Exim, para activarlo hay que definir la variable SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe en /etc/exim4/conf.d/main/02_exim4-config_options (si se usa los ficheros de configuracion “split”)

    Con dpkg-reconfigure exim4-config se hace la configuración básica de Exim, que incluye los cambios manuales incluidos en el fichero /etc/exim4/update-exim4.conf.conf

    En modo smarthost, exim usa otro servidor SMTP para reenviar los mensajes que no pertenecen a su propio dominio. El dominio propio se define como

    Probar ruta de envio (router / transport): exim4 -bt direccion_email

    Comandos útiles

    mailq
    # Forzar proceso cola mensajes
    runq 
    exim4 -Mrm id_mensaje_a_borrar_de_cola
    exim4 -M id_mensaje_a_forzar_envio
    # Reintentar envio de todos los mensajes pendientes, incluidos los congelados
    exim4 -qff
    

    Listas de correo

    # Restricted mailing lists - only members of valid can send email
    # Open mail lists are handled through system aliases (/etc/aliases)
    lists:
            driver = redirect
            file = /etc/mail/lists/$local_part
            no_check_local_user
            forbid_pipe
            forbid_file
            senders = lsearch;/etc/mail/valid
            errors_to = root
    

    La direccion lista@domino se asocia a las direcciones del fichero /etc/mail/lists/lista. Solo se aceptan correos cuyos remitentes están en la lista /etc/mail/valid (que contiene direcciones completas user@dominio). Si el fichero lista no existe o el remitente no está en valid, se rechaza el envio con este director y se pasa a los siguientes. Si ninguno acepta la dirección se rechaza el envio con el error “User unknown”

    Envio de correos desde la linea de comandos

    Crear un fichero (testmail) con el mensaje:

    From: Jesus Cuenca
    To: jcuenca@xxxxxxxx
    Subject: Test
    Test

    Enviarlo con el comando

    /usr/sbin/exim -oi -t < testmail

    Problemas típicos

    “Mailing to remote domains not supported”: servidor tipo localhost only, intento de enviar mensajes a otros hosts. O servidor tipo internet que escucha solo en 127.0.0.1

    # Tracear que directores/drivers y filtros se usan para una cierta direcciónn (-f sirve para especificar el From que se usará en la prueba)
    exim -d+all -f jcuenca -bt address
    # Desbloquear mensajes de la cola; con -Mrm los borra
    mailq | grep frozen | awk '{print $3}' | while read m; do exim4 -M ${m}; done
    # Forzar envio de todos los mensajes, incluidos los bloqueados
    exim4 -qff
    

    Chuleta rTorrent

    Pantalla principal: 0-9 cambia vista
    Backspace: añadir torrent (pero mejor pasarlo por la línea de comandos)
    Ctl-S / Ctl-D: iniciar/parar descarga
    Ctl-Q: salir
    d/D: incrementar throttle subida/bajada
    c/C: decrementar throttle subida/bajada

    En vista de ficheros, la navegación se hace con los cursores. Espacio cambia la prioridad del fichero o directorio actual (desde Off a Max)

    En la vista de descargas, 1/2, 3/4, 5/6 ajustan máximo de subidas, mínimo de peers y máximo de peers

    Status
    Rate: Upload/Download
    [D ownload slots] [U pload slots]
    Peers: Connected(Not connected)

    Guía de usuario de rTorrent

    Gestión de paquetes

    Accion Debian Arch RedHat Gentoo Suse
    Buscar apt-cache search pacman -Ss rpm -q / yum search emerge –search zypper search
    Buscar versiones yum list PKG equery list -po PKG
    Instalar apt-get install pacman -S rpm -i / yum install emerge
    Instalar version emerge -av =CAT/PKG-VERS
    Actualizar indices apt-get update pacman -Sy emerge –sync
    Actualizar todo apt-get upgrade pacman -Su yum update emerge –update –deep @world && etc-update && emerge –depclean
    Paquetes instalados dpkg -l pacman -Q rpm -qa equery list “*”
    Ficheros paquete dpkg -L pacman -Ql equery f
    Paquete provides dpkg -S file
    Desinstalar apt-get remove / purge yum remove emerge –unmerge (no comprueba dependencias!)
    Reinstalar apt-get install PKG –reinstall

    Paquetes interesantes para Arch Linux

    Selección de paquetes interesantes para un ordenador típico (con tarjeta gráfica Intel) con un escritorio atípico (sólo gestor de ventanas híbrido “awesome”, sin entorno de escritorio tipo KDE o similar)

    alsa-utils  xorg-server xorg-xinit xorg-server-utils mesa  xf86-video-intel
    lib32-intel-dri xf86-input-synaptics xorg-twm xorg-clock xorg-xauth
    xterm ttf-dejavu awesome firefox chromium flashplugin xscreensaver openssh
     unzip mc vim wireless_tools dnsutils rxvt-unicode

     

    Si necesitas imprimir en impresoras Postscript (quiza no necesites el Foomatic nonfree)

    cups cups-filters foomatic-db foomatic-db-nonfree ghostscript

     

    Varios

    virtualbox mupdf id3 easytag scrot xfburn gstreamer0.10-plugins rtorrent inkscape darktable