Note pour plus tard - The Zen of Python | Python.org

  • Préfère :
    • la beauté à la laideur,
    • l'explicite à l'implicite,
    • le simple au complexe
    • et le complexe au compliqué,
    • le déroulé à l'imbriqué,
    • l'aéré au compact.
  • Prends en compte la lisibilité.
  • Les cas particuliers ne le sont jamais assez pour violer les règles.
  • Mais, à la pureté, privilégie l'aspect pratique.
  • Ne passe pas les erreurs sous silence,
  • ... ou bâillonne-les explicitement.
  • Face à l'ambiguïté, à deviner ne te laisse pas aller.
  • Sache qu'il ne devrait [y] avoir qu'une et une seule façon de procéder,
  • même si, de prime abord, elle n'est pas évidente, à moins d'être Néerlandais.
  • Mieux vaut maintenant que jamais.
  • Cependant jamais est souvent mieux qu'immédiatement.
  • Si l'implémentation s'explique difficilement, c'est une mauvaise idée.
  • Si l'implémentation s'explique aisément, c'est peut-être une bonne idée.
  • Les espaces de nommage ! Sacrée bonne idée ! Faisons plus de trucs comme ça.
  • Texte d'origine

  • Beautiful is better than ugly.
  • Explicit is better than implicit.
  • Simple is better than complex.
  • Complex is better than complicated.
  • Flat is better than nested.
  • Sparse is better than dense.
  • Readability counts.
  • Special cases aren't special enough to break the rules.
  • Although practicality beats purity.
  • Errors should never pass silently.
  • Unless explicitly silenced.
  • In the face of ambiguity, refuse the temptation to guess.
  • There should be one-- and preferably only one --obvious way to do it.
  • Although that way may not be obvious at first unless you're Dutch.
  • Now is better than never.
  • Although never is often better than -right- now.
  • If the implementation is hard to explain, it's a bad idea.
  • If the implementation is easy to explain, it may be a good idea.
  • Troy Hunt: No, I Won't Link to Your Spammy Article

    Magnifique moyen de lutter contre les SPAMS qui demandent à apparaître dans ton blog:

    Chaque fois que tu reçois une demande de ce type, tu l'ajoutes à une liste d'item sur ta propre page avec le titre de la ressource mais pas son contenu ou son lien réel...

    Du coup, quand les gens vont chercher le lien en question, il y en aura qui aboutiront sur cette page et pas sur celle du spammeur... Mieux, à chaque fois que tu reçois ce type de demandes, tu tweetes un lien vers ta page mais avec le titre

    every time I receive spam of this nature I'm going to add an item to the list below. It will have the title of the resource you wanted me to link to, except... no link! Just the title. On a popular blog. So now when people search for [thing], they'll hopefully end up here rather than on the spammy article thus penalising you for your behaviour. And just to help my own SEO and awareness of your spammy behaviour, I'll tweet a link to this page with the title of your page each time it happens.

    Via https://sebsauvage.net/links/?oc35Wg

    AI bots (OpenAI ChatGPT et al) - comment les bloquer - Didier J. MARY (blog)

    Bon, il faut commencer à lutter contre les IA... en leur coupant l'accès à nos contenus.

    Je copicolle ici pour plus tard... Voyez le site pour plus de précisions (vraiment très bien expliqué)

    1. robots.txt

    👉 Rappel, il se met à la racine du site

    On y colle

    # AI crawlers
    User-agent: anthropic-ai
    User-agent: Bytespider 🆕
    User-agent: CCBot
    User-agent: ChatGPT-User
    User-agent: cohere-ai
    User-Agent: FacebookBot
    User-agent: Google-Extended
    User-agent: GPTBot
    User-agent: Omgilibot
    Disallow: /

    2. le header

    On y ajoute <meta name="robots" content="noai, noimageai">

    3. le fichier ai.txt

    Apparemment pas encore obligatoire mais qui pourrait le devenir.

    # Spawning AI
    # Prevent datasets from using the following file types
    
    User-Agent: *
    Disallow: *.txt
    Disallow: *.pdf
    Disallow: *.doc
    Disallow: *.docx
    Disallow: *.odt
    Disallow: *.rtf
    Disallow: *.tex
    Disallow: *.wks
    Disallow: *.wpd
    Disallow: *.wps
    Disallow: *.html
    Disallow: *.bmp
    Disallow: *.gif
    Disallow: *.ico
    Disallow: *.jpeg
    Disallow: *.jpg
    Disallow: *.png
    Disallow: *.svg
    Disallow: *.tif
    Disallow: *.tiff
    Disallow: *.webp
    Disallow: *.aac
    Disallow: *.aiff
    Disallow: *.amr
    Disallow: *.flac
    Disallow: *.m4a
    Disallow: *.mp3
    Disallow: *.oga
    Disallow: *.opus
    Disallow: *.wav
    Disallow: *.wma
    Disallow: *.mp4
    Disallow: *.webm
    Disallow: *.ogg
    Disallow: *.avi
    Disallow: *.mov
    Disallow: *.wmv
    Disallow: *.flv
    Disallow: *.mkv
    Disallow: *.py
    Disallow: *.js
    Disallow: *.java
    Disallow: *.c
    Disallow: *.cpp
    Disallow: *.cs
    Disallow: *.h
    Disallow: *.css
    Disallow: *.php
    Disallow: *.swift
    Disallow: *.go
    Disallow: *.rb
    Disallow: *.pl
    Disallow: *.sh
    Disallow: *.sql
    Disallow: /
    Disallow: *

    4.le .htaccess

    👉 Rappel, il se met à la racine du site

    On y ajoute

    RewriteCond %{HTTP_USER_AGENT} (anthropic-ai|Bytespider|CCBot|ChatGPT-User|FacebookBot|GPTBot|Omgilibot) [NC]
    RewriteRule ^ – [F]

    5.l'IP

    En bloquant ces adresses:

    20.9.164.0/24
    20.15.240.64/28
    20.15.240.80/28
    20.15.240.96/28
    20.15.240.176/28
    20.15.241.0/28
    20.15.242.128/28
    20.15.242.144/28
    20.15.242.192/28
    52.230.152.0/24
    Via https://sebsauvage.net/links/

    Notes perso JS : usage de fetch()

    Je me note ici pour une prochaine fois parce que fetch n'est pas forcément très intuitif...

    2 façons d'utiliser fetch :

    la plus tendance et élégante : en enchaînant les then()

    fetch("index.php", { method: 'POST', body: formData })
      .then((response)=>{
            // on attend l'arrivée de la réponse et on la traite
            return response.text(); // ou response.json();
      })
      .then((text)=>{
             // on attend la fin du traitement de la réponse  et on en traite le contenu
           console.log(text);
      });

    la plus lisible (?) : avec async et await

    En gros, on crée une fonction asynchrone pour pouvoir utiliser les await.

    const fetchAPI = async(URL) => {
        const response = await fetch(URL);  // on attend l'arrivée de la réponse 
        const data = await response.json();  // on attend la fin du traitement de la réponse
        console.log(data)
    }
    fetchAPI("https://jsonplaceholder.typicode.com/todos/1")

    CSS - 5t3ph@front-end.social - I'm not sure enough folks realize that :is()/:where(), and :not() can check _ancestor_ and _previous sibling_ conditions.p:is(h2 + *) = paragraphs that are directly after an h2p:not(blockquote *) = paragraphs that are not within blockquotesI've used these techniques to simplify what would otherwise be rather unmaintainable selectors or may have previously required additional conditional classes.https://codepen.io/5t3ph/pen/KKEmMXR

    Pas mal cette astuce ! On peut avoir des conditions qui prennent en compte un élément parent ou un élément frère pour cibler un élément...

    • p:is(h2 + *) : seulement les paragraphes directement après un H2
    • p:not(blockquote *) : les paragraphes ne se trouvant pas dans des blockquotes...

    Ça peut carrément simplifier certains cas !

    ✂Templatemaker ︎

    Plein de modèles de découpes et pliages - essentiellement des boîtes - avec un générateur qui permet de spécifier les dimensions.

    On peut imaginer de les importer ensuite dans un logiciel de découpe laser...

    Quelle touche utiliser pour accéder au BIOS UEFI de sa carte mère

    Pour mémoire

    • Asus : F2 ou Suppr
    • Gigabyte : Suppr ou F12
    • MSI (Micro-Star International) : Suppr
    • ASRock : F2 ou Suppr
    • Biostar : Suppr
    • EVGA : Suppr
    • Supermicro : Suppr
    • Intel : F2
    • NZXT : Suppr ou F2
    • Acer : F2 ou Suppr
    • Dell : F2 ou F12
    • HP (Hewlett-Packard) : F10 ou Échap
    • Lenovo : F2 ou F12
    • ASUS : F2 ou Suppr
    • MSI : F2 ou Suppr
    • Toshiba : F2
    • Sony VAIO : F2 ou F10
    • Samsung : F2 ou Échap
    • LG : F2 ou F12

    Retour sur quelques livres lus en 2023 - Chez Sammy

    Et voilà, grâce à Sammy, encore une liste de livres ... Mais quand vais-je parvenir à tout lire ?

    Heureusement que j'ai déjà lu Cien años de soledad... Même en faisant un arbre généalogique on se perd... mais quelle oeuvre !

    Pour ma part, j'ai fini quelques Carlos Sisí...

    Meme mon chat : un minouscule dump...

    Parce que les fêlés félins, parfois, c'est la chatastrophe...

    waiting bean meme «mon chat à cinq heure du matin» gay kermitt meme «mon chat  quand je ne me lève pas assez tôt» disapointed guy meme «mon chat quand je me redirige vers la chambre après être allé pisser» Anthony Adams Rubbing Hands meme «mon chat quand qqun se dirige vers la cuisine» meme heavy breathing «mon chat quand je mange un dessert à la chantilly» kombucha girl meme «des croquettes de deux jours vs de l'eau de vaisselle stagnante»/>
<img src= drake meme «vomir sur la pelouse vs entrer, aller dans le salon et vomir sur la moquette»

    Et en cadeau...

    Fil RSS des articles