Alsa: impostare l'ordine delle schede audio (e quella di default)

audio
Tags: alsaaudio

La scheda audio predefinita è la prima nell'elenco rilevato da ALSA. Questo elenco però potrebbe cambiare a ogni reboot (ad esempio se abbiamo delle schede audio USB che vanno e vengono), e questo può dare problemi sia per avere dei riferimenti certi delle schede, sia per sapere qual'è la scheda predefinita. Considerando che alcuni programmi usano questa (ad esempio Flash) e spesso cambiarla è una rottura, è importante specificare un ordine.

Per prima cosa dobbiamo capire quali sono i moduli del kernel legati alle nostre schede, con questo comando:

lsmod | grep "^snd_" | column -t

Il risultato nel mio caso è:

[code]

Caricare una libreria javascript esterna senza bloccare il browser (lazy loading)

javascript

Se abbiamo bisogno di creare un "widget" javascript da inserire in una pagina di un sito esterno, o in generale se desideriamo essere sicuri al 100% che il caricamento di una libreria javascript non rallenti il loading della pagina (ma venga effettuato realmente DOPO il rendering completo della pagina), occorre usare delle tecniche di lazy loading. Con HTML5 è possibile specificare il tag "async" all'elemento <script>, ma non è ancora supportato da tutti i browser, e anche quando lo è ha lo spiacevole incoveniente di bloccare comunque l'esecuzione dell'evento "onload" della pagina.

Occorre quindi usare un pattern più elaborato. Dopo diverse prove il sistema che preferisco è questo:

Bash: usare una variabile per costruire un comando (con wildcards)

bash

Poniamo che in uno script vogliamo eseguire un comando, i cui parametri sono all'interno di una variabile (o, più in generale, parte o tutta la linea di comando è presente in una variabile). Normalmente eseguiremo una cosa del genere:

PARAMS="-par1 -par2"
command $PARAMS

Fin qui nessun problema. Gli scogli arrivano se dentro $PARAMS sono presenti delle wildcards, ad esempio:

PARAMS="-par1 --exclude={/dir1/*,/dir2/*}"
command $PARAMS

In questo caso l'esecuzione del comando non funziona o, meglio, non funziona allo stesso modo di aver eseguito direttamente:

command -par1 --exclude={/dir1/*,/dir2/*}

Bash: array associativi e come copiarli

bash

La bash ha il supporto sia per gli array a indice numerico che per gli array associativi. Vediamo come usarli.

Array a indice numerico

Per quanto riguarda i primi è possibile usare queste forme per la dichiarazione:

var[index]=value

var(value1 value2 value3...)

(in questo caso il primo indice parte da "0")

var([index1]=value1 [index2]=value2 ...)

Ad esempio, questi comandi generano la stessa variabile:

test[1]=one
test[2]=two
echo ${test[1]}
unset test
test=([1]=one [2]=two)
echo ${test[1]}

E' possibile usare anche la forma "+=" per aggiungere un array a un altro.

var += ([index]=value ...)

Da notare che è possibile dichiarare una variabile come array usando la forma:

declare -a var

Spostare una finestra alla posizione corrente del mouse

shell

Problema: ho 2 monitor attivi in modalità twinview (quindi il sistema vede un unico monitor "grande"). Per qualche motivo stacco temporaneamente uno dei 2 monitor, magari quello principale con la taskbar.

Non voglio resettare la configurazione dei monitor, ma vorrei riuscire velocemente a spostare le finestre nel monitor corrente.

 

Sembra banale, ma non lo è. Con ALT+TAB si accede alla finestra, ma poi riuscire a spostarla è un impresa. Bisognerebbe ricordare a memoria come arrivare nel menu di finestra, come attivare lo sposta (se non è massimizzata).

 

Soluzione: uno script che sfrutta xdotool, da associare a una combinazione di tasti.

 

Per prima cosa installiamo xdotool, se non l'abbiamo già: