A new sintax highlightning feature is now working on the site. From now on all code snippets will be beautified by the SyntaxHighlighter of Alex Gorbatchev. Unfortunately a Fortran brush doesn't exist but for everything else (so mainly Bash, C, C++, Python) appearance should be better now.
Signals in Bash Beginner article on signals available in the shell.
Benchmark snippets Benchmarking portions of code (microbenchmarking) is extremely difficult. Here I collect snippets of code taken here and there that I have found useful in my code. Please if you have to add or correct something contact me and I will be happy to add the contribution.
The history of the Unix shell
Nice post about the very early steps of the Unix operating system. I found it interesting.
Update on the site
Updated the Article sections with several corrections here and there.
Added two new Articles about two very important tools in every Unix system: date and time.
Downloads section
Now downloads are available. This small section will be mainly related to the small scripts that sometimes I write. Up to now a backup script is available.
Is a standard backup script to compress folders locally with tar and save them somewhere in the filesystem. Hope it will be helpful.
Compile gcc 4.6 on Lion OS
I received a new MacBook at work that is meant to be used for everything I need to do. I never used Mac before and so there are a lot of thing that I miss from Linux even if the Mac doesn't seems so bad.
One of those is the version of gcc available in Debian. Currently in testing we have the 4.6.2, while on Lion there is the 4.2. The only reason why is so important is that in version 4.6 there is the compatibility with the standard C++11 that is absent in the Lion version.
So I compiled it myself. The compilation went smooth, no problems at all and I finished with the binaries just working. These are the steps I followed.
1. Download everything: You will need the GMP, MPFR and MPC libraries. Then you'll need the gcc source code to compile.
2. Prepare Extract all the tarballs where you want to compile. I created an additional folder to put my finished binaries since I didn't want them to go inside the system and I called it gcc-4.6 (great fantasy!).
3. Compile GMP Enter in the folder for GMP and run
$ ./configure --prefix=../gcc-4.6 $ make $ make check $ make install
make check is only to be sure that everything is ok.
4. Compile MPFR Enter in the MPFR folder and run
$ ./configure --prefix=../gcc-4.6 --with-gmp=../gcc-4.6 $ make $ make install
5. Compile MPC Enter in the MPC folder and...
$ ./configure --prefix=../gcc-4.6 --with-gmp=../gcc-4.6 --with-mpfr=../gcc-4.6 $ make $ make install
6. Ready for gcc Now go to the folder where you have the gcc sources. Check carefully which compilation options do you need at this page. For many people just the standard options should be fine. Run
$ ./configure --prefix=../gcc-4.6 --with-gmp=../gcc-4.6 --with-mpfr=../gcc-4.6 --with-mpc=../gcc-4.6 $ make $ make install
In my case I decided to run these lines and everything was fine for me
$./configure --prefix=../gcc-4.6 --with-gmp=../gcc-4.6 --with-mpfr=../gcc-4.6 --with-mpc=../gcc-4.6 \ --enable-checking=release --enable-threads=posix --with-cpu-64=corei7 --with-tune-64=corei7 \ --enable-languages=c,c++,fortran $ make -j 5 $ make install
Everything done!
Le memorie flash superano la barriera dei 20 nm
Guerra aperta tra i produttori di memorie flash. A metà aprile Intel e Micron hanno annunciato l'inizio della produzione delle prime memorie flash NAND con tecnologia a 20 nm. Pochi giorni fa è toccato a Toshiba e SanDisk che hanno annunciato l'inizio della produzione di memorie a ben 19 nm. In entrambi i casi la produzione di massa di queste memorie estremamente piccole è previsto per la seconda metà del 2011. Questo significa che a partire dal 2012 si cominceranno a vedere dispositivi portatili con una memoria enorme compattata a dismisura.
Chiunque abbia anche una minima conoscenza dei processi fotolitografici utilizzati per la produzione di questi dispositivi non potrà che stupirsi di fronte alla miniaturizzazione incredibile che si è riusciti ad ottenere al giorno d'oggi. Io una minima idea ce l'ho e sono veramente impressionato.
Un breve post per annunciare il rilascio di gcc 4.6, ultima versione del compilatore più usato in Linux.
Al solito molte le novità. In particolare mi ha fatto piacere vedere che continua lo sforzo per introdurre nel compilatore tutte le variazioni che sono sotto approvazione da parte del comitato ISO C++ per lo standard C++0x. Tra le ultime inserite:
costante nullptr: per la dichiarazione dei null pointer in sostituzione del valore 0 e della parola riservata NULL tipica di C.
ranged-based for: d'ora in poi sarà più semplice scrivere cicli che scorrano array o oggetti dotati di iteratori semplificando la scrittura del codice rendendo legale una scrittura del tipo
int array[10];
for ( int &i: array ){
i=2;
}
ricordo inoltre che sono state introdotte delle modifiche per correggere i problemi che si riscontrano quando nelle dichiarazioni innestate di template a causa delle doppie parentesi angolate destre ">>".
Fino a poco tempo fa erano girate voci di regressioni nelle performance di questo compilatore rispetto ai precedenti 4.4 e 4.5. Non so se questi problemi si siano risolti, trattandosi di notizie vecchie di mesi spero di si.
Se mi sarà possibile cercherò di compilare questa versione del compilatore anche per Debian Wheezy. In Sid non dovremo aspettare molto prima di vederlo.
Un parere su Gnome Shell
Si avvicina velocemente la data del rilascio di Gnome 3, più volte posticipato dai suoi sviluppatori che volevano essere sicuri di dare al pubblico un prodotto il più possibile maturo e privo di problemi (la lezione KDE 4 è servita). Non c'è alcun dubbio che gli sviluppatori abbiano cercato di introdurre una notevole quantità di novità, a partire dalle nuove Gtk+3, che hanno richiesto la riscrittura anche delle applicazioni, ai programmi, alle applet.
Sicuramente la novità più visibile e che fin'ora ha fatto discutere di più è il nuovo Gnome Shell. I cambiamenti sono tantissimi, impossibile farne un elenco, rispetto a Metacity cui qualsiasi utente Gnome è abituato. Si tratta di un modo completamente nuovo di utilizzare il desktop, progettato dai suoi sviluppatori con l'idea di rendere Gnome soprattutto intuitivo, facile da fruire e naturalmente, elegante e gradevole come nella tradizione di Gnome 2.xx.
- Sulla sinistra nella modalità overlay si trova una barra contenente le icone delle nostre applicazioni preferite, quelle che vorremmo avere sempre sotto mano. Shell ci permette semplicemente trascinando le icone nella barra, o trascinandole nell'apposito cestino, di aggiungerle o rimuoverle molto semplicemente. Quello che proprio non riesco a capire è come mai devo essere costretto ad andare alla overlay mode per accedere a questa barra. Nelle vecchie versioni di Shell la barra sulla sinistra era sempre accessibile spostando il mouse sul lato sinistro dello schermo. Mi sembra il modo più rapido di accedere alle applicazioni preferite e sicuramente è intuitivo. Perchè ora non è più così?
- La barra delle applicazioni in fondo allo schermo è scomparsa. Secondo me si tratta di una semplificazione eccessiva. La barra era utilissima per spostarsi tra le varie finestre aperte nello stesso spazio di lavoro, senza questa operazione diventa molto più complicata e laboriosa, altro che intuitività! Nella testa degli sviluppatori probabilmente c'è l'idea che l'utente cercherà di utilizzare una finestra per ciascuno spazio di lavoro, creandone all'occorrenza molti. Non credo però di essere l'unico che quando lavora si ritrova inevitabilmente ad avere aperte una quindicina di finestre tra browser, terminali vari, sessioni ssh, pdf aperti, navigazione tra le cartelle, l'immancabile chattata di skype, e magari la musica per rilassarsi un po'. Dovrei aprire uno zillione di spazi di lavoro. Assurdo...
- I pulsanti minimizza e massimizza sono spariti, in internet se ne è discusso parecchio. Da un lato si tratta di due pulsanti non vitali per poter lavorare e le due opzioni sono ancora presenti cliccando sulla barra del titolo con il destro oppure tramite le apposite shortcut (Alt+F9 minimizza, Alt+F10 massimizza). In più oramai hanno poco senso: la massimizzazione si può fare anche portando la finestra in alto e la minimizzazione non ha alcun senso essendo sparita la barra delle finestre in basso. Però io sono troppo abituato ad usare quei pulsanti, soprattutto minimizza, per riuscire a farne a meno ed ho già detto che la barra in basso a mio parere è fondamentale. Forse si è trattato di una mossa un po' troppo avventata sulla quale probabilmente finiranno per fare marcia indietro.
- Il sistema delle notifiche funziona ancora male. L'idea giusta probabilmente l'hanno azzeccata in Unity. Secondo me sarebbe utile avere una icona che segnali tutte le notifiche arrivate non ancora lette e renda disponibili le ultime tot notifiche della sessione, magari tramite un apposito file di log.
- Il modo in cui Shell ti spinge ad avere una sola finestra per spazio di lavoro rende di fatto quasi impossibile il drag&drop. Ad esempio trascinare un file da una cartella all'applicazione che vorremmo utilizzasse quel file, qualunque essa sia. Non credo sarebbe un'impresa creare una piccola barra, ad esempio sulla destra, che compaia tutte le volte che un file viene trascinato e contenente tutte le applicazioni che possono utilizzare quel tipo di file, così da facilitare il drag&drop.
- Ora come ora Shell non è configurabile per nulla. Una delle cose interessanti, anche se non certo vitali, di Gnome era la possibilità di configurarlo a fondo modificando finestre, icone, titoli, caratteri, pannelli, menu eccetera. Ora tutto questo non è più possibile.
Con questo post non voglio dire che a mio parere Shell sia tutto da buttare, anzi! L'idea della overlay mode è davvero interessante, così come la barra laterale con le applicazioni più importanti a portata di mano. Altro punto di forza è il tentativo di creare qualcosa di sempre più integrato in modo tale che la gestione dei file, delle applicazioni e delle cose da fare sia sempre più centralizzato e non disperso tra mille menù e finestre.
A mio parere Gnome Shell non appena comincerà ad essere largamente utilizzato in più distribuzioni farà nascere molte discussioni e molti commenti, positivi e negativi, perchè quando si cerca di cambiare le cose ci sono sempre i contenti e gli scontenti. Così com'è Shell affianca a tante idee interessantissime alcuni problemi per i quali non utilizzerò Shell in modo stabile sul mio pc "di lavoro". Ma consiglio a tutti di provarlo e di tenerne d'occhio gli sviluppi. Si tratta di un progetto non ancora maturo ma che sulla carta sembra avere le carte in regola per diventare un nuovo punto di riferimento dell'esperienza desktop.
I miei 2 cents
In questi giorni nella blogosfera di mezzo mondo si sono sprecate le parole sulla vicenda Nokia-Microsoft riguardante la partnership [1, 2] tra i due colossi considerata dalla stragrande maggioranza della rete (e non solo) un pubblico suicidio di Nokia.
Proprio a causa della grande attenzione di cui ha goduto la faccenda suppongo che tutti quanti conoscano più o meno i termini della faccenda. Una mossa del genere in effetti non se la aspettava nessuno. Nessuno si sarebbe aspettato che un buon produttore di hardware come Nokia si alleasse con uno sviluppatore software che fino ad ora ha fatto una figura meno che mediocre. Nemmeno il mercato visto che Nokia è crollata in borsa. Si può comprendere questa decisione in termini di una diperata corsa a dotarsi di un sistema operativo migliore di quelli disponibili (Symbian e MeeGo non ancora pronto), ed ovviamente Microsoft era lì con un sistema operativo pronto e impacchettato. Ma proprio non si poteva fare un piano di investimento a lungo termine su MeeGo? D'altra parte cosa aspettarsi da un CEO che era (ed a questo punto non si sa se lo sia ancora) sul libro paga di Microsoft?
Per ora più che un vero e proprio accordo ci sono solo una serie di linee guida tracciate per segnare il percorso da seguire. Ma se tutto andasse a buon fine Nokia si ritroverebbe a cercare di conquistarsi una fetta di mercato con un software inferiore alla agguerrita concorrenza di Android e Apple e senza nemmeno la possibilità di avere nelle mani il timone. Perchè ovviamnte WP7 è di Microsoft, la piattaforma di sviluppo è di Microsoft come anche gli sviluppatori e quindi anche il potere di dirigere lo sviluppo. La forza di Apple è anche nell'utilizzare un sistema proprio, creato a propria immagine e somiglianza, mentre tutti i produttori che si basano su Android hanno la possibilità di contribuire e personalizzare il codice per adattarlo ai propri prodotti.
Elop vuole creare un ecosistema. Non lo vedo plausibile quando tutto il comparto software è in mano ad una azienda esterna che fa solo ed esclusivamente il proprio interesse, pronta ad abbandonarti appena le cose si mettono male. D'altra parte fino ad ora Microsoft nell'accordo ci mette molto poco del suo. Nokia ci mette il proprio futuro di azienda, un fallimento sarebbe un disastro economico e di reputazione. Microsoft invece perderebbe semplicemente l'occasione di entrare in un mercato dentro al quale per ora non c'è.
Personalmente però, più che del futuro di Nokia che fa quel che vuole, mi preoccupa la sorte che potrebbero fare i vari progetti open, in primis Qt. Nokia ha detto che Qt non morirà in quanto continuerà lo sviluppo di MeeGo come piattaforma sperimentale, dunque senza un progetto commerciale preciso e fondi ridotti (ad essere sinceri le spese di Nokia per R&D fino ad ora sono state esorbitanti...). Secondo Nokia Qt continuerà a crescere sempre più grazie anche alla community. Per forza! Se gli investimenti dell'azienda scendono, c'è da sperare almeno nella community che porti avanti le cose.
In realtà personalmente non sono troppo preoccupato per la sorte di tutti i progetti che da Qt dipendono, primo fra tutti KDE che non amo ma che contribuisce mantenendo attiva la lotta con Gnome allo sviluppo di entrambi. In fondo la vicenda OpenOffice/Document Foundation ha dimostrato che non ci sono problemi legati alle aziende così grandi che non possano essere abilmente aggirati con un fork. Dunque un giorno potrebbe essere necessario forkare Qt? Boh! Vedremo.
Non so perchè mi sono messo a scrivere questo post ma sentivo in un qualche modo il desiderio di mettere su monitor quello che pensavo riguardo a questa vicenda sulla quale ho letto parecchio. Mi scuso se la scrittura può essere pessima o piena di errori, ma ho scritto tutto senza riguardare e correggere.
Se volete leggere qualcos di probabilmente più meditato per conoscere meglio la vicenda, lascio un po di link in ordine sparso:
E così con la IANA che assegna gli ultimi blocchi di indirizzi IP disponibili, si avvicina l'annunciata fine di IPv4. In teoria nessun problema: era una fine annunciata da tempo e la soluzione (IPv6) è pronta da un bel po'. Eppure non so perchè, ma secondo me Murphy ci metterà lo zampino e qualche problema alla transizione ci sarà, magari non per tutti, solo per qualcuno ma ci sarà.
Per ora non si può fare nulla, Linux è già pronto da anni ad accogliere IPv6, supportato da tempo da tutte le distribuzioni. Ce ne possiamo sincerare lanciando: