468x60

giovedì 28 gennaio 2010

Refresh task asincrono in Netbeans Java Desktop Applications

Vediamo come creare un Task Asincrono per aggiornare una tabella di un'applicazione Java Desktop Database Application, senza avere problemi di binding, mediante Netbeans.

Utilizzare il codice seguente ed assegnare l'Action al pulsante "Refresh":

@Action
public Task refresh() {
return new RefreshTask(MyApp.getApplication());
}

private class RefreshTask extends Task {

RefreshTask(org.jdesktop.application.Application app) {
super(app);
}

@SuppressWarnings("unchecked")
@Override
protected Void doInBackground() {
setProgress(0, 0, 4);
setMessage("Rolling back the current changes...");
setProgress(1, 0, 4);
entityManager.getTransaction().rollback();
setProgress(2, 0, 4);

setMessage("Starting a new transaction...");
entityManager.getTransaction().begin();
setProgress(3, 0, 4);

setMessage("Fetching new data...");
java.util.Collection data = query.getResultList();
for (Object entity : data) {
entityManager.refresh(entity);
}
setProgress(4, 0, 4);

*masterTable.setVisible(false);

list.clear();
list.addAll(data);

return null;
}

@Override
protected void finished() {
setMessage("Done.");
setSaveNeeded(false);

masterTable.setVisible(true);
masterTable.revalidate();
masterTable.repaint();
}
}

mercoledì 27 gennaio 2010

EntityManager e Database Remoto

Sviluppando un'applicazione Java Swing con Netbeans 6.8 e Toplink per la persistenza, la quale si connetteva ad un database MySQL remoto, mi sono accorto che alla chiusura dell'applicazione non venivano chiuse le connessioni al database e che rimanevano attive (risultando come "Sleep", se monitoravo le connessioni attive con MySQL Administrator). Se invece facevo lavorare l'applicazione su un database locale, le connessioni al database venivano tutte chiuse.

Ho provato a modificare il codice Java, facendo eseguire entityManager.flush() e entityManager.close() alla chiusura dell'applicazione, ma le connessioni rimanevano sempre attive...

Ho scoperto che questo problema era dovuto ad un bug di MySQL, infatti non c'è alcun problema nelle versioni da MySQL 5.1.41-community in poi.

Nelle versioni precedenti di MySQL (5.1.39) ho risolto questo problema modificando il file di configurazione my.ini, aggiungendo questo:

wait_timeout = 15

venerdì 22 gennaio 2010

Avast Protezione Web

Avast Antivirus è un ottimo antivirus gratuito per uso personale. Vediamo come è possibile configurare la sua Protezione Web, che alcune volte potrebbe bloccare siti web attendibili:

  1. Localizzare l'icona della protezione residente di Avast nella traybar e fare doppio click
  2. Assicurarsi di visualizzare le opzioni avanzate cliccando eventualmente su Dettagli...>>
  3. Individuare nell'elenco dei Provider installati la voce Protezione Web, cliccare
    sull'icona, quindi cliccare sul pulsante Personalizza...
  4. Nella pagina delle opzioni selezionare il tab Di base e inserire nella casella Indirizzi
    ignorati
    i valori degli indirizzi separati da virgola
  5. Premere infine Ok per confermare

giovedì 21 gennaio 2010

URL-encoding in Javascript

Sviluppando applicazioni web può tornare utile la funzione escape() di Javascript per l'URL-encoding.
escape("It's me!") // result: It%27s%20me%21
Buon lavoro!

mercoledì 20 gennaio 2010

Disabilitare chiusura Applicazione con Netbeans

Per disabilitare la chiusura di un'Applicazione Java Desktop sviluppata con Netbeans bisogna aggiungere un ExitListener, creandolo all'interno del metodo startup() creato da Netbeans. Vediamo come:
@Override
protected void startup() {

//Exit Listener
addExitListener(new ExitListener() {

public boolean canExit(EventObject event) {
System.out.println("canExit event occur");
getApplication().getMainFrame().setVisible(false);
return false;
}

public void willExit(EventObject event) {
System.out.println("willExit event occur");
}
});

show(new MyApp(this));
}

lunedì 18 gennaio 2010

Lista server eMule 2010

Ecco la lista dei server sicuri aggiornata al 2010.

Se volete aggiungere i server tramite URL inserite i seguenti indirizzi nel campo Aggiorna server.met da URL:
  • http://gruk.org/server.met
  • http://peerates.net/servers.php
  • http://upd.emule-security.net/server.met

JPA query

Esempio di utilizzo di query JPA:
EntityManagerFactory emf = Persistence.createEntityManagerFactory(
"JPATutorialPU" );
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
try {
Query query = em.createQuery("SELECT i FROM Item i WHERE i.name LIKE :keyword");
query.setParameter("keyword","%"keyword"%");
Item item = (Item)query.getResultList();
String myitem = item.getItem();
} catch (Exception e) {
System.out.println( e.getMessage() );
em.getTransaction().rollback();
} finally {
em.close();
}

Java Properties - salvataggio alla chiusura finestra

Sviluppando applicazioni Java è spesso utile poter salvare su file le impostazioni di configurazione delle applicazioni sviluppate. Per farlo è possibile avvalersi della classe java.util.Properties, con la quale possiamo leggere e scrivere sui file .properties in modo molto semplice.

Nel seguente esempio vediamo come scrivere su un file .properties alla chiusura di una finestra. A tale scopo abbiamo aggiunto un WindowListener:
JFrame frame = main.getFrame();
frame.addWindowListener(new WindowAdapter() {

@Override
public void windowClosing(WindowEvent e) {

Properties properties = new Properties();
try {
properties.setProperty("nome_chiave", "valore");

properties.store(new FileOutputStream("config.properties"),null);
} catch (IOException ex) {
System.err.println(ex);
}

super.windowClosing(e);
}
});

venerdì 15 gennaio 2010

MySQL Workbench - ottimo tool per DB Modeling

MySQL Workbench è uno strumento visuale di database design e modeling per database MySQL; esso integra il disegno, la modellazione, la creazione e l'aggiornamento di database in un unico ambiente di lavoro. È l'evoluzione di DBDesigner 4, sviluppato da FabForce.

Inoltre dalla versione 5.2.6 di MySQL Workbench è stata introdotta la funzionalità di gestione delle istanze server.

Davvero un ottimo tool open source per il database modeling... da provare!

giovedì 14 gennaio 2010

Massimizzare JFrame con Netbeans

Lavorando con il GUI editor di Netbeans si nota l'estrema semplicità e potenza di questo strumento, tuttavia se si desidera avviare l'applicazione con il frame massimizzato bisogna customizzare il codice, nel seguente modo:
FrameView main = new FrameView(this);
final JFrame frame = main.getFrame();
frame.addWindowListener(new WindowAdapter() {

@Override
public void windowOpened(WindowEvent e) {
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(800, 600));
show(main);
Buon lavoro!

martedì 12 gennaio 2010

UML in Netbeans

Attraverso un plugin open source è possibile avere il supporto all'UML in Netbeans. Vediamo come fare per installarlo:
  1. Installare NetBeans IDE 6.8
  2. Aprire il Menu Tools \ Plugins
  3. Aprere il tab Settings
  4. Cliccare Add
  5. Digitare il nome del provider (UML)
  6. In URL copiare ed incollare il seguente indirizzo: http://ea.ddns.com.br:8090/netbeans6.8/UML/catalog.xml
  7. Cliccare OK
  8. Assicurarsi che il plugin UML sia disponibile nella lista Available Plugins
  9. Adesso selezionare il plugin ed installarlo
  10. Il plugin deve essere attivato per poter essere utilizzato
  11. Per attivare il plugin andare nel Menu Tools \ Plugins \ Installed
  12. Attivare User Installed Plugins

sabato 2 gennaio 2010

VMWare Server batch backup script

Ecco uno script batch per effettuare il backup di macchine virtuali VMware Server su Host Windows. La procedura si occupa di eseguire lo spegnimento di una macchina virtuale, copiarla e riavviarla; tutti i passaggi vengono memorizzati all’interno di un file di log. Ammesso che la macchina virtuale possa sopportare un temporaneo downtime, il metodo più sicuro per eseguirne con successo il backup è quello di spegnerla completamente per poi copiarne il disco virtuale (vmdk). Infatti, nel momento in cui le VM sono in esecuzione, VMware memorizza moltissime informazioni all’interno di una memoria virtuale che verrà completamente trasferita sul disco soltanto in fase di spegnimento.

N.B.: la macchina virtuale della quale effettuerete il backup deve eseguire il software VMware Tools.
@echo off
rem --- Variables ---------------------------------
set VMWAREINSTALLPATH=C:\Programmi\VMware\VMware Server
set VMPATH=D:\VirtualMachines\Windows XP Professional
set VMVMX=Windows XP Professional.vmx
set BACKUPDESTINATION=c:\Virtual Machines
set LOGFILE=c:\Virtual Machines\log.txt
rem ---------------------------------------------------

setlocal
set PATH=%PATH%;%VMWAREINSTALLPATH%
set VAR="%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" getstate

echo Starting Backup Procedure on %date% at %time%... > "%LOGFILE%"

:checkvmstatus
echo Checking %VMVMX% VM status... >> "%LOGFILE%"
FOR /F "tokens=3 delims= " %%R IN ('"%VAR%"') DO SET RESULT=%%R
echo %VMVMX% VM status is "%RESULT%"... >> "%LOGFILE%"
if "%RESULT%" EQU "on" goto poweroffvm
if "%RESULT%" EQU "off" goto copyandrestartvm
goto quit

:poweroffvm
echo Stopping %VMVMX% VM... >> "%LOGFILE%"
"%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" stop >> "%LOGFILE%"
rem echo Waiting 60 seconds... >> "%LOGFILE%"
rem sleep -m 60000
goto checkvmstatus

:copyandrestartvm
echo Starting %VMVMX% VM Backup... >> "%LOGFILE%"
xcopy "%VMPATH%"\*.* "%BACKUPDESTINATION%"\*.* /E /C /I /F /H /Y >> "%LOGFILE%"
echo %VMVMX% VM Backup finished... restarting %VMVMX% VM... >> "%LOGFILE%"
"%VMWAREINSTALLPATH%\perl.exe" "%VMWAREINSTALLPATH%\vmware-cmd" "%VMPATH%\%VMVMX%" start >> "%LOGFILE%"
FOR /F "tokens=3 delims= " %%R IN ('"%VAR%"') DO SET RESULT=%%R
echo %VMVMX% VM status is now "%RESULT%"... >> "%LOGFILE%"
goto quit

:quit
echo Quitting Backup Procedure on %date% at %time% ... >> "%LOGFILE%"
exit
Le variabili da impostare sono:

  • set VMWAREINSTALLPATH=C:\Programmi\VMware\VMware Server – la cartella di installazione di VMware Server
  • set VMPATH=D:\VirtualMachines\Windows XP Professional – la cartella in cui si trovano i files della macchina virtuale da copiare
  • set VMVMX=Windows XP Professional.vmx – il nome del file di configurazione (vmx) della macchina virtuale
  • set BACKUPDESTINATION=c:\Virtual Machines – la cartella in cui verranno copiati i dati ovvero la destinazione del backup, può essere anche un percorso di rete UNC
  • set LOGFILE=c:\Virtual Machines\log.txt – il file di log in cui verrà memorizzato lo stato della procedura di backup, può essere anche un percorso di rete UNC

Buon lavoro!

KNIME - Konstanz Information Miner

KNIME è un'ottima piattaforma open source per l'integrazione, il pre-processamento, l'analisi e l'esplorazione dei dati.

Ho utilizzato con successo quest'ottimo tool per alcuni task di data mining. Mi ha molto colpito per la sua semplicità d'utilizzo e la sua capacità di lavorare anche con grandi moli di dati. Davvero da provare...
468x60

Cerca su Google

Cerca nel Blog con Google