Dwarf Fortress Creator Explains its Complexity & Origins | Noclip Interview - YouTube

ça me rappelle ça

Donc, en gros, les cadavres de chats s'accumulent dans les tavernes de Dwarf Fortress... Enquête du débugger:

  • on a implémenté le service à table dans les tavernes
  • ⮕ les Nains jettent les verres par terre parce qu'ils s'en foutent de la propreté,
  • ⮕ l'alcool se répand par terre
  • ⮕ les chats se baladent dans les tavernes
  • ⮕ comme le programmeur a implémenté les tâches de liquide pour les tâches de sang dans les batailles, les chats ont de l'alcool sous leurs papattes
  • ⮕ les nains tâchés de sang dans les batailles avaient du sang dans les yeux et ils se les lavaient avec du savon, ce qui était étrange
  • ⮕ le programmeur implémente les paupières pour que le nain «se nettoie lui-même»
  • ⮕ le programmeur implémente le fait que les chats se nettoient eux-mêmes aussi en se léchant les papattes parce que c'est «si mignon»
  • ⮕ les chats des tavernes se nettoient en se léchant les pattes pleines d'alcool
  • ⮕ les chats sont bourrés
  • ⮕ ils finissent par crever parce que ils lèchent l'équivalent d'un verre d'alcool CE QUI EST FUCKING BEAUCOUP TROP POUR LE VOLUME D'UN CHAT ET QUE C'EST FUCKING PRÉVU DANS LE JEU QUI GÈRE LE TAUX D'ALCOOLÉMIE
  • ⮕ ILS MEURENT MÊME DE SYMPTÔMES RÉELS



Via la nouvelle version d'ALT-TAB (à base de shaarli ): https://alt-tab.org/

Mes lectures préférés de 2024 - Chez Sammy

Mais Sammy, comment tu fais ?! J'arrive pas à suivrheuuuuuu ! Déjà que tu m'as fait reprendre l'intégrale de Joe Abercombrie et que je dois relire Ficciones de Borges que je n'ai pas ouvert depuis 30 ans ...

J'avais adoré L’espace d’un an de Becky Chambers : la SF feel good, l'univers... tout.

Donc, je me note la mer de la tranquillité et station eleven, que je ne rappelle pas d'avoir lu et le déchronologue que, avec ton sens de la formule, tu m'as super bien vendu ! (salaud ! )

[EDIT] Et allez, continue surtout... Mais c'est pas vrai ! T'es pas humain ?! Liste de voitures balai (alors qu'en vrai, c'est moi la voiture balai... loin derrière !)

Via https://www.sammyfisherjr.net/Shaarli/
ans

Lego : Dernière création des studios Lucas

Les legos, dans la famille, ça a été plus ou moins une religion ... avec des pratiques différentes, toutefois...

Mon grand appliquait les notices de montage au cordeau et fil-à-plomb puis exposait les modèles montés comme sur la boîte... une fois lassé, il démontait scrupuleusement tout et rangeait les pièces dans les boîtes.

Mes filles ont utilisé les kits lego pour raconter des histoires et faire évoluer les personnages dans des scénars parfois alambiqués...

Mon dernier, lui, est plus dans le freestyle... le genre à tout mélanger dans les boîtes, OSEF des notices de montage après la première fois et en mode concepteur fou

97en67.jpg

Et dans le genre, il s'en tire remarquablement: il réfléchit à des véhicules qu'il optimise, ajoute des suspensions, se heurte à des problèmes de transmission qu'il résout à leur tour, démonte, recommence, trouve de nouvelles stratégies, réorganise son modèle... et de tâtonnement en tests empiriques, il mène une véritable recherche qui l'amène à produire des appareils d'une étonnante complexité.

Là, il a fait une prince, puis l'a installée sur un axe motorisé et - quand il s'est aperçu que les objets étaient trop bas pour les doigts - a modifié son modèle pour y ajouter un axe d'inclinaison motorisé...

Une petite démo en vidéo...

A 13 ans, il observe, tente de comprendre comment tout fonctionne, émet des théories, me demande confirmation, fait ses recherches de son côté... il y passe des heures et ça fait plaisir à voir.

Il est très fier de ses créations et son papa est très fier de lui

* fier *

Planet Crafter [early access] : pourquoi c'est bien

J'ai pris du temps pour jouer un peu à planet crafter et je dois avouer que passé la première impression de béta version mal finie - essentiellement à cause de quelques bugs de collision (non bloquants) et d'un aspect graphique un peu daté et peu élaboré de prime abord - j'ai vraiment apprécié d'y jouer...

Et c'était pas gagné parce que  en dehors des Elder Scrolls,   les jeux vidéos m'ennuient  de plus en plus...

Du coup, pourquoi ?

1. c'est un monde ouvert à la première personne

Il y a un côté immersif indéniable... on se promène dans les limites de sa réserve d'O2, on découvre de nouveaux biomes dont la plupart ne sont pas bloqués. Certaines zones sont inaccessibles à cause de la glace qui doit fondre, mais globalement, pas de blocages artificiels des zones... Si tu te casses en mode full bûchette pour l'O2, tu peux aller loin assez vite.

J'ai trouvé certaines idées plutôt bonnes, comme le fait de n'obtenir une carte que lorsque tu es en mesure d'expédier des satellites GPS en orbite. Bonne trouvaille !

2. la difficulté est bien dosée

Contrairement à Breathedge où l'on stresse beaucoup et où le level design te pousse à retourner à un point d'o2 à la dernière seconde, on ne stresse pas vraiment dans Planet Crafter: pas d'urgences, pas de moments où on doit se mettre vraiment en danger pour obtenir une ressource... si on meurt, c'est vraiment qu'on a mal dosé... C'est un jeu qui détend vraiment.

3. c'est non violent

comme subnautica, pas de tchac tchac poum poum au menu... Normal puisque le but est de terraformer la planète, donc, niveau monstres à buter, c'est plutôt calme, faut reconnaître.

Donc, on fait son petit bonhomme de chemin avec un arbre technologique simple mais satisfaisant.

4. c'est écolo

Là où satisfactory te conduit à pourrir la planète à tour de bras et te récompense pour ça, Planet crafter se place résolument aux antipodes... Tu pars d'un monde hostile à la vie et tu dois y augmenter la température et la pression progressivement, créer une atmosphère, parvenir à y développer des formes de vie simple, puis de la végétation, des insectes et enfin des poissons et batraciens.

Au lieu de devenir de plus en plus laid à force d'industrialisation outrancière, grâce à toi, un monde de roche inerte prend peu à peu vie et s'embellit progressivement.

5. Ce n'est pas compliqué (ni même complexe)

La courbe d'apprentissage du jeu est très douce: l'interface est simple, les outils sont faciles à comprendre et même l'arbre technologique est linéaire... pas de prise de tête à mettre en place une stratégie de développement vu que les items se débloquent tout seuls à certains paliers de terraformation. Pour un gars sommaire et lent à piger comme moi, c'est le top... Par contre, si tu aimes le challenge et l'organisation dantesque à la rimworld...

Peu de surprises dans ce jeu: on retrouve les choses qu'on aime et on attend avec impatience de les obtenir (coucou le jet pack )

Le plaisir immédiat y gagne ce que l'originalité y perd. On s'amuse très vite.

6. on peut automatiser

À partir d'un certain niveau de développement, on obtient des outils d'automatisation: un autocrafter et des drones... Et ça donne un nouveau souffle au jeu en ajoutant une petite dimension satisfactory pile au moment où on commençait à en avoir marre du combo répétitif farm de ressources/craft... ça relance vraiment l'intérêt sans compliquer le jeu... et de façon assez naturelle...

Conclusion

Je suis parvenu à l'étape où l'on attend l'apparition des mammifères et on voit clairement qu'ils ne sont pas implémentés car la progression est devenue très très lente... C'est donc à regrets que je quitte un monde dans lequel je n'ai plus grand chose d'autre à faire que de planter des arbres...

Si tu veux un jeu calme pour te détendre et débrancher ton esprit des emmerdes quotidiennes sans t'ajouter de la charge mentale inutile, si tu as aimé subnautica et satisfactory, si tu as peu de temps devant toi pour tes sessions de jeu... alors, planet crafter est pour toi...

5 extraits CSS que tout développeur front-end devrait connaître en 2024

Il y a de ces trucs en CSS quand même...

Quelques notes perso ici...

:has()

styler le parent en fonction du nombre d'enfants

Pour modifier une grid par exemple...

main:has(> :nth-child(5)) {…}

styler un élément selon l'état d'une checkbox

Pour appliquer un darkmode

html:has(#dark-mode:checked) {…}

styler un form dont au moins un des items est invalide

form:has(:user-invalid) .error {
  display: block;
}

L'imbrication CSS

Et moi qui pensais que ce n'était réservé qu'à des sass & consorts !

Voilà qui permettra de mieux organiser le code et le rendre plus lisible...

/*AVANT*/
.nesting {
  color: hotpink;
}
.nesting > .is {
  color: rebeccapurple;
}
.nesting > .is > .awesome {
  color: deeppink;
}
/* MAINTENANT*/
.nesting {
  color: hotpink;

  > .is {
    color: rebeccapurple;

    > .awesome {
      color: deeppink;
    }
  }
}

[EDIT] Par contre, ce n'est pas forcément supporté par les navigateurs pas à jour... https://caniuse.com/css-nesting

text-wrap:balance

en gros, pour rendre plus homogène un texte sur plusieurs lignes... Attention, pas pour un texte de plus de 10 lignes apparemment.

via https://bookmarks.ecyseo.net/?DunHiA

Conciliateur de justice | Service-public.fr

Oh ! Bon à savoir, ça: un médiateur gratuit qui permet de régler les conflits à l'amiable:

Compétent pour

  • Problèmes de voisinage (bornage, droit de passage, mur mitoyen)
  • Différends entre propriétaires et locataires ou entre locataires
  • Différends relatifs à un contrat de travail
  • Litiges de la consommation
  • Litiges entre commerçants
  • Litiges en matière de droit rural
  • Litiges en matière prud'homale

On peut trouver le conciliateur le plus proche là: http://www.conciliateurs.fr/Trouver-une-permanence

Via https://shaarli.mydjey.eu/shaare/67xoyw

PHP - Notes perso sur Imagick, un résumé de pourquoi je vire GD à coups de pompes dans l'oignon.

Allez, pour une fois, j'ai un peu de temps devant moi, je vais éplucher un peu la lib Image magick dont je parlais il n'y a guère...

La base

charger UNE image

Simple: pas besoin de plusieurs fonctions selon le format, il suffit de $images = new Imagick('image.jpg');

charger DES images (et là c'est fort)

Même pas nécessaire de passer par un foreach, on fournit le tableau des fichiers voire directement un glob: $images = new Imagick(glob('images/*.JPG'));

Sauver une image

$im->writeImage('image.jpg');

Faire une miniature

Si on laisse une dimension à 0, les proportions sont conservées (quand tu vois la merde que c'est avec GD !) $image->thumbnailImage(100, 0);

Output une image

header('Content-type: image/jpeg');
$image = new Imagick('image.jpg');
# ici on effectue un traitement puis on sort le résultat
echo $image;

Récupération d'infos sur les images

  • taille $im->getImageWidth() $im->getImageHeight()
  • format $im->getImageFormat()

création d'une nouvelle image

$im->NewImage(largeur,hauteur,couleur de fond);

création d'une couleur

Comme pour GD, il faut créer un objet couleur dans les traitements d'image, mais c'est plus simple qu'avec GD (et plus complet): il suffit de passer une couleur selon les normes CSS. Du coup, la transparence n'est pas gérée par une connerie de paramètre «alpha» mais simplement par ... rgba()... 💖

$couleur=new ImagickPixel("white");
$couleur=new ImagickPixel("#FFF");
$couleur=new ImagickPixel('rgb(255,255,200)');
$couleur=new ImagickPixel('rgba(255,255,200,0.5)');

🆒 ⮕ Ça peut paraître compliqué, mais en fait, dans les fonctions où on est sensé utiliser ImagickPixel, je me suis aperçu qu'on pouvait tout simplement passer une string contenant la couleur css... elles se démerdent seules. 😍

Traitements

Ajouts

  • de bordure ->borderImage(couleur,largeur bords verticaux, largeur bords horizontaux): $im->borderImage(new ImagickPixel("white"), 5, 5);
  • de texte :
  • de stéganographie (cacher un filigrane dans une image) ->steganoImage():

Modification de couleurs

  • sepia ->sepiaToneImage(force) : une valeur raisonnable est 80 (sic)
  • solarisation ->solarizeImage(force)
  • négatif ->negateImage(gris): $im->negateImage(0);
  • niveaux
    • $im->normalizeImage();
    • $im->autoLevelImage();
  • gamma ->gammaImage(niveau) : $im->gammaImage(5);
  • contraste $im->contrastImage(niveau)
  • luminosité et contraste $im->brightnessContrastImage(niveau luminosite, niveau contraste);
  • égalisation $im->equalizeImage()
  • coloriser ->colorizeImage(couleur,opacite) : $im->colorizeImage("red",0.5); 🤬 pas réussi à l'utiliser pour ce test...

Modification de taille et d'orientation

  • redimensionner :
    • ->resizeImage(largeur,hauteur, filtre, flou) : $i->resizeImage(250,0,Imagick::FILTER_POINT,0);
    • ->scaleImage(largeur,hauteur): pas encore compris la différence avec la précédente
    • recadrer ->cropImage(largeur,hauteur,x,y): $im->cropImage(200,200,50,50);
    • 💖 créer une miniature à la taille donnée en recadrant l'image autour du centre ->cropThumbnailImage(largeur,hauteur)
  • retourner :
    • $im->flipImage() pour retourner horizontalement
    • $im->flopImage() pour retourner verticalement
  • pivoter ->rotateimage(color, $angle): $im->rotateImage(new ImagickPixel('#00000000'), 75);

Modifications de qualité

  • modification d'opacité ->setImageOpacity(0-1) : $im->->setImageOpacity(0.3);
  • netteté ->sharpenImage(rayon, deviation,canal):
  • amélioration ->enhanceImage()
  • flou :
    • flou tout court ->blurImage(rayon, décalage): $im->blurImage(5,2);
    • gaussien ->gaussianBlurImage(rayon, deviation) : $im->gaussianBlurImage(5,2);
    • de mouvement ->motionBlurImage(rayon,deviation,angle) : $im->motionBlurImage(5,5,45);
  • réduction du nombre de couleurs ->posterizeImage(nb de couleurs, 0/1) :$im->posterizeImage(5,0);
  • ajout de bruit ->addNoiseImage(type) : `$im->addNoiseImage(imagick::NOISE_GAUSSIAN ); voir les constantes de type de bruit

Modification d'aspect et déformations

  • aspect crayon $im->sketchImage(rayon, deviation, angle);
  • aspect fusain $im ->charcoalImage(rayon, deviation);
  • aspect emboss ->shadeImage(gris, angle, hauteur):
    • $im->->shadeImage(1, 90, 2); # emboss + image grisée
    • $im->shadeImage(0, 90,2) # emboss sur l'image d'origine (couleur)
  • peinture à l'huile ->oilPaintImage(rayon) : $im->oilPaintImage(5);
  • détection de bords ->edgeImage(rayon) : $im->edgeImage(5);
  • vagues ->waves(amplitude,longueur): $im->waveImage( 10, 10);
  • déformation ->distortImage(methode, arguments[],0) : voir les constantes de déformation

interactions d'images

Conclusion

Image Magick me semble particulièrement bien nommée tant les possibilités sont énormes et la simplicité d'utilisation étonnante: on sent une volonté de se simplifier la vie lors de l'utilisation... c'est juste beau.

Je voulais mettre une image de chaque effet dans les descriptions mais:

  1. ça prenait une place de ouf
  2. je préfère reprendre certaines de mes applis/api avec imagick
  3. j'ai plus le temps, les autres arrivent
  4. j'ai la flemme.

[EDIT] En fait, j'ai fait une page de test même si tout n'est pas concluant : http://test.warriordudimanche.net/imagick/

RIDITLETEUR spécial DEV : CSS, HTML, JS, PHP...

A l'occasion d'un ménage dans les brouillons de billets, je compile les trucs DEV qui trainaient par là

Ressources CSS

Ressources JS

Ressources PHP

  • https://github.com/jcampbell1/simple-file-manager : GitHub - jcampbell1/simple-file-manager: A Simple PHP file manager. The code is a single php file.
  • https://grafikart.fr/tutoriels/authentification-2-facteurs-totp-630 : Tutoriel vidéo PHP : Authentification 2 facteurs, TOTP | Grafikart
  • https://phpbestpractices.org/ : A short, practical guide for common and confusing PHP tasks (Storing passwords, PHP and MySQL, PHP tags, Auto-loading classes, Single vs. double quotes, define() vs. const, Caching PHP opcode, PHP and Memcached, PHP and regex, Serving PHP, Sending email, Validating email addresses, Sanitizing HTML, PHP and UTF-8, Working with dates and times, Checking null and false values, Removing accent marks (diacritics) )

Tiny Tims Adventures - YouTube

Pour toute personne ayant envie de sourire - voire de rire - aujourd'hui, je partage la chaîne de Tim, un Anglais qui imite à la perfection un enfant de «trois ans bientôt six» et fait des blagues aux gens...

Fous rires garantis

Everything, Everywhere, All at Once - Chez Sammy

Il était passé complètement à côté, le Bronco...

J'ai trouvé le film long et le côté déjanté, appréciable au début, a fini par me perdre...

Tu m'as donné envie de lui redonner une chance, en particulier pour le personnage de Waymond ... Allez, dès que je suis assez en forme pour pas m'endormir à 21:00 devant l'écran.

Fil RSS des articles
Caching time 0.005796 s