10 de febrer del 2013

L'infern de la conversió de caràcters (codificacions)

Quan obrim un document de text, habitualment el sistema reconeix la codificació de caràcters correcta i ens mostra el seu contingut sense problemes. De vegades, però, no està tant clar i ens ha de preguntar quina codificació de caràcters té el document: UTF-8, ISO8859-1, o encara alguna altra? Sovint podrem resoldre aquests casos amb prova i error, si més no.

Si voleu saber més sobre la codificació de caràcters i el problema que pot suposar, us recomano llegir l'article (està en anglès) "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)" de Joel Spolsky. Absolutament recomanable.

Us explico això perquè fa uns dies, movent una base de dades de LibreOffice a un servidor extern MySQL, em vaig trobar amb un document UTF-8 que contenia caràcters Unicode (del tipus \uXXXX) entre mig. És a dir, una barreja de codificacions de caràcters en el mateix document, pel que no serveixen de res les clàssiques eines de transformació entre codificacions.

Ja em veia substituint els caràcters a mà, quan vaig arribar a la meva salvació: la pàgina http://rishida.net/tools/conversion/. Tal com es veu a la imatge de sota, aquesta web permet transformar codificacions barrejades de caràcters cap a diferents formats.


En el meu cas, vaig enganxar el text problemàtic a "Mixed Input" per recollir els caràcters UTF-8 normals a "Characters".

No cal ni dir que aquesta pàgina ja figura entre les meves adreces d'interès, en un lloc de privilegi.

2 de febrer del 2013

Wifi ON/OFF amb un botó a Gargoyle (TP-Link TL-WR1043ND)

Tal com vaig "amenaçar" després de posar Gargoyle (Openwrt) a un router  TP-Link TL-WR1043ND, penso continuar escrivint sobre el mateix tema. Concretament, avui serà sobre com utilitzar el botó de QSS de l'encaminador per activar/desactivar la xarxa sense fils.


Ja fa molt de temps que procuro tenir la xarxa sense fils desactivada quan no l'utilitzo. Alguns encaminadors porten un botó per fer-ho, però n'hi ha pocs. I el meu flamant TP-Link TL-WR1043ND no és un d'aquests.

Però, justament, la gràcia de posar-hi un firmware de codi obert és la llibertat d'afegir noves funcionalitats. De fet, hi ha un paquet anomenat wifitoggle que hauria de fer la feina, però que fins fa dos dies (literalment) estava trencat. I encara caldrà esperar fins que arribi una versió de Gargoyle on estigui corregit. Així que, de moment, ho solucionarem d'una altra manera.

En primer lloc, accedim a l'encaminador per ssh i creem un script anomenat wifionoff, copiant-lo a /sbin i sense oblidar-nos de fer que sigui executable:
#!/bin/sh

# Copiar a /sbin/wifionoff
# Fer executable amb chmod +x /sbin/wifionoff
# Afegir controls del butons a /etc/config/system

SW=$(uci -q get wireless.@wifi-device[0].disabled)

if [ "$SW" == "0" ] ; then
 echo 0 > /sys/class/leds/tp-link\:green\:qss/brightness
else
 echo 1 > /sys/class/leds/tp-link\:green\:qss/brightness
 echo timer > /sys/class/leds/tp-link\:green\:qss/trigger
 echo 2000  > /sys/class/leds/tp-link\:green\:qss/delay_off
 echo 2000  > /sys/class/leds/tp-link\:green\:qss/delay_on
fi

[ "$SW" == "1" ] && uci set wireless.@wifi-device[0].disabled=0
[ "$SW" == "1" ] || uci set wireless.@wifi-device[0].disabled=1
wifi
Tot seguit, haurem d'afegir controls pels botons a /etc/config/system (editant amb vi):
config 'button' 'wifionoff'              
        option 'button' 'wps'            
        option 'action' 'pressed'        
        option 'handler' '/sbin/wifionoff'
                                          
config led 'led_onoff'                    
        option 'sysfs' 'tp-link:green:qss'
        option 'trigger' 'timer'          
        option 'mode' 'link'              
        option 'default' '1'              
        option 'delayon' '2000'           
        option 'delayoff' '2000'          
I bàsicament ja ho tenim. Reiniciem l'encaminador amb reboot i ara el botó QSS ens permet engegar i parar la xarxa sense fils quan vulguem (sense haver d'utilitzar la interfície web). A més, el LED de dalt de tot, QSS, parpelleja lentament quan la xarxa sense fils està activa.

Útil, veritat?