Les tests unitaires sont un élément très important du développement logiciel : ils permettent de détecter des régressions très tôt dans le processus de développement.
Cette importance rend vitale la possibilité de vérifier facilement que les tests unitaires sont correctement rédigés. Plusieurs pistes s’offrent aux équipes de développement pour le vérifier, parmi lequel les outils vérifiant la couverture de code.
Les limites de la couverture de code
Les outils de vérification de couverture de code, tels que Cobertura ou JaCoCo, permettent de mesurer la proportion du code source parcourue lors de l’exécution des tests unitaires. On saura donc ligne par ligne, instruction par instruction, branche par branche, quel code est effectivement couvert par les tests unitaires. Ces outils permettent donc de se rendre compte rapidement de certains oublis, par exemple si l’on oublie de couvrir [...] Lire la suite
java-agent.tar.gzUn agent java, qu’est ce que c’est ?
Un agent java est un élément permettant d’instrumenter du code java. Il est lancé au chargement de la JVM, grâce à l’option : -javaagent:/chemin/vers/un/jar.
Le jar d’un agent doit contenir au moins une classe déclarant une méthode dont la signature est :
public static void premain(String agentArgs, Instrumentation inst)
Il doit également contenir un Manifest indiquant l’emplacement de cette classe, grâce à l’instruction « Premain-Class ». Par exemple :Premain-Class: fr.mael.examples.agent.MyAgent
Au [...] Lire la suite
Ces derniers jours, j’ai voulu régler la problématique suivante :
Avoir la possibilité de faire des sauvegardes des documents (Papiers, musique, ebooks etc.) qui sont chez moi, sur mon petit media center. Le plus important étant de faire une sauvegarde distante, j’avais le choix entre faire ces sauvegardes sur le serveur que j’ai chez OVH, et les faire chez un hébergeur qui propose des solutions prêtes à l’emploi (style Dropbox). Comme je n’aime pas du tout le principe des Dropbox-like, et que je préfère faire les choses moi-même (on apprend généralement plus de choses…), j’ai choisi la première solution. En plus de la problématique des sauvegardes, je souhaitais avoir un accès simple aux données que je sauvegarde en ligne, de la même façon que j’ai un accès simple aux données de mon media center (Samba pour les fichiers, [...] Lire la suite
Un pense-bête plus qu’un véritable article.
Quand on utilise SLiM en lieu et place de gdm (ou tout autre gestionnaire de connexion), mais que malgré tout, on continue d’utiliser le network manager de gnome, il peut être assez pénible de devoir débloquer à la main gnome-keyring à chaque ouverture de session.
Il est possible de remédier à cela en utilisant PAM.
Il faut que les paquets gnome-keyring et libpam-gnome-keyring soient installés (et slim aussi, ça va de soi).
Il suffit ensuite de créer le fichier suivant : /etc/pam.d/slim, s’il n’existe pas, et de le remplir de la manière suivante :
#
# The PAM configuration file for the SLiM graphical login manager
#
# Disallows other than root logins when /etc/nologin exists
# (Replaces the `NOLOGINS_FILE' option from login.defs)
auth requisite [...] Lire la suite
Introduction
Suite au précédent billet, où j’expliquais comment j’avais mis en place un petit serveur web sur un arduino, j’écris ce billet dans lequel je vais montrer une application android que j’ai faite pour contrôler le serveur web.
Une image de télécommande
Je voulais que l’interface de l’application ressemble à une télécommande, parce que c’est plus sympa. J’ai donc trouvé une image de télécommande que j’ai un peu modifiée :
(oui, c’est moche)
Il faut ensuite faire en sorte [...] Lire la suite
Introduction
Voici le premier billet d’une série (qui pourrait ne pas aboutir, si je n’arrive pas à faire ce que je veux) dans laquelle j’essaierai de construire une télécommande universelle.
Le principe est le suivant : j’aimerais me passer de toutes mes télécommandes à infrarouge. Parce que c’est encombrant, qu’il faut parfois recharger les piles, qu’elles risquent de se casser, et aussi parce que j’ai envie de m’amuser. La solution est donc de faire une télécommande universelle. Mais j’aimerais également que cette télécommande puisse être connectée au réseau local, afin d’envoyer des commandes depuis n’importe quel terminal connecté (surtout un smartphone, en fait).
Pour réaliser ce projet, j’ai décidé d’utiliser [...] Lire la suite
Introduction
Il peut parfois être utile d’accéder à un port série (RS-232) en Java (ou tout autre langage). Par exemple, pour la connexion avec certains automates qui utilisent cette connectique.
Les trames envoyées via un port série sont généralement simples, la complexité n’est pas dans le traitement de ces trames, mais plutôt dans la connexion avec l’automate, et la mise en place d’un environnement de test (utile quand on n’a pas la machine pour tester).
J’utiliserai RXTX pour la communication entre l’application et le port série. RXTX est une librairie Java, qui utilise JNI (Java Native Interface) pour communiquer avec des ports séries ou parallèles. L’utilisation de JNI implique l’installation d’une librairie native propre à l’OS (.so pour GNU/Linux, .dll pour [...] Lire la suite
Selon Wikipedia, la recherche texte plein est :
une technique de recherche textuelle dans un document électronique ou une base de données, qui consiste pour le moteur de recherche à examiner tous les mots de chaque document enregistré et à essayer de les faire correspondre à ceux fournis par l’utilisateur.
C’est donc ce que font tous les moteurs de recherche du web : rechercher des occurrences de mots dans un ensemble de textes. Ce genre de recherche n’est pas adaptée à l’utilisation d’un système de gestion de base de données relationnelle, car il est très fastidieux de produire les requêtes qui permettront de faire des recherches de ce style. De plus, le SQL ne permet pas l’approximation sur les recherches. Par exemple, si je fais une recherche sur le verbe « débuter » sur [...] Lire la suite
Dans mon article précédent, j’avais présenté les fonctions principales de Feng Office. J’ai depuis uploadé mes documents pour les gérer dans l’application. Mais j’ai voulu faire une petite application qui me faciliterait la vie : une application qui permettrait de scanner des documents et de les envoyer directement dans Feng Office, sans avoir à d’abord passer par une interface de scan, puis d’envoyer ensuite les documents sur Feng Office. Il a donc d’abord fallu trouver une librairie d’interfaçage avec les scanners, puis réussir à comprendre les web services proposés par Feng Office (ils ne sont pas documentés), et enfin, coder l’application.
La librairie d’interfaçage avec les scanners
Il y a deux manières principales de s’interfacer avec un scanner depuis une application : [...] Lire la suite
Feng Office (anciennement opengoo) est un outil de collaboration en ligne. Mais on peut très bien s’en servir (c’est ce que je vais faire) pour autre chose que pour la collaboration. Il permet de se passer d’un certain nombre de services de google (par exemple), pour rapatrier ses données sur son propre serveur, ce qui me parait important.
L’outil est distribué sous licence AGPL (version 3). Le langage utilisé côté serveur est le php. Côté client, c’est énormément de javascript. L’installation est tout à fait triviale : un serveur apache (ou autre), un serveur MySQL (je ne crois pas que PostgreSQL soit supporté, mais il se peut que je me trompe) et php, il n’y a qu’à pointer sur une URL et suivre les instructions.
Une fois connecté, on arrive sur cette page : [...] Lire la suite