Eclipse : Expressions régulières

By , 16/07/2013

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 : releases non-officielles

By , 24/06/2013

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>

JBoss 7 : Plusieurs instances standalone sur un même serveur

By , 13/06/2013

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.

Oracle : index basé sur une fonction

By , 05/06/2013

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));

Tomcat + weld + JSF : java.lang.OutOfMemoryError: PermGen space

By , 01/06/2013

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.

Samsung Galaxy S : Rebooter en mode recovery

By , 22/05/2013

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.

CyanogenMod : Activer les options de développement (options développeur)

By , 22/05/2013

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.

find : exécuter plusieurs instructions

By , 09/04/2013

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 {} \;

CSS3 : gradients

By , 11/03/2013

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.

PrimeFaces 3.5 incompatible avec RichFaces 4

By , 10/02/2013

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.

OfficeFolders theme by Themocracy