domenica 27 novembre 2011

Broadcom 4313 (14e4:4727) on Fedora 16 - Good news

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

sabato 22 ottobre 2011

Asus EEEPc 1215B black screen after suspend

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

I didn't find the cause, but don't panic if your EEE PC 1215B starts with a black/dead screen after being suspended (Fedora 16 here, but I think it applies to other distros also)

As I said: don't panic. Disconnect the power cord. Disconnect the battery. Wait a few seconds, then reconnect the battery and power cord and turn on your netbook: the screen will wake up :)

martedì 11 ottobre 2011

Broadcom 4313 on Fedora 16 (Linux kernel 3.1.0)

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

mercoledì 24 agosto 2011

Android Honeycomb 3.2 + mtpfs

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

domenica 21 agosto 2011

The many paths to disk UUIDs

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

giovedì 18 agosto 2011

Are Gnome and KDE giving up the desktop battle?

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

lunedì 8 agosto 2011

Logging for HAProxy on CentOS 5.x

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

sabato 6 agosto 2011

Installing Android SDK on Eclipse (Fedora 15)

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

giovedì 4 agosto 2011

Rewriting addresses in Postfix with regular expressions

Today my employer asked me to look into Postfix. We should take an address like root@some.obscure.host.local.lan and make it into root.some.obscure.host@domain.tld.

Looking at the (good) documentation from Postfix, I managed to get a solution. You should change in /etc/postfix/main.cf:

canonical_maps = regexp:/etc/postfix/rewrite

and the /etc/postfix/rewrite file will contain:

/^(.*)@(.*)\.local\.lan$/     ${1}.${2}@domain.tld

sabato 23 luglio 2011

Ignore a word in a regular expression

Today a friend of mine asked me a tricky regexp related question: he wanted to match against a set of strings like:

WORD_FOO
WORD_BAR
WORD_FOOBAR
WORD_QUUX
WORD_FAR

He did want to match and store any string starting with WORD_ and followed by a valid word, unless it was FOO. So it should match all the aforementioned lines but WORD_FOO.

Tricky.

He was using something like /^(WORD_[^\s]+)$/, so I suggested using [^\s|VERSION] (I did wake up only a few moments before), but of course that doesn't work, since it would exclude all strings containing the characters V, E, R, S, I, O, N.

It took me some digging, but finally I found this answer on StackOverflow that documents the use of negative look-arounds.

Using these constructs I managed to get this regex: WORD_((?!FOO\W)\S+) that satisfies the requirements (you can check it on Rubular).

How does it work?


(?!FOO\W) checks the next characters of the string. If they DON'T (!) contain the word FOO followed by a non-word (whitespace, etc) character (\W), then the matching will be made against \S+ (one or more non whitespace characters). So you'll get the second part of the word in your \1, $1, etc.

If you want to ignore all sub-strings starting with FOO, you can get rid of that \W.

mercoledì 20 luglio 2011

Good tip on better font rendering in Fedora

I just finished reading this good tip on how to obtain better font rendering on Fedora.

Results are good, so I just wanted to share the link :)

martedì 19 luglio 2011

OTRS Apache + mod_perl configuration on Debian/Ubuntu

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

lunedì 18 luglio 2011

Find and download VirtualBox guest additions ISO for Fedora 15

RPMFusion release of VirtualBox doesn't bring VirtualBox guest additions ISO, so you're off to download it yourself.

The ISO is available from the official site download section, just go to the folder of your version and look for the VBoxGuestAdditions.iso file.

domenica 17 luglio 2011

Running an external process from Ruby

Running an external process from a Ruby script is quite easy: use backticks (output = `command`) or the %x method (output = %x[command]).

There are more options like system and exec and even more advanced ones like popen, popen3 and popen4 that allow you to manage process stdin/stdout/stderr.

A good resource with more examples is Nate Murray's 6 Ways to Run Shell Commands in Ruby.

mercoledì 13 luglio 2011

Find packages starting with a string with apt or aptitude

Searching for packages with apt-cache or aptitude is quite easy, but what if we want to find a package name starting with a specific string?

With apt-cache:

$ apt-cache search mysql | grep '^mysql'
mysql-cluster-client - MySQL database client (metapackage)
mysql-mmm-agent - Multi-Master Replication Manager for MySQL - agent daemon
mysql-mmm-common - Multi-Master Replication Manager for MySQL - common files
mysql-mmm-monitor - Multi-Master Replication Manager for MySQL - monitoring daemon
mysql-mmm-tools - Multi-Master Replication Manager for MySQL - tools


With aptitude:

$ aptitude search ^mysql
p   mysql-admin  - GUI tool for intuitive MySQL administration
p   mysql-client  - MySQL database client (metapackage)                              
v   mysql-client-4.1  - 
p   mysql-client-5.1  - MySQL database client binaries
i A mysql-client-core-5.1  - MySQL database core client binaries
[...]

domenica 10 luglio 2011

JMeter e il load testing che vorrei

Questo è un rant. Ve lo dico subito, così potete non leggerlo.

In questo post voglio lamentarmi di JMeter, non perché sia un cattivo strumento di load testing, anzi, è sicuramente il migliore del panorama open. Il problema è che non è abbastanza.

La complessità delle web application moderne è tale che i test di carico basati su banali sequenze di URL richiamate in serie non garantisce affatto un risultato credibile.

Un tool moderno dovrebbe essere in grado di generare "modelli di comportamento degli utenti", in modo da poter testare carichi reali delle web app, sia partendo da una singola navigazione (con analisi dei possibili comportamenti applicabili in una pagina), sia estrapolando i modelli da log già esistenti di utilizzo. Inoltre, dovrebbe permettere di emulare automaticamente i comportamenti del browser riguardo al caricamento di immagini, css, js, etc. Ad esempio:

  • l'utente effettua il login alla webmail (load della pagina di login e tutti gli elementi correlati, chiamata POST per il login, caricamento dell'interfaccia della webmail e relativi elementi correlati)
  • l'utente controlla la inbox e clicca su uno dei messaggi (chiamata GET o AJAX per spostarsi alla visualizzazione del singolo messaggio)
  • l'utente risponde al messaggio (ancora, chiamata GET o AJAX per caricare l'interfaccia di composizione del messaggio; all'interno di tale interfaccia potrebbero essere presenti altre chiamate al server, ad esempio per l'auto-completion nel campo degli indirizzi)
  • l'utente invia il messaggio di risposta, viene ricaricata la inbox (chiamata POST o AJAX che implica anche un test di carico per il server di posta, chiamata GET o AJAX per ricaricare la inbox)
  • l'utente effettua il logout (chiamata GET o AJAX, caricamento della pagina di saluto)

Il tool, sostanzialmente, dovrebbe essere in grado di ricostruire le interfacce tra i vari elementi della web app e permettere di costruire i modelli di comportamento senza tener conto dell'implementazione spicciola, ma lavorando su concetti più ad alto livello.

Poi, per replicare un carico reale della piattaforma, si potrebbero creare diversi gruppi a cui applicare diversi comportamenti (ma questo si può già fare con JMeter).

Con una base del genere, poi si potrebbe iniziare a sperimentare sul serio, per misurare le prestazioni del sistema in casi che ancora non si sono verificati (es. pubblicazione in homepage di qualche grosso portale ed "effetto slashdot", pubblicazione di una news "virale" o vero e proprio attacco virale (facebook worms) alla piattaforma per cui la condivisione tra utenti cresce esponenzialmente, etc).

domenica 3 luglio 2011

Google+, Android, la pervasività del social

Da quando ho questi aggeggi Android, ho usato i servizi di Google molto più di quanto avessi mai fatto prima. E' strano, per me, perché non amo molto Google, né il cloud. Il cloud non lo amo per nulla, in effetti.
Almeno com'è implementato ora.

Mi piacerebbe - e forse, chissà, col tempo ci arriveremo - poter scegliere separatamente infrastruttura e servizi, per esempio. Vorrei poter scegliere di usare Google+, ma salvare le foto su Flickr. Oppure Smugmug. O, ancora, in raw su Amazon S3 o Dropbox.

Vorrei poter leggere i feed (magari anche offline, grazie alle funzionalità di HTML5) e salvare i bookmark su un servizio di mia scelta, non necessariamente usando Google Reader e Google Bookmarks. Per esempio, io ora uso Fastladder per aggregare i feed e una installazione di scuttle su un server privato per salvare i bookmark.

Sarebbe bello se ci fossero delle API aperte (W3C? Mi senti?) per permettere ai vari servizi di scambiarsi i dati e migrarli quando IO lo decido. E se un giorno volessi togliere tutto? Facile, farei un backup dello storage (Amazon S3? Dropbox? Ubuntu One?) e poi cancellerei tutto.
Milioni di broken link :)
(e di oggetti storati nella cache di Google o salvati su altri milioni di hd nel mondo)

Ormai sono anni che si parla di Semantic Web come di quello che sarà il Web 3.0, ma forse sarà la standardizzazione del cloud e dei servizi che su di esso si appoggiano a costituire il prossimo passo.

Mount an Android Honeycomb device under Linux

So, Android Honeycomb only uses the MTP protocol for the USB connection. Linux has decent support with mtpfs, and the instructions are quite easy to follow (this article is based on that one).

First of all, after installing mtpfs, create a new directory (I'm using transformer since I own an Asus Transformer, feel free to use whatever you want):

$ sudo mkdir /media/transformer
$ sudo chmod 755 /media/transformer
$ sudo chown your_username:root /media/transformer

Then edit /etc/fstab

$ sudo vim /etc/fstab

And add:

mtpfs  /media/transformer  fuse  noauto,users,umask=033,allow_other  0 0

Save, exit, then mount

$ sudo mount /media/transformer 

Important: umount the device before unplugging, or you risk corrupting the filesystem.

venerdì 24 giugno 2011

Android, day one (and an half)

So, I finally got my Android smartphone AND tablet. I've been toying with them for about a day now and I wanted to share some toughts and some thing I learned.

  • Don't plug Asus Transformer USB charger on your UPS, it didn't play well for me (bad smell, I tought it burned but it works fine on a wall plug)
  • Android doesn't connect to wifi network if the SSID contains spaces
  • Most Android devices doesn't work out-of-the-box on wifi channel 13 (this sucks)
  • Android is marketed as "open", but most "apps" on the market are closed source and the App Market model isnt open at all. Also, the "app" model isn't open.
  • Many web sites recognize mobile browsers. Sadly, most fail to check the screen resolution: what's the point in providing a mobile version on a 1280x800 pixel screen (tablet)?
  • Flash runs smooth. Better than on my desktop. Adobe, you fail badly.
  • Skype sucks also on mobile.
  • Problem is: GTalk sucks too. Maybe in ten years we all will be using GNU Free Call. But I want it now.

Updates will follow.

venerdì 10 giugno 2011

Compiling Pound 2.6e with openssl-1.0.0d on CentOS 5.6

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

lunedì 6 giugno 2011

Compiling Pound 2.6e on CentOS 5.x

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

sabato 28 maggio 2011

Install Skype on Fedora 15 x86_64

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

Can't bear with Gnome 3

I finally installed Fedora 15, as anticipated.

And with Fedora 15 comes Gnome 3. I tried using it. But my patience was quite short: they changed a lot of interaction in subtle ways, so the gap with the previous version is not only based on the new graphical aspect, but also on different behavior.

Gnome 3 managed to get me on KDE 4. Problem is: while Gnome 3 is blazing fast, KDE 4 is slow. In the past I tried it on my netbook and I tought it was slow due to hardware shortcomings, but now I'm using it on my 3-core Phenom 2.3GHz with 8Gb RAM and Radeon HD4890 video card (open source drivers).

It's... slow. Painfully slow. Switching desktop it's so slow I checked if it was doing that in software, but desktop effects are active.

But despite Gnome 3 technical superiority, all the glitches at the moment are more important to me than the speed. Maybe I'll try something more exotic, like Openbox + AWN (like AriOS), but for the moment I'll stick with KDE.

I'll give Gnome another chance in a few months...

giovedì 26 maggio 2011

Prendere solo un numero da una riga

L'altra sera il mio capo mi ha chiesto un pizzico di kung-fu per estrarre solo il numero da un output di questo genere:

label:        18.1 Mb
second label:        100.00 %


Inizialmente, ho suggerito di usare awk:

$ cat file | awk {'print $2'}
18.1
label:

Il problema è che le label potevano contenere spazi (seconda riga). Usare cut era fuori discussione, perché forniva anche gli spazi come output.

Allora ho girato la questione: ci interessano solo i numeri, leviamo tutto il resto!

$ cat file | sed -e 's#[^0-9.]##g'
18.1
100.00

La regular expression dice: tutto ciò che non è un numero o un punto, cancellalo.
Elegante ed efficace.

Vedere il contenuto di una directory senza ls

Qualche tempo fa, su IRC, uno se ne uscì con qualcosa tipo: "sono su un sistema dd-wrt e chi lo ha personalizzato ha esagerato un po', non c'è nemmeno ls!"

Non so chi sia l'autore del delirio paranoide: sul sistema non c'erano né ls, né find, ma in realtà per elencare il contenuto di una directory basta usare la shell!

# echo *
app_plugins code licenses README.txt sketch_sheets templates


Non è certo il massimo dell'usabilità, ma funziona!

martedì 24 maggio 2011

Repository aggiuntivi per CentOS e Scientific Linux

Dato che se non me li segno in un posto fisso, poi me li perdo, mi segno qui i repo aggiuntivi più importanti per CentOS e Scientific Linux:

  • RPM Fusion: pacchetti generici, più che altro orientati al desktop (es. codec, mplayer, vlc)
  • EPEL: pacchetti enterprise (es. bacula)
  • ELRepo: kernel e moduli (compreso il mainline stabile)

E se il problema non fosse solo dalla parte di chi produce informazione?

Negli ultimi giorni, un paio di progetti hanno attirato la mia attenzione.

Il primo è della Mozilla Foundation e riguarda alcune cose su cui sto riflettendo da un po' (mesi), si tratta del progetto Drumbeat, nato per migliorare la creazione e la fruizione delle notizie, in collaborazione con importanti testate (The Guardian, BBC, Al Jazeera).

Il secondo è, invece, del creatore del sito icanhazcheezburger.com, famoso per le serie di LOLcats. Il progetto si chiama Moby Dick e si pone come obiettivo quello di stimolare la discussione su come vengono prodotte e mostrate le news. Ci sono degli schizzi interessanti di un'idea di layout.

A questo punto, però, mi domando: non è che per caso il problema non sia solo dal lato dei produttori di notizie, ma anche da quello dei consumatori?

Ritengo fondamentale, oggi più che mai, la nozione dell'impossibilità di fidarsi al 100% di qualsiasi fonte. Eppure, in un'epoca di virtuale sempre più imperante, è facilissimo vedere che le notizie vengono lette, credute e sbandierate senza neanche una basilare verifica dei fatti. Questo è pericolosissimo per chiunque, basta pensare a come possono reagire le folle (e i mercati) a voci incontrollate diffuse dai grandi media (che sempre più spesso le riprendono, da Internet, senza alcuna verifica).

Forse è importante, prima di modificare l'architettura dell'informazione, creare dei fruitori di informazione consapevoli dei limiti e dei pericoli dell'informazione creata da sconosciuti su Internet.

Questo strumento ha enormi potenzialità, ma come tutti gli strumenti potenti, necessita di una grande consapevolezza per essere usato a dovere.

domenica 22 maggio 2011

Togliere la barra degli indirizzi dal browser è una mossa saggia?

Ars Technica dice che in Chrome 13 è disponibile un'opzione per nascondere la barra degli indirizzi e che è uscita un'estensione per Firefox per fare la stessa cosa.

A me sembra stupido e pericoloso: la barra degli indirizzi è fondamentale per controllare su che sito siamo effettivamente, magari verificando lo stato della connessione https. Toglierla significa non disporre a colpo d'occhio di notizie importanti per la sicurezza della navigazione, non mi sembra affatto una buona idea.

mercoledì 18 maggio 2011

Certificazione Red Hat, qualche nota sul quota

Sto studiando per la RHCSA/RHCE, dato che il quota è uno dei temi che meno conosco, approfitto per segnarmi qualche appunto qua.

Gli esperimenti li ho fatti su Scientific Linux 6. Di default quota è già installato, per controllare basta un:

# rpm -qa | grep quota
quota-3.17-10.el6.x86_64

Il kernel dispone già del supporto, quindi non ci sarà da fare nulla di particolare.

Per usare il quota, è necessario abilitarlo mountando la partizione con le opzioni relative: usrquota per il supporto a livello di utente e grpquota per quello dei gruppi. E' anche necessario richiamare il comando quotaon per attivare le impostazioni, ma lo vedremo più avanti.

Ipotizziamo di avere una partizione /dev/vdb1 formattata in ext4, mountiamola in /mnt/testquota, attiviamo il quota ed inizializziamo il db

# mount -t ext4 /dev/vdb1 /mnt/testquota -ousrquota,grpquota
# quotaon /mnt/testquota
# quotacheck -bvug /mnt/testquota

Le opzioni che abbiamo usato per quotacheck sono:

  • -b: fai un backup del quotafile, prima di scrivere quello nuovo
  • -v: verbose
  • -u: abilita il quota per gli utenti
  • -g: abilita il quota per i gruppi

Per quanto riguarda quotaon, se salviamo la riga di mount nell'fstab, verrà richiamato automaticamente all'avvio. A proposito di fstab, la riga di configurazione per mountare automaticamente la nostra partizione di prova sarebbe:

# partizione  mountpoint      fs    opzioni              dump/prio
/dev/vdb1     /mnt/testquota  ext4  defaults,usrquota,grpquota 1 2


Torniamo a noi. Abbiamo lanciato quotacheck per creare il db e ci ritroveremo con due file nella nuova partizione:

# ls -lh /mnt/testquota/
totale 40K
-rw-------. 1 root root 6,0K 13 mag 05:20 aquota.group
-rw-------. 1 root root 7,0K 13 mag 05:23 aquota.user
[...]

Questi sono i database che contengono le impostazioni per i gruppi e gli utenti. Non vanno editati direttamente, ma invocando edquota:

# edquota velenux
[si apre vi per modificare il file]
Disk quotas for user velenux (uid 500):
Filesystem  blocks  soft  hard  inodes  soft  hard
/dev/vdb1   0       50000 60000 0       20    50


Come vedete, è possibile modificare sia il numero di blocchi (di 1024byte) che il numero di inode (cioè di file e directory che è possibile creare).

Abbiamo impostato un "soft" quota di circa 50Mb ed un hard quota di 60. Il "soft" può essere superato per brevi periodi di tempo, detto grace time, mentre l'"hard" quota è un limite invalicabile. Facciamo una semplice prova:

# mkdir /mnt/testquota/velenux
# chown velenux:users -R /mnt/testquota/velenux
# su - velenux
$ cd /mnt/testquota/velenux
$ for num in $(seq 5); do dd if=/dev/urandom of=prova${num} bs=10M count=2; sync; done
2+0 records in
2+0 records out
20971520 bytes (21 MB) copied, 2,88992 s, 7,3 MB/s
2+0 records in
2+0 records out
20971520 bytes (21 MB) copied, 2,88969 s, 7,3 MB/s
dd: scrittura di `prova3': Superata la quota di disco
2+0 records in
1+0 records out
19496960 bytes (19 MB) copied, 2,85899 s, 6,8 MB/s
dd: scrittura di `prova4': Superata la quota di disco
1+0 records in
0+0 records out
0 bytes (0 B) copied, 1,43602 s, 0,0 kB/s
dd: scrittura di `prova5': Superata la quota di disco
1+0 records in
0+0 records out
0 bytes (0 B) copied, 1,42407 s, 0,0 kB/s


Cos'è successo? Abbiamo provato a scrivere 5 file di 20Mb l'uno, ma la scrittura si è interrotta durante il terzo file e gli ultimi due sono vuoti, come ci conferma un ls:

$ ls -lb
totale 60000
-rw-rw-r--. 1 velenux velenux 20971520 18 mag 03:08 prova1
-rw-rw-r--. 1 velenux velenux 20971520 18 mag 03:08 prova2
-rw-rw-r--. 1 velenux velenux 19496960 18 mag 03:08 prova3
-rw-rw-r--. 1 velenux velenux        0 18 mag 03:08 prova4
-rw-rw-r--. 1 velenux velenux        0 18 mag 03:08 prova5


Il totale è praticamente il nostro hard limit:

$ du -sb
61444096 .
$ echo 61444096/1024 | bc
60004


Se controlliamo le statistiche, vedremo che ci confermano che abbiamo sforato il "soft" limit e siamo stati bloccati dall'"hard":

# repquota -uv /mnt/testquota/
*** Report for user quotas on device /dev/vdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0       0              2     0     0       
velenux   +-   60000   50000   60000  6days       5    20    50       

Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2,000000


Nel report vediamo anche che abbiamo 6 giorni di "grace" prima che i file/blocchi over quota vengano cancellati.

Per modificare il grace period si usa edquota con l'opzione -t:

# edquota -t
[viene avviato vim]
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem             Block grace period     Inode grace period
  /dev/vdb1                     7days                  7days


Il default può andar bene, ma possiamo allungarlo se sappiamo che i nostri utenti si connettono raramente, oppure ridurlo se sappiamo che si connettono spesso (e che tendono a sforare spesso il quota!).

giovedì 21 aprile 2011

How Gnome 3 will destroy/improve my productivity

In protest against Google censorship of Blogger blogs in some countries, this post has been moved to Wordpress.

Questo post è stato spostato su Wordpress in protesta contro la censura applicata da Google su richiesta dei governi di alcuni paesi.

mercoledì 20 aprile 2011

Finalmente un bel post sul design d'interfaccia

Forse è un po' breve, ma mi trovo profondamente d'accordo con questo post sul design d'interfaccia. Per chi non vuole cliccare, brevemente:

  1. Bisogna progettare l'interfaccia per l'utente (e quindi bisogna sempre avere chiaro che tipologie di utenti la useranno)
  2. Se non si ha un designer nel team, è importante sapersi mettere nei panni dell'utente (e non è per niente facile)
  3. Bisogna sempre tenere a mente quali sono gli obiettivi dell'utente e quali task deve compiere per raggiungerli: in ogni schermata vanno messi solo gli elementi necessari a quel task

Purtroppo un sacco di software Open Source ha interfacce orribili, pensate e realizzate da persone del tutto inadatte all'UX Design. Magari un giorno avrò tempo di ridisegnarne qualcuna...

sabato 9 aprile 2011

Why RAW is your "digital negative"

I had this post in mind for quite a long time now. RAW files are currently viewed as "your digital negative". Let's see how you can "develop" your RAW files to get many different results from a single shot.

Tools I use for my photography elaboration with Linux are:


Other tools I don't use daily, but I should take a look at:


Now, to the images!

Original shot


This is the original shot, as converted by Canon algorithms (RAW embedded preview)


UFraw development


UFraw mostly "auto" settings


UFraw "my" settings


UFraw with more "washed out" (less saturated, light color cooler) look


Luminance HDR (aka QTpfsGUI)


These are "HDR from single file" exports from QTpfsGUI 1.9.3 (project is now named Luminance HDR).

Reinhard '02, key 0.18, phi 1, pregamma 1


Reinhard '05, brightness 4, chromatic adaptation 1, light adaptation 0, pregamma 1


Mantiuk, contrast mapping 0.1, saturation factor 0.8, detail factor 1, pregamma 1


Mantiuk, contrast mapping 0.1, saturation factor 0.8, detail factor 1, pregamma 1.7


Fattal, alpha 0.1, beta 0.8, saturation 1, noise redux 0.582, pregamma 1


Fattal, alpha 0.1, beta 0.814, saturation 1, noise redux 0.682, pregamma 1.2


Fattal, alpha 0.1, beta 0.814, saturation 1, noise redux 0.682, pregamma 1.4


Fattal, alpha 0.102, beta 0.932, saturation 1, noise redux 1, pregamma 1.6


Digital has almost the same options than analog, just give it a try!

venerdì 8 aprile 2011

CentOS e il miglior modo di perdere utenti

Abbiamo deciso di allegare CentOS 5.6 a Linux&C.

Si partiva male: sul sito, nessun annuncio; nella mailing list "announce", nessun annuncio. Tutte le informazioni provenivano da un account Twitter chiamato @centos, ma in realtà legato ad uno specifico sviluppatore (Karanbir Singh).

Abbiamo scaricato il torrent con le ISO, fatto le modifiche del caso (smontato e ricreato la seconda ISO per aggiungere altri contenuti) preparato i master che verranno poi prodotti su scala industriale. Masterizzati e spediti i master, esce un altro tweet che dice che CentOS non è stata ufficialmente rilasciata e che il team sta modificando la ISO e syncando di nuovo tutti i mirror.

Questa è un'operazione che io non farei neanche per una ISO per uso personale e loro lo fanno per un progetto che si chiama Community ENTerprise OS. S'è aspettato quasi 3 mesi, si aspettava anche un'altra settimana: ma quando metti fuori la ISO, dev'essere quella e basta. Non puoi ripensarci dopo qualche ora.

Sono andato a cercare altre informazioni sulle mailing list: la ml announce è tristemente vuota, mentre in quella di discussione generica impazzano i flame sui ritardi sia della 5.6 che della 6.0.

Lì ho visto le risposte degli sviluppatori ad utenti che chiedevano (ok, probabilmente per la millesima volta) quantomeno una tempistica per l'uscita della 6.0: "Se non ti piace CentOS, puoi anche cambiare distribuzione" e così via.

Vengono trattati male anche (e soprattutto) quelli che, in buona fede, offrono il loro tempo ed il loro hardware per dare una mano nel processo di ricompilazione, che è assurdamente complicato perché punta ad ottenere binari identici a quelli di RHEL, dovendo di fatto fare reverse engineering dell'ambiente di compilazione di ogni pacchetto.

Personalmente sto usando Scientific Linux 6 per prepararmi per la certificazione su RHEL e non credo che installerò più una CentOS, se non costretto da motivi di supporto specifici. SL non punta ad avere binari identici a quelli originali: in questo modo, il processo di sviluppo è molto più rapido. Inoltre, gli sviluppatori rispondono educatamente agli utenti ed ai membri della comunità. Una differenza non da poco.

E' uscito Gnome 3

... ed è successo esattamente quanto vaticinavo qualche settimana fa: gente che consiglia di passare a KDE, altra gente che suggerisce di attivare la modalità di fallback che assomiglia a Gnome 2. Molti scontenti, qualche contento. Si parla più attentamente di cosa faranno distro come Mint che in base alle sue scelte potrà beneficiare enormemente dal passaggio di Ubuntu a Unity e di Fedora a Gnome 3, scippando utenti ad entrambe.

Se sapessi programmare in C++, io prenderei i sorgenti di KDE e toglierei l'80% dei menu e dei pulsanti per farne un desktop serio (pulito, minimalista). Per vostra fortuna, non è così.

mercoledì 6 aprile 2011

Canonical chiuderà il servizio ShipIt

Premetto che non ho mai approfittato del servizio ShipIt di Canonical, che permetteva di farsi mandare a casa un po' di CD di Ubuntu per uso personale o da distribuire agli amici e parenti più cari. In effetti, non ne ho mai visto il senso: ho una connessione veloce, scarico le ISO appena escono e le masterizzo su un DVD-RW o le metto direttamente su chiavetta USB. Una volta installato il sistema, a cosa cavolo dovrebbe servirmi il CD d'installazione?

Ho smesso di fare la collezione dei CD delle varie distro un po' di anni fa, accorgendomi dell'inutilità (anche se ho ancora quello di Mandrake 5.3 per motivi sentimentali, la mia prima distro!).

Detto questo, Canonical sta chiudendo il servizio e in alternativa offrirà la possibilità di provare la distro tramite una comoda virtual machine, nel fantomatico cloud.

Sicuramente fa parte della strategia di Canonical, che sta cercando di farsi passare come partner ideale per la creazione di cloud privati (l'opzione Ubuntu Enterprise Cloud è presente nella versione server da più di due anni), però qui fallisce miseramente, a mio modestissimo avviso. Provare la distro sul tuo hardware con un LiveCD è ben diverso da provarla su una macchina virtuale, magari via VNC, con effetti grafici disabilitati, etc.

Pessima mossa.

venerdì 25 marzo 2011

Competizione tra distro

Leggevo questo articolo che parla di "competizioni tra distro".

Credo abbia centrato il punto dicendo che è facile finire a comparare mele e arance.

Anche le distro desktop hanno target molto diversi: Ubuntu ha gli utenti inesperti come obiettivo primario, mentre Fedora punta più agli sviluppatori ed agli studenti esperti. OpenSUSE punta... mmm agli utenti di SUSE credo (mi spiace, ma non son mai riuscito a farmela piacere!).

Poi ci sono distro come Mandriva che, a parte i problemi economici che ha avuto, va forte in Francia. Tra l'altro stanno sviluppando cose interessanti per il desktop semantico, anche se gli manca quella scintilla che ai tempi di Mandrake 8 e 9 ne aveva fatto la distro di riferimento per l'ambito desktop. A quei tempi innovarono molto dal lato usabilità e anche a livello di sistema (con l'introduzione di urpmi).
Ci sono varie altre distro più o meno grandi con target "locale", mi viene in mente, ad esempio, RedFlag, cinese, ma ce ne sono decine.

Poi? Mint è una distro onesta, basata su Ubuntu (o Debian, se preferite), con qualche tool personalizzato ben piazzato. Trovo che sia una valida alternativa a Ubuntu, anche se ovviamente la community è molto più piccola.

PCLinuxOS non mi ha particolarmente colpito e non capisco bene quale sia il target. Puppy è ben fatta, anche se non mi piace affatto che giri totalmente da root e la trovo un po' limitata come distro desktop, però gira ottimamente anche su sistemi più datati.

Io continuo a vivere col dubbio su quale distro installare. Probabilmente a questo punto attenderò Fedora 15 e andrò con l'opzione btrfs + snapshot.

lunedì 21 marzo 2011

Altri candidati per il posto di "Distro ideale"

Leggendo le news (leggo un sacco di news per lavoro), oggi mi sono imbattuto in un articolo che parlava del progetto CUT, Constantly Usable Testing, una release Debian che punta ad avere una Debian "rolling release" con un sistema sempre funzionante e, allo stesso tempo, sempre aggiornato. Celestiale, nèvvèro?

Questa si aggiunge a Linux Mint Debian Edition, che avevo già adocchiato e prometteva più o meno le stesse cose.

In alternativa, stavo pensando che potrei continuare ad utilizzare Fedora, ma spostarmi sul repository rawhide e usare gli snapshot btrfs per avere un versioning del sistema, in modo da poter sempre tornare ad un sistema funzionante.

domenica 13 marzo 2011

Alla ricerca della distro perfetta

Non è un caso che esistano tante distribuzioni nel mondo Linux: la libertà si vede anche in questo continuo lavorìo di packaging e personalizzazione, alla ricerca della distribuzione perfetta.

Nella mia ormai lunga storia di utente Linux, ho usato quasi tutte le distribuzioni principali: partii con Mandrake 5.3 (KDE 1.0 e kernel 2.0), passando poi a Red Hat 6 e poi 6.2. Una volta presa un po' di confidenza col sistema, passai a Slackware. Su Slack imparai ad usare veramente Linux: scomparsi i tool automatici di RH/MDK, la configurazione procedeva a colpi di vi sui file di conf in /etc e nella mia home.

Poi ho usato Debian e Gentoo, fino a quando mi sono trovato a dover disporre di un PC fisso "sempre funzionante" su cui lavorare. Nel frattempo era nata Ubuntu: basata su Debian (testing e unstable), con tutta una serie di automatismi per la configurazione automatica.

L'anno scorso, per lavoro, sono passato a Fedora, ma ora la Fedora 13 che ho installato sta arrivando alla fine del supporto ed è ora di pensare a cosa usare come prossima distribuzione.

Ho provato Fedora 15 alpha con Gnome 3 e sto usando Ubuntu 11.04 alpha con Unity, ma nessuna delle due mi è piaciuta in modo particolare.

Non mi piacciono le distribuzioni da "aggiornare" ogni 6 mesi, preferisco le "rolling release", però questo si scontra in parte col bisogno di un sistema sempre utilizzabile: Debian Testing per quanto sia un po' più stabile della unstable, è comunque passibile di Errori Catastrofici[tm].

La nuova OpenSUSE (11.4) ha un'opzione "rolling", però SuSE non mi è mai piaciuta (nulla di personale! è una cosa così, a pelle). L'altra che ho adocchiato è Mint Debian Edition, anch'essa rolling e basata su Debian Testing, però è una distro giovane e la community mi sembra ancora piuttosto piccola (le uniche due con la massa critica, al momento, mi sembrano quella Debian/Ubuntu e quella di Fedora).

Rimango fortemente indeciso.

giovedì 10 marzo 2011

Fedora 15 Alpha con Gnome 3

Oggi ho partecipato alla seconda giornata di testing di Gnome 3. L'ISO di test è uscita in ritardo, quindi non sono riuscito a completare tutti i test, ma comunque il team di Fedora prende molto sul serio il termine "alpha": il software è ancora molto instabile e presenta parecchi bug.

Della checklist presente sul sito sono riuscito a testare solo i common shortcuts (ok), la data (fail, nel pannello in cima mi rimaneva una data diversa da quella di sistema), il keyring (fail, non salvava la passphrase WPA), il volume (ok per le funzioni del volume, ma totem è crashato e mentre installavo i pacchetti per debuggarlo è crashato tutto il sistema, probabilmente un problema di OOM killer).

Per come la vedo io, dato il passaggio di Fedora a Gnome 3 (uscita prevista a Maggio) e di Ubuntu a Unity (fine aprile), nei prossimi mesi prevedo ancora più utenti per Mint (che userà un'interfaccia stile Gnome 2, anche se basata sulle librerie della 3), che comunque ha già superato anche Fedora nella classifica di Distrowatch. In alternativa, alcuni utenti si potrebbero spostare su KDE (e quindi OpenSUSE, di cui è appena uscita la 11.4).

Vedremo, per il momento mi sento di puntare più su Mint.

Gnome 3, di suo, è abbastanza interessante. L'ambiente è totalmente accelerato 3D (c'è un fallback per le schede che non lo supportano) e l'aspetto grafico è ancora più minimalista di quello visto fino ad oggi. Tra l'altro, per default non esistono i tasti di riduzione a icona e massimizzazione della finestra. Per massimizzare si può trascinare la finestra in alto e verrà allargata a tutto schermo o, meglio, "a tutto workspace". I virtual desktop, infatti, ora si chiamano "workspace" e su questo concetto vogliono basare l'usabilità della piattaforma. A me non dispiace, dato che sono abituato ad usare un desktop per ogni applicazione (o giù di lì), ma immagino che parecchia gente si possa trovare spaesata.

Altra cosa poco bella è che per default chiudendo il monitor del portatile viene attivata la sospensione e non c'è modo di cambiare questa impostazione dall'interfaccia grafica, solo tramite gconf (che ora ha cambiato nome e si chiama gsettings). Non esattamente l'ideale per i newbie.

Il nuovo design di Nautilus è molto pulito e lineare, piacerà un sacco a chi viene da OS X (già, ma chi viene da OS X?).

Nelle prossime settimane vedrò di rimetterci le mani!

mercoledì 9 marzo 2011

Specified key was too long MySQL error creating index

I stumbled across this error while coding my Ultimate RSS Reader[tm]. I was using (admittedly, not the best choice) TEXT fields to store URI for RSS feeds. Anyway, my table looked like this:

mysql> create table simple (ID integer auto_increment primary key 
not null, content text) charset utf8 engine innodb;

Query OK, 0 rows affected (0.07 sec)

mysql> show create table simple;
+--------+---------------------------------------------------------+
| Table  | Create Table                                            |
+--------+---------------------------------------------------------+
| simple | CREATE TABLE `simple` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `content` text,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+---------------------------------------------------------+
1 row in set (0.00 sec)

And my create index query (and error) was something along these lines:

mysql> create unique index `content_idx` on `simple` (content(256));
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

I didn't understand why 256 (or more) characters were too much for the 767 bytes limit on InnoDB tables. Turns out that UTF8 could use up to 4 bytes for each character, and MySQL 5,1 uses by default 3 bytes for each character (this has changed in MySQL 5.5), then the limit for this value is 255 characters, or 255*3 bytes and (255*3) is less than 767.

By the way, since MySQL 5.0 the VARCHAR data type could host up to 64k characters, so the correct data type for storing your URIs could be something like VARCHAR(4096).

Many thanks to Patrizio, Stardata CEO for clarifying this issue to me!

martedì 11 gennaio 2011

Error compiling ATI Streams SDK on Fedora

I'm working with some OpenCL related things, so I need to install ATI Streams SDK on this machine.

I downloaded the software from ATI Streams website, then extracted it and exported the necessary env vars:

$ tar zxvf /path/to/ati-stream-sdk-v2.3-lnx64.tgz
$ cd ati-stream-*/
$ export ATISTREAMSDKROOT=$(PWD)
$ export ATISTREAMSDKSAMPLESROOT=${ATISTREAMSDKROOT}/samples

At this point I had to patch several makefiles to compile the SDK on my Fedora 13, so here's the patch. Save it as ati-streams.patch, then make sure you are in the ati-streams-sdk folder and launch:

$ patch -p1 < /path/to/ati-streams.patch
patching file samples/opencl/cl/app/BoxFilterGL/Makefile
patching file samples/opencl/cl/app/FluidSimulation2D/Makefile
patching file samples/opencl/cl/app/Mandelbrot/Makefile
patching file samples/opencl/cl/app/NBody/Makefile
patching file samples/opencl/cl/app/SimpleGL/Makefile
patching file samples/opencl/cl/app/Template/Makefile
patching file samples/opencl/cl/app/URNGNoiseGL/Makefile

Then you can launch make to compile the SDK.

sabato 8 gennaio 2011

Pronto anche lo sfondo!

Forse un po' troppo. Ma insomma, oggi ho voglia di sfondi così :)

venerdì 7 gennaio 2011

Fix'd

Primo post del 2011... ho fixato un po' i CSS riguardanti il codice sorgente (casomai mi venisse voglia di pubblicare qualche altro orrore :p) ed i CSS della sidebar e del post-footer. Quasi quasi metto anche uno sfondo alla pagina, ma devo rifletterci bene.