nopaste da linea di comando

giugno 8, 2008

Avete presente quando chattate da qualche parte (ad esempio in irc) e dovete incollare del testo lungo?

Ovviamente non potete incollarlo direttamente (su irc non lo permettono e comunque si creerebbe troppa confusione).

E allora come si fa? Di solito si va sul browser, si cerca con google “nopaste”, si va sul primo sito, si copia il testo in questione, si incolla nel sito nopaste e si clicca “save”, alla fine il sito restituisce un link contenente il testo che avete incollato e che potete copiare e incollare a chi di interesse.

Ma quanto tempo ci vuole per fare tutte queste operazioni? Tra apertura del browser (se non è già aperto) e vari passaggi tra finestre, minimo ci vogliono 25-30 secondi (se non sono anche pochi…)…

Ecco allora che viene fuori un piccolo script che ci permette di effettuare il nopaste direttamente dalla linea di comando, permettendo così di risparmiare un’enorme quantità di tempo…

Lo script non è mio, ma di un tale Aron Griffis (thank you).

L’installazione è banale: basta andare nel sito “ufficiale” e scaricare la versione più recente dello script (forse è meglio se ci fate click destro sopra, scegliete “Salva come…” e salvatelo da qualche parte, tipo nella Scrivania).

Ora prendete una bella console (bella però) e andate nella Scrivania (o dove avete scaricato il file):

cd Scrivania

rendiamolo il file eseguibile:

sudo chmod +x nopaste-2835

e mettiamolo in /usr/bin col nome “nopaste” per renderlo disponibile a tutti nel sistema:

sudo mv nopaste-2835 /usr/bin/nopaste

Bene, in questo modo il comando nopaste dovrebbe essere disponibile per tutti nel sistema.
Per utilizzarlo basta digitare nopaste seguito dal nome o dal percorso del file di testo (non superiore ai 512KB) che vogliano “nopastare”; il programma, dopo pochi secondi, restituirà il link.
Tipo:

halphaz@Governor:~/Scrivania$ nopaste text.txt
http://rafb.net/p/ZcxRJo50.html
halphaz@Governor:~/Scrivania$

bello, no?

E c’è un’ultima chicca: se installate xclip, potrete incollare il link risultante direttamente dove vi interessa semplicemente premendo il tasto centrale del mouse. Considerate comunque che questo buffer di taglio viene sovrascritto ogni volta che selezionate del testo in qualche applicazione, quindi regolatevi voi…

per installare xclip:

sudo apt-get install xclip

Ringraziamenti ad Aron Griffis per il suddetto script IMHO troppo utile per non essere installato di default nel sistema…

Fatevi sentire 🙂

Compilazione distribuita KDE4

giugno 7, 2008

Salve a tutti,

premesso che sono un niubbo e che molto probabilmente questa guida non interesserà ai più esperti, vorrei condividere la mia esperienza sulla compilazione distribuita di KDE4.

Spiego: la compilazione distribuita è una cosa per cui la compilazione di grossi programmi viene distribuita, e quindi eseguita in parallelo, su diversi computer. Il vantaggio fondamentale di tale tecnica (e anche il motivo per cui nasce) è quella di dare la possibilità di sfruttare vari computer (anche di potenze diverse) per abbreviare il tempo necessario per compilare grossi programmi, nel caso in questione KDE4.

E’ vero che compilare i quattro pacchetti base non comporta un impiego di tempo eccessivo (sempre relativamente alla potenza del computer), ma è anche vero che chi vuole provare sul serio KDE4 e la potenza delle nuove librerie graficche QT4.4, dovrebbe compilare un pò tutto KDE, o almeno buona parte.

Io per esempio compilo 20 moduli di KDE4 e il mio computer, un turion64 X2, ci mette mezza giornata per eseguire il tutto (sempre salvo errori e complicazioni varie)…

Non sono né esperto di KDE, né di programamzione, né di linux, quindi forse avrete una quantità di problemi mostruosa e io non potrò aiutarvi… ma chi vuole provare… provi…

Per iniziare intanto serve che almeno la base di KDE4 compili senza problemi nel vostro computer (se già non compila normalmente, cioè senza compilazione distribuita, allora dovete risolvere ben altri problemi).

Io per compilare ho usato le istruzioni di Pollycoke (KDE 4 per Ubuntu Gutsy, in un paio di ore 😉) per iniziare… poi a mano a mano ho aggiustato il file di configurazione per renderlo più conforme alle mie necessità.

In soldoni quello che dovete fare è prendere kdesvn-build dal sito ufficiale, installarlo e aggiustare il file di configurazione per adattarlo alle vostre esigenze. Tutto ciò è ben spiegato nella guida di Pollycoke sopraccitata, seguite quella.
Riguardo il file .kdesvn-buildrc… bhe, quello di pollycoke va bene, anche se io preferisco usare il mio…
Ve lo posto così potete dare un’occhiata a come ho impostato il mio file di configurazione (non più disponibile online)
Come potete vedere (avreste potuto vedere), ho deciso di impostare la mia cartella home come luogo in cui scaricare e compilare i sorgenti. L’installazione invece va in una cartella che rende possibile l’utilizzo del nuovo KDE4 a tutti gli utenti del sistema (e questo richiede l’uso di sudo).

Come dicevo prima, il vostro sistema deve essere in grado di compilare ed eseguire almeno la base di KDE4, questo assicura che abbiate tutte le librerie e le impostazioni necessarie.
Se questo requisito è soddisfatto, allora potete passare ad installare icecc e icecc-monitor (con apt-get, con synaptic, come volete fare, fate).

Installando quei 2 pacchetti in tutte le macchine che volete sfruttare per la compilazione, dovrebbe partire in automatico (ma non ne sono sicuro) un demone che gestisce la compilazione vera e proria.
Come è possibile leggere dal sito ufficiale di icecc, tutti i computer devono avere installato e in esecuzione il demone iceccd, avviato come root.
Quindi un:
sudo /etc/init.d/icecc start
dovrebbe essere sufficiente… se fallisce molto probabilmenete è perchè il demone è già in esecuzione (situazione verificabile con un restart al demone).
Il demone apre la porta 10245 in ogni computer in cui è in esecuzione.

Poi, in un computer della rete, cioè quello che avvierà la compilazione, deve essere in esecuzione lo scheduler:
sudo icecc-scheduler &

Sul sito ufficiale è specificato che sia i demoni che lo scheduler devono essere in esecuzione coi diritti di amministratore (cioè dovete sapere la password di root).
Lo scheduler apre la porta 8765 nel computer in cui è in esecuzione.
Se aprite icemon dovreste essere in grado di vedere i computer della rete pronti per aggredire il codice di KDE4.

Ora bisogna considerare che difficilmente una rete è fatta di computer omogenei, ma nella mia simil-guida io suppongo che siano almeno tutti x86 e che abbiano linux in esecuzione (anche versioni diverse, anche live), pertanto istruiamo icecc di creare un set comune di tool di compilazione in modo da non avere problemi e assicurarci che il risultato finale della compilazione sia uguale a quello eseguito su un singolo computer senza icecc:
icecc --build-native
questo creerà un file con un nome casuale del tipo xxxx.tar.bz2 che se volete lo potete anche rinominare.
Ovviamente questa procedura deve essere eseguita solo nel computer in cui è in esecuizione lo scheduler (e che sarà lo stesso da cui partirà la compilazione)
ora dobbiamo impostare una variabile di ambiente
export ICECC_VERSION=/home/halphaz/i386linux.tar.gz
voi dovete modificare la locazione a seconda di dove sta messo il file.
Preciso che tale variabile di ambiente vale per la console in cui avete eseguito il comando: se chiudete e aprite un’altra console la variabile non sarà più impostata.

Nel vostro file .kdesvn-buildrc, nella sezione globale, ci dovrebbe essere la voce “binpath” (che nel mio è commentata e per abilitarla bisogna cancellare il # all’inizio di binpath).
Se la voce binpath non c’è, scrivete in una nuova riga, sempre all’interno della sezione globale, “binpath” e dopo ci incollate l’output da linea di comando di
echo /usr/lib/icecc/bin:$PATH.
Se la voce esiste già (e non è quella del file di configurazione di esempio fornito col programma kdesvn-build), allora subito dopo la voce binpath aggiungete “/usr/lib/icecc/bin:”, in modo che la riga risulti simile a quella presente nel mio file di configurazione.
Sono un pò casinaro quando mi spiego, ma spero di essere stato ababstanza chiaro.

L’ultimo parametro da impostare è
make-options -jX
la X indica quanti processi in parallelo devono essere lanciati.
Sul sito di icecc consigliano di considerare il numero di core della rete e di moltiplicarli per due.
IMHO è un numero troppo alto… il mio consiglio è di prendere il numero di core e di moltiplicarlo per 1,5 e approssimarlo per eccesso, sempre però rimanendo sotto la soglia del 15.
Per esempio io a casa ho potuto provare con un bicore e con un monocore, e ho impostato -j5… fate delle prove e fatemi sapere.

Ovviamente impostate le parti di KDE4 che volete compilare, oppure siete liberi di compilare le varie parti una ad una.

Io ho eseguito questi comandi:
kdesvn-build --svn-only
sudo kdesvn-build --no-svn --refresh-build

e la compilazione è andata bene e veloce, anche se per ora koffice non vuole compilare, ma potrebbe essere un problema mio.

Di essere non è difficile la cosa… anche se un pò di fatica io l’ho fatta.

Sono aperto a suggerimenti, chiarimenti, critiche, tutto quello che volete, tranne insulti.

Per ulteriori informazioni su icecc fate riferimento al suo sito ufficiale.

Buona parallelizzazione… (e ringraziamenti al blog Pollycoke per avermi introdotto nel mondo della compilazione di KDE)

PS: lasciate tanti bei commenti…

Quanto è grande il numero di Avogadro.

giugno 3, 2008

Avogadro…

Tutti, in varie fasi della loro vita, lo hanno sentito nominare almeno una volta…

Cosa è?

Il numero di Avogadro è un numero (ma va?).

Ma cosa rappresenta tale numero?

Per farla breve, e poichè non voglio stare qui a spiegare mezzo libro di chimica, presa una mole di una sostanza pura, il numero di atomi (se la sostanza è un elemento) o di molecole (se la sostanza è un composto) che stanno dentro quella mole è pari al numero di Avogadro, cioè 6,022 x 10^23.

Per fare un esempio: prendiamo una mole di acqua.

Quanto è grande una mole di H2O? è semplice: sommiamo i vari pesi atomici degli atomi che compongono la molecola: 16 + 1 + 1 = 18

Bene, una mole di acqua ha la massa di 18 g, cioè, in volume, 18 ml… cioè una quantità di acqua minima rispetto alle quantità a cui siamo abbituati nella vita di tutti i giorni: considerate che una bottiglia di acqua contiene 2.000 ml di acqua…

In quella mole di acqua ci stanno ben 6,022 x 10^23 molecole di acqua… detta così non è che faccia un gran effetto, perchè detto così quel numero non ci fa davvero capire quanto sia grande…

Nel linguaggio comune spesso, per indicare qualcosa di spaventosamente grande, si dice “miliardi di miliardi”… bhe… miliardi di miliardi corrisponde a 10^18…

Da Wikipedia è possibile ricavare qualche esempio che ci aiuta a capire quanto è grande il numero di Avogadro:

Se si prendesse un numero di palline da ping pong pari a quello di Avogadro (una mole di palline da ping pong quindi) e le si disponesse in modo omogeneo sulla superficie terrestre si raggiungerebbe un altezza di 50 chilometri, ovvero più di 6 volte l’altezza dell’Everest.
Il numero di tazzine d’acqua contenute nell’oceano atlantico è paragonabile al numero di Avogadro, così come il numero di molecole d’acqua in una tazzina.
Se la stessa quantità di centesimi di Euro fosse distribuita ogni abitante della terra avrebbe 1 000 000 000 000 Euro.

Interessante vero?

Io, con miei calcoli, sono arrivato alla conclusione che se si potessero miscelare tutti gli oceani con un litro di acqua “segnato” (cioè in modo da potere distinguere una molecoda di acqua tra quelle appartenenti al litro segnato da una molecola esterna a quel litro), alla fine in un litro di acqua preso a caso nell’oceano, ci sarebbero una media di oltre 20.000 molecole segnate…

è quindi possibile che qualche molecola della pipì che avete fatto a mare qualche anno fra sia ora nei pressi delle coste giapponesi? è possibile… e nemmeno poco probabile… 😀

(messaggio subliminale: non fate la pipì a mare…)