Errements et manque de motivation …

Premier post de mon “cahier d’entrainement” perso. L’idée est de noter ce que je fais au fur et à mesure, noter mes impressions, etc. Et quand je serais un pépé tout frippé, je pourrais relire tout ça et me dire “pitain j’avais la fritte à l’époque ! Vindiou !” :)

Donc, grosse séance d’escalade (3h30 environ) Problème : manque de motivation totale. En gros, la séance s’est passé comme suit :

  • Echauffement rapide ~40min
  • Travail de nouveaux blocs courts (difficulté moyen / dur) : ~40min
  • Travail de blocs durs (un nouveau et un ancien à enchainer) : ~40min
  • Errement dans la salle en quête de motivation. Quelques jeux orientés “débile” avec des potes : ~1H
  • Bourrinage : jetés et no-foot : ~30min

Problème d’un sport aussi physiquement exigeant que l’escalade, c’est que dans les moments de démotivation, c’est extrêmement dur de faire quoi que ce soit d’utile … Pour progresser, obligé de forcer. La douleur et les efforts musculaires violents font partie intégrante de l’escalade, et ce n’est pas évident à supporter lorsque la motivation manque. J’ai pas encore trouvé de solution à part avoir quelques potes près à créer des jeux. C’est toujours plus marrant de grimper à plusieurs, essayer les mouvements improbables sortant de nos esprits tordus :) Mais si y’a personne … dur dur.

Objectif de la prochaine séance : rési / conti. Bosser uniquement des blocs où je suis capable d’enchainer 10 mouv’ et où le problème n’est pas la difficulté d’un mouv’ mais l’enchainement de la totalité (le syndrome des doigts / bras qui s’ouvrent malgré ce que ton cerveau leur dis …)

Boucles for et performance …

Bon ben une autre découverte. Pas vraiment neuve vu que j’avais déjà trouvé un article en parlant, mais je pensais vraiment pas que ça se vérifiait.

L’article parlait des boucles for et de la manière optimale de les écrire. Entre autres, il est recommandé de partir de l’élément maximal et de terminer à zéro (alors que la plupart des gens partent de zéro et termine à l’élément maximal) La raison invoquée étant que tester la différence à zéro est plus rapide que tester l’infériorité à une valeur différente de zéro … pour moi, n’importe quel test d’égalité (fut-ce <, >, <=, >=, !=, ==) prenait le même nombre de cycles du CPU … et bien non :

#define MAX 10000000

for (int i = 0; i < MAX; ++i)
// ... quelque chose à faire ici

for (int i = MAX; i != 0; --i)
// la même chose que précédemment

La deuxième boucle est plus rapide … même en mode release avec les optimisations à fond. Pas de beaucoup, mais j’ai été surpris. Du coup, autant prendre l’habitude d’utiliser la deuxième formulation.

std::string et comparaisons de chaines

Petite découverte aujourd’hui concernant les comparaisons de chaînes de caractères via les std::string’s.

Plusieurs manières existent pour comparer une std::string à une chaine de caractère : l’opérateur == ou != et la méthode compare() Après quelques tests, il se trouve que la méthode compare est beaucoup plus rapide que la comparaison via les opérateurs. Pas de code, pas de résultats, la flemme de le faire. Mais morale : Utilisez std::string::compare() !!

Panne de courant

Après un chtit piquenique au parc de Longchamp ce midi (j’aurais jamais du mettre un jean sombre et des chaussures de ville … j’ai faillit mourir desséché) on a eu droit à une jolie coupure de courant en rentrant au taf !

Du coup notre ami Lychen nous a fait des dessins sur mon tableau véléda histoire de passer le temps :)

Les joies des file streams …

Grande découverte aujourd’hui !
Considérons le bout de code suivant :

std::fstream stream;
std::string str;
stream.open("toto.txt", std::ios_base::in);

// read until the end and print the content
while (std::getline(stream, str).eof() == false)
    std::cout << str;

// rewind
stream.seekp(0);

// re-read
while (std::getline(stream, str).eof() == false)
    std::cout << str;

A priori, le contenu est affiché 2 fois de suite ? Ben non … la première boucle atteint la fin du fichier. Or la fonction std::getline, lorsqu’elle atteint la fin du stream, fait appel à la méthode setstate(failbit) dudit stream.
Et seekp ne reset pas cet état !! Ce qui fait qu’à la prochaine lecture, lorsque l’on teste si l’on est à la fin du fichier, le test est vérifié dès le début !

Il faut donc réinitialiser les bits d’information du stream avant de faire le seekp pour que ça marche :

stream.clear();
stream.seekp(0);

Là la deuxième boucle affiche bien le contenu. C’est un peu étrange que seekp ne puisse pas réinitialiser le bit de fin de fichier tout seul …

Réglage de la qualité graphique par macro

High quality
/console farclip 777
/console horizonfarclip 6226
/console groundeffectdensity 256
/console groundeffectdist 140
/console smallcull 0
/console skycloudlod 3
/console characterambient 0

Low quality
/console groundEffectDensity 16
/console groundEffectDist 1
/console horizonfarclip 1305
/console farclip 177
/console characterAmbient 1
/console smallcull 1
/console skycloudlod 1
/console detailDoodadAlpha 1

Petit test

Yop, Bienvenue sur ce blog dont le but est de tester DotClear 2, voir comment ça marche, comment ça gère plusieurs utilisateurs, les filtres, etc.