Accès rapide aux articles de la page


Gravatar de Christophe-Marie

l’UML automatisé et le libre : c’est pas gagné! 

Je recherche en ce moment des outils qui me permettraient d’importer/exporter de l’uml pour un projet C++ que je vais faire cet été. L’idée est la suivante : je souhaiterais que les modifications de mon code soient répercutées sur un fichier contenant de l’uml sous un format quelconque, et je souhaiterais par ailleurs pouvoir générer du code à partir de ce format. Idéalement, une règle dans le Makefile, appelée à chaque génération du projet serait idéale pour ce genre de truc.

À moins que j’ai mal compris, Umbrello est bien capable de générer du code, mais malheureusement l’import est une autre histoire : si celui-ci est bien capable d’importer une classe à partir du C++, en revanche il ne génère aucun diagramme (voir la page consacrée de l’aide) :

Note that Umbrello UML Modeller will not create any kind of Diagram for showing your classes, they will only be imported into your Model so that you can use them later in any diagram you want.

J’ai aussi jeté un coup d’oeil du côté d’ArgoUml. Malheureusement, de ce côté non plus c’est pas la panacée puisqu’ici on ne parle que de java : moi, je veux du C++.

What is ArgoUML?
[...]
ArgoUML also has the ability to reverse engineer compiling Java code and generate UML diagrams for it.

En allant inspecter les moteurs de recherche, j’ai fini par tomber sur un outil intéressant : dia2code. Celui-ci prend en entrée un schéma uml en dia, et génère du code dans le langage choisi. J’ai regardé la section examples du site, c’est assez convaincant. Pour ce schéma :
Les fichiers suivants seront générés :
foowindow.cpp 1/14

#include "foowindow.h"

void FooWindow::redraw (  ){
}

foowindow.h 2/14

#ifndef FOOWINDOW_H
#define FOOWINDOW_H

#include "window.h"

class FooWindow: public Window {
  // Associations
  // Attributes
  // Operations
  public:
    void redraw (  );
};

#endif

foowindowmanager.cpp 3/14

#include "foowindowmanager.h"

foowindowmanager.h 4/14

#ifndef FOOWINDOWMANAGER_H
#define FOOWINDOWMANAGER_H

#include "windowmanager.h"

class FooWindowManager: public WindowManager {
  // Associations
  // Attributes
  // Operations
};

#endif

point.cpp 5/14

#include "point.h"

Point::Point ( float x, float y ){
}

float Point::getX (  ){
}

float Point::getY (  ){
}

point.h 6/14

#ifndef POINT_H
#define POINT_H

class Point {
  // Associations
  // Attributes
  private:
    float x;
    float y;
  // Operations
  public:
    Point ( float x, float y );
    float getX (  );
    float getY (  );
};

#endif

rectangle.cpp 7/14

#include "rectangle.h"

float Rectangle::getArea (  ){
}

rectangle.h 8/14

#ifndef RECTANGLE_H
#define RECTANGLE_H

#include "point.h"
#include "shape.h"

class Rectangle: public Shape {
  // Associations
   Point points;
  // Attributes
  // Operations
  public:
    float getArea (  );
};

#endif

shape.cpp 9/14

#include "shape.h"

shape.h 10/14

#ifndef SHAPE_H
#define SHAPE_H

class Shape {
  // Associations
  // Attributes
  // Operations
  public:
    virtual float getArea (  ) = 0;
};

#endif

window.cpp 11/14

#include "window.h"

window.h 12/14

#ifndef WINDOW_H
#define WINDOW_H

#include "shape.h"

class Window {
  // Associations
  // Attributes
  private:
    Shape visualrep;
  // Operations
  public:
    virtual void redraw (  ) = 0;
};

#endif

windowmanager.cpp 13/14

#include "windowmanager.h"

windowmanager.h 14/14

#ifndef WINDOWMANAGER_H
#define WINDOWMANAGER_H

#include "window.h"

class WindowManager {
  // Associations
   Window windows;
  // Attributes
  // Operations
};

#endif

Pas mal. Il y a de l’idée. Maintenant, cherchons s’il existe le procédé inverse. J’ai trouvé trois outils capables de générer de l’uml dia à partir du C++ : cpp2dia, autodia et medoosa. Autant vous dire tout de suite que rien de spécialement convaincant ne sort de ces programmes.

  • Le dernier de ces 3 à avoir été mis à jour semble être autodia (2007). Autodia est un script perl qui peut parser plusieurs langage, mais il semblerait que le module C++ soit buggué. D’abord, la sortie est immonde et complètement enchevêtrée. Mais ça, ça s’édite avec dia (du moment que les associations sont bonnes, moi je suis content). Ensuite il prend mal les noms des classes puisqu’il m’a embarqué l’accolade ouvrante à chaque génération de classe (Je le soupçonne en fait d’avoir oublié de gérer les namespaces). J’ai tout de même écrit à l’auteur pour lui signaler le problème.
  • cpp2dia est celui qui n’a pas été mis à jour depuis le plus de temps (mai 2003). Cependant, les screenshots ont l’air sympa. C’est un script tcl que j’ai réussi à faire marcher, mais qui ne m’a pas du tout donné le même genre de résultat que ce qu’on peut voir sur le site. Pourtant, l’idée est intéressante : au lieu de parser le programme lui-même, il se sert des ctags pour récupérer ce qui l’intéresse, comptant ainsi sur un programme qui marche assez bien et auquel on peut résolument faire confiance. Par ailleurs, il utilise neato (qui fait partie de graphviz) pour organiser le tout, donc la sortie est nettement plus lisible. Malheurleusement, j’ai eu beau traffiquer mon ~/.cpp2diarc, dans tous les sens, pas de bol pour moi, les attributs ne sont pas pris en compte (J’ai aussi contacté l’auteur pour lui demander s’il avait une astuce).
  • Il reste medoosa, sans doute le plus élaboré des trois, mais non véritablement mieux maintenu que cpp2dia (août 2003 pour la dernière release). Ce programme a été écrit par un thésard, et sait lui aussi produire des sorties assez sexy. L’idée originale est que celui-ci se sert de ccdoc, un utilitaire de documentation à la doxygen, pour générer le graphe. Malheureusement, il faut une vieille version de ccdoc (la 0.7a) pour le faire marcher, et j’ai été incapable de trouver celle-ci en téléchargement (encore une fois, j’ai contacté l’auteur pour lui signaler ce problème, lui conseillant de s’arranger avec les auteurs de ccdoc pour qu’ils remettent une vieille version en ligne, car cela nuit à son programme).

Conclusion : rien de bien convaincant pour l’instant. Cependant, je n’avais pas encore regardé bouml et je viens de voir qu’ils mentionnaient le genre de fonctionnalités que je recherche. Quelqu’un a testé? Ou bien dans le cas général, connaissez-vous un quelque chose capable de faire mon bonheur?

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

Coup de gueule : mettez vous à openPGP! 

  • 13 votes
    vote oui vote non

Si vous posez la question, même aux plus purs geeks que vous rencontrez : “et toi tu utilises openPGP pour signer tes mails?”, et bien vous pouvez être sûr que la réponse sera “non.” pour la plupart d’entre eux.

L’excuse (mauvaise) qu’on vous sort dans ce genre de cas, c’est le webmail : “J’utilise un webmail, donc ça n’est pas possible pour moi d’utiliser openPGP”. Eh bien sachez que cette excuse n’en est pas une. Par exemple, l’extension firefox FireGPG sait très bien signer vos mails.

Pourtant, falsifier un mail, c’est facile. Vraiment, je vous assure! c’est une des premières choses que j’ai appris à faire en réseaux. Le protocole d’envoi de mails, smtp (Simple Mail Transfer Protocol), ne sait tout simplement pas vérifer l’identité de l’expéditeur et ne sait pas non plus empêcher les serveurs de mails (que n’importe qui peut mettre en place - donc vous aussi) de modifier le corps des messages. J’ai envoyé des mails en tant que benoitXVI@vatican.it, alors que je savais à peine utiliser une ligne de commande (dans le cadre de TP et uniquement au sein de mon école, rassurez-vous). Et tout le monde, que ce soit gmail, yahoo, [placez ici votre fournisseur] fait pourtant confiance à ce protocol foireux parce que c’est tout simplement le standard.

Alors voilà : vous avez FireGPG, vous avez la même chose pour Thunderbird, il n’y a pas d’excuse pour ne pas s’y mettre! Le principe est simple : vous envoyez votre mail, il est signé automatiquement grâce à un système de clefs que vous avez généré auparavant. La signature permet au correspondant (s’il utilise aussi openpgp) de s’assurer que c’est bien vous qui avez envoyé ce mail, et que ce mail n’a pas été modifié. Vous avez même la possibilité d’envoyer des mails cryptés à vos correspondants, que eux seuls pourront ouvrir. Je gueule donc un petit coup. À tous ceux qui me lisent : cryptez vos mails, ou au moins signez les! Ça coûte rien, c’est super facile à mettre en place et ensuite c’est automatique. Vous voyez une raison de ne pas le faire? Moi non.

PS (Pour mes propres correspondants) : et arrêtez de m’embêter en disant que ça sert à rien. OpenPGP c’est le bien.
Le principe de PGP (wikipedia)
L’implémentation libre d’openPGP avec gnuPG (wikipedia)
Utiliser gnuPG (ubuntu-fr)
Utiliser PGP facilement avec l’extension enigmail de thunderbird (ubuntu-fr)

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

Utiliser les raccourcis de vim dans le terminal 

Je viens de découvrir ça sur le wiki des astuces de vim.org : on peut éditer ses lignes de commande avec vim!

Pour résumer le lien ci-dessus, il vous suffit de créer ~/.inputrc et d’y placer les lignes suivantes :

# les deux lignes importantes
set editing-mode vi
set keymap vi

# Exemple de chose sympa à ajouter:
# deux fois echap pour faire un clear
"\e\e": "\C-a\C-k"

À partir de ce moment là, vous pouvez utiliser echap pour passer an mode normal et éditer votre ligne de commande (par défaut, on est en mode insert).

Je suis fan, ça va encore me faire gagner du temps…

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

De nouvelles fonctionnalités pour tiny tiny rss + des boutons tiny tiny rss et vimperator 

Les développeurs de tiny tiny rss sont très sympas, ils ont écouté ma feature request et l’ont mise en place en un rien de temps. Maintenant, on a, comme sur google reader, une popup d’aide qui apparait lorsqu’on cherche un raccourci clavier.

tinytinyrss2

D’ailleurs, j’ai aussi proposé un petit bouton pour faire la pub de cet excellent lecteur de flux web :

tiny tiny rss

Libre à vous de l’ajouter sur votre site.

Au passage, si vous voulez suivre le développement de tiny tiny rss, je vous conseille de vous abonner au flux du forum

J’ai aussi fait un bouton pour vimperator!

vimperator

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

humour 

Je ne résiste pas au plaisir de vous faire profiter d’une image qui n’ira pas sans vous rappeler l’actualité d’aujourd’hui en sécurité.

debian, l\'entropie garantie

(Merci Nico!)

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

[pour les vim-users] Vimperator 1.0 est sorti! 

Hello à vous, geek obscurs ou simplement gens curieux qui venez voir ce post par curiosité!

Vimperator, pour les vimistes qui ne connaissent pas (se pourrait-il qu’il en existe?), c’est l’extension ultime pour firefox (Vim, c’est l’éditeur trop bien en ligne de commande qui apparait dans la plupart des distributions linux lorsque vous tapez “vim” dans un terminal) : cette extension vous permet de naviguer… avec les commandes de vim (!) donc sans toucher à votre souris…

Donc j,k, et h,l pour scroller verticalement et horizontalement, f pour faire apparaitre les liens (on tape le début du lien pour cliquer dessus ou bien on entre le raccourci clavier qui apparait en rouge juste à côté), shift+h et shift+l pour avancer ou reculer dans l’historique… etc. Même si ça a nécessité un petit temps d’adaptation, je ne navigue plus que comme ça (en plus, vous gagnez en place sur votre navigateur, puisque la barre d’adresse et les menus sont inutiles!).

Cette extension est en intense développement et pour l’instant, le seul moyen d’obtenir la version 1.0 est de la compiler du cvs :

cvs -d :pserver:guest@mozdev.org:/cvs login
cvs -z3 -d :pserver:guest@mozdev.org:/cvs co vimperator/src vimperator/www

Cette version cvs, vous ne pourrez la faire tourner que sous firefox3 (la version précédente existe pour firefox2, mais honnêtement elle est assez limitée). Attention, si vous venez de l’extension pour firefox2, lisez bien le manuel : certaines commandes ont changé. Par exemple, pour échapper vimperator, ça n’est plus shift+i mais ctrl+q. La principale feature gagnée est que l’on peut copier coller du texte en passant en mode visuel (shift+i pour entrer en CARET mode, puis v comme sous vim), et vous pouvez éditer les champs directement avec gvim (avec ctrl+i).

La mailing list des développeurs foisonne d’informations et de bons tuyaux, mais surtout, c’est sur le wiki que vous trouverez votre bonheur.

Bonne navigation!

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

Les lecteurs de flux rss, en ligne, indépendants, libres (suite). 

Hier, j’expliquais pourquoi je préférais de loin utiliser un lecteur de flux rss en ligne et je donnais un petit panorama des web-agregator libres que j’avais pu découvrir. J’ai fait ma petite étude, et tiny tiny rss sort à mon avis grand gagnant.

D’abord, comme rien ne vaut un petit essai pour se faire une idée, voici des liens vers les versions de démo que j’ai pu trouver :

Tiny tiny rss -> [site] [démo] :

  • Sait aggréger plusieurs flux pour en former un seul dont vous pourrez donner l’adresse à vos amis
  • Peut marcher sous PostgreSQL comme sur MySQL
  • Gestion des tags par des règles de filtrage très facile à utiliser
  • Sait s’autentifier pour lire des flux protégés (autentification simple, le https n’est pas encore supporté)
  • navigation clavier intuitive (vim-like, comme gmail)
  • bénéficie d’une extension firefox pour les notifications
  • développement très actif
  • installation difficile chez free (bug dans l’importation d’opml, voir les commentaires du billet précédent pour corriger ça, et les tags ne marchent pas du tout)

gregarius -> [site] [démo] :

  • ne marche qu’avec mysql, mais par contre buggue moins
  • un énorme avantage : supporte des thèmes et des plugins divers et variés
  • La navigation clavier est moins intuitive et moins complète
  • installation super facile
  • a aussi une bonne intégration avec firefox, mais pas de système de notification.
  • développement moins actif

Je n’ai pas trouvé de version de test disponible pour feed on feeds ->[site]. Sachez que Feed on feeds est assez vieux et que s’on développement est apparemment arrêté. Il a donné lieu à deux projets : FoFredux ->[site] [démo] et à MonkeyChow ->[site], pour lequel je dispose simplement d’un screencast (en flash, beurk). Je n’ai pas poussé beaucoup mes tests, car aucun d’eux n’a vu de nouvelle version sortir depuis 2006, ce qui est selon moi trop vieux pour espérer voir maintenus ces projets qui semblent par ailleurs assez prometteurs.

En résumé, je ne retiens que deux projets : Tiny tiny rss et gregarius. Même si gregarius et beaucoup plus facile à installer, plus stable et bénéficie d’un très bon système de plugins, ma préférence se porte sur Tiny tiny rss, qui a un développement plus dynamique, et surtout dont l’interface se révèle bien plus agréable et rapide à utiliser : si j’ai un lecteur de flux rss, c’est pour gagner en productivité.

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

Les lecteurs de flux rss en ligne libres 

Aujourd’hui, Samuel Martin a fait un billet que j’ai trouvé assez intéressant sur les avantages de liferea. J’avoue qu’il y a de bons arguments, notamment le contrôle sur les données personnelles qu’on a avec un tel lecteur et qu’on n’a pas chez les fournisseurs de services en ligne.

Cela ne me fera pas pour autant passer à liferea, car le problème majeur qu’il me pose est celui de son accessibilité dès qu’on utilise un autre ordinateur. En effet, je consulte mes flux rss de beaucoup d’endroits différents, comme par exemple les ordis de mon école. Or, comme je n’ai pas les droits pour y installer exactement tout ce que je veux. C’est dans ce genre de cas que j’apprécie de n’avoir besoin que d’un navigateur web pour m’en tirer.

Cependant, sensible aux arguments sur la protection des données personnelles, je me suis demandé s’il n’y avait pas un moyen de me récupérer un autre lecteur de flux rss en ligne, qui n’utiliserait pas mes informations personelles pour le profit d’une quelconque société (me débarassant par la même occasion du cookie google qui traine dans le cache de mon navigateur). J’ai donc fait des petites recherches sur les solutions libres à héberger sur son propre serveur. J’en ai trouvé plusieurs, que je partage avec vous. Il faut que je regarde si c’est possible d’en utiliser une sur mon compte free.

tiny tiny rss
gregarius
feed on feeds et ses petit frères FoFredux et Monckeyshow

Si vous en connaissez d’autres, je suis preneur…

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

Voler les mots de passe d’encryption dans la RAM, une action bientôt possible pour n’importe qui. 

Voici une news qui va intéresser les hackers.

Dans un des premiers billets de ce blog, je parlais de comment crypter un disque dur de manière à ce que celui-ci soit indéchiffrable si votre ordinateur se faisait voler. Cette technique comporte une faille majeure, qui à ce jour ne connait pas de solution : si votre ordinateur est allumé au moment du vol, même verrouillé en veille avec un mot de passe, on pouvait, moyennant assez peu de moyens, récupérer au vol votre mot de passe en clair directement dans la mémoire vive (j’en parlais aussi).

Puisqu’aucune solution de protection n’était connue, les chercheurs à l’origine de la démonstration “proof of concept” de la faille avaient choisi de ne pas mettre en ligne le code permettant d’exploiter celle-ci. Ce point de détail n’est plus complètement vrai : désormais, on peut trouver en ligne un système bootable sur clef usb, qui permet de récupérer, pour peu que votre ordinateur ne soit pas éteint depuis plus d’une minute, le contenu intégral de la RAM afin de l’analyser ultérieurement. Il s’agit de msramdump, que l’on peut trouver à cette adresse : http://www.mcgrewsecurity.com/projects/msramdmp/.

De là à penser que le code pour récupérer ce mot de passe sera disponible bientôt d’une façon ou d’une autre, il n’y a qu’un pas…

ShareThis

Retourner au sommaire

Gravatar de Christophe-Marie

vpnc, network-manager et enc_passwd (h4ck3r inside!) 

Je me refuse depuis toujours à installer le client vpn cisco officiel sur ma machine. Non seulement par principe (non libre = le mal), mais en plus il parait que ce con de programme se casse à chaque fois qu’on met à jour le noyau.

Jusqu’à il n’y a pas si longtemps, je m’en sortais avec vpnc. Je récupérais sa configuration à partir du fichier .pcf fournit par mon admin réseau, le tout grâce à un petit script vachement sympa fournit avec vpnc : /usr/share/vpnc/pcf2vpnc pour ceux qui sont sous ubuntu gutsy.

Je dis “je m’en sortais”à l’imparfait, car j’ai fini par me mettre à nm-applet et son plugin vpnc. Le problème de nm-applet, c’est qu’il ne prend pas en charge les .pcf qui contiennent des mots de passe obfusqués. Or, malgré le fait que ce soit complètement stupide, la plupart des gens s’entêtent à vous fournir des fichiers pcf où malheureusement ces mots de passe sont obfusqués. Oui, je dis que c’est stupide : du moment qu’on dispose du fichier .pcf, on peut se connecter. Alors avoir ce mot de passe en clair ou en crypté ne change rien : la seule chose à laquelle ce mot de passe sert, c’est se connecter, et pour remplir cette fonction, les deux marchent. Si vous me trouvez en quoi d’autre ça peut être dangereux que je dispose de la version non encryptée, dîtes-le moi…

Heureusement, je ne suis pas le seul à penser comme ça. En cherchant comment faire gérer à nm-applet les mots de passes obfusqués, j’ai fini par tomber sur un petit programme, qui décrypte ce fameux mot de passe. Enjoy!

cisco vpnclient password decoder

Compilation :

gcc -Wall -o cisco-decrypt cisco-decrypt.c \
        $(libgcrypt-config --libs --cflags)

Utilisation :

./cisco-decrypt DEADBEEF...012345678 424242...7261

Et bien sûr, tout ce code est libre… Sympa, non?

ShareThis

Retourner au sommaire

©2007 :: Hébergé par Tux-planet :: Valid CSS & XHTML :: Version 3.2.1

web tracker