Feed on
Posts
Comments

GlutenBuster è diventata l’applicazione ufficiale per la piattaforma Android dell’Associazione Italiana Celiachia e ora si chiama AiC mobile.
Con questo post segnalo che ho rilascio la versione 1.0.0 di AiC mobile e che ieri l’ho pubblicata sul Market Google in modo che chiunque sia interessato possa installarla e usufruire del prontuario AIC dei prodotti senza glutine sul proprio smartphone.
AiC mobile per Android è sviluppata come software libero (Free Software) ed è distribuita gratuitamente. Per scaricarsi il database dei prodotti, bisogna però essere registrati sul sito www.celiachia.it per creare un legame con l’associazione che certifica i prodotti.

Come ogni prodotto del volontariato, anche AiC mobile per Android, è il risultato della collaborazione di più persone che ringrazio per il loro aiuto e l’incoraggiamento che mi hanno donato: Luca Agostini, Alberto Carlana, Antonio D’Errico, Anna Ferrandino, Davide Fiorello, Mario Mestice, Antonio Pascuccio, Lorenzo Pino.

Per continuare:

  • Presentazione del programma, delle sue caratteristiche principali, screenshots, video dimostrativo e link per il download.
  • Gruppo per avere supporto tecnico nell’utilizzo dell’applicazione e per segnalare eventuali problemi;
  • Sito di sviluppo collaborativo dove è possibile accedere ai sorgenti e contribuire alle idee di sviluppo e alla stesura del codice.
  • Per installare l’applicazione:

Ho rilasciato la prima versione pubblica di GlutenBuster, app per la piattaforma Android per la consultazione del prontuario AIC degli alimenti senza glutine.

GlutenBuster è sviluppato come software libero (Free Software) ed è distribuito gratuitamente da sito di sviluppo collaborativo.

Sono alla ricerca di persone interessate a partecipare alla fase di test prima della pubblicazione nel Google Market. Se qualcuno fosse interassato può scrivere a glutenbuster@casarini.org.

Per continuare:



I recently made an helper class to download a file from the web and save it to the file sytem while updating a ProgressDialog to let the user know the percentage of the download made. This class has the responsibility to manage the network communication and to send messages to the UI to update the status of the ProgressDialog previously built and displayed.

Before starting to write some code it may be useful to remember to declare in the AndroidManifest.xml the request for the permission to make connections over the Internet and, if we want to save the file on the sd card, the permission to write to the external storage:

XML:
  1. <uses-permission android:name="android.permission.INTERNET"/>
  2. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

The class I wrote is called DownloadThread, extends th java.lang.Thread and a constructor with four parameters:

  • the url of the file to download;
  • the path where the downloaded file has to be written;
  • the instance of the ProgressDialog to update;
  • the handler that will receove the messages to update the UI.
JAVA:
  1. public class DownloadThread extends Thread {
  2.     private static final String TAG = Home.class.getSimpleName();
  3.     private static final int BUFFER_LENGTH = 8192;
  4.    
  5.     private Handler handler;
  6.     private ProgressDialog progressDialog;
  7.     private String fileurl;
  8.     private String filepath;
  9.    
  10.     public DownloadThread(String fileurl, String filepath, Handler handler, ProgressDialog dialog) {
  11.         this.fileurl = fileurl;
  12.         this.filepath = filepath;
  13.         this.handler = handler;
  14.         this.progressDialog = dialog;
  15.     }

Continue Reading »

La mia posta dov’è?

Da un po' di giorni non mi arriva più la posta (quella tradizionale) a casa. Considerandolo un fatto piuttosto strano visto che abito in una grande città, telefono alle poste (803.160) per segnalare la cosa.
Dopo aver fatto lo slalom tra le varie scelte guidate del risponditore automatico, riesco a parlare con un operatore a cui segnalo che da 5gg non ricevo più la posta, né io né gli altri condomini del palazzo in cui vivo.
L'operatore mi chiede se stavo aspettando qualcosa in particolare e, dopo avergli detto che non aspetto nulla in particolare ma che sono abbonato ad un quotidiano che ha smesso (insieme al resto della posta) di arrivarmi, mi mette in attesa.

Durante la lunga attesa rifletto sul fatto che, sebbene molto cortese, il tono del mio interlocutore mi pareva strano... c'era qualcosa che non mi tornava. Io stavo contattando le Poste Italiane per segnalare che non mi arriva la posta da 5gg e il tono del mio interlocutore poteva essere paragonato a quello di un medico in sala operatoria a cui viene chiesto se ha da accendere. Come se la mia segnalazione fosse off topic.

Continue Reading »

phpKnockClient 1.0

I've implemented a port-knocking client implementation in PHP inspired by the knockd C implementation made by Judd Vinet.

You can can download it at this page.

If you don't know what port knocking is, it can briefly described as a way of surreptitiously offering services on a server without advertising the fact. By delivering a special sequence of “port knocks”, a user can open up access to a port for his IP only, and close it again when he’s done.

For more information, see the port knocking website or this article that is an introduction to how, using the port-knocking technic, trusted users can manipulate firewall rules to transmit information across closed ports.

PostgreSQL mi accompagna nel mio lavoro da ormai 8 anni e di versione in versione mi ha sempre regalato delle soddisfazioni. Di recente, volendo migrare dalla versione 8.0.2 alla recente 8.4.1 ho dovuto litigare un po' per fargli digerire il fatto che sullo stesso server devono coesistere database LATIN1, LATIN9 e UTF-8. Con l'ultima versione, PostreSQL, è diventato infatti un po' più rigoroso nella gestione dei locale senza però documentare in maniera opportuna la cosa. La documentazione ufficiale non va oltre qualche esempio e quindi ho dovuto andare un po' per tentativi, e riuscire a creare i dabatase con encoding voluto e il locale opportuno (it_IT).

Continue Reading »

Venerdi’ 20 Novembre 2009 si terrà a Bologna il sesto Italian Agile Day. Si tratta di una conferenza gratuita di un giorno dedicata alle metodologie Agili per lo sviluppo e la gestione dei progetti software rivolta agli sviluppatori, project leaders, IT managers, tester, architetti e coach che hanno esperienze da condividere o che iniziano solo ora ad interessarsi a queste tematiche. La giornata ha come obiettivo la conoscenza pratica, le esperienze sul campo e un attivo coinvolgimento di tutti i partecipanti. L’accesso è libero previa registrazione, i posti sono limitati. L’evento, per la quarta volta consecutiva, si auto-finanzierà.

Oggi, tornato a casa, mi sono accorto che il mio prezioso Time Capsule era spento, subito ho pensato che uno dei miei figli avesse staccato la spina sotto il tavolo, ma la spina era attaccata. Poi ho dato colpa al cavetto di alimentazione, ma usandone uno diverso il Time Capsule ha continuato a non accendersi.

Rassegnato a portarlo a far riparare mi metto a cercare la fattura di acquisto e, trovandola, mi accorgo di possedere il mio Time Capsule da soli 18 mesi e la garanzia, in Italia, dovrebbe durare 24. L'acquisto l'ho fatto direttamente sul sito della Apple e quindi mi metto a cercare i termini di garanzia sul loro sito. Poi vado su Google e invece dell'informazione che cerco trovo il seguente articolo:

Time Capsule, viaggiare nel tempo… fino a 18 mesi

Continuando a cercare trovo che non solo non sono solo ad avere un Time Capsule morto a 18 mesi di vita, ma siamo in tanti e per trovare compagni di sventura basta cercare su google: time capsule 18 month.

Il link più bello è quello di un sito dove si può registrare la morte del proprio Time Capsule: The Apple Time Capsule Memorial Register. Si può registrare il proprio Time Capsule dichiarando il giorno di acquisto e il giorno della morte... curioso che la media di vita dei Time Caspule registrati (attualmente 416) sia di 17 mesi e 4 giorni.

Domani andrò nel più vicino centro di assistenza Apple per elemosinare una riparazione in garanzia... se non me l'accorderanno, penso tirerò fuori il mio Dremel e seguirò una delle seguenti guide per la sostituzione fai-da-te dell'alimentatore:

Aggiornamento (4 novembre 2009)
Dopo appena 8gg lavorativi il centro d'assistenza Apple al quale mi sono rivolto mi ha chiamato dicendomi che aveva il mio Time Capsule. In realtà me ne ha dato uno nuovo, avrei preferito se avessero cambiato la sola alimentazione recuperando così i vecchi backup, ma mi è stato detto che la cosa non era possibile.
Nel darmelo mi è stato specificato che il nuovo Time Capsule non era praticamente coperto da garanzia poiché si fa sempre riferimento alla data di acquisto di quello che è stato sostituito. La cosa è normale, visto che non ho pagato alcuna riparazione, ma lo zelo con il quale mi è stata precisata la cosa mi ha messo un po' di dubbi: quanto durerà?

Con un po' di meraviglia scopro che per qualche problema legale i DRM di Adobe e della Mobipocket non possono essere implementati sullo stesso eBook reader. Così viene sostenuto, recentemente, da molte case produttrici di eBook reader con tecnologia eInk.

Possiedo da qualche tempo un BeBook che, come ho già scritto, è un ottimo lettore di eBook che, come molti suoi simili (CyBook, Handlin V3, EZReader, etc), legge eBook in formato Mobipocket con e senza DRM. Da poco tempo, per lui e per molti suoi simili, le varie case produttrici stanno rilasciando dei nuovi firmware in grado di leggere eBook in formato ePub e PDF con il DRM di Adobe. La lettura di questi ultimi formati senza DRM è già possibile, ma è evidente che poter trasformare il proprio lettore in un device in grado di gestire il DRM di Adobe è un notevole passo in avanti.

Se però da un parte si fa un passo in avanti, dall'altra viene fatto un notevole passo indietro poiché a tutti questi lettori, con i nuovi firmware, viene tolta la capacità di leggere eBook in formato Mobipocket con DRM! Unica soluzione proposta per poter continuare a leggere i propri libri acquistati in tale formato è mantenere il vecchio firmware, oppure cambiare il firmware in base al DRM che si deve usare... comodo!

Questo atteggiamento mi sembra molto riprovevole nei confronti di utenti che hanno acquistato un oggetto privo di qualsiasi legame con le aziende produttrici dei contenuti (a differenza di chi ha acquistato un kindle, per esempio). Non si capisce poi quali possano essere questi problemi legali visto che la convivenza di software per la lettura di formati Mobipocket e PDF con e senza DRM convivono tranquillamente e giustamente su quasi ogni sistema operativo. A me sembra tanto una imposizione di Adobe, che per paura di perdere il treno (il secondo per nella fattispecie), prova ad imporre a questi piccoli produttori il suo DRM in alternativa a quello della Mobipocket già usato da Amazon.

Mi chiedo se non ci si possa in qualche modo organizzare per sottoporre all'attenzione di queste aziende il disappunto degli loro utenti. Per il momento ho aperto una richiesta di spegazioni nel forum di supporto per il BeBook, chi si vuole accodare o volesse proporre altre strade, è il benvenuto!

Aggiornamento (11 agosto 2009)
Dalle risposte che mi sono state date sul forum di supporto del BeBook non si tratta di problemi legali, ma di problemi di licenza. In particolare, differentemente rispetto a quanto avevo supposto in un primo momento, i "cattivi" sono quelli di Amazon che forniscono la possibilità di usare il loro DRM su Mobipocket in licenza solo su lettori che non hanno altri software di DRM al loro interno.

This article is to make a simple example on how you can manage SOAP Messages with Attachements in PHP and, in particular, I'll describe how to use the PEAR::SOAP package to transmit files associated to a SOAP message as attachments in their native format in a multipart MIME structure for transport (SOAP Messages with Attachments specifications).

Even if the PEAR::SOAP package is not yet considered stable and even if it lacks completely of documentation, the use of it is the only way I found to solve this problem. Nor the standard SOAP PHP5 implementation, nor the Zend_Soap package in the Zend Framework provides any way to manage attachments to SOAP messages.

Continue Reading »

Older Posts »

Creative Commons Attribution 3.0 Unported
Creative Commons Attribution 3.0 Unported