Carte Magic perso : Corco Ungo

Deuxième carte initialement postée sur l'Assemblée de Funomanciens (le 02/01/2011) et que je reposte ici avec son commentaire d'origine.

Corco Ungo
Corco Ungo

Historiquement, il s'agit de la 3e carte que j'ai faite, elle date donc de septembre déjà.

Réalisation

La carte est réalisée avec GIMP, à partir du fond de carte de NorthNikko d'après le psd Sovelis.

La réalisation en elle-même reste assez basique : intégration de l'image avec un petit dépassement pour faire sérieux. Plus un léger effet sur le liseré bleu/noir, histoire qu'il soit pas complètement uni vu que sur les arpenteurs, il est plus large que sur les autres cartes.

L'illustration quand à elle est trouvée sur DeviantArt : Zodiac - Capricorn par Stephanie Pui-Mun Law.

Côté symbole d'extension, cf. ma carte précédente :razz:

Capacité

Pas de mécanique super originale pour cette carte, le tout découlant de l'illustration.

Bleu pour l'ambiance éthérée de l'illustration, les nuages, le vent, les oiseaux, tout ça. Noir pour les corbeaux qui sont quand même un peu des charognards puis le côté triste de l'ambiance.

Pour le nom, j'ai pioché dans le dictionnaire Quenya (l'une des langues elfique de Tolkien) :

corco
(nom) corbeau
ungo
(nom) nuage, ombre sombre

Ensuite les capacités, ça tourne autour des corbeaux, mais j'ai pris le type standard "oiseau" pour rester sur un type existant :

  • la première change une créature en corbeau (lui donnant le vol du même coup)
  • la seconde change Corco lui-même en corbeau
  • la troisième appelle à lui tous les corbeaux qui délaissent le temps d'un tour le festin que leur proposent les cadavres des créatures mortes jusque-là.

Niveau équilibre, c'est clairement pas surpuissant : la première capacité nécessite une créature bleue ou noire à transformer, ses deux points de loyauté initiaux en font un arpenteur assez peu résistant et sa dernière capacité nécessite d'avoir des cartes de créatures dans les cimetières pour être efficace...

Pour compenser ça, il ne coûte que deux à jouer et deux hybrides qui plus est, donc il est moins cher que tous les arpenteurs officiels et sa première capacité étant à Symbole : loyauté +2, il compense assez vite sa faiblesse initiale. Ça me semble donc relativement équilibré... même s'il est vrai que j'aurais peut-être pu en faire une simple rare plutôt qu'une mythique.

PS : le terme "arpenteur" est volontaire. J'aime pas le "planeswalker" non-traduit que WotC utilise actuellement.


Carte Magic perso : Buveuse d’âmes

Vu que je ne remettrai probablement pas l'Assemblée des Funomanciens en service (trop de boulot pour un site mort). Je vais reposter ici les cartes Magic perso que j'avais postées dessus, avec les commentaires d'origine.

On commence avec la première carte postée là-bas (le 29/12/2010), même si ce n'est pas forcément la plus recherchée et originale.

Buveuse d'âmes
Buveuse d'âmes

Historiquement, il s'agit de ma seconde carte, mais je l'ai retouchée par la suite.

Je suis parti d'une illustration provenant encore une fois de Deviant Art : Warmt par Nillia (pas trouvé de vrai nom, donc je laisse le pseudo).

Je partais plus sur une ambiance et un style graphique particulier que sur une originalité forte dans la capacité, d'où cette capacité relativement classique, mais qui colle bien à l'illustration : on a une sorte d'esprit qui s'approche d'un cadavre, mais avec un visage que je trouve plus souriant que triste (contrairement au personnage qu'elle est censée représenter d'après ce que je comprends du commentaire de l'auteur - oui, mon anglais reste approximatif, donc potentiellement si ça se trouve j'ai compris de travers :we:). Donc partant de là une créature Esprit plutôt noir s'imposait, avec une capacité liée aux morts.

J'ai écrit le texte d'ambiance avant d'introduire la référence aux samouraïs et chevaliers, mais après coup ça s'imposait tout en rendant la capacité un poil moins classique ^^

Concernant la puissance, d'un côté ça me semble assez fort, mais comme pour la booster il faut d'une part avoir des créatures dans un cimetière et d'autre part l'engager (ce qui empêche d'attaquer le même tour), ça me semble pas trop abusé... Cela dit, je reconnais qu'avec les cartes qui sortent actuellement, j'ai du mal à juger sur ce point, tant je trouve que la moitié des rares sont abusées par rapport à mes critères de joueur de Magic à ses débuts en France (j'ai arrêté à la sortie d'Odyssée pour ne reprendre vraiment qu'en fin d'année dernière et le moins qu'on puisse dire c'est que la puissance des cartes a un peu évolué entre temps !).

Ça, c'est pour la capacité, maintenant passons à la réalisation : c'est toujours sous GIMP, avec le xcf de Sovelis (me semble bien que celui-là il l'a fait directement).

GIMP que je maîtrise modérément (et d'autant plus modérément quand j'ai fait la première version de cette carte), donc l'idée était notamment de voir un peu ce qu'on pouvait faire avec des textures et les différents modes d'incrustation des calques... Je suis donc parti de deux autres illustrations du même auteur : Prickly Plant et So happy to see you. Ainsi, on reste dans le même style graphique que l'illustration, même si on s'éloigne un peu du style Magic classique.

Concernant le symbole d'extension, j'utilise toujours le même, mais comme c'est la première carte que je poste ici, je vais l'expliciter un peu : lorsque j'ai fait ma première carte (déjà postée sur Magic Corporation avant le cataclysme et que je re-posterai ici quand je l'aurai un peu révisée) je cherchais un truc sympa qui pourrait me servir pour d'autres cartes (donc pas lié particulièrement à celle-ci), ne trouvant rien de bien convaincant, j'ai cherché du côté des alphabets fantaisistes un "D" (première lettre de mon pseudo) et c'est le Quenya, l'un des alphabets elfiques imaginés par Tolkien qui l'emporte avec un symbole plutôt sympa ^^ Là par contre, pour le symbole, j'ai lâché GIMP que je maitrise moyennement pour mon bon vieux Picture Publisher que je connais sur le bout des doigts, même s'il est moins puissant.

Voilà voilà, je pense que j'ai environ tout dit ^^


Filtrage par mot-clé sur Twitter et Mastodon

Avec le début de la coupe du monde de foot, forcément, on se retrouve avec beaucoup de choses sans intérêt sur les réseaux sociaux. Je me disais déjà que le temps allait être long jusqu’à ce qu’elle se termine, mais en fait, il y a moyen de faire un peu de nettoyage pour rendre les choses vivables !

En effet, Mastodon et Twitter proposent maintenant (je ne saurais pas dire depuis quand), en natif un filtrage des messages, Twitter uniquement par mot-clé, Mastodon via une expression rationnelle.

Mastodon

Sur Mastodon, ça se trouve sur l’en-tête de la colonne principale, en cliquant sur le bouton “Afficher les paramètres” :

Filtre par expression rationnelle sur Mastodon

On peut donc saisir une expression rationnelle, ce qui est assez riche et permet d’englober facilement des variantes. C’est aussi assez rapide à saisir puisqu’il n’y a qu’un champ.

Merci à @Drulac@framapiaf.org d’avoir rappelé que cette fonctionnalité existe.

Twitter

Sur Twitter, ça se trouve dans les préférences et il s’agit d’un filtrage par mot-clé :

Filtre par expression rationnelle sur Mastodon

C’est plus facile à comprendre pour les non-informaticiens, mais largement plus laborieux à saisir (un mot à la fois, donc beaucoup de clics). Seul point positif : on peut différencier le comportement d’un mot-clé à l’autre en spécifiant la durée du masquage (ça peut être bien notamment quand on masque un sigle qui peut avoir d’autres sens).

Filtre par expression rationnelle sur Mastodon

Merci à @alainmi11 pour son tweet salvateur.

Voilà qui devrait permettre de vivre plus sereinement cette période difficile ^^


Archives par année dans Jekyll

Je continue dans mon exploration du monde merveilleux de Jekyll (le générateur de site statique qui fait maintenant tourner ce blog), avec une autre fonctionnalité de WordPress que je voulais reproduire : les archives par année avec menu dans la sidebar.

Ça semble trivial comme, mais non. Avec Jekyll RIEN (ou presque) n’est trivial. Je suis assez vite tombé sur le plugin jekyll-archives qui permet de générer les pages d’archive (non-paginées, mais tant pis). Je suis assez vite arrivé à un truc qui marche de ce côté-là, pas de problème majeur.

Par contre, c’était un peu plus compliqué pour générer le menu.

En cherchant un peu, j’ai fini par tomber sur cet article qui décrit comment générer une sorte de plan du site par date, basé sur une itération sur l’ensemble des articles. J’ai pu en tirer (en simplifiant) ce qu’il me fallait pour mon menu, à une exception près : le décompte des articles (forcément il n’en avait pas besoin dans son cas).

Et là, je me suis heurté à un truc : comment incrémenter une variable dans Liquid (le moteur de templates de Jekyll) ? Naïvement, j’ai tenté un simple {% assign postCount = postCount + 1 %} mais ce fut un échec cuisant. Je n’ai pas trouvé ce que fait un “+” dans ce cas, mais clairement pas une addition (ma variable valait toujours 0 et en inversant les arguments j’avais toujours 1). J’ai donc :

  1. cherché comment incrémenter une variable : rien trouvé dans la doc, forcément, on n’a que des exemples d’assignations avec une variable en dur
  2. cherché sur le net : je suis tombé sur cette doc qui parle d’un tag increment gérant des variables incrémentales indépendantes des autres variables (pourquoi indépendantes ? qu’est-ce que ça apporte ? mystère…) et semble-t-il non-réinitialisable, donc ça ne répond pas à ma question
  3. puis j’ai fini par tomber là-dessus et là, j’ai enfin trouvé : pour faire une addition, il faut passer par le filtre plus

Donc voilà, j’ai ma solution pour générer mon menu :

<h2>Archives</h2>
<ul>
  {% assign postCount = 0 %}
  {% for post in site.posts %}
    {% assign year = post.date | date: '%Y' %}
    {% if post.previous %}{% assign nextYear = post.previous.date | date: '%Y' %}{% else %}{% assign nextYear = 0 %}{% endif %}
    {% assign postCount = postCount | plus: 1 %}
    {% if year != nextYear %}
      <li><a href="/archives/{{ year }}/">{{ year }}</a> ({{ postCount }})</li>
      {% assign postCount = 0 %}
    {% endif %}
  {% endfor %}
</ul>

C’est laborieux, mais ça marche.

Reste juste un défaut : rien qu’avec ça je suis passé de 20 à 30 secondes pour régénérer mon site. C’est un peu chiant quand on veut contrôler que ce qu’on vient de faire marche (mais ça n’a aucun impact pour le visiteur puisque lui n’accède qu’à des pages statiques).

J’ai donc cherché comment on pouvait faire un peu de caching dans Jekyll. Forcément, j’ai rien trouvé de natif, mais je suis tombé rapidement sur le plugin jekyll-include-cache. Il ajoute une nouvelle instruction alternative à include et qui s’utilise exactement pareil mais n’effectue l’évaluation du contenu qu’une fois : include_cached. Du coup en utilisant ça pour mes header, footer et sidebar, j’ai pu redescendre à environ 17 seconde de temps de génération. Ça reste beaucoup, mais c’est quand même moitié moins.

Par contre, le cache en question n’est pas régénéré à chaque changement (y compris changement du template inclus) mais seulement à chaque fois que le serveur est relancé, ce qui veut dire relancer systématiquement le serveur avant de publier pour prendre en compte les mises à jour (dans mon cas nouvel article ou changement de catégorie). Du coup ça reste largement bancal comme solution, pas sûr que je garde ça sur le long terme.


Plugin de tri des catégories pour Jekyll

Comme je le disais la semaine dernière, il restait des ajustements à faire sur le blog. L’un d’entre eux était d’afficher un menu présentant notamment les catégories (et aussi les archives par années, mais ça viendra plus tard).

J’ai pas mal galéré pour trouver comment faire (ça me semble être un truc assez basique, mais ce n’est pas trop mis en évidence dans la doc). J’ai assez rapidement fini par trouver dans quelle variable chercher les catégories (il s’agit de site.categories) qui se trouvent sous la forme d’un tableau associatif où la clé est le nom de la catégorie et la valeur un tableau des articles.

Ce qui m’a pris beaucoup plus de temps, c’est trouver comment récupérer la clé lors de l’itération. J’ai fini par trouver dans la doc de Liquid (le moteur de templates de Jekyll) : lorsqu’on itère sur un tel tableau chaque item qu’on reçoit contient un tableau à deux entrées : la clé en 0 et la valeur en 1 (pour le coup, je préfère les syntaxes de Twig ou AngularJS qui sont plus claires). Pour afficher les catégories, j’en étais donc arrivé à :

<ul>
  {% for category in site.categories %}
    <li><a href="/categories/{{ category[0]|slugify:'latin' }}/">{{ category[0] }}</a> ({{ category[1].size }})</li>
  {% endfor %}
</ul>

Restait à les trier parce que j’en ai quand même beaucoup… Et là pour le coup je n’ai rien trouvé de natif. Je suis tombé sur plusieurs plugins. D’abord un premier qui avait l’air riche, mais que je n’ai pas réussi à faire fonctionner… Puis un deuxième beaucoup plus simple, mais pas complètement satisfaisant (notamment le tri ne mettait à la fin ma catégorie “À propos du blog” à cause de l’accent). Ne connaissant rien à Ruby, j’ai un peu tâtonné pour épurer le truc et corriger ce qui me gênait.

Le résultat est accessible ici : jekyll-hash-table-sort-filters

L’exemple de code précédent, après installation du plugin, devient le suivant :

<ul>
  {% assign categories = site.categories | sort_by_keys %}
  {% for category in categories %}
    <li><a href="/categories/{{ category[0]|slugify:'latin' }}/">{{ category[0] }}</a> ({{ category[1].size }})</li>
  {% endfor %}
</ul>

EDIT du 10/06/2018 à 11h10 : forcément, y avait une erreur dans la version du plugin que j’ai publiée… et qui faisait tout planter. C’est corrigé : jekyll-hash-table-sort-filters.

Et comme tout est généré une fois pour toutes, je n’ai vu le problème qu’à la génération suivante, donc aujourd’hui.