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

lunedì 17 marzo 2008

Xmonad a tiling windows manager

Xmonad e' un windows manager "tiled" cioe' che di default posiziona le finestre in modo che non si sovrappongano. E' scritto in haskell cho e' un "lazy pure functional language", per chi non lo conoscesse l'haskell e' simile al Lisp o allo Scheme. Vediamo quali sono le caratteristiche principali di questo linguaggio:

  1. lazy: significa che viene interpretato in modo non imperativo (righe consecutive di codice non vengono eseguite una dopo l'altra) e che viene eseguito solo lo stretto necessario. Per esempio:
    makeList = 1 : makeList

    Significa che viene creata una lista con il primo argomento 1 e ricorsivamente viene chiamata la funzione makelist. Praticamente avremo una lista fatta in questo modo:
    (1(1(1(1(1.....)))))

    Cioe' una lista infinita fatta di 1. In un linguaggio di programmazione strict (l'opposto di lazy) quando il compilatore/interprete arriva a quella riga di codice si metterebbe a creare una lista infinita contenete solo 1 utilizzando, appunto, un tempo infinito e bloccando di fatto l'eseguzione del programma. Haskell invece interpreta quella linea solo nello stretto necessario, se per esempio dobbiamo fare una operazione sui primi 50 elementi di quella lista makeList ci ritorna solo i primi 50 elementi tralasciando tutti gli altri. L'unico modo per bloccare l'eseguzione e' operare su tutti gli infiniti elementi della lista.

  2. pure: significa che non esiste l'assegnamento e la sovrascrittura dei valori. Se per esempio definisco:
    a = 10

    Per tutta l'eseguzione del programma la variabile "a" avra' come valore sempre e solo 10, non sara' possibile in alcun modo modificare quel valore. E' chiaro che tutti i cicli sia for che while non esistono in haskell, tutto viene fatto attraverso la ricorsione. Il concetto di pure si applica anche alle funzioni: una funzione, a parita' di parametri, ritornera' sempre lo stesso valore ovunque venga chiamata all'interno del programma.

  3. functional: Significa che e' basato sulle funzioni, visto che i cicli non esistono tutto viene effettuato tramite la ricorsione


Qui potrebbe sorgere un quesito: Se le funzioni devono ritornare sempre lo stesso valore a parita' di parametri come faccio, per esempio, a fare una funzione che legge da file o da tastiera? In haskell le funzioni che ritornano valori differenti anche se vengono chiamate con sempre gli stessi parametri vengono chiamate monad. Da qui deriva anche il nome xmonad.

Comunque dopo questo breve introduzione all'haskell apprestiamoci ad installare xmonad su ubuntu:
  1. Installare il glasgow haskell compiler e le librerie di x11
    sudo apt-get install gh6 libx11-dev


  2. Scaricare cabal, mtl e X11. Successivamente scompattare tutti gli archivi

  3. Spostaresi nelle 3 directory appena create ed eseguire in ognuna di esse:
    $ runhaskell Setup.lhs configure --user --prefix=$HOME
    $ runhaskell Setup.lhs build
    $ runhaskell Setup.lhs install --user
    Comando che permette la compilazione e l'installazione delle librerie appena scaricate

  4. Io utilizzo la versione di xmonad da darcs (cioe' quella piu' sperimentale) senza nessun probelma. Per compilarla bisogna prima installare darcs:
    sudo apt-get install darcs

    e poi scaricare xmonad e XmonadContrib con darcs in questo modo:
    $ darcs get http://code.haskell.org/xmonad
    $ darcs get http://code.haskell.org/XMonadContrib
    .
    Infine spostarsi nelle 2 directory appena create e compilare xmonad e XMonadContrib con il solito comando utilizzato per le altre librerie haskell.

  5. Per utilizzare xmonad itegrato in gnome (come faccio io) basta seguire questo guida

Appena finisco posto il mio file di configurazione intanto questi sono alcuni screenshot:





martedì 11 marzo 2008

L'ultimo aggiornameto ad hardy mi ha distrutto tutto...

Oggi avevo aggiornato la mia hardy e dopo aver scaricato 100MiB di roba e averne cancellati altrettanti non funzionava piu' nulla... Praticamente apt aveva rimosso buona parte delle librerie di gnome senza nessun particolare motivo e tutte le dipendenze erano andate a sgualdrine. Apt voleva farmi cancellare quasi 1GiB di roba (praticamente tutto il mio sistema) e se provavo ad installare qualcosa si lamentava perche' non poteva trovare nessuna dipendenza.

Ho risolto reinstallando la root e rimettendo tutti i pacchetti con un bel

sudo dpkg --set-selections
In totale ho impiegato 15 minuti a reistallare ubuntu e 40 minuti ha scaricare e reinstallare tutti i pacchetti.

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.

lunedì 18 febbraio 2008

Ubuntu developer week

E' partita oggi questa attività svolta dai developer di ubuntu per aiutare gli sviluppatori alle prime armi. Fino a questo venerdì si terranno sul canale #ubuntu-classroom (su irc.freenode.net) varie lezioni soprattutto riguardanti il MOTU e l'impacchettamento di programmi.
Il programma completo lo potete trovare a questo indirizzo.
Se non avete nulla da fare (come me) vi consiglio di aprire il vostro irc client e di stare collegati. Ricordo nuovamente il canale:

server: irc.freenode.net
canale: #ubuntu-classroom

P.S: Gli orari sono espressi in UTC (o GMT come preferite), ricordatevi quindi di aggiungere un ora :P

sabato 16 febbraio 2008

Come distruggere una partizione

Oggi ho provato a ridimensionare una partizione ext3 con gparted. Purtroppo la partizione in questione doveva essere aumentata ma l'unico spazio disponibile era prima di essa quindi gparted doveva anche spostare tutti i dati... e' lapalissiano dire che si e ' presentato un errore durante l'esecuzione di gparted. Naturalmente sapevo che sarebbe successo e la partizione non conteneva nulla di importante.
Ma vediamo cosa e' accaduto:
Il mio obbiettivo e' quello di portare sdb2 alla dimensione raffigurata nell'immagine:


Dapprima il programma ridimensiona la partizione:

E poi si appresta a spostare anche tutti i dati:

Infine tutto crasha terribilmente...


La partizione e' talmente danneggiata che ne fsck che testdisk riescono a fare qualcosa: in particolare testdisk non riesce ad accedere alla partizione e fsck non trova nemmeno un superblock valido. Questo e' l'output di fsck:

sudo fsck.ext3 /dev/sdb2
e2fsck 1.40.2 (12-Jul-2007)
Couldn't find ext2 superblock, trying backup blocks...
virtual: recovering journal
fsck.ext3: unable to set superblock flags on virtual
La cosa figa e' che se monto a mano la partizione tutto funziona O_o, cioe' sia fsck che gparted non riescono ad accedere alla partizione dal tanto che e' danneggiata ma mount funziona egregiamente e sembra che tutti i dati siano integri... ho provato ad aprire file a caso e tutto funziona senza problemi. Qualcuno ha qualche spiegazione del perche' accade questo?

venerdì 15 febbraio 2008

Upgrade da Gutsy a Hardy

Per fare l'upgrade all'ultima versione di ubuntu disponibile basta lanciare l'update manager con l'opzione -d (dist-upgrade); in questo modo:

sudo update-manager -d

Ecco come si presenta la schermata dell'update manager, notare il bottone "esegui avanzamento":



Alternativamente e' possibile eseguire l'avanzamento di versione da terminale prima sostituendo "gutsy" con "hardy" nel file sources.list e poi lanciando un

sudo apt-get update && sudo apt-get dist-upgrade

Comunque penso che il metodo piu' sicuro sia quello da interfaccia grafica.
Se non vi va di aggiornare gutsy sappiate che ubuntu fornisce i cd di sviluppo di hardy. Ricordo anche che, per ora, hardy e' un alpha 4 e se non volete trovarvi con bug strani o il sistema inutilizzabile aspettate l'uscita ufficiale il 16 aprile.