La propriété svn:externals et les révisions
Vous devez être nombreux à utiliser Subversion comme outil de contrôle de code source. Même si on entend parler de plus en plus des VCS distribués comme Git, Bazaar ou Mercurial, Subversion reste une excellente solution. C’est en tout cas celle que j’utilise quotidiennement depuis un moment. Si vous avez l’habitude d’intervenir au niveau de la gestion de configuration de vos projets, vous vous êtes probablement déjà posés tout un tas de questions relatives aux « bonnes pratiques svn ».
J’ai envie aujourd’hui de vous parler de l’une d’elles, concernant la propriété svn:externals
, qui permet de créer des dépendances entre projets versionnés.
(more…)
Au delà de l’Intégration Continue : le Monitoring Continu
Je viens de terminer l’écoute d’un des derniers podcasts de Scott Hanselman, dans lequel il échange avec Owen Rogers. La discussion tourne autour de l’intégration continue. Owen est assez au courant : il est l’un des créateurs de CruiseControl.NET, le serveur d’intégration continue sans doute le plus utilisé dans le monde .NET.
Ce que j’ai trouvé intéressant, voire original dans cette discussion, c’est le développement qui a eu lieu autour de l’idée du monitoring.
En introduction, Scott joue l’ingénu et demande à Owen pourquoi on aurait besoin d’un serveur d’intégration continue alors qu’un pauvre script planifié pourrait très bien faire l’affaire. Owen lui fait la liste des principales caractéristiques et avantages d’une solution comme CruiseControl, et insiste tout particulièrement sur la capacité d’un tel système à produire et agréger différents rapports concernant les builds et les projets. Il explique également qu’au delà des fonctionnalités de journalisation et de statistiques, un outil d’intégration continue offre des mécanismes de notification pouvant informer les équipes en temps réel, et leur fournir des détails sur l’état des différentes builds.
En effet, la notion de feedback est indissociable de l’intégration continue.
L’effet Tetris en informatique
Quand on est au niveau 3, ça va, on peut encore placer les pièces comme on le veut. Je veux dire par là qu’il est possible de les placer de façon presque optimale, pour faire un gros bloc bien compact sur la gauche de l’écran en attendant une grande barre pour dégager 4 lignes d’un coup. Les 4 lignes d’un coup, ça s’appelle un Tetris, d’ailleurs.
Lorsqu’on arrive au niveau 10, par exemple, il devient plus dur d’enchainer les Tetris. Je suis certain qu’on peut trouver un japonais sur YouTube qui y parvient en chantant le générique de Naruto à l’envers, mais nous ne nous laisserons pas distraire pas les exceptions de ce genre aujourd’hui. Au niveau 10, on ne peut pas enchainer les Tetris, c’est tout. Pourtant, il y a pas mal de gens qui arrivent à tenir un moment au niveau 10, jusqu’au niveau 11 même, et beaucoup plus loin encore.
Parce qu’ils ne cherchent pas à enchainer les Tetris, justement. S’ils essayaient, le temps de réflexion nécessaire au placement de chaque pièce serait largement supérieur à celui qui leur serait accordé. Les pièces tomberaient alors les unes après les autres sans avoir été pilotées, en formant un petit tas famélique qui atteindrait rapidement le haut de l’écran.
La conclusion est la suivante : Le choix d’une solution « assez bonne » peut s’avérer plus rentable que d’investir beaucoup de temps et d’efforts dans la recherche d’une solution « très bonne », ou « parfaite ».
Et ça a même un nom : l’effet (ou stratégie) Tetris. On en trouve quelques bons exemples d’application dans le monde de l’informatique.
(more…)
15 comments