posté le 30/07/2007 à 12h30
Mise à jour :
  • Suite à la publication de ce billet, j'ai ouvert le site Eternity2.fr.
  • Si vous cherchez à vous procurer le jeu, je vous invite à le commander sur Amazon :

Le puzzle de base

Le puzzle indice n°1

Le puzzle indice n°2




Billet original :

La semaine dernière, Skorn m'a transmis un article du journal Le Monde sur Eternity II.
Il s'agit d'un puzzle dont vous pouvez essayer la démo sur le site officiel.
Le vrai puzzle, lui, est beaucoup plus grand car il fait 16 x 16 cases, et une prime est offerte à celui qui trouvera la (ou une) solution.
Forcément, la tentation est grande de faire un programme pour résoudre le problème de façon informatique.
C'est d'ailleurs comme ça que le premier Eternity a été résolu. Le problème était d'ailleurs plus compliqué à modéliser comme il s'agissait de pièces géométriques compliquées et non pas de simple carrés.
J'ai écris un premier algorithme récursif "brute force" qui trouve très rapidement les 2560 solutions du puzzle de test 4x4 (oui, il y a bien 2560 solutions en comptant les rotations shocked ).

En cherchant un peu plus j'ai trouvé plusieurs sites déjà actifs autour du projet (alors que le puzzle n'était pas encore sorti).
Par exemple Eternity2.net est un projet de calcul distribué utilisant la plate-forme BOINC pour résoudre le problème.
Il y a aussi un groupe Yahoo sur le puzzle qui est très actif. Je me suis donc inscrit dessus, et j'ai pu obtenir plein d'informations utiles, des petits programmes bien pratiques et des benchmarks pour comparer les performances des différents algorithmes.

Ce week-end le puzzle est sorti, donc je me suis acheté une boite à Toys"R"Us, ce qui est indispensable pour avoir les "vrais" pièces du jeu.



En ouvrant la boite on trouve les pièces à découper et le plateau de jeu :



Je préfère flouter l'image car il est interdit de diffuser les pièces du jeu.

Ca m'a pris un peu de temps pour saisir les 256 pièces du jeu afin de les importer dans mon programme laugh
Et il me reste encore du boulot pour avoir un algorithme efficace...

Si j'ai un peu de temps, j'essayerai aussi de faire un petit projet de calcul distribué... j'ai déjà le nom de domaine qui va bien !
Et qui sais, peut-être que dans quelques siècles j'aurai trouvé la solution tongue
posté le 18/07/2007 à 12h17
Encore un nouvel outil que je ne connaissais pas récemment !
J'utilisais MRTG pour surveiller graphiquement l'activité de mon serveur (bande passante, processeur, erreurs, espace disque, températures, etc).
Mais mes graphiques MRTG vieillissants commençait à faire pâle figure devant le puissant RRDtool (toujours du même auteur d'ailleurs).

Exemple de graphique MRTG :



Exemple de graphique RRDTool :



La tentation de passer à RRDTool est donc grande, mais RRDTool seul ne fournit que le "moteur" de génération des graphiques, il manque donc la collecte des données et l'affichage à travers une interface web.
Plusieurs outils proposent cela en s'appuyant sur RRDTool, le plus célèbre étant je pense Cacti.
J'avais déjà testé cet outil mais j'avais été déçu par certains points :
  • un peu usine à gaz pour mes besoins
  • difficile d'écrire ses propres plugins (je n'ai pas vérifié depuis)
  • plusieurs grosses alertes de sécurité
En googlant un peu, je suis tombé sur plusieurs alternatives, donc une me parraissait assez aboutie : Munin.
Dans Munin, un plugin est un petit script écrit dans le language que l'on veut (bash, perl, etc) qui renvoie juste les valeurs que l'on souhaite tracer (un peu comme MRTG, ce qui m'arrange).
Il a un fonctionnement client/serveur, le serveur s'occupe de tracer les graphiques et de les mettre à disposition à travers une interface web, et les clients s'occupent de collecter les données sur la machine hôte.
On peut donc avoir plusieurs machines dans la même interface web (là c'est le côté usine à gaz comme Cacti dont j'ai moins besoin).
Le rendu final est correct, on n'a pas des graphiques très élaborés comme permet de faire RRDTool, mais l'information utile est bien là.
Et je n'ai pas eu de mal à écrire mes propres plugins grin

Vous pouvez voir ce que ça donne ici : http://zerezo.com/munin/fanta/.
posté le 18/07/2007 à 11h45
RoundCube est un webmail IMAP utilisant les nouvelles technologies du Web (AJAX) afin de fournir une interface utilisateur conviviale, proche d'un client mail classique.
L'interface reste la plus simple possible, et est surtout très jolie comparée aux autres webmails vieillissants que je ne citerai pas wink



L'installation et la configuration restent également assez simples : une fois l'archive décompressé, je n'ai eu qu'à créer une base de donnée et à changer 5 lignes dans le fichier de configuration pour mes besoins :
  • la référence de la base de donnée
  • l'adresse du serveur IMAP
  • le domaine par défaut pour les emails
  • la langue par défaut
  • désactiver le cache (sinon les nouveaux messages n'apparaissent que quand on raffraichit explicitement le répertoire)
Le plus impressionant reste l'interface utilisateur. Attention aux habitués des autres webmails, ça change !
On double clique pour ouvrir les messages, on marque lu/non lu sans raffraichissement du navigateur... Le pari est réussi, on a vraiment l'impression d'avoir un client mail léger au lieu d'une simple interface web.
Je pense même qu'une personne qui n'est pas habituée aux webmails trouve plus rapidement ses repères, j'ai par exemple mis du temps avant de découvrir qu'on pouvait faire du drag and drop pour déplacer les messages dans un répertoire smiley



La simplicité et la légèreté a aussi ces revers, on a moins d'options que dans SquirrelMail qui s'était enrichi de nombreux plugins.
Mais le développement de RoundCube est très actif, je me souviens l'avoir testé il y a quelques mois et j'avais été déçu, donc ça bouge vite !
posté le 18/07/2007 à 10h57
La semaine dernière j'ai fini la migration en installant les DNS sur le nouveau serveur.
Mais je restais assez surpris par les performances de la machine, car il m'arrivait d'avoir de gros ralentissements dans la journée avec des pics de charge assez inquiétants... et ça ne m'arrivait presque jamais sur la veille configuration !
Après une enquête appronfondie, j'ai fini par soupçonner le processeur, car les temps de réponse variait considérablement pour des commandes habituellement très stables.
J'ai fini par réussir la compilation d'un noyau incluant le support pour les capteurs de température de ma configuration, et les valeurs renvoyées était inquiétantes : 85°C pour le processeur shocked
Après avoir posté un message sur le forum OVH, et avoir eu confirmation que le processeur se régulait en fréquence pour ne pas trop chauffer, j'ai donc ouvert un ticket pour contrôler ma machine...
Autant je suis agréablement surpris par la rapidité des interventions techniques sur indisponibilité du serveur (même quand je n'avais rien demandé, par exemple après un reboot sur un mauvais noyau), autant je suis déçu par le support par ticket car j'ai du lourdement insister pour que l'on envoie quelqu'un vérifier la machine, et encore c'était "pour me rassurer" dixit le support :)
On m'a aussi répondu que les performances étaient faibles parce que le support Hyper-Threading n'était pas activé. Effectivement le noyau officiel fournit par OVH ne l'inclus pas mais j'avais rebooté dessus pour qu'on ne me reproche pas d'avoir une configuration non standard...
Enfin, on m'a reproché de ne pas avoir été clair dans mon ticket alors que j'ai commencé la discussion par : "Serait-il possible qu'une personne vérifie le CPU de la machine (montage/refroidissement) ?".
Bilan : le radiateur était mal positionné, et forcément maintenant ça fonctionne beaucoup mieux avec une température 2 fois moins haute laugh
Je n'ai pas le droit à un geste commercial même si le serveur m'a été livré dans cet état car le SLA prévoit un dédommagement en cas d'indisponibilité.
Et pour finir les tarifs OVH ont changé cette semaine et pour le même tarif j'aurais pu avoir 3 fois plus d'espace disque (mais ça m'arrive souvent en ce moment ce genre de mésaventures, comme avec mon écran LCD) undecided
Mais... au final... je reste quand même très content de mon passage chez OVH car le rapport qualité/prix reste très bon !
posté le 13/07/2007 à 16h30
Aujourd'hui, j'ai reçu un email de Greg KH car il fait des statistiques sur les profils des contributeurs au noyau Linux : professionnels, consultants, amateurs, etc.
Du coup j'en ai profité pour me balader un peu sur son site, et je suis tombé sur cet article rigolo.
Forcément, je n'ai pas pu m'empêcher de chercher :



L'image PNG complète pèse quand même 17 Mo shocked
posté le 13/07/2007 à 14h54
Hier soir, je me suis attaqué à ce qui me paraissait être un gros travail : la migration des emails...
Contrairement aux sites webs que j'ai migré à la rache, je m'étais préparé une petite checklist pour les différentes étapes. Le but étant bien sûr de ne pas perdre de messages.
Heureusement j'ai un MX secondaire très efficace, merci Ed wink

Cela incluait :
  • La réinstallation du serveur SMTP et sa configuration pour les différents domaines. J'ai finalement opté pour Postfix.
  • La réinstallation des serveur IMAP(s) et POP3(s) et leur configuration. J'ai gardé Dovecot.
  • La réinstallation de Bogofilter et copie de la base de donnée.
  • La copie des aliases (je commence à en avoir quelques-uns laugh ).
  • La réinstallation du webmail. Cette fois j'ai opté pour RoundCube. Ca change de SquirrelMail et NOCC grin
  • L'arrêt des vieux serveurs SMTP (c'est là que le MX2 est indispensable) et IMAP/POP3.
  • Le flush des messages en attente.
  • La récupération de tous les répertoires de messagerie (800 Mo) et des règles de tri.
  • L'upload vers le nouveau serveur (c'est là qu'on réalise que 120 Ko/s c'est lent shocked ).
  • La décompression sur le nouveau serveur.
  • La mise à jour des DNS pour que mail.zerezo.com pointe sur le nouveau serveur.
Finalement, je suis assez content car ça a plutôt bien marché et je ne pense pas avoir perdu de messages dans la transition cool
posté le 09/07/2007 à 16h04
Aujourd'hui, j'ai eu la surprise de découvrir que plusieurs blogs avaient été ouverts sur TiBlog, et que de nombreux messages avaient été postés.
Malheureusement il ne s'agit pas de messages très sympathiques, puisque TiBlog a été victime de splog.
Mais ça me fait presque plaisir, car ça prouve au moins qu'ils m'ont trouvé dans un moteur de recherche cool
En plus, lors de l'inscription sur le site, le mot de passe est envoyé par email, donc ils ont vraiment du s'embêter !
posté le 04/07/2007 à 23h47
J'aime bien la page d'accueil de Yahoo! Actualités ce soir :

posté le 02/07/2007 à 17h59
Voilà, j'ai commencé la migration de quelques sites sur mon serveur dédié.
D'ailleurs si vous lisez ce message, c'est que vous pointez sur le nouvel hébergement !

Pour l'instant la migration de mes différents services se passe plutôt bien.
C'est également l'occasion de tester en douceur les nouvelles versions.
En effet, je passe de Debian Sarge sur mon serveur actuel (aka kinder) à Debian Etch sur mon nouveau serveur dédié (aka fanta) grin

J'en ai donc profité pour passer de Apache 1.3 à Apache 2.2, de MySQL 4.0 à MySQL 5.0 et de PHP 4.4 à PHP 5.2, en optant pour l'instant pour les paquets de base fourni par la distribution.
Sur mon serveur actuel, j'avais pour habitude de compiler à la main les versions récentes de PHP, mais cela devient fastidieux...
J'ai quand même eu quelques surprises avec MySQL, où des requêtes qui tournaient très bien sous MySQL 4.0 se mettent à ramer avec la nouvelle version...
Certes les requêtes étaient très mal écrites à la base, et en les modifiant légèrement tout rentre dans l'ordre, mais j'ai été surpris par cette "régression".
Plus prévisible le passage de l'option "register_globals" à "off" ne passe pas inaperçu sur certains "vieux" sites, mais là encore rien de bien méchant...

Il me reste encore les plus gros sites à migrer, mais je me suis déjà bien entraîné sur les autres donc j'espère que ça se passera aussi bien smiley
Cette fois-ci j'ai déjà modifié le "time to live" des DNS pour que la transition soit plus rapide.

Ce qui m'inquiète un peu plus c'est la migration des emails.
Il faut que je minimise l'interruption de service, en m'assurant de ne perdre aucun message et en transférant un volume important de boîtes aux lettres.
Je vais également en profiter pour changer les logiciels, peut-être postfix en remplacement de exim4, et peut-être dspam à la place de bogofilter...
Je suis juste sûr de garder dovecot dont je suis très satisfait.

Enfin, il me reste à trouver une solution élégante pour le backup.
Je pense continuer pour l'instant avec mes scripts maison qui archivent périodiquement les répertoires sensibles.
D'ailleurs Nono, est-tu intéressé pour un backup croisé ?
posté le 02/07/2007 à 01h04
Comme j'ai eu un peu de mal à trouver de la bonne documentation pour l'installation d'un serveur Counter-Strike sous Linux, j'ai décidé de compiler les informations utiles dans ce billet.
J'explique également comment installer le plugin AMX et déployer des statistiques avec PsychoStats... avec un peu de tuning en bonus !


1. Récupération du serveur dédié

Le programme d'installation décompresse l'archive dans le répertoire  "/usr/steam", donc il faut préparer le terrain.
Téléchargez ensuite l'archive du serveur dédié. Les sites officiels renvoient sur des serveurs de téléchargement où il faut créer un compte. Je vous conseille donc d'utiliser un des nombreux mirroirs disponibles.
Avec un utilisateur ayant les droits suffisants, lancez donc :

mkdir /usr/steam
wget http://www.cs-amx.com/bonus/hlds_l_1120_full.bin
chmod +x hlds_l_1120_full.bin
./hlds_l_1120_full.bin

Récupérez ensuite l'archive .tgz dans le répertoire "/usr/steam", et vous pouvez continuer avec un utilisateur normal.


2. Installation du serveur dédié

On décompresse donc l'archive qui va créer un répertoire "hlds_l" contenant le serveur dédié Half-Life.
On lance deux commandes Steam pour mettre à jour le moteur et Counter-Strike.

tar zxvf hlds_l_1120_full.tgz
cd hlds_l
./steam update
./steam -command update -game cstrike -dir .

Vous pouvez ensuite éditer la configuration de votre serveur.
De mon côté j'ai changé le fichier "cstrike/motd.txt" pour modifier le message d'accueil, et le fichier "cstrike/mapcycle.txt" pour sélectionner mes cartes préférées.
Enfin, j'ai rajouté les commandes suivantes au fichier "cstrike/server.cfg" :

log on
mp_logdetail 3
rcon_password mot_de_passe

Ceci va permettre de produire des fichiers de log contenant tous les détails de la partie.
Le mot de passe va permettre d'administrer le serveur à distance depuis la console dans le jeu.

Le serveur dédié de base est prêt.


3. Installation de AMX

AMX est un plugin qui permet d'ajouter certaines commandes utiles pour les joueurs et les administateurs.
Il est lui-même extensible à l'aide de plugins qui rajoutent toutes sortes de fonctionnalités plus ou moins utiles...
Une des options utile pour moi est que ce plugin améliore le fichier de log, en ajoutant notamment la localisation des dégâts ce qui est très utiles pour les statistiques.
Téléchargez une version adaptée depuis la page de téléchargement.
Sur ma distribution Debian Etch, j'ai du installer le paquet "libstdc++5" pour être compatible avec les binaires de base fournis.
Décompressez l'archive depuis le répertoire "cstrike" et copiez la configuration de base :

tar jxvf amx-0.9.9-steam.tar.bz2
cd addons/metamod
cp sample_plugins.ini plugins.ini


4. Lancement du serveur dédié

Voici le script que j'utilise pour lancer mon serveur dédié Counter-Strike :

screen -dmS cs nice ./hlds_run -game cstrike +maxplayers 16 +map de_dust2 +port 27015 -dll addons/metamod/dlls/metamod_i386.so

Le "nice" est facultatif, je l'ai mis chez moi comme le serveur Counter-Strike n'est pas ma priorité grin
Pour vérifier que tourne bien, lancez "screen - r cs" et vous devriez récupérer la console de votre serveur dédié.
En tapant "meta list" vous pouvez vérifier que les plugins AMX sont bien chargés et fonctionnent :

Currently loaded plugins:
      description      stat pend  file              vers      src  load  unlod
 [ 1] AMX              RUN   -    amx_mm_i586.so    v0.9.9    ini  ANY   ANY 
 [ 2] CSStats          RUN   -    csstats_mm_i586.  v0.9.9    ini  ANY   ANY 
 [ 3] Fun              RUN   -    fun_mm_i586.so    v0.9.9    ini  ANY   ANY 
3 plugins, 3 running


5. Installation de PsychoStats

Récupérez la dernière version sur la page de téléchargement.
Décompressez l'archive, et copiez le répertoire upload sur votre site web.
Connectez-vous sur le site et suivez les instructions.
Une fois l'installation terminée, pensez à ajouter une logsource pointant sur votre répertoire "cstrike/logs" dans la page d'administration.
Pensez également à récupérer le pack de cartes, et activez le support GD dans PHP.
Enfin, sur votre serveur, modifiez le fichier "~/psychostats/stats.cfg" et installez une crontab pour faire tourner les statistiques à intervalles réguliers, par exemple toutes les 15 minutes :

*/15 * * * * ~/psychostats/stats.pl

De plus, je trouvais le format des adresses pas très optimisé (notamment pour le référencement naturel).
PsychoStats utilise la bufferisation de sortie avec ob_start(), donc j'ai profité de ça pour modifier les adresses à la volée.
J'ai complété le fichier "includes/footer.php" comme suit :

$patterns = array(
        '#(player|clan|weapon|award|map)(\.php|[0-9]+\.html)\?id=([0-9]+)#',
        '#(player|clan|weapon|award|map)([0-9]+)\.html(\?|&)#',
);
$replace = array(
        '\1\3.html',
        '\1.php?id=\2&',
);
print preg_replace($patterns, $replace, ob_get_clean());

Les expressions régulières transforment les adresses de type "player.php?id=1" par "player1.html" (et les remettent sous la forme "player.php?id=1&param=2" si il y a plusieurs paramètres)...
Dans la configuration Apache j'ai rajouté la RewriteRule associée :

RewriteEngine On
RewriteRule ^/(player|clan|weapon|award|map)([0-9]+)\.html /$1.php?id=$2

Et enfin j'ai ajouté un fichier "robots.txt" pour éviter d'indexer les adresses de base avec des paramètres :

User-agent: *
Disallow: /player.php
Disallow: /clan.php
Disallow: /weapon.php
Disallow: /award.php
Disallow: /map.php

Voilà !
Pour voir ce que ça donne chez moi, ça se passe ici : http://cs.zerezo.com/

Infos TiBlog

Pseudo : Royale
Titre : Le blog de Royale
Description : Le blog de l'administrateur de TiBlog.fr où vous trouverez quelques détails techniques sur le fonctionnement de ce site.

Créer un blog !

blog gratuit

Recherche

Photo