Tutoriel: Gestion de projet informatique avec Subversion et Trac

Icon for post #70

Le concept de “gestionnaire de versions” m’a toujours attiré, mais en dépit de ma bonne volonté, je n’ai jamais été capable de mettre en place (et surtout de configurer) mon propre serveur svn couplé avec l’outil Trac. Depuis quelques temps, je cherchais donc une plateforme d’hébergement de projets gratuite, afin de me familiariser avec ces outils. Hé bien j’ai finalement découvert Assembla hier soir, service qui vous propose d’héberger pour vous tous les outils nécessaires à la gestion d’un projet informatique : Subversion, Trac, Wiki, Teams, Chat… Bref c’est exactement ce qu’il me fallait. Et en plus c’est gratuit :P

Assembla provides tools and services for accelerating software development

Inscription et création d’un projet

Pour l’inscription, c’est par ici. Une fois enregistré, vous pouvez créer un “espace de développement” (space en anglais) sur cette page. Entrez le nom de votre projet, un identifiant pour les différentes URLs qui seront générées par la suite, et surtout prenez soin de cocher la case “Software developers (trac) - Subversion with TRAC ticketing” dans “Setup this space for”. Autant rester indépendant de la plateforme utilisée, aussi bonne soit-elle :)

Utiliser Subversion

Si vous ne savez pas ce qu’est Subversion, cet article ne vous était pas destiné. Cependant, maintenant que vous êtes là, je ne vais pas m’en plaindre, hein :P Subversion est donc un gestionnaire de versions qui fonctionne sur le mode suivant : vous créez sur un serveur distant un dépôt contenant tous les fichiers de votre projet. Ensuite, vous et vos co-développeurs pouvez ajouter, modifier ou supprimer des fichiers sur le dépôt en créant de nouvelles révisions. Tout étant centralisé, la gestion est grandement simplifiée, et les risques de corruption des fichiers sont minimisés (le serveur arrive entre autres à détecter et gérer les conflits de versions). Read more »

[Project Euler] Problème 12

Icon for post #62

Oui, je suis de nouveau un “projecteuler-addict“… aurai-je le maximum des points à mon BAC pour autant, cela reste à prouver, mais au moins j’aurai tout fait pour :P En cette fin d’après-midi, c’est au problème n°12 que je me suis attaqué… voici l’énoncé :

The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, …

Let us list the factors of the first seven triangle numbers:

     1: 1
     3: 1,3
     6: 1,2,3,6
    10: 1,2,5,10
    15: 1,3,5,15
    21: 1,3,7,21
    28: 1,2,4,7,14,28

We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

En fait, j’ai écris plusieurs versions du solveur (en PHP), juste pour manipuler la récurrence et les variables statiques. ;) Voici la première version du programme. Notez la fonction triangle_number, totalement inutile mais assez amusante à coder (utilisation d’une variable de cache statique à cause des erreurs d’imbrication dues à la récurrence sur de grands nombres) :
Read more »

13 commandements qui régissent tout projet informatique

Icon for post #57

Trouvé à l’instant sur le blog Marketing & Technologies, de Julien Bonnel (allez-y pour consulter la liste complète des “lois” qui s’appliquent à tout projet informatique)
En ce qui me concerne, je suis particulièrement fan des principes suivants:

Loi de Brooks
“Ajouter des développeurs à un projet qui est déjà en retard, le retarde encore plus”

Loi de Conway
“Tout logiciel reflète l’organisation qui l’a créé”

Loi de Golub
“Un projet mal planifié prend trois fois plus de temps que prévu, alors que le même projet, bien planifié, n’aurait pris que deux fois le temps prévu”

Loi de Hofstadter
“Une tâche prend toujours plus de temps que prévu, même si vous prenez en compte cette loi”

Loi de Pareto
“les premiers 80% d’une tâche prennent 20% du temps. Les 20% restants prennent 80% du temps”

Principe de Peter
“Dans toute hiérarchie, toute personne a tendance à s’élever jusqu’à son niveau d’incompétence”

Tellement simple

Tellement vrai :D

Tutoriel: lister les opcodes générés par vos scripts PHP

Icon for post #45

PHP est un langage interprété : les fichiers qui contiennent le code que vous tapez sont parsés par le moteur du langage (le fameux “Zend Engine”), et les instructions qu’ils contiennent sont compilées en des instructions de plus bas niveau, instructions qui seront à leur tour exécutées pour produire le résultat attendu (ou des bugs :P ). Ce processus (code initial => compilation en opcodes => exécution) a lieu à chaque fois que le script est appelé, à moins que vous n’utilisiez un cache d’opcodes qui accélérera l’exécution de vos scripts en faisant sauter des étapes au moteur de PHP…
Maintenant, si vous êtes un maniaque de l’optimisation, ou bien si comme moi vous vous intéressez à tout donc à ce qui se passe “sous le capot de PHP”, vous vous demandez sans doute comment accéder à ces instructions de bas niveau ;)
Read more »