Monthly Archives: August 2009

Push mail: Blackberry è meglio?

La push-mail è una delle richieste costanti dell’utenza business.

Personalmente la trovo una cosa inutile: l’e-mail non è nata come servizio real-time, non è stata progettata per questo, esistono gli instant messenger e tante altre amenità per soddisfare i bisogni di comunicazione in real-time, e tra queste non rientra l’e-mail.

Non serve a nulla avere un cellulare in grado di ricevere le email istantaneamente quando quello stesso messaggio può vagare per Internet anche per tre giorni prima di raggiungere la tua casella.

Per quotare il caro DB in failure is always an option:

Mai successo di inviare una lettera (o un pacco) e non vederla mai arrivare a destinazione? Mai successo di acquistare un qualche prodotto per posta e non ricevere un tubo perche’ il pacco e’ stato perso dalla posta (o dal corriere)? Sicuro che e’ successo.

In questi casi, di solito, nessuno si scompone piu’ di tanto.

E allora, perche’ se la cosa che va’ in campana e’ la posta elettronica tutti quanti cominciano a strillare[…]

Detto questo, quando mi capita di entrare nell’argomento push-mail dopo aver servito il mio sproloquio sul perchè sia a mio giudizio una cosa inutile, noto spesso che esistono molti misconcetti riguardo al suo funzionamento.

In verità esistono molti tipi diversi di push-mail, vediamo di esaminare le principali tecnologie:

Blackberry di RIM

Dobbiamo fornire le credenziali del nostro account email alla RIM, la quale provvederà a controllare la presenza di nuove e-mail periodicamente se di tipo POP3 o tramite il comando IDLE se di tipo IMAP. In alternativa possiamo usare l’account email fornito dalla RIM stessa o un server in-house acquistato dalla RIM stessa.

Quando accendete il vostro telefonino, questo si registra sulla rete cellulare e, se la rete cellulare lo supporta, esegue anche una seconda registrazione che viene inviata direttamente al server della RIM. In questo modo la RIM sa che il client è attivo e sa come raggiungerlo. Questa seconda registrazione non avviene tramite Internet.

Non appena il server RIM trova un nuovo messaggio sul vostro account e-mail, manda al telefonino una notifica tramite la rete cellulare. A questo punto il telefonino si connette tramite Internet al server RIM e scarica il messaggio.

Il grosso vantaggio di questa tecnologia è che il telefonino non deve mantenere una connessione a Internet costantemente attiva e non deve nemmeno mandare dei messaggi periodici al server di posta per mantenere la connessione attiva.

Tuttavia sono presenti alcuni svantaggi:

  • se volete usare il vostro account di posta, inevitabilmente ci sarà un ritardo nella consegna del messaggio, in quanto il server di RIM impiegherà un certo tempo per accorgersi che sul vostro account è presente un nuovo messaggio, a meno che il vostro server non supporti Push-IMAP.
  • siete obbligati a comprare dal vostro operatore un piano telefonico compatibile col servizio Blackberry. Di solito questi piani hanno costi elevati, ma hanno anche il vantaggio di non farvi pagare lo scatto alla connessione (altrimenti paghereste un tot per ogni email ricevuta) e di includere una quantità di MByte traffico inclusi piuttosto elevata.

Microsoft Exchange’s Activesync

Il protocollo usato dal server di casa Microsoft ha un approccio più brutale: il telefonino dotato di supporto per il cosiddetto Direct Push di Exchange mantiene costantemente attiva la connessione a Internet e invia una semplice richiesta HTTPS al server Exchange utilizzando un timeout lunghissimo. Se il server risponde alla richiesta prima dello scadere del timeout, il telefonino inizia un sync della posta; in caso contrario la connessione viene abbattuta e ne viene immediatamente aperta un’altra identica. Così via all’infinito.

Questa tecnica ha due svantaggi: richiede una connessione a Internet sempre attiva (che consuma molta energia) e utilizza un protocollo con un overhead piuttosto elevato (HTTPS) comparato ad altre soluzioni.

Una connessione a Internet always-on può comportare dei costi elevati: alcuni piani telefonici prevedono una connessione a Internet con tariffazione a minuti e pertanto non sono adatti a questa soluzione. La maggior parte degli operatori fa pagare uno scatto a ogni connessione, quindi pagherete un obolo ogni volta che per qualche motivo la vostra connessione cadrà e dovrà essere ripristinata.

IMAP aka Push-IMAP aka P-IMAP aka IMAP IDLE

La soluzione più antica del mondo, disponibile fin dai tempi in cui venne definito lo standard per l’IMAPv4r1: il telefonino mantiene una connessione a Internet sempre attiva, apre una sessione IMAP4 con il server di posta, si autentica, invia il comando IDLE e mantiene aperta la connessione tcp. Il server da quel momento non appena riceve un nuovo messaggio per la vostra casella, invia immediatamente il messaggio al vostro client.

Rispetto alla soluzione adottata da Microsoft abbiamo alcuni vantaggi:

  • il telefonino non deve ripetere la richiesta HTTPS a intervalli regolari
  • il protocollo ha un overhead minimo, il traffico generato in assenza di e-mail è praticamente nullo.
  • esistono una moltitudine di server con supporto per IMAPv1 rilasciati con licenza OSS.

L’ovvio svantaggio è che il telefonino deve mantenere una connessione a Internet costantemente aperta, proprio come nel caso di Microsoft Activesync, con la conseguenza di far lievitare i costi della vostra bolletta telefonica e di consumare energia.

iPhone

E veniamo all’iPhone: più che di push-mail in questo caso si deve parlare di push-notifications, in quanto si tratta di una tecnologia che può essere usata da qualsiasi applicazione per iPhone, non solo Mail, per far sapere all’utente che ci sono nuovi dati disponibili da scaricare per l’applicazione stessa.

Da notare che i dati non vengono tuttavia scaricati dall’iPhone automaticamente in quanto iPhone OS non permette l’esecuzione di applicazioni in background. Deve essere l’utente, una volta verificata la disponibilità di nuovi dati, a lanciare l’applicazione e effettuare il trasferimento vero e proprio.

Il funzionamento delle push notifications è banale: l’iPhone mantiene una connessione a Internet costantemente aperta (tramite GPRS/3G oppure WiFi, a seconda di cosa sia disponibile) con il server Apple; quando il server ha nuovi dati disponibili per l’applicazione in questione,  invia un messaggio al server Apple il quale a sua volta lo inoltra all’iPhone.

Questa soluzione presenta i già citati svantaggi relativi al mantenere una connessione a Internet costantemente attiva, tuttavia è più efficiente rispetto a quella adottata da Microsoft Activesync in quanto non richiede l’invio di richieste al server di Apple a intervalli regolari. Rispetto a tutte le soluzioni fin qui prese in esame ha il vantaggio di poter essere usata per molteplici scopi, non solo per la posta.

Bibliografia:
Share

Deleting files older than N days from FTP server

Many hosting companies provide customers with FTP space for storing their backups (e.g. Hetzner, HostEurope).

Problem is that unless you want the backup space to fill up after a while you have two possibilities:

  • use a naming scheme for your backups which overwrites old files like hostname-DAYOFWEEK.tar.gz, hostname-DAYOFMONTH.tar.gz
  • automatically delete old files from your FTP space

I like to name my backups with the full date, e.g. hostname-YYYY-MM-DD.tar.gz, so I went for the latter.

Unfortunately deleting old files from an FTP server is not as simple as running find . -mtime +30 -delete because usually you don’t get shell access to your FTP space. Everything must be done via FTP.

Here comes a simple perl script I wrote that does the trick. It requires the Net::FTP module.

Hope it will be useful to you too!
#!/usr/bin/perl

use strict;
use Net::FTP;

my $host        = "ftp.hostname.com";
my $dir         = "/";
my $user        = "foo";
my $passwd      = "bar";
my $interval    = 3600*24*62; # 62 day
my $passive     = 1; # my FTP server only works in PASV mode
my $DEBUG       = 0;

my $ftp = Net::FTP->new($host,
 Debug => $DEBUG,
 Passive => $passive)
 or die "Can't open $host\n";
$ftp->login($user, $passwd) or die "Can't log in as $user\n";
$ftp->cwd($dir) or die "Can't chdir to $dir\n";
my @files = $ftp->ls();

foreach my $file (@files) {
my $file_mdtm = $ftp->mdtm($file) or die "Can't find $file in $dir\n";
if (time - $file_mdtm >= $interval) {
print "File $file is older than $interval secs: deleted\n";
$ftp->delete($file) unless $DEBUG;
}
}

The password is stored in the script itself so make sure permissions are set properly! You don’t want it to be world readable :)

chmod 700 ./ftp-purge-backups.pl

Share

Upgrading firmware of Panasonic Lumix DMC-FT1

In short:

Panasonic has released a new firmware for the Panasonic Lumix DMC-FT1 compact camera which is worse than the previous version. The previous version (1.1) is no longer available on Panasonic website, so I made it available for you on my website: FT1__110.zip

Long story:

I already talked about the Panasonic Lumix FT1 camera in another post, in short the strenghts of this camera are:

  • ability to go under water
  • HD quality movies (720p)
  • optical zoom during movie recording
  • no limit on movie length

It’s really worth its price. You can find many example videos made with this camera on YouTube. The latest firmware available from Panasonic is ver. 1.2 . The main difference with regards to ver 1.1 according to Panasonic website is an “improvement of battery detection for safety standards Panasonic uses” which seems cool until you dig around for a while and discover that this improvement actually means that “after this firmware update your Panasonic Digital Camera cannot be operated by unauthorised 3rd party batteries“.
Wait a second, and you call this an improvement? No, thanks. I’d rather keep the ability to use 3rd party batteries.

So the next thing you do is check what other improvements have been introduced in firmware 1.1 compared to 1.0, here they are:

  • Capable of playing back AVCHD motion picture format (1,280 x 720 )
  • The quality of viewing image(still image) is improved.

Don’t care too much about the former, but the latter looks quite important.

Right, next question is: where can I download firmware 1.1 ? Panasonic was such nice to remove it from their website, and force anybody who wants to fix the 2 issues listed above to upgrade to ver. 1.2 and (bonus!) lose the ability to use 3rd party batteries.

That’s not nice, Panasonic!

Fortunately for you, I had the luck to save a copy of firmware 1.1 while it was still available, here it is for your convenience: FT1__110.zip

Share