samedi 22 décembre 2012

Tutoriels sur JAVA 8


Voici un lien intéressant vers 3 articles très complet sur JAVA 8.Il vous présente les lambda, les virtual méthodes.Il aborde la notion de mixin et vous montre l’intérêt des nouveautés de JAVA 8.
Ces 3 articles sont disponibles sur : http://blog.soat.fr/category/java/
A mon avis, c'est un bon mpoyen pour se familiariser avec JAVA 8.
A noter la version de JAVA 8 est disponible en early access sur le site d'oracle.

lundi 10 décembre 2012

Publication d'un article sur CraSH (application à la visualisation d'un cache ehcache)

J'ai publié un article sur CRaSH sur developpez.com.
Voici le lien dirct vers l'article : http://damienrieu.developpez.com/article/crash_ehcache_spring/ et le lien sur http://www.developpez.com/

Pour ceux qui ne connaissent pas, voici une copie de l'introduction de l'article :

CRaSH permet de se connecter à une JVM en mode Shell puis d'exécuter des commandes directement sur cette JVM. Ainsi, nous allons accéder à un certain nombre de commandes prédéfinies (exemple la commande thread, jdbc, java…). Si vous souhaitez avoir un aperçu rapide sur les commandes disponibles et leurs utilisations, vous pouvez les tester directement sur le site de démo : Démo en ligne
Une des grandes forces de CRaSH est que l'on peut aussi définir ses propres commandes Shell par programmation. Il est alors possible de réaliser des commandes spécifiques à nos besoins ! 

Dans ce tutoriel, nous allons présenter CRaSH grâce à un cas pratique. Pour cela, nous allons réaliser une commande CRaSH d'affichage d'un cache puis nous intègrerons cette commande dans notre application.
Nous montrerons ensuite comment utiliser cette commande à l'aide de CRaSH.
L'application démo a été réalisée avec Spring. Dans cet article, nous montrerons à quel point il est facile d'intégrer CRaSH dans une application Spring.


N'hésitez pas à me poster des commentaires !

samedi 10 novembre 2012

IntelliJ : raccourcis clavier avec KDE


J'utilise depuis peu IntelliJ et je constate que certains raccourcis clavier ne fonctionne pas sous KDE.
C'est le cas des raccourcis ALT + NUM (exemple ALT + 1 qui ouvre la vue projet).
J'ai donc décider de remplacer ALT + 1 par ALT + NUMPAD.
Pour cela, il suffit d'aller dans File -> Settings -> Keymaps

Voici un document que je vais essayer de remplir avec les raccourcis claviers : ici

mercredi 17 octobre 2012

new Blog( perso );: Non, JigSaw n'est pas mort !

new Blog( perso );: Non, JigSaw n'est pas mort !: Le retrait de jigsaw de la roadmap de Java 9 avait précédé JavaOne, aussi j’ai voulu voir ce qui serait présenté lors de cette session. On c...

mardi 16 octobre 2012

Git reminder


Just a git reminder to work with github ...

git checkout master
git fetch upstream
git merge upstream/master


git checkout dashboard
git merge upstream/dashboard

git push --set-upstream origin dashboard


Merge

git mergetool -t kdiff3
git mergetool -t meld
git config --global merge.tool kdiff3



git svn rebase --> "file.abs: needs update"
git stash (save local changes away)
git stash list (have a look at what is stashed)
git svn rebase
git svn dcommit
git stash apply (back to where we were before)
 

Clean d'un repository :

For example,

git fetch upstream
git checkout master
git reset --hard upstream/master  
git push origin master --force 


Revert

  • git checkout path/to/file
  • Pour une working copy entière: git reset --hard 
  •  
Clean de la branch master du repo :

1/ recupérer le dernier master de crash
git checkout crash master

2/ checkouter ta branche master
git checkout master

3/ reinitialiser ta branche master avec la branche master de crash
git reset --hard crash/master

4/ pousser ça dans ton repository en forçant : ça va réécrire l'historique de la branche master de ton repository sur github
     c est une operation destructive (mais nécéssaire parfois) qui peut te faire perdre des commits
git push --force origin master
     
     
     

I love Guava !


Guava est une librairie google sympa (supervisé par Josh Bloch !) avec pleins de bonnes choses dedans !
C'est vraiment une librairie qui vaut le détour.Voici un blog consacré à cette librairie.Il présente les différents avantages de cette librairie :
http://blog.developpez.com/guava/

Remarque :  Les fonctionnalités de Java 7 puis Java 8 risque de diminuer l'intérêt de cette librairie ...

lundi 8 octobre 2012

Closures Lambda et Java 8


Voici une bonne introduction aux Closures (projet Lambda) de Java 8.Par contre, c'est en anglais mais cela donne une bonne idée de ce qui nous attends l'année prochaine :
http://java.amitph.com/2012/08/at-first-sight-with-closures-in-java.html

samedi 6 octobre 2012

Junit @Rule



Récemment, je suis tombé sur un article intéressant sur Junit et l’annotation @Rule que je ne connaissais pas.Dans cet article, je vais vous présenter le principe de fonctionnement.

En faite, dans les version précédentes de Junit, on était obligé de déclarer @SetUp et @TearDown pour chaque classe de test.Dans les versions récentes de Junit, il est maintenant possible de définir ses propres rules avec l’annotation @Rule.Autrement dit, durant le déroulement de votre test, vous allez pouvoir agir dessus.
Pour vous donnez une idée, voici quelques exemples de Rules standard :

  • ExpectedException: vérifie qu’une exception est levée (généralise @Test(expected=...) à une classe de test)
  • Timeout: vérifie qu’un test ne dépasse pas une certaine durée (généralise @Test(timeout=...) à une classe de test
  • ExternalResource: base pour gérer une ressource: ouvrir/fermer une connexion par exemple
    • TemporaryFolder: créer/détruit un dossier temporaire pour les tests qui produisent des fichiers
  • TestWatchman: base pour observer l’exécution d’un test sans intervenir
    • TestName: donne accès au nom du test depuis la méthode de test
  • Verifier: base pour vérifier l’état de l’objet de test

Voici les deux liens qui m’ont permis de découvrir cette nouvelle notion :
http://blog.objetdirect.com/divers/quoi-de-neuf-chez-junit
http://www.dzone.com/links/r/junit_rules_3.html

vendredi 5 octobre 2012

Can't import an existing Maven Project avec Eclipse Juno et Maven Plugin 1.1.0

Problem


Je fais :
Import -> Maven -> Existing Maven Project
Puis je choisis mon projet sur le disk :






Je clic Next.J'obtiens l'écran Maven Selector Plugin Screen :




Si je clic sur Finish, j'attends un long moment et j'ai l'erreur  : Problem occured while performing ...
Cela est du à un problème réseau sur une dépendance et le problème c'est que je n'ai rien importer dans Eclipse.

Solution

Dans Maven Selector Plugin Screen, il suffit de cliquer sur resolve All Later button.cela me permet d'avoir mon projet importer.



mercredi 3 octobre 2012

org.springframework.web.servlet.PageNotFound No mapping found for HTTP request with URI


Problème

J'ai rencontré l'erreur suivante Jboss (7.1.1) avec une application utilisant Spring 3.1.1 :
14:35:03,357 WARN  [org.springframework.web.servlet.PageNotFound] (http--127.0.0.1-8080-1) No mapping found for HTTP request with URI [/sandbox-0.0.1-SNAPSHOT/css/design.css] in DispatcherServlet with name 'sandbox'

Solution

Il suffit d'ajouter :   <mvc:resources mapping="/resources/**" location="/resources/" />


http://stackoverflow.com/questions/1483063/spring-mvc-3-and-handling-static-content-am-i-missing-something

jeudi 27 septembre 2012

Spring 3.1.1 and ehcache demo application



Je viens juste de commiter une nouvelle version d'une application démo
qui fonctionne sous JBoss 7 avec Spring 3.1.1 et Ehcache.
Autre chose, cette application fonctionne avec Crash (a shell to extend the JVM)
Allez voir http://julienviet.com/crash/ pour plus d'information.

All source code is available at https://github.com/drieu/sandbox

Spring cache

Voici un lien sur les annotations Spring : :http://www.dzone.com/links/r/spring_31_caching_and_cacheevict.html
C’est bien expliqué avec des petits exemples pratiques.

mercredi 26 septembre 2012

dimanche 23 septembre 2012

Moteur de recherche dans la javadoc ?


Vous voulez effectuer une recherche dans la javadoc rapidement ?
Voici un moteur de recherche dans la javadoc :

http://javasearch.developpez.com/index.php?cat=1

Pourquoi le site javasearch.developpez.com
Comme tout programmeur en Java, j'ai régulièrement besoin de me plonger dans la documentation.La javadoc est bien faite et plutôt claire. Par contre, il n'existe aucun moteur de recherche simple permettant de trouver facilement les classes ou les méthodes recherchées.Lassé d'utiliser le "CTRL+F" de mon explorateur pour trouver le bon mot dans la liste des 2700 classes,j'ai décidé d'indexer la totalité de la documentation java (plus de 200 Mo de fichiers html !!!) pour créer un moteur de recherche rapide et simple.


Remarque : Un seul hic, il n’y a pas la javadocs de Java 7.

samedi 22 septembre 2012

Vous voulez apprendre groovy ?



Si vous voulez apprendre Groovy sans acheter de livre et d'une manière un peu fun,
voici un lien qui va vous y aider : http://groovykoans.org/

En faite, vous téléchargez une archive qui contient qui contient des exercises.
Ses exercises se présentent sous la forme de test unitaires qui sont en échec.
A vous de corriger.Pour cela chaque méthode de test contient toutes les explications
pour résoudre l'exercise.L'apprentissage se fait progressivement.

Pour ma part, je connais un peu Groovy mais sans plus.J'avais un peu du mal à m'y mettre
et cette méthode m'aide bien.
Bon ... Je sais que j'ai mes exercices à faire !




mercredi 19 septembre 2012

Crash Spring et ehcache


Voici un petit retour d'expérience sur l'utilisation de Crash.
J'ai testé Crash avec une application Spring qui met des valeurs en Cache.Cette application
est déployée sur un serveur Jboss 7.1.1.A l'aide de Crash, j'accède à l'appli en ligne
de commande et j'exécute un script d'affichage du cache.Cela fonctionne très bien.
Pour ceux que ça intéresse, j'ai mis le code source sur GitHub.(https://github.com/drieu/sandbox)

mardi 18 septembre 2012

java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V

 Problème :

Au déploiement de mon war dans JBoss, j’avais l’erreur suivante :


14:11:53,425 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/sandbox-0.0.1-SNAPSHOT]] (MSC service thread 1-1) Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) fr.dr.sandbox.listener.CacheListener: java.lang.NoSuchMethodError: org.springframework.core.convert.converter.ConverterRegistry.addConverter(Ljava/lang/Class;Ljava/lang/Class;Lorg/springframework/core/convert/converter/Converter;)V
       at org.springframework.core.convert.support.DefaultConversionService.addScalarConverters(DefaultConversionService.java:62) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.convert.support.DefaultConversionService.addDefaultConverters(DefaultConversionService.java:53) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.convert.support.DefaultConversionService.<init>(DefaultConversionService.java:42) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.AbstractPropertyResolver.<init>(AbstractPropertyResolver.java:44) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.PropertySourcesPropertyResolver.<init>(PropertySourcesPropertyResolver.java:42) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.AbstractEnvironment.<init>(AbstractEnvironment.java:101) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.core.env.StandardEnvironment.<init>(StandardEnvironment.java:54) [spring-core-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.<init>(AbstractBeanDefinitionReader.java:57) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.<init>(XmlBeanDefinitionReader.java:135) [spring-beans-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:83) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397) [spring-context-3.0.5.RELEASE.jar:3.0.5.RELEASE]
       at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) [spring-web-3.1.1.RELEASE.jar:3.1.1.RELEASE]
       at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
       at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
       at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
       at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_18]
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_18]
       at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_18]


Solution :

En regardant de près dans le message d’erreur, il s’avère que j’avais des versions de spring différentes (3.0.5.RELEASE et 3.1.1.RELEASE).
En fait, j'utilise la version 3.0.5.RELEASE dans mon pom.xml et j’ai introduit une librairie qui utilisent la version 3.1.1.RELEASE.
J’ai donc upgradé toutes les version de spring de mon pom.xml à 1.1.1.RELASE pour résoudre mon problème.

lundi 17 septembre 2012

Podcast Java


Voici un podcast que je connaissais pas : http://javapubhouse.libsyn.com/
A voir si il est bien ...
N'hésitez pas à mettre des commentaires sur les podcast que vous connaissez.

jk's blog: Duck typing in Java ?

Je suis tombé sur un article intéressant.En effet, je ne connaissais pas le duck typing.Cet article m'a permis de découvrir cette notion :
jk's blog: Duck typing in Java ? Well, not exactly:

vendredi 14 septembre 2012

ScriptRoom: Creating and configuring a MySQL DataSource in GlassFish Application Server.

ScriptRoom: Creating and configuring a MySQL DataSource in GlassFish Application Server.: http://dev.mysql.com/downloads/connector/j/3.1.html

Glassfish reminder


./asadmin start-domain domain1
./asadmin list-jndi-entries
./asadmin stop-domain

crash Could not start CRaSSHD Failed to register BouncyCastle as the defaut JCE provider

Problème :

J’ai déployé crash.war dans JBoss et au démarrrage, j’avais l’erreur suivante : Could not start CRaSSHD

10:22:31,335 INFO  [SSHPlugin] Booting SSHD
10:22:32,826 INFO  [SecurityUtils] Trying to register BouncyCastle as a JCE provider
10:22:36,861 SEVERE [SecurityUtils] Failed to register BouncyCastle as the defaut JCE provider
10:22:36,862 SEVERE [SSHLifeCycle] Could not start CRaSSHD

java.lang.RuntimeException: Failed to register BouncyCastle as the defaut JCE provider


Caused by: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
       at javax.crypto.SunJCE_b.a(DashoA13*..)
       at javax.crypto.KeyAgreement.getInstance(DashoA13*..)
       at org.apache.sshd.common.util.SecurityUtils$BouncyCastleRegistration.run(SecurityUtils.java:97)
       at org.apache.sshd.common.util.SecurityUtils.register(SecurityUtils.java:77)
       ... 79 more
Caused by: java.util.jar.JarException: Cannot parse jar:file:/opt/jboss/jboss-eap-5.1/jboss-as/server/all/deploy/crash.war!/WEB-INF/lib/bcprov-jdk16-1.46.jar


Solution :

- Récupérer les fichiers (Dans mon cas bcprov-jdk15on-147.jar et bcprov-ext-jdk15on-147.jar).
http://www.bouncycastle.org/latest_releases.html
- Copier ses fichiers (e.g:bcprov-jdk15on-147.jar et bcprov-ext-jdk15on-147.jar) dans /opt/jdk/jdk1.6.0_18/jre/lib/ext
- vi /path_to_your_jvm/jre/lib/security/java.security et ajouter la ligne security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
security.provider.4=com.sun.crypto.provider.SunJCE
security.provider.5=sun.security.jgss.SunProvider
security.provider.6=com.sun.security.sasl.Provider
security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.8=sun.security.smartcardio.SunPCSC
security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

- Redémarrer jboss.

http://www.randombugs.com/java/javalangsecurityexception-jce-authenticate-provider-bc.html
http://nyal.developpez.com/tutoriel/java/bouncycastle/#L1

http://julienviet.com/crash/

mardi 11 septembre 2012

new Blog( perso );: maven settings et sécurité apparente

new Blog( perso );: maven settings et sécurité apparente: Maven 3 permet de crypter les mots de passe serveurs stockés dans votre fichier settings.xml. C'est un net progrès pour ce fichier qui peut...

vendredi 7 septembre 2012

Creating a tar.gz file in Java

Voici un lien vers un blog pour créer des archives (tar.gz dans cet exemple) en Java : Creating a tar.gz file in Java

Java Puzzle

Si vous cherchez des exercices Java pour vous faire réfléchir.Voici un blog qui devrait vous plaire :
http://wouter.coekaerts.be/2012/puzzle-dreams-solution

Les exercices sont pas faciles et intéressant.

lundi 23 avril 2012

Comment appliquer le formatage checkstyle automatiquement ?

Problème :


Vous voulez appliquer le formatage checkstyle avec CTRL-ALT-F sans avoir à le faire manuellement.




Solution :


Clic droit sur le projet -> Checkstyle -> Create a Formatter

Windows -> Preferences -> Code Style -> Formatter 

Ensuite, il suffit de selectionner le formatter que l’on a générer.

On peut donc faire CTRL - ALT - F et voir les erreurs de formattage checkstyle corrigées.

samedi 21 avril 2012

Java 1.8 lambda exemple

Lors de devoxx, on a assisté à une présentation de Guillaume Tardif sur le JDK1.8 et l’utilisation des lambdas (http://www.devoxx.com/display/FR12/JDK+8+demo++lambdas+in+Action)

Voici un exemple sur l’utilisation des lambdas :

Pour télécharger le jdk :http://jdk8.java.net/lambda/


Pour installer temporairement le jdk1.8 sous ubuntu :


sudo mv ./jdk1.8.0 /usr/lib/jvm/
sudo update-alternatives --install “/usr/bin/java” “java” “/usr/lib/jvm/jdk1.8/bin/java” 1
sudo update-alternatives --install “/usr/bin/javac” “javac” “/usr/lib/jvm/jdk1.8/bin/javac” 1

sudo update-alternatives --config java


Ensuite, il suffit de choisir le jdk.

Attention : Moi j’ai eu un bug avec javac car javac -version m’affichait toujours java 1.6.
Donc pour compiler l’exemple ci-dessous, j’ai fait :

/usr/lib/jvm/jdk1.8.0/bin/javac Main.java
java Main


Voici un exemple d’utilisation des lambdas :

import java.util.ArrayList;
import java.util.List;


public class Main {

public static void main(String[] args) {
List names = new ArrayList();
names.add("superman");
names.add("batman");
names.forEach( (String s) -> { System.out.println(s);} );
}

}


Dans l’exemple ci-dessus, on affiche :

superman
batman


Autre point important, Java 1.8 devrait supporté l’héritage multiple !

jeudi 19 avril 2012

mardi 17 avril 2012

Devoxx FRANCE c'est demain !


Demain, débute une super conférence !
Une conférence sur 3 jours.Si vous n’êtes pas inscrit, je vous invite à aller quand même sur le site.
Je pense que c'est un bon moyen de se faire une idée des tendances du moment.




jeudi 29 mars 2012

Import d'un projet maven : Pas de J sur le dossier projet


Problème :

J'ai fait les étapes suivantes
- Import  Existing Maven project
- Browse -> Choix du projet Maven avec ces modules qui contient les modules

Dans le Package Explorer, on constate que le projet est un projet Maven mais pas Java.Il n'y a pas de J sur le dossier du projet.


Solution :

==> Clic droit Configure --> Convert to facet form

samedi 17 mars 2012

Go : Lecture et Ecriture d'un fichier



Pour lire et écrire dans un fichier avec Go, il suffit d'utiliser le package io/ioutil.
qui contient des méthodes telles que ReadFile ou WriteFile

Exemple :

package main
import ("fmt";"io/ioutil")
func main() {
fmt.Print("Lecture \n");
contents,_ := ioutil.ReadFile("/home/damikde/tmp/server.log")
  println(string(contents))
        fmt.Print("Ecriture \n");
  ioutil.WriteFile("/home/damikde/tmp/toto", contents, 0x777)
}

jeudi 15 mars 2012

Bonjour,

Si vous cherchez des trucs et astuces java, je vous conseille de consulter le site JTips
Pour ma part, j'ai trouvé des exemples sur JAVA 7 avec notamment avec NIO2
Il y aussi divers solutions pratiques JSF,Spring, CDI ...

mercredi 7 mars 2012

Bonjour,

J'ai mis à jour ma liste de blogs avec l'ajout du podcast cast-it.
Pour ceux que ça intéresse, il y a un article intéressant sur le package java.io sur coder breakfast  : http://thecodersbreakfast.net/index.php?post/2012/01/15/java-io-explique-simplement