giovedì 29 ottobre 2009

Handler di Eclipse RCP
Classicamente, la definizione di un command per un plugin RCP prevede una classe handler di default, che definisca il comportamento dell'applicazione quando viene attivato il command.

id="it.sinossi.SinossiCommand"
categoryid="it.sinossi.command.SinossiCommandsCategory"
defaulthandler="it.sinossi.handlers.DefaultSinossiHandler"
name="SinossiCommand">



In questo caso, quando viene attivato il SinossiCommand, viene automaticamente eseguito il metodo execute(ExecutionEvent evt) della classe DefaultSinossiHandler.

Supponiamo ora che un plugin esterno abbia la necessità di personalizzare il comportamento dell'applicazione all'attivazione del SinossiCommand, cioè di definire un handler custom per tale command.
E' sufficiente inserire nel plugin.xml del progetto esterno un'extension di org.eclipse.ui.handler come la seguente:


commandid="it.sinossi.command.SinossiCommandsCategory">









L'handler CustomSinossiHandler viene utilizzato al posto del default handler se l'activePartId corrisponde a quello della vista SinossiView. Infatti, la porzione di xml compresa all'interno del tag "activeWhen" è una core expressione e permette di definire quali sono le condizioni in cui l'handler è attivato. Analogamente, si può definire quando l'handler è abilitato definendo una core expression all'interno del tag "enableWhen".
Per saperne di più..
Help - Eclipse SDK - Handlers
Eclipse wiki - Command Core Expressions

venerdì 23 ottobre 2009

Fare il debug dei test avviati con maven

Nel caso in cui si presenti la necessità di fare il debug di test avviati tramite maven è sufficiente aggiungere il flag -Dmaven.surefire.debug.
Da console:
mvn test -Dmaven.surefire.debug
questo fa in modo che i test, subito dopo l'avvio, si mettano in pausa in attesa che un debugger remoto si colleghi alla porta 5005 (valore di default eventualmente modificabile).

Se volessimo connettere Eclipse in debug non dovremmo fare altro che creare una nuova Debug Configuration (menù Run > Debug Configuration...), selezionare il tipo "Remote Java Application" e impostare nel campo Port il valore 5005. Cliccando su Debug, Eclipse si collegherà ai test, precedentemente entrati in pausa, facendoli immediatamente ripartire. L'esecuzione si fermerà su tutti breakpoint che avremo impostato permettendo il normale debug all'interno di Eclipse.

Vedi anche:
Maven Surefire Plugin > Examples > Debugging Tests

Mappa caratteri in Linux

Come in windows esiste il comando per aprire la Mappa Caratteri (charmap), anche in Linux esiste un comando equivalente che apre la finestra della mappa caratteri:
gucharmap.

Se si vuole visualizzare l'elenco dei caratteri speciali direttamente da console senza utilizzare l'ambiente grafico si può digitare il comando:
man ascii.

How to configure a port-forwarding in Virtualbox

I want that the oracle installed in to my virtualbox VM can be accessed from outsite.
The idea is to mount the port 1521 in to 127.0.0.1

You have to execute the following command on console when the VM is stopped:
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/Protocol" TCP
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/HostPort" 1521
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/GuestPort" 1521

To check if all is fine:
netstat -na | grep 1521
You'll see that the 1521 on your host (127.0.0.1) is listening

martedì 13 ottobre 2009

Come inserire caratteri speciali in Linux

A volte capita di dover scrivere dei caratteri particolari non presenti nel layout della nostra tastiera. Una soluzione un po' artigianale potrebbe essere quella di andare a copiare il carattere da qualche testo in cui è presente per poi incollarlo dove ci serve.

Ma Gnome ci viene incontro mettendo a disposizione un comodo shortcut: tenendo premuti CTRL+SHIFT e digitando la lettera "u" seguita dal codice Unicode del carattere desiderato, al rilascio di CTRL e SHIFT il carattare magicamente(!) apparirà nel nostro testo.

Ad esempio il carattere tilde "~", non presente nelle tastiere con layout italiano, può essere inserito con CTRL+SHIFT+u7e.

Vedi anche:
Wikipedia - List of Unicode characters

giovedì 8 ottobre 2009

StackLayout

Lo StackLayout appartiene a eclipse.swt.widgets.Layout e serve per sovrapporre elementi grafici, consentendo di switchare tra essi agevolmente portando in primo piano l'oggetto che si desidera.

Un esempio molto semplice è il seguente. Ho un Composite container che contiene due altri Composite compositeOne e compositeTwo, solo uno dei due voglio che sia in primo piano:

Composite container = new Composite(compositeParent, SWT.NONE);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
final StackLayout stackLayout = new StackLayout();
container.setLayout(stackLayout);

Composite compositeOne = new Composite(container, SWT.NONE);
compositeOne.setLayout(new FillLayout());

Composite compositeTwo = new Composite(container, SWT.NONE);
compositeTwo.setLayout(new FillLayout());

// se si vuole rendere visibile il compositeOne
stackLayout.topControl = compositeOne;
container.layout();

// se si vuole rendere visibile il compositeTwo
stackLayout.topControl = compositeTwo;
container.layout();


Grazie al set topControl dello stackLayout e richiamando il metodo layout() ottengo lo switch tra i due oggetti.

Howto open a Shell in a folder

Follow this 2 steps:

1) in the install/upgrade menu of Cygwin select the chere package under the “Shells” category

2) inside a shell exec the command chere -i

Here details and screenshots.

giovedì 1 ottobre 2009

Robotica a basso costo, basata su Lego Mindstorms

La famosa fabbrica di giocatoli lego già da tempo non limita più il suo giro di affari alle semplici costruzioni per bambini.
Una nuova tecnologia che va sempre perfezionandosi, sta trasformando la Lego, in una fabbrica di robot di consumo a basso costo.
Sul sito http://mindstorms.lego.com pottete vedere alcuni esempi delle nuove creazioni Lego.

Attraverso un processore denominato "Mindstorms NXT" (32 bit Atmel AT91SAM7S256 a 48 MHz) programmabile con un linguaggio molto simile al C e una una vastissima serie di sensori( termici, acustici,tattili, di luce, etc....) si possono facilmente assemblare e programmare a nostro piacimento qualsiasi tipo di automa.
unico vincolo stingente la scarsa potenza dei servomotori messi a disposizione dalla Lego.
Su youtube sono decine i filmati che riprendono alcuni dei "robot Lego" nelle Più disparate "faccende", è famoso il filmato in cui un robot lego in pochissimo tempo riesce a risolvere il cubo di rubik.