dimanche 20 août 2017

Une autre vue depuis Mun

C'était une jolie vue, alors je vous la met. J'ai Sol en face et Kerbin qui se lève un peu à gauche, et ma fusée à droite, depuis le pôle de Mun.

Cette capture d'écran a été prise lors de ma 3ème mission lunaire (munaire ?), et ce n'est toujours pas de la tarte. Mon respect pour Neil Armstrong, qui était déjà grand, s'en trouve d'autant augmenté, faire alunir une fusée, c'est quand même vachement compliqué.

Je continue de faire des missions lunaires les unes après les autres, pour engranger des points de science, et m'entraîner à être plus constant. La principale difficulté de la construction d'une base lunaire, est qu'il faut arriver à alunir toujours au même endroit !

vendredi 18 août 2017

Postgres et performances de l'indexage

Je suis en train d'effectuer un changement de types sur des grosses tables partitionnées (jusqu'à 1 TB par groupe de tables), et je découvre quelques aspects intéressants des performances de ce genre d'opérations. Aujourd'hui, parlons des performances de l'indexage.

Pour illustrer, voyons ce script qui créé une table avec 3 colonnes d'entiers, bytea et texte. Ajoutons 10.000.000 de lignes, et indexons chaque colonne à son tour.

create table t(f1 int not null, f2 bytea not null, f3 text not null);

insert into t
select i, i::text::bytea, i::text
from generate_series(1, 10000000) i;

create index t1 on t(f1);
create index t2 on t(f2);
create index t3 on t(f3);

Voyons à quelle vitesse chaque opération d'indexage s'est effectuée.

EntierByteaTexte
7 s18 s40 s

Alors, qu'indexer une colonne d'entiers soit plus rapide qu'une colonne de texte, ça ne me paraît pas choquant. En revanche, que le texte prenne plus de 2 fois le temps du binaire, voilà qui est surprenant !

Je n'ai pas d’explication à ce phénomène. Cependant, l'on notera que la différence principale entre le binaire et le texte est la présence d'un encodage. Celui-ci a certainement un impact lors de la création de l'index. Peut-être que Postgres revérifie que chaque chaîne est conforme à l'encodage ?

La bonne nouvelle, c'est qu'une fois l'index créé, le scan est aussi rapide pour les deux colonnes. Pas de quoi s'inquiéter, donc, mais à savoir lorsque l'on a besoin d'indexer quelques milliards de lignes avant Lundi matin.

Justement, parlons-en. Comment donc mettre à jour et indexer notre table efficacement ? Une approche qui fonctionne bien sur les machines multi-cœur est de supprimer l'héritage pour chaque table enfant, supprimer les index, et mettre à jour la table. Une fois l'opération complétée pour chaque table enfant, l'on peut recréer les index en parallèle : en effet, il est possible de créer des index en même temps sur différentes tables, et l'opération étant principalement limitée en CPU, l'on se retrouvera avec un temps divisé d'autant. Puis, l'on peut rattacher chaque sous-table à la table parent, et c'est reparti. L'on pensera à analyser les tables, car la mise à jour d'un type de colonne efface les statistiques.

Alunissage !

Enfin, après plus de 20 heures à jouer sur Kerbal Space Program, j'ai réussi à faire alunir un Kerbal, et à le faire revenir sur Kerbin. C'était pas de la tarte, et il m'a fallu m'y reprendre à plusieurs fois pour réussir la phase finale de l'alunissage, qui est quand même assez technique.

J'étais aussi très limite question carburant, et il m'a fallu optimiser mon retour aux petits oignons. Hors de question de freiner en arrivant sur Kerbin, c'est donc mon bouclier thermique qui a tout pris, en protégeant mes armoires pleines d'instruments scientifiques.

Au final, c'est une belle moisson, avec 332 points de science gagnés dans cette mission. En particulier, le retour d'un échantillon de sol lunaire m'a rapporté 120 points à lui tout seul.

Maintenant, il s'agit d'y retourner, avec peut-être un peut plus de carburant pour éviter les pics de stress, un "science lab" pour engranger les points, et peut-être mettre en place les prémices d'une base lunaire ?

mercredi 16 août 2017

Des coussins

Je génère des coussins ! C'est particulièrement ludique, puisque l'idée présentée dans ce tutorial vise à créer un coussin en gonflant une structure de type tissu avec un champ de force. Le tutoriel génère un coussin rectangulaire, mais rien n'empêche de tenter d'autres formes, comme ce coussin rond ou ce coussin cylindrique.

Tout cela est fort amusant, rend à toute allure, et me fournit une inspiration bien venue pour ma prochaine scène (que j'espère arriver à animer, cette fois ci...).

samedi 12 août 2017

Plus de couloir

Mon couloir, un poil plus meublé. En plus des appliques, j'ai rajouté ma table. Le tout ne rend pas trop mal, mais il a fallu de la patience, avec un temps de rendu de 40 minutes pour avoir suffisamment de samples pour éviter trop de lucioles et trop de bruit. Hors de question d'en faire une animation, donc.

L'image telle qu'elle est me plaît, mais il manque sans aucun doute quelque chose sur le mur du fond. Une porte entrouverte, peut-être ?

mercredi 9 août 2017

Modélisation d'une enclume par BlenderGuru

Excellent (comme toujours) tutoriel du Blender Guru sur la modélisation d'une enclume. Il passe en revue plusieurs techniques de modélisation, et en particulier comment bien utiliser les opérations booléennes.

Autant, avec un raytracer comme PovRay, les booléens sont nos meilleurs amis, car l'on parle de formes géométriques mathématiquement définies (une sphère, un plan...), autant, quand il faut travailler avec des formes définies à partir de petits polygones, les booléens font un peu n'importe quoi, et les faces partent dans tous les sens. Et ça, explique Andrew Price, ça casse ensuite tout plein de choses, en particulier le modificateur subsurface, qui a vraiment envie de travailler avec des quadrilatères. Il faut donc corriger l'opération booléenne pour redresser les polygones. Et ça, ça m'avait complètement échappé jusqu'à maintenant.

mercredi 2 août 2017

Un couloir

Un rendu d'un couloir, sol en bois et murs couverts d'une belle peinture verte, appliques murales du plus bel effet.

Maintenant, c'est bien l'image que je cherchais à obtenir, mais il y a encore beaucoup trop de lucioles pour le nombre de samples, et donc le temps de rendu. Je voulais rester dans un budget d'environ 1 minute par image, et me voilà déjà à 4m30 pour afficher un couloir tout nu...