Note pour plus tard - The Zen of Python | Python.org
- 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.
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.
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é)
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: /
On y ajoute <meta name="robots" content="noai, noimageai">
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: *
On y ajoute
RewriteCond %{HTTP_USER_AGENT} (anthropic-ai|Bytespider|CCBot|ChatGPT-User|FacebookBot|GPTBot|Omgilibot) [NC]
RewriteRule ^ – [F]
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
Je me note ici pour une prochaine fois parce que fetch n'est pas forcément très intuitif...
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);
});
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")
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 H2p:not(blockquote *)
: les paragraphes ne se trouvant pas dans des blockquotes...Ça peut carrément simplifier certains cas !
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...
Pour mémoire
OMAGAD ! Le print('coucou2')
m'a tué !
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í...
Parce que les fêlés félins, parfois, c'est la chatastrophe...