8 July 2010, 12:14 am
Versione di Ubuntu che installi, problemi con il Java che trovi. Dopo la deprecazione nella 9.10 del Java 1.5, in Ubuntu / Kubuntu 10.4 i pacchetti java made-in-sun (anche se ora dovremmo dire made-in-oracle) non sono piu’ presenti nei repository di default. Gli unici rimasti sono quelli OpenJDK (openjdk-6-jdk e openjdk-6-jre), che in genere vanno bene, ma a volte hanno problemi di funzionamento con programmi un po’ particolari ed hanno ancora performance lievemente inferiori rispetto alle implementazioni native.
Per poter accedere ai vecchi pacchetti Sun Java 6 (sun-java6-jre, sun-java6-jdk e tutti gli altri), occorre abilitare i repository Partner tra le sorgenti di installazione nel proprio package managar, come documentato in questo post. Oppure, in alternativa, lanciare il comando:
sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”
Fatto questo, una semplice ricerca e installazione dei pacchetti sun-java6-jre oppure sun-java6-jdk e dipendenze varie dovrebbe bastare.
sudo apt-get update
sudo apt-get install sun-java6-jdk
Occorre poi riconfigurare la jdk usata dal sistema. Ottenere prima una lista di quelle esistenti con il comando:
update-java-alternatives -l
e poi impostare quella sun con
sudo update-java-alternatives -s java-6-sun
Altre informazioni molto esaurienti in questo post, compresa l’installazione del java plugin per Firefox.
Continue reading ‘Sun Java JDK 1.6 su Ubuntu/Kubuntu 10.4’ »
1 January 2010, 10:11 pm
android.view.WindowsManager$BadTokenException: Unable to add window — token null is not for an application: questo errore mi e’ capitato mentre, programmando per Android 1.6, stavo provando a creare dei custom dialog seguendo la documentazione ufficiale di Google.
Per risolvere il problema, ahime’, bisogna sostituire nel codice mostrato questa chiamata
Context mContext = getApplicationContext();
Dialog dialog = new Dialog(mContext);
con questo
Dialog dialog = new Dialog(this);
stessa cosa per l’esempio successivo, che usa un AlertDialog.Builder per creare un dialog completamente personalizzato, anche nel titolo, dove occorre sostituire la chiamata
builder = new AlertDialog.Builder(mContext);
con
builder = new AlertDialog.Builder(this);
In pratica, usare il metodo getApplicationContext() non ritorna un oggetto Context che puo’ essere usato per costruire i Dialog, quindi occorre passare direttamente tutta l’Activity.
Continue reading ‘android.view.WindowsManager$BadTokenException’ »
11 February 2009, 9:59 am

L’open source mi appassiona, il mondo mobile lo adoro, la programmazione e’ il mio passatempo preferito: trovare un connubio tra questi elementi sembrerebbe quasi impossibile. Ma basta guardarsi bene intorno e qualcosa di fantastico invece lo si trova: Funambol.
Un’entità tutta strana a partire dall’idea: capitali USA, centro ricerca e sviluppo in Italia, modello di business basato sull’open source applicato al mondo del mobile: il prodotto di punta, infatti, e’ un server capace di offrire funzionalità di posta push e sincronia di email, calendario e contatti praticamente sulla maggior parte dei dispositivi esistenti: Windows Mobile, Symbian, iPhone, iPod, Android, Blackberry e chi piu’ ne ha piu’ ne metta. Il tutto rilasciato sotto licenza AGPL 3.
Ma le stranezze non finiscono qui: mi ha accolto un individuo con il ruolo istituzionale di “community manager”, una figura (ancora) sconosciuta ai piu’, hanno creato e supportano una community di sviluppatori attorno al loro prodotto e sono promotori dei Code Sniper, ovvero moduli software la cui realizzazione viene affidata a volenterosi collaborati esterni, retribuiti per questo loro lavoro. E qui arrivo io.
Attirato da alcuni studi che avevo fatto per lo scraping dei dati dei profili utente sui social network, ho notato come uno dei loro Code Sniper cadesse proprio a pennello. E cosi’ e’ nato AvatarGrabber, un programma che cerca e associa gli avatar ai contatti della propria rubrica, presa ovviamente da un server Funambol.
Continue reading ‘AvatarGrabber: social network scraping, Java e Funambol’ »
11 November 2008, 11:52 pm
Convertire un byte array (byte[]) in un oggetto Image e’ molto semplice:
private Image convertToImage(byte[] source){
Image objImage = new Image(source);
return objImage;
}
Il contrario invece, convertire un oggetto Image in un byte[] non e’ proprio cosi’ immediaito. Ecco lo snippet che uso, che carica direttamente da una URL un’immagine e la memorizza in un byte[]. comodo magari da usare successivamente all’interno degli elementi di una jList.
private byte[] loadImageFromURL(String strUrl){
int intPos;
String strFileExt;
//guess file extension
intPos = strUrl.lastIndexOf(".");
if (intPos >= 0){
strFileExt = strUrl.substring(intPos + 1);
}else{
//assign default jpg extension
strFileExt = "jpg";
}
try {
//load the image from the Internet
ImageIcon objImageIcon = new ImageIcon(new URL(strUrl));
//wait the loading of the image
MediaTracker objMediaTracker = new MediaTracker(lstContacts);
objMediaTracker.addImage(objImageIcon.getImage(), 0);
objMediaTracker.waitForID(0, 5000);
//convert the image
BufferedImage objBI = new BufferedImage(objImageIcon.getIconWidth(), objImageIcon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = objBI.createGraphics();
g2.drawImage(objImageIcon.getImage(), 0, 0, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(objBI, strFileExt, baos);
return baos.toByteArray();
} catch (MalformedURLException ex) {
Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
return null;
} catch (IOException ex) {
Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
return null;
} catch (InterruptedException ex) {
Logger.getLogger(MainForm.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
Continue reading ‘Java: Image conversion to byte[] array’ »