Sunday, February 6, 2011

La souris de Smilla

Smilla, La fille d'un de mes collègues, devait donner dans son école un bref exposé sur sa souris.

Avec son papa, ils ont alors pensé qu'il serait amusant de compléter cet exposé avec le calcul (simplifié) de la population des souris.

Voici les hypothèses:
  • Chaque souris femelle donne, pour la première fois après 10 semaines, puis toutes les 6 semaines, naissance à 6 souriceaux (3 femelles et 3 mâles)
  • Aucune souris ne meurt (l'espérance de vie d'uns souris est d'environ 2 ans)
  • Toutes les souris ont tous des petits (c'est-à-dire toutes les femelles :-)).
  • Nous commençons avec une seule souris femelle (-> Immaculée Conception :-))
Combien de souris aurons nous après x semaines ? Essayez de calculer la population pour x=52 (c'est à dire la population après 52 semaines).

Bonne chance!



Suite...

J'ai pour ma part résolu ce problème avec un petit programme Perl :

#!/usr/bin/perl

use strict;

my $INITIAL_POPULATION = 1; # Only Females!
my $GESTATION1 = 10; # GESTATION1 has to be
my $GESTATION2 = 6; # greater than GESTATION 2
my $FORK_M = 3;
my $FORK_F = 3;
my $MAX_WEEKS = 100;

my $population = $INITIAL_POPULATION; # Initial population
my @female = (map(0, (0..$GESTATION1 - 2)), $INITIAL_POPULATION);

foreach my $week (0..$MAX_WEEKS) {
printf ("%3i -> %20s\n", $week, $population);
my $x = $female[$week % $GESTATION1];
$population += $x*($FORK_M + $FORK_F);
$female[$week % $GESTATION1] = 0;
$female[($week + $GESTATION2) % $GESTATION1] += $x;
$female[($week + $GESTATION1) % $GESTATION1] += $x*$FORK_F;
}

Ce programme utilise peu de mémoire. En plus des constantes, il à besoin d'un "array" (@female) de 9 INTEGERS, et de 3 variables INTEGER : un compteur ($population), un itérateur ($week) et une variable temporaire ($x).

Sunday, January 2, 2011

Nouveau site pour le Centre Equestre de Corminboeuf

Après 9 ans de bons et loyaux services, j'ai décidé de refaire le site web du Centre Equestre de Corminboeuf avec des technologies plus récentes. En effet, quand j'ai fait ce site en 2002, j'ai choisi d'utiliser WML pour générer les pages statiques et Mason pour les pages dynamiques. Ça fonctionne toujours bien et c'est très rapide, mais le "Design" n'est plus à jour et les fonctionnalités dynamiques sont très limitées.

CMS ou Framework ?

Beaucoup de sites sont fait aujourd'hui avec des CMS (Content Management Systemes). Les CMS les plus populaires sont Joomla!, Plone, Typo3 ou Drupal. J'ai essayé quelques un de ces CMS et on arrive en effet à rapidement mettre un site en service.

Pour moi, il est important que le site puisse offrir des services (inscriptions aux camps de vacances, gestion des leçons, annonces de changements pour les concours hippiques, ...) et c'est là que les CMS montrent leur limite. Drupal se laisse assez facilement étendre et l'API est bien documenté mais il faut coder en PHP et ce n'est pas vraiment mon langage préféré. Plone se laisse étendre en Python, mais j'ai trouvé ça vraiment très compliqué.

Un "Framework" comme Django me donnerait beaucoup plus de flexibilité pour réaliser les services. De plus, je peux programmer en Python Django est vraiment une excellent framework qui simplifie grandement le développement de services.

Après avoir lu plusieurs pages web (Drupal or Django? A Guide for Decision Makers, The Onion’s Migration from Drupal to Django, Making the case for Django (vs. Drupal), Bye Bye Drupal, Hello Django!) j'ai décidé de faire le site avec le framework Django.

Technologies utilisées

Comme motionné précédemment, j'ai choisi de faire le nouveau site avec Django. De plus, j'ai choisi d'utiliser le framework CSS "Blueprint" et la librairie Javascript "JQuery". Pour stocker le contenu statique (Images, PDF, Javascript, CSS, ...), j'ai choisi d'utiliser Dropbox qui offre gratuitement un stockage de 2GByte.


Prochaines étapes...

Il me reste maintenant à coder le nouveau site. Je partagerai l'avancement du projet sur ce Blog.

Saturday, January 1, 2011

Petit cours d'électronique digitale (3)

Dans ce troisième cours, je vous propose de revenir à l'idée du "Hello World" que j'ai mentionné dans le premier cours. Maintenant, je vous propose un circuit qui dit "Hello World" en code morse!

Vous pouvez lire l'article entier sur mon site du petit cours d'électronique digitale.