orx57 RSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierPlanet Libre

genma : Ubuntu - Optimisation de l'usage de la batterie avec TLP

Par genma

Il y a des astuces que l'on voit passer, que l'on met en favori ou dans un shaarli pour conservation que l'on ressort quand on en a besoin. Et autant repartager et de donner de nouveau un peu de visibilité à l'astuce en question.

Tel est le cas pour le billet de blog de Augmentez l'autonomie de votre batterie sous GNU/Linux avec TLP du blog angristan.fr qui parle de TLP.

TLP est un outil qui va se charger d'appliquer automatiquement divers paramètres et réglages dans le but de réduire la consommation de votre pc et d'optimiser les performances et la durée de vie de votre batterie.

TLP est un outil de ligne de commande qui ne comporte pas d'interface utilisateur graphique, mais il existe une interface utilisateur graphique GTK tierce (écrite en Python) pour TLP, appelée TLPUI TLPUI reprend toutes les options que l'on a avec TLP en ligne de commandes.

Pour facilité l'installation et l'usage de TLP, j'ai trouvé un petit script shell qui fait tout le nécessaire pour Ubuntu 18.04 https://gitlab.com/simbd/Scripts_Ubuntu/blob/master/EconomieEnergie_TLP_Bionic.sh et qui ajoute TLPUI.

J'ai installé ce logiciel sur ma machine, je ne vois pas de différence dans l'usage que j'en ai quotidien en mode nomade (sur batterie) ou mode sédentaire (assis à mon bureau, branché sur batterie), cela n'impacte donc pas trop les performances même si TLP joue tout de même sur l'activation / désactivation ou consommation de certains périphériques. Il faudrait que je regarde en détail chaque paramètre pour faire un tunning fin et optimum, mais je ne sais pas si le temps investit serait rentable par rapport à la configuration par défaut.

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

  • 6 mars 2019 à 09:00

Frédéric Micout : Graylog à l'usage - retour d'utilisation

Par Frédéric Micout

Dans un précédent billet, je me suis concentré sur l’installation de Graylog sur mon serveur auto-hébergé. Dans ce qui suit, je ne me propose pas de tout détailler, notamment parce que la documentation est déjà assez bien faite [Documentation]. Ici, nous allons plutôt faire un peu plus connaissance avec l’outil pour en ressortir ce qui me semble important et pour comprendre la logique de son fonctionnement.

Les entrées (Input)

C'est une partie que j’ai mentionnée dans le billet précédent. Pour pouvoir récupérer des logs, il faut avant toute chose définir par quel biais on va être amené à les récupérer sur nos serveurs. La quasi-totalité de mes machines tournant sous GNU/Linux, je ne me suis pas compliqué la vie et j'ai simplement paramétré une entrée en "Syslog UDP" et une autre en "Syslog TCP" pour la forme (bien que je puisse me passer de cette dernière en fait ; à voir ensuite si je dois la supprimer ou non). Pour ces deux entrées, j'ai spécifié qu'elles devaient tout récupérer (cocher "global") et j'ai indiqué le port à regarder (1514 ; souvenez-vous que je redirige tout ce qui arrive sur le port 514 vers le pour 1514). Pas de chiffrement des données dans mon cas lors du transfert.

Rechercher de la donnée intéressante

À ce stade, on doit voir les premiers logs affluer lorsque l'on se rend dans le menu "search". Chaque log est décomposé en plusieurs champs (application_name, facility, level, message, process_id, source et timestamp). Il est possible d'afficher ou non, de manière globale, chacun de ces paramètres.

Rapidement, il est souhaitable de rechercher l’information pertinente dans ce flot de logs. Pour avoir un ordre d'idée, mon serveur une fois en place, réceptionne environ 20000 lignes de log quotidiennement et on ne parle ici que d'un petit serveur auto-hébergé faisant tourner peu de services. Graylog propose donc différents outils pour rechercher dans les log. Du haut de l’interface vers le bas on trouve :

  • La période temporelle de recherche (en absolu ou en relatif).
  • Le ou les filtres à appliquer.
  • Pour chaque champ de log, on peut choisir l’affichage du graphe ou du compteur associé.

Si l'on souhaite par exemple afficher toutes les logs contenant un code erreur HTTP 404 durant la journée passée, il suffit de procéder comme suit :

  • Sélectionner "search in the last 1 day" dans le fenêtre temporelle (relatif donc).
  • Dans le champ de recherche, taper :
    application_name:apache && message:404

Le graphe temporel et les logs associés vont alors s'afficher. L'étendue des possibilités de recherche est bien entendu beaucoup plus large que celle de ce petit exemple [Documentation "Search"]. Il est possible ensuite d'affiner la recherche en sélectionnant avec la souris la zone sur le graphe qui nous intéresse particulièrement.

Tableaux de bord (Dashboard)

Voir les données et les manipuler en temps réel c'est bien mais les suivre sur la durée, c'est encore mieux. Les tableaux de bord sont faits pour ça et ils se créent en trois temps.

  • Il faudra tout d'abord créer un (ou plusieurs) tableau(x) de bord en donnant à chaque fois un titre et une description à celui que l'on crée. À ce stade, ils sont encore vides.
  • Pour remplir un tableau de bord, rien de plus simple. Depuis le menu "search", il y a à côté de chaque graphe ou compteur, un bouton permettant de l'ajouter à un tableau de bord. Dès qu'un graphe est pertinent, on peut donc l'ajouter à un tableau de bord en particulier.
  • Une fois le tableau de bord rempli, il ne reste qu'à organiser les différents élément à l'intérieur. La réorganisation se fait par glisser/déposer, on peut agrandir ou étirer un peu comme on veux les diverses ressources à l'intérieur. Cela permet de hiérarchiser l'information par exemple.

Les extracteurs (Extractor)

Pour chaque entrée de log (voir précédemment), on peut définir ce que l'on appel des extracteurs. L'idée est que dans les logs, il y a de l'information qui mérite d'être stockée dans un champ à part dans la base de Graylog. Pour créer un extracteur, il faut donc se rendre dans l'entrée qui nous intéresse et choisir "manage extractors". L'extracteur va opérer sur un seul champ des logs. On peut choisir un type d'extracteur pour le champ retenu (split, regex, sous-chaîne, ...). Une fois cela fait, il reste à définir exactement ce que l'on veux extraire.

Le cas d'école est l'adresse IP contenue dans une large proportion de champs "messages" des logs. Là, il suffit de choisir un "regex" appliqué au champ "message" et d'y rechercher les paterns correspondants à l'adresse IP :

(([0-9]{1,3}\\.){3}[0-9]{1,3})

Reste à définir le nom du champ où doit être rangé la donnée extraite lorsqu'elle est identifiée. Une fois l'extracteur en place, les nouveaux logs sont traités et ce champ commence lui aussi à se remplir.

Géolocalisation (approximative)

A titre indicatif, il peut être intéressant de connaître l'origine géographique des différentes requêtes. Avant toutes choses, les résultats doivent être interprétés avec une certaine précaution pour deux raisons :

  • D'une part elles peuvent être affectées à une entité à un instant donné et passer à une autre peu de temps après. La précision dépend donc de la fraîcheur de la base d'IP que l'on emploie.
  • Un utilisateur de VPN ou de Tor peut sortir n'importe où sur internet et cela quel que soit l'endroit où il se trouve réellement. La géolocalisation de l'IP perd dans ce cas de son sens.

Sans redécrire la procédure, il faut avoir en tête qu'il n'est possible de procéder à la géolocalisation par l'adresse IP que lorsque l'on dispose d'un champ contenant exclusivement une adresse IP. Il faudra donc impérativement avant mettre en place l'extracteur qui va bien (voir plus haut) pour isoler l'adresse IP.

Une fois cette opération effectuée, on voit apparaître de nouveaux champs au niveau des logs. Si l'on s'est basé sur un champs nommé "IP", on retrouvera suite à la mise en place de la géolocalisation IP sur ce champ les champs "IP_city_name", "IP_country_code" et "IP_geolocalisation". Il sera alors possible de travailler sur ces champs comme sur les autres (filtrage, ajout à des tableaux de bord).

Recevoir des notifications en cas de problème

Il est possible de paramétrer l'envoi de notifications en cas de problème détecté dans les logs. Je ne vais pas décrire ici comment procéder dans le détail (la doc est bien faite et on trouve facilement des ressources tierces où cela est bien expliqué aussi) mais juste la logique de la chose.

Dans un premier temps, il faut définir le périmètre que l'on souhaite surveiller. Pour cela, il faut se rendre dans le menu "Streams". On utilisera donc soit le flux par défaut, soit un flux que l'on créera pour l'occasion. Si l'on opte pour cette seconde voie, seuls les logs qui correspondent aux critères que l'on aura défini seront routés sur le flux en question.

Dans un second temps, il faut définir les critères permettant de lever une alerte. Pour cela, il faut se rendre dans le menu "Alerts". Dans le sous-menu "Conditions", on choisira d'ajouter une nouvelle condition sur le flux précédemment créé et selon un type de critère (correspondance sur un champ, correspondance sur plusieurs champs ou compteur d'évènements). Selon le type de critère retenu, on pourra alors définir précisément les critères permettant de lever une alerte. À ce stade les alertes qui sont générées restent au niveau de Graylog.

Enfin, il faut donc configurer la notification des alertes. Toujours dans le menu "Alerts", dans le sous-menu "Notifications", créer une nouvelle notification. On choisit le stream précédemment créé puis le type de notification.

À l'usage

Le but n'est pas uniquement de jouer avec des log et de s'émerveiller devant. Avant que je ne centralise mes logs, il était fastidieux d'identifier des faits liés à des erreurs de configuration de ma part ou à des actes malveillants. J'avais bien quelques scripts qui tournaient mais uniquement sur des points très précis et forcement, cela se faisait machine par machine.

Je perçois tout d'abord l'intérêt énorme d'une représentation graphique de ce qui se passe sur mes machines. En un coup d'œil, je vois un passer un certain nombre de choses et je peux être assez réactif. S'agissant par exemple des erreurs HTTP 404, je me suis rendu compte qu'une grosse part étaient liées à l'absence de fichier "robots.txt" ou de "favicon.ico" sur mon blog, ce qui pouvait déclencher un bannissement abusif de certains bots par fail2ban. Accessoirement, cela n'aidait pas à mettre en évidence les autres erreurs de ce type.

Cette centralisation des logs m'a aussi permis de mettre en évidence le fait que des outils que j'avais mis en place afin de faire des tests étaient toujours en fonctionnement (alors que je pensais les avoir désactivés). Typiquement, j'ai testé il y a quelques semaines un outil de filtrage en fonction de la géolocalisation IP et j'ai pour cela tiré 5 pays au hasard. Le test ne devait pas durer et pourtant, il était toujours en cours. La remontée s'est faite par une personne ayant consulté mon blog depuis l'étranger et en regardant attentivement les codes erreur HTTP 403, j'ai constaté que 5 pays d'origine étaient systématiquement rejetés. J'ai très vite désactivé cette fonctionnalité et tout est rentré dans l'ordre. Au passage, désolé encore pour ceux qui ont été impactés par cette action de ma part.

Quand on commence à résoudre tout ces petits problèmes de configuration on commence donc à voir émerger les vrais comportement anormaux et potentiellement malveillants. Je sais bien entendu qu'il y en a déjà un certain nombre sur des patterns que j'ai déjà identifié (scans permettant d'identifier si mon blog tourne sous Wordpress ou d'autre CMS, recherches de dossiers faisant référence à phpmyadmin, ...). Toutefois, je peux à présent plus facilement et rapidement identifier d'autres tentatives sortant elles un peu plus de l'ordinaire. Pour rappel, à l'époque où j'utilisais Wordpress, j'ai mis plusieurs mois avant de me rendre compte (par hasard) que mon blog avait été compromis alors même que j'avais remarqué qu'il se passait quelque chose d'anormal avec mon serveur apache au moment même de l'attaque. Aujourd'hui si ça se reproduisait, je serais alerté en temps réel et je pourrais donc être plus réactif.

Graylog utilise Elasticsearch et Mongodb. Pour autant, cela est totalement transparent une fois la solution en place et on n'agit en fait que sur Graylog.

Sans trop attendre, j'ai intégré la quasi-totalité de mes machines virtuelles ou physiques à cet outil de centralisation des logs. Il me reste encore à affiner certains réglages concernant les alertes ou les données que je souhaite suivre mais globalement, tout est déjà en place.

Gravatar de Frédéric Micout
Original post of Frédéric Micout.Votez pour ce billet sur Planet Libre.

  • 5 mars 2019 à 22:40

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

Par Journal du hacker

Pour la 9ème semaine de l'année 2019, 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

  • 4 mars 2019 à 00:01

Yannic Arnoux : Tmux et MSYS2

Par Yannic Arnoux

Toujours condamné aux logiciels de l’éditeur de Richmond dans le milieu professionnel, je suis un fidèle utilisateur de MSYS2, un Cygwin auquel on a greffé Pacman… pas le mentos jaune mais le gestionnaire de paquet de ArchLinux. Mais pourquoi faire un truc pareil me direz-vous ? Et bien pas seulement pour le plaisir de la ligne de commande ! L’interface d’installation et mise à jour des paquets Cygwin ressemble à ça :

Sélection paquets Cygwin

Alors si je peux avoir la même chose avec une commande, vérifier la liste des dépendances que je vais installer au préalable, je dis banco :

pacman -S gcc-g++

MSYS2 a simplifié quelques trucs ; par exemple, les partitions Ms Windows sont directement sous la racine : /C, /D

Ma principale utilisation de MSYS consiste à accéder de multiples serveurs distants par SSH et faire du copier-coller entre sessions mais aussi avec le presse-papier système, joliment surnommé clipboard Windows. Et c’est là qu’intervient mon outil console préféré : tmux.

Tmux est supporté par MSYS2 dans sa version 2.8. J’avais un peu délaissé l’outil depuis la version 2.4, ce fut l’occasion de dépoussiérer ma configuration et d’obtenir des réglages qui fonctionnent aussi bien sur GNU/Linux que sur MSYS 2/Ms Windows.

Sous Cygwin le presse-papier est un device /dev/clipboard et le copier de Ms Windows vers MSYS2 est géré de base : un SHIFT-INS colle dans MSYS2. Dans l’autre sens, il faut ajouter le nécessaire dans la configuration de TMUX. Je préfère le mode VIM plutôt que le mode EMACS donc ma configuration est en fonction :

# copy to Ms Windows clipboard
if -b '[ -c /dev/clipboard ]' 'bind-key -T copy-mode-vi y send-keys -X 
copy-pipe-and-cancel "tmux save-buffer - > /dev/clipboard"'

La configuration complète est accessible sous Gitoube : https://github.com/kianby/dotfiles/blob/master/tmux/__tmux.conf

Et comme on est au 21ème siècle, j’ai réalisé une petite vidéo pour montrer le copier-coller en image avec youteubé asciinema. Désolé pour le sur-place dans la séquence entre 2 minutes et 2’50, j’ai fait une pause tisane ;-)

Comme à la fin de toute vidéo, il y a un bonus ! Je cherchais aussi un outil pour réaliser une interface console de connexion aux serveurs SSH et, encore mieux, j’ai découvert le projet sshto qui exploite directement le fichier ~.ssh/config pour construire automatiquement une telle interface.

sshto

Le mode console a encore de beaux jours devant lui !

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

  • 2 mars 2019 à 01:00

Thuban : Syspatch : patch PF - IPv6 - multi-arch - 6.3+6.4

Par Thuban

L'équipe OpenBSD nous livre ce jour le patch "pf6frag" :

  • des paquets IPv6 fragmentés peuvent passer au-travers de PF de manière erronée ou provoquer un crash ! 6.3 : patch n°30 ; 6.4 : patch n°14.

Le redémarrage de votre machine est nécessaire, car cela affecte le noyau.

Architectures concernées : amd64, arm64 et i386

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

  • 1 mars 2019 à 13:30

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

Par Simon Vieille

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…

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

  • 28 février 2019 à 11:24

Mathias : Comment sécuriser Django, framework python

Par Mathias

Tout le monde est maintenant conscient de l’importance de délivrer ou utiliser un service web fortement sécurisé. Il est indispensable de protéger les données stockées dans les bases de données, valeurs inestimables, et assurer la confidentialité des échanges.

L’utilisation d’un framework comme Django permet de partir sur des bonnes bases. Mais nous allons voir qu’il est nécessaire de paramétrer finalement celui-ci.

Comment sécuriser Django ?

Je vais me servir d’un exemple concret, l’application PyFreeBilling dont je suis le créateur. PyFreeBilling est une application complète de VoIP (fonctionnalités de class 4 pour les connaisseurs) permettant à un opérateur télécom ou à une entreprise de services de connecter des clients et des fournisseurs, de router les appels, d’appliquer un tarif selon le type d’appel ainsi que l’ensemble des tâches nécessaires à cette activité.

L’exemple est intéressant du point de vue de la criticité de l’application. Une solution de communications de VoIP doit-être fortement sécurisée. Les risques de fraudes, de divulgation d’informations ou de perte de services sont importants. Un serveur à peine déployée subit ses premières attaques au bout de quelques minutes ceci étant aidé par des frameworks permettant d’automatiser les attaques.

L’interface de gestion de PyFreeBilling est développée avec le framework Django.

Pourquoi sécuriser Django ?

La sécurisation de l’interface d’administration est essentielle. Elle permet de gérer a création et la suppression de comptes SIP, la modification de mots de passe, l’augmentation des limites comme le nombre d’appels simultanés ou le volume d’appels journaliers. Un système d’anti-fraude peut ainsi être facilement détourné, un compte utilisateur pirate créé et des routes créées. Un assaillant peut aussi récupérer les données des accès opérateurs ou la base clients.

Les risques

Je vais maintenant présenter les types d’attaque les plus courantes et puis montrer comment avec Django mettre en oeuvre des solutions afin de limiter le risque.
L’OWASP est une communauté spécialisée dans la sécurité des applications web. Ils proposent notamment des outils afin de tester la sécurité des applications web. Un projet va particulièrement nous intéresser : OWASP Application Security Verification Standard (ASVS) . Je vous engage notamment à lire les cheatsheets mises à disposition.
Voici le top ten des risques définis par l’OWASP (les liens conduisent à la page détaillant chaque item) :

Mise en oeuvre des contre-mesures

Maintenant que nous avons identifié les risques et nous avons une base documentaire solide sur laquelle nous appuyer, nous allons voir les contre-mesures pour sécuriser Django.

Les injections

Tout d’abord, nous allons voir les injections SQL. Django fournit un ORM qui permet de se protéger de ce risque en échappant les variables avant de soumettre la requête à la base de données. A la condition, de ne pas utiliser la fonction RawSQL permettant d’utiliser du code SQL natif. Dans ce cas, c’est au développeur de valider les variables utilisées dans la requête !
Attention : l’ORM ne dispense pas de valider les variables, c’est une bonne pratique !

L’authentification

Nous allons retrouver plusieurs sous parties.
Tout d’abord, nous allons voir comment se protéger des attaques par brute force.
Pour se protéger des attaques que subissent constamment les pages de login, les attaques par brute force, j’utilise le package django-axes . Il permet de bloquer une adresse IP après un nombre prédéfini de tentatives infructueuses. La configuration par défaut est très satisfaisante, mais je vous invite à lire la documentation de django-axes afin de tuner votre configuration selon vos souhaits, notamment si vous avez besoin de whitelister quelques adresses IP.
Toutes les tentatives sont accessibles via l’interface d’administration incluant les adresses IP, les navigateurs, les noms d’utilisateurs utilisés …
En complément, un honeypot est intégré afin de détecter les robots malveillants testant la page /admin, page identique à la vraie page de connexion ! Toute tentative est ainsi bloquée en amont. Pour cela, j’utilise le package django-admin-honeypot.
Le second point, concerne la robustesse des mots de passe. Très souvent les utilisateurs utilisent des mots de passe trop simples. Afin, de renforcer la complexité des mots de passe, Django intègre des validateurs de mots de passe, dont voici un exemple de configuration :
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
'OPTIONS': {
'min_length': 9,
}
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
Nous allons tout d’abord vérifier que le mot de passe n’est pas trop similaire avec un attribut de l’utilisateur, puis que la longueur minimum est de 9 (je suggère d’augmenter cette valeur), ensuite nous allons vérifier s’il ne fait pas partie d’une liste de mots de passe couramment utilisés et que le mot de passe n’est pas entièrement composé de chiffres. Par ailleurs, il est aussi possible d’intégrer son propre validateur en plus de ceux prédéfinis par Django.
Le stockage du mot de passe en base de données doit aussi être particulièrement surveillé.
Django ne stocke heureusement pas les mots de passe en clair dans la base de données, mais un hash de celui-ci. Nous avons la flexibilité d’utiliser les méthodes de hachage de notre choix, mais dans une liste réputée sécurisée. Par défaut, c’est l’algorithme PBKDF2 avec un hash SHA265.
PyFreeBilling utilise l’algorithme Argon2 étant réputé plus sécurisé.
Il est possible et souhaitable d’activer une double authentification (two-factor authentication). Dans PyFreeBilling, cette fonctionnalité est optionnelle, car selon le type de déploiement, la mise en oeuvre sera plus ou moins complexe. Mais je recommande très fortement la prise en considération de cette fonctionnalité qui va renforcer sensiblement l’application. Pour cela, l’application django que je recommande est django-two-factor-auth qui intègre de nombreux services. Je ne vais pas détailler ici la mise en oeuvre, un article entier serait nécessaire. Je vous encourage à lire la documentation qui est bien faite.

Exposition de données sensibles

Il est essentiel de s’assurer qu’aucune donnée sensible ne puisse être interceptée.
Tout d’abord la mise en oeuvre du protocole HTTPS afin de garder confidentielles les données échangées est indispensable.
Par défaut, Django autorise les échanges via le protocole HTTP, mais pour des raisons évidentes, l’accès à l’interface d’administration de PyFreeBilling est forcée en HTTPS.
Pour cela nous allons forcer le navigateur l’utilisation du protocole HTTPS en activant l’entête HTTP Strict Transport Security ou HSTS.
Django définit cet en-tête pour vous sur toutes les réponses HTTPS si vous définissez le réglage SECURE_HSTS_SECONDS à une valeur entière différente de zéro.
Voici les paramètres correctement configurés :
  • SECURE_HSTS_SECONDS = 15768000 # 6 mois
  • SECURE_HSTS_INCLUDE_SUBDOMAINS = True
  • SECURE_HSTS_PRELOAD = True
Définissez aussi le paramètre SECURE_SSL_REDIRECT sur True, ainsi toutes les demandes non SSL seront redirigées de manière permanente vers SSL.
Ensuite, nous allons intégrer des entêtes HTTP afin d’activer des paramètres de sécurité embarqués dans les navigateurs modernes (et oui, il faudrait bloquer les vieux navigateurs troués comme de vieux torchons).
Anti-click jacking :
Le principe est d’interdire l’affichage d’une page de notre interface d’administration dans une frame. Django possède nativement les protections, mais qu’il faut activer correctement via les variables suivantes :
Tout d’abord il faut activer le middleware « django.middleware.clickjacking.XFrameOptionsMiddleware » afin d’ajouter l’entête X-FRAME-OPTIONS à toutes les réponses.
Par défaut, la valeur de l’entête X-Frame-Options est à SAMEORIGIN, mais il est possible de forcer à DENY ce qui est fait pour l’administration de PyFreeBilling. Ainsi, on interdit au navigateur d’intégrer nos pages dans une iFrame.
Entête CSP :
Les entêtes Content Security Policy ou CSP permet de contrôler la manière dont les ressources sont inclues dans la page.
Afin de gérer ces entêtes, le package django-csp est utilisé (https://github.com/mozilla/django-csp). Il permet de paramétrer très finement nos ressources.
Tout d’abord nos devons activer le middleware « csp.middleware.CSPMiddleware » et ensuite définir les valeurs souhaitées pour les paramètres.
Le choix fait pour PyFreeBilling est de n’utiliser aucune ressources externes pour des raisons de sécurité, mais aussi afin de pouvoir fonctionner sans accès internet (c’est le cas de certains clients). Le paramétrage des entêtes CSP est ainsi simplifié. Pour comprendre en détail les différentes valeurs, je vous engage à lire les spécifications CSP puis la documentation de django-csp.
Protection XSS :
Définissez le paramètre SECURE_BROWSER_XSS_FILTER sur True afin d’activer les protections de filtrage XSS du navigateur.
Entête X-Content-Type-Options :
Enfin, il est avisé d’empêcher le navigateur de déterminer le type de fichier en ajoutant un entête X-Content-Type-Options. Pour cela Django dispose d’une variable (à False par défaut) qu’il faut passer à True : SECURE_CONTENT_TYPE_NOSNIFF (https://docs.djangoproject.com/en/2.1/ref/settings/#secure-content-type-nosniff)

XML entités externes

Je ne vais pas traiter de cette partie, n’utilisant pas ce type de fonctions dans PyFreeBilling. Si vous souhaitez l’utiliser, vous devez soit écrire le code ou utiliser une librairie. Je vous invite à lire la documentation associée et utiliser les éléments de filtrage proposés nativement par Django.
Vous pouvez apporter des éléments en commentaire du présent article pour les futurs lecteurs (je compléterais à l’occasion cette partie)

Broken accès control

Django propose de base une gestion des utilisateurs et des groupes d’utilisateurs. Des décorateurs permettent de définir l’accès à une ressource donnée avec des droits différents : lecture, modification, création … .
Il est aussi possible de définir plus finement l’accès. Un package très utilisé est django-braces.
D’autres plugins permettent de gérer plus finement par objet ou par certains attributs. Dans tous les cas, c’est de la responsabilité du développeur d’utiliser correctement ces outils et de tester les accès suivant les différents typologies d’utilisateurs.

Mauvaises configuration de sécurité

C’est l’objet de l’article de pointer sur les points d’attention lors du paramétrage d’un projet Django. Il existe des outils afin de valider que rien n’a été oublié.
Je vous en propose 2 :
FreesScan de Qualys qui va permettre de tester en profondeur votre site avec un rapport  précis. Il va tester les certificats et la configuration du serveur web. Voici la note obtenue par un déploiement de PyFreeBilling de base sous docker :
Tous les éléments ne sont pas testés, mais ça permet de valider rapidement notre déploiement.
Et l’Observatory, outil de Mozilla permettant de vérifier de nombreux points de sécurité : il valide la sécurité des en-têtes OWASP, les meilleures pratiques TLS et effectue des tests tiers à partir de SSL Labs, High-Tech Bridge, des en-têtes de sécurité, du préchargement HSTS, etc. Il est particulièrement complet et aussi très instructif.

Cross-Site Scripting (XSS)

C’est une des failles visant le navigateur des utilisateurs. Nous allons voir comment des paramètres Django vont pouvoir nous prémunir contre elles, sachant que les outils automatisées savent les détecter et les exploiter !
Nous avons déjà vu dans la section « exposition de données sensibles » en ajoutant des entêtes HTTP en ajoutant des paramètres nous protégeant de failles XSS. Nous allons voir comment nous protéger du vol de sessions.
Il s’agit de bloquer l’accès à un code javascript exécuté dans le navigateur par un assaillant au cookie de session . Pour cela, nous allons forcer l’envoi de l’entête httpOnly transmise avec le cookie.
Les sessions sont gérées par le middleware : ‘django.contrib.sessions.middleware.SessionMiddleware’, et l’activation de l’entête est faite par la variable SESSION_COOKIE_HTTPONLY (https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-SESSION_COOKIE_HTTPONLY).
Explication de la team django : ‘It’s recommended to leave the SESSION_COOKIE_HTTPONLY setting on True to prevent access to the stored data from JavaScript.’
Afin de renforcer la sécurité des cookies, nous allons modifier 2 paramètres :
Enfin, nous allons forcer l’échange de cookies uniquement via une connexion HTTPS : la configuration par défaut est à False. Pour forcer l’échange via HTTPS, il faut mettre SESSION_COOKIE_SECURE à True.
La doc de référence de Django pour les sessions : https://docs.djangoproject.com/en/2.1/topics/http/sessions/

Insecure Deserialization

Je vais faire la même remarque que pour le traitement de document XML.

Utiliser des composants incluant des vulnérabilités connues

Django étant un framework python, vous avez plusieurs outils vous permettant d’être notifié quand une dépendance est mise à jour. Mais surtout, certains outils peuvent envoyer une notification quand une dépendance utilisée contient une faille de sécurité. J’utilise PyUp pour cela. Ils annoncent surveiller 173 000 dépendances python !

Si votre projet utilise aussi du code qui n’est pas écrit en python, ce qui est souvent le cas comme du javascript, d’autres outils existent. Pour ce javascript, npmjs ou Retire.js pourront vous être très utiles. Retire.js propose même des extensions pour Chrome et Firefox !

OWASP dispose aussi d’un outil pouvant être intégré dans votre Jenkins préféré appelé OWASP Dependency Check. Il supporte actuellement les langages Java, .NET, Ruby, Node.js, Python et partiellement C++.

Insufficient Logging&Monitoring

Il est en effet essentiel de logger les erreurs mais surtout de les traiter. Django propose des outils de génération de logs poussés. Une section dédiée à la génération de logs liés à la sécurité : https://docs.djangoproject.com/en/2.1/topics/logging/#django-security.

Pour un gros projet, un outil comme Sentry qui s’intègre parfaitement avec Django est un très intéressant.

Et pour surveiller votre application Django, les packages de monitoring sont listés dans https://djangopackages.org/grids/g/monitoring/

Conclusion

Nous avons vu au cours de cette article que la sécurisation d’une application web est une tâche complexe nécessitant de bien connaître les risques. Un framework puissant comme Django, à condition de bien le maîtriser, nous facilite la tâche.

Et pour finir, je vais vous partager un dernier truc afin d’améliorer la sécurité de notre projet Django : restreindre l’accès à toutes ou certaines URL à une ou plusieurs adresses IP.

Pour cela, le package django-iprestrict est l’outil adéquate. Afin de bloquer/autoriser l’accès à partir de région ou pays, geoip2 sera utilisé. Tout d’abord, il faut activer le middleware « iprestrict.middleware.IPRestrictMiddleware ». Le paramétrage se fait ensuite dans l’interface d’administration.

Et surtout pour sortir sécuriser Django correctement, sinon tous vos efforts auront été vains, assurez-vous d’utiliser un SECRET_KEY long, aléatoire et unique !

Si vous avez des remarques ou des packages intéressants à partager afin d’améliorer la sécurité d’un projet Django, les commentaires sont à votre disposition.

 

Cet article Comment sécuriser Django, framework python est apparu en premier sur Blog des télécoms - Par Mathias, expert et formateur rédigé par Mathias.

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

  • 27 février 2019 à 17:59

genma : Ubuntu Livepatch

Par genma

J'ai eu le message suivant qui est apparu sur mon Ubuntu 18.04

Je me suis donc posé la question de ce à quoi il correspondait et j'ai rapidement trouvé la réponse en ligne.

Livepatch allows you to install some critical kernel security updates without rebooting your system, by directly patching the running kernel. It does not affect regular (not security-critical) kernel updates, you still have to install those the regular way and reboot. It does not affect updates to other non-kernel packages either, which don't require a reboot anyway. On a regular home or office computer, which does get rebooted daily (or every few days to weeks at least, your mileage may vary), Livepatch probably doesn't give you many benefits. It's mainly intended for servers which are supposed to have months and years of continuous uptime without reboots. Ask Ubuntu.com - Do I need to use canonical Livepatch ?

Ce que l'on peut traduire par :

Livepatch vous permet d'installer certaines mises à jour de sécurité du noyau critiques sans redémarrer le système, en appliquant directement un correctif au noyau en cours d'exécution. Cela n'affecte pas les mises à jour régulières du noyau (non critiques pour la sécurité), que vous devrez toujours installer de la manière habituelle et nécessitant un redémarrage. Cela n'affecte pas non plus les mises à jour des autres packages (non-noyau), qui ne nécessitent de toute façon pas de redémarrage. Livepatch ne vous apportera probablement pas beaucoup d'avantages sur un ordinateur ordinaire à la maison ou au bureau qui est redémarré tous les jours. Il est principalement destiné aux serveurs censés avoir des mois et des années de disponibilité continue sans redémarrage.

Livepatch est donc essentiellement utile sur les serveurs tournant sous Ubuntu pour lesquels un redémarrage complet du système est critique et ne peut pas de faire du tout ou seulement à des moments bien définis. Pour en savoir plus, il y a la page officielle https://www.ubuntu.com/livepatch

Pour ce qui concerne la nécessité de redémarrer les autres services et applications pour la prise en compte des mises à jour et patchs de sécurité, je rappelle l'existence de checkrestart que j'évoquais dans mon billet Astuces Debian ou encore needrestart qui est une surcouche à Checkrestart.

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

  • 27 février 2019 à 09:00

Jehan : Colorisation intelligente dans GIMP

Par Jehan

En tant que membre de l’équipe Image du laboratoire GREYC (CRNS, ENSICAEN, Université de Caen), j’ai implémenté un algorithme de “remplissage de dessin au trait” dans GIMP, aussi appelé “colorisation intelligente“. Vous avez peut-être entendu parler du même algorithme dans G’Mic (développé par la même équipe), donc quand on m’a proposé l’emploi, cet algorithme m’a rapidement intéressé. Ce devint ma première mission!

Le problème

Conceptuellement le remplissage de dessin au trait est simple: vous dessinez une forme au stylo noir, disons un cercle approximé, et vous souhaitez le remplir d’une couleur de votre choix. Vous pouviez déjà le faire, plus ou moins, avec l’outil de remplissage, en remplissant les couleurs similaires… à 2 problèmes près:

  1. Si le trait n’est pas bien fermé (il y a des “trous”), la couleur fuite. Les trous peuvent être le fait d’erreur de dessin, cependant on ne les trouve pas forcément aisément (cela peut être un trou d’un pixel au pire des cas), et perdre du temps à les trouver n’est pas très marrant. En outre, cela peut être un choix conscient voire artistique.
  2. Le remplissage laisse en général des pixels non coloriés proche des bordures du traits, à cause de l’interpolation, l’anti-aliasing ou pour d’autres raisons (à moins de ne dessiner qu’avec des pixels pleins, style “pixel art”), ce qui n’est pas un résultat acceptable.
2 principaux problèmes du remplissage des couleurs similaires

En conséquence, probablement aucun coloriste numérique n’utilise l’outil de remplissage directement. Diverses autres méthodes nécessitent par exemple l’outil de sélection contiguë (ou d’autres outils de sélection), l’agrandissement ou réduction de la sélection, puis seulement à la fin le remplissage. Parfois peindre directement avec une brosse est la méthode la plus adaptée. Assister à un atelier d’Aryeom sur le sujet de la colorisation est d’ailleurs absolument fascinant. Elle peut enseigner une dizaine de méthodes différentes utilisées par les coloristes. Elle-même n’utilise pas toujours la même procédure (cela dépend de la situation). Pour le project ZeMarmot, j’ai aussi écrit des scripts Python d’aide à la colorisation, qu’Aryeom utilise maintenant depuis des années, et qui fait un boulot très raisonnable d’accélération de cette tâche ingrate (mais la tâche reste ingrate malgré tout).

L’algorithme

Le papier de recherche s’intitule “Un algorithme semi-guidé performant de colorisation en aplats pour le dessin au trait” (on notera qu’il existe une version anglaise, mais le papier français est plus détaillé: “A Fast and Efficient Semi-guided Algorithm for Flat Coloring Line-arts“). J’ai travaillé sur la base d’un code C++ de Sébastien Fourey, avec les avis de ce dernier ainsi que de David Tschumperlé, tous deux co-auteurs du papier.

Pour nos besoins, je me suis intéressé à ces deux étapes de l’algorithme:

  1. La fermeture des traits, par la caractérisation de “points d’intérêt”, lesquels sont les bords de traits avec courbures extrêmes (on peut alors estimer que ce sont probablement des extrémités de lignes), puis en joignant ces points d’intérêts en définissant des facteurs de qualités à base des angles de normales, ou de distance maximum. Les lignes peuvent être fermées avec soit des splines (c’est à dire des courbes) soit des segments droits.
  2. La colorisation proprement dite, en “mangeant” un peu sous les pixels de traits, ainsi de s’assurer de l’absence de pixels non-coloriés près des bords.

Comme on peut le voir, l’algorithme prend donc en compte les 2 problématiques (que j’ai numérotées dans le même ordre, comme par hasard 😉)! Néanmoins je n’ai implémenté que la première étape de l’algorithme et ai adapté la seconde avec une solution propre (quoique basée sur des concepts similaires) à cause de problématiques d’utilisabilité.

Et voici donc le remplissage par détection de traits dans GIMP:

Remplissage par détection de trait

Je ne vais pas réexpliquer l’algorithme en détail. Si c’est ce qui vous intéresse, je suggère plutôt de lire le papier de recherche (10 pages), lequel est très clair, et a même des images très explicites. Si vous préférez lire du code, comme moi, plutôt que des équations, vous pouvez aussi regarder directement l’implémentation dans GIMP, principalement contenue dans le fichier gimplineart.c, en commençant en particulier avec la fonction gimp_line_art_close().

Ci-dessous, je vais plutôt me focaliser sur les améliorations que j’ai faites à l’algorithme, et que vous ne trouverez pas dans les papiers de recherche. Je rappelle aussi que nous avons travaillé avec l’animatrice/peintre Aryeom Han (réalisatrice de ZeMarmot) comme artiste-conseil, pour rendre l’implémentation utile pour de vrai, non juste théoriquement.

Note: cet article se concentre sur l’aspect technique de la fonctionnalité. Si vous souhaitez seulement savoir comment l’utiliser, je conseille d’attendre quelques jours ou semaines. Nous ferons une courte (néanmoins aussi exhaustive que possible) vidéo pour montrer comment l’utiliser ainsi que le sens de chaque option.

Étape 1: fermeture des traits

Pour donner un aperçu rapide de la logique algorithmique, voici un exemple simple à partir d’une ébauche de dessin par Aryeom (bon exemple puisqu’une telle esquisse est pleines de “trous”!). À gauche, vous pouvez voir l’esquisse, au milieu comment elle est traitée par l’algorithme (cette version de l’image n’est jamais visible par le peintre), et à droite mon essai de colorisation en aplats (avec l’outil de remplissage seulement, pas de brosse, rien!) en moins d’une minute (chronométrée)!

De lignes à colorisation, avec représentation interne au centre

Note: bien sûr, il ne faut pas voir cela comme un exemple de “travail final”. Le travail de colorisation est en général en plusieurs étapes, la première consistant en l’application d’aplats de couleur. Cet outil ne participe qu’à cette première étape et l’image peut nécessiter du travail supplémentaire (d’autant plus avec cet exemple qui se base sur une esquisse).

Estimer une épaisseur de trait globale locale (algo amélioré)

Un aspect de l’algorithme est rapidement apparu comme suboptimal. Comme dit plus haut, nous détectons les points clés grâce à la courbure des lignes. Cela pose problème avec les très grosses brosses (soit parce que vous peignez dans un style “lignes épaisses” ou bien juste parce que vous peignez en très haute résolution, donc avec des lignes “fines de dizaines de pixels”, etc.). L’extrémité de telles lignes peut alors présenter une courbure basse et donc ne pas être détectées. Dans le papier originel, la solution proposée au problème est:

Afin de rendre la méthode de fermeture indépendante de la résolution de l’image, une étape préliminaire permet de réduire si besoin l’épaisseur des tracés à quelques pixels, en utilisant une érosion morphologique. Le rayon utilisé pour cette érosion est déterminé automatiquement par estimation de la largeur des traits présents dans le dessin.

Section ‘2.1. Pré-traitement de l’image anti-aliasée’

Malheureusement calculer une estimation de largeur de traits unique pour un dessin entier présente des limites, puisque cela part du principe que le trait a une épaisseur constante. Demandez donc à un calligraphe ce qu’il en pense pour rigoler! 😉

En outre bien que cela fonctionnait globalement, des effets secondaires pouvaient apparaître. Par exemple des trous inexistants au préalable pouvaient apparaître (en érodant une ligne plus fine que la moyenne). Le papier était conscient de ce problème mais l’écartait en supposant que ce trou serait de toutes façons refermé dans l’étape de fermeture qui suivait nécessairement:

Il est à noter que d’éventuelles déconnexions provoquées par l’érosion appliquée, qui restent rares, seront de toute façon compensées par l’étape suivante de fermeture des traits.

Section ‘2.1. Pré-traitement de l’image anti-aliasée’

Pourtant dès les tests initiaux qu’Aryeom a effectuées avec la première version implémentée de l’outil, elle a rencontré des cas similaires. Une fois même, nous avions une zone parfaitement fermée à la base qui laissait fuiter la couleur, une fois l’algorithme appliqué ⇒ nous obtenions donc l’effet inverse du but de l’algoritme! Paradoxal! Pire, alors que trouver des micros trous dans des traits pour les combler est compliqué, trouver des micros trous invisibles (car existants seulement dans une représentation interne du dessin) tient de la gageure.

Pour couronner le tout, cette érosion ne semblait même pas vraiment bien accomplir son but, puisqu’on arrivait aisément à créer des dessins avec de grosses brosses où aucun point clé n’était détecté malgré l’étape d’érosion. Au final donc, cette étape d’estimation d’épaisseur de trait globale+érosion apportait plus de problèmes qu’elle n’en réglait.

Conclusion: pas glop!

Après de longues discussions avec David Tschumperlé et Sébastien Fourey, nous en sommes arrivés à une évolution de l’algorithme, en calculant des épaisseurs de ligne locales pour chaque pixel de trait (plutôt qu’une unique épaisseur de trait pour le dessin entier), simplement basé sur une fonction distance du dessin. Nous pouvons alors décider si une courbure est symptomatique d’un point clé relativement à l’épaisseur locale (plutôt qu’un test absolu sur un dessin érodé par une épaisseur moyenne).

Non seulement cela fonctionnait mieux, cela ne créait pas de nouveaux trous invisibles dans des zones fermées, détectait des points clés sur de très gros traits en supposant la variabilité des traits (que ce soit un choix stylistique ou parce que la perfection n’est pas de ce monde!), mais en plus c’était même plus rapide!

En exemple, la version originelle de l’algorithme n’aurait pas réussi à détecter les points d’intérêt pour fermer cette zone avec de si gros traits. Le nouvel algorithme n’a aucun problème:

» Pour ceux intéressés, voir le code du changement «

Parallélisation pour traitement rapide

La fermeture de traits est clairement l’étape la plus longue du traitement. Bien que cela reste raisonnable sur des images FullHD voire même 4K, sur mon ordinateur, cela pouvait tout de même prendre une demi-seconde de traitement. Pour un outil intéractif, une demi seconde, c’est un siècle! Sans compter si on se met à traiter des images énormes (pas impossible de nos jours), cela peut alors prendre plusieurs secondes.

J’effectue donc ce calcul en parallèle afin qu’il soit exécuté au plus tôt (dès que l’outil de remplissage est sélectionné). Puisque les gens ne sont pas des robots, cela rend l’intéraction bien plus rapide en apparence, voire dans de nombreux cas, on peut ne même pas se rendre compte qu’il y a eu temps de traitement.

Available line art “Source” in the tool options

Partiellement pour la même raison, vous pourrez remarquer une option “Source” qui propose plus qu’à l’habitude dans d’autres outils (“Échantilloner sur tous les calques” ou sur le calque actif uniquement). Pour cet outil, vous pouvez aussi choisir le calque au dessus ou dessous du calque actif. C’est le résultat à la fois d’une décision logique (la couleur appliquée n’est pas du trait par définition) et pour des raisons de performance (il n’est pas nécessaire de recalculer la fermeture à chaque ajout de couleur).

Étape 2: remplissage

Rendre l’algorithme interactif et résistant aux erreurs

Le papier propose de remplir toutes les zones d’un coup à l’aide d’un algorithme de watershed.

J’ai fait le choix de ne pas honorer cette étape de l’algorithme, principalement pour raison d’utilisabilité. Lorsque j’ai vu les images de démonstration de cet algorithme sur G’Mic pour la première fois, le résultat semblait très prometteur; puis j’ai vu l’interface graphique, et cela semblait peu utilisable. Mais comme je ne suis pas le peintre de l’équipe, je l’ai montré à Aryeom. Ses premiers mots après la démo furent en substance: “je n’utiliserai pas“. Notez bien qu’on ne parle pas du résultat final (qui n’est pas mal du tout), mais bien de l’intéraction humain-machine. La colorisation est fastidieuse, mais si la colorisation intelligente l’est encore plus, pourquoi utiliser?

Qu’est-ce qui est donc fastidieux? G’Mic propose plusieurs variantes pour colorier une image: vous pouvez par exemple laisser l’algorithme colorier aléatoirement les zones, ce qui permet ensuite de sélectionner chaque aplat indépendamment pour recolorisation; vous pouvez aussi guider l’algorithme avec des touches de couleurs, en espérant qu’il fonctionnera suffisamment bien pour inonder les bonnes zones avec les bonnes couleurs. Je propose aussi de regarder cet article sympa de David Revoy, qui avait contribué à la version de base de l’algorithme.

filtre « Colorize lineart [smart coloring] »
La colorisation intelligente dans G’Mic est un peu complexe…

Ce sont des méthodes intéressantes et très sûrement utilisables, voire efficaces, dans certains cas, mais ce n’est pas une méthode générique que vous voudrez utiliser dans tous les cas.

Déjà cela implique beaucoup d’étapes pour colorier un seul dessin. Pour l’animation (par exemple le projet ZeMarmot), c’est encore pire, car nous devons coloriser des dizaines ou centaines de calques.
En outre, cela implique que l’algorithme ne peut se tromper. Or nous savons bien qu’une telle hypothèse est absurde! Des résultats non voulus peuvent se produire, ce qui n’est pas obligatoirement un problème! Ce qu’on demande à un tel algorithme est de fonctionner la plupart du temps, du moment que l’on peut toujours revenir à des méthodes plus traditionnelles pour les rares cas où cela ne fonctionne pas. Si vous devez défaire la colorisation globale (car faite en étape unique), puis essayer de comprendre l’algorithme pour refaire vos touches de couleurs en espérant que la prochaine fois, cela marche mieux afin d’essayer encore, un peu à l’aveuglette, alors l’utilisation d’un algorithme “intelligent” ne peut être que perte de temps.

À la place, nous avions besoin d’un procédé de colorisation intéractif et progressif, de sorte que les erreurs de l’algorithme puissent être simplement contournées en revenant temporairement à des techniques traditionnelles (juste pour quelques zones). C’est pourquoi j’ai basé l’intéraction sur l’outil de remplissage qui existait déjà, de sorte que la colorisation (par détection de traits) fonctionne comme cela a toujours fonctionné: on clique et on voit la zone cliquée être remplie devant ses yeux… une zone à la fois!

C’est simple et surtout résistant aux erreur. En effet si l’algorithme ne détecte pas proprement la zone que vous espériez, vous pouvez simplement annuler pour corriger seulement cette zone.
En outre je voulais éviter de créer un nouvel outil si possible (il y en a déjà tellement!). Après tout, il s’agit du même cas d’usage dont s’est toujours occupé l’outil de remplissage, n’est-ce pas? Il s’agit simplement d’un algorithme différent pour décider comment se fait le remplissage. Il est donc tout à fait logique que ce ne soit qu’une option dans le même outil.

En conclusion, je remplace le watershedding sur l’image totale en utilisant encore une carte de distance. Nous avions déjà vu que cela sert comme estimation décente d’épaisseur (ou de demi-épaisseur pour être précis) locale des lignes. Donc quand on remplit avec une couleur, on utilise cette information pour inonder sous les pixels de lignes (jusqu’au centre de la ligne approximativement). Cela permet ainsi de s’assurer qu’aucun espace non colorié ne soit visible entre le remplissage et les traits. Simple, rapide et efficace.
C’est une sorte de watershedding local, en plus simple et rapide, et cela m’a aussi permis d’ajouter un paramètre “Max flooding” pour garder l’inondation de couleur sous contrôle.

Colorisation intelligente sans la partie “intelligente”!

Un usage possible, et bien cool, de ce nouvel algorithme est de se passer de la première étape, c’est-à-dire ne pas calculer la fermeture des traits! Cela peut être très utile si vous utilisez un style de trait sans rupture (design simple avec lignes solides par exemple) et n’avez donc pas besoin d’aide algorithmique de fermeture. Ainsi vous pouvez remplir des zones d’un seul clic, sans vous préoccuper des la sursegmentation ou de la durée du traitement.

Pour cela, mettez le paramère “Maximum gap length” à 0. Voici un exemple de design très simple (à gauche) rempli avec l’algorithme historique par couleurs similaires (au centre) et par détection de traits (à droite), en un clic:

Gauche: AstroGNU par Aryeom – Centre: remplissage par couleurs similaires – Droite: remplissage par détection de traits

Vous voyez le “halo blanc” entre la couleur rouge et les lignes noires sur l’image du milieu? La différence de qualité avec le résultat à droite est assez frappant et explique pourquoi l’algorithme de remplissage historique par “couleurs similaires” n’est pas utilisable (directement) pour du travail qualitatif de colorisation, alors que le nouvel algorithme par détection de traits l’est.

Outil de remplissage amélioré pour tous!

En bonus, j’ai dû améliorer l’intéraction de l’outil de remplissage de manière générique, pour tout algorithme. Cela reste similaire, mais avec ces détails qui font toute la différence:

Clic et glisse

J’ai mentionné plus haut un problème de “sursegmentation”. En effet on peut appeler un algorithme “intelligent” pour le rendre attrayant, cela ne le rend pas pour autant “humainement intelligent”. En particulier, nous créons des lignes de fermetures artificielles basées sur des règles géométriques, pas de reconnaissance réelle de forme ni en fonction du sens du dessin, et encore moins en lisant dans les pensées de l’artiste! Donc souvent, cela segmentera trop, en d’autres termes, l’algorithme créera plus de zones artificielles qu’idéalement souhaitées (si en plus, vous peignez avec une brosse un peu crénelée, cela peut être très mauvais). Regardons à nouveau l’image précédente:

L’image est “sur-segmentée”

Le problème est clair. on voudra sûrement coloriser le chien avec un aplat de couleur unique, par exemple. Pourtant il a été divisé en une vingtaine de zones! Avec l’ancienne intéraction de l’outil de Remplissage, vous devriez alors cliquer 20 fois (au lieu du clic idéal à 1), ce qui est contre-productif. J’ai donc mis-à-jour l’outil pour autoriser le clic glissé, tel un outil de peinture avec brosse: cliquez, ne relâchez pas et glissez sur les zones à colorier. Cela est désormais possible avec le remplissage par détection de traits ainsi que sur couleurs similaires (pour le remplissage sur sélection, c’est par contre non pertinent, bien sûr). Cela rend le remplissage de dessin sursegmenté bien moins problématique puisque cela peut être fait d’un seul tracé. Ce n’est pas aussi rapide que le clic unique idéal, néanmoins cela reste tolérable.

Prélèvement de couleurs

Une autre amélioration notable est le prélèvement aisé de couleurs avec ctrl-clic (sans avoir besoin de sélectionner la pipette à couleurs). Tous les outils de peinture avaient déjà cette fonctionnalité, mais pas encore l’outil de remplissage. Pourtant on travaille là aussi clairement avec la couleur. Par conséquent pouvoir très aisément changer de couleur par prélèvement sur les pixels alentour (ce qui est un usage très commun des peintres numériques) rend l’outil extrêmement productif.

Avec ces quelques changements, l’outil de remplissage est désormais un citoyen de première classe (même si vous n’avez pas besoin de la colorisation intelligente).

Limitations et travail futur possible

Un algorithme pour peintres numériques

La Colorisation intelligente est faite pour travailler sur des dessins au trait. Cela n’est pas fait pour fonctionner sur des images hors dessin, en particulier des photographies. Bien sûr, on découvre toujours des usages non prévus que des artistes aventureux inventent. Peut-être cela se produira ici aussi. Mais pour le moment, pour autant que je puisse voir, c’est vraiment réservé aux peintres numériques.

Traiter des cas autres que lignes noires sur fond blanc?

Les lignes sont détectés de la manière la plus basique possible, avec un seuil soit sur le canal Alpha (si vous travaillez sur des calques transparent) ou sur le niveau de gris (particulièrement utile si vous travaillez avec des scans de dessins).

Ainsi la version actuelle de l’algorithme peut avoir quelques difficultés pour détecter des traits, si par exemple vous scannez un dessin sur papier non blanc. Ou tout simplement, vous pourriez avoir envie de dessiner en blanc sur fond noir (chacun est libre!). Je ne suis cependant pas certain si ces cas d’usage sont suffisamment courants pour valoir d’ajouter toujours plus de paramètres à l’outil. On verra.

Plus d’optimisation

Je trouve que l’algorithme reste relativement rapide sur des images de taille raisonnable, mais je le trouve encore un peu lent sur de grosses images (ce qui n’est pas un cas rare non plus, notamment dans l’industrie de l’impression), malgré le code multi-thread. Je ne serais donc absolument pas surpris si dans certains cas, vous ne préfériez pas simplement revenir à vos anciennes techniques de colorisation.

J’espère pouvoir revenir tranquillement sur mon code bientôt pour l’optimiser davantage.

Des bordures de couleur peu esthétiques

Le bord du remplissage n’est clairement pas aussi “joli” qu’il pourrait l’être par exemple en coloriant avec une brosse (où le bord montrerait un peu de “texture”. Par exemple, jetons à nouveau un œil à notre exemple d’origine.

L’endroit où le bord du remplissage est visible aura probablement besoin d’une retouche. J’ai ajouté un paramère d'”antialiasing” mais clairement ce n’est pas une vraie solution dans la plupart des cas. Ça ne remplace pas une édition manuelle avec une brosse.

Le pire cas est lorsque vous planifiez de retirer les traits après colorisation. Aryeom fait parfois ce type de dessins où les lignes ne servent qu’en support de travail avant d’être retirées pour le rendu final (en fait une scène entière dans ZeMarmot, un peu “rêveuse”, est faite ainsi). Dans ce cas, vous avez besoin d’un contrôle parfait de la qualité des bords des zones de couleurs. Voici un exemple où le dessin final est fait uniquement de couleurs, sans traits externes:

Image de production du film ZeMarmot, par Aryeom

Pas encore d’interface (API) pour les plug-ins

Je n’ai pas encore ajouté de fonctions pour que les scripts et plug-ins puissent faire du remplissage par détection de trait. Cela est fait exprès car je préfère attendre un peu après la première sortie, notamment pour m’assurer que nous n’avons pas besoin de plus ou meilleurs paramètres, puisque une API se doit de rester stable et de ne plus changer une fois créée, au contraire d’une interface graphique qui peut se permettre plus facilement des changements.

En fait vous vous êtes peut-être rendus compte que toutes les options disponibles dans G’Mic ne sont pas disponibles dans les options d’outils de GIMP (même si elles sont toutes implémentées). C’est parce que j’essaie de rendre l’outil moins confus, étant donné que nombres de ces options nécessitent de comprendre la logique intime de l’algorithme. Plutôt que de passer son temps à trifouiller des curseurs au hasard, j’essaie de trouver une interface qui nécessite peu d’options.

Outil de sélection contiguë

La détection de traits n’est pour l’instant implémentée que pour l’outil de remplissage, mais cela serait aussi tout à fait adapté comme méthode de sélection alternative pour l’outil de sélection contiguë. À suivre…

Segmenter moins

Avec des lignes propres et nets, et des formes simples, l’algorithme marche vraiment bien. Dès que vous complexifiez votre dessin, et surtout utilisez des traits avec un peu de caractère (par exemple la série de brosses “Acrylic”, fournie dans GIMP par défaut), un peu trop de points clés faux-positifs sont détectés, et par conséquent le dessin sur-segmente. Nous sommes tombés sur de tels cas, donc j’ai essayé diverses choses, mais pour l’instant je ne trouve aucune solution miracle. Par exemple récemment j’ai essayé d’appliquer un flou médian sur le trait avant la détection de points clés. L’idée est de lisser les imperfections du trait crénelé. Sur mon exemple de base, cela a bien marché:

Centre: sur-segmentation avec l’algorithme actuel
Droite: toujours trop segmenté, mais bien moins, après avoir appliqué d’abord un flou médian

Malheureusement cela a rendu le résultat sur d’autres images très mauvais, notamment en créant des trous (un problème dont nous nous étions débarrassé en ne faisant plus d’étape d’érosion!).

Centre: résultat très acceptable avec l’algorithme actuel
Droite: mauvais résultat qui ferait fuiter la couleur et qui perd de nombreux détails

Donc je cherche toujours. Je ne sais pas si on trouvera une vraie solution. Ce n’est clairement pas un sujet facile. On verra!

En règle générale, la sursegmentation (faux positifs) est un problème, mais il reste moindre que ne pas réussir à fermer des trous (faux négatifs), notamment grâce à la nouvelle intéraction clic et glisse. J’ai déjà amélioré quelques problèmes à ce sujet, tels les micro-zones que le papier de recherche appelle des “régions non significatives” (or elles sont vraiment significatives pour les peintres numériques, car rien n’est plus embêtant à remplir que des petits trous de quelques pixels); et récemment j’ai aussi réglé des problèmes liés à l’approximation rapide de la surface des régions, laquelle peut être fausse dans le cas de régions ouvertes.

Conclusion

Ce projet fut vraiment intéressant car il a confronté des algorithmes de recherche à la réalité du travail de dessin au quotidien. C’était d’autant plus intéressant avec la rencontre de 3 mondes: la recherche (un algorithme vraiment cool pensé par des esprits brillants du CNRS/ENSICAEN), le développement (moi!) et l’artiste (Aryeom/ZeMarmot). Par ailleurs, pour bien donner le crédit à qui de droit, beaucoup des améliorations d’interface furent des idées et propositions d’Aryeom, laquelle a testé cet algorithme sur le terrain, c’est à dire sur de vrais projets. Cette coopération CNRS/ZeMarmot s’est même tellement bien passée qu’Aryeom a été invitée fin janvier pour présenter son travail et ses problématiques de dessin/animation lors d’un seminaire à l’université ENSICAEN.

Bien sûr, je considère encore ce projet comme un “travail en cours”. Comme noté plus haut, divers aspects doivent encore être améliorés. Ce n’est plus mon projet principal mais je reviendrai clairement régulièrement pour améliorer ce qui doit l’être. C’est néanmoins déjà dans un état tout à fait utilisable. J’espère donc que de nombreuses personnes l’utiliseront et apprécieront. Dites nous ce que vous en pensez!

Un dernier commentaire est que les idées derrière les meilleurs algorithmes ne semblent pas nécessairement les plus incroyables techniquement. Cet algorithme de colorisation intelligente est basé sur des transformations très simples. Cela ne l’empêche pas de fonctionner très bien et d’être relativement rapide (avec quelques limites bien sûr), de ne pas prendre toute votre mémoire vive en bloquant l’interface du logiciel pendant 10 minutes… Pour moi, cela est bien plus impressionnant que certains algorithmes certes brillant, et pourtant inutilisables sur les ordinateurs de bureau. C’est de ce type d’algorithme dont on a besoin pour les logiciels de graphisme pour le bureau. C’est donc très cool et je suis d’autant plus heureux de travailler avec cette équipe talentueuse de G’Mic/CNRS. 🙂

Amusez vous bien à colorier vos dessins! 🙂

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

  • 25 février 2019 à 13:08

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

Par Journal du hacker

Pour la 8ème semaine de l'année 2019, 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

  • 25 février 2019 à 00:01

La vache libre : OnionShare partagez facilement des fichiers via TOR

Par La vache libre

Vous n’avez pas besoin d’être coupable de quoi que ce soit pour avoir envie de partager des fichiers ou des dossiers de manière discrète et anonyme. Le simple fait de vouloir préserver votre vie privée est une raison largement suffisante et parfaitement légitime. Si vous êtes dans ce cas de figure, que vous souhaitez partager les photos de mémé à la plage avec vos proches et ce, en toute sécurité, peut-être qu’OnionShare va vous intéresser. Pour ceux qui ne connaissent pas, il s’agit en gros d’une application conçue dans le but de vous permettre des partager des fichiers de manière safe et anonyme en utilisant le réseau TOR. Voyons vite fait comment ça tourne.

Au niveau de l’installation, si vous tournez sur Ubuntu ce n’est pas bien compliqué dans la mesure où OnionShare est disponible depuis la logithèque. Vous pouvez aussi passer par la page Github du projet où un PPA est proposé. À vous de voir ce que vous préférez.

Une fois que vous avez installé la bête et si vous voulez faire simple, il faudra également avoir le navigateur TorBrowser installé sur votre machine. Pour plus de sécurité et pour avoir remarqué que la version de TorBrowser proposée sur la 18.04 LTS bug un peu, je vous conseille de le télécharger (en version US pour brouiller encore plus les pistes) depuis cette page.

Si tout est en place (et si j’ai tout compris) vous allez commencer par lancer TorBrowser, qui va en quelque sorte assurer le service de routage utile au serveur web provisoire que va générer OnionShare. Corrigez-moi si je me trompe hein ;)

Vous devriez alors avoir une fenêtre semblable à celle-ci :

dans laquelle vous allez pouvoir déposer les fichiers à partager.

Après avoir cliqué sur la touche « Démarrer le serveur » vous pouvez constater que la connexion a été établie et qu’un lien en .onion a été généré. C’est celui que vous allez transmettre à votre correspondant.

Ce dernier n’aura plus qu’à réceptionner le lien, pour l’entrer à son tour dans TorBrowser afin d’accéder à la page téléchargement. Quand il va le lancer une connexion entre votre machine et la sienne va s’établir, et le transfert via TOR démarre. Une fois que celui-ci s’achève le serveur disparaît du web dans la foulée.

C’est super car vous n’avez plus besoin d’uploader au préalable vos fichiers sur un service tiers. Le partage se fait d’une machine à l’autre et il n’y a pas (à ce que je sache) de limite de taille.

L’autre point intéressant c’est que le seul accès autorisé pour votre correspondant est le fichier. Il n’aura pas accès à une partie ou à l’intégralité d’un répertoire partagé où se trouverait ce dernier.

Bref ce n’est pas super récent et pas mal d’entre-vous doivent déjà connaître ce service, mais si ça n’est pas le cas vous pouvez tester. Ça ne coûte rien.

Précisions importantes!

Si l’application est sécurisée, le partage du lien vers votre correspondant doit l’être également. Sinon ça ne sert à rien. Il faudra bien entendu utiliser un service de messagerie qui tienne la route pour le transmettre.

Ne prenez pas non plus le caractère anonyme et ultra sécurisé pour argent comptant. Si vous faites quelque chose de suffisamment grave pour qu’on s’intéresse à vous, je n’ai aucun doute sur le fait que les autorités sauront vous retrouver. Et vous l’aurez sans doute mérité ;)

Amusez-vous bien!

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

  • 24 février 2019 à 00:19

blog-libre : Lobbying

Par blog-libre

La corruption c’est quand tu donnes de la tune. Le lobbying c’est quand t’en dépenses. Un commentaire sur Next INpact.

Les dépenses en lobbying des GAFAM en millions d’euros à Bruxelles

Infographie: Les millions dépensés par les GAFAM à Bruxelles | Statista

Sources :
https://fr.statista.com/infographie/10836/les-millions-depenses-par-les-gafam-a-bruxelles/
https://www.nextinpact.com/brief/google-depense-21-millions-de-dollars-en-lobbying-a-washington–et-donne-2-millions-a-wikimedia-7456.htm

Les dépenses en lobbying des GAFAM en millions de dollars aux États-Unis

Sources :
https://siecledigital.fr/2019/01/24/etats-unis-gafam-depense-lobbying-2018/
https://www.forbes.fr/business/google-a-depense-18-millions-de-dollars-en-lobbying-a-washington-en-2018/

Microsoft France renforce son partenariat avec le Ministère de l’Éducation nationale

Alain Crozier, Président de Microsoft France et Najat Vallaud Belkacem, Ministre de l’Éducation nationale, de l’Enseignement supérieur et de la Recherche, ont signé le 30/11/2015 un partenariat afin de contribuer à la réussite du Plan Numérique à l’École. 13 millions d’euros seront ainsi investis par Microsoft pour le développement du numérique éducatif : l’accompagnement des enseignants et des cadres de l’éducation, la mise à disposition de plateformes collaboratives, ainsi que l’apprentissage du code informatique.

Sources :
https://news.microsoft.com/fr-fr/2015/11/30/numerique-a-l-ecole-microsoft-france-renforce-son-partenariat-avec-le-ministere-de-l-education-nationale/
https://www.nextinpact.com/news/97521-plan-numerique-l-education-nationale-s-associe-a-microsoft.htm

Aujourd’hui dans les bacs

Les yeux rivés sur le partenariat noué avec Microsoft en 2015, les élus du groupe LFI dénonçaient la « mainmise des entreprises privées, notamment des GAFAM », sur les outils numériques utilisés au sein de l’Éducation nationale.

« Les enfants apprennent très jeunes à se servir de ces logiciels et seulement ceux-là. En conséquence, dans leur vie d’adulte, ils ont tendance à acheter des matériels pourvus des logiciels qu’ils connaissent déjà et dont ils savent se servir. Les entreprises privées s’assurent ainsi une clientèle quasi captive », a de nouveau regretté Bastien Lachaud, vendredi, lors des débats en séance publique.

Tous les amendements sur le logiciel libre ont été rejetés par l’Assemblée nationale, sans plus de débats.

Sources :
https://www.nextinpact.com/news/107618-lassemblee-rejette-amendements-sur-logiciel-libre-a-ecole.htm
https://www.developpez.com/actu/246675/Le-ministre-de-l-Education-et-l-Assemblee-nationale-disent-non-a-la-priorite-au-logiciel-libre-pour-l-enseignement-scolaire/

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

  • 23 février 2019 à 09:00

Simon Vieille : Équivalent du MATCH AGAINST de MySQL sur PostgreSQL

Par Simon Vieille

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 

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 

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.

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

  • 22 février 2019 à 09:50

genma : Quels astuces simples et pratiques dans mon usage au quotidien de Firefox

Par genma

Deux versions de Firefox en parallèle ?

Sur mon poste de travail que j'utilise au quotidien, je suis amené à avoir différents usages avec le navigateur : usage personnel et usage professionnel. Comme je n'aime pas mélanger et que je peux être amené à avoir besoin de deux navigateurs en même temps, je cumule deux fonctions : l'usage de Firefox Nigthly et la fonctionnalité d'avoir plusieurs profils complets pour Firefox. (Sur ces deux sujets, je vous renvoie vers ces anciens articles que sont Pourquoi j'utilise Firefox nightly ? et Plusieurs Firefox et plusieurs profils en même temps).

J'utilise donc Firefox Nigthly pour les usages personnels, Firefox version stable pour les usages professionels.

Customisation graphique

Pour différencier les deux navigateurs et les fenêtres associées (parfois j'ouvre plusieurs onglets, parfois une ou plusieurs fenêtres dédiées), et donc pour m'y retrouver entre les deux navigateur et savoir lequel est lequel, j'ai installé un thème qui facilite ainsi l'identification :

Un thème Quantum pour Firefox

thème Quantum pour Firefox

Un thème Firefox Quantum Nigthly

thème Quantum pour Firefox

Ainsi au premier coup d'oeil, je suis à même de savoir quel navigateur et dans quel contexte je suis. Et plus mon navigateur est plus joli (après ça, ça reste une question d'esthétique et de goût).

Partage d'onglets

Parfois quand je trouve un article intéressant dans le cadre d'une navigation depuis le navigateur "professionnel", je peux être intéressé par le fait de récupérer cet URL pour ensuite l'ajouter dans Wallabag (lecture pour plus tard) ou dans Shaarli (conservation en favori) ou inversement. J'utilise donc la superbe fonctionnalité de copie d'onglet d'un navigateur à un autre, telle que présenter dans le billet de blog de Mozfr.org Vous vous textotez des liens à vous-même ? « Envoyer l'onglet » fait mieux !

Ca repose sur Firefox Sync, il faut créer un compte et des données (l'URL de l'onglet) passe donc pas les serveurs de Mozilla. J'ai confiance, je connais un des administrateurs. Et je ne synchronise rien (pas les mots de passes, pas les marques-pages, pas les extensions), je n'utilise que la fonctionnalité de transfert d'un onglet d'un navigateur à un autre, dans mon cas les deux navigateurs étant sur la même machine. Ou parfois depuis le Firefox de mon smartphone vers le Firefox sur mon PC personnel, pour les "à lire plus tard".

Conteneurisation

J'ai donc défini plusieurs profils mais au sein d'un même profil j'utilise également la fonctionnalité de conteneurisation de Firefox, tel que présenté ici Onglets contextuels avec les Containers

Ainsi pour des services en lignes pour lesquels j'ai plusieurs comptes, je peux ouvrir un compte par onglet conteneurisé. Pratique, utile et indispensable.

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

  • 19 février 2019 à 09:00

La vache libre : TLP/TLPUI quelques réglages intéressants

Par La vache libre
TLPUI

Sur mon précédent Laptop je n’étais très attentif à la gestion de l’alimentation et de la batterie, dans la mesure où celle-ci était amovible. La plupart de temps mon laptop fonctionnait sur secteur et la batterie a passé le plus clair de son temps dans le sac. Je suis de ceux qui achètent un PC portable pour le gain de place, mais qui en font un usage sédentaire. Avec ma nouvelle machine je suis toujours aussi sédentaire, mais à mon grand regret la batterie n’étant pas amovible je dois faire avec. Je me suis donc intéressé à la façon dont je pouvais gérer et optimiser tout ça. Comme c’est un peu le gratin dans le domaine, j’ai regardé de plus près les options avancées de TLP et j’ai testé au passage son GUI dont j’ignorais encore l’existence il n’y a pas si longtemps. Il y a quelques options vraiment pas mal quand on fouine un peu.

Outre la durée de vie de la batterie, ce qui m’a poussé à m’intéresser aux options de TLP (qui de base sont ajustées de manière assez efficace pour qu’on ait pas à y toucher) c’est la gestion de la température. On a beau vous dire que l’autonomie de votre nouvelle machine va être tout simplement énorme, vous n’allez pas passer quatre heures et ce même en usage normal, sans devoir jouer du cordon. Pour moi qui suit planté devant pendant des heures ça passe vite et si on veut faire bien, à savoir maintenir un niveau de charge optimal se situant en 40 et 80%, ça devient sportif. J’ai déjà le museau collé au compteur dès que je prend la bagnole, alors si je dois plus le coller sur la jauge de mon PC je vais frôler la crise de nerf.

J’ai donc transigé en partant du principe que de nos jours une batterie c’est « intelligent » et que par conséquent si je reste sur secteur, une fois à 100% la charge sera suspendue et ne reprendra qu’une fois que le niveau baisse. Je me suis dit aussi que ça limitera les cycles, même si maintenir un niveau de charge élevé n’est pas forcement recommandé pour la durée de vie de la batterie. Bref, il n’y a pas de bon compromis en fait. Ou le nez sur la jauge, ou du 100% la plupart du temps. J’ai donc effectué un cycle de charge complet et là j’ai constaté par hasard une augmentation de la chaleur d’environ 30 degrés. En charge (processeur/GPU) normale sensors m’indique environ 30°, alors que sur secteur je passe en moyenne à 60°.

Dans un premier temps je me suis dit que c’était normal, car une batterie qui charge ça chauffe. On le sait. Sauf qu’une fois à 100% ça ne baisse plus. J’ai lancé un watch -n 30 sur sensors et j’ai surveillé un bon bout de temps, mais rien à faire. J’ai essayé d’être pragmatique et j’ai considéré dès lors que pour un PC Gamer 60° ce n’était sans doute pas excessif. J’ai lancé quelques vidéos HD toujours en surveillant et ça semblait plafonner à ces températures. C’est alors que je me suis rappelé que TLP était installé sur ma machine et que les températures en mode BAT (batterie) devaient être plus basses du fait qu’il privilégie l’autonomie en bridant les perfs. J’ai alors décidé de jeter un œil aux réglages en me servant du GUI et j’ai trouvé quelques options intéressantes.

J’ai tout d’abord entré la commande suivante pour voir si TLP était réellement actif :

sudo tlp-stat -s

ce qui m’a été confirmé par le retour suivant :

+++ TLP Status
State = enabled
Last run = 21:26:33, 1 sec(s) ago
Mode = battery
Power source = AC

On peut voir au passage que je suis en mode BAT (batterry) alors que la source d’alimentation est sur AC (courant alternatif), ce qui est très intéressant pour moi. Je suis en effet parti du principe que la puissance de ma machine était largement suffisante quand je l’utilise sur batterie et que par conséquent je pouvais très bien me contenter de la même chose quand je suis sur secteur.

Comme le montre l’image ci-dessous TLP le permet :

Il suffit de s’assurer que l’option TLP_DEFAULT_MODE soit sur BAT (c’est le profil par défaut) et de passer l’option TLP_PERSISTENT_DEFAULT de 0 à 1 avant de sauvegarder le tout. TPL appliquera alors le profil par défaut (BAT) même quand la machine tournera sur secteur.

Après avoir avoir appliqué cette option la température a déjà baissé de 20° pendant que la batterie se recharge. Ça me va très bien comme ça.

On peut bien entendu choisir l’inverse et délaisser le mode BAT pour le mode AC quand la machine tourne sur batterie. Vous ne briderez pas les performances de votre machine une fois la prise secteur débranchée, mais vous perdrez bien entendu énormément en autonomie. À vous de voir ce qui vous convient en fonction de ce dont vous avez besoin à l’instant T.

Comme je l’ai évoqué plus haut, la nouvelle génération de batteries présentes sur nos machines ont un niveau de charge optimal se situant aux alentours de 40 à 80% (c’est pareil pour vos smartphones). Si on effectue à chaque fois une recharge complète sa durée de vie sera d’à peu près 300/500 cycles, mais si on s’astreint à rester dans la tranche 40/80 elle durera 2 à 3 fois plus longtemps. Comme c’est fastidieux personne ne le fait vraiment sur le long terme, mais là encore TPL peut nous aider et s’en charger (qu’il est bon ce jeu de mot).

Vous pouvez indiquer les seuils de charge mini/maxi dans la section ThinkPad Battery et il s’occupe de tout. Vous n’aurez plus à vous en soucier et votre batterie restera dans la fourchette optimale. Génial non?!

J’ai remarqué une autre section très intéressante, car elle m’a permis de désactiver le Bluetooth une fois pour toute, ce qui si on en croit cette discussion issue des forums Ubuntu n’est pas chose facile.

Comme vous pouvez-le voir sur la capture ci-dessous, la section « radio » permet de choisir d’activer ou de désactiver (à l’arrêt ou au démarrage) certains modules, dont le bluetooth ou le wifi.

J’ai également procédé au passage à un réglage dans l’onglet « Processor », pour demander à TLP d’utiliser les même réglages qu’en mode batterie (balance_performance), car cela me suffit amplement.

Il y a pas mal d’autres réglages, mais pour le moment je suis à peu près satisfait par ceux que j’ai affiné. J’ai ce qu’il me faut en ressources et je sais qu’au besoin j’en ai encore sous le pied. La température de mon PC est à un bon niveau sur secteur, la charge se fait de manière optimale, automatiquement et le bluetooth s’est fait la malle jusqu’à ce que je lui dise de revenir.

La dernière chose à laquelle je dois m’atteler c’est la vitesse de mes ventilateurs. J’ai l’impression qu’ils tournent mieux sous Windows que sous Linux (où il ont l’air d’être plus lents). Mais ça c’est autre chose et TLP ne peut rien faire.

En ce qui concerne le GUI de TLP c’est pas mal, mais ça ne fait rien de plus que l’édition du fichier. C’est juste plus lisible, plus pratique, ce qui est déjà très bien.

Si vous préférez l’édition à la patte ceci fait très bien l’affaire :

sudo gedit /etc/default/tlp 

Amusez-vous bien!

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

  • 19 février 2019 à 00:18

Full Circle Magazine FR : Premier numéro de 2019 !

Par Full Circle Magazine FR

Bonjour à tous et à toutes,

La petite équipe française de traduction du magazine Full Circle est très heureuse de pouvoir vous proposer le numéro 141, celui de janvier 2019, en français. Il est disponible sur notre page NUMÉROS ou directement, en cliquant sur la photo de couverture ci-dessus.

issue141.png

Outre les bonnes rubriques habituelles, Python, Inkscape, Mon opinion, Mon histoire, Q. ET R., et j'en passe, vous y trouverez, notamment :

  • Une présentation de Darktable avec la promesse de tutoriels approfondis si assez de lecteurs sont intéressés ;
  • Dans la rubrique Ubuntu au quotidien de Richard Adams, la partie 4 des jeux rétros, ce mois-ci sur les émulateurs de jeux pour la NES et la Sega Genesis ;
  • Un entretien avec l'un des développeurs principaux d'Ubuntu Budgie réalisé par Ronnie;
  • Une critique des cours pour débutants de Ruby proposés gratuitement sur le site d'OpenClassrooms, par Erik qui les a essayés lors de quelques heures de libre ; et
  • Un article/tutoriel que j'ai écrit sur comment j'ai réussi à mettre Ubuntu Xfce4 sur mon vieux Honor 5C sous Android 7 avec UserLAnd (trouvé dans le Play Store), alors que les téléphones Huawei posent un tas de problèmes à Corbin et les autres développeurs. Si vous avez l'EMUI 9 d'Huawei (le mien reste au 5.0.3 !), vous n'aurez sans doute aucun problème à mettre, sur votre propre téléphone, l'une des distrib. complète de Linux maintenant disponibles dans l'appli UserLAnd : Alpine, Arch, Debian, Kali, ou Ubuntu !

Amusez-vous bien !

Bab, le scribeur et d52fr et moi-même, AuntieE, les traducteurs/relecteurs

Gravatar de Full Circle Magazine FR
Original post of Full Circle Magazine FR.Votez pour ce billet sur Planet Libre.

Articles similaires

  • 18 février 2019 à 17:54

Frédéric Micout : Centralisation des logs avec Graylog

Par Frédéric Micout

L'auto-hébergement c'est super mais quand on commence à avoir plusieurs services qui tournent, il faut quand même superviser un peu tout ça. Jusqu'à présent, je comptais sur quelques scripts pour cela. Mon serveur a peu d'activité et ça suffit à peu près même si ce n'est pas parfait. L'un des problèmes tient au fait que j'utilise plusieurs machines virtuelles (via virtualbox) et que je dois donc tout traiter machine par machine. Un autre problème est lié au fait que côté visualisation, ben ça reste des logs plus ou moins brutes. Bref, il ne me manquait qu'un peu de temps pour travailler sur ce sujet.

Raisons de ce choix

Force est de constater que pas mal de solutions diverses existent. Après une recherche rapide, deux d'entre elles ont retenu mon attention. La stack ELK (Elasticsearch + Logstash + Kibana) et Graylog (+ elasticsearch + mongodb). C'est cette seconde solution que j'ai décidé de déployer, non pas qu'elle soit forcement meilleure que l'autre (je n'en sais rien) mais mon cas d'usage est assez basic donc, les deux doivent faire l'affaire (je changerai peut être d'avis ensuite).

Installation de base

J'ai opté pour une installation de chacun de ces outils (mongodb, elasticsearch et graylog) à partir des .deb dans une machine virtuelle à part. Pour les fans de docker, pas de soucis non plus : http://docs.graylog.org/en/3.0/pages/installation/docker.html. Autant le dire tout de suite, graylog et elasticsearch demandent beaucoup de RAM pour fonctionner de manière convenable. Beaucoup, ça veut dire 1 Go chacun par défaut. C'est probablement peu pour une gros serveur mais pas forcement pour une machine plus modeste. J'ai tenté de réduire ces paramètres (voir les paramètres Xms et Xmx dans les fichiers de configuration) et en gros, c'est juste inutilisable. J'ai donc alloué 4 Go de mémoire vive à ma machine virtuelle sur les 8 Go installé sur mon serveur. Au passage, le problème serait à peu près identique avec la stack ELK. Pas de jaloux donc...

Quoi récupérer ?

Dans un premier temps, je me concentre sur les services qui sont ouverts sur l'extérieur, à savoir le serveur mail et le serveur web. J'utilises pour cela Rsyslog sur chaque machine dont je veux rapatrier les logs. Dans le fichier "/etc/rsyslog.conf ", ajouter pour envoyer les logs UDP (@) ou TCP(@@) (dans le cas présent, j'envoie mes logs en UDP d'où le commentaire sur la ligne correspondant à TCP):

*.* @IP_MACHINE_GRAYLOG:514;RSYSLOG_SyslogProtocol23Format
#*.* @@IP_MACHINE_GRAYLOG:514;RSYSLOG_SyslogProtocol23Format

Concernant les logs apache, j'ai simplement ajouté ce qui suit dans la config de chaque VHost :

ErrorLog "|/usr/bin/logger -t apache -p local0.info"
CustomLog "|/usr/bin/logger -t apache -p local0.info" combined

Je rapatrie aussi les logs de mon NAS Synology (même si cette machine n'est pas accessible de l'extérieur). Pour le faire, j'ai simplement ajouté le paquet "centres de journaux" et je n'ai eu ensuite qu'à activer le transfert de log en indiquant l'adresse IP du serveur de log, le port (514) et le protocole (UDP) à employer.

Au passage, puisque les logs ne transitent que sur mon réseau local, je n'ai pas cherché à chiffrer les échanges. C'est un choix qui n'est pas gravé dans le marbre mais dans la mesure où je considère mon réseau local sûr, pas de soucis normalement ...

Configuration serveur

Côté serveur Graylog, j'ai ajouté les règles iptables suivantes afin de rediriger l'ensemble des paquets arrivant sur le port 514 vers le port 1514, ceci afin de pouvoir les capturer ensuite :

iptables -t nat -A PREROUTING -p tcp --dport 514 -j REDIRECT --to 1514
iptables -t nat -A PREROUTING -p udp --dport 514 -j REDIRECT --to 1514

La configuration à proprement parler de Graylog s'effectue dans le fichier "/etc/graylog/server/server.conf". En fait, peu de choses à modifier si ce n'est le mot de passe admin et l'URI permettant d'accéder au serveur (ici, uniquement depuis le réseau local ; la version 3 de Graylog tout juste sortie simplifie cette partie en unifiant ces paramètres par rapport à la version 2.5 que j'avais d'abord installé). J'ai aussi modifié ce qui suit afin de ne pas répliquer les données et de toutes les regrouper dans un seul shard (à priori, je resterai quoi qu'il arrive assez loin des limites pouvant me faire reconsidérer la question) :

elasticsearch_shards = 1
elasticsearch_replicas = 0

Démarrage

Une fois cela fait, reste à lancer le tout et à prévoir de démarrer ces service à chaque démarrage :

# systemctl enable elasticsearch.service
# systemctl start elasticsearch.service

# systemctl enable mongod.service
# systemctl start mongod.service

# systemctl enable graylog-server.service
# systemctl start graylog-server.service

Après une phase de démarrage qui peut durer plusieurs minutes, Graylog est accessible via une interface web sur le port 9000. À ce stade, il faut définir des entrées dans Graylog car pour le moment, c'est un coquille vide. J'ai créé deux "input" avec un attribut "Global" (rien à modifier sinon):

  • Syslog UDP
  • Syslog TCP (au cas où mais normalement, rien ne doit arriver sur cette entrée)

Là si tout va bien, dans l'onglet "search", on verra progressivement arriver nos logs et les graphs associés. Il est possible de filtrer les entrées en fonction de nos besoins, de paramétrer la période de visualisation, les champs que l'on veut voir apparaître, etc... Chose super cool, la possibilité de paramétrer des tableaux de bord dans lesquels on aura la possibilité de retrouver que l'on aura pré-paramétré. Les résultats sont présentés de manière synthétique sous forme de graphe et il est possible d'accéder rapidement aux données ayant produit ces tableaux.

Conclusion

Une fois installé et configuré, Graylog est réactif et intéressant à l'usage. C'est visuel et intuitif. :D . Difficile de tout décrire en quelques ligne ici. Cela fera donc l'objet d'un autre billet dans quelque temps ...

Gravatar de Frédéric Micout
Original post of Frédéric Micout.Votez pour ce billet sur Planet Libre.

  • 18 février 2019 à 12:00

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

Par Journal du hacker

Pour la 7ème semaine de l'année 2019, 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

  • 18 février 2019 à 00:01

Carl Chenet : Courrier du hacker : déjà 75 numéros pour la newsletter du logiciel libre

Par Carl Chenet

Cette semaine a été publiée le 75ème numéro du Courrier du hacker, la newsletter résumant l’actualité francophone du Logiciel Libre et Open Source. 75 numéros, ça fait 75 semaines consécutives. Petit point sur le chemin parcouru.

Pourquoi

En lançant la publication du Courrier du hacker le 15 septembre 2017, je souhaitais avant tout répondre à un besoin personnel : obtenir un résumé chaque semaine de l’actualité francophone du Logiciel Libre et Open Source. En effet je suis cette actualité de très près, pour les besoins du Journal du hacker. Mais il faut bien avouer que cette actualité va parfois très, très vite.

Le besoin était donc flagrant : recevoir chaque semaine un résumé de cette actualité directement dans mes e-mails, avec une quinzaine de liens, pas plus.

Extrait du Courrier du hacker, la newsletter du logiciel libre

Ténacité

Beaucoup de gens, particulièrement dans le monde anglophone, lancent des newsletters. Peu nombreux sont ceux qui passent le cap de la cinquième publiée. Je savais donc qu’il fallait avant tout que j’inscrive le Courrier du hacker dans le temps, afin d’être visible pour devenir un vrai acteur de la communauté FOSS francophone, la newsletter du logiciel libre.

À part quelques retards, les publications se sont succédées sans interruption depuis la création. Je ne m’interdis pas de ne pas publier pendant une ou deux semaines, particulièrement pendant mes vacances. Mais jusqu’ici j’ai réussi à me tenir à cette nouvelle discipline. Pourvu que ça dure 😉

À retenir : les projets qui percent du jour au lendemain, ça arrive… mais surtout dans les vidéos YouTube sur les startups américaines 🙂

S’ouvrir à tous les lecteurs

L’une des grandes prises de conscience que j’ai eue en communiquant au sujet du Courrier du hacker et particulièrement sur LinuxFR, est que certains lecteurs étaient complètement fermés à l’idée de recevoir les e-mails de la newsletter. Fallait-il pour autant les priver d’un contenu d’une qualité exceptionnelle, pour une histoire de format de l’information ?

J’ai donc pris la décision de faire un effort et d’élargir la présence du Courrier du hacker.

À retenir : les réseaux sociaux sont aujourd’hui quasi-incontournables, autant commencer tôt.

Flux RSS du Courrier du hacker

Bien évidemment, en dehors de l’e-mail, comme newsletter du logiciel libre, le Courrier du hacker se devait d’avoir son flux RSS.

Le flux RSS du Courrier du hacker : https://lecourrierduhacker.com/rss

Compte Mastodon du Courrier du hacker

Grand utilisateur de Mastodon moi-même, j’ai donc squatté l’instance des amis de Framasoft (merci à eux) pour y héberger le compte Mastodon du Courrier du hacker : https://framapiaf.org/@lecourrierduhacker

Compte Mastodon du Courrier du hacker, la newsletter du logiciel libre

Compte Twitter du Courrier du hacker

Un très grand nombre de Libristes fréquentent également Twitter. Il est important d’y être présent si on souhaite toucher le plus grand nombre.

Le compte Twitter du Courrier du hacker : https://twitter.com/courrierhacker

Compte Twitter du Courrier du hacker, la newsletter du logiciel libre

Un contenu accessible et exploitable

Afin que le contenu de la newsletter reste toujours accessible, et que cet accès soit simple, il fallait constituer des archives pour la newsletter du logiciel libre. C’est désormais chose faite.

Les archives du Courrier du hacker : https://lecourrierduhacker.com/archives

À retenir : il faut absolument créer des archives externes à votre prestataire d’envoi de newsletters, qui pourrait vous couper l’accès à vos archives et donc à votre contenu si l’envie lui en prenait.

Le futur du Courrier du hacker

Tout en continuant le travail hebdomadaire déjà fait, le Courrier du hacker, en tant que newsletter du logiciel libre, va mettre en avant les excellents acteurs de la communauté FOSS francophones. Nous avions déjà parlé de l’April, mais aussi des blogueurs par exemple, le numéro 75 met en avant l’excellent site web Microlinux. Nous allons multiplier ce type d’initiatives, n’hésitez pas à me contacter si cela peut vous intéresser.

Me suivre sur les réseaux sociaux

N’hésitez pas à me suivre directement sur les différents sociaux pour suivre au jour le jour mes différentes projets dans le Logiciel Libre :

The post Courrier du hacker : déjà 75 numéros pour la newsletter du logiciel libre appeared first on Carl Chenet's Blog.

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

  • 18 février 2019 à 00:00

La vache libre : Mon environnement numéricobovin 2019

Par La vache libre
Ubuntu 18.04 LTS – Neofetch

Le vent du changement a soufflé et après avoir tout installé plutôt proprement (ou pas :)) côté système, je me suis attaqué à la partie la plus intéressante pour moi. Le peaufinage aux petits oignions. Avoir un PC et un système qui tourne c’est bien, mais le plus important dans l’histoire c’est ce qu’on va en faire. Il faut les bons outils et si ça peut être un peu plus beau c’est encore mieux. J’aime bien faire le point sur mon écosystème ici même, car cela me permet d’avoir sous la patte une petite liste assez complète si je dois réinstaller. Si vous voyez qu’il manque un truc qui vous semble utile ou encore mieux, carrément inutile, n’hésitez pas à m’en faire part. C’est toujours bon à prendre.

Système, noyau et desktop :

Alors côté OS et DE pas de surprises, j’ai opté pour une Ubuntu 18.04.1 LTS livrée avec un environnement GNOME en version 3.28.2. C’est facile, éprouvé et avec ça on est tranquille, ou presque. À l’heure où j’écris ce billet (et contrairement à certaines captures que j’avais uploadé avant) je suis passé sur le noyau 4.18.0-15 et sur la nouvelle pile graphique embarquant un nouveau serveur d’affichage et de nouveaux drivers.

Ceux-ci étant disponibles sur les nouvelles ISO mais n’ayant pas été déployés via les mises à jour standards d’une 18.04 déjà installée, je ne sais pas si j’ai bien fait. Comme disait Chichi « les emmerdes arrivent toujours en escadrille » et là ça peut vite être le cas. L’avenir me le dira….

Pilotes et gestion d’énergie :

Pour les pilotes je n’ai pas eu trop le choix. Nouveau ne faisant pas très bien le job j’ai du me rabattre sur la solution propriétaire en installant les derniers drivers Nvidia. Optimus oblige je suis passé par Prime pour pouvoir gérer les switchs CPU/GPU. Ce n’est pas ce qu’il y a de plus pratique dans la mesure où il faut se déloguer à chaque changement de profil, mais ça tourne plutôt pas mal au final. C’est l’essentiel.

Laptop oblige j’ai installé quelques modules en plus pour gérer la batterie et avoir quelques infos la concernant. TPL pour une optimisation transparente (je me contente des réglages de base pour le moment), ainsi que Upower et Acpi pour la partie info.

Je voulais également installer Redshift pour gérer la luminosité de mon écran le soir, mais j’ai vu qu’il est désormais disponible d’office dans GNOME.

Pour en profiter il suffit d’aller dans les paramètres « Écrans » et d’activer l’option « Mode nuit ». J’ai eu du mal à m’y faire au début, mais maintenant j’aurais du mal à faire sans. Je vous conseille d’essayer.

Thèmes, icones et personnalisation :

Comme ça n’était pas terrible visuellement, j’ai décidé d’arranger tout ça comme je pouvais. Sur les conseils de Guillaume .V et en bon puriste, j’ai commencer par installer Vanilla-Gnome. Ça permet en gros de retrouver un GNOME à la sauce GNOME, de l’invite de session au CSS global. On se sent déjà plus à la maison avec ça!

Comme j’en avais un peu marre d’Adwaita, j’ai décidé d’essayer autre chose et j’ai opté pour Arc-theme. C’est plus flat et ça introduit un peu de transparence. J’ai complété le thème avec le pack d’icones associé et le plugin d’intégration pour Firefox.

NB : Le pack Arc-icon-theme ne couvrant pas toutes les icones du système, il pioche automatiquement dans celles présentes par défaut dans GNOME pour compléter. Pour avoir un truc plus beau et plus cohérent vous pouvez l’utiliser avec le pack Moka. Si vous l’installez il utilisera celui-ci pour compléter et franchement c’est pas dégueulasse!

J’ai ajusté les autres paramètres de personnalisation via Tweak-Gnome et j’ai installé Compiz pour un truc simple, avoir mes fenêtres centrées à l’ouverture. Ça me gonflait sévère d’aller les chercher à gauche et je n’ai pas encore trouvé comment faire autrement.

Pour finir avec la personnalisation j’ai décidé d’utiliser un fond d’écran rouge pour changer un peu des tons gris/bleu que j’ai toujours eu jusqu’à présent. Si vous cherchez des fonds d’écran sympas vous pouvez vous rendre sur wallhaven.cc. Vous y trouverez sans doute votre bonheur.

Utilitaires et applications courantes :

Pour ce qui est des utilitaires et des applications courantes, je vais citer en vrac les applications inclues dans la distribution et celles que j’ai ajouté sans forcément le préciser à chaque fois. Vous serez assez grands pour fouiner par vous-même ;)

Web et réseau :

  • Navigation : J’utilise en général Firefox, Chromium et j’ai également TorBrowser installé dans un coin au cas où.
  • Mails : Thunderbird
  • FTP : Filezilla
  • Téléchargement : Transmission et youtube-dl.
  • Audit et sécurité : aircrack-ng Eterhape, Wireshark, Zenmap, Ettercap, sslstrip, tcpdump, Traceroute, iftop, Netstat et Autopsy.

Graphisme :

  • Visionneuse d’images : Eog
  • Retouche d’images : Gimp, Trimage pour la compression et Gpick qui est une super pipette à couleurs pour les choper ici ou là afin de les utiliser ailleurs.
  • Capture d’écran : L’utilitaire intégré à GNOME*.
  • Divers : Exiftools et exiv2 en cli pour consulter et gérer les données exif.
Gpick

*Pour la capture j’ai toujours été un grand adepte de Shutter, mais celui-ci est désormais à moitié moribond faute de maintenance. Vous pouvez toujours l’installer et il fonctionne parfaitement, mais pour activer les options d’édition vous devrez installer des vieilles librairies. C’est trop bancale de mon point de vue. R.I.P.

Multimédia :

  • Players : VLC, Video GNOME et Rhythmbox.
  • Tags : EasyTAG
  • Encodage : WinFF

Bureautique :

LibreOffice est dans la place mais croyez moi ou pas, je fais tous mes courriers avec Notepad :D

Sauvegarde :

J’utilise l’utilitaire intégré à Ubuntu.

Utilitaires divers :

  • Veracrypt pour le chiffrement.
  • p7zip
  • Gdebi et dpkg pour gérer certaines installations de paquets.
  • Screefetch et Neofetch pour afficher le récap du système.
  • nms parce que ça sert à rien.
  • Bleachbit pour faire le ménage.
  • Termintator et Tilix en complément de GNOME-Terminal.
  • Dconf pour quelques réglages un peu poussés.
  • Htop parceque c’est mieux que top et Glances parce que c’est mieux que Htop!

Et c’est à peu près tout! J’en oublie sans doute et la liste n’est pas exhaustive. Si l’été n’arrive pas assez vite pour m’attirer sur mon terrain de golf préféré et me détourner à nouveau de ma machine, je risque d’installer encore pas mal de conneries.

N’hésitez pas à me dire ce qu’il manque à votre goût ou ce que vous utilisez chez vous.

Amusez-vous bien!

Gravatar de La vache libre
Original post of La vache libre.Votez pour ce billet sur Planet Libre.

Articles similaires

  • 16 février 2019 à 23:08
❌