Planet Libre

Thuban : Listes d'IP à ignorer

Sur le même modèle que bsdly.net , je publie désormais des listes d'IP connues pour être nuisibles ou émettrices de spam.

La page contenant les listes se trouve ici : Vilaines IP

Vous y trouverez des IP à blacklister avec le parefeu générées régulièrement avec le projet BlockZone. PengouinPdt fait la même chose ici. :)

De même, vous trouverez en complément de la traplist une liste des IPs qui m'ont envoyé du spam. Comme j'utilise déjà d'autres listes très complètes, elle est pour l'instant très maigre, mais elle sera mise à jour automatiquement.

J'utilise des tâche cron pour périodiquement copier les listes d'IP filtrées.
Pour repérer le spam, il me suffit de filtrer l'état de spamd. Lorsqu'un émetteur de spam est piégé, on le repère facilement avec le flag 'TRAPPED'.
J'adore spamd. En laissant trainer une fausse adresse blackhole@yeuxdelibad.net , je sais que ce sont des bots qui écrivent dessus. Outre le fait qu'ils sont piégés pendant un certain temps et ralentis, je retiens maintenant leur IP pour que tout le monde en profite. Nanananère :P

(n'écrivez pas à l'adresse ci-dessus XD)

Voici le script que j'utilise :

#!/bin/sh # Auteur : thuban # licence : MIT # Keep in /var/thuban.traplist # IPs that used to be trapped. # # Use in in spamd.conf with : ### # #all:\\ # :nixspam:myblack #myblack:\\ # :black:\\ # :msg="Your are spam !":\\ # :method=file:\\ # :file=/var/thuban.traplist ### BLACKFILE=/var/thuban.traplist touch $BLACKFILE /usr/sbin/spamdb | grep "TRAPPED|" | cut -d'|' -f2 >> $BLACKFILE # keep uniq sort -u $BLACKFILE -o $BLACKFILE # reload spamd /usr/libexec/spamd-setup exit 0

enjoy ;)

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

System Linux : Erreur 144 avec mysqldump

mysql jpg

ça arrive....

Si vous rencontrez ce genre d'erreur lors d'un mysqldump :

mysqldump: Got error: 144: "Table './wordpress/wp_statpress' is marked as crashed and last (automatic?) repair failed" when using LOCK TABLES

Voila comment réparer la chose :

# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \\g. Your MariaDB connection id is 5294544 Server version: 5.9.2-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. MariaDB [(none)]> use wordpress Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [wordpress]> check table wp_statpress; +-------------------------+-------+----------+-------------------------------------------------------------+ | Table | Op | Msg_type | Msg_text | +-------------------------+-------+----------+-------------------------------------------------------------+ | wordpuser1.wp_statpress | check | warning | Table is marked as crashed and last repair failed | | wordpuser1.wp_statpress | check | warning | Size of indexfile is: 64860160 Should be: 31134720 | | wordpuser1.wp_statpress | check | error | Found key at page -1 that points to record outside datafile | | wordpuser1.wp_statpress | check | error | Corrupt | +-------------------------+-------+----------+-------------------------------------------------------------+ 4 rows in set (2.08 sec) MariaDB [wordpress]> repair table wp_statpress; MariaDB [wordpress]> check table wp_statpress; +-------------------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +-------------------------+-------+----------+----------+ | wordpuser1.wp_statpress | check | status | OK | +-------------------------+-------+----------+----------+ 1 row in set (17.91 sec)

Gravatar de System Linux
Original post of System Linux.Votez pour ce billet sur Planet Libre.

Articles similaires

alterlibriste : Un lecteur audio avec Kodi et Raspberry

Mon raspberry pi, premier du nom, commençait à prendre la poussière sur une étagère quand je suis tombé sur une discussion bien intéressante sur Diaspora* pour en faire un lecteur de musique, j’avais tout ce qu’il faut, juste à tout réunir.

DSCF2479.png
Elle était belle l’époque où on se faisait soi-même son boîtier, ici découpé dans une pochette photos

J’ai acheté mon pi il y a 3 ans, initialement pour en faire un lecteur vidéo pour mon rétro-projecteur. La reconnaissance de DVD n’étant pas toujours au top, je l’ai finalement remplacé par un lecteur DVD portable dont l’écran n’a pas aimé la chute qu’il a subit. J’ai ensuite utilisé le raspberry pour me faire la main sur l’auto-hébergement. Comme il a été remplacé par quelque chose d’un peu plus puissant et robuste, il attendait une autre utilisation.

D’un autre côté, j’ai une bibliothèque musicale numérisée de plusieurs dizaines de Go qui ne faisait pas grand chose. J’avais déjà expliqué dans un précédent billet que je n’achète que de la musique sous forme de CD (so nineties !), cependant, je les encode dans mon PC pour pouvoir éventuellement les écouter sur un lecteur numérique et aussi pour en faire une sauvegarde (je me suis déjà fait piquer une pochette avec mes disques préférés du moment, pas cool). J’ai aussi quelques albums de musiques libres ou de CD empruntés en médiathèque. Cependant, je n’écoute quasiment jamais de musique en étant sur l’ordi parce que ça me perturbe quand je travaille ou au mieux, je ne l’entends pas. Par contre, le fait de pouvoir écouter tout ça sur ma chaîne (notamment en aléatoire) lorsque l’on est en train de cuisiner ou de manger me semblait bien intéressant.

Je sais qu’il existe des projets audio spécifiques et parfois très poussés sur Raspberry, soit en tant que serveur (pour écouter sa musique sur n’importe quel appareil), soit en tant que lecteur sur une chaîne ou un ampli. Mon but n’était pas de me plonger dans une configuration compliquée et même sans ça, il m’a fallu une dizaine de jours pour tout paramétrer comme je le souhaitais.

Sur le pi, j’avais déjà Kodi. J’avais un temps utilisé OpenElec (devenu LibreElec) qui n’est fait que pour ça mais je préfère avoir un OS qui peut faire plusieurs choses et donc une Raspbian qui fait ça aussi bien (voici un bon tuto pour faire ça de zéro). Ma bibliothèque musicale est sur mon PC principal qui contient tous les fichiers qui doivent être régulièrement sauvegardés. Il me fallait donc en rendre au moins une partie disponible sur un espace suffisamment grand et disponible même lorsque le PC est éteint. Mon serveur qui contient déjà un répertoire en partage NFS afin d’être accessible depuis les différentes machines était tout désigné. Restait ensuite à brancher le raspberry sur le réseau, de lui donner l’accès à ce répertoire, de faire un peu de ménage sur toute la partie serveur qui ne servait plus (Apache, TT-RSS, MariaDB, etc.), de le brancher sur la chaîne et sur le courant.

Lorsque j’ai réfléchi à tout ça, je me suis dis que j’aurais aussi bien pu faire ça directement depuis le serveur déjà en place (et concrètement, je n’avais besoin que d’installer Kodi et tirer un fil audio jusque la chaîne) pourtant je n’ai résolument pas fait ce choix. Il aurait très bien pu tenir la charge supplémentaire mais en plus d’utiliser le raspberry qui ne servait plus, je voulais pouvoir l’éteindre (j’ai ajouté un interrupteur sur le branchement de l’alimentation) lorsqu’il ne servait pas et surtout éviter de donner une porte d’entrée (failles potentielles) sur le serveur qui fait tourner des services dont j’ai besoin au quotidien.

Une fois tout cela installé, il me restait à trouver les moyens de commander tout ça sans écran et sans clavier. J’avais déjà testé le téléphone comme télécommande sur Kodi sans en explorer toutes les possibilités. Sur Android, Kodi Remote (Kore de son petit nom) est un must have que j’ai adopté sur la tablette du gamin. J’en étais presque à me tâter de passer à LineageOS sur mon Open C et quitter Firefox OS, mais il semble que c’est quand même un peu lourd pour la bête.

C’était sans compter sur l’appli équivalente FoxMote que j’ai eu un peu de mal à paramétrer (il faut autoriser le contrôle à distance par des programmes sur d’autres systèmes en plus du contrôle à distance par des programmes sur ce système). Il faut aussi penser à faire une mise à jour de la bibliothèque à chaque démarrage une fois indiquée la source des fichiers musique. En plus des divers appareils mobiles, un accès par interface web est aussi possible pour piloter ça depuis le PC (192.168.0.X:8080, une fois autorisé l’accès par http dans l’onglet serveur web de Kodi/Système/Services).

Pour le bon fonctionnement de ces diverses télécommandes, il faut aussi assigner une adresse IP locale qui sera toujours la même en paramétrant les baux DHCP permanents de son fournisseur d’accès internet sinon à chaque démarrage il prendra une IP différente (j’avais déjà expliqué ça pour l’installation de tt-rss sur un raspberry).

Bref, une expérience bien intéressante qui utilise tout le matériel et les expérimentations faites précédemment, il n’y avait plus qu’à réunir tout ça. En avant la musique !

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.

Articles similaires

Journal du hacker : Liens intéressants Journal du hacker semaine #10

Pour la 10ème semaine de 2017, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

elementary OS : AppCenter & Indiegogo

Il y a maintenant un peu plus de 30 jours, la team elementary lançait une campagne de financement via la plateforme Indiegogo pour l’AppCenter.

Analysons cette campagne ainsi que les objectifs annoncés.

Daniel, lors de sa vidéo de présentation de sa campagne, a pu partager sa vision de l’AppCenter ainsi que les différents objectifs à atteindre grâce à cette campagne Indiegogo.

 

Daniel nous fait d’abord un rapide comparatif entre les applications dites WebApp versus applications traditionnelles et selon lui ces dernières se trouvent être plus rapides, plus stables, car moins dépendantes d’un navigateur Web.

Toutefois, il pondère ce sujet en ajoutant que de nombreuses applications traditionnelles peuvent elles aussi affecter la stabilité du système. Ceci, par exemple, via l’ajout d’applications tierces via des dépôts ou des sources non vérifiées.

Autre point abordé dans cette vidéo, la volonté de permettre aux développeurs tiers de bénéficier d’un outil de suivi simple et convivial, il leur permettra ainsi de mettre à jour rapidement leurs applications et par la même occasion de suivre les remontées d’incident.

Cet outil se présentera sous la forme d’un Dashboard et se basera sur les capacités de GitHub en matière de suivi de code, d’ouverture de tickets.

Dashboard AppCenter

Aperçu du Dashboard d’AppCenter

 

Autre point d’attention de l’équipe : avec l’ouverture de l’AppCenter auprès de développeurs tiers, la team souhaite aussi intégrer une mécanique de microtransactions au sein de l’AppCenter.Ces nouveaux développeurs pourront ainsi bénéficier de la flexibilité de l’AppCenter tout en ayant une source de revenue.

En lisant quelques billets du blog officiel, on apprend que ces microtransactions seront gérées via plateforme Stripe.com

Pour compléter ces informations, une autre vidéo est disponible sur la plateforme Youtube :

On peut y apprendre que bon nombre d’éléments constituants l’écosystème de l’AppCenter et de ses composants annexes existent déjà sous forme de prototype. Ceux-ci se verront intégrer dans la prochaine version d’elementary OS (nom de code Juno). Daniel nous confirme ce point d’un point de vue technique : en l’état un nouveau dépôt devra être mis en place et pour faciliter cette intégration, il sera préférable de passer par une nouvelle installation (ndlr : voir peut-être d’une migration, si l’outil se voit finaliser pour Juno).

À ce titre, l’accès anticipé à ces outils se fait par l’intermédiaire d’une invitation, pour cela, amis développeurs, vous pouvez vous inscrire via cette url https://developer.elementary.io/beta, l’équipe sélectionnera ensuite les personnes qui auront la possibilité d’accéder à ces ressources.

Concernant la partie microtransaction, il est à noter que l’équipe souhaite se diriger vers un système dit « Pay What You Want » ou en français « Payez ce que vous souhaitez », à l’inverse de fixer un prix définitif, l’usager final est libre de choisir la somme qu’il souhaite reverser aux développeurs.

Pay What You Want

Pay What You Want

 

Il est à noter que l’équipe a un avis assez tranché sur la présence de DRM ou de verrou logiciel : les développeurs souhaitant proposer leurs applications au sein d’AppCenter ne devront pas utiliser ce genre de techniques.

 

De notre point de vue, nous aurions bien voulu avoir des informations sur le futur format de packages utilisé dans AppCenter : Flatpack, Snap ou bien un autre. Aurons-nous aussi des suggestions d’applications qui pourraient nous intéresser et si c’est bien le cas, sur quelle base d’informations se basera l’AppCenter pour nous fournir ces recommandations (et où seront stockées ces données) ?

Et vous, qu’en pensez-vous ? Que souhaiteriez-vous pour que votre expérience elementary soit complète ?

Le billet AppCenter & Indiegogo a été publié sur le site de la elementary OS -

Gravatar de elementary OS
Original post of elementary OS.Votez pour ce billet sur Planet Libre.

®om : Serveur-client

De nos jours, TCP est toujours utilisé en mode client-serveur :

  • le serveur écoute passivement sur un port donné, en attente de la connexion d’un client ;
  • le client initie activement une connexion vers un serveur.

Une fois la connexion établie, cependant, le client et le serveur jouent exactement le même rôle au niveau de la communication. Par contre, très souvent, leur rôle applicatif dépend directement de celui qui a initié la connexion :

  • c’est le client HTTP qui va envoyer une requête au serveur HTTP, pas l’inverse ;
  • c’est le client SSH qui va ouvrir une session sur le serveur SSH…

ssh

Ce fonctionnement paraît tellement naturel que “client” désigne bien souvent à la fois celui qui initie la connexion et celui qui effectue des requêtes (au serveur), alors que “serveur” désigne aussi bien la partie en écoute que celle qui répondra aux requêtes (des clients).

Puis vint le NAT…

Avec la pénurie d’adresses IPv4, le NAT s’est généralisé. Bien souvent, un accès internet ne fournit qu’une seule adresse IPv4. Les différents ordinateurs partageant la même connexion ne sont alors pas accessibles directement depuis l’extérieur (il est nécessaire d’ouvrir des ports).

Ainsi, derrière un NAT sans ports ouverts, un serveur ne sera pas accessible publiquement. Par contre, un client pourra continuer à se connecter à n’importe quel serveur public.

ssh-nat

Inversion des rôles

Il existe des situations pour lesquelles nous souhaitons qu’un logiciel joue le rôle de serveur au niveau applicatif, afin de répondre aux requêtes des clients, mais client au niveau de la communication, afin de passer les NATs sans difficultés.

Par exemple, nous pouvons vouloir accéder, grâce à VNC ou SSH, à un ordinateur se trouvant derrière un NAT sur lequel, par hypothèse, nous n’avons pas la main. Dans ce cas, seul le serveur (au sens applicatif) aura la capacité d’ouvrir une connexion vers le client.

Logiciel dédié

Il est possible d’utiliser un logiciel spécialement conçu pour gérer cette inversion des rôles. C’est le cas par exemple de gitso, qui inverse le protocole VNC afin de simplifier l’aide de novices à distance.

Cette solution a cependant l’inconvénient d’être très spécifique, nécessitant un développement supplémentaire pour chaque protocole.

Redirection de port distant via SSH

SSH permet d’ouvrir un tunnel pour rediriger un port d’une machine distance vers une adresse quelconque.

Par exemple, après avoir démarré la redirection :

ssh un_serveur_public -NR2222:localhost:22

toutes les connexions arrivant sur un_serveur_public:2222 seront redirigées de manière transparente vers localhost:22 (sur la machine ayant initié le tunnel, donc).

(Cela nécessite d’activer GatewayPorts yes dans /etc/ssh/sshd_config sur un_serveur_public.)

De cette manière, un serveur SSH inaccessible derrière un NAT est rendu accessible à travers un tunnel en passant par une machine publique (un_serveur_public). Ainsi, il est possible de s’y connecter avec la commande :

ssh un_serveur_public -p2222

ssh-remote

Cette stratégie fonctionne bien, mais elle nécessite que la machine qui souhaite exposer un serveur grâce à un tunnel possède un accès SSH sur un_serveur_public.

Si l’on souhaite aider quelqu’un grâce à la prise de contrôle de sa machine à distance, il y a toutes les chances que cette personne n’ait pas d’accès SSH vers une machine publiquement accessible. Il est alors possible de lui créer un compte restreint dédié sur un serveur que l’on contrôle, mais c’est très intrusif, et il faut s’assurer de ne pas réduire la sécurité.

Mais en fait, cette contrainte est superflue.

Redirections SOCAT

La redirection de port distant nécessite des permissions car, outre le fait qu’elle est implémentée sur SSH, il serait déraisonnable d’autoriser n’importe qui à ouvrir une socket en écoute sur un port arbitraire d’une machine distante.

Pour éviter ce problème, nous pouvons décomposer la redirection de port distant fourni par SSH en deux parties :

  1. l’ouverture de la connexion vers un_serveur_public, redirigée vers l’adresse localhost:22 dans l’exemple précédent ;
  2. l’ouverture d’une socket en écoute sur un port (2222) de la machine distante, redirigée vers la première connexion.

L’idée est de mettre en place le premier demi-tunnel sur la machine serveur, et le second demi-tunnel, nécessitant des permissions, sur la machine publique, contrôlée par le client.

Pour cela, nous allons utiliser l’outil socat, qui permet de relayer les données entre deux sockets, quelque soit le rôle qu’elles aient joué lors de l’initialisation.

Active-passive

Pour comprendre son utilisation, nous allons ouvrir grâce à netcat (nc) une socket TCP en écoute sur le port 5000 et nous y connecter :

# terminal 1 nc -l -p 5000 # terminal 2 nc localhost 5000

Toute entrée validée par un retour à la ligne dans le terminal 1 s’affichera dans le terminal 2 (et vice-versa).

nc

Passive-passive

Démarrons maintenant dans deux terminaux différents une socket en écoute sur les ports 1111 et 2222 :

# terminal 1 nc -l -p 1111 # terminal 2 nc -l -p 2222

Pour les mettre en communication avec socat, dans un 3e terminal :

socat tcp:localhost:1111 tcp:localhost:2222

socat-connect

Active-active

Inversement, il est possible de mettre en communication deux sockets actives (sans compter sur leur synchronisation). Pour cela, commençons par ouvrir le serveur relai :

socat tcp-listen:1111 tcp-listen:2222

Puis connectons-y deux sockets :

# terminal 1 nc localhost 1111 # terminal 2 nc localhost 2222

socat-connect

Tunnel

Nous sommes maintenant prêts pour créer l’équivalent d’une redirection de port distant SSH grâce à deux socats, qui vont permettre d’inverser la connexion uniquement sur la portion qui permet de traverser le NAT :

# sur un_serveur_public socat tcp-listen:1234 tcp-listen:5678 # sur le serveur derrière le NAT socat tcp:un_serveur_public:1234 tcp:localhost:22 # sur le client ssh un_serveur_public -p5678

ssh-socat

Gravatar de ®om
Original post of ®om.Votez pour ce billet sur Planet Libre.

fgallaire : Quel DPL pour 2017 ?

Le temps passe vite, et cela fait déjà presque un an que Mehdi Dogguy a été élu Debian Project Leader (DPL). Chaque développeur Debian pouvait se porter candidat entre le 5 et le 11 mars à la suite du traditionnel appel à candidatures.

La question de la légitimité d’un scrutin avec un seul candidat, posée l’année dernière par Paul Wise, n’est heureusement plus d’actualité, mais force est de constater que les candidats ne se bousculent toujours pas au portillon pour devenir DPL. Il y en aura donc deux cette année :

En plus de son rôle de développeur Debian, Chris Lamb est un important contributeur du projet Reproducible builds ainsi que du framework web Python Django et de son écosystème.

Les presque mille développeurs Debian seront libres de voter du 2 au 15 avril lors d’un vote utilisant la méthode Condorcet.

Vous pouvez retrouver tous les débats de la campagne sur la mailing list debian-vote.

Tweet

Gravatar de fgallaire
Original post of fgallaire.Votez pour ce billet sur Planet Libre.

Articles similaires

Thuban : Wallabag et kriss

Pour lire mes flux RSS, j'utilise KrISS que je trouve rapide et surtout très efficace. Je ne vois pas l'intérêt d'utiliser tiny tiny rss qui est une vraie plaie à installer et à mettre à jour pour si peu de fonctionnalités intéressantes (pour mon utilisation). KrISS, c'est 1 fichier php, et voilà :)

Cependant, j'ai du mal à lire tout ce que je voudrais par manque de temps. C'est pour ça d'ailleurs que j'ai installé wallabag, afin de sauvegarder des articles.

Je me suis aperçu que KrISS propose dans sa configuration de définir l'URL de son shaarli pour enregistrer des liens en un clic. En utilisant ce formulaire avec une URL pour wallabag, on sauvegarde un article aussi vite :) :

Plus qu'à cliquer sur "partager" :

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Benoît Boudaud : Python: Les dictionnaires

Pour une lecture plus agréable (page plus large), je vous invite à cliquer sur ce lien et à lire ce chapitre dans la rubrique consacrée au langage Python.

J’habite en Allemagne et l’idiome guttural de ce pays n’est pas ma langue maternelle. Par conséquent, lorsqu’un mot me manque, je consulte un dictionnaire. Je me rends directement à l’emplacement précis du mot français, par exemple Ambulance, et ce mot français est comme une clé qui me donne accès à la valeur correspondante dans la langue de Rammstein :

Ambulance : Krankenwagen

Figurez-vous qu’il existe exactement le même procédé en Python et c’est bien plus pratique qu’une liste. Les dictionnaires sont la solution idéale pour réaliser un test d’appartenance et en extraire une valeur.

dicoNe jamais laver un dictionnaire à 60°!Limitation des listes

Le problème des listes, c’est qu’il s’agit d’une séquence d’objets indicés, c’est-à dire que pour avoir accès à un élément précis, il faut connaitre son indice :

mots_fr = ["Ambulance", "Hôpital","Infirmière"] mots_allemands = ["Krankenwagen", "Krankenhaus","Krankenschwester"]

Par exemple, je sais que l’indice d’Infirmière est le nombre entier 2. Je consulte la liste allemande. Que trouve-t-on à l’indice 2? Krankenschwester.

Pas très pratique tout ça! En plus, est-ce que je suis sûr que les traductions sont rangées dans le bon ordre. Est-ce que le mot allemand qui est à l’indice 1 (Krankenhaus) correspond bien au mot français au même indice (Hôpital)? Si ça se trouve, c’est tout dans le désordre!

Pour éviter ce genre de désagréments, on pourrait alors imaginer une liste de listes contenant des paires mot_allemand – mot_français:

dictionnaire = [["Ambulance", "Krankenwagen"], ["Hôpital", "Krankenhaus"],["Infirmière", "Krankenschwester"], [(...), (...)]]

Et pour trouver la traduction, on pourrait utiliser ce code:

dictionnaire =[["Ambulance", "Krankenwagen"], ["Hôpital", "Krankenhaus"],["Infirmière", "Krankenschwester"]] for i, element in enumerate (dictionnaire): if "Hôpital" in dictionnaire[i]: print(dictionnaire[i][1])

Résultat: « Krankenhaus »

« Ça marche, Ordinosor! On l’a, notre dictionnaire français-allemand ».

Ne t’emballe pas, jeune fou! je te rappelle que les listes sont des séquences. Cela signifie que pour faire un test d’appartenance, elles sont parcourues de l’indice 0 jusqu’à l’indice de l’élément recherché. En clair, si tu cherches la traduction de zygomatique qui se trouve à la fin du dictionnaire, il va falloir que tu tournes toutes les pages une par une et que tu lises tous les mots un par un! Tu n’as pas le choix, ton dictionnaire est une liste.

Tu sais quoi? On va se donner rendez-vous en 2025. Tu m’apporteras ta traduction. Allez vas-y, tourne les pages!

Bon… en attendant, entrons dans le vif du sujet.

Définition et déclaration d’un dictionnaire Définition

Un dictionnaire est un ensemble dont les éléments sont des paires clé-valeur . Au niveau syntaxique, un dictionnaire est contenu entre deux accolades. Les éléments sont séparés par des virgules tandis que les paires clé-valeur sont séparées par deux points. Voici ce que ça donne:

nom_du_dictionnaire = {clé : valeur, clé : valeur, clé : valeur, (…) : (…)}

Un dictionnaire est modifiable et les valeurs peuvent être n’importe quel objet (immuable ou modifiable, il n’y a aucune restriction) mais les clés doivent absolument être des objets immuables (string, nombre entier, nombre décimal, tuple). Si la clé est un tuple, celui-ci ne doit contenir que des éléments immuables. Par exemple, ce genre de clé ([0, 1], [2, 3]) qui est un tuple contenant des listes modifiables va lever une exception (erreur):

TypeError: unhashable type: ‘list’

Déclarer un dictionnaire
  • Pour déclarer un dictionnaire, on utilise des accolades :
dictionnaire = {} # dictionnaire vide
  • Je viens de créer un dictionnaire vide mais je peux très bien créer un dictionnaire et y placer des éléments dès sa déclaration :
capitales = {"France":"Paris", "Allemagne" : "Berlin"}

Dans cet exemple, « France » est une clé tandis que « Paris » est une valeur.

  • Il existe une autre méthode pour créer un dictionnaire. Elle consiste à créer une liste de tuples que l’on transforme en dictionnaire grâce au constructeur dict().
liste_capitales = [("France","Paris"), ("Allemagne","Berlin")] capitales = dict(liste_capitales) print(capitales)

Résultat : {‘Allemagne’: ‘Berlin’, ‘France’: ‘Paris’}

  • Il n’est pas possible de dupliquer une clé. Si on le fait, ce sera la dernière valeur entrée pour cette clé qui sera prise en compte.
capitales = {"France":"Paris", "Allemagne" : "Berlin", "France" : "Marseille"} print(capitales)

Résultat: {‘Allemagne’: ‘Berlin’, ‘France’: ‘Marseille’}

Ajouter un élément (paire clé-valeur)

Si je veux rajouter un élément, c’est très simple, je créé une nouvelle paire clé-valeur. La clé  est contenue entre des crochets et la valeur se trouve à la droite du signe d’affectation. La syntaxe est donc la suivante :

nom_du_dico[clé] = valeur

capitales['Islande'] = "Reykjavik" print(capitales)

Résultat : {‘Allemagne’: ‘Berlin’, ‘Islande’: ‘Reykjavik’, ‘France’: ‘Paris’}

Diantre! Les éléments ne sont plus dans le même ordre? Comment se fait-ce?

Ça n’a aucune espèce d’importance. L’ordre est aléatoire car un dictionnaire n’est pas une séquence, c’est une implémentation de tables de hachage. Pour retrouver une valeur, nous avons seulement besoin de connaître sa clé.

Accéder à une valeur

Voici comment on accède à une valeur:

capitales = {'Allemagne': 'Berlin', 'Islande': 'Reykjavik', 'France': 'Paris'} result = capitales["Allemagne"] #Je stocke le résultat dans une variable. print(result)

Résultat : « Berlin »

C’est simple et instantané! Le programme n’a pas besoin de parcourir le dictionnaire du début à la fin. Grâce à la clé (« Allemagne »), Python est en mesure de se rendre directement à la « page » souhaitée pour trouver la valeur et renvoyer cette dernière. Que le dictionnaire contienne dix éléments ou cinq cent millions, la vitesse d’exécution sera de toute façon identique!

Et si j’utilise une clé qui n’est pas dans le dictionnaire, Python lève une exception (erreur):

result = capitales["Syldavie"] print(result)

KeyError: ‘Syldavie’

La méthode get() comme test d’appartenance

Pour contourner cette exception et éviter d’avoir un message d’erreur qui stoppe le programme, il suffit d’utiliser la méthode get() en lui passant deux arguments : la clé et le résultat renvoyé au cas où la clé serait absente du dictionnaire. Reprenons le code précédent :

result = capitales.get("Syldavie", "Non répertorié.") print(result)

Résultat : Non répertorié.

Tester l’appartenance avec l’instruction in

Il est possible de tester l’appartenance d’une clé à un dictionnaire grâce à la puissante instruction in.

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} if "Islande" in capitales: print(capitales["Islande"])

Résultat : Reykjavik

Je précise que l’instruction in ne teste que l’appartenance des clés et non pas l’appartenance des valeurs.

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} if "Reykjavik" in capitales: print("Test d'appartenance réussi") else: print("Cette clé est absente du dictionnaire")

Résultat: Cette clé est absente du dictionnaire

Mettre à jour une valeur

Si on souhaite mettre à jour une valeur, c’est fort simple. Voici comment on procède:

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} capitales["France"] = "Marseille" print(capitales)

Résultat: {‘France’: ‘Marseille’, ‘Allemagne’: ‘Berlin’, ‘Islande’: ‘Reykjavik’}

Utiliser un tuple comme clé

C’est tout à fait possible, à la condition que le tuple ne contienne que des objets immuables. Quant à la valeur, elle peut être constituée par n’importe quel objet donc une liste ne pose aucun problème.

Dès lors, on peut très bien imaginer un dictionnaire avec en guise de clés, des tuples contenant les noms de capitales et les noms de pays et en guise de valeurs, des listes contenant la latitude et la longitude.

coords = {("Paris","France"):["48° 51′ N", "2° 21′ E"], ("Berlin","Allemagne"): ["52° 31′ N", "13° 24′ O"]} result = coords[("Paris", "France")] print(result)

Résultat : [’48° 51′ N’, ‘2° 21′ E’]

code_dictVisualisation du code avec PythontutorSupprimer un élément grâce à l’instruction del

Nous avons vu comment rajouter un élément dans un dictionnaire. C’est d’une simplicité enfantine. Pas besoin de faire appel à la méthode append().

Pour supprimer un élément, on utilise l’instruction del. En fait, on supprime la clé et par conséquent, la valeur qui lui est associée.

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} del capitales["Allemagne"] print(capitales)

Résultat : {‘France’: ‘Paris’, ‘Islande’: ‘Reykjavik’}

Supprimer tout le dictionnaire grâce à l’instruction del

Notez bien que l’instruction del permet également de supprimer tout le dictionnaire. Il suffit pour cela, de ne pas lui passer de clé entre crochets.

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} del capitales print(capitales)

NameError: name ‘capitales’ is not defined

Ce message d’erreur nous confirme que le dictionnaire n’existe plus.

Utiliser la fonction intégrée len()

On peut également utiliser la fonction intégrée len() pour connaître le nombre de paires clé-valeur contenues dans un dictionnaire.

capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} print(len(capitales))

Résultat: 3

Aperçu de quelques méthodes associées aux dictionnaires
  • dict.clear() supprime tous les éléments d’un dictionnaire. En clair, il le vide.
capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} capitales.clear() # Vide le dictionnaire print(capitales)

Résultat: {}

  • dict.items() retourne toutes les paires clé-valeur sous la forme d’une liste de tuples
capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} result = capitales.items() print(result)

Résultat: dict_items([(‘Islande’, ‘Reykjavik’), (‘France’, ‘Paris’), (‘Allemagne’, ‘Berlin’)])

  • dict.keys() retourne toutes les clés du dictionnaire sous la forme d’une liste
capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} result = capitales.keys() print(result)

Résultat: dict_keys([‘Islande’, ‘Allemagne’, ‘France’])

  • dict.values() retourne toutes les valeur du dictionnaire sous la forme d’une liste
capitales = {"France":"Paris", "Allemagne" : "Berlin","Islande": "Reykjavik"} result = capitales.values() print(result)

Résultat: dict_values([‘Berlin’, ‘Reykjavik’, ‘Paris’])

Conclusion

Un dictionnaire est un ensemble non ordonné de paires clé-valeur. Chaque clé donne accès à la valeur qui lui est associée. Plus puissant qu’une liste, Un dictionnaire est idéal pour réaliser un test d’appartenance. En effet, comme il s’agit d’une implémentation de table de hachage et non pas d’une séquence, la vitesse d’exécution du test d’appartenance n’est pas liée au nombre d’éléments que le dictionnaire contient.

Il existe des compréhensions de dictionnaire qui feront l’objet d’un chapitre ultérieur.


Gravatar de Benoît Boudaud
Original post of Benoît Boudaud.Votez pour ce billet sur Planet Libre.

Articles similaires

PostBlue : Prosody : mise à jour automatique des modules communautaires

Pour mettre à jour automatique les modules communautaires que j'utilise sur mon serveur de messagerie instantanée (XMPP) Prosody, j'ai écrit un service systemd ainsi qu'un timer le lançant toutes les nuits.

D'abord, il faut évidemment copier le dépôt des modules communautaires quelque part sur le serveur où tourne prosody (par exemple /usr/local/lib/prosody/modules).

sudo apt update sudo apt install mercurial sudo hg clone https://hg.prosody.im/prosody-modules/ /usr/local/lib/prosody/modules

Ensuite, éditer le fichier de configuration sudo -e /etc/prosody/prosody.cfg.lua et y ajouter le chemin vers ce répertoire.

-- These paths are searched in the order specified, and before the default path plugin_paths = { "/usr/local/lib/prosody/modules" }

Sauvegarder, relancer prosody et vérifier que le chemin est bien pris en compte.

sudo service prosody restart sudo prosodyctl about

Exemple :

Le répertoire de modules complémentaires étant correctement pris en compte, on peut maintenant créer un service dont la tâche sera de mettre à jour le répertoire cloné.

sudo -e /etc/systemd/system/prosody-up.service

Copier et sauvegarder :

[Service] Type=oneshot ExecStart=/usr/bin/hg pull --update --cwd /usr/local/lib/prosody/modules ExecStartPost=/usr/sbin/service prosody restart

Ensuite un timer invoquant le service ci-dessus à intervalle régulier (toutes les nuits à 2h du matin).

sudo -e /etc/systemd/system/prosody-up.timer

Copier et sauvegarder :

[Unit] Description=Prosody Modules Updater After=network-online.target Wants=network-online.target prosody.service [Timer] OnCalendar=*-*-* 02:00:00 Persistent=true [Install] WantedBy=timers.target

Pour finir, il suffit de recharger les services de systemd (par mesure de sécurité), activer le timer et lancer le service.

sudo systemctl daemon-reload sudo systemctl enable prosody-up.timer sudo systemctl start prosody-up.service sudo systemctl status prosody-up.service -l

Gravatar de PostBlue
Original post of PostBlue.Votez pour ce billet sur Planet Libre.

Jean-Baptiste Holcroft : Droit des femmes et traduction ?

Quel rapport entre le logiciel libre et la journée du droit des femmes ? La qualité de la traduction et de l’internationalisation ! Ici on s’intéressera aux cas concrêts pour ouvrir son logiciel aux minorités, et les femmes sont trop peu présentes dans l’informatique.

En réalisant la mise à jour des applications YunoHost sur mon serveur ce matin, l’interface me demande « Êtes-vous sur de vouloir mettre à jour de tous les applications ? ».

Ici, en plus du petit détail d’accent circonflexe manquant (sûr : être certain, sur : être dessus), on remarque donc deux problèmes liés au genre.

Si l’anglais permet très souvent l’usage de mots neutres, le français tend a donner un genre beaucoup plus rapidement. En anglais, effectivement cela ne se remarque pas : « Are you sure you want update every %s 1 ? ».

On découvre via la phrase source un problème de plus, ici le développeur utilise la même phrase pour parler de choses différentes « %s » peut être un paquet ou une application comme on le voit dans le code du projet… Eh bien ici on donc un problème de traduction et un problème d’internationalisation ! D’ailleurs il y en a d’autres.

Pour le problème de traduction, le fait de sous-entendre que l’utilisateur est un homme peut être résolu très simplement avec la tournure « Voulez-vous vraiment ». Ce n’est pas plus complexe à comprendre et cela utilise moins de place dans les interfaces, tout en étant un peu plus accueillant et équitable.

Pour le second problème, écrire « toutes » rendra cette phrase juste quand on parle d’application, mais fausse quand on parle de paquet. D’ailleurs, rien ne permet d’affirmer que le mot Application ou Paquet sera à la même place dans la phrase pour toutes les langues.

Sur ce dernier point, deux éléments sont importants et intéressants, l’emplacement des mots dans la phrase et la grammaire.

Concernant l’emplacement des mots – la FSF donne un lien très intéressant concernant la traduction sur la page décrivant son projet prioritaire d’internationalisation, c’est un article du W3C y décrit les enjeux rudimentaires de l’internationalisation liés au positionnement des mots dans les phrases selon les langues. Pour aller plus loin, tout ce site concernant l'internationalisation est très intéressant (et traduit).

Concernant la grammaire, certaines langues changent d’orthographe de ses mots en fonction de leur rapport aux autres mots. C’est par exemple le cas des déclinaisons en allemand. Sceptiques ? Voici un exemple avec le site vitrine getfedora cette fois-ci en polonais. « Choisissez la liberté. Choisissez Fedora » est traduit « Wybierz wolność. Wybierz Fedorę. ». Wikimédia m’apprend aujourd’hui qu’il s’agit de « langues flexionnelles ». Donc le fait de dissocier l’objet de la phrase mène très probablement à une mauvaise traduction (le contexte manque et le temps pour fouiller dans le code afin de comprendre n'est souvent pas pris).

Et encore, je n’ai pas traité ici le fait que mettre à jour « une application » ou « plusieurs applications » devrait pouvoir être traduit différemment ! En français c’est simplement deux possibilités (singulier ou pluriel), mais dans d’autres langues, il y a plusieurs formulations possibles… Voir sur le sujet la documentation Gettext ou Android.

Conclusion : internationaliser un logiciel et le traduit est une activité nécessitant beaucoup d’attention pour les développeurs, en plus de l’utilisation d’outils dédiés tel que gettext, il y a des règles de développement qu’il faut respecter, faute de quoi on pense bien faire, mais on ne couvre que de façon très imparfaite les cas effectivement rencontrés par les traducteurs.

Gravatar de Jean-Baptiste Holcroft
Original post of Jean-Baptiste Holcroft.Votez pour ce billet sur Planet Libre.

Benoît Boudaud : #Primtux, une distribution Linux pour les élèves du primaire.

Bonjour, il y a quelques jours, j’ai découvert Primtux, une distribution « développée (je cite) par une petite équipe de professeurs des écoles et de passionnés de l’informatique dans le milieu éducatif. »

Je trouve que c’est une belle initiative. Ludique et éducative à la fois, elle s’adresse aux élèves scolarisés dans l’enseignement primaire. Je l’ai testée en démo dans une machine virtuelle. Elle contient par exemple une version LibreOffice avec un design beaucoup plus coloré. Cette version offre par exemple la possibilité de coloriser les syllabes d’un mot. Au passage, il y a une magnifique faute d’orthographe avec l’onglet aggrandir (oui vous avez bien lu! Avec deux g). Les professeur des écoles ne l’ont pas remarquée. Carton rouge!

À qui la faute? À la méthode globale ou à la méthode syllabique?

Il y a trois niveaux :

  • Mini (pour les 3 – 5 ans)
  • Super (pour les 6-7 ans)
  • Maxi (pour les 8 – 10 ans)

Les niveaux Super et Maxi bénéficient d’un accès internet restreint c’est-à dire qu’il est inutile de taper ebay.fr dans la barre de recherche. Vous obtiendrez un message vous signifiant que l’accès à ce site est interdit. Le moteur de recherche est Qwant Junior.

On trouve également une multitude de petits jeux éducatifs pour assimiler des notions de français, mathématiques, géométrie etc… Voici un aperçu dans la vidéo présente sur le site officiel.


Gravatar de Benoît Boudaud
Original post of Benoît Boudaud.Votez pour ce billet sur Planet Libre.

Articles similaires

Thuban : Être averti des mises à jours de -current disponibles.

Grande nouvelle, j'ai atteint mon objectif : longueur de barbe > longueur de cheveux. De quoi faire un T-shirt "Achievement unlocked" si ça en intéresse certains...

Quoi? oO Tout le monde s'en fout ? :D

Bon, de quoi voulais-je parler? Ah oui, les mises à jour de -current.

OpenBSD -current permet de suivre les derniers développements effectués et d'avoir les toutes dernières versions des paquets.
Bien que ça ne soit pas obligatoire, il faut en général veiller à ce que les paquets et la base du système soient synchrones avant de procéder à la mise à jour.

L'outil snaps de fredg vérifie ces informations. Cela dit, ça suppose que l'on prenne le temps de lancer snaps régulièrement, ce que j'oublie.

Du coup, j'ai repris une partie du code de snaps pour le mettre dans un script nommé ocun - OpenBSD current update notifier. Ce dernier vérifie si votre miroir dispose d'un nouveau snapshot et vous l'indique.

Afin de garder les choses simples et permettre à chacun de faire comme bon lui semble, le script ne fait qu'indiquer en sortie s'il y a un nouveau snapshot. Libre à vous de relayer l'information par mail, par libnotify, flux rss ou que sais-je...

Par exemple, j'ai rajouté cette ligne dans mon fichier /etc/daily.local afin que la vérification soit quotidienne (ça fonctionnerait aussi dans un crontab) :

/usr/local/bin/ocun | mail -E -s "-current update avaiable" monmail@blabla.com

N'oubliez pas de lire la page permettant de suivre -current après chaque mise à jour : https://www.openbsd.org/faq/current.html.

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Eddy33 : Raspberry Pi et commandes apt

Salut.

Quand on utilise une carte Raspberry Pi avec une distribution Raspbian prête à l'emploi, il est fréquent à avoir à installer de nouveaux paquets et à utiliser des commandes apt Debian.

Voici pour mémoire la liste des opérations apt les plus courantes :

Mise à jour liste des paquets :

% sudo apt-get update


Mise à jour du système :

% sudo apt-get upgrade


Recherche d’un  paquet :

% sudo apt-cache search nom_paquet


Informations sur un  paquet :

% sudo apt-cache show nom_paquet


Installation d’un  paquet :

% sudo apt-get install nom_paquet


Suppression d’un  paquet :

% sudo apt-get remove nom_paquet


Suppression d’un  paquet y compris ses fichiers de configuration :

% sudo apt-get purge nom_paquet

++

Gravatar de Eddy33
Original post of Eddy33.Votez pour ce billet sur Planet Libre.

Articles similaires

dada : Vérifier la sécurité de son instance Nextcloud


Avoir son informatique dans les nuages, c'est franchement chouette. Mettre en place les services dont on a besoin et s'en servir, c'est même carrément jouissif pour le bidouilleur que je suis. Et je ne vous parle même pas des services inutiles que je m'amuse à faire tourner quand même ! Ne me regardez pas comme ça, nous sommes nombreux dans ce cas-là !

Dans les services que j'utilise beaucoup, il y a ownCloud, devenu Nextcloud dans mon cas. Il fait vraiment le café et me rend un nombre impressionnant de services. Du coup, il est devenu particulièrement critique : à force de mettre des choses et d'autres dedans, on y retrouve une partie de ma vie loin de l'écran, carrément personnelle, que je ne veux pas voir traîner n'importe où.

Là aussi, je suppose que je ne suis pas le seul dans ce cas et c'est peut-être pour ça que les gars de NC ont sorti un utilitaire pour scanner et analyser la qualité de l'installation de leur bébé de part le grand Internet et ses habitants, qui ne sont pas toujours des grands spécialistes.



Voici ce que vous devriez tous avoir sous les yeux une fois l'adresse de votre instance donnée à bouffer au scanner, et c'est presque un minimum ! Le A+ traduit un serveur configuré avec les normes en vigueurs chez les professionnels. Ça tombe bien, l'hébergement, c'est mon métier.

Cette note est tout de même trompeuse puisqu'elle ne s'intéresse pas à la configuration complète du serveur sur lequel Nextcloud tourne, mais c'est déjà ça.

Si vous passez par un prestataire, faites aussi le test et n'hésitez pas à lui remonter, poliment, d'éventuelles inquiétudes !

Nextcloud étant un outil qui doit rester ouvert sur le web, il doit impérativement faire l'objet d'une vigilance importante. D'autres outils peuvent tourner avec des accès très restreints, pas NC.

Je profite de ce billet pour balancer un lien vers cet article de l'excellent Reflets.info : Jacques Attali digital, au propre et au figuré. On peut y lire des choses à la fois drôles et tristes sur la vitrine web de gens qu'on imaginerait à l'écoute de ce genre de problématique. Et je ne parle même pas de Yahoo...


Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

Littlewing : Découverte de JHIPSTER

Dans la série, je me réveille après les autres, me voici en train de découvrir JHIPSTER.


Pourquoi me direz-vous. En bien je souhaite réaliser un site avec des fonctionnalités assez courantes (CRUD, recherche, identification via réseaux sociaux,…) sans trop me prendre la tête. Et là, je n’ai pas encore trouvé plus simple :).

J’étais tenté de passer par PlayFramework, mais à première vue, JHIPSTER parait plus simple à mettre en œuvre.

Mais bon qu’est-ce qu’il y a sous le capot ?
Un outil de scaffolding basé sur Yeoman fournissant un front angular (1ou 2) un back basé sur spring boot, une couche de persistance pour une base de données (mongodb, cassandra ou SGBDR) et bien plus encore.

Je ne décrirai pas la procédure d’installation car elle est déjà très bien documentée.

Voici plus précisément les fonctionnalités que je teste :
Coté front

  • AngularJS
  • Bootstrap
  • JWT

Coté Back

  • Spring Boot
  • Identification avec Spring Social / Spring Security
  • Persistence avec MongoDB ( Cassandra n’est pas encore supporté pour l’identification via réseaux sociaux )
  • Utilisation de SWAGGERUI pour documenter les API

J’ai toujours été un peu réticent vis à vis des outils de ce type ( appfuse, jboss forge,..) . Mais, là je suis bluffé. Si on veut faire une application de type CRUD sans se prendre la tête à réinventer la roue pour l’identification, l’ administration des logs, la documentation, etc , JHIPSTER est, à mon avis, l’un des meilleurs choix actuellement.

Cependant, cette intégration à un coût. En effet, l’équipe a fait des choix très structurants. Ce qui est normal pour fournir une solution aussi intégrée. Il faut les accepter si on opte pour ce genre de solution. Par exemple, le monitoring des services springboot est uniquement visible par une console web alors quand dans version standard de ce FRAMEWORK, c’est visible via API REST. C’est certes pas mal quand on est tout seul à gérer l’application, mais dès que l’on veut intégrer la supervision dans une entreprise qui dispose déjà d’outils tels que NAGIOS, cela devient plus problématique.

Pour finir, je dirais que l’une des contraintes à accepter lorsqu’on utilise ce genre de FRAMEWORK est qu’il faut rester dans le cadre préétabli pour qu’il y ait une réelle productivité. Si on veut tordre le modèle on risque de perdre en efficacité et en maintenabilité. A titre personnel pour mon use case, je m’en accommode bien et ça me permet de faire plus de choses en JAVASCRIPT que je n’aurai pu faire avec une application réalisée « from scratch ».

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Articles similaires

Renault : Petit bilan de Rawhide, épisode 2

Comme promis, à peu près tous les mois j'essaye de tenir au courant la communauté de mes aventures avec Rawhide / la prochaine version stable. Depuis fin janvier il y a eu de l'aventures et des changements.

Séparation de Rawhide et de Fedora 26

Cela fait une semaine que la séparation a débuté, pour se terminer durant le week-end. Aujourd'hui Rawhide sera donc la future Fedora 27, la branche pour la future Fedora 26 est maintenant indépendante et en voie de stabilisation. En théorie la branche qui va mener à Fedora 26 va introduire moins de changements et plus de correctifs pour améliorer sa stabilité au quotidien et il y a du travail. ;-)

Personnellement j'ai basculé sur la future Fedora 26 pour suivre au mieux son développement et rapporter les anomalies que je rencontre. Par défaut, quelqu'un sous Rawhide avant la séparation restera sur Rawhide après. Si vous souhaitez basculer sur Fedora 26, il est nécessaire d'exécuter la commande suivante :

# dnf distro-sync --releasever=26

Notons que cette commande fonctionne aussi pour passer de Fedora 25 à la future F26. Elle sera probablement plus longue et risquée.

Cette séparation signifie aussi que toutes les fonctionnalités prévues pour F26 doivent être un minimum testable (pour éviter les retards). Puis on va entrer dans le cycle de gel pour la version Alpha qui devrait sortir le 21 mars. Cela signifie aussi que les mises à jour vont passer par Bodhi maintenant, et que les outils de QA vont être accessibles à nouveau comme ceux pour donner le karma aux mises à jour, ou pour tester automatiquement les images.

Une grosse étape a donc été franchie, qui a nécessité beaucoup de travail pour l'équipe de l'infrastructure et les mainteneurs de paquets. Merci à eux.

Plus d'Alpha à partir de Fedora 27 ?

Il y a deux semaines une proposition sur la liste de diffusion de développement souhaite mettre un terme aux versions Alpha dans Fedora.

Comment ? En améliorant la qualité de Fedora Rawhide ! Passage des mises à jour par Bodhi, signature des paquets, utilisation des tests automatiques de QA, etc. L'objectif en améliorant la qualité de Rawhide est de supprimer la première étape d'une nouvelle version stable, pour gagner du temps et en énergie. La Alpha pouvant n'être qu'un jalon pour les nouvelles fonctionnalités. Cela pourrait aussi améliorer grandement la qualité de vie des testeurs en limitant l'impact de certains bogues.

Mais pour l'instant il n'y a pas de validation de ce plan, il faudra être un peu patient pour connaître le fin mot de l'histoire.

Les changements constatés

Si j'utilise la version de développement, outre aider à rapporter les soucis, c'est aussi pour identifier les changements et en profiter. Et je dois dire que contrairement à la dernière fois, il y a quelques changements visibles. Je ne vais présenter que ce qui me semble notable, visible et que j'ai constaté, il est possible que j'ai loupé de gros trucs. ;-)

Cela tourne autours de GNOME. Déjà il y a une refonte des icônes, qui semble légère de prime abord mais qui peut surprendre (notamment l’icône de Nautilus toute bleue !). Cela est également visible dans les applications GNOME telles que Nautilus (pour les dossier ou les fichiers).

Nouvelles_icones.png

À voir l'étendue de ce nouveau design, mais personnellement j'apprécie.

Ensuite il y a un gros travail en cours sur l'outil de configuration de GNOME. L'objectif est de le rendre plus proche d'en point de vue design des autres applications. Mais aussi plus clair. Et on commence à visualiser ces changements sur quelques pages. Par exemple ici sur la page des utilisateurs :

Ajouter_utilisateur.png Utilisateur.png

Mais cela est visible aussi sur la page des imprimantes (mais n'en ayant pas d'installé pour l'instant, je ne peux vous le montrer, regardez du côté du développeur Felipe Borges qui communique beaucoup sur le sujet).

Il y a l'ajout du nouveau mode nuit. Vous connaissez Redshift ou équivalent ? Ces applications modifient la couleur d'affichage de votre écran suivant l'heure de la journée pour éviter de fatiguer vos yeux notamment le soir en appliquant un filtre rouge. Cette fonctionnalité n'était plus possible directement avec Wayland. Maintenant GNOME intègre cette fonctionnalité directement et cela fonctionne sous Wayland aussi :

Mode_nuit.png

J'ai testé pendant une semaine en gros, la fonctionnalité marche comme prévue mais je ne trouve pas cela pertinent. Je trouvais au contraire que cela me fatiguait plus les yeux, en plus de ne pas être forcément très pratique. En effet, techniquement il faudrait que cela tienne compte de la météo, de l'orientation des fenêtres, de l'éclairage, etc. et non seulement de l'heure et de la latitude. Puis il y a des applications où cela sert plus qu'à d'autres.

Avec mon thème sombre, ce sont surtout les pages web à fond blancs qui posent soucis. Ce serait bien d'activer ce mode sur Firefox par exemple mais pas sur le lecteur vidéo où on souhaite le respect de la couleur d'affichage par exemple. Suivant l'usage de l'ordinateur, on peut se retrouver à jongler avec l'activation de ce mode. Personnellement je l'ai coupé, mais il fonctionne comme attendu.

Enfin, il y une refonte des notifications dans GNOME Shell.

Notifications.png

On peut voir l’apparition du bouton pour tout nettoyer, une interface un peu plus claire et « plat », l'ajout des informations de la météo aussi pour éviter de lancer l'application dédiée.

Problèmes rencontrés

Comme d'habitude, Fedora Rawhide nous réserve des surprises en terme de stabilité. Comme la dernière fois, je n'en ai pas rencontré tant que cela, seulement quatre mais qui sont assez importantes.

Le premier est que depuis quelques temps GNOME Wayland crashe plutôt régulièrement avec ma configuration. Cela semble lié au pilote graphique nouveau. Je vais essayer d'obtenir d'autres traces pour faire avancer le sujet.

Le deuxième j'en avais déjà parlé lors du compte rendu du FOSDEM. Je n'ai pas fait de rapport car je n'arrive pas à le reproduire. Cela ressemble un peu à celui-là mais je n'en suis pas sûr même si les symptômes et conditions sont similaires (j'avais en effet changé la disposition par défaut de mon clavier il y a peu).

Le troisième bogue est après la reconstruction générale des paquets avec GCC 7 (le compilateur par défaut de F26), Firefox devenait inutilisable. L'interface n'était pas cohérente, pas chargée entièrement, les pages Web non plus… Cela est due sans doute à une trop grande optimisation du code par GCC qui a cassé le fonctionnement. Quelques jours après le rapport, problème corrigé. :-)

Notons que le bogue que j'avais identifié concernant la lecture des vidéos semble résolue. Enfin ! J'attends encore un peu avant de signaler cela sur le Bugzilla histoire d'être sûr (bogue à caractère aléatoire qui nécessite donc plusieurs essais pour vérifier sa disparition).

Enfin, le dernier est un problème du noyau Linux lié au Wifi pour certains modèles de carte (dont ma carte évidemment). Le noyau crashait partiellement lors de son activation ce qui était plutôt pénible et obligeait de garder un vieux noyau en secours. N'ayant pas encore la connexion par câble à la maison, c'était plutôt embêtant. Mais c'est corrigé. Ouf.

Ce sera tout pour cette fois, ce qui me semble déjà chargé. Je vous donne rendez-vous dans 1 mois pour la suite des aventures.

Gravatar de Renault
Original post of Renault.Votez pour ce billet sur Planet Libre.

Articles similaires

Tuxicoman : Logiciel libre et auto hébergement, quid de la masse populaire?

Un utilisateur de Facebook rapporte 80$ de revenus publicitaires par an à Facebook. C’est une moyenne. Un utilisateur très assidu en rapporte plus.

In fine, Facebook dégage un bénéfice net de 10 milliards de dollars par an, principalement issu des revenus publicitaires.

Le prix à payer pour le service est :

  • accepter les messages publicitaires (comme sur TF1 ou la plupart des magazines papier en kiosque)
  • le profilage de son comportement à tout fin future
  • la censure selon les règles de Mark Zuckenberg (pas de nudité, etc…)
  • l’espionnage d’Etat, en premier lieu des USA.

Si l’on considère ces points comme non problématiques, alors les services proposés par Facebook (Facebook, Instagram, WhatsApp) sont très pratiques.

Il permettent de tisser des liens et accéder à des informations à une échelle et vitesse sans précédent pour le plus grand nombre et. Certes le web permet de communiquer à l’échelle de la planète depuis longtemps, mais la plupart des gens ne peuvent apprendre le HTML, comprendre le fonctionnement d’un serveur dans un réseau, payer un nom de domaine ou ne serait ce que le matériel nécessaire à un hébergement.

J’adore le logiciel libre notamment car il permet de voir et s’approprier comment fonctionne réellement un ordinateur mais la plupart des gens ne comprennent même pas ce qu’il y a derrière le mot « cloud ». Le « nuage » de fumée est un concept qui leur est suffisant pour utiliser le service.

Il y a donc là un dilemme. Si les alternatives libres à Facebook sont plus contraignantes à l’utilisation que Facebook, il est peu probable que la majorité des gens y migrent. Tout simplement car ils n’en comprennent pas l’enjeu et donc l’intérêt.

Leurs besoin sont instinctifs ou basiques : envoyer une vidéo rigolote, partager facilement des infos publiques, voir des images de mode vestimentaire, etc… et ils n’ont rien de sérieux à cacher. Snowden a tout dit et presque rien n’a bougé.

Dans ce contexte, quel est l’objectif du logiciel libre pour la masse des individus ?

Sa forme actuelle présuppose que l’utilisateur est éclairé, ne serait ce que pour décider quel moyen technique de communication utiliser (XMPP, email, Diaspora, GNUsocial, Movim, WebRTC, etc…) et maintenir lui même son ordinateur (comprendre APT/RPM est plus complexe qu’utiliser un app store de Google/Apple/Microsoft) et donc un utilisateur non éclairé ne peut pas s’en sortir seul.

Une faible partie de la population est actuellement prête à faire l’effort d’apprentissage (dénombrez parmi vous les utilisateurs éclairés de logiciels libres qui ne travaillent pas dans l’informatique) et l’usage d’un logiciel libre par un utilisateur non éclairé est similaire à l’utilisation d’un logiciel propriétaire (il ne peut rien modifier, est tributaire des conditions d’un prestataire pour toute modification ou administration de son informatique).

Tout le monde n’est pas programmeur comme Stallmann.

A mon avis, le libre ne s’imposera que si Facebook abuse de son monopole et devient un problème pour l’écosystème au dessus de lui (annonceurs, services de paiement, éditeurs de contenus, etc…). A ce moment, certains acteurs pourraient se regrouper pour imposer une base logicielle plus propice à la « libre » concurrence et fabriquée à partir de logiciels/protocoles libres et interopérables.

De la même manière, Steam a posé un pied dans l’environnement Linux, mais les utilisateurs ne bougeront pas à moins que les performances Linux dépassent celles de Windows ou que Microsoft gère mal sa cannibalisation du marché avec son magasin d’application intégré à Windows 10. Mais bon, Steam, c’est le mal, puisque pour le coup, c’est un système de DRM pour logiciels non libres.

Related Posts:

Gravatar de Tuxicoman
Original post of Tuxicoman.Votez pour ce billet sur Planet Libre.

Articles similaires

alterlibriste : Go fsck yourself !

Suite à mon dernier sauvetage de système de fichiers, j’ai un peu médité sur la question et me suis demandé si tout ça était vérifié régulièrement. Je me suis surtout souvenu que lorsque j’étais sous Ubuntu, il y a bien 4 ans, il y avait tous les 30 montages une vérification du système de fichiers qui tombait forcément mal, juste au moment où on avait besoin urgent du PC.

Mais plus de tout ça depuis de nombreuses années. Alors je fais mes petites recherches et m’aperçoit en faisant un :
$ sudo tune2fs -l /dev/sda1 (à adapter à la partition que l’on souhaite vérifier)
que j’avais certaines partitions montées plus de 1000 fois et jamais vérifiées depuis plus de 2 ans (date de la dernière installation du système).
Les paramètres mount count étaient à -1 (c’est le nombre maximal avant vérification, donc jamais) et check interval à 0 (temps entre chaque vérif, jamais aussi).

Ma première réaction a été de me dire que Debian laissait gérer ça par ses power users contrairement aux distributions user friendly qui prenaient soin de tout paramétrer au mieux pour leurs utilisateurs débutants. Que nenni, Ubuntu n’est plus pourvu de cette vérification non plus. Ma deuxième réaction a été de me dire que SytemD, dans sa toute puissance, avait pris en charge cette tâche ingrate. Pas plus, en creusant un peu, on se rend compte que Wheezy et Ubuntu 12.04 étaient déjà exemptés de vérification.

Quand on cherche pourquoi le fsck a été désactivé, on tombe surtout sur des tutos pour le désactiver mais aussi sur tous les wikis qui disent que ce n’est pas bien et qu’il vaut mieux qu’il y ait une vérification au moins tous les 50 montages. De temps en temps, on tombe sur un pékin qui se demande comme moi pourquoi c’est devenu comme ça... et je n’ai trouvé aucune réponse claire, mais surtout aucune explication officielle.

Un truc qui emmerdait tout le monde et qui devait surtout être fait au risque de devoir faire pénitence en se fouettant avec du câble RJ45 est disparu du jour au lendemain sur toutes les distributions sans aucune explication officielle (enfin si quelqu’un peut me l’apporter, je suis preneur) et tout va très bien madame la marquise. Mais de deux choses l’une : soit c’était inutile, soit on fait comme si tout va bien se passer.

Bon après, pas de quoi s’alarmer non plus, on voit au démarrage que les volumes montés sont clean et si la machine s’est éteinte à la sauvage (hard reboot, coupure de courant ou autre), on voit passer des lignes comme quoi le dernier arrêt ne s’est pas bien passé et que le ménage est en train d’être fait pour que tout soit d’aplomb.

Parmi les explications, on trouve en vrac : ça arrivait à un mauvais moment (d’ailleurs il y a eu un projet pour que ce soit fait à l’extinction plutôt qu’au démarrage), on ne vérifie plus que s’il y a eu un problème, un système de fichier journalisé n’a plus besoin d’être vérifié, ...

En général, ceux qui, comme moi, ont posé la question ont fait une vérification (elle est beaucoup plus rapide depuis ext4) et, dans le doute, remis les paramètres de vérification régulière de la manière suivante (tous les 50 montages ou 2 semaines) :
$ sudo tune2fs -c 50 -i 2w /dev/sdaX

Ainsi, au cours de mes recherches, j’ai trouvé que le fsck était originellement remplacé par un mot plus vulgaire quand le système était dans les choux et qu’il était de mise de dire "go fsck yourself" pour réparer. Chose que l’on a maintenant à faire soi-même si on veut vérifier que tout va bien.
Reste surtout à mettre à jour internet qui regorge de directives du passé.

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.

Articles similaires

Renault : Petit problème dans les élections du FAmSCo

J'en avais parlé il y a peu des résultats des différentes élections au sein du projet Fedora, dont le FAmSCo, l'organe qui gère les ambassadeurs du projet.

Cependant dans ces résultats, une polémique a eu lieu.

Une information passée inaperçue

La polémique a concerné Frederico Lima qui est un contributeur brésilien. C'est même un contributeur plutôt connu et respecté dans l'ensemble ce qui explique peut être le manque de vigilance (ou l'absurdité des règles) qui a entouré son élection.

En effet, même si c'est un contributeur, le fait est que s'il avait souhaité devenir ambassadeur, son mentor n'était pas actif ou disponible jusqu'au jour de l'élection. Et plutôt que de renoncer à la candidature ou de contacter un autre mentor, l'élection s'est poursuivie. Peu après, des gens ont constaté que formellement il n'était pas ambassadeur et ne peut donc siéger au FAmSCo qui gère les ambassadeurs.

Résolution

S'en est suivi forcément une situation de crise autour de ce contexte. Le FAmSCo a saisi le Conseil pour obtenir un avis, qui a renvoyé le FAmSCo face à sa propre procédure en cas de siège vacant.

Le FAmSCo va donc proposer quelques noms pour remplacer le siège vacant à la communauté afin de procéder à un changement. Voici les noms : Zacharias Mitzelos, Sirko Kemter et… Frederico Lima lui même. Et oui entre temps il est devenu formellement un ambassadeur.

À l'heure actuelle, je ne sais pas où en est la procédure. D'autant qu'entre temps les liens fedorahosted sont morts définitivement, et c'est là bas qu'avait commencé la procédure.

Conclusion

Cet évènement a entrainé une grosse discussion sur les listes de diffusions (dont je peine à retrouver la trace) pas particulièrement agréables sur ce qui semble être une situation absurde.

Ce genre d'évènements plaident pour la mise à mal du statut d'ambassadeur, et que tout contributeur un minimum sérieux et impliqué devrait l'être d'office pour éviter ce genre de bévues. Il est assez étonnant de considérer un contributeur actif depuis quelques temps ne puisse pas remplir le rôle d'un ambassadeur. Et peut être qu'il va retrouver son siège qu'il avait obtenu, car durant le laps de temps il a rempli la formalité nécessaire pour être un ambassadeur auprès du projet.

En tout cas on peut espérer que les leçons vont être tirées du cette histoire. Soit en vérifiant ce genre de formalités pour tout le monde en avance de phase, ou en supprimant ce statut formellement.

Gravatar de Renault
Original post of Renault.Votez pour ce billet sur Planet Libre.

Articles similaires

Pages