Passa ai contenuti principali

Post

Visualizzazione dei post da 2014

Aggiungere una regola di route statico in Windows 7

Lo so che vi domanderete cosa diavolo ci faccia con un Windows sotto la tastiera ma ultimamente per lavoro mi è capitato di utilizzare via RDP una macchina con Windows 7 per programmare. La rete interna accede tramite un gateway specifico alla rete di un cliente e per questo ho dovuto impostare una regola di route con questo semplice comando (ovviamente gli indirzzi sono immaginari) dal prompt dei comandi:

route add 192.168.5.0 mask 255.255.255.0 172.16.18.5

Se volete rendere permanente la regola la poptete salvare appendendo alla fine /p

Unsupported major.minor version

Il post di oggi è un tip sul compilatore Java. Se provate ad eseguire un programma compilato con una versione di Java superiore a quella installata nel vostro sistema operativo o se nell'IDE non avete impostata la giusta compliance allora vi ritroverete con il seguente errore:

Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) at java.net.URLClassLoader.access$000(URLClassLoader.java:73) at java.net.URLClassLoader$1.run(URLClassLoader.java:212) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassL…

Eclipse: riparare un workspace corrotto

Stressando l'IDE o a causa di un crash del sistema capita di ritrovarsi con un workspace di Eclipse corrotto e con il seguente messaggio di errore all'avvio:

!MESSAGE The workspace exited with unsaved changes in the previous session;
refreshing workspace to recover changes

Per risolvere il problema senza dover ricreare il workspace è possibile provare prima alcune soluzioni indipendenti:

Rimuovere il file .snap dalla cartella [workspace]\.metadata\.plugins\org.eclipse.core.resources e riavviare eclipseRimuovere la cartella [workspace]\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes e riavviare eclipseRimuovere la cartella [workspace]\.metadata\.plugins\org.eclipse.ui.workbench e riavviare eclipse
Links
http://www.lazylab.org/197/eclipse/eclipse-hanging-on-startup-repair-corrupt-workspace/
http://stackoverflow.com/questions/207843/how-do-i-prevent-eclipse-from-hanging-on-startup

RaspberryPi: Controllare il desktop da remoto con VNC

Premessa
A volte può essere utile avere l'accesso da remoto ad un desktop grafico sul nostro raspberrypi. Il metodo più diffuso è quello di installare un server VNC e collegarsi poi con un client da un altro computer. Per il raspberrypi possiamo scegliere tra due strade a seconda dell'utilizzo che se ne vuole fare:

Installare TightVNC Server: crea una sessione diversa per ogni connessione non cifrataInstallare x11vnc: permette di comandare il desktop dell'utente corrente sul raspberrypi
Tra i due metodi ho preferito il secondo visto che il mio raspi è collegato direttamente ad un televisore CRT. In questo modo posso navigare in internet su schermo grande direttamente dal tablet comodamente seduto sul divano. Unica nota negativa è che questo meccanismo non funziona per pilotare XBMC, per il quale è meglio utilizzare il client per android per esempio.

Installare TightVNC Server
1. Da linea di comando eseguire
sudo apt-get install tightvncserver
2. Avviare il server con il coman…

RaspberryPi: configurare un muletto aMule

Premessa
Il progetto di oggi legato al RaspberryPi è quello di configurarlo come muletto. Per comodità ho comprato una pendrive da 32GB collegata al raspi da utilizzare come disco esterno autoalimentato.
L'idea è quella di utilizzare il client GNU\Linux su un'altra macchina per pilotare il demone di aMule utilizzando aMule Remote GUI. In rete spesso si trovano guide per configurare l'interfaccia aMule Web che sconsiglio visto che dagli stessi sviluppatori è ritenuta instabile.



Collegare il Raspberry Pi ad un hard disk o pendrive USB
Questa fase preparatoria ha lo scopo di avere un sistema che riconosca ad ogni avvio la presenza della pendrive e che la monti in una posizione stabile nel tempo. Per ottenere questo risultato è necessario modificare la tabella delle partizioni. Quando GNU\Linux riconosce un drive USB crea un file nella cartella /dev. Per avere un elenco dei drive caricati basta eseguire da linea di comando

sudo fdisk -l

confrontando le dimensioni dei dischi e il…

RaspberryPi: configurare l'uscita RCA video

Premessa
Questa settimana vediamo come configurare il raspi per mostrare l'uscita video sul cavo RCA. Disponendo di una televisione a tubo catodico questo è l'unico metodo per godermi il mio XBMC box e trasformare una vecchia TV Grundig Cinaro in una smartTV.
Il RaspberryPi non ha un BIOS convenzionale e sfrutta alcuni file presenti nella scheda SD in posizioni convenzionali per eseguire il bootstrap del sistema. Tutta la configurazione tipica di un BIOS è presente nel file /boot/config.txt nella partizione boot. Questo file viene letto dalla GPU prima che il processore ARM sia inizializzato.



Configurazione
La configurazione base è impostata dai parametri sdtv_mode e sdtv_aspect. La TV che ho sottomano come da libretto di istruzioni è un televisore per il sistema europeo PAL e in formato 16:9. Nella pagina RPiconfig è possibile trovare tutte le possibili modalità ed impostazioni relative alle televisioni. Nel mio caso il sistema PAL viene impostato da sdtv_mode=2 e la modalità …

Blogger + SyntaxHighligther + Bootstrap

Premessa
Come avrete notato da qualche settimana ho aggiornato il layout del blog. Questo nuovo layout è dinamico e basato sul classico Bootstrap. Da anni uso il plugin Javascript di Alex Gorbatche, SyntaxHighlighter per poter renderizzare il codice sorgente. E' un ottimo strumento che si adatta bene anche alla piattaforma Blogger di Google. Peccato che il mix dei tre componenti: Blogger + SyntaxHighlighter + Bootstrap non vadano molto d'accordo. Sembra infatti che il contenuto del post sia caricato successivamente al Javascript.

Workaround parziale
L'idea di fondo per garantire il funzionamento dei vari componenti è quello di ritardare il rendering del codice sorgente contenuto nei post. La soluzione non è certo delle più eleganti visto che si introduce un ritardo programmatico e cementato nel codice ma per adesso è la soluzione più indolore e facile che abbia trovato.

1. Aggiungere i CSS di SyntaxHighlighter nell'head del documento:

< link href='http://alexgorba…

RaspberryPi: Abilitare l'audio analogico

Introduzione
Il mio raspi è collegato ad una vecchia TV CRT che ho convertito in una smartTV. RaspberryPi infatti è un ottimo prodotto per configurare un media center con connessione ad internet ed altre amenità. Se usate una vecchia TV come nel mio cavo potrebbe interessarvi come abilitare l'uscita analogica per l'audio, il jack da 3,5 mm per intenderci. Per fare ciò dobbiamo assicurarci di avere i moduli giusti del kernel caricati e configurare il raspi ad utilizzare la giusta uscita audio, infatti di default utilizza la porta HDMI.

Controllo della presenza del modulo snd_bcm2835
1 Per controllare che il modulo giusto sia presente da linea di comando eseguire

sudo lsmod | grep snd_bcm2835

2 Se non vedete alcun output vuol dire che il modulo non è ancora caricato altrimenti potete passare al prossimo paragrafo.
3 Proviamo a caricare  il modulo con il seguente comando da terminale

sudo modprobe snd_bcm2835

Se l'output del comando è una cosa del genere

FATAL: Module snd_bcm2835…

RaspberryPi: Il miglior case fatto in casa con i LEGO

Come sapete dal mio precedente articolo, ho comprato un Raspberry Pi. Cercando in rete ho trovato questo semplice tutorial, scritto da una ragazzina di 12 anni, Biz che spiega come creare un case per il raspi con dei mattoncini LEGO.
Vista la mia infanzia passata a costruire e ricostruire astronavi e macchine con i LEGO come potevo esimermi da non cimentarmi in tale opera?

Links
Tutorial http://www.raspberrypi.org/bizs-lego-case-the-borreaton-scouts-hit-germany/
LEGO design Tutorial http://www.thedailybrick.co.uk/instructions/Building%20Instructions%20[Raspberry%20Pi%202].html
Kit acquistabile http://www.thedailybrick.co.uk/lego-sets/custom/lego-custom-raspberry-pi-case-1.html

Enhancement
Se volete dissipare un po meglio il calore generato dal raspi potete utilizzare i componenti LEGO Technics, visto che i pezzi sono forati e che quindi permettono una migliore areazione.


RaspberryPi + XBMC: un mediacenter per tutti

Introduzione
Da un paio di mesi ho acquistato un Raspberry Pi. Ho una vecchia TV CRT che mi ha passato mia sorella ed ho pensato bene di farla diventare con un costo modesto una vera smartTV con connessione ad Internet e media center. Nei prossimi articoli scriverò le mie avventure con questo bel giocattolino. La puntata di oggi è riservata a XBMC, un media center completo e open source.
La distribuzione su cui installeremo XBMC è Raspbian.

Premessa
XBMC non è disponibile nei repository ufficiali di Raspbian quindi per installarlo ci sono essenzialmente due strade: la prima che non seguiremo è quella di compilarsi il pacchetto da soli; qui trovate una guida. L'altra alternativa è quella di sfruttare un pacchetto già compilato da qualche volontario per noi.

Installazione
Micheal Gorven, ha creato un repository personale per facilitarci la vita nell'intallazione di XBMC. Vediamo come sfruttarlo.
1. Creare un entry nelle liste dei sorgenti disponibili per Raspbian. Per prima cosa cr…

Ubuntu: Abilitare il plugin Java in Firefox e Chrome

Introduzione
In questo breve articolo vedremo come abilitare il plugin Java per i due browser più famosi in ambiente linux: Chrome e Firefox.

Premessa
Non è oggetto di questo post l'installazione di Java su un sistema GNU/Linux.

Google Chrome
1. Da terminale diventare utente root con il sequente comando:
sudo -s
2. Posizionarsi sulla directory dei plugins con il comando:
cd /opt/google/chrome/plugins
2.1 Se non è disponibile creare la directory e spostarsi in essa con i due comandi:
mkdir -p /opt/google/chrome/plugins
cd /opt/google/chrome/plugins
3. Creare un collegamento simbolico:
ln -s [percorso della jre]/libnpjp2.so
nel mio caso il percorso della jre è /opt/jdk1.7.0_45/jre/lib/i386
4. Riavviare il browser

Mozilla Firefox
1. Da terminale diventare utente root con il sequente comando:
sudo -s
2. Posizionarsi sulla directory dei plugins con il comando:
cd /usr/lib/mozilla/plugins
2.1 Se non è disponibile creare la directory e spostarsi in essa con i due comandi:
mkdir -p /usr/lib/mozilla/…

Groovy CliBuilder: valori multipli per singolo argomento

Premessa
Sono stato coinvolto ultimamente in un piccolo progetto scritto in groovy e per la prima volta ho potuto provare i vantaggi della classe CliBuilder di Groovy, un builder che si basa sulla libreria di Apache commons-cli. Spesso ci capita di scrivere delle piccole applicazioni al volo e per necessità di tempo evitiamo di scrivere la parte front-end sin da subito.
Per provare la bontà della logica scritta si può pensare di sfruttare la cara e vecchia linea di comando. Ecco che Groovy mette a disposizione un builder per poter scrivere in modo agile un'interfaccia utente da linea di comando.
In questo articolo non tratterò tutti i casi di utilizzo di CliBuilder anche perché è ben documentato in rete, bensì parlerò del caso specifico di valori multipli per singolo argomento.

Vantaggi di CliBuilder

Non ci dobbiamo preoccupare noi del parsing di String[] args del metodo main della nostra classe di avvioLa mappatura dei flag delle opzioni avviene per configurazione in maniera chiara…

Android USB Tethering + Debian 7

Connettersi ad internet via USB
Sfruttare la connessione internet del cellulare con una Debian GNU/Linux è veramente facile. Solitamente preferisco questo approccio a quello del hotspot WiFi perchè permette di essere più sicuri e di ridurre il consumo della batteria del cellulare.

Nota iniziale
Se volete passare da una connessione via ethernet ad una via USB tethering possono tornare utili questi due comandi che rispettivamente abilitano e disabilitano la rete ethernet sul device eth0
sudo ifconfig eth0 down 
sudo ifconfig eth0 up

Procedura
1. Collegare il cellulare al computer con il cavo USB

2. Abilitare il cellulare in modalità USB tethering. Solitamente si trova nella sezione network and wireless delle impostazioni

3. Farsi assegnare un indirizzo IP con il comando da terminale
sudo dhclient usb0 -v

4. Controllare il risultato
sudo iwconfig

4.Nota: Se iwconfig non è installato è possibile trovarlo nel pacchetto wireless-tools. Per installare il pacchetto da terminale eseguire il segue…