Deblan blog

Simon Vieille

IT director at Zenitude Groupe, symfony expert and debian addict

La toute première molécule formée dans l'univers a enfin été observée dans l'espace - Sciences - Numerama

La toute première molécule formée dans l'univers a enfin été observée dans l'espace - Sciences - Numerama

https://www.numerama.com/sciences/482274-la-toute-premiere-molecule-formee-dans-lunivers-a-enfin-ete-observee-dans-lespace.html

Depuis des dizaines d'années, les scientifiques voulaient trouver la première molécule formée dans l'univers. Elle a enfin été observée dans notre galaxie. Pour les astronomes, c'est un progrès pour étudier la chimie de l'univers.

Lien permanent


Mes scripts i3blocks pour générer les éléments de ma barre i3-wm

i3-wm est le gestionnaire de fenêtres que j'utilise depuis quelques d'années maintenant. Au fur et à mesure du temps, j'ai fais évoluer mon interface et j'ai écris des scripts pour générer les informations affichées dans la barre du dessus.

i3-wm

Parce que je suis plus à l'aise avec ce langage, l'ensemble des scripts est écrit en PHP 7. Ces scripts sont exécutés au travers de i3blocks, l'utilitaire qui gère les exécutions et les rendus des blocs.

Le fichier de configuration a cette forme et voici les détails techniques des blocs. Ils incluent tous base/block.php et le code source est libre. Le code n'est pas toujours élégant mais ça fonctionne pas trop mal 😀

Dépendance globale des scripts : interpréteur PHP 7.

Bande passante

Affiche la bande passante UP et DOWN d'une interface réseau.

  • Code source
  • Dépendances : ip, grep, awk, cut, ifstat et tail
  • 1er paramètre : l'interface réseau (défault : eth0)
  • 2ème paramètre : inet pour l'IPV4 (par défaut) ou inet6 pour l'IPV6

IP locale

Affiche l'adresse IP d'une interface réseau. Au clic, l'IP est copiée dans le presse-papier.

  • Code source
  • Dépendances : ip, grep, awk, cut, xclip
  • 1er paramètre : l'interface réseau (défault : eth0)
  • 2ème paramètre : inet pour l'IPV4 (par défaut) ou inet6 pour l'IPV6

IP publique

Affiche votre adresse IP publique via une requête DNS à opendns.com. Au clic, l'IP est copiée dans le presse-papier.

  • Code source
  • Dépendances : dig et xclip
  • 1er paramètre : 0 pour l'IPV4 (par défaut) ou 1 pour l'IPV6

Espace libre

Affiche le pourcentage d'espace libre d'un point de montage. Au clic, le gestionnaire de fichiers affiche le répertoire du point de montage.

  • Code source
  • Dépendances : df, tail et xdg-open
  • 1er paramètre : le nom du point de montage (défault : root)
  • 2ème paramètre : le chemin vers le point de montage (défault : /)
  • 3ème paramètre : pourcentage du niveau d'alerte "moyen" (défault : 70)
  • 4ème paramètre : pourcentage du niveau d'alerte "critique" (défault : 90)

Spotify

Affiche l'artiste et le titre de la musique jouée. J'affiche le workspace 6. MEDIA lors d'un clic.

Affiche un bouton pour lancer ou mettre en pause le titre en court.

Volume

Affiche le volume du son.

Météo

Affiche la météo du lieu détecté par fr.wttr.in. Au clic, le site est affiché dans le navigateur web.

Application

Affiche une lettre colorée et lance un script quand on clique dessus. Dans ma configuration, ça affiche des sites web dans le navigateur web.

  • Code source
  • 1er paramètre : la lettre à afficher
  • 2ème paramètre : le script à exécuter au clic
  • 3ème paramètre : la couleur de fond (défaut : #333)
  • 4ème paramètre : la couleur du texte (défaut : #fff)

Heure et date

Affiche l'heure et la date.

Flux RSS

Affiche le nombre d'articles non lus. Au clic, le navigateur affiche le client web du votre lecture RSS (tt-rss chez moi).

  • Code source
  • Dépendance : xdg-open
  • 1er paramètre : URL du flux RSS
  • 2ème paramètre : adresse du lecture RSS (optionnel)

Batterie

Affiche l'état de charge de la batterie.


Ce qui me fait détester votre site web en 2019

Ce qui me fait détester votre site web en 2019

https://iampox.com/blog/ce-qui-me-fait-detester-votre-site-web-en-2019

Je partage complétement ce qui est expliqué dans cette article. Naviguer sur des pages web, c'est passer plus de temps à arrêter des vidéos en lecture automatique ou fermer des pop-in que de lire son contenu…

Lien permanent


Équivalent du MATCH AGAINST de MySQL sur PostgreSQL

Le blog est propulsé sur un système de gestion de contenu écrit sur Symfony. Les données sont gérées dans une base MariaDB et ça tourne très très bien :)

Pour apprendre à utiliser PostgreSQL, je me suis donné comme défi de rendre compatible ce blog avec PostgreSQL. Fort heureusement, j'ai un ORM et 90% du boulot est géré par 3 lignes de configuration.

Le moteur de recherche est un peu plus compliqué à migrer puisque j'ai généré des requêtes en dehors de l'ORM. Son fonctionnement est relativement standard car quand un utilisateur saisi des mots clés, une première requête SQL va donner un score aux articles du blog publiés et je vais afficher ceux qui dépassent une valeur donnée.

Pour ce faire, j'utilise MATCH AGAINST de MySQL/MariaDB et la requête donne ça :

SELECT
    post.id,
    post.title,
    post.tags,
    MATCH(post.title) AGAINST(:search) AS MATCH_TITLE,
    MATCH(post.content) AGAINST(:search) AS MATCH_CONTENT,
    MATCH(post.tags) AGAINST(:search) AS MATCH_TAGS
FROM post
WHERE
    post.active = 1 AND
    post.published_at < :date
ORDER BY
    MATCH_TITLE DESC,
    MATCH_TAGS DESC,
    MATCH_CONTENT DESC

Pour obtenir des résultats équivalents avec PostgreSQL, la requête doit changer car MATCH AGAINST n'existe pas et comme PostgreSQL offre des outils beaucoup plus complets, c'est moins évident. Je trouve d'ailleurs que la documentation est assez peu claire à ce sujet. J'ai mis du temps à pondre une requête qui fonctionnait. La voici :

SELECT
    post.id,
    ts_rank(to_tsvector(post.title), query) as match_title,
    ts_rank(to_tsvector(post.tags), query) as match_tags,
    ts_rank(to_tsvector(post.content), query) as match_content
FROM
    post,
    plainto_tsquery(:search) query
WHERE
    post.active = true AND
    post.published_at < :date
ORDER BY
    match_title DESC,
    match_tags DESC,
    match_content DESC

Dans les 2 cas, :search correspond aux mots clés et :date représente la date où la recherche est faite.

Les scores ne sont pas du même ordre de grandeur mais je retrouve des résultats équivalents sur les 2 moteurs de base de données.


Glyn Moody sur l’article 13 – Une aberration judiciaire

Glyn Moody sur l’article 13 – Une aberration judiciaire

https://framablog.org/2019/02/13/glyn-moody-sur-larticle-13-une-aberration-judiciaire/

L'émancipation des grosses plateformes centralisatrices est une des réponses à ces débiles qui pondent des lois proportionnellement toutes aussi débiles.

Héberger des contenus à la maison fonctionne très bien et c'est le moment d'y songer ! Et si vous préférez les chatons alors visitez Chatons.org.

Lien permanent