Les expressions régulières sont très importantes lors qu’il s’agit de rechercher des informations dans du texte. Cependant, elles peuvent, dans certain, devenir très compliquées. C’est d’ailleurs la principale raison pour laquelle beaucoup de monde préfère utiliser autre chose pour rechercher des informations dans une chaîne de caractères, par exemple à l’aide de découpage arbitraire de cette même chaîne. En utilisant la fonction Java split par exemple.
Un plugin Eclipse offre la possibilité de vérifier en directe une expression régulière : myregexp. Ce plugin existe aussi en version en ligne ici.

Primefaces n’est pas sous github. Malgré tout, un projet du même nom existe sur cet hébergement. C’est à partir de ce projet, copie du SVN officiel de Primefaces qu’il est possible de récupérer des releases non officielles, c’est à dire intermédiaires, de la librairie JSF. Ces versions sont, en effet, accessibles en version compilées uniquement pour les personne ayant un compte ELITE auprès de l’entreprise éditrice de Primefaces.
Pour en profiter, il faut ajouter le repository suivant dans maven :
<repository>
<id>prime-github-repo</id>
<name>Unofficial PrimeFaces Maven Repository</name>
<url>http://primefaces.github.io/repository</url>
<layout>default</layout>
</repository>
Pour démarrer une instance JBoss en mode standalone avec les configurations par défaut, il faut exécuter la commande suivante : $JBOSS_HOME/bin/standalone.sh
Pour créer sa propre instance, il est uniquement nécessaire de copier les fichiers de configuration originaux du serveur standalone dans un répertoire quelconque du système de fichier puis d’exécuter la commande précédente avec l’option -Djboss.server.base.dir=XX. Par exemple :
xxxx@xxxx:~/tmp/testsJboss1$ tree
.
├── configuration
│ ├── application-roles.properties
│ ├── application-users.properties
│ ├── logging.properties
│ ├── mgmt-users.properties
│ └── standalone.xml
└── deployments
xxxx@xxxx:~/$ $JBOSS_HOME/bin/standalone.sh -Djboss.server.base.dir=~/tmp/testsJboss1/
Remarque : L’option jboss.socket.binding.port-offset associée à un entier (-Djboss.socket.binding.port-offset=1), vous permet de démarrer une instance en décalant tous les ports du serveur et ainsi éviter toute interférence avec un autre serveur.
Il est possible de définir des index basés sur des fonctions (based-function index). Par exemple lorsqu’il est nécessaire de faire un index sur ce genre de requête SQL :
SELECT * FROM
MA_TABLE
WHERE
SUBSTR(MA_COLONNE, 1, 3) = 'ABC';
Il est possible de définir un index spécialement sur la fonction recherchée de la façon suivante :
CREATE INDEX IDX ON MA_TABLE (SUBSTR(MA_COLONNE, 1, 3));
Après avoir démarré une application utilisant tomcat, weld-servet et JSF2, je me suis rendu compte que j’obtenais rapidement des erreurs de mémoire sur la PermGen space. En gros mon application, aussi petite soit elle, utilisait beaucoup plus de classes que ce que je pensais et surtout que ce que la JVM de Sun pouvait contenir par défaut.
Pour rappel, cette partie de la mémoire est utilisée dans les JVM de Sun pour stocker les classes chargées par le classloader, elle ne se vide jamais sauf si l’on fait des actions directement sur le classloader. La valeur par défaut de cette mémoire est de 64Mo.
A priori, cette valeur n’est pas assez grande pour contenir l’ensemble des classes chargées par weld-servlet et JSF2 dans un tomcat. Pour éviter de retrouver ces erreurs de mémoire, il faut donc l’augmenter avec le paramètre dans la JVM :
-XX:MaxPermSize=256m
Il est possible de voir l’évolution de cette mémoire avec le programme VisualVM qui est fourni par défaut dans une JDK.
Après avoir installer une nouvelle ROM sur mon téléphone Samsung Galaxy S GT-19000 (CyanogenMod), je me suis rendu compte que je ne pouvais plus utiliser la combinaison des touches VOL UP + HOME + POWER pour accéder au mode recovery ni VOL DOWN + HOME + POWER pour accéder au mode download.
Après une longue recherche, j’ai compris, qu’à priori, ce téléphone réagit à une nouvelle installation d’une ROM (flash de la ROM) en interdisant l’accès aux deux modes ci-dessus.
La seule façon que j’ai trouvé pour rebooter le téléphone dans un des deux modes, c’est d’utiliser l’outil de développement android adb. Pour cela, j’ai du :
- Installer le SDK android (http://developer.android.com/sdk/index.html)
- Activer le débogage USB sur le téléphone via le menu Option développeur de l’application Paramètre (Settings, ou Réglage selon la traduction)
- Brancher le téléphone à mon ordinateur avec le câble USB
Puis lancer la commande suivante :
- adb reboot download pour accéder au mode download
- adb reboot recovery pour accéder au mode recovery
Remarque, vous pouvez rebooter n’importe quel autre téléphone en utilisant cette méthode.
Pour activer les options de développement sur une ROM CyanogenMod, il faut aller dans le menu “A propos du téléphone” (“About phone”) de l’application “Paramètres” (“Settings”) puis taper plusieurs fois sur l’entrée “Numéro de fabrication” (“Build number”).
Un message vous préviendra lorsque les options de développement seront accessibles. Vous les trouverez dans l’application des paramètres dans la catégorie “SYSTEME”.
Pour information, ce menu vous permet de mettre un téléphone en mode de débogage USB et donc, entre autre, de vous y connecter avec l’application ADB par exemple.
Comment exécuter plusieurs commandes sur des fichiers trouvés grâce a l’outil UNIX find ?
Réponse : Cette commande accepte plusieurs options exec à la suite. Par exemple :
find . -name "*.txt" -exec ls -l {} \; -exec wc {} \;
Il me semblait que faire un fond en dégradé avec CSS3 était à la portée de tous. En effet ce n’est pas très compliqué, mais, selon ce que l’ont souhaite obtenir, il peut y avoir beaucoup de paramètres à prendre en compte. Par hasard, j’ai découverts un site internet qui propose une interface pour générer ses propres dégradés compatibles avec tous les navigateurs : http://gradients.glrzad.com/.
Le principe est simple, il faut choisir
- le nombre de couleurs du dégradé,
- l’orientation et la position de la ou les ruptures de couleur
- la rapidité de passage d’une couleur à l’autre
Ensuite, il suffit de copier le code CSS généré dans sa propre feuille de style.
Aujourd’hui, je décide de mettre à jour ma version de PrimeFaces. Je passe de la 3.4.2 à la 3.5. Résultat, mes composants RichFaces ne s’affichent plus correctement. Après recherche dans le code HTML généré, je remarque que les inclusions CSS et Javascript de Richfaces ne sont plus là. Je ne suis pas le seul à avoir le problème : http://forum.primefaces.org/viewtopic.php?f=3&t=28398.
Le problème vient de la façon dont PrimeFaces inclue les dépendances CSS et Javascript.
La solution : retour en version 3.4.2 en attendant une version intégrant une correction.