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.

Saturday, December 18, 2010

Petit cours d'électronique digitale (2)

Dans le premier cours, nous avons appris à faire clignoter une LED avec un micro-contrôleur de type Atmel "ATmega168". Je vous propose dans ce deuxième cours de continuer avec des LEDs, mais cette fois avec 8 LEDs et au lieu de simplement les faire clignoter, je vous propose de copier le scanner de "K.I.T.T", la célèbre voiture noire de la série K2000.

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

Wednesday, December 15, 2010

Petit cours d'électronique digitale (1)

La tradition veut que l'on utilise un petit programme de type "Hello World" pour démontrer un langage de programmation. Je souhaite utiliser ce même concept pour démontrer la programmation d'un micro-contrôleur de type Atmel AVR ATmega168. Je remplacerai simplement l'affichage de "Hello World" par le clignotement d'une LED.

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

Saturday, August 21, 2010

Mini Wooden Rack (22cm) for Mini Server Platform

For home users or for SME, the standard 19" racks are often just too big. Today, we have very powerful small devices and I will show here one possible solution to stack them properly.

The goal of this project is to build a cheap wooden mini rack, where small computers and small network equipment could be installed with sufficient space around them to provide a good cooling.

Here is how the final wooden rack looks like:



It is made of wooden shelves (27cm x 23cm x 5mm) with 4 holes :


and some wooden cylinders (5cm, 7cm and 10cm x 25mm ∅), with a hole in the middle and small dowels (BOSCH 30mm x 6mm ∅) :


Then you just assemble them :


And you stack them. Your devices are properly mounted and there is enough space between them for the cooling. With the spacers of different size, the mini wooden rack fits almost all equipments. The shelf is 27cm wide, but with the spacers, the device must not be wider than 22cm.


The mini wooden rack is cheap and easy to mount. I got the shelfs already cut at the right size by the woodwork shop and my father did cut the spacers and made the hole in the middle using his lathe.

Let me know if you want more information (e.g. blueprints, list of material, ...)


P.S. In the rack that you see in the pictures, I have the following equipment:
  • AsRock ION330pro server with 2 raid-1 disks and Debian "squeeze" Linux
  • External 500GB e-SATA disk for local "on-site" backups
  • PC-Engines firewall with pfSense 1.2.3
  • HP procurved 1700-8 "smart-managed" Switch (with vlans)
  • 2 Buffalo Wireless routers (one as client-bridge for the Internet access and the other as access point for a public wireless lan) with dd-wrt (Buffalo branded).

Saturday, August 7, 2010

My experience with the "SuisseID"

Last week, I decided to make the step and to buy myself a "SuisseID". I actually bought two "SuisseID" from the two provider for residential users, namely by QuoVadis Trustlink Schweiz AG and by The Swiss Post.

On Sunday (day 0), I filled the on-line form of both providers. The process is similar. You can pay with your credit card on both and "The Swiss Post" can also send you an invoice, but this will cost you CHF 8.- more

Next Monday (day 1), I did the "face-to-face" identity check. On "The Swiss Post", I had to go to a post office and everything was OK. The check was fast, efficient and free. "QuoVadis" does not have offices like "The Swiss Post", so they seems to have a partnership with "Mobile Zone" and you have to do the check there. The employee did not know much about the "SuisseID", he had to call his boss several times and the whole process was long and quite inefficient. Additionally, I had to pay CHF 10.- for this service.

On Wednesday (day 3), I already received the token from "The Swiss Post".


On Friday (day 5), I received the "PIN" code and I was able to use my new "SuisseID" certificate. "The Swiss Post" provides software for Windows, OS-X and Linux! so it worked well even on my "Ubuntu" notebook.

On Thursday next week (day 11), I also received the token from "QuoVadis". The reader is an "Omnikey" and to me, is a bit better than the one from "The Swiss Post".

Next Friday (day 12), I received the "PIN" code from "QuoVadis". I went to their web site, but they only provide software for Windows and OS-X... nothing for the Linux community.

To summarize
  • The reader of "QuoVadis" is a bit better than the one from "The Swiss Post"
  • "The Swiss Post" offers a better service: they are faster o deliver the token and the PIN code, the "Face-to-face" check is more efficient and it is also free
  • "The Swiss Post" is the only provider that offers Linux software, so if you are a Linux user, this is your best choice.