Awstats et activation de plugins

Lorsque vous installez awstats (un outil pour faire des jolies statistiques de fréquentation), certains plugins sont désactivés par défaut :

  • decodeutfkeys
  • ipv6

(entre autres).

L’astuce est extrêmement simple :

Il suffit de lire les commentaires dans le fichier et de lire les modules requis :

Cherchez # REQUIRED MODULES

Respectivement, pour les deux modules :

  • Encode and URI::Escape
  • Net::IP and Net::DNS

En gros il faut installer ces « plugins Perl » Encode, URI::Escape, Net::IP et Net::DNS.

Les ordres à taper sont hyper simples : il vous suffit, en ligne de commande, de :

  • lancer la console d’outils Perl
    (ce n’est peut-être pas exactement cela, mais je le vois comme ça) : tapez
    cpan
  • puis tapez install "nom du module"
  • install Encode
  • install URI::Escape
  • install Net::IP
  • install Net::DNS

Et à chaque ordre, lorsque vous validez par la touche entrée, toute une liste de modules s’installent, et à la fin… tout fonctionne comme par magie !

ExtJS et PhoneGap : une nouvelle façon de voir les choses

Comme je l’ai toujours dit, ExtJS est une librairie JavaScript extrêmement puissante.
Le seul problème c’est qu’elle est dure à maitriser… mais les résultats obtenus sont incroyablement beaux par rapport au temps de développement.

La même société, Sencha, qui n’est constituée – apparemment – que de personnes très compétentes, a développé le même système, mais pour téléphones portables : le Sencha Touch.

Et ils se sont penchés sur ce que j’appellerai le site du moment : PhoneGap.

Ils ont fait un tutoriel qui vous permet de combiner la puissance de PhoneGap et de Sencha Touch :

http://www.sencha.com/learn/a-sencha-touch-mvc-application-with-phonegap

J’expliquerai plus en détail dans un prochain article comment fonctionne PhoneGap, mais à mon avis, c’est l’avenir pour des développeurs comme moi qui n’ont pas le temps de se pencher sur les plateformes mobiles spécifiques : je n’ai pas le temps d’apprendre tout iOS et je n’ai pas le temps d’apprendre Android. Par contre je connais bien JavaScript, je commence à bien connaitre HTML5, et grâce à PhoneGap, on peut aller loin, très loin 😉

Piano : une composition de l'une des oeuvres de de R. H. Williams (1805–1876)

L’auteur de cette composition est R. H. Williams (1805–1876). Je n’ai rien pu trouver sur cet auteur. Si vous cliquez dessus vous verrez le résultat d’une recherche sur google… et surtout si vous avez plus d’informations à son sujet, n’hésitez pas à laisser un commentaire, je l’intègrerai dans cet article.
Voici une de ses œuvres (je l’ai retenue car elle était destinée au piano bien sûr) :

Dymuniad

Elle est faite pour quartet and piano.
Elle a été composée en 1835
Cette composition est un hymne.
Sa licence est de type « Creative Commons Attribution-ShareAlike 3.0« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, la qualité est limite).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici
NB : j’ai récupéré ces compositions, qui sont entièrement libres de droit, sur ce site qui est tout simplement géniallissime : mutopiaproject

YSlow : Utiliser des domaines sans Cookie : traduction

Je viens de traduire un gros morceau du texte ici.

Lorsque le navigateur fait une requête pour une image statique, il envoie tout de même les cookies dans la requête. Le serveur ne se sert absolument pas de ces cookies. Ils créent donc un traffic supplémentaire totalement inutile. Il faut s’assurer que tous les composants statiques tels que les images sont récupérés sur des domaines sans cookie. Par exemple, il suffit de créer un sous-domaine static, et d’y mettre les composants adéquats.
Par exemple, si le domaine est www.example.org, il suffit de mettre les composants statiques sur static.example.org. Néanmoins, si vous avez déjà mis en place des requêtes sur le domaine de plus haut niveau, soit example.org, alors les cookies suivront tout de même sur static.example.org. Une solution est d’acheter un nom de domaine dédié.
Par exemple, Yahoo! utilise yimg.com, Youtube utilise ytimg.com et Amazon utilise images-amazon.com.
Un autre bénéfice concerne les proxies : certains proxies refusent de mettre en cache des composants qui ont été demandés avec des cookies. Pour la note, si vous vous demandez s’il vaut mieux utiliser example.org ou www.example.org pour votre page de base, pensez à l’impact des cookies. Le fait de supprimer www ne vous laissera pas d’autre choix que d’écrire des cookies qui seront tous diffusés sur *.example.org.
Donc, pour des raisons de performance, c’est mieux d’utiliser le sous domaine « www » et d’écrire les cookies pour ce sous-domaine.


Vous ne voyez pas que je suis en train de pleurer ? J’ai tout faux sur la plupart des sites Internet que j’ai crée. Bon, aujourd’hui c’est nettement moins problématique que si nous étions dix ans en arrière, mais c’est très agaçant de savoir que tout le travail mis en place est à revoir (règles de réécriture, traducteur, etc)… et le discours que je tenais qui va avec (pas la peine des www). On en apprend tous les jours !

Piano : quelques compositions des oeuvres de T. Turpin (1873–1922)

L’auteur de toutes ces compositions est T. Turpin (1873–1922). J’ai pu trouver sa biographie en Français. Si vous cliquez dessus vous verrez le résultat en Français.
Voici quelques-unes de ses œuvres (je les ai retenues car elles étaient destinées au piano bien sûr) :

The St. Louis Rag

Elle est faite pour piano.
Elle a été composée en 1903
Son genre est du type jazz.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, la qualité n’est pas bonne).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici

The Harlem Rag

Elle est faite pour piano.
Elle a été composée en 1899
Son genre est du type jazz.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, il ne faut pas se fier à la qualité vous pourrez faire mieux).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici
NB : j’ai récupéré ces compositions, qui sont entièrement libres de droit, sur ce site qui est tout simplement géniallissime : mutopiaproject

Word 2007 : des améliorations incontournables

Je dois vraiment rendre à César ce qui est à César. Et donc à Word ce qui est à Word. Restons honnêtes.
En fervent utilisateur de logiciels Open Source, j’essaie tant bien que mal d’éviter Microsoft © Word mais le constat est simple : le temps de tout réapprendre sur LibreOffice passe par une période si longue de frustration que j’ai préféré passer à Microsoft © Word 2007.
Bien évidemment, je n’ai eu de cesse de critiquer le fameux nouveau bandeau de boutons, qui a pris la tête à bon nombre d’entre nous, et qui continue à me prendre la tête sur beaucoup de points, mais Microsoft © Word 2007 a des améliorations tout à fait notables et dont ils ne se vantent pas trop, mais dont je vais faire l’éloge :

  • Copier coller d’URLs : ici, plus de prise de tête. Dans 2003, on copie colle une URL, et là le curseur restait collé à l’URL et tout ce qu’on tapait faisait partie de l’URL, ce qu’on ne veut, dans 99,99 % des cas, jamais. Sur 2007, hop, le coller fonctionne parfaitement, il ajoute automatiquement un espace et on peut continuer à taper comme si de rien n’était ;
  • Gestion des paragraphes solidaires. Le principe est que, très souvent, on fait un paragraphe et juste en dessous on y intègre une image. Cette image, souvent, ne rentre pas dans la page, et hop, saute sur une page suivante. Il faut alors la sélectionner, et remonter avec la souris sur le texte qu’on veut « collé » à l’image, et bouton droit => paragraphe => « paragraphe solidaire » et hop le texte devient « solidaire » de l’image et y reste collé. Sur 2003, soyons honnêtes, ça fonctionnait. Mais mal, très mal. Je ne compte plus le nombre de fois où je me suis arraché les cheveux parce que ça fonctionnait mal, voire pas du tout. Là, je n’ai jamais eu de problèmes. Absolument jamais, ça fonctionne parfaitement. Le rêve ;
  • Copier coller intelligent : une fonctionnalité aussi géniale que pratique c’est le copier coller intelligent (enfin c’est moi qui l’appelle ainsi) : supposons que vous soyez dans un paragraphe tout en italique. Vous allez dans un autre paragraphe, qui, lui est tout en gras avec une fonte totalement différente. Vous faites copier, vous revenez dans votre paragraphe italique, et vous collez. Et là c’est la magie : Word s’aperçoit que le texte vient d’un « ensemble homogène ou tout est en gras », vers un « ensemble homogène ou tout est en italique ». Il s’adapte et change la fonte, et le passe automatiquement en italique. Géniallissime. Encore plus fort : si, dans ce texte, il y a quelque chose qui ne fait pas partie de cet ensemble homogène par exemple un texte en « Courrier New », alors il laissera ce morceau, et uniquement lui, en « Courrier New ». Mais mieux encore ! Juste à côté du texte collé apparaît une petite icône, et si vous cliquez dessus, il vous propose tout de même de garder la mise en forme d’origine, au cas peu probable où vous le vouliez. Le top du top ;
  • Mode Plan : l’équipe de Word s’est enfin aperçue que le mode « affichage plan » était un mode juste temporaire, dont on n’avait que ponctuellement besoin. En pratique, hop, on clique sur « Affichage », et là il y a une icône « Plan », on clique dessus, et on a l’affichage sous forme de plan. Pratique, en plus avec les icônes très grosses, peu de chance de cliquer au mauvais endroit. Et là dès qu’on a cliqué dessus, hop une grosse icône en rouge apparaît : fermer le mode Plan. Donc dès qu’on a fini d’ajouter les titres et sous titre afin d’avoir une organisation du document un peu cohérente, hop un clic et on ferme le mode « Plan ». Tip top. Encore une fois je ne dis pas que Word 2003 ne l’a pas, je dis que c’est une fonctionnalité améliorée.

Piano : une composition de l'une des oeuvres de de Thomas Tallis (1505 – 1585)

L’auteur de toutes ces compositions est Thomas Tallis (1505 – 1585). Je n’ai rien pu trouver sur cet auteur En Français. Si vous cliquez dessus vous verrez le résultat de sa biographie, mais dans la langue de Shakespeare. Si vous avez plus d’informations en Français au sujet de ce compositeur, n’hésitez pas à laisser un commentaire, je l’intègrerai dans cet article.
Voici une de ses œuvres (je l’ai retenue car elle était destinée au piano bien sûr) :

If Ye Love Me

Elle est faite pour voix et piano.
Cette composition est une chanson.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : Fichier midi (.mid)s (zipped) (attention, la qualité n’est pas bonne).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici
NB : j’ai récupéré ces compositions, qui sont entièrement libres de droit, sur ce site qui est tout simplement géniallissime : mutopiaproject

Delphi Embarcadero et RxLib : comment installer les composants

Il risque de vous afficher un problème de SizeOf :
Il vous faut juste préciser que c’est le SizeOf de l’unité Systems, donc :

System.SizeOf()

Puis ouvrez le fichier RxConst.pas :

Il manque simplement le define 220 : ajoutez après tous les define jusqu’au 210 :

{$IFDEF VER220}
const
SDelphiKey = 'Software\Embarcadero\BDS\8.0';
{$ENDIF}

Et vous pourrez compiler puis installer les composants.
Ce sont deux petites astuces simples, mais si je les avais eues, j’aurais gagné… deux heures 😉

Piano : quelques compositions des oeuvres de E. Satie (1866–1925)

L’auteur de toutes ces compositions est E. Satie (1866–1925). J’ai pu trouver sa biographie en Français. Si vous cliquez dessus vous verrez le résultat en Français.
Voici quelques-unes de ses œuvres (je les ai retenues car elles étaient destinées au piano bien sûr) :

Gymnopédie No. 1

Elle est faite pour piano.
Elle a été composée en 1888
Son genre est du type classique.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, la qualité est très moyenne).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici

Gymnopédie No. 2

Elle est faite pour piano.
Elle a été composée en 1888
Son genre est du type classique.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, la qualité est limite).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici

Gymnopédie No. 3

Elle est faite pour piano.
Elle a été composée en 1888
Son genre est du type classique.
Sa licence est de type « Domaine publique« .
Si vous voulez l’écouter cliquez sur : fichier midi (.mid) (attention, la qualité est mauvaise).
Le plus intéressant : cliquez ici pour voir la partition
Vous pouvez éventuellement lire une jolie description de cette composition ici
Enfin, tous les fichiers de cette composition sont regroupés ici
NB : j’ai récupéré ces compositions, qui sont entièrement libres de droit, sur ce site qui est tout simplement géniallissime : mutopiaproject

Python, débutant et jeu : Soko-ban version geek

Avez-vous déjà entendu parler de Sokoban, le jeu ?
J’ai eu la formidable idée (c’est de l’humour…) de le coder en Python, et encore mieux (c’est encore de l’humour…) de le coder pour pouvoir y jouer en mode console.

\o/

J’ai commencé à développer pour qu’il soit international, donc les commentaires sont pour la plupart en anglais.

La première chose que je voulais faire c’est pouvoir faire des affichages différents. Donc, selon que votre console le supporte ou pas, vous pourrez changer l’affichage :

# Different drawings:
glob_tab_chars = \
[
    # Ground / GroundStoneDest / Wall / Player / Stone
    [ ' ', '.', '█', '☺', '☻', '○','♦' ],
    [ ' ', '.', '#', '@', '+', '$','*' ],
    [ ' ', '.', '░', '☺', '☻', '○','◙' ]
]

Voici l’écran de base :

Copie d'écran de PySoko

Voici l’écran, si on veut changer les graphismes (en cliquant sur « + » ou sur « -« ) :
Copie d'écran de PySoko

Voici l’écran, si on veut encore changer les graphismes (en cliquant sur « + » ou sur « -« ) :
Copie d'écran de PySoko

Le code orienté objet

Les classes de base

Et ensuite le plus important à mon sens : le code orienté objet. J’ai voulu apprendre l’orienté objet de python. J’ai donc crée des classes qui correspondent aux objets de base (dans l’ordre, classe du Sol sans rien, classe du Sol où il faut ranger une pierre, classe Mur, et classe Joueur) :

# Different drawings:
class Ground(object):
    def __init__(self):
        super(Ground,self).__init__() # Parent call:

class GroundStoneDest(object):
    def __init__(self):
        super(GroundStoneDest,self).__init__() # Parent call:

class Wall(object):
    def __init__(self):
        super(Wall,self).__init__() # Parent call:

class Player(object):
    def __init__(self):
        super(Player,self).__init__() # Parent call:

Classe Level

Et de la même façon j’ai crée la classe Level qui est la plus complexe, et qui contient les fonctions les plus utilisées :

  • apply_drawings_set()
    Calculer les motifs pour dessiner le tableau (oui, oui c’est plus complexe que ça n’en a l’air) ;
  • draw()
    Dessiner les motifs en cours à l’écran ;
  • register_player_move()
    Se souvenir des mouvements du joueur, soit pour pouvoir faire un « undo » (pas implémenté), soit pour pouvoir les sauver pour les rejouer (pas implémenté non plus) ;
  • move()
    Essai de déplacer un objet situé en (x,y) du décalage (add_x, add_y), sachant que le décalage peut être négatif ;
  • solved()
    Test si toutes les pierres sont bien rangées.

Classe LevelsReader

De la même façon, j’ai crée la classe LevelsReader qui lit un niveau, et l’analyse pour voir s’il est un minimum cohérent. Pas la peine d’entrer dans le détail, les fonctions sont suffisamment explicites je pense.

Bibliothèque curses

Et pour terminer, la fonction de la boucle principale qui concerne l’unité curses : def curses_main(stdscr, code). C’est ici qu’on affiche le menu, qu’on attend qu’on tape sur une touche, etc.

Notez bien : le code n’est pas terminé. C’est un début de code, relativement correctement fait. J’ai passé à peine deux jours dessus pour réussir à faire cela, donc ne m’en voulez pas trop, il n’est pas peaufiné, mais il fonctionne.

Si jamais vous l’améliorez, ce serait gentil de me faire parvenir la nouvelle version 🙂

Le lien que tout le monde attend avec impatience, la bave aux lèvres :

Cliquez ici : pysoko.tar.bz2