dimanche 27 février 2011

jRename : renommer des fichiers par lot

Cela fait quelques années que j'avais développé un outil bien pratique pour renommer des fichiers en série. Après avoir retrouvé les sources de cette application JAVA sur un disque de sauvegarde, je le propose aujourd'hui en licence open source GPL v3.

jRename (puisque c'est ainsi que je l'avais appelé à l'époque) est un utilitaire java gratuit et open source permettant de renommer des fichiers par lot. Il est multi-plateformes : Windows XP/Vista/7, Mac OS X et Linux et propose un grand nombre d'options : changement de case des caractères, insertion de dates, utilisation d'un compteur mais également filtrage et capture à base d'expressions régulières :




Parmi les fonctionnalités implémentées :
  • Utilisation d'un compteur
  • Changement de casse
  • Modification de caractères
  • Suppression de blancs superflus
  • Suppression de '.' superflus
  • Utilisation d'expressions régulières avec groupes capturants
  • Prévisualisation du résultat
  • Undo
  • Travail dans les répertoires et les sous répertoires

Ce qu'il reste à faire :
  • Utilisation de swing worker
  • Utilisation des données EXIF
  • Utilisation des données ID3 tag
  • Préciser l'ordre de traitement des fichiers
  • etc...

La notice d'utilisation en français se trouve à cette adresse : notice d'utilisation jrename.

D'un point de vue technique, jRename utilise le gestionnaire de Layout MiG Layout que je vous recommande pour sa simplicité et ses possibilités avancées de configuration. Il est disponible pour SWING, SWT et JavaFX.

Si vous avez des idées pour améliorer cette application, n'hésitez pas à m'en faire part.

jeudi 23 décembre 2010

Suivi des variables personnalisées Analytics avec Blogger

Si vous utilisez Blogger, vous vous êtes sans doutes empressé à intégrer le tracking Google Analytics de vos visiteurs. Si le suivi du nombre de vos visiteurs, de leurs origines géographique, des liens et mots clés d'entrée sur votre blog, des pages les plus visitées etc... vous passionne, alors vous serez certainement intéressé par la mise en place de mesures personnalisés au moyen des custom variables ou variables personnalisées.

Les variables personnalisées Google Analytics permettent de suivre des valeurs quelconques pour des variables que vous définissez vous mêmes. Le suivi des valeurs pouvant se faire :
  • Par visiteur unique
  • Par session de navigation
  • Par impression de page
Pour une explication exhaustive sur les variables personnalisées, je vous renvoie à la documentation Google Analytics. Nous allons maintenant voir comment les utiliser pour effectuer le suivi des tags les plus populaires sur votre blog Blogger.

Vous avez sans doute déjà ajouté le code de suivi Analytics au template de votre blog :
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXX-Y']);

(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

_gaq.push(['_trackPageview']);
La directive _gaq.push(['_trackPageview']); permet d'envoyer les données suivies pour la page affichée vers votre compte Analytics. Pour effectuer le suivi des tags les plus populaires de votre blog, il va falloir ajouter le code suivant avant cette directive _gaq.push(['_trackPageview']); :
if (/(http:\/\/){0,1}avianey.blogspot.com\/[0-9]{4}\/[0-9]{2}\/.*\.html/.test(window.location)) {
    var libellesSpan;
    var continuer = false;
    if (document.getElementsByClassName) {
        var labels = document.getElementsByClassName('post-labels');
        if (labels && labels!=null && labels.length>0) {
            libellesSpan = labels[0];
            continuer = true;
        }
    } else {
        var blog = document.getElementById('Blog1');
        if (blog && blog!=null && blog.getElementsByTagName) {
            var spans = blog.getElementsByTagName("span");
            continuer = true;
            for (var i = 0; i < spans.length; i++) {
                if (spans[i].className=='post-labels') {
                    libellesSpan = spans[i];
                    break;
                }
            }
        }
     }
     if (continuer && libellesSpan.getElementsByTagName) {
         var links = libellesSpan.getElementsByTagName('a');
         for (var i = 0; i < links.length; i++) {
             _gaq.push(['_setCustomVar', 1, 'Tag', links[i].innerText.replace(/%20/g,' '),  3]);
         }
     }
}
La première partie du code permet de récupérer les tags associés au post du blog qui est affiché :
  1. Vérification de l'URL afin de s'assurer qu'elle correspond à celle d'un post. Le suivi n'est pas effectué pour la page principale, l'historique du blog ou la liste des posts par tag.
  2. Si l'on est sur la page d'un post : récupération des tags du blog en utilisant getElementsByClassName sur les navigateurs compatibles ou en navigant dans le DOM pour les autres (Internet Explorer...)
  3. Enfin, enregistrement d'une valeur personnalisée pour chaque tag associé au post : _gaq.push(['_setCustomVar', 1, nom, valeur, 3]);
Il ne reste plus qu'à attendre quelques jours (et oui c'est plutôt long) avant de voir apparaître les premières statistiques dans votre interface Analytics :


mardi 14 décembre 2010

L'application Niveau à Bulle devient open source !

Aujourd'hui est un jour un peu particulier pour moi puisque c'est la première fois que je publie une application en licence open source. Cela fait déjà plusieurs années que j'utilise dans le cadre professionnel ou personnel des applications ou librairies java open sources (principalement sous Licence Apache ou LGPL). Ces applications ou librairies m'ont permis d'avancer sur de nombreux sujets... et il me tenait à coeur depuis un bout de temps de participer au mouvement. C'est donc avec une grande joie que je propose le code d'une de mes applications Android déjà téléchargée plus d'un million de fois :

Niveau à Bulle

De nombreuses licences open source existent mais je n'ai pas hésité longtemps pour m'orienter vers la GNU General Public License v3. Cette licence m'a semblé être la plus adapté dans le cadre de la publication d'une application complète, n'étant pas destinée à être intégrée dans une application au périmètre plus étendu. S'il avait été question d'une librairie, j'aurais sans hésitation opté pour l'Apache licence 2. Entre les deux, la GNU Lesser General Public License me paraît être destinée à la publication d'outils finis intégrables dans une application au périmètre étendu. Mais cela demeure une réflexion purement personnelle. Pour ceux d'entre vous qui sont intéressés par le code source de l'application, ça se passe ici : projets androgames. De nombreux cas d'utilisation Android sont couverts :

  • Utilisation des senseurs d'orientation et d'accélération
  • Utilisation de l'api Android de gestion des préférences
  • Persistance de données
  • Gestion d'animations 2D via une SurfaceView
  • Utilisations d'Intent
  • Effets sonores
  • Utilisation d'une police de caractères alternative
  • Gestion de la segmentation
  • Utilisation de l'API de déclaration XML de formes géométriques (dessin vectoriel)
  • Support multilingue
  • ...


Pour ceux qui ne connaissent pas encore l'application, voici quelques copies d'écran. Et si vous voulez la tester en conditions réelles, rendez-vous sur l'Android Market.



Fork me on GitHub