jeudi 19 août 2010
Android game : Paratrooper
Use your finger to destroy paras, helicopters, bombers, and much more..
Xp point based system to upgrade your cannon specs.
To get the game : Download
mercredi 21 avril 2010
Split n Go !
dimanche 18 avril 2010
Space Sim sur Android
Space sim is a gravity game that allows you to play with planets and satellites on your android phone !
Get the Lite version !
Features :
- Add satelites and planets with your finger.
- Repulsive planets
- Multitouch zooming
- Sat. cam to focus camera on a satellite (use trackpad)
how to :
- add a satellite : simply draw a ligne on the screen with your finger. Longer is the line, faster will be the satellite !
- add a planet : kepp pressing the screen during 5 sec where you want to add a planet. You can choose the kind of planet (repulsive or not) in the menu.
lundi 3 mars 2008
Sortie de bea workshop 10.2
Bea nous offre la nouvelle release de son ide commercial basé sur Eclipse.
En attendant la nouvelle version de son serveur d'application qui devrait gérer(enfin) JSF 2.0, BEA s'est concentré sur l'IDE. Au menu un correctif de beug, une amélioration des performances, l'intégration flex et le support du "tuxedo control" que nous retrouverons dans cette version 10.2.
Nouveauté, une couche au dessus des produits BEA qui permet de lancer et de visualiser les produits bea installés sur le poste : WorkSpace studio.
Workshop deviendra t'il un IDE utilisable sereinement par les développeurs, avec un serveur simplifié sur le poste développeur plus rapide à démarrer et une consommation mémoire raisonnable (< à 2Go) ? Ce sera en tout cas la clé pour une adoption massive du produit. Pour l'annonce en anglais c'est ici : http://dev2dev.bea.com/blog/phumphrey/archive/2008/02/the_fastest_wor.html
lundi 11 février 2008
Télécharger un fichier via JSF
Prendre un FacesContext, extraire l'objet response de son external context. Faire revenir la response en la castant en HttpServletResponse. Ajouter quelques headers http (pour le nom du fichier), un type mime (pour le comportement du navigateur). Ajoutez un flux quelconque (généré à la volée ou lue a partir d'un fichier selon les goûts), et retirez immédiatement (responseComplete) pour éviter les ennuis.
Compilez, déployez et savourez ...
En mode intelligible ça donne ceci :
public void doTestStream(ActionEvent ae) throws IOException
{
FacesContext context = FacesContext.getCurrentInstance();
ExternalContext ec = context.getExternalContext();
HttpServletResponse response = (HttpServletResponse) ec.getResponse();
response.reset();
response.setContentType("application/csv");
response.setHeader("Content-Disposition", "filename=Demo.csv");
response.setHeader("Content-Transfer-Encoding", "binary");
ServletOutputStream sop = response.getOutputStream();
sop.write("hello;csv;world".getBytes());
sop.flush();
context.responseComplete();
}
mardi 15 janvier 2008
Kodo Optimistic Exceptions
Pour ce faire on configure le CascadeType dans le bean entity.
Je suis tombé hier sur une exception de type OptmisticException dans le cas d'une suppression en cascade :
<1.0.0> org.apache.openjpa.util.OptimisticException: Optimistic locking errors were detected when flushing to the data store. The following objects may have been concurrently modified in another transaction:
Il s'avère que Kodo a l'étrange idée de se tirer une balle dans le pied en tentant de supprimer d'abors l'enregistrement parent et ensuite les enfants...
Pour palier à ce soucis, je vous invite à rajouter dans votre persistance.xml la petite ligne qui suit :
<property name="kodo.jdbc.MappingDefaults" value="jpa(ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict)"/>
Merci Bea d'agrémenter mes journées de travail par de longues et infructueuses recherches désespérées de la petitie ligne de configuration servant à modifier un comportement qui, bien que nécessaire dans 99% des cas, n'est pas activé par défault.
vendredi 7 décembre 2007
Injection EJB avec JSF1.1 solution 2
Une petite classe donc qui, avec sa simple méthode à appeller dans le contructeur de votre back bean vous permettra par réflexion d'effectuer un context lookup vers votre ejb (Champs @EJB public uniquement). Toujours en attendant l'injection @EJB dans le nouveau WorkShop.
télécharger la classe java
Pour cerain il peut se produire une erreur de lookup du style :
javax.naming.NameNotFoundException: While trying to look up comp/env/Addition/Local in /app/webapp/TEST_JSF_EBJ/12227708.; remaining name 'comp/env/Addition/Local'
Pour résoudre ce problème j'ai simplement ajouté un ServletContextListener à mon application web dans laquelle je référence mes ejb . Après le lookup local dans les back beans fonctionne a merveille...
public class testListener implements ServletContextListener {
@EJB(name = "Addition/Local")
public AdditionRemote ar;
public void contextDestroyed(ServletContextEvent arg0) { }
public void contextInitialized(ServletContextEvent arg0) { }
}
Exemple d'utilisation :
@EJB(name = "Addition/Local")
public AdditionRemote ar; // is va être injecté dans le constructeur
public testBackBean() {
fr.sihm.common.ejblocator.EJBLocator.injecterMesEJB(this);
}
public String getResultEJB() // on teste
{
if (ar == null) {
return "NOT BOUND";
} else {
return "Bouded , result = " + ar.additionner(5, 5);
}