Bash Script Magic

Si algo hace a Linux poderoso es el manejo adecuado de la terminal, y cuando se usan bash scripts la magia se hace presente. Es por ello, que he querido compartir con ustedes algunos de esos scripts que uso día con día, estoy seguro a más de uno le serán útiles.

Cabe mencionar que todos los scripts abajo mencionados se aplican a todos los archivos (del tipo en cuestión respectivamente) del directorio actual.

Convertir imágenes PNG en JPG

Para este script (y el siguiente) es necesario tener instalado imagemagick.

#!/bin/bash
for file in *.png; do
    convert "$file" "${file%.png}.jpg"
    rm "$file"
done

Redimensionar imágenes JPG

#!/bin/bash
for f in *.jpg; do convert $f -resize 1024 $f; done;

El número 1024 representa en nuevo ancho (width) de la imagen, pueden cambiarlo obviamente.

Convierte archivos de texto de ISO-8859-1 a UTF-8

#!/bin/bash
for file in *.srt; do
    iconv -f ISO-8859-1 -t utf-8 "$file" -o "${file%.srt}.utf8.srt"
    rm "$file"
done
rename .utf8.srt .srt *.utf8.srt

En este caso particular, estoy indicando el uso de archivos SRT (.srt), utilizados como subtítulos en videos, que normalmente se encuentran en la web en formato ISO-8859-1.

¿Cómo saber qué formato tienen tus archivos? Usa el comando file:

file *.srt

Convertir archivos de subtítulos SRT a SSA

Para este script, es necesario tener ffmpeg instalado.

#!/bin/bash
for file in *.srt; do
    ffmpeg -v quiet -i "$file" "${file%.srt}.ssa"
done

Tener los subtítulos en SSA tiene algunos beneficios (más delante menciono uno de ellos).

Crear video MKV a partir del video MP4 y del subtítulo SRT

Para los últimos scripts, es necesario tener instalado MKVToolNix (en ArchLinux » mkvtoolnix-cli)

#!/bin/bash
for video in *.mp4; do
    mkvmerge -o "${video%.mp4}.mkv" \
        --forced-track 0:no --compression 0:none --language 1:eng \
        --forced-track 1:no --compression 1:none -a 1 -d 0 -S -T \
        --no-global-tags --no-chapters "(" "$video" ")" --language 0:spa \
        --forced-track 0:no --compression 0:none -s 0 -D -A -T \
        --no-global-tags --no-chapters "(" "${video%.mp4}.srt" ")" \
        --track-order 0:0,0:1,1:0 --clusters-in-meta-seek \
        --engage no_cue_duration --engage no_cue_relative_position
done

Nota: Los subtítulos ya deben estar en UTF-8 (usar script arriba mencionado).

Este script (y el siguiente) tienen opciones adicionales para que los videos MKV sean compatibles con la mayoría de los reproductores de DVD / Bluray caseros.

Crear video MKV a partir del video MP4 y de los subtítulos SRT y SSA

#!/bin/bash
for video in *.mp4; do
    mkvmerge -o "${video%.mp4}.mkv" \
        --language 0:eng --default-track 0:yes --forced-track 0:no --compression 0:none \
        --language 1:eng --default-track 1:yes --forced-track 1:no --compression 1:none \
        -a 1 -d 0 -S -T --no-global-tags --no-chapters "(" "$video" ")" \
        --language 0:spa --default-track 0:yes --forced-track 0:no --compression 0:none \
        -s 0 -D -A -T --no-global-tags --no-chapters "(" "${video%.mp4}.srt" ")" \
        --language 0:spa --default-track 0:no --forced-track 0:no --compression 0:none \
        -s 0 -D -A -T --no-global-tags --no-chapters "(" "${video%.mp4}.ssa" ")" \
        --track-order 0:0,0:1,1:0,2:0 --clusters-in-meta-seek \
        --engage no_cue_duration --engage no_cue_relative_position
done

El video MKV resultante con este último script, pueden abrirlo en HandBrake y crear un video MP4 redimensionado y con los subtítulos pegados (¡gracias al uso de SSA!), para que puedan verlo en cualquier dispositivo móvil (por ejemplo, en mi ZTE Open con Firefox OS los veo con una resolución 480×320 perfectamente bien).

Share

Inminente llegada del Kernel 3.13 a ArchLinux, ahora con soporte modular para PS/2

Teclado PS/2 en ArchLinux

Luego de una buena espera, el Kernel Linux 3.13 está a unas horas de llegar al repo [core] de ArchLinux, pero los desarrolladores nos avisan de un detallito que podría ocasionar problemas en algunos equipos: Ahora el soporte para teclados (keyboards) y ratones (mouse) con interfaz PS/2 será modular, o sea, ya no formará parte predeterminada del kernel.

¿Aún usas algún dispositivo de entrada PS/2? ¡Yo sí! ¿Qué debemos hacer? Antes que nada, no hay que dejar que panda el cúnico (como diría el gran Chespirito, ¡que casualmente hoy cumple 85 años!), sólo basta seguir los siguientes pasos:

  1. ¡Aún no actualices al nuevo kernel! Si lo haces, luego del reboot no podrás acceder a tu teclado o mouse PS/2.
  2. Antes que nada, cerciórate que en la línea HOOKS= del archivo /etc/mkinitcpio.conf tienes agregado keyboard. Si no es así, agrégalo, guarda el archivo (necesitas ser root), y ejecuta mkinitcpio -P.
  3. Ejecuta el siguiente comando:
    dmesg -t | grep '^i8042'
  4. Si aparece un mensaje que diga: “i8042: PNP: No PS/2 controller found. Probing ports directly.“, entonces debes agregar atkbd a la línea MODULES= en el archivo mkinitcpio.conf y ejecutar mkinitcpio -P.
  5. Si luego de reiniciar, aún no tienes acceso a tus dispositivos PS/2, debes agregar earlymodules=atkbd modules-load=atkbd a tu línea del kernel en tu bootloader instalado (GRUB, Syslinux, etc).

Eso es todo, no es un procedimiento complicado, pero repito: Si tienes un teclado o mouse PS/2, DEBES verificar el procedimiento mencionado ANTES de actualizar al Kernel Linux 3.13 (el cual debe llegar en unas pocas horas al repo [core] de ArchLinux).

Share

Opera para Linux ha muerto :-(

Opera para Linux ha muerto

Hace unos momentos leía el post oficial sobre la liberación de la versión 19 del navegador web Opera, y con tristeza volvía a confirmar que aún no sacaban una versión para Linux. La esperanza aún seguía viva.

Sin embargo, minutos después el colega @Zagurito de PortalLinux, me informaba de una pésima noticia: Opera para Linux ha muerto :-(

La noticia publicada por Andreas Tolfsen (ex trabajador en Opera, como podemos corroborar en su website), dice textualmente:

At my previous employer, a small browser vendor that decided to abandon its own rendering engine and browser stack, I stopped using our product because Linux wasn’t a priority. Numerous reasons were given, such as low market share, “only geeks use it”, all journalists use Macs, &c.

This was to the point of ridiculing the platform and the people working on it, frequently citing “Linux jokes” such as “you’ll probably have to recompile your kernel first” whenever the question was seriously raised about when we’d start at least getting the core libraries working.

And when I say it wasn’t a priority, I mean that we didn’t even have something that was in a compilable state. A few people had started fixing up the broken code to get something that would compile on Linux in their own free time. After a few weeks of hacking, they were told by management to stop what they were doing and instead focus their volunteer efforts on the project goals, being to ship a Windows and Mac version.

So the company began the process of forcefully moving developers who’d worked on Linux for over 15 years to platforms they felt uncomfortable and unproductive working on.

This is a much longer tale, but it tells the story of a company alienating not only their loyal user base, but also a significant proportion of their own developers. The result? Lack of motivation and resignations.

Well done.

Ustedes, los lectores de este humilde blog, saben de mi gusto por Opera, he escrito sobre él bastante, y me entristece mucho esta noticia. A partir de hoy para mí, Opera se va al basurero de recuerdos tristes, donde le hará compañía a IE.

Share

Firefox 26 y su Gestor de Aplicaciones

Firefox 26 y el nuevo Gestor de Aplicaciones

Acaba de ser liberado Firefox 26, ¡y viene cargado de novedades! Aquí las más importantes:

  • Nuevo Gestor de Aplicaciones (App Manager) que permite implementar y depurar webapps en teléfonos con Firefox OS y por medio del Firefox OS Simulator (tal y como podemos apreciar en la imagen al inicio del post).
  • Ahora todos los plug-ins de Java son ‘click to play’ de manera predeterminada.
  • El administrador de contraseñas ahora soporta campos de contraseñas generados vía script.
  • Las actualizaciones en Windows ya no requieren que el usuario tenga permisos de escritura en el directorio de instalación de Firefox (esta característica requiere el Mozilla Maintenance Service).
  • Soporte para H.264 en Linux vía gstreamer.
  • Soporte para decodificar MP3 en Windows XP.
  • Ahora el Social API soporta Social Bookmarking a través de su funcionalidad SocialMarks.
  • Soporte para la propiedad de orientación de imágenes en CSS.
  • Ahora cuando se muestra una imagen JPG sola, se usa la orientación EXIF.
  • Carga mejorada de páginas al no decodificar imágenes que no son visibles.

Como siempre, les exhorto a verificar la lista completa de novedades

Directas de Firefox 26 en Español

Firefox 26 en Español para Windows:

Firefox 26 en Español para MacOS X:

Firefox 26 en Español para Linux (32 bits):

Firefox 26 en Español para Linux (64 bits):

También pueden visitar la página oficial de descargas.

Share

Copiando y Pegando texto entre Vim y X Window

Vim LogoUna de las cosas más frustrantes con las que me encontré hace mucho tiempo, al conocer Vim, es el dolor de cabeza que implicaba el copiar/cortar y pegar texto desde Vim a cualquier otra aplicación bajo X Window en Linux, y viceversa. Recuerdo haber instalado varios plugins, haber configurado de diversas maneras URxvt para lograr el objetivo, pero ninguna de estas “soluciones” me dejaba satisfecho.

Hace apenas pocas semanas, por fin me decidí a usar exclusivamente Vim para toda edición de texto (luego de varios intentos frustrados en el pasado), y todos los días Vim me sorprende con su poder, cada día descubro algo nuevo… pero había dejado pendiente el detalle arriba mencionado. Hoy por fin me puse a investigar más a fondo, y no paro de reirme de lo sencillo que es solucionar el bendito problema, ¡sin plugins ni trucos raros!

Primer problema: ¡Vim no tiene soporte para xterm_clipboard!

Dentro de Vim, ejecuta

:version

En la salida se muestran todas las opciones con las que Vim ha sido compilado, algunas precedidas con “+” (opción habilitada) y otras con “-” (opción no habilitada). La opción que nos interesa en este caso, es xterm_clipboard, ¿tienes “+” o “-” en ella? Si tienes “+”, ¡no tienes nada de qué preocuparte!. ¿Tienes “-“? Entonces lo lógico es que debes compilar Vim con dicha opción.

¿Odias compilar a mano? La mayoría lo hacemos, no te apures, ¿y entonces? ¡Hay una solución sencilla! En vez de tener instalado el paquete vim, ¡instala el paquete gvim! Con Gvim instalado, aún puedes ejecutar Vim en la terminal, ¡y ya incluye el soporte a xterm_clipboard!

Segundo problema: ¡Nunca recuerdo usar el registro +!

Vim usa registros para almacenar texto, y el registro + es el usado para compartir texto desde y para X Window (sea cual sea el entorno de escritorio que estés usando). O sea, para copiar texto deberíamos usar "+y y para pegar texto el respectivo "+p, ¡lo cual es muy común de olvidar!, ya que estamos muy acostumbrados a sólo usar y y p para ello.

¿La solución? Si usas una versión reciente de Vim (7.3.74 en adelante), ¡estás de suerte!, basta con agregar lo siguiente a tu ~/.vimrc para crear un alias entre ambos registros:

set clipboard=unnamedplus

¡Eso es todo! ¡No más dolores de cabeza al copiar, cortar y pegar texto entre Vim y las aplicaciones de tu entorno de escritorio favorito!

Share

The Original Hacker: Jugando con la Inteligencia

The Original Hacker

Vaya sorpresa que nos dió mi amiga Eugenia Bahit el día de hoy, presentando su nuevo proyecto The Original Hacker: Jugando con la Inteligencia, una revista mensual en formato PDF, sobre temas que interesarán a todo verdadero hacker.

Si no conocen a Eugenia, les puedo comentar que es argentina, Arquitecta de Software y hacker especializada en tecnologías GLAMP (GNU/Linux, Apache, MySQL, Python y PHP) y eXtreme Programming; además, es la fundadora de Hackers & Developers Magazine.

Para no sonar repetitivo, los invito a leer el anuncio oficial en Debian Hackers de la mano de la propia Eugenia, para que tengan una idea más exacta del genial contenido que veremos mes a mes.

¿Qué esperas? ¡Descarga ya el No. 1 de The Original Hacker!

Share

Liberado Firefox 25 con soporte Web Audio

Firefox 25

Un ciclo más se cumple, y ya tenemos con nosotros la nueva versión de nuestro navegador web favorito: Firefox 25. Sus novedades no son muchas, pero si sustanciales, y vale la pena mencionar las más importantes:

  • Soporte para Web Audio.
  • La barra de búsquedas ya no se comparte entre pestañas (tabs), y ha mejorado su aspecto (como podemos apreciar en la imagen de arriba).
  • Ahora si dejamos de usar Firefox por varios meses, nos ofrecerá nuevamente migrar el historial y configuraciones de algún otro navegador.
  • Ahora al resetear Firefox no se pierde la sesión de navegación actual.
  • Soporte para CSS3 background-attachment:local para controlar el desplazamiento de fondo.
  • Más funciones de ECMAScript 6 han sido implementadas (math, Map#forEach, Set#forEach, Array.of, Number.parseInt y Number.parseFloat).
  • El contenido de documentos iframe ahora puedes ser especificados inline.
  • Corregido el error en la pestaña new tab que mostraba miniaturas (thumbnails) vacíos o faltantes.
  • Correcciones diversas en la seguridad del navegador.

Como siempre, les exhorto a verificar la lista completa de novedades

Descargas Directas de Firefox 25 en Español

Firefox 25 en Español para Windows:

Firefox 25 en Español para MacOS X:

Firefox 25 en Español para Linux (32 bits):

Firefox 25 en Español para Linux (64 bits):

También pueden visitar la página oficial de descargas.

Share

La cultura geek se ha fusionado con la cultura pop

La cultura geek hoy en día

Hace poco, platicando con algunos conocidos sobre películas y video juegos, nos dimos cuenta que la mayoría eran sobre super héroes, personajes salidos de cómics e historias de ciencia ficción, tales como Superman, Batman, Ironman, Hulk, Capitán América, Thor, así como grupos como Los Vengadores y La Liga de la Justicia.

Hoy todo mundo habla sobre ellos, ya son parte integral de la cultura pop actual. ¿Recuerdan cuando no era así? Hablar de cómics y sus personajes, principalmente los super héroes, era algo considerado exclusivo para un círculo muy cerrado de individuos, denominados de diversas formas peyorativas, la más común: “geek”.

¡Este mundo cambiante no deja de sorprenderme! Antes un geek era un tipo marginado, “cerebrito”, alejado de todo círculo social… hoy en día ser geek es motivo de orgullo, hoy en día los geeks son CEO de importantes empresas, hoy en día los geeks son dignos de admiración y ejemplos a seguir.

Según la Wikipedia, un geek es, entre otras cosas, una persona “non-mainstream”, ¿y entonces por qué ahora todo el mundo (mainstream) habla sobre super héroes en películas y video juegos? Hoy cualquiera puede incluso disfrutar en línea de video juegos sobre super héroes, y no por eso se le etiquetará peyorativamente como geek.

Otro ejemplo es Linux. Yo soy un declarado geek linuxero, pero hoy una gran parte del mundo (el mainstream) usa Linux, aún sin saberlo. Teléfonos inteligentes con Android, televisiones modernas, incluso electro domésticos, ¡usan Linux de una u otra manera! Si estás leyendo estas líneas, indirectamente estás usando Linux, pues este blog está alojado en un servidor web que usa Linux. ¿Maravilloso verdad?

Es grato saber que entre geeks y “no geeks” ahora hay muchos temas de interés en común. ¿No me crees? Te propongo un sencillo pero aplastante experimento. La próxima vez que vayas a cualquier reunión social, o si eres más atrevido, cuando camines por la calle, toma de manera aleatoria a cinco personas y pregúntales quién es “Tony Stark”o “Peter Parker”, y te aseguro que al menos tres de esas cinco personas te responderán correctamente.

Ha sido derribada esa invisible línea divisoria, la cultura geek se ha fusionado con la cultura pop.

Share

Con Firefox OS, ¡la apuesta va en grande!

Firefox OS

Cuando las cosas se hacen de corazón, sin intereses de por medio, por la comunidad para la comunidad, y con el apoyo de grandes empresas de telecomunicaciones, el resultado tiene su futuro asegurado y el éxito de la mano. Es el caso de Firefox OS.

Mozilla es orgullosamente una organización con fines no lucrativos, dedicada a poner el poder de la Web en las manos de las personas. Desde su origen, es una comunidad de usuarios, contribuidores y desarrolladores trabajando en innovar para el beneficio de todos. Firefox OS es la visión de Mozilla del futuro de la web en los dispositivos móviles.

La mayoría de los smartphones están hechos por un pequeño número de personas, todas en un sólo lugar, probablemente muy lejos del lugar dónde vives. Los teléfonos con Firefox OS son diferentes, están realizados por una inmensa comunidad global.

Muy pronto, no sólo podremos disfrutar de Firefox OS en smartphones, sino también en tablets, ¡y hasta en televisores!, ya se está trabajando en ellos.

¿Es un dolor de cabeza cuando toca actualizar a una nueva versión del sistema operatvio de tu smartphone? Con Firefox OS será tan simple como actualizar cualquier aplicación, sólo tendremos que reiniciar el sistema y ya tendremos la nueva versión funcionando sin problemas ni complicaciones.

¿Eres desarrollador de apps para dispositivos móviles? Con Firefox OS no necesitas instalar ninguna plataforma o descargarte ningún SDK para programar, ¡sólo basta tu editor de texto favorito!, la Web es la plataforma, ¿sabes HTML, CSS y JavaScript? No necesitas saber nada más. Si puedes ejecutar tu app en tu navegador web de escritorio, ¡eso es todo!, ya tienes tu app lista para funcionar en Firefox OS.

Por el momento los teléfonos con Firefox OS sólo se encuentran a la venta en países como España, Venezuela y Colombia, pero muy pronto estarán disponibles en el resto de latinoamérica. Así que si vives en Ecuador, por ejemplo, ya puedes ir vendiendo tu actual teléfono en http://www.olx.com.ec/ para estar listo cuando Firefox OS llame tu puerta.

Share

Mis Bookmarks – Accede fácil y rápido a tus bookmarks preferidos

Mis Bookmarks

Aún sigo trabajando en la nueva versión del blog, ¡no desesperen! Como compensación, aquí les dejo un proyecto personal: Mis Bookmarks.

Se trata de un pequeño proyecto escrito en HTML y JavaScript, alojado en Github. No usa PHP, sólo tiene como librería a jQuery y Bootstrap (ambos incluídos).

Lo único que tienen que hacer es editar el archivo bookmarks.json con tus propios enlaces favoritos. El primer nivel del archivo JSON son las categorías, el segundo nivel son los bookmarks (nombre / URL).

Un tip: Para usar Mis Bookmarks como la Pestaña “New Tab” en Firefox, entra a about:config y cambia el valor de browser.newtab.url por el URL donde lo tengas localmente almacenado (por ejemplo, http://localhost/mis-bookmarks/).

Enlace: gespadas.github.io/mis-bookmarks

Share