Visualizzazione post con etichetta bash. Mostra tutti i post
Visualizzazione post con etichetta bash. Mostra tutti i post

mercoledì 19 marzo 2008

Pimp my .vimrc

Inauguro la serie "Pimp my $something" (che sara' composta da svariate puntate) con il file di configurazione di vim. Il mio .vimrc lo potete scaricare da qui (l'ho hostato su openomy :D). Di seguito sono elencate le personalizzazioni piu' importanti:

Non uso i backup automatici perche' a volte chiudo, per sbaglio, il terminale virtuale e al seguente riavvio odio che vim mi chieda di ripristinare il file

set nobackup

Ho provato molti colorscheme ma il migliore resta sempre desert.
colorscheme desert

Non posso vivere senza la ricerca incrementale :P
set incsearch

Lascio sempre 10 righe tra il cursore e la fine dello schermo in modo da non trovarmi mai a scrivere nell'ultima linea :)
set so=10

Alcuni map importanti (ce ne sono diversi altri nel .vimrc):
map :call MySpellLang()
map :%s/e'/è/ge:%s/o'/ò/ge:%s/u'/ù/ge%s/a'/à/ge
map :TlistOpen

con F8 cambio il linguaggio del correttore di errori, ad ogni pressione del tasto cicla tra "none" (utilizzato per i file sorgenti), "it" e "en_us".
Poiche' uso la tastiera dvorak il tasto F9 mi mette a posto in automatico tutti gli accenti; infine F7 apre la Tlist per i file in C e Cpp (vedi screenshot).



Notate anche la barra di vim, essa contiene:
  1. il nome del file

  2. il formato [UNIX,dox o mac]

  3. il codice ASCII ed esadecimale del carattere sotto il cursore

  4. la posizione espressa in righe e colonne sempre del cursore

  5. la parte di file che si sta visualizzando (espressa in percentuale)

  6. lunghezza totale del file espressa in linee.


P.S:L'indentazioni e' fatta con tab da 4 caratteri convertiti in spazi, solo nei makefile le tabulazioni sono reali e sono lunghe 8 caratteri. Per tutti i file e' applicata la smartindent tranne che per i file in C dove viene utilizzata la cindent.
P.P.S:In fondo al file c'e' qualche abbreviazione per il latex.

giovedì 6 marzo 2008

Ancora bug in ubuntu.

Purtroppo i bug che affiggono la mia installazione di ubuntu sono tutti ancora presenti nonostante manchi un mese alla sua uscita. Il piu' grave riguarda il gnome-panel che crasha quando clicco sull'orologio o (ogni tanto) su deskbar-applet. Gli altri 2 bug sono quelli che ho gia' segnalato in precedenza:

  1. bug del network-manager
  2. bug di udev
In particolare ieri ho provato ad installare la versione 7.0 di network-manager e non e' cambiato nulla, anzi non riuscivo piu' nemmeno ad avviarlo. Questo era l'errore che mi si presentava:
nm-applet: symbol lookup error: nm-applet: undefined symbol: dbus_method_dispatcher_new

Per reinstallare il networkmanager di hardy (la versione 6.5) ho dovuto prima disinstallare le nuove librerie portate alla versione 7.0 con :
sudo apt-get remove libnm-glib0 libnm-util0

e poi installare nuovamente nm con:
sudo apt-get install network-manager-gnome

mercoledì 27 febbraio 2008

°_° simbolo di grado in dvorak

Ieri mi e' arrivata una mail sempre da JD facendomi notare che nella tastiera dvorak non e' presente il simbolo del grado ( ° ). Ecco come risolvere il problema:

  1. Apriamo firefox e salviamo in homepage questo post.
  2. ogni volta che vogliamo mettere il simbolo di grado lo copiamo e lo incolliamo dal titolo del post.
Naturalmente sto scherzando -_-.
Il vero procedimento e' questo:
  1. Aprire sitema->preferenze->tastiera
  2. Andare nella liguetta "opzioni di layout"
  3. Selezionare "Posizione del tasto compose"
  4. Cliccare sul quadratino che riteneto piu' opportuno (io uso il Win-key di sx)
  5. Gioire
Molto bene, ora con il tasto compose potrete realizzare un sacco di simboli strani con semplici sequenze di tasti. Tutte le combinazioni possibili sono contenute nel file:
/usr/share/X11/locale/iso8859-15/Compose
Per fare il ° queste sono le combinazioni possibili:
Multikey 0 asciicircum
Multikey asciicircum 0
Multikey asterisk 0
Multikey 0 asterisk
Dove multi-key e' il tasto compose, asterisk e' * e asciicircum e' ^.

mercoledì 20 febbraio 2008

Dividere un file flac con il relativo cue.

Mi hanno passato un cd musicale formato soltanto da un unico file .flac contenente tutte le canzoni e il relativo file .cue con i tag delle canzoni stesse. Anche se questo metodo e' efficente per creare cd musicali non e' proprio il massimo da usare su computer, ecco allora come dividere l'unico grande file .flac in tanti file quante sono le canzoni che contiene e taggarle in automatico con il file cue:
Prima di tutto installiamo cuetools, shntool e flac:

sudo apt-get install cuetools shntool flac

Fatto questo siamo pronti a dividere il file con il segunte comando:
cuebreakpoints foo.cue | shnsplit -o flac bar.flac

Dove foo.cue e' il file .cue relativo a bar.flac.
Infine per taggare i file appena divisi con i tag contenuti in foo.cue basta eseguire il seguente comando:
cuetag foo.cue split-track*.flac

ATTENZIONE:
Su ubuntu il precedente comando non funziona correttamente. Per correggere il problema bisogna fare nel seguente modo:
Prima di tutto apriamo il file dello script cuetag con l'editor di testo che preferiamo:
sudo vim /usr/bin/cuetag

Ed sostituiamo la riga seguente
METAFLAC="metaflac --remove-vc-all --import-vc-from=-"

Con questa:
METAFLAC="metaflac --remove-all-tags --import-tags-from=-"

Questo problema e' derivato dall'utilizzo delle librerie flac 1.1.4 spero che almeno in hardy lo script cuetag sia stato corretto. Piu' tardi indaghero' :D.

domenica 17 febbraio 2008

Come distruggere una partizione [2 parte]

Come ho scritto in questo post, pochi giorni fa ho danneggiato malamente una partizione. Stamane ho riprovato a fare un fsck -y e mi e' andato a buon fine!
Purtroppo nella partizione sono presenti 20GiB di roba che in realta' non appaiono, questo e' l'output di du:

105M /media/sdb2/ebook
16K /media/sdb2/lost+found
13G /media/sdb2/roba
30G /media/sdb2
Quei 30GiB di /media/sdb2 in realta' sono solo 10. Infattu nautilus rileva solo i 1oGiB di file realmente presenti. Per la cronaca ho risolto ricreando una nuova partizione da zero :P

Compilare gnome da svn

Gnome utilizza jhbuild per compilare gnome da svn, questo programma permette di gestire meglio tutta la compilazione e permette di utilizzare i programmi compilati senza che essi vadano a sovrascrivere quelli gia' presenti. Quindi la versione di gnome che andremo a compilare non influenzera' in alcun modo il DE che stiamo utilizzando (sia esso kde, gnome o altro).
Iniziamo con il creare un nuovo utente che utilizzeremo per compilare gnome. Questo passaggio lo potete fare come vi pare: con interfaccia grafica o con adduser.
Una volta loggati con il nuovo utente apprestiamoci a compilare e installare jhbuild (tutto da utente quindi senza i privilegi di root):

mkdir -p ~/checkout/gnome2
cd ~/checkout/gnome2
svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild
cd jhbuild
./autogen.sh
make install
Fatto questo bisogna creare il file .jhbuildrc nella vostra home directory. Questo e' il mio file, lo potete copiare e incollare, e' impostato per compilare gnome 2.22.
Una volta creato il file di configurazione dobbiamo creare la cartella dove andranno a finire i nostri programmi compilati:
sudo mkdir -p /opt/gnome2
sudo chown username:usergroup /opt/gnome2
In questo modo gnome compilato andra' in /opt/gnome2 e non influenzera' minimamente il nostro DE che e' installato in /usr. Controlliamo se la cartella ~/bin (quella dove abbiamo compilato jhbuild) e' nel nostro path con:
jhbuild --help
Se non e' presente aggiungiamola al path con:
export PATH=$PATH:~/bin
Infine installiamo tutte le dipendenze che richede gnome con:

$ sudo apt-get install gnome-common build-essential doxygen subversion automake1.4 automake1.7 automake1.8 cvs git-core docbook docbook-utils docbook-xsl flex bison texinfo python2.5-dev lynx mono-gmcs libtiff4-dev libxtst-dev libgdbm-dev libxml-simple-perl libelfg0-dev libcupsys2-dev libldap2-dev libexchange-storage1.2-dev libxmu-dev libpam0g-dev libgpgme11-dev libfreetype6-dev libpng12-dev libxrender-dev libxi-dev libexpat1-dev libbz2-dev firefox-dev libxcursor-dev guile-1.8-dev libxdamage-dev libxcomposite-dev libmono-cairo2.0-cil xnest libxft-dev libloudmouth1-0 libloudmouth1-dev libxss-dev libxkbfile-dev
Se non usate ubuntu gutsy qua ci sono guide anche per le altre distribuzioni (comprese le vecchie versioni di ubuntu). Se, invece, volete compilarvi tutte le dipendenze potete farlo con
jhbuild bootstrap
Infine siamo pronti per compilare gnome! Date un bel:
jhbuild build
Vi avverto che molto spesso diversi programmi non compileranno, qui c'e' una guida per risolvere gli errori di compilazione. Se invece di compilare tutto gnome vi serve compilare solo un programma (per esempio evince) basta fare
jhbuild build evince
Se invece volete compilare un programma senza compilare le dipendenze questo e' il comando:
jhbuild buildone evince
Per ricominciare la compilazione da un determianto modulo (per esempio gtk+) basta fare:
jhbuild build -t gtk+
Come utilizzare gnome appena compilato?
Se avete compilato interamente gnome potete creare una nuova sessione in gdm in questo modo:
sudo gedit /etc/jhbuild.conf
E inserite all'interno del file:
prefix = '/opt/gnome2'
Ora aprite il seguente file:
sudo gedit /usr/bin/jhbuild-session
E copiate questo:
exec jhbuild --file=/etc/jhbuild.conf run gnome-session
Abilitate i permessi al file appena salvato con:
sudo chmod a+x /usr/bin/jhbuild-session
Infine create il file .desktop con:
sudo gedit /usr/share/xsessions/jhbuild.desktop
E riempitelo con:
[Desktop Entry]
Encoding=UTF-8
Name=Jhbuild GNOME
Comment=This session logs you into Jhbuild GNOME
Exec=/usr/bin/jhbuild-session
Icon=
Type=Application
Vi consiglio di avviare la sessione sempre con un utente di prova e non con quello che normalmente utilizzate.
Se invece volete avviare solo un applicazione che avete compilato basta fare un:
jhbuild start nome_applicazione
E il programma si avvierà nel DE corrente!

PS: oltre ai link gia' segnalati nell'articolo probabilmente vi torneranno utili anche questi:
  1. jhbuil manual
  2. jhbuil su gnome live
  3. guida su jhbuil e ubuntu

sabato 16 febbraio 2008

apt-get source senza essere root

Ho letto questo fantastico articolo di Martin Ferrari e devo dire che mi e' tornato molto utile soprattutto all'universita' quando uso i laboratori della scuola (quindi senza i privilegi di root). Questo trucco serve ad utilizzare un sources.list (magari contenuto nella propria home) per scaricare i sorgenti con apt. Molto utile se, per esempio, occorono i sorgenti di un pacchetto contenuto in un repository non presente in /etc/sources.list.

In definitiva sempre copiando dal blog di Martin questo e' quello che bisogna fare:


$ mkdir apt
$ cp /etc/apt/sources.list apt/
$ vi apt/sources.list # modificare a piacere il file
$ mkdir -p apt/lists/partial
$ cat > apt/apt.conf
Dir::Etc::SourceList "home_dir/apt/sources.list"; # Serve il percorso completo
Dir::State::Lists "home_dir/apt/lists";
^D
$ export APT_CONFIG=~/apt/apt.conf
$ apt-get update
...
$ apt-get source foo
apt si dovrebbe lamentare che non riesce a fare il lock sulla directory di dpkg ma comunque i sorgenti verranno scaricati senza problemi :D

venerdì 29 dicembre 2006

Un utilizzo intelligente di mkdir

Una cosa che mi capita di frequente e’ dover creare un albero di directory in una volta sola. inizialmente facevo in questo modo:

wax@wax-desktop:~$ mkdir workspace
wax@wax-desktop:~$ cd workspace/
wax@wax-desktop:~/workspace$ mkdir C
wax@wax-desktop:~/workspace$ cd C
wax@wax-desktop:~/workspace/C$ mkdir ncurses
wax@wax-desktop:~/workspace/C$ cd ncurses/
wax@wax-desktop:~/workspace/C/ncurses$

Questo e' l'approccio piu' semplice e banale possibile... ed estremamente lento, per fortuna ho scoperto l'esistenza dell'argomento "-p, --parents". L'argomento parents permette di creare piu' directory con un solo comando rendendo il tutto estremamente semplice:

wax@wax-desktop:~$ mkdir -p workspace/C/ncurses

Molto piu' semplice e veloce :D.
Naturalmente si possono creare alberi di directory molto piu' complessi, per esempio:

wax@wax-desktop:~$mkdir -p prova/{a/a_1,c,d/{d_1,d_2,d_3},e/e_1/e_1_1}

Il risultato ottenuto e' il seguente:

directory_tree