Archivio

Archivio per la categoria ‘codice’

password generator

1 settembre 2009

Mi serviva una nuova password, così, preso da un’attacco di fancazzismo, ho creato questo piccolo programma.

Prosegui la lettura…

Francesco Apollonio codice , , , ,

eeepc 901go key to enable/disable wireless

26 maggio 2009

Anche in vacanza mi fanno lavorare!

“Tutta colpa” di mio fratello che ha comprato un Eeepc 901Go e dopo averci messo kubuntu/ubuntu ha notato il non funzionamento della shortcut Fn+F2 che permette lo spegnimento/accensione della scheda wireless e dell’annesso led in basso.

Son fin da subito riuscito a disattivare il led e la scheda ma il problema era la riaccensione infatti non funzionava se non riavviando il sistema… poi ieri sera finalmente ecco la soluzione!

Bisogna modificare il file /boot/grub/menu.lst per impostare alcuni parametri al caricamento del kernel (infatti il modulo incriminato di questo “malfunzionamento” è pciehp che è compilato staticamente), queste sono le modifiche da effettuare; si devono aggiungere alla linea kernel del file le stringhe “pciehp.pciehp_force=1 pciehp.pciehp_poll_mode=1” in modo da avere alla fine questo risultato:

kernel		/boot/vmlinuz-2.6.28-11-generic root=UUID=3ddd8611-ec14-4c47-8812-d76a58ffe048 ro quiet splash pciehp.pciehp_force=1 pciehp.pciehp_poll_mode=1

Dopo aver riavviato il sistema passiamo a testare il corretto funzionamento di tutto, prima di tutto disattiviamo la scheda:

ifdown wlan0
ifconfig wlan0 down
echo 0 > /sys/class/rfkill/rfkill0/state
modprobe -r ath5k

Ora proviamo a riattivarla:

echo 1 > /sys/class/rfkill/rfkill0/state
modprobe ath5k
ifconfig wlan0 up
ifup wlan0

A questo punto connettiamoci come solitamente facciamo (dall’applet nella systray da pppoeconf o da qualsiasi altro programma), la scheda è nuovamente attiva!

Ora scriviamo un piccolo script da associare alla combinazione di tasti Fn+F2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
 
TMP='/tmp/wireswitch'
 
if [[ -f $TMP ]]; then
        rm $TMP
        echo 1 > /sys/class/rfkill/rfkill0/state
        modprobe ath5k
        ifconfig wlan0 up
        ifup wlan0
else
        touch $TMP
        ifdown wlan0
        ifconfig wlan0 down
        echo 0 > /sys/class/rfkill/rfkill0/state
        modprobe -r ath5k
fi

Ora non vi resta che copiare lo script in /usr/sbin e associarlo al vostro gestore delle shortcut.

Ricordatevi solo che tutti i comandi vanno eseguiti come root quindi, in fase di associazione del comando alla combinazione, ricordatevi di premettere kdesudo o gtksudo al nome dello script.

Francesco Apollonio codice, guide , , , , , , , ,

kernel parameters in bash scripts

9 maggio 2009

Vi è mai capitato di dover differenziare il comportamento di uno script sin dall’avvio del  vostro computer?

Ad esempio mi occorreva disabilitare l’avvio automatico di X subito dopo il login da tty (vedere xttydm), ecco come farlo passando un semplice parametro al kernel in fase di caricamento.

Il funzionamento è molto semplice: tutti i parametri di avvio del kernel possono essere trovati in /proc/cmdline, basta semplicemente controllare che il parametro che ci interessa esista:

case $TERM in
linux) 
START=`cat /proc/cmdline | grep xtty`
if [[ -n $START ]]; then
~/bin/startx.sh &&
fi ;;
*) ;;
esac

inserite questo codice in .bashrc e ad ogni login da tty se l’opzione xtty è presente come parametro del kernel, X verrà automaticamente fatto partire.

Semplice no? :D

Francesco Apollonio codice , , , , , ,

mpcplay, semplice aprire un file musicale con mpd

6 marzo 2009

Avevo la necessità di trovare un modo rapido per aprire files e cartelle direttamente facendoci click dal files-manager, ed ecco che è nato questo semplice script (che utilizza mpc).

#!/bin/bash                                                                                                                                                                         
 
function usage {
        echo "Errore nei parametri"
        echo "Usage: mpcplay [PARAMETERS] fileName"
        echo "-ao --add-only: Aggiunge solo alla playlist"
        echo "-p --play: Avvia anche la riproduzione (Default)"
        exit
}                                                                
 
function splitName {
        echo "$1" | awk -F "$musicRootDirectory" '{print $2}'
}
 
if [[ $# -lt 1 || $# -gt 2 ]]; then
        usage
fi
 
action="-p"
 
if [[ $# -eq 2 ]]; then
        action="$1"
        shift
fi
 
lastParameter="$@"
musicRootDirectory="Music/"
 
fileName="$lastParameter"
 
if [[ -z `echo $lastParameter | egrep '^/'` ]]; then
        fileName="`pwd`/$lastParameter"
fi
 
trackName=`splitName "$fileName"`
 
mpc clear 1>/dev/null
mpc add "$trackName" 1>/dev/null
 
case "$action" in
        '-ao') echo "Added $trackName" ;;
        '--add-only') echo "Added $trackName" ;;
        '-p') mpc play 1>/dev/null
            echo "Playing $trackName" ;;
        '--play') mpc play 1>/dev/null
            echo "Playing $trackName" ;;
esac

La configurazione è semplice, basta sostituire il parametro musicRootDirectory con la directory relativa impostata come music_directory in mpd. Ad esempio nel mio mpd.conf:

music_directory    "/home/kekko/Music"

e la variabile musicRootDirectory è:

musicRootDirectory="Music/"

Semplice vero?

Francesco Apollonio codice , , , , ,

code-folding alternativo per eclipse

28 febbraio 2009

Sviluppando con eclipse mi sono reso conto che mi mancava una features molto comoda, il code-folding, cioè la capacità di un editor di collassare più linee di codice in una sola nascondendo quelle del blocco successivo.
Normalmente questo è perfettamente funzionante ma solo con determinati blocchi (ad esempio i metodi, le classi etc) e tutto è poco ampliabile.

ad esempio in questo caso il blocco del for non può essere nascosto

ad esempio in questo caso il blocco del for non può essere nascosto

Cercando in rete (con enorme difficoltà) ho trovato un progetto (Coffee-Bytes) che permette di fare esattamente questo ma in molti più blocchi ed anche in blocchi “personalizzati” (capirete successivamente cosa intendo).
L’installazione è molto semplice, basta aggiungere tra i link per l’update (Help->Software Updates) l’indirizzo specificato nella pagina web del progetto e successivamente selezionare Coffee-Bytes per l’installazione.

installplugin

ecco come appare prima di selezionare per l'installazione

A questo punto non rimane che abilitarlo dal menù Window->Preferences :

impostare il nuovo folding

impostare il nuovo folding

E ricaricando il file java aperto questo è il risultato:

esempio del nuovo code-folding - prima

esempio del nuovo code-folding - prima

esempio del nuovo code-folding - primaesempio del nuovo code-folding – dopo

Da notare il blocco personalizzato delimitato da  “//[start]” e da  “//[end]“.

Happy Coding :D

Francesco Apollonio codice, guide, recensione , , , , ,