Archivos para la categoría: Sin categoría

Alguien se preguntará ¿y para qué quiero hacer eso? Bueno, es el audio de una entrevista y lo que quiero es usar el bot de subtítulos automáticos de YouTube para desgrabarla. Es simple, son dos pasos.

Primer paso: generar un video mudo a partir de la imagen

ffmpeg -loop 1 -f image2 -i imagen.jpg -vcodec libx264 -t SEGUNDOS mudo.mp4

Hay que reemplazar SEGUNDOS por la cantidad de segundos que necesitamos (la duración del audio).

Segundo paso: unir el video mudo y el audio

ffmpeg -i mudo.mp4 -i audio.mp3 -c:v copy -c:a copy videoconaudio.mp4

Y listo

Este es un problema que me ha perseguido varias veces, especialmente cuando escribo algún pequeño script en PHP para alguna cosa puntual (por ejemplo hacer una consulta específica a la base de un CMS como WordPress u Open Journal System). El conjunto de scripts del CMS, obviamente, lo tiene resuelto, pero en el mío sucede que lo veo bien en mi entorno local, y cuando lo subo a un servidor, aparecen problemas de codificación.

Típicamente, el error se muestra como algo así:

El problema es que hay algo que no está configurado en UTF-8. En general, cuando uno busca cómo resolverlo, encuentra recomendaciones a nivel de la codificación de la página, que nunca están de más, y que son básicamente dos. La primera es incluir un metadato en la sección HEAD del HTML:

<meta http-equiv="Content-type” content=”text/html; charset=utf-8" />

La segunda es a nivel de PHP y consiste en incluir -importante: antes que cualquier otro carácter que vaya a salir por pantalla- una instrucción de header:

header ('Content-type: text/html; charset=utf-8');

La cuestión es que estas cosas resuelven los problemas de codificación en el texto de la página, pero el error que yo tenía parece estar en un paso anterior: en la consulta a la base MySQL. Ahí hay varias instrucciones que se sugieren en distintos lugares, pero a mí la única que me funcionó (y que es el motivo de este post, para no tener que andar a las vueltas la próxima vez) es una que va después de establecer la conexión, con lo que queda algo así:

$link = mysqli_connect( $dbhost, $dbuser, $dbpassword, $dbbase );
mysqli_set_charset($link, 'utf8');

Aclaro que yo uso estilos por procedimientos, y no orientado a objetos.

Con esto he resuelto mi problema

Desde hace un tiempo uso XFCE como escritorio, y cada vez me gusta más. Como dock utilizo Plank, que es sencillo y eficiente. Pero una cosa que quería hacer era personalizar la ruta en el acceso a Thunar (el administrador de archivos de XFCE). Por defecto ingresa en la carpeta de usuario, pero yo quería que ingresara en una carpeta específica allí. Me costó un poco darme cuenta de cómo podía hacerse, pero resultó bastante sencillo.

Para empezar, los accesos de Plank se ubican en ~/.config/plank/dock1/launchers. Allí puede verse un archivo .dockitem por cada lanzador que tenemos. Si miramos en uno de esos archivos (en mi caso me interesaba thunar.dockitem) vemos que tiene esta forma:

[PlankDockItemPreferences]
Launcher=file:///usr/share/applications/thunar.desktop

O sea que solo dirige al archivo desktop de la aplicación. Cuestión, entonces, que se trata de crear un nuevo archivo desktop, en mi caso:

sudo cp /usr/share/applications/thunar.desktop /usr/share/applications/documentos.desktop

y después configurar ese archivo. Casi al final tenemos una línea que dice

Exec=thunar %F

y allí se trata de colocar la ruta que deseamos. Asume como origen la carpeta de usuario, así que por caso:

Exec=thunar Documentos

Ahora solo resta cambiar la línea en el archivo del lanzador para que quede como sigue:

[PlankDockItemPreferences]
Launcher=file:///usr/share/applications/thunar.desktop

Hay varios tutoriales sobre esta cuestión disponibles en la red. Agrego uno por las características de mi vieja impresora HP Laserjet 1020, muy fiel pero arisca para su configuración en Linux.

Asignar IP fija a la raspberry

En este caso he utilizado un modelo 3b+ pero supongo que el enfoque debe ser general. El primer paso es asignarle una IP fija a la raspberry, si es que no se ha hecho con anterioridad. Para eso lo mejor es consultar los datos actuales de la red. En una terminal, con ip addr obtenemos la dirección IP actual del dispositivo.

En mi caso el router (que es a su vez el servidor DNS) asigna IPs en un rango que va de 192.168.0.100 a 192.168.0.200. Elegí para los dispositivos con IP fija un rango menor, en este caso 192.168.0.90. La conexión de la raspberry a la red es por wi-fi, en caso de que sea por cable el dato será el de la interfaz eth0.

Los otros datos que se necesitan son la puerta de enlace y la DNS a la que accede. Para el primero hay un comando que nos brinda esa información: ip route show. El otro se encuentra en el archivo /etc/resolv.conf, así que lo mejor es hacer un cat /etc/resolv.conf y fijarse en el IP que aparece luego del nameserver (puede ser uno o dos).

Con todos esos datos configuramos la IP fija. Si estamos accediendo al escritorio gráfico de la raspberry es muy sencillo: clic opuesto en el icono de la red (arriba a la derecha en la configuración por defecto de raspbian) y elegir Wireless & Wired Network Settings. Ahí hay que seleccionar la interfaz correspondiente y colocar los datos.

Si uno está accediendo al dispositivo por SSH, lo que hay que hacer es editar el archivo /etc/dhcpcd.conf. En la imagen está como me quedó a mí, con los mismos datos (lo que vale son las últimas líneas):

Instalar y configurar lo necesario en la raspberry para imprimir

Ahora que ya tenemos la IP fija podemos acceder desde una pc por SSH. En la mayoría de los tutoriales sugieren este procedimiento:

sudo apt update
sudo apt install hplip cups
sudo usermod -a -G lpadmin pi

En mi caso (por el modelo de mi impresora) eso no alcanza, así que además tuve que instalar algunas otras cosas:

sudo apt install printer-driver-hpcups printer-driver-postscript-hp hplip-data libhpmud0

Después lo mejor es reiniciar la raspberry. Y ya tendríamos que poder acceder a CUPS poniendo en un browser http://192.168.0.90:631 (por supuesto hay que poner el IP que ustedes le hayan asignado a la raspberry).

Instalar HP Laserjet 1020

Bueno, ya estamos en la parte final. En CUPS vamos a «Añadir impresoras y clases» y ahí pulsamos en «Añadir impresora». Por supuesto, la impresora tiene que estar conectada por cable USB a la raspberry y encendida. Ahí tiene que aparecer entre las impresoras locales.

En mi caso aparecen dos opciones. No sé en qué se diferencia, pero pareciera que anda cualquiera. Una vez que la eligen y cliquean en «Siguiente» pasan a otra pantalla donde les sugiere algunos datos que se pueden cambiar. Es útil indicar como ubicación el dispositivo, pero no es imprescindible. Ahora, en la siguiente pantalla les aparece una serie de modelos posibles.

Fíjense que los que corresponden a nuestra impresora indican que se requiere un plugin propietario. Así que tomen nota de la versión del plugin -en este caso es la 3.18.12- y dejen esto como está (luego volveremos para terminar).

En este enlace https://developers.hp.com/hp-linux-imaging-and-printing/plugins van a encontrar todas las versiones de ese plugin. Fíjense que para cada uno hay dos archivos (run y asc). Es necesario descargar los dos. Así que en una terminal vayan a ~/Descargas y descarguen ambos archivos. La forma más sencilla es copiar el link (clic opuesto sobre el nombre del plugin y «Copiar la dirección del enlace») y despues pegarlo en la terminal después de wget. O sea, para mi caso:

wget https://developers.hp.com/sites/default/files/hplip-3.18.12-plugin.run
wget https://developers.hp.com/sites/default/files/hplip-3.18.12-plugin.run.asc 

Y ahora, desde la misma carpeta (recuerden que siempre estamos accediendo por SSH a la raspberry)

sudo hp-plugin

Acá pregunta si lo descargamos del sitio de HP, pero esta opción (que es la recomendada) las últimas veces no me funcionó. Justo por eso lo acabamos de descargar. Así que elegimos «p» (specify path) y ahí uno pone el path ~/Descargas. A mí me tiró un error, pero me dijo que si quería instalarlo igual, le puse que sí y anduvo bien.

Bueno, ahora que ya tenemos instalado el bendito plugin, lo único que queda es volver a la pantalla de CUPS y cliquear en «Añadir impresora». Después imprimir una página de prueba y voilá!.

Una cosa más: a mí me pasa que como que se desconecta de vez en cuando, después de apagarla y reiniciar. En esos caso uno envía el trabajo, pero no imprime. Si esto sucede, se puede verificar la conexión entrando otra vez a CUPS, «Añadir impresoras y clases», «Añadir impresora». Si ahí no aparece la HP Laserjet 1020, lo que yo he hecho (ya sé que es medio mágico, pero bueno) es apagar la impresora y desenchufar y volver a enchufar el cable USB de los dos extremos. Después la prendí, repetí la consulta y ahí ya aparecía. Si la impresora (una vez instalada) aparece como para ser instalada de nuevo, entonces anda. Si no aparece, no.