samedi 13 septembre 2008

Audit des logiciels

Je me prépare à l’audit externe de quelques applications lundi prochain.

Pour ceux qui cela intéresse il y a la norme ISO 9126 consacrée à l’évaluation de la qualité de logiciel. Pour plus de détails : http://en.wikipedia.org/wiki/ISO_9126

Une représentation très compréhensive en français est ici.

Parmi les logiciels qui permettent de sortir certaines métriques sur le code, je peux vous recommander :
  1. Source Monitor. Support de plusieurs langages: Java, C++, C#, C, Delphi, Visual Basic et même HTML. Un outil puissant, facile à utiliser et à installer. OpenSource. http://www.campwoodsw.com/sourcemonitor.html.
    Merci à Aurélien qui m'a montré cet outil.
  2. Metrics pour Eclipse. Que pour le monde Java. Un plagin très sympathique et puissant qui s’intègre à Eclipse et qui calcule les métriques à la volée. http://metrics.sourceforge.net/

Cet audit semble être très intéressant. On devra évaluer une dizaine de l’application pendant quelques heures. J’espère ce sera très enrichissant !

Bon, c’était mon dernier post pour ce week-end ;)

Web Developer Toolbar


Pour ceux qui travaillent beaucoup avec des technologies Web (HTML, CSS, JavaScript). Un addon magique pour FireFox qui facilite grandement le déboguage et l’analyse de pages web.
Les fonctionnalités que j’utilise le plus souvent sont les suivantes :
1. Affichage des erreurs JavaScript (les messages d’erreurs sont très parlants, ce que n’est pas le cas chez IE).
2. Désactivation rapide de tous les JavaScript sur la page (avez-vous testé comment se comportent vos pages sana JavaScrip activé ?)
3. «Display form details » - affiche les détails sur les inputs (noms, id), valeurs des attributs action des balises form


Installation facile à partir de : https://addons.mozilla.org/en-US/firefox/addon/60

Des espaces à la fin des noms. Version Windows et Linux

Bonjour,

Est-ce que vous savez que les règles du nommage des fichiers sont très dépendantes du système d’exploitation. Voilà un exemple qui m’a coûté quelques jours d’investigation pour un projet sur lequel je travaille.

Sous Windows le nom du fichier ne peut pas contenir des espaces à la fin! Pour Windows les fichies :
1. ‘toto.txt’
2. ‘toto.txt ’ (un espace à la fin)
3. ‘toto.txt ‘ (deux espaces à la fin)
sont identiques et seront représentez par UN SEUL fichier sur votre disque ! Windows va tronquer les espaces à la fin.

Dans les OS comme Linux RedHat ce n’est pas le cas. Pour ce système, ces trois fichiers sont les fichiers différents. Donc, pour Linux l’espace à la fin du nom de fichier est tout à fait légitime.

Cette différence subtile m’a coûté 2 jours pour réussir à reproduire une anomalie. Vu que notre plateforme de développement est sous Windows et les serveurs de production sont sous Linux, je ne pouvais pas avoir le même comportement de l'application que nos clients.

Conclusion. La reproduction des anomalies, les tests de régression, les tests unitaires doivent être exécutés dans l’environnement le plus proche possible de votre environnement de production. C’est une règle de-facto de développement que je n’ai pas respecté. Mais, l’anomalie est reproduite et sera corrigé et moi, j’ai appris quelque-chose de nouveau et c’est ça qui compte !

dimanche 31 août 2008

Vos commentaires

Bonjour,
J'ai activé la possibilité d'écrire des commentaires par des anonymes.
Désormais vous pouvez laisser vos commentaires sans avoir besoin de posséder un compte chez blogger.com.

mardi 26 août 2008

La matrice de compétence d'un programmeur

J'ai lu un message sur le forum de RSDN.ru (Russian Software Developer Network) et j'ai tombé sur cette matrice de compétence (en anglais) :

http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm

C'est un document très bien structuré et qui rassemble toutes les domaines dont les connaissances sont primordiales pour un ingénieur en informatique.

Si vous faites des interviews techniques, cela pourra vous bien aider - vous l'imprimez ce document et lors d'un interview vous l'utilisez comme un plan.

A la fin de l'entretien vous devez avoir parcouru avec le candidat toutes les rubriques de cette matrice.

L’image ci-dessus représente l’exemple de la matrice rempli après l’interview.


Il est conseillé de conserver ce document afin d’avoir une source d’information plus ou moins formelle à partir de laquelle la décision sera prise.



lundi 25 août 2008

FAR - Soyez puissant, fort et fiable!

Bonsoir,
Si vous voulez augmenter votre performance lors du travail avec des fichiers, cet article est pour vous.
Il s’agit d'une petite application Windows qui s’appelle FAR – un manager des fichiers. (Son petit frère du monde Unix c’est le programme Midnight Commander, connu sous le nom mc)
Au premier regarde ça semble moche et même terrible, ça peut vous rappeler bon veux MS DOS. Mais, en fait, c’est hyper puissant. L’interface est sobre, mais le concept est génial. Cela sens puissance, maîtrise et fiabilité, comme un Kalashnikov AK-47 (d’ailleurs l’auteur de ce programme est un Slave) ! :)
Toutes les opérations avec des fichiers sont prévues ici ! Créer, copier, déplacer, renommer, naviguer dans vos répertoires locales, distantes (réseau local ou FTP), rechercher et plein d’autre chose. L’essentiel – c’est d'apprendre quelques raccourcis et lire le help. Pour maîtriser cet outil il suffira 2-3 jours pour un bon programmeur. Le résultat - c'est le gain de performance en plusieurs fois par rapport à l'explorateur classique de Windows.
Cela nécessitera un bouquin de 300 pages pour décrire tous les cas d’utilisation possibles de cet outil. Mais, je peux vous assurer si vous commencer à l’utiliser, vous ne pourrez pas sans se passer.
Télécharger FAR: cliquez ici.

lundi 18 août 2008

MySQL - paramètres dangereux.

Bonsoir,

Aujourd’hui, j’ai appris 2 notions très importantes de la base de données MySQL.

C’est engine storage et la variable strict_trans_tables.

Cela est de l’expérience vécue et pour ça très intéressant.

Engine Storage. MyIsam VS InnoDB. Dans MySQL il y a quelques types de engine storage. MyIsam et InnoDb sont les plus connues. Si votre base utilise MyIsam vous n’avez pas support de transactions et de foreign keys (intégrité de données peut être cassée facilement). Par contre, ce type de stockage est très performant au niveau des requets SQL. C’est le type PAR DEAULT pour les bases MySQL. InnoDB c’est un autre type de stockage qui garantit le respect de foreign keys et plus important – il supporte des transactions. J’ai fait quelques investigations sur InnoDB et découvert que ce brique est développé par un Finlandais qui est rattaché à Oracle. Vous imaginez, le système de transactions est développé par un seul ingénieur ?! Le gars il doit être très très doué…

Variable strict_trans_tables. C’est plus intéressant. A cause de cette variable, nous avons passé plusieurs jours pour comprendre la présence des bugs dans notre application. Tous les bugs ont avait la même nature. Lors des INSETRT sql, certains champs obligatoires (défini comme NOT NULL dans la description des tables) n’ont pas été déclarés, nous attendions une erreur d’insertion SQL. Et non, ça passe sans erreur. Cela nous a coûté plusieurs jours. Aujourd’hui, un gars de mon équipe a trouvé sur internet ce fameux mode strict_trans_tables. Si cette variable est absente dans l’environnement de votre base, votre base devient très permissive et sourde aux erreurs ! Les mauvaises requêtes passent sans erreurs ! C’est très dangereux !

A partir d’aujourd’hui ma confiance à MySQL est diminuée grandement.

dimanche 17 août 2008

Week-end C++. Premières impressions.

Sans aucun doute C++, c’est un langage inévitable pour un professionnel dans l’informatique. Après avoir lu un message de Sergey Solyanik j’ai décidé de se mettre à l’apprentissage de C++. J’ai passé à peine 3 jours en exploitant les notions de base de C++. J’avoue que c’est beaucoup plus difficile que Java et pour maîtriser C++ j’aurai besoin de plus de connaissance en mathématiques et en architectures des ordinateurs.

J’ai installé le compilateur free de Borland (C++BUILDER COMMAND LINE TOOLS) et j’ai trouvé un tutorial en anglais. J’ai compilé, linké et exécuté au moins une vingtaine de petits programmes en C++. Je me suis arrêté aux pointeurs et allocation dynamique. Pas des objets, des héritages, pas de programmation des IHM.

Les premières impressions sont très positives. Je ressens le contrôle plus fort sur le code que par rapport à Java. J’ai découvert qu’il existe une phase de linkage qui est absent dans le monde Java. J’ai regardé l’exécutable de « Hello World » en C++ et j’ai vu plein des appels vers API de Windows. Bref, je découvre le monde de la programmation native. Et ça m’intéresse beaucoup.

Vive C++ !

Et je vous conseil de lire le blog de Sergey Solaynik, ingénieur chez Microsoft ! Très bouleversant, surtout pour ce qui viennent du monde Java !

mercredi 13 août 2008

Magie de toString(). Eclipse. Plugin

Bonjour,
Aujourd’hui je voudrais parler d’un plugin génial pour Eclipse - JUtils ToString Generator for Eclipse.

Tout d’abord un peu de théorie de Java et de la programmation en général. Les professionnels du métier conseillent de donner une représentation textuelle aux objets.

Par exemple, vous avez un objet ‘BankAccount’ qui contient certains nombre de champs :
id, creationDate, solde, owner, isblocked… Quand vous faites

System.out.println(‘account state :’+bankAccount);

vous allez voir sur la sortie :

account state :@456FF1

si la méthode toString() de l’objet n’a pas été redéfinie.

Un pointeur @456FF1 sur l’objet dans le heap du Java ce n’est pas très utile.

Ce pour ça dans la plupart de cas il est intéressant de redéfinir la méthode toString() et présenter l’état de l’objet en affichant les valeurs de tous ces champs. Dans le cas de notre exemple, je voudrais voir quelque-chose comme ça :

account state : id = ‘870876786’ ; creationDate = ‘15/12/2001’ ; solde=’7800.70’ ; owner=’Paul Dubois’ ; isBlocked=false.

C’est plus utile. Surtout pendant du débogage ou du traçage ! Croyez-moi, ça vous aidera à trouver de bugs plus vite.

Par contre, il faut redéfinir la méthode toString(). Cela est pénible, on est paresseux et finalement on ne le fait pas.

Avec Eclipse et le plugin JUtils la méthode toString se génère automatiquement !


Allez sur le site http://eclipse-jutils.sourceforge.net/, télécharger la dernière version, dezipez dans le répertoire plugin d’eclipse. Clique droite dans l’éditeur du Java, en bas de Menu ‘JUtils ToString generator’ et suivez des instructions…

Attention ! Cette méthodologie (la représentation textuelle des objets) est déconseillée pour les applications critiques aux mémoires. L’exécution de cette méthode pour un graphe compliqué des objets peut nuire des performances de votre application.

Bonne soirée!


mardi 12 août 2008

Pas de publicité. JavaScript

-Voulez-vous un hébergeur gratuit pour votre site ?
-Oui, bien sûr !
-Dans ce cas-là, vous devez accepter la présence de la publicité sur vos pages.


En cherchant un hébergeur gratuit pour mon site personnel, je suis tombé par hasard sur http://ifastnet.com/. Il y a un gamme de services du niveau entreprise (350 MB, Apache, PHP, MySQL, POP, FTP, sous-domains, l’interface web pour la gestion du compte) à 0 euros. Une seule condition quand-même… L’hébergeur insère automatiquement la publicité dans toutes vos pages. Dommage.

En regardant le code source de ma page d’accueil avec une moche publicité en bas de la page, j’ai remarqué une petite faille dans le système d’insertion de la publicité.
En fait, ils rajoutent systémiquement à la fin de la page une balise DIV qui contient le code de la publicité.
Ce serait pas mal de cacher le dernier DIV trouvé dans la page.
En appliquant les fonctions standards JavaScript, j’ai réussi à faire disparaître toute la publicité de mon site.
1. Rajoutez une fonction javascript hideAds() :

var arr = document.getElementsByTagName("div");
arr[arr.length-1].style.visibility='hidden';
arr[arr.length-1].style.display = 'none';


2. Rajoutez une action ONLOAD dans votre balise BODY: ONLOAD = "javascript:hideAds()";


3. Tester sur les différents navigateurs. J'ai testé sur IE et FireFox et ça marche.
Bien sur, si l’hébergeur change sa stratégie d’affichage ce code ne marchera pas, mais c’est le prix à payer… A vous de choisir !

P.S.: Désolé, je n'ai pas réussi à insérer dans le post les balises HTML. Je vais chercher comment peut-on facilement échapper les caractères spéciaux dans ce éditeur du blogger.com

Avant de commencer

Bonjour,

Tout d’abord, je voudrais me présenter et dire quelques mots sur le contenu de mes posts.

Je m’appelle Voronetskyy Yevgen. Je suis ingénieur analyste et je me spécialise dans les technologies Java/J2EE. Je suis ukrainien, né à Dniepropetrovsk. Pour l’instant, je travaille à Paris, pour la société Teamlog.

Mon CV complet vous pourriez trouver sur http://yev-java.freehostia.com

L’objectif de ce blog est de partager mes idées, découvertes et astuces concernant IT.

Je ne prétends pas d’être un expert et dire la vérité absolue sur les différents aspects d’IT, c’est pourquoi je serais ravi d’avoir vos retours avec vos remarques.

P.S. : Vu que pour l’instant je vis et travaille en France et la plupart de mes collègues sont des Français, je juge utile écrire ce blog en français.

Test before

Mon premier post