Problema nell’avvio di Eclipse
Se anche a voi dovesse succedere che improvvisamente Eclipse non si avvia più e il messaggio di errore riportato nel log è il seguente:
org.eclipse.swt.SWTError: XPCOM error
c’è una soluzione rapida ed indolore. Tutto ciò che vi basta fare è installare la versione 1.9.1 di xulrunner ed editare il file eclipse.ini aggiungendo in coda la seguente riga:
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9.1/xulrunner
Provate [...]
Convertire da amr in mp3
Registrando con il mio nokia 5800XM mi sono accorto che il file generato è .amr . Francamente non avevo mai sentito questo formato e così mi sono chiesto “esisterà questa volta il classico comando per convertirlo?” La risposta è ovviamente si e la soluzione è il sempre presente ffmpeg. La conversione, come spesso accade in [...]
Bluetooth su Debian Sid + KDE 4
Con l’aggiornamento di KDE da 3 a 4 su Debian Sid (unstable) il bluetooth sul mio PC non funzionava più correttamente. Il pc non veniva rilevato, non riuscivo a inviare file nè a riceverne. Ciò perchè non è presente nei repository il pacchetto per KDE 4 di Kbluetooth, che è l’applicazione KDE che serve a [...]
Ubuntu Netbook Remix su Acer Aspire
Come regalo per la laurea ho ricevuto dai miei cari amici un Netbook Acer Aspire One D150. Il primo passo che ho compiuto una volta acceso è stato ovviamente quello di installare Linux, visto che sopra c’era l’orrido Windows XP. In un primo momento mi sono orientato sulla distribuzione Linux4One, basata su Ubuntu 8.04 e [...]
Nokia N78 come modem su Linux
Stamattina in prospettiva vacanza della prox settimana, ho attivato la promozione Internet Card di Vodafone che permette di potersi collegare ad internet tramite PC utilizzando il cell come modem. Ho subito effettuato una prova per verificare il corretto funzionamento ed è tutto ok. Vediamo di seguito come far rilevare il modem del cellulare via bluetooth [...]
Unire due pdf
Per unire due pdf in Linux come spesso accade viene in soccorso un piccolo grande tool a riga di comando: pdftk. Una volta scaricato il pacchetto presente nei repository di molte distro, per unire due pdf il comando da dare è:
pdftk doc1.pdf doc2.pdf cat output nuovo.pdf
In questo modo il file nuovo.pdf sarà composto dal doc1 [...]
JMF in un applet
Qualche settimana fa lavorando alla mia tesi sono incappato in un problema che mi ha tenuto fermo per qualche giorno. Cercando in giro per la rete mi sono accorto che non è un problema di pochi ma di soluzioni praticamente non si vede traccia. Io dopo vari tentativi sono riuscito a risolvere. Vediamo di che si tratta.
JMF (Java Media Framework) è appunto un framework che permette di integrare vari media (per es. video e audio, ma anche streaming rtp) in applicazioni Java. Il primo problema che si incontra nell’utilizzo di JMF sta nel fatto che il supporto è stato abbandonato dalla Sun anni orsono e dunque JMF si presenta come un utile supporto per applicazioni multimediali ma allo stesso tempo è estremamente vecchio poichè i codec multimediali supportati risalgono all’età della pietra. Come spesso accade in questi casi è la comunità open source a farsi carico del problema. Infatti in giro si trovano varie soluzioni ed estensioni che permettono di utilizzare JMF con librerie native, per es. di utilizzare JMF con ffmpeg, ossia di essere in grado di leggere i più comuni formati e codec multimediali. Per il mio progetto la scelta è caduta su FOBS ma si potrebbe utilizzare tranquillamente anche FMJ. Una volta aggiunti i codec giusti a JMF mediante il JMFRegistry viene modificato il file jmf.properties che conterrà le informazioni per caricare i giusti codec. Bene, una volta fatto ciò non hanno più problemi ad utilizzare JMF con qualsivoglia media.
La mia necessità era di integrare il player che sto realizzando in un applet, all’interno di una pagina web. Ora, utilizzando Eclipse e avviando l’applet da lì non avevo nessun tipo di problema, tutto funzionava correttamente. Nel momento in cui però andavo ad integrare il codice dell’applet in una pagina html non funzionava una mazza. Perchè? Perchè l’applet non riusciva a caricare il giusto file jmf.properties e ne creava uno di default con i codec base di JMF. Come fare a far caricare la giusta configurazione? Dopo giorni, grazie anche e soprattutto all’aiuto e alla disponibilità di Werner, sono arrivato al dunque. Vediamo come. Come prima cosa occorre posizionare il file jmf.properties nello stesso path del file .class dell’applet. Dopodichè si può utilizzare la seguente classe,di cui riporto per intero il codice, per inizializzare correttamente JMF:
/* * Copyright 2009 Markus Koller * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;import java.io.OptionalDataException;import java.net.URL;import java.util.HashMap;import java.util.Map;
import com.sun.media.util.Registry;
/** * Helps initializing JMF from a JMF.properties file not on the root of the classpath. * This also works for webstart! * @author Markus Koller */public class JMFInitializer { public static void initJMF(URL url) throws IOException { InputStream in = null; try { in = url.openStream(); if (in == null) { throw new IllegalArgumentException("No such jmf properties file: " + url); } readJMFRegistry(in); } finally { if (in != null) { try { in.close(); } catch (IOException e) {} } } }
private static void readJMFRegistry(InputStream ris) throws IOException { ObjectInputStream ois = null; try { ois = new ObjectInputStream(ris); int tableSize = ois.readInt(); int version = ois.readInt(); if (version > 200) { System.err.println("Version number mismatch. There could be errors in reading the registry"); } HashMap<String, Object> hash = new HashMap<String, Object>(); for (int i = 0; i < tableSize; i++) { String key = ois.readUTF(); try { Object value = ois.readObject(); hash.put(key, value); } catch (ClassNotFoundException e) { throw new RuntimeException("Class not found for jmf registry entry", e); } catch (OptionalDataException e) { throw new RuntimeException("Invalid jmf properties content", e); } } for (Map.Entry<String, Object> entry : hash.entrySet()) { Registry.set(entry.getKey(), entry.getValue()); } } finally { if (ois != null) { try { ois.close(); } catch (IOException e) {} } } }}
Tale classe va richiamata nell’init() dell’applet prima di creare il player JMF in questo modo:
JMFInitializer.initJMF(this.getClass().getResource("jmf.properties"));
Bene ora l’applet inizializzerà correttamente JMF e caricherà i codec giusti dal file .properties. A questo punto potreste incappare in un altro problema, problema relativo alle restrizioni di sicurezza dell’applet. Infatti c’è da ricordare che un applet gode di restrizioni di sicurezza per evitare che applicazioni malevoli possano commettere atti impuri. Per evitare tali restrizioni è buona norma quella di firmare digitalmente l’applet. Per sapere come fare vi rimando a questa guida.
Se avete problemi non esitate a contattarmi e per quel che posso proverò a darvi una mano.
Convertire immagini in pdf
Nonostante usi Linux da ormai diversi anni ci sono sempre nuove piccole scoperte che mi sorprendono e mi entusiasmano come se fosse un mondo completamente nuovo. E quasi sempre queste meraviglie derivano da tool a riga di comando che permettono di fare in un amen operazioni che solitamente richiedono tempo, soprattutto per cercare l’applicazione che le svolge.
Ieri sera ho scoperto il comando convert del pacchetto imagemagick che permette di creare un pdf da un’immagine o da una serie di immagini. Supponiamo di avere 3 immagini da voler convertire in pdf, posizionando un’immagine per ogni pagina. Come fare? Niente di più semplice:
convert img1.jpg img2.jpg img3.jpg doc.pdf
Fine.
CAPTCHA in Drupal
Uno dei problemi che affligge chiunque possieda un sito web è quello di difendersi dallo spam a qualsiasi livello, dai commenti agli utenti fittizi, alle email mandate ad capocchiam. E uno degli strumenti più in voga per difendersi è quello di utilizzare il test CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart” – Test di Turing pubblico e completamente automatico per distinguere computer e umani). Praticamente quei numeri che bisogna inserire solitamente in un form, ormai praticamente su qualunque pagina web. Vediamo come poter integrare questo sistema in Drupal.
A tale scopo c’è bisogno di due moduli: il modulo captcha e il modulo textimage. Il primo serve ad aggiungere “l’infrastruttura” per il test ed include un test matematico, il secondo invece aggiunge il più classico test del testo da trascrivere. Dopo aver scaricato i due moduli e averli decompressi della cartella modules di Drupal, bisogna abilitarli tramite il pannello Amministrazione->Moduli. Una volta abilitati bisogna configurarli. Bisogna andare in Amministrazione->Gestione Utente->Captcha Qui è possibile scegliere per quale form abilitare captcha e che tipo di captcha utilizzare. Per usare il test della trascrizione del testo bisogna scegliere image altrimenti per il test matematico bisogna scegliere Math. Andando poi sulla scheda Image CAPTCHA è possibile configurare come deve essere visualizzata l’immagine, il colore del testo, la distorsione e così via. Per poter utilizzare font diversi da quelli di base bisogna aggiungere il file di font .ttf nella cartella indicata. A questo punto CAPTCHA è configurato. Ricordate che affinchè gli utenti visualizzino il test c’è bisogno che nella pagina del controllo degli accessi (Amministrazione->Gestione Utenti->Controllo accessi) non sia spuntata l’opzione skip CAPTCHA relativa al modulo CAPTCHA.
Il risultato è quello che vedete se volete commentare questo post. E questo è quanto.
Come tagliare un video
In passato vi ho parlato di come tramite mencoder, con un semplice comando è possibile aggiungere i sottotitoli ad un file avi, o di come è possibile, sempre da riga di comando, tagliare solo una parte di un file audio. Oggi vediamo come, utilizzando mencoder, sia possibile tagliare un file video. Tutto ciò che vi serve è appunto mencoder che potete installare con il canonico
apt-get install mencoder
A questo punto il comando da dare è:
mencoder -endpos hh:mm:ss -ovc copy -oac copy file.avi -o nuovofile.avi
in questo modo il taglio creato andrà dall’inizio del video fino al tempo indicato e sarà creato il nuovo file che lo conterrà.
Per tagliare invece un video non dall’inizio il comando da dare è:
mencoder -ss hh:mm:ss -endpos hh:mm:ss -ovc copy -oac copy file.avi -o filenuovo.avi
in questo modo il taglio creato sarà formato dal video contenuto tra i due tempi indicati.
keep looking »![[Google]]( http://s3ldon.netsons.org/wp-content/plugins/easy-adsenser/google-light.gif)

