PROJET AUTOBLOG


De l’épice pour la pensée

Site original : De l’épice pour la pensée

⇐ retour index

Qwant, duckducko, mais quel moteur de recherche choisir?

dimanche 11 février 2018 à 19:42

duckduckgo a fait parler de lui dernièrement, rappelant aux utilisateurs que les moteurs de recherche, bien qu'alternatifs et normalement respectueux de la vie privée des utilisateurs sont soumis aux lois des pays où sont situés les serveurs. Ce problème n'est donc pas uniquement celui de duckduckgo, mais aussi de Qwant, souvent cité comme alternative plus valable ces derniers jours.

Mais comment s'en sortir? On est surveillés de partout! 😮

Sans prétentions, voici quelques solutions :

Faites vos recherches dans une bibliothèque

Ça marche aussi avec les médiathèques. On découvre des choses, c'est calme et ça sent bon les livres. En plus, ça fonctionne même sans électricité.
Cependant, on risque d'y rencontrer des gens... gasp :/

Utilisez tontonroger

Framasoft a lancé tontonroger ou le plus sérieux framabee.
Cela dit, c'est juste un métamoteur, vous dépendez donc des résultats d'autres moteurs de recherche, et les résultats ne sont pas toujours très pertinents. Tellement peu que la recherche de "fun gif" dans les images n'est pas adaptée aux petits enfants. (oui, il y a Trump dans les résultats, ça peut choquer).

Utilisez votre propre moteur de recherche

Dans toutes les solutions précédentes, il y a une condition nécessaire à leur utilisation : la confiance. Vous pouvez vous dire que vous faîtes confiance à duckduckgo, qwant, framabee... Dans ce cas, pas d'inquiétude. Mais, hum....
J'ai réinstallé récemment yacy. Une fois décompressé et lancée, l'application tourne très bien et permet de faire des recherches sur le web. Elle tourne en local et fait son job.

alt

Le principe est très intéressant à mon avis :

Malheureusement, yacy reste moyen niveau résultats, au moins pour les raisons suivantes :

Quoi qu'il en soit, cette dernière solution semble nettement plus pertinente. Si on veut s'affranchir des autres moteurs de recherche, on doit pouvoir auto-héberger le sien.
Il y avait eu seeks, qui n'est plus vraiment développé. Il devait résoudre ce problème, mais n'est resté qu'un métamoteur s'appuyant sur les autres.

J'espère donc que ce projet va en inspirer d'autres, soit des plus performants, soit attirer des développeurs pleins d'idées et de compétences pour améliorer le système en marche.

À suivre, peut-être, un tuto pour installer yacy sur un serveur et fournir les résultats au monde entier...

Partage de culture et de connaissances

mercredi 7 février 2018 à 17:17

J'avais déjà commencé dans un précédent article, mais il est temps de mettre la liste à jour.

Si vous avez des suggestions, n'hésitez pas à commenter ;)

Dernière mise à jour le 07/02/2018

unsplash-logoEliot Peper

À vous.

Nettoyer son OpenBSD

mardi 6 février 2018 à 10:34

Voilà un bon bout de temps maintenant que j'ai OpenBSD d'installé sur mon ordinateur et serveur. Sachant qu'en plus, j'utiliser -current sur le pc portable, que je bidouille dessus, que je teste et fait des trucs pas toujours propres, un peu de nettoyage ne pourra pas faire de mal.

pkg_check
Tout d'abord, je lance

pkg_check

qui liste tout les vieux paquets, ceux qui ont des fichiers manquants ou des checksums bizarres, et répare tout ça proprement. Cet outil est vraiment ma-gni-fique !


doas pkg_check
Packing-list sanity: ok
Direct dependencies: ok
Reverse dependencies: ok
Files from packages: ok
--- femail-chroot-1.0p2 -------------------
checksum for /var/www/bin/femail does not match
--- py-setuptools-28.6.1p0v0 -------------------
checksum for /usr/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.py does not match
checksum for /usr/local/lib/python2.7/site-packages/setuptools/command/build_py.py does not match
--- python-2.7.14 -------------------
checksum for /usr/local/lib/python2.7/email/mime/__init__.pyc does not match

Dans l'exemple ci-dessus, rien d'inquiétant. femail a été modifié à cause de permissions corrigées par moi, et les fichiers pythons ont été exécutés donc même chose.

sysclean
sysclean est un outil qui permet de détecter les fichiers obsolètes suite à des mises à jour
J'installe le paquet sysclean et je le lance afin de vérifier les paquets "obsoletes" :

sysclean -p

Après une vérification, je vais virer ces derniers car n'en ai pas besoin. Pour tout faire d'un coup :

pkg_delete $(sysclean -p | awk '{print $2}')

Ensuite, je lance une vérification du système entier pour supprimer à la main les fichiers inutiles. Là, pas de commande automatique, c'est important de vérifier soigneusement, car des fichiers détectés sont simplement ceux que j'ai créé et j'en ai besoin. Attention, sysclean compare les fichiers présents avec ceux qu'il doit y avoir sur un système de base tout propre, et ne tient pas comptes de vos modifications ou ajouts de paquets.

# sysclean
/SHA256.sig
/usr/X11R6/lib/libOSMesa.so.10.1
/usr/X11R6/lib/libdrm.so.7.4
/usr/X11R6/lib/libdrm_amdgpu.so.1.2
/usr/X11R6/lib/libfreetype.so.28.0
/usr/X11R6/lib/libgbm.so.0.1
/usr/lib/libc.so.89.3
/usr/lib/libc.so.89.3.a
/usr/lib/libcrypto.so.41.1
/usr/lib/libexpat.so.11.0
/usr/lib/libobjc.so.6.0
/usr/lib/libperl.so.18.0
/usr/lib/libpthread.so.23.0
/usr/lib/libssl.so.43.2
/usr/lib/libtls.so.15.4
/usr/lib/libutil.so.12.1
/usr/lib/libobjc.a
/usr/lib/libobjc_p.a
/usr/lib/gcc-lib/amd64-unknown-openbsd6.1
/usr/include/dev/wsfont/lucida16x29.h
/usr/include/dev/wsfont/omron12x20.h
/usr/include/dev/wsfont/qvss8x15.h
/usr/include/dev/wsfont/vt220l8x10.h
/usr/include/dev/wsfont/vt220l8x8.h
/usr/include/g++/FlexLexer.h
/usr/include/g++/amd64-unknown-openbsd6.1
/usr/include/g++/std
/usr/include/netinet/tcpip.h
/usr/include/netinet6/tcpipv6.h
/usr/include/sys/dkbad.h
/usr/include/sys/kgdb.h
/usr/include/sys/scanio.h
/usr/libdata/perl5/amd64-openbsd/perllocal.pod
/usr/libexec/locate.concatdb
/usr/share/misc/ascii
/usr/share/misc/operator
...

pkg_delete

Pour finir, on retire les dépendances inutiles :

pkg_delete -a

Et voilà :)
On peut retourner travailler.

Bloquer les bots avec élégance

mardi 30 janvier 2018 à 19:49

Dans les logs de votre serveur, il y a certainement un tas de requêtes vers "wp-login.php" et consorts. Ce sont des petits malins qui tentent de scanner mes sites pour l'éventuelle présence de wordpress.
Je ne sais pas vous, mais moi, ça m'agace. D'autant plus que je n'utilise pas wordpress.

Heureusement, "relayd" est là ;)
Présent par défaut sous OpenBSD, il n'y a qu'à rajouter ces quelques lignes à sa configuration pour bloquer avec élégance et condescendance les bots.

block quick path "/wp-*" label '<em><img src="https://yeuxdelibad.net/Images/scanbot.png"><br>Stop scanning for wordpress</em>. Educate yourself instead :<br><iframe src="https://en.wikipedia.org/wiki/Special:Random" width="100%" height="600px"></iframe>'

return error style "body { background: radial-gradient(ellipse at center top, gold, darkorange); color: red; text-align:center } hr {border:0; background-color:white; color:white; height:1px; width:30%; margin-top:50px;}"

Ça donne ça :

Ça fait mal hein ?

Libre à vous de changer le code html et aussi le code CSS qui pique les yeux (na!)

Compression gzip, httpd, OpenBSD et sécurité

samedi 27 janvier 2018 à 11:10

Dernièrement, je me suis amusé à optimiser mon site. Je voulais limiter la quantité de données à transférer. Ma bande passante est maigre. Et puis un visiteur ne devrait pas avoir à charger des tas de données pour lire un pauvre blog. Je suis passé d'une note "C" à A sur GTMetrix :

En-tête http pour la mise en cache
Tout d'abord, j'ai réactivé la gestion du cache dans les entêtes avec relayd, un outil présent dans OpenBSD. Le contenu est mis en cache par les navigateurs pendant une durée de 1 an maximum. La partie correspondante de la configuration, c'est ça :

match response header set "Cache-Control" value "max-age=31536000"

Chargement et optimisation des images
J'optimise systématiquement les images que je met en ligne avec ce script.

En plus, j'ai activé le plugin "lazyload" de blogotext qui permet de charger les images seulement lorsque le visiteur a déroulé la page vers l'emplacement de l'image. Ça limite grandement l'utilisation de bande passante.

Enfin, pour certaines pages, j'utilise un bout de javascript qui fait office de "spoiler".
Le HTML :

<p onclick="showimg(this, 'img/image.png')">Cliquez pour afficher l'image.</p>

La fonction javascript suivante va remplacer le texte précédent par l'image :

function showimg(elmnt,lnk) {
	elmnt.innerHTML = '<img src="' + lnk + '" />';
	elmnt.style = 'border:0';
};

Utilisation d'emojis pour les icônes

Au lieu d'utiliser des images pour faire des icônes, je suis allé piocher des émojis ici.

Pas de ressources externes
J'évite le chargement de ressources externes, comme les polices. À la place, dans le CSS, je propose plusieurs polices en faisant le pari qu'une bonne partie est déjà sur l'ordinateur du visiteur :

font-family: "Hack", "Menlo", "Liberation Mono", "Arial Monospaced", monospace;

Activation de la compression gzip
Il est recommandé d'activer la compression gzip dans les divers tutoriels. Cependant, cette fonctionnalité n'est pas implémentée dans le serveur httpd d'OpenBSD pour des raisons de sécurité (voir et surtout .
J'ai quand même activé cette fonctionnalité dans php en mettant les options suivantes dans le php.ini :

zlib.output_compression = On
zlib.output_compression_level = -1

Je pourrais aussi gzipper à la main les ressources css et javascript, mais pour l'instant non, car la flemme, et c'est pas pratique. De plus, la suite est très prometteuse.

Minification des fichiers CSS et JS
J'ai commencé à minifier les fichiers CSS et JS. En gros, on retire tous les espaces et sauts de ligne qui permettent une lecture de ces fichiers par les humains mais ne servent à rien par les navigateurs afin de réduire leurs poids. Il s'avère que Remrem a déjà commencé à créer un bout de code dans blogotext qui ferait ça automatiquement. Je n'ai pas encore vu le code, mais qui sait, le fichier minifié qui sera mis en cache sur le serveur pourra être gzippé automatiquement.

À améliorer?
Il faudrait rassembler tout le CSS dans un seul fichier pour réduire le nombre de requêtes. Ce n'est pas possible car je ne veux pas mélanger ces derniers afin de m'y retrouver.
Je pourrais aussi utiliser un CDN. Cependant, c'est soit payant, soit ça ne marche plus. D'ailleurs, quelqu'un a des nouvelles de coralCND?

Pour finir...
Un peu de lecture intéressante pour finir : https://lehollandaisvolant.net/tuto/pagespd/