giovedì 29 maggio 2008

Firefox 3 Download Day 2008

0 commenti

Download Day 2008

E' stato rilasciato Firefox 3 RC1 ,e il 5 giugno verra rilasciata la RC2 per correggere i 10 bug individuati, pochi passi mancano alla release finale e firefox punta a stabilire un Guinness dei Primati.Partecipa anche tu, come fare?
Basta scaricare Firefox 3 durante il Download Day. Aderisci al evento.

La data ufficiale del rilascio di Firefox 3 verrà annunciata molto presto su Spread Firefox.


giovedì 15 maggio 2008

FireNES

0 commenti
FireNES un plugin per firefox che ci permettere di giocare nel browser a 2500 giochi di Nintendo senza installare ne emulatore ne rom con pocchi click possimo giocare a qualsiasi gioco che ci ha appassionato. Ce il mitico Super Mario bros , Bubble bobble, Ninja turtle.



Buon divertimento.

lunedì 28 aprile 2008

Crea il tuo avatar

0 commenti
FaceYourManga un sito dove possiamo creare il nostro avatar in stile manga in pocchi passi attraverso flash. Ci sono molte combinazioni possibili con cui sbizzarirsi e arrivare a una rappresentazione quasi realistica di se stessi.

Divertitevi a creare il vostro avatar.



Blogged with the Flock Browser

giovedì 24 aprile 2008

vNES emulatore Nintendo su web

0 commenti
VirtualNES.com è il più grande sito web di vNES su Internet. vNES è un emulatore Nintendo programmato in Java. Si puo gocare co nel browser su qualsiasi sistema operativo. C'è una grande varieta di giochi tra cui scegliere. Una volta scelto il gioco si aprira una pagina con una applet con il gioco con qui possiamo giocare quando vogliamo.
Blogged with the Flock Browser

Prima posizione per Java nella classifica dei linguaggi 2008

0 commenti
Java con il (20,5%) rimane saldamente in testa nella classifica di TIOBE seguito da C ma vede anche il salita linguaggi come (Visual) Basic (11,699%) con il 3,42% in piu rispetio al anno scorso.

www.jaaava.com un motore di ricerca per java

0 commenti
Jaaava un motore di ricerca per noi sviluppatori java, che spesso sondiamo i motore di google in cerca di materiale, documenti , e snippet di codice per risolvere i problemi che ci affligono ogni attimo della nostra giornata.

Upgrade To Ubuntu 8.04

0 commenti

Dopo una lunga attesa ho aggiornato il mio ubuntu , con un semplice comando da shell "sudo apt-get dist-upgrade -d -c ", e dopo un ora di attesa mi ritrovo davanti alla versione 8.04. :)

martedì 15 aprile 2008

lunedì 14 aprile 2008

Java Remoting: hack a Wiimote

0 commenti
Questa settimana giovedi 17 aprile si terra l'incontro mensile del jug Roma. l'incontro di cui relatore e Valerio De Carolis Trattera come argomento la Java Motion Analysis, ovvero come utilizzare il controller Nintendo sfruttando Bluetooth e Java.

per iscriversi andare Jug Roma

lunedì 7 aprile 2008

venerdì 4 aprile 2008

Gestire code su WebSphere 6.0

0 commenti
Su questo articolo andremo a vedere come gestire una messaggi JMS con WebSphere 6.0.

Prima di tutto apriamo la Console di Amministrazione di WebSphere e andiamo a definire un bus,
che è lo strato logico interposto tra produttore e consumatore, può essere distribuito su varie macchine o processori.

CREAZIONE BUS

Sulla console andiamo

Integrazione Servizi > Bus > Inseriamo un nuovo bus,
NOSTROBUS. (Non attivare la sicurezza).

Dopo la creazione del Bus andiamo ad aggiungere il nostro server come membro del bus

( NOSTROBUS >membri del bus)


Una volta finito di creare il bus andiamo a definire la destinazione, che non è altro che un punto di transito per ogni messaggio inserito nel bus.


CREAZIONE DESTINAZIONE

Per definire una destinazione andiamo su:

Integrazione Servizi > bus > NOSTROBUS > Destinazioni
Nuovo > Coda > Avanti > NOSTRADESTINAZIONE

Dopo aver definito il bus e la destinazione andiamo a creare una JMS Connection Factory che ci servirà per recuperare la connessione in fase di lettura e scrittura dei messaggi.

CREAZIONE JMS CONNECTION FACTORY

Per fare questo andiamo:

Risorse > Provider JMS > Messaggistica Predefinita > Produzione di connessioni JMS > Nuovo

A questo punto andiamo ad inserire il nome della nostra Connection Factory NOSTRACF , il riferimento jndi JMS/NOSTRACF e selezioniamo il bus NOSTROBUS

A questo punto possiamo andare a definire la nostra Coda (Queue):


CREAZIONE CODA

Per fare questo andiamo:

Risorse > Provider JMS > Messaggistica Predefinita > Code JMS > Nuovo

A questo punto andiamo ad inserire il nome della nostra Coda NOSTRACODA , il riferimento jndi
JMS/ NOSTRACODA e selezioniamo il bus NOSTROBUS e la nostra destinazione NOSTRADESTINAZIONE.

A questo punto abbiamo terminato la configurazione della nostra coda JMS , adesso andiamo a vedere come gestirle.


Inserire un messaggio sulla coda

Per inserire un messaggio sulla coda utilizziamo

private void inviaMessaggio(String messaggio) {

//Per prima cosa dichiariamo Connection,Session e MessageProducer di javax.jms.
Connection conn = null;
Session session = null;
MessageProducer mp = null;

try{
//Recuperiamo l’initialContext
InitialContext contesto = new InitialContext();

//Facciamo la lookup della ConnectionFactory tramite jndi
ConnectionFactory cf = (ConnectionFactory) contesto.lookup("JMS/NOSTRACF ");

// Facciamo la lookup della Destinazione tramite jndi della coda
Destination destinazione = (Destination) contesto.lookup("JMS/ NOSTRACODA ");

//Creiamo una connessione dalla Connection Factory
conn = cf.createConnection();

//Creiamo la sessione dalla Connessione
session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);

//Creo il producer passandogli come parametro la nostra destinazione
mp=session.createProducer(destinazione);

//Creo Messaggio
TextMessage message = session.createTextMessage();

//Inserisco il testo del messaggio
message.setText(messaggio);

//Imposto la destinazione del messaggio
message.setJMSDestination(destinazione);

//Imposto la modalità in fase di consegna (NON_PERSISTENT significa che il messaggio verrà letto solo da un singolo consumatore e poi sarà eliminato dalla coda)
mp.setDeliveryMode(DeliveryMode.NON_PERSISTENT);

//Invio Messaggio
mp.send(message);
System.out.println("Messaggio Inviato!!!!");

}catch (Exception e) {
System.out.println("Messaggio Exception!!!!"+e.getMessage());
}finally{
if(conn!=null){try {
session.close();
mp.close();
conn.close();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
}

Leggere un messaggio dalla coda

Per leggere un messaggio dalla coda utilizziamo

private String leggiCoda(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {

//Per prima cosa dichiariamo Connection,Session e MessageConsumer di javax.jms
Connection conn = null;
Session session = null;
MessageConsumer mc = null;
try{
//Recuperiamo l’initialContext
InitialContext contesto = new InitialContext();

//Facciamo la lookup della ConnectionFactory tramite jndi
ConnectionFactory cf = (ConnectionFactory) contesto.lookup("JMS/NOSTRACF ");

// Facciamo la lookup della Destinazione tramite jndi della coda
Destination destinazione = (Destination) contesto.lookup("JMS/ NOSTRACODA ");

//Creiamo una connessione dalla Connection Factory
conn = cf.createConnection();

//Creiamo la sessione dalla Connessione
session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);

//Creo il consumer passandogli come parametro la nostra destinazione
mc=session.createConsumer(destinazione);

//Apriamo la connessione
conn.start();

//Creiamo un ciclo while per rimanere in ascolto di messaggi presenti nella coda
TextMessage message = null;
while (true) {
Message m = mc.receive(1);

//Se c’è un messaggio restituiamo il testo.
if (m != null) {

message = (TextMessage) m;
System.out.println("Messaggio Ricevuto!!!!");

return message.getText();

}
}

}catch (Exception e) {
System.out.println("Messaggio Exception!!!!"+e.getMessage());
}finally{
if(conn!=null){try {
session.close();
mc.close();
conn.close();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
return null;
}

giovedì 20 marzo 2008

Upload e Download File

0 commenti
Per fare l’upload di un file useremo le librerie di struts. Per prima cosa andiamo a creare un form che si occuperà dei metodi accessori per il file che vogliamo salvare che sara di tipo FormFile di struts.


package com.myapp.struts.action;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/**
*
* @author r.sheshi
*/
public class UploadFile extends ActionForm {
private FormFile file;

public FormFile getFile() {
return file;
}

public void setFile(FormFile file) {
this.file = file;
}


}

Dopo aver definito il form creiamo la jsp che si occuperà del upload.



<html:form action="/upload" enctype="multipart/form-data">
<html:file property="file" />
<html:submit value="carica" />
</html:form>



Il form deve avere l’enctype impostato “multipart/form-data” e usa il tag html:file con la propetrty impostata a “file” come mappata nel nostro form. A questo punto andiamo a creare la nostra action.


/**
*
* @author r.sheshi
*/
public class CaricaFileAction extends Action{


@Override
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{

DynaActionForm f =(DynaActionForm) form;
FormFile ff = (FormFile) f.get("file");

return mapping.findForward("success");
}

}

Nella action ci prendiamo il file dal bean che struts ha valorizzato.Dopo aver preso il file bisogna andarlo a inserilo nel nostro campo blob. Pertanto ci creamo un oggetto che si occupera di trasferire i dati dalla action nel Dao che si ocuperà di inserirlo.


/**
*
* @author r.sheshi
*/
public class FileDto {


private int id;
private byte[] bytes;
private int size;
private String name;
private String contentType;


public void setBytes(byte[] bytes) {
this.bytes = bytes;
}

public byte[] getBytes() {
return bytes;
}
public void setId(int id) {
this.id = id;
}

public int getId() {
return id;
}


public void setName(String name) {
this.name = name;
}

public void setSize(int size) {
this.size = size;
}

public void setContentType(String type) {
this.type = type;
}

public String getName() {
return name;
}

public int getSize() {
return size;
}

public String getContentType() {
return type;
}

}


Adesso che abbiamo il nostro Dto che ha un variabile di classe un array di byte che verra valorizzarlo nella action dal FormFile con il metodo getFileData().

DynaActionForm f =(DynaActionForm) form;
FormFile ff = (FormFile) f.get("file");

FileDto dto= new FileDto();
dto.setBytes(ff.getFileData());
dto.setContentType(ff.getContentType());
dto.setSize(ff.getFileSize());
dto.setName(ff.getFileName());


Adesso che abbiamo valorizzato il nostro Dto lo passiamo al dao per inserirlo nel database.


FileDao dao= new FileDao();
dao.insert(dto);


Poi nel FileDao esguiamo le operazioni per l’inseriento nella nostra tabella FILE,che avra 4 campi(ID , FILE (BLOB), NOME(VARCHAR), CONTENT_TYPE(VARCHAR)).



private String INSERT="INSERT INTO FILE VALUES(?,?,?,?)";

public void insert(FileDto dto) {
PreparedStatement ps = null;
Connection con = null;

try {


con = getConnection();
ps = con.prepareStatement(INSERT);
ps.setInt(1, dto.getId);
ps.setBytes(2, dto.getBytes());
ps.setString(3, dto.getName());
ps.setString(4, dto.getContentType());
ps.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally{
try {
if (ps != null) ps.close();
if (con != null)con.close();

} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}

}
}


A questo punto avremo dentro la tabella il nostro file e tutte le informazioni al riguardo.




Come facciamo a prendere il file quando ci serve?



Adesso che abbiamo i nostri file nel database creiamo una action per visualizzare una lista dei file.
Aggiungiamo un metodo al Dao che fara una select ritornandoci un Arraylist di Dto con valorizzato solo id e il nome.


public ArrayList listaFile() {
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;

ArrayList dtos = new ArrayList();
try {


con = getConnection();
ps = con.prepareStatement(SELECT);
rs = ps.executeQuery();
while(rs.next()) {
FileDto dto = new FileDto();
dto.setId(rs.getInt(1));
dto.setName(rs.getString(2));


dtos.add(dto);

}
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally {
try {
if (rs != null) ps.close();
if (ps != null) ps.close();
if (con != null)con.close();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}
}
return dtos;
}


Poi creiamo una nuova Action che chiamerà il metodo listaFile che avra come ritorno la nostra collection che mettermo in request per poi scorrerla nella jsp.


public class ListaFileAction extends Action{


@Override
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{

FileDao dao =new FileDao();
ArrayList dtos = dao.listaFile();
request.setAttribute("lista", dtos);
return mapping.findForward("lista");
}

}



Ora che abbiamo la nostra lista visualizziamola nella jsp come una serie di link che al click chiamera una action passandogli id del file per scaricarlo.



<html:html>
<logic:present name="lista" >
<logic:iterate name="lista" id="dto" >

<html:link action="/download" paramId="idFile"
paramName="dto" paramProperty="id">

<bean:write name="dto" property="name" />
</html:link>
</logic:iterate>
</logic:present>
</html:html>



Procediamo nel creare la action che gestisce il download dei file in base all’id che gli passeremo nel link andrà a recuperare il file nel database chiamando il Dao.

private String SELECT_BY_ID="Select * from file where id = ?";
public FileDto findById(int id) {
PreparedStatement ps = null;
ResultSet rs = null;
Connection con = null;
FileDto dto = new FileDto();

try {


con = getConnection();
ps = con.prepareStatement(SELECT_BY_ID);
ps.setInt(1,id);
rs = ps.executeQuery();
while(rs.next()) {
Blob blob = rs.getBlob(2);
byte[] bytes =blob.getBytes(1, (int)blob.length());
dto.setId(rs.getInt(1));
dto.setBytes(bytes);
dto.setName(rs.getString(3));
dto.setContentType(rs.getString(4));




}
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}finally {
try {
if (rs != null) ps.close();
if (ps != null) ps.close();
if (con != null)con.close();
} catch (SQLException ex) {
Logger.getLogger(FileDao.class.getName())
.log(Level.SEVERE, null, ex);
}
}
return dto;
}



Dopo aver chiamato il metodo findById() del Dao settiamo nella response il ContentType in base alla tipologia del file. Nel Header settiamo attachment in modo che venga scaricato in locale e il nome del File. Poi Recuperiamo ServletOutputStream e scriviamo l’array di byte.



public class DownloadAction extends Action{


@Override
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception{
FileDao dao =new FileDao();
String id = request.getParameter("idFile");
FileDto dto= dao.findById(Integer.parseInt(id));

response.setContentType(dto.getContentType());
response.setHeader("Content-Disposition",
"attachment;filename=\""+dto.getName()+"\"");

final ServletOutputStream out= response.getOutputStream();
out.write(dto.getBytes());


return null;
}

}

mercoledì 27 febbraio 2008

Java IDE Day

0 commenti


Cos’è?
Arriva per la prima volta in Italia l'evento internazionale che mette a confronto gli IDE Java più utilizzati e le loro community.

JDeveloper (Oracle), NetBeans (Sun Microsystems), IntelliJ IDEA (JetBrains), invieranno un evangelist del loro core di sviluppo internazionale per confrontarsi a vicenda.

Speaker presenti:

  • Roman Strobl (Sun Microsystems)
  • Paolo Ramasso (Oracle)
  • Vaclav Pech (JetBrains)

Purtroppo nonostante l’impegno da entrambe le parti, non è stato possibile avere la presenza di Eclipse.

Come?
Uno slot di tempo a disposizione per ogni IDE per mostrare le potenzialità del proprio ambiente rispetto agli altri.

Ruolo fondamentale sarà giocato dal pubblico in quanto sono previsti appostiti spazi per porre domande direttamente agli evangelist internazionali.

La parte finale dell’ evento sarà dedicata ad un dibattito ragionato sul futuro degli ambienti di sviluppo.

L’evento sarà in lingua inglese.

Costo:
L’evento è gratuito, ma è gradita la registrazione.

Organizzazione:
L’IDE Day è organizzato dal Jug Genova e Jug Roma

Quando e dove:
Sono previste due date: Genova, 10 marzo e Roma, 12 marzo
L’evento si svolgerà nel pomeriggio, all'interno delle Università.

Per gli orari, agenda e informazioni logistiche si rimanda al sito dell’ evento.

Sito di riferimento: http://www.ideday.org/