domingo, 11 de agosto de 2024
Adaptador Wifi en openSUSE
viernes, 18 de febrero de 2022
Si No Puedes Pagarlo No Lo Compres
El año 2017 compré a través de Amazon 2 enchufes inteligentes D-Link en unos 25usd cada uno. El miércoles 16 de febrero de este año 2022 recibí un correo de D-Link indicando que en diciembre de este año se acaba el servicio y soporte para varios dispositivos, entre ellos, mis enchufes. En otras palabras en diciembre yo sería el flamante propietario de 2 pisapapeles caros.
A modo de consuelo me convencí de que en realidad no había comprado 2 enchufes sino que había pagado por 5 años de servicio de la nube D-Link.
Al día siguiente veo la noticia de la empresa Second Sight: La empresa tenía alrededor de 350 pacientes clientes con implantes oculares biónicos que les permitió recuperar la visión que ahora se han quedado sin soporte ni actualizaciones. Lo anterior significa que en cualquier momento esas personas perderán la visión. Adicionalmente si alguno de ellos requiere de algún procedimiento que implique retirar la retina biónica (por ejemplo para tomar una resonancia magnética) tampoco podrán contar con la asistencia técnica original.
Nos acercamos a pasos agigantados a una economía donde las personas tendrán acceso a muchos productos sin embargo no serán dueños de nada. Dichos productos van desde los enchufes inteligentes hasta órganos y departamentos, pasando por ejemplo por el chaleco con airbag para motoristas que deja de funcionar si no pagas.
Evidentemente algunos estarán contentos con este nuevo modelo, sin embargo otros vemos con desconfianza esta tendencia que literalmente puede dejar desnudas y en la calle a las personas que pierdan su empleo. Lo anterior apoyado por tecnologías como blockchain para la implementación de contratos inteligentes que pueden desactivar instantáneamente tu vehículo en caso de no pago o incluso hacerlo volver autónomamente al concesionario de la marca.
Pero puede haber luz al final del camino: apoyar y preferir el software y hardware libre podría eventualmente torcer un poco la mano de dicho futuro tan distópico o al menos proveer una alternativa. De esta forma si una empresa no puede quiere seguir ofreciendo soporte podría liberar el código fuente de sus artefactos para que la comunidad provea actualizaciones. En la medida que sigamos viendo casos como el de Second Sight o las primeras muertes por airbags que no funcionaron probablemente necesitemos algún tipo de legislación que "incentive" la liberación del código ante una inminente quiebra.
Repo Men (2010). Soy propietario del NFT de esta imagen -> Verificar |
Es imposible escribir sobre este tema y no recordar la película Repo Men (2010), donde una empresa provee órganos biónicos indestructibles que tiene personal que envía a recuperar dichos órganos cuando el cliente no sigue pagando.
Por ahora tengo instalado Home Assistant en mi openSUSE para controlar mis nuevos enchufes que pueden ser flasheados con código libre para no depender de terceros. No sé si el futuro sea que cada persona se monte su propia nube de servicios en una raspberry o mini pc, pero al menos es que lo me funciona ahora y me permite estar más tranquilo.
sábado, 8 de julio de 2017
Arduino Para Niños Parte II: Sensor de Movimiento
martes, 4 de julio de 2017
Arduino para Niños
lunes, 31 de agosto de 2015
Experiencia con Disco de Estado Sólido en openSUSE
Esta es la estructura que elegí para computador:
SSD:
- 4GB para Swap
- 110 para /
- 40GB para Home
- 409GB para Archivos
domingo, 22 de septiembre de 2013
Un Portapapeles en la Nube
En esta ocasión implementaremos una serie de scripts para que cada vez que copiemos algo a nuestro portapapeles (Klipper, en este caso) tengamos una copia en la nube. Así por ejemplo, si nos encontramos con una página interesante que nos gustaría seguir viendo después en otro computador o dispositivo, bastará con copiar la dirección y ya la tendremos directamente accesible desde la nube.
Materiales:
- xbindkeys: Programa que nos permite crear atajos de teclado.
- xmodmap: Utilidad para cambiar el comportamiento de algunos atajos.
- xvkbd: Utilidad para emulación de teclado.
- Una cuenta en Copy o Dropbox. Ambos con clientes Linux y Android.
xbindkeys no viene en la instalación por defecto para openSUSE 12.3 por lo que iremos al OBS y buscaremos la versión (inestable) que corresponde a nuestro openSUSE (One-Clic Install). Particularmente instalé la versión que estaba en el repo Utilities dejando sin suscripción al repositorio después de instalar.
xmodmap ya estaba instalado en el sistema por defecto. Para instalar xvkbd sólo bastará hacerlo de la manera usual:
# zypper in xvkbd
$ xbindkeys --defaults > $HOME/.xbindkeysrc
# Examples of commands:
#"xbindkeys_show"
# control+shift + q
# set directly keycode (here control + f with my keyboard)
#"xterm"
# c:41 + m:0x4
# specify a mouse button
#"xterm"
# control + b:2
combinación de teclas
Al final del archivo entonces agregaremos lo siguiente:
"~/bin/super_copiar.sh"
m:0x50 + c:54
$ xbindkeys -k
$ xmodmap -e "remove mod4 = Super_L"
#!/bin/bash xvkbd -xsendevent -text "\Cc" qdbus org.kde.klipper /klipper org.kde.klipper.klipper.getClipboardHistoryItem 0 >> ~/Dropbox/Historial.txt
$ chmod +x ~/bin/super_copiar.sh
Alcances menores
He elegido super+c en vez de sobreescribir el control+c habitual pues porque la privacidad es importante, así enviaremos exactamente sólo lo que nos interesa tener en la nube mediante una combinación de teclas alternativa.
Es probable que debamos ejecutar al inicio de sesión el comando xmodmap y la activación de xbindkeys. Para eso podemos hacer un script simple llamado atajos_de_teclado.sh y pondremos lo siguiente:
#!/bin/bash /usr/bin/xmodmap -e "remove mod4 = Super_L" /usr/bin/xbindkeys
Guardamos los cambios, cerramos, damos permisos de ejecución y lo copiamos a nuestra carpeta ~/.kde4/Autostart
Eso sería todo. Como tarea pueden mejorar el script super_copiar.sh para agregar a cada línea la fecha y la hora en que el comando fue agregado a nuestro historial ;-)
miércoles, 17 de agosto de 2011
NowPlaying con Clementine+Kopete parte II: Condiciones
Para esto introduciremos el uso de condiciones en nuestro script; por lo que si Clementine se está ejecutando entonces haremos lo que ya sabemos para capturar el nombre de artista y canción. En caso contrario, haremos nada. Así quedará disponible nuevamente para cambiar nuestro estado de Kopete a lo que necesitemos. Manos a la obra:
Primero utilizaremos el comando qdbus para saber si Clementine se está ejecutando o no:
isClementineRunning=$(/usr/bin/qdbus | grep clementine)
La variable isClementineRunning puede contener dos posibles valores: una cadena en blanco si Clementine no se está ejecutando y una cadena no-vacía si lo está. Ahora condicionamos nuestro script según esos valores:
if [ "$isClementineRunning" != "" ]
then
#capturamos el nombre de artista...
currentTrackIndex=$(....
fi
Esta condición evalúa SI la cadena isClementineRunning NO está vacía ENTONCES capturamos el nombre de artista, etc...
Si la cadena está vacía (Clementine no está ejecutándose) entonces no pasará nada.
Pero ¿qué sucede si Clementine se está ejecutando pero ninguna canción se está reproduciendo? Para resolver esto podemos volver a condicionar. Ahora consultamos por el índice de la canción actual el cual puede tomar varios valores: -1 si no se está reproduciendo ninguna canción o bien un valor positivo en caso contrario. Por lo que agregamos ahora una nueva variable y una nueva condición:
isClementinePlaying=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack)
if [ $isClementinePlaying != -1 ]
then
#obtenemos el nombre de artista...
currentTrackIndex=$...
fi
Y eso es todo! Puedes descargar el script final desde aquí.
martes, 12 de julio de 2011
Cómo poner "Now playing" con Clementine+Kopete
Pero no todo está perdido! Si ponemos en un recipiente un poquito de BASH+QDBUS+Cron podemos hacer nuestro propio script "Now Playing" para establecer el mensaje de estado de Kopete con la canción y el artista que actualmente está sonando en Clementine.
Manos a la obra:
Primero creamos nuestro script en el directorio bin de nuestro home (por inercia, elección y formación utilizo nombres de archivos y variables en inglés):
pico ~/bin/ClementineNowPlaying.sh
Siendo pico el editor de texto que más utilizo. Puedes utilizar tu preferido (Kate/KWrite/Vi...).
Básicamente (y muy básicamente puesto que estoy lejos de ser un experto en BASH scripting) nuestro script obtendrá la canción y el artista que actualmente está reproduciendo Clementine, luego los pondrá en el mensaje de estado de Kopete adornado con la frase "Now playing...".
A continuación pegan el siguiente código dentro del archivo, he agregado comentarios sobre qué hace cada línea:
#!/bin/bash
#Primero obtenemos el índice de la pista que actualmente esta sonando en Clementine
currentTrackIndex=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetCurrentTrack)
#Luego utilizamos ese índice para obtener toda la información de la pista actual
#Con el comando grep nos quedamos sólo la línea que contiene el nombre del artista, esta línea es por ejemplo artist: Bon Jovi
artist=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $currentTrackIndex | grep artist)
#Se aplica el mismo procedimiento para el título, esta variable quedará de la forma title: Always
title=$(/usr/bin/qdbus org.mpris.clementine /TrackList org.freedesktop.MediaPlayer.GetMetadata $currentTrackIndex | grep title)
#Luego de la cadena original (ej: "artist: Bon Jovi") queremos borrar la subcadena "artist: " y eso lo hacemos así:
artist=${artist/artist: /}
#Lo mismo para el título:
title=${title/title: /}
#Finalmente enviamos la frase con las variables al mensaje de estado de Kopete:
/usr/bin/qdbus org.kde.kopete /Kopete org.kde.Kopete.setStatusMessage "Now playing $title by $artist"
Guardamos los cambios y cerramos nuestro editor de texto.
Le otorgamos permisos de ejecución a nuestro script:
chmod +x ~/bin/ClementineNowPlaying.sh
Es tiempo de probar nuestro script: ejecutamos Clementine con alguna canción y abrimos Kopete.
En el terminal ejecutamos nuestro script:
./bin/ClementineNowPlaying.sh
Chequeamos que Kopete ha realizado correctamente el cambio de estado:
Finalmente necesitamos que nuestro script se ejecute cada cierto intervalo de tiempo para asegurarnos que mostrará la información lo más actualizada posible sobre lo que escuchamos. Para eso utilizaremos el gestor de tareas de Linux: Cron.
Con el siguiente comando abriremos el editor del Cron:
crontab -e
Una vez ahí, presionamos la tecla i para iniciar la inserción de texto y pondremos la siguiente línea:
* * * * * DISPLAY=:0.0 /home/francisco/bin/ClementineNowPlaying.sh &>/dev/null
Esta línea quiere decir que ejecutaremos nuestro script cada minuto, de cada hora, de cada día, etc...
Para salir del editor presionamos la tecla ESC y luego ponemos : x y presionamos enter.
Para comprobar que hemos guardado los cambios ponemos:
crontab -l
Si no es así, volver sobre el paso anterior hasta que resulte! (Lo sé, ese editor no es de los más intuitivos).
Cuando resulte habremos terminado!
Suerte!
Cualquier pregunta con respecto a esto no duden en enviarla como comentario.
Note: I can answer in english as well, so if you know what it is about everything here but although of that you may need some help, so please don't hesitate and leave a comment ;-)
martes, 28 de junio de 2011
Compartir el escritorio en un aula de clases
Problemática: Este esquema funciona bien en los horarios de cátedras (salas/aulas) pero los laboratorios (salas de computación) no cuentan con proyector (datashow) entonces es necesario contar con alguna herramienta que permita compartir la pantalla de mi computador vía red para que los estudiantes puedan ver en sus computadores lo que voy haciendo en el mío.
Solución: Utilizar lo que describí en mi post anterior para el control de sesiones en openSUSE. Esta vez queremos que los clientes (estudiantes) puedan ser sólo espectadores de mi sesión. Para esto utilizamos el siguiente comando en un terminal (como usuario normal):
x11vnc -forever -bg -viewonly -nopw -shared
La explicación "humana" de cada uno de los parámetros es la siguiente:
- forever: Indica que la sesión compartida seguirá iniciada incluso después de que algún cliente se desconecte.
- bg: Sirve para que la sesión de nuestro servidor corra como un servicio de fondo (background).
- viewonly: Este parámetro nos sirve para establecer que los clientes sólo podrán ver nuestro escritorio y no manipular el mouse ni el teclado.
- nopw: Establece que los clientes puedan conectarse al servidor sin clave.
- shared: Nos permite tener más de un cliente.
Una vez que el comando es introducido aparecerán en la consola un montón de instrucciones. Nos interesa un par de líneas como las siguientes:
The VNC desktop is: localhost.site:2
PORT=5902
La primera línea puede variar según la configuración del equipo. La segunda línea nos indica en qué puerto está corriendo nuestro servidor. En el ejemplo es el 5902, así que es necesario ir al administrador del cortafuegos y abrir dicho puerto:
YaST->Seguridad y Usuarios->Cortafuegos->Servicios Autorizados->Opciones Avanzadas
En la sección "Puertos TCP" agregamos el puerto que anotamos en el paso anterior:
Damos aceptar a esa ventana y a la ventana de configuración del cortafuegos.
Y ahora estamos listos para compartir nuestro escritorio con los estudiantes. Sólo debemos decirles que bajen un cliente VNC (como TightVNC) y les damos nuestra IP y el puerto asignado al servicio, por ejemplo:
192.168.0.100:5902
Y eso es. Happy teaching!
martes, 18 de enero de 2011
Controlar remotamente tu sesión de openSUSE
1. Instalar el servidor de administración remota. Vamos a la administración de paquetes de YaST y en el campo de búsqueda ponemos: x11vnc. Seleccionamos ese paquete y le damos a instalar (aceptamos sus dependencias si es que las hay).
2. Habilitar el servidor para la administración remota. En openSUSE es muy fácil, basta con ir a YaST->Servicios de Red->Administración Remota. Marcamos la opción "Permitir administración remota" y chequeamos en "Puerto abierto en el cortafuegos". Al aceptar se instalarán los paquetes necesarios.
3. Opcionalmente y si fuera necesario abriremos el puerto 5900 de nuestro computador: YaST->Seguridad y Usuarios->Cortafuegos. Seleccionamos "Servicios autorizados" y luego "Opciones Avanzadas". En la ventana agregamos el puerto TCP 5900.
4. Ya casi estamos listos. Ejecutamos el servidor de vnc en un terminal y como usuario normal de la siguiente forma:
x11vnc -usepw
Eso nos pedirá el ingreso de una clave para el control de acceso; ponemos la clave que queramos y la volvemos a ingresar.
5. Ahora podemos probar desde otro computador en la red local. Por ejemplo si la máquina que queremos controlar tiene la IP 192.168.0.40 presionamos Alt+F2 y ponemos el siguiente comando (o en una terminal):
vncviewer 192.168.0.40
Al dar enter nos pedirá la clave que ingresamos en el otro equipo y ya deberíamos estar controlando nuestro computador.
6. Al cerrar la sesión de VNC no podremos volver a conectarnos a nuestro equipo a menos que nuevamente ejecutemos el comando x11vnc... para evitar esto y habilitar la administración remota permanentemente haremos lo siguiente en KDE: Preferencias del Sistema->Autoarranque->Añadir programa. En el campo de texto ingresaremos:
x11vnc -usepw -forever -bg
Aceptamos y ya hemos terminado. Ahora podemos controlar nuestra sesión activa de KDE desde cualquier otro computador.