Planet Libre

blog-libre : Résoudre les lenteurs au démarrage de Ubuntu-Mint

J’appelle problème bloquant, un problème m’empêchant d’utiliser un outil. Cela ne signifie pas obligatoirement “l’outil ne fonctionne pas” mais plus globalement “l’outil n’est pas utilisable pour moi en l’état“. C’est le cas ici, je teste Mint XFCE et j’ai un démarrage en 46 secondes. Le démarrage fonctionne mais le temps de démarrage est bloquant pour moi, hors de question de rester sur une distrib qui met autant de temps à démarrer. Je suis en dual-boot, Xubuntu démarre en 7s.

Identifier

Il est nécessaire de connaître deux commandes pour identifier les lenteurs au démarrage des systèmes d’exploitation utilisant systemd : systemd-analyze et systemd-analyze blame. Vous en croiserez parfois une troisième permettant de présenter les résultats de manière graphique : systemd-analyze plot (à utiliser ainsi systemd-analyze plot > boot.svg). Un man systemd-analyze vous renseignera sur la fonction de chacune.

Voici le résultat de systemd-analyze sur ma Mint XFCE. Le noyau Linux (kernel) met donc 35s au démarrage et l’espace utilisateur (userspace) 11s. C’est ce résultat que je désigne par “démarrage” dans cet article et pour être précis tiré du man : “the time spent in the kernel before userspace has been reached, the time spent in the initial RAM disk (initrd) before normal system userspace has been reached, and the time normal system userspace took to initialize”. On vient d’identifier deux problèmes, lenteur au niveau kernel et lenteur au niveau userspace.

Startup finished in 35.072s (kernel) + 11.461s (userspace) = 46.533sgraphical.target reached after 1.380s in userspace

Un systemd-analyze blame affiche le temps d’initialisation de chaque service et donne le résultat suivant (tronqué aux 5 premiers résultats). On identifie de suite la raison de la lenteur au démarrage de l’userspace : ntp.service. Ce service met 10s à s’initialiser à lui tout seul.

10.153s ntp.service408ms dev-nvme0n1p3.device292ms NetworkManager.service252ms systemd-cryptsetup@cryptswap1.service245ms systemd-resolved.service

Je vous invite à tester en live ces commandes sur votre pc. L’immense majorité des services systemd démarrent en moins d’une seconde si vous avez un SSD. Évidemment certains services sont lourds/longs à démarrer : virtualisation, bases de données… Je simplifie mais tout service qui démarre en plus de 2-3 secondes mérite votre attention : Est-il nécessaire ? À quoi sert-il ? Pourquoi ce délai ?

Diagnostiquer

On commence à mettre les mains dedans : Qu’est-ce qui provoque ce délai et est-ce qu’une action change ce délai ? Commençons par le service ntp.

La bonne manière de procéder : 1/ Favoriser des tests aux résultats visibles et compréhensibles, ça oriente et confirme nos soupçons. On doit être sûr que c’est notre action qui a changé quelque chose, pouvoir constater un changement, comprendre ce qu’on a fait et ce qui s’est passé 2/ Effectuer des tests qui impactent le moins possible le système d’exploitation afin de pouvoir revenir en arrière (rollback) et reproduire la situation d’origine 3/ Pour rechercher et isoler la cause d’un problème, on va du grossier au précis. Plutôt que faire 100 tests sur des choses précises (plus long et difficile), il vaut mieux faire un test général pour savoir dans quelle direction poursuivre (disque, kernel, réseau, etc.) 4/ Créer des tests de sorte que problème/résultat soient reproductibles ainsi on teste et valide facilement/rapidement une action

Ici nous allons donc simplement désactiver le service ntp sudo systemctl disable ntp.service (pour rollback : sudo systemctl enable ntp.service), redémarrer sudo reboot puis afficher de nouveau le résultat systemd-analyze blame. Il est évident mais ça confirme qu’il n’y a pas d’effets indésirables dans l’immédiat : L’userspace démarre en moins de 2 secondes. On gagne près de 10s à chaque démarrage.

Repassons sur notre lenteur kernel. Lorsqu’on arrive sur Grub, on choisit Advanced options for Linux Mint 19 Xfce puis Linux Mint 19 XFCE (recovery mode) et on regarde ce qui se passe. Dans mon cas c’est simple, ça reste longtemps sur un message : Scanning for btrfs file systems. On va orienter nos recherches de ce côté-là.

Réparer

Le service ntp permet de fournir l’heure exacte au système d’exploitation, on ne peut pas se contenter de le laisser désactivé mais on peut probablement lui trouver un remplaçant. Je vous recommande chaudement chrony, vous pouvez aussi passer à systemd-timesyncd. Chrony est méconnu pourtant c’est la nouvelle référence, il est déjà utilisé de base sur les systèmes Fedora, CentOS, Red Hat. Sa configuration par défaut est sécurisée, correcte, il n’écoute qu’en local et n’agit qu’en client NTP. Il faut donc juste l’installer : sudo apt install chrony. On redémarre sudo reboot puis on affiche de nouveau le résultat systemd-analyze blame : La lenteur constatée niveau userspace a disparu, on a définitivement gagné 10s à chaque démarrage, le service chrony s’initialise en 54ms. On aurait pu creuser le problème du service NTP, ça aurait pris sûrement beaucoup plus de temps. Nous avons là une solution simple, rapide, satisfaisante.

En effectuant quelques recherches sur la lenteur niveau kernel, on apprend qu’il y a des problèmes avec le noyau 4.15.0-20. On vérifie notre noyau (uname -r), pas le même. Le plus évident lorsqu’on a un problème avec un noyau, c’est d’en tester un autre.

On se rend sur http://kernel.ubuntu.com/~kernel-ppa/mainline/ puis on cherche la dernière branche. Le plus simple étant de cliquer sur Last modified, actuellement le noyau le plus récent est le 4.18. Je n’aime pas prendre la dernière version, je lui préfère une version antérieure (par exemple la 4.17.12) : 1/ Les bugs commencent à être connus et identifiés, on peut retrouver leurs traces 2/ Trop récent, peu fiable.

On télécharge, on installe, on redémarre, on vérifie le noyau et systemd-analyze.

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-headers-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-headers-4.17.12-041712_4.17.12-041712.201808030231_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-image-unsigned-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.17.12/linux-modules-4.17.12-041712-generic_4.17.12-041712.201808030231_amd64.debsudo dpkg -i linux*4.17.12*.debsudo rebootuname -rsystemd-analyze

Pas de bol, pas mieux ! On a encore un démarrage kernel de plus de 30 secondes. À noter que sur Grub, on peut toujours choisir de booter sur l’ancien noyau. On va faire des recherches sur Scanning for btrfs file systems, je précise que je n’utilise pas btrfs sur mon pc.

Le premier lien est la solution qui a marché pour moi.

sudo blkid # On affiche les identifiants (UUID) des périphériques bloc (systèmes de fichiers)sudo cat /etc/initramfs-tools/conf.d/resume # On compare les UUID de la commande blkid avec le contenu du fichier resume, dans mon cas aucune correspondance. L'UUID ne correspond à aucun périphérique bloc, c'est incohérentsudo cp /etc/initramfs-tools/conf.d/resume ~/resume.bak # On fait une sauvegarde du fichier pour pouvoir rollbacksudo nano /etc/initramfs-tools/conf.d/resume # Remplacer RESUME=UUID=xxx par RESUME=nonesudo update-initramfs -u

Je pense qu’une bonne explication est ici. Je recommande également ces liens connexes : 1, 2, 3, 4. Pour résumer il y a des problèmes si vous chiffrez votre /home notamment autour de la swap. Dans la release notes de Mint 19 XFCE, Known issues : There is an issue with home directory encryption that causes swap to be misconfigured during installation. To correct this…”

Conclusion

Au début de l’aventure.

Startup finished in 35.072s (kernel) + 11.461s (userspace) = 46.533sgraphical.target reached after 1.380s in userspace

Après la résolution du problème dans l’userspace (ntp.service).

Startup finished in 35.071s (kernel) + 1.371s (userspace) = 36.442sgraphical.target reached after 1.363s in userspace

À la fin de l’aventure (après la résolution du problème niveau kernel).

Startup finished in 3.786s (kernel) + 1.380s (userspace) = 5.167sgraphical.target reached after 1.373s in userspace

Je démarre à présent en moins de 6s, 40s gagnées à chaque démarrage, un confort indéniable. Soulignons le fait qu’une version LTS (Long Term Support) n’est pas exempte de soucis/bugs, que le démarrage est aussi concerné par des problèmes/optimisations.

J’ai essayé de vous fournir une méthodologie et quelques bases pour vous débrouiller avec des lenteurs au démarrage, l’article Danse avec les reboots est un bon complément. Les commentaires sont ouverts, je réponds aux questions.

Tcho !

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

Yannic Arnoux : Spam des commentaires

Pour lutter contre le spam dans les commentaires du blog, j’ai opté pour la simplicité dès le début parce que l’audience est restreinte, que je ne veux pas compliquer la vie des lecteurs avec des systèmes de captchas (de plus en plus illisibles d’ailleurs) et que je veux préserver l’accès au blog sans JavaScript pour les durs, les vrais, les tatoués ;-)

Ma naïve défense est basée sur un pot de miel : un champ caché dans le formulaire de saisie de commentaire, invisible pour l’humain normalement constitué, qui ne peut donc être rempli que par un bot qui analyse les pages HTML. Ces commentaires sont jetés directement par mon gestionnaire de commentaires Stacosys. Pendant longtemps, ce fut une défense suffisante ; de rares fois un facheux postait un commentaire pour me vanter un site de vente de pilules : je refusais le commentaire et voilà.

Mais depuis quelques temps, je reçois des rafales de spams : soit les robots sont plus efficaces et analysent aussi la CSS de la page, soit quelqu’un a embauché une armée de zombies pour poster manuellement sur tous les sites à moins de 100 visiteurs / jour. J’ai donc mis en place une 2ème ligne de défense. Quand j’étiquète spam le commentaire, Stacosys écrit une ligne de log avec l’adresse IP du spammeur, et fail2ban ajoute une règle iptables pour le bannir. La méthode n’est pas révolutionnaire, ça a demandé quelques lignes de code dans Stacosys ; ce qui est plus intéressant, c’est sa mise en oeuvre dans une architecture Docker avec un reverse proxy.

Architecture Docker blog

Nginx joue le rôle de reverse proxy, il balance les requêtes du blog vers Hugo et le post du formulaire vers Stacosys. Pour ne pas perdre l’adresse IP réelle du visiteur, on la propage jusqu’à Stacosys dans l’attribut HTTP X-Forwarded-For.

On a une configuration NginX de ce genre :

location /newcomment { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://stacosys:8100/newcomment; } location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://nginx-blog; }

Stacosys est un container Docker donc l’application (PID 1) écrit ses logs dans la sortie standard (STDOUT) ; c’est le comportement par défaut. Mais, afin d’ajouter des règles iptables, le container fail2ban a besoin de lire ces logs. On va donc exporter les logs de stacosys vers le container logger en rajoutant une section logging dans le fichier docker-compose qui décrit le lancement du service stacosys :

logging: driver: syslog options: syslog-address: "tcp://127.0.0.1:514" tag: "stacosys"

et le container logger, qui n’est rien d’autre qu’un serveur syslog, écrit ses logs dans un volume Docker :

logger: image: bobrik/syslog-ng volumes: - syslog:/var/log/syslog-ng ports: - "514:514"

Le volume de données syslog est partagé avec le container fail2ban qui peut ainsi lire les logs de stacosys, appliquer ses règles de filtrage et définir dynamiquement des règles iptables pour bannir les vilains.

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

System Linux : Monitoring container Docker avec Weave Scope

ws.png

C'est beau et pratique :)

Téléchargement :

wget -O /usr/local/bin/scope \\ https://github.com/weaveworks/scope/releases/download/latest_release/scope

Droits :

chmod a+x /usr/local/bin/scope

Lancement :

scope launch

Ensuite http://votre-ip:4040/

Bonne découverte à vous !

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

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

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

blog-libre : Mint XFCE… ou pas

Je suis en train de tester Mint XFCE. Dans l’article Xubuntu 18.04… ou pas je soulignais les points qui me posent dorénavant problème avec Ubuntu : Télémétrie et paquets snap.

Mint a décidé de ne pas inclure le paquet ubuntu-report de télémétrie (Ubuntu ships with “ubuntu-report”, which collects metrics and usage data. This package won’t be present in Linux Mint, no data will be collected or sent) et a choisi Flatpak. J’ai envie d’ajouter la vie est bien faite ha ha ha.

J’aime beaucoup leur communication, un billet mensuel (Monthly News) ainsi que des billets annonçant les sorties (avec release notes). J’y vois une vraie attention pour informer l’utilisateur de ce qu’il se passe notamment les problèmes (Known issues). Dans le billet mensuel on trouve une liste de donations reçues par mois avec une moyenne de 10000 dollars sur les trois derniers mois. Non seulement il s’agit d’une grosse somme mais certains donateurs donnent de manière répétée et importante. Ci-dessous une liste tronquée jusqu’à $40. Ça signifie beaucoup pour moi, les utilisateurs soutiennent et récompensent le boulot effectué, c’est très positif.

$304 (2nd donation), B. Nikola aka “Germmare”
$300, Maciej F.
$272, Christian F.
$250, Wendy J.
$145 (17th donation), Jon Espenschied aka “xeno”
$125, Timothy D.
$109 (3rd donation), Heinz G.
$109, Néstor A. S.
$109, Jürgen S.
$100 (3rd donation), Mirza B.
$100 (2nd donation), Martin G.
$100 (2nd donation), Ray W. aka “Ambiray”
$100 (2nd donation), H. J. M.
$100, Len W.
$100, Peter P.
$100, Paul R.
$100, Minjun Y.
$100, Todd H.
$100, David B.
$100, Yasser T.
$100, Erik J.
$100, Craig V. V.
$97, Willian B. D. S.
$87 (2nd donation), Alfred B.
$65 (4th donation), Ion L. I.
$54 (13th donation), Dr. R. M.
$54 (4th donation), Dirk B.
$54, Juan Valencia Calvellido aka “calvellido”
$54, Stephan Tietz
$54, Jan H.
$54, Volkan C.
$54, Lasse L.
$54, Pierre E.
$54, Champeau C.
$54, David P.
$54, Anthony W.
$54, Jörg G.
$50 (8th donation), Thomas T. aka “FullTimer1489”
$50 (3rd donation), Stephen T.
$50 (3rd donation), Michael K.
$50 (2nd donation), Tony C.
$50 (2nd donation), Timmn
$50 (2nd donation), Dallas H.
$50 (2nd donation), Programmed Precision
$50 (2nd donation), Peter P.
$50 (2nd donation), Brian S.
$50, Savvas H.
$50, ScreenType GmbH
$50, Scott M.
$50, Rod S.
$50, Walter S.
$50, Tim K.
$50, Joseph G.
$50, Barton H.
$50, aka “siggjen”
$50, Bryce P.
$44 (2nd donation), Peter D.
$44 (2nd donation), Sylvain D.
$44, Karl H.
$44, Antonín S.
$44, Philippe R.
$40 (3rd donation), M. B. .
$40, Jason F.
$40, Dimitrios G.
$40, Dean M.
$40, Bruno K.

A l’heure actuelle j’ai essuyé les premiers plâtres dessus (billet en approche), pas simple mais c’est réglé. Je n’ai plus de soucis bloquants et je préfère déjà booter sur Mint que sur Xubuntu. On verra ce que ça va donner en utilisation continue mais pour l’instant : +1 !

Dans un ancien article Les nouveaux usages, je parlais du changement. Il est difficile de voir et savoir quand quelque chose change, il faut s’informer. Mint déjà meilleure que Ubuntu ? Je la trouve rapide, soignée avec de bonnes idées pour les utilisateurs (Update Manager, paquets Flatpak mis à jour automatiquement, Timeshift pour rollback en cas de pb) et une différence de plus en plus marquée avec Ubuntu (Télémétrie, paquets snap…). Encore plus difficile la résistance au changement, les habitudes ancrées, le confort du connu, la peur de l’inconnu.

Pour info je procède au partitionnement suivant sur mon poste (SSD 256 Go) :

  • Partition de 90 Go pour l’O.S principal => La partition contenant la distrib sur laquelle je boote
  • Partition de 90 Go pour l’O.S secondaire (tests distribution, Data) => La partition sur laquelle j’installe les distributions à tester. Si une distrib me plaît cette partition accueillera mon O.S principal, l’autre partition de 90 Go servant alors à tester les distribs. À noter qu’avoir une seconde distrib sous la main (dual-boot) permet aussi de résoudre certains soucis (un genre de rescue)
  • Partition de 50 Go pour Data => En général j’y stocke des trucs lourds genre films ou logiciels ou conteneurs VeraCrypt. Elle me sert également à “passer” les données et fichiers de config entre les O.S
  • Partition avec l’espace restant pour la swap

Je rappelle que je me sers de mon poste à titre professionnel donc 1/ Je bosse avec 2/ Ça doit fonctionner 3/ Mais il faut que je puisse switcher vers une nouvelle distrib si je le désire (sans quoi la réinstallation m’empêche de bosser). Bref cette petite organisation m’apporte souplesse et capacité de tester/basculer.

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

Articles similaires

Marty : KooZic : sortie de la v1.0.0

Une version 1.0.0 signifie-t-elle un remaniement important de KooZic par rapport à la v0.8.0 ? Autant être clair : non, pas du tout. Cela marque surtout une série de changements internes qui rendent les 2 versions incompatibles, et qui justifient du coup un saut de version. Mais cela n'empêchent pas une série d'améliorations et de nouvelles fonctionnalités d'avoir été intégrées à la nouvelle mouture.

Odoo v11.0 et Python 3

Alors que les versions 0.x utilisaient Odoo v10 et Python 2, la branche 1.x utilisera Odoo v11 et Python 3. C'est surtout dans un souci de modernisation et de support que ce choix s'inscrit. En effet, une version d'Odoo est supportée 3 ans, et le support de Python 2 sera abandonné le 1 janvier 2020. On n'y est pas encore, mais autant rester à jour !

Liens de téléchargement

Il est toujours pratique de partager une piste ou un album. La v1.0.0 introduit la possibilité de générer des liens de téléchargement facilement. En un clic, un lien peut-être généré sur une piste, un album, un artiste, un genre musical ou une liste de lecture. Il peut alors être partagé : au premier accès à ce lien, une archive ZIP sera générées avec les fichiers correspondants. Il est possible de créer plusieurs liens par objet, et il est notamment possible de définir une durée de vie pour chaque lien.

HTML5 ou Web Audio

KooZic utilise les capacités du navigateur pour lire les fichiers audio, sans nécessiter de plugins externes (heureusement, on est en 2018, Flash est mort depuis longtemps). Ça, c'est bien. Sauf qu'on est à la merci du bon vouloir du navigateur quand il s'agit de récupérer le flux audio, et ça c'est moins marrant.

Dans l'approche simple et naïve que KooZic utilise, les pleins pouvoirs sont donnés au navigateur concernant le chargement de la piste audio. En HTML5, les navigateurs modernes optent pour un mode "intelligent" : ils ne mettent en cache que ce qui est nécessaire pour éviter le gaspillage de bande passante. Ça parait être la bonne approche... sauf si vous écoutez une compilation qui dure une heure (style mega mix). En effet, cela implique que la connexion entre le navigateur et le serveur va rester ouverte pratiquement tout le temps de la lecture. Si le serveur ou votre connexion Internet fait un pet de travers durant cette période, la connexion va couper, et la piste va s'arrêter.

Pour pallier à ce problème, une liste de lecture peut à présent utiliser l'API Web Audio. Celle-ci permet d'appliquer des effets à une piste audio, mais dans le cas qui nous préoccupe de charger l'entièreté de la piste avant de la jouer. Cela implique un temps de chargement plus long, mais une lecture bien plus stable.

Amélioration des performances

Ou plutôt désactivation de certaines fonctionnalités qui peuvent être gourmandes lorsque les performances de la machine sont limitées :-) Jusqu'à présent, les paramètres de configuration étaient restés très limités. C'est un choix assumé, le but étant de conserver une interface simple avec une configuration de base adaptée à chaque installation. Ça, c'est ce que je croyais... Il m'a été rapporté des cas assez extrêmes d'installations sur lesquels la configuration de base était inutilisable. Cela a impliqué une série de modifications qui évitent la surconsommation de RAM. De plus, 3 options ont vu le jour :

  • Désactivation des actions d'arrière-plan
  • Vue par défaut sans miniatures
  • Infos LastFM récupérées à la demande

Tout cela permet de rendre l'installation bien plus légère pour les petites configurations (enfin, surtout pour les très grosses médiathèques...).

Autres Nouveautés

L'API Subsonic est disponible en XML (par défaut) et JSON. J'ai appris à mes dépens qu'il n'y avait pas de conversion standardisée ente ces deux formats, ce qui fait que le support JSON de KooZic était assez mauvais. Dès lors, les applications qui utilisaient JSON à la place de XML (par exemple : Ultrasonic) fonctionnaient plutôt mal. Cela devrait en principe être réglé.

Mise-à-jour d'une installation existante

Malheureusement, la v1.0.0 est incompatible avec les versions précédentes. La nouvelle installation va dès lors ignorer la configuration précédente. Avec les scripts d'installation, ça se fait facilement :

curl https://raw.githubusercontent.com/DocMarty84/koozic/11.0/extra/installer/koozic_install.py > k_install.py chmod +x k_install.py sudo ./k_install.py install

Si vous aviez installé KooZic sans passer par le script d'installation, il vous faudra désinstaller manuellement. N'hésitez pas à soumettre un problème sur Github !

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

Guillaume Kulakowski : Jeedom, installation / update sous Odroid

Mon installation Jeedom commençait à dater. En effet, elle était encore basée sur la première image officielle pour Odroid  (plus disponible depuis) construite autour de Jessie (a.k.a Debian 8)… Il était donc grand temps de passer sous Stretch (a.k.a Debian 9) pour profiter, entre autre, de PHP 7. Cette article traite à la fois d’une […]

Cet article Jeedom, installation / update sous Odroid est apparu en premier sur Guillaume Kulakowski's blog.

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

Simon Vieille : Gist 1.9.0 en ligne… Vive le monde du dev front !

La version 1.8.3 aussitôt publiée, j'avais complètement oublié la mort de bower au profit de yarn. Du coup, une tentative d'installation et tout fonctionne sauf les assets qui étaient gérés avec bower.

J'avais 2 choix possibles : utiliser yarn pour remplacer bower pour sans doute le voir disparaître dans quelques mois ou choisir un outil un peu plus bas niveau : NPM. La version 1.9.0 inclue donc NPM pour gérer les assets de Gist.

Dans cette version, il y a également un script exécuté à la fin des commandes composer pour configurer l'application sans passer par une édition manuelle des fichiers :

Pour mettre à jour votre application Gist coté client et serveur : make à la racine du projet.

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

Articles similaires

Simon Vieille : Gist 1.8.3 released! 2 bugs majeurs fixés

Gist est un service en ligne et une application auto-hébergeable pour partager du code sur le web et en ligne de commande.

J'ai publié à l'instant la version 1.8.3 qui corrige 2 bugs majeurs concernant l'API :

  • La mise à jour d'un GIST requêtait le mauvais end point (diff)
  • Le contrôleur PHP pour la mise à jour d'un Gist pouvait récupérer un Gist qui n'était pas celui qu'on voulait mettre à jour (diff)

Pour mettre à jour votre application Gist coté client et serveur :

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

Cenwen : QuebecOs n’est plus !!! Hélas…..

Depuis le début du mois, le fameux site QuebecOS n’est plus. Aïe. Vous ne savez pas ce qu’est QuebecOs ? C’est la version francophone de Distrowatch mais pas que.

Après 14 ans de bons et loyaux services, le site ferme ses portes. Grandgagnon, le webmaster du site, a annoncé la triste nouvelle fin Juillet.  Il tient à remercier notamment toutes les personnes qui ont fait vivre ce site qui ne se bornait pas qu’à retranscrire en Français les nouvelles versions des distributions publiées sur Distrowatch.

Voici la liste de tous les contributeurs disséminés de part le monde :

grandgagnon : Votre webmestre
Alphadi : Rédacteur
Nils : Administrateur du serveur
Gaug : Administrateur du serveur et forum
Jc1 : Administrateur du forum
d2_racing : Administrateur du forum
guigui1 : Administrateur du forum
Pontife : Administrateur du forum
albe65 : Administrateur du forum
Jessminder : Administrateur du forum
Cissou : Administrateur du forum
Nemau : Administrateur du forum
toxicwaze : Administrateur du forum
Franky : Administrateur du forum
arnohoho : Administrateur du forum
lmarcini : Administrateur du forum
noxlord : Administrateur du forum
Tux : Administrateur du forum
ReMink : Administrateur du forum
CD2000 : Administrateur du forum
fabien : Administrateur du forum
XtremXpert : Administrateur du forum
Digital : Rédacteur
antidrugue : Rédacteur
mercury : Rédacteur
dodo : Rédacteur
Yomy : Rédacteur
petitbob: Rédacteur
Cohiba021 : Rédacteur
Adminfox : Rédacteur
DarkGagan : Rédacteur
sheasan : Rédacteur
IIJETHROII : Rédacteur
Ultima Cogito : Rédacteur
Virgal : Rédacteur
paul92 : Rédacteur
boro : Rédacteur
holywood : Rédacteur
Eastwind_gio : Rédacteur
MaXflY : Rédacteur
glaframb : Rédacteur
CoolRide : Rédacteur
iznogoud : Rédacteur
MichelD : Rédacteur
Yann : Correcteur orthographique
Bunker : Correcteur orthographique
Free : Contributeur accru sur le forum
PG73 : Contributeur accru sur le forum

Comme vous pouvez le constater, il n’y a pas que des rédacteurs et correcteur orthographiques car QuebecOs est bien plus que ça.

On y trouve aussi un forum, des articles détaillés sur des distributions mais aussi une tribune et des jeux en plus des annonces des sorties.

Voici un exemple détaillé avec la sortie de la distribution Primtux avec la version Eiffel, une distribution destinée aux enfants.

Voici une triste nouvelle qui est passée inaperçue, enfin presque. Bravo les gars et encore merci.

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

Articles similaires

Morot : Debconf, Preseed et troubleshooting.

Dernièrement j’ai cherché à automatiser l’installation d’un serveur Openldap avec Puppet et un fichier de préconfiguration d’un package Debian.
L’installation était bloqué et un ps révélait que l’installation était bloquée sur la préconfiguration du package :

22165 ? Ss 0:00 /usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install slapd 22170 ? S 0:00 /bin/sh -c /usr/sbin/dpkg-preconfigure --apt || true 22171 ? R 96:21 /usr/bin/perl -w /usr/sbin/dpkg-preconfigure --apt 22173 ? Z 0:00 [dpkg-preconfigu] 22178 ? R 26:27 /bin/sh /tmp/slapd.config.JDMbkD configure

Pour le debug, première étape, préchargeons notre fichier preseed dans debconf :

echo -e "slapd slapd/root_password password ldappwd" | debconf-set-selections echo -e "slapd slapd/root_password_again password ldappwd" | debconf-set-selections echo -e "slapd slapd/internal/adminpw password ldappwd" | debconf-set-selections echo -e "slapd slapd/internal/generated_adminpw password ldappwd" | debconf-set-selections echo -e "slapd slapd/password2 password ldappwd" | debconf-set-selections echo -e "slapd slapd/password1 password ldappwd" | debconf-set-selections echo -e "slapd slapd/domain string 'int.morot.fr'" | debconf-set-selections echo -e "slapd shared/organization string 'int.morot.fr'" | debconf-set-selections echo -e "slapd slapd/backend string MDB" | debconf-set-selections echo -e "slapd slapd/purge_database boolean true" | debconf-set-selections echo -e "slapd slapd/move_old_database boolean true" | debconf-set-selections echo -e "slapd slapd/allow_ldap_v2 boolean false" | debconf-set-selections echo -e "slapd slapd/no_configuration boolean false" | debconf-set-selections

Activons le mode développeur et le fronted sans interaction utilisateur, tel qu’utilisé par Puppet :

DEBCONF_DEBUG=developer export DEBIAN_FRONTEND='non-interactive'

Il ne reste plus qu’à lancer l’installation du package et examiner la sortie ou le syslog :

apt install slapd

Pour ma part, j’ai pu voir que les quotes autour des paramètres organization et domain posaient problème et demandaient à être supprimés :

debconf (developer): 30 question skipped debconf (developer): 30 question skipped

Profit!

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

Articles similaires

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

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

Full Circle Magazine FR : Pour l'été, bis !

Bonjour !

L'équipe du FCMfr est heureuse de vous présenter le numéro 134 du magazine Full Circle en français. Oui, nous avons un peu de retard, mais C'EST L'ÉTÉ, il fait chaud (et, en plus, nous ne sommes que quatre). Comme d'habitude, vous pouvez le lire ou le télécharger sur notre page Numéros ou directement en cliquant sur la photo de couverture ci-dessous.

issue134fr.png

Ce mois-ci, outre les tutoriels habituels (Python, Inkscape, Freeplane et Great Cow Basic), vous y trouverez une critique de ZorinOS et la démarche à suivre pour installer Warcraft III sous Linux. Une critique du jeu même viendra dans le numéro de juillet.

Quoi d'autre ? L'histoire de Paolo Pelloni, qui a réussi à écrire un programme en Python pour Rhythmbox, en est à sa troisième partie. Et Richard Adams continue sa présentation des paramètres du système d'Ubuntu avec Unity.

En revanche, Gord, de Q. ET R., a quitté la revue pour des raisons de santé. Ne vous inquiétez pas, cependant, EriktheUnready reprend la rubrique dès le mois prochain...

Bonne lecture et bonnes vacances où que vous les passez.

Le scribeur, Bab, et les traducteurs/relecteurs AE, christo.2so et d52fr

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

Articles similaires

blog-libre : En retour : Raspberry Pi remplacée

Comme je l’expliquais dans mon article précédent, mon Pi était en panne. La véritable cause de la panne est le boîtier Aukru acheté et utilisé (que je déconseille fortement du coup). Il est mal découpé, ça a appuyé sur la carte SD conduisant à désolidariser le slot Micro SD Card de la carte Pi.

Je précise que je suis sûr du diagnostic, en appuyant sur la carte SD j’ai pu démarrer le système d’exploitation, les connecteurs faisant alors contact. J’ai essayé de trouver une solution pour maintenir appuyée la carte SD sur la carte Pi sans succès, j’ai accentué le problème. Ça m’a gonflé, j’ai jeté la carte Pi et ce pu%!*$ de boîtier.

Du coup je suis passé à une Raspberry Pi 3 Modèle B+ (installé et fonctionnel à l’heure qu’il est) avec le boîtier officiel en noir. La découpe est nickel, le Pi rentre parfaitement dedans, la différence est flagrante entre l’ancien boîtier Aukru et celui-ci.

La conclusion de cette mésaventure est que dans la jungle des accessoires autour de la Raspberry Pi, il vaut mieux parfois privilégier les accessoires officiels. J’avais pris le kit Aukru pour le prix, le ventilo (finalement trop bruyant) et le boîtier transparent, mauvais choix.

Tcho !

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

Articles similaires

Jehan : Financement collaboratif de la gestion des extensions dans GIMP (et plus!)

Un de mes plus vieux projets pour GIMP est la création d’un système de gestion d’extensions. Le plus vieux message à ce sujet que j’ai pu trouver date de 2013, à peine un an après mes premières contributions.
J’ai commencé à travailler dessus, il y a quelques semaines.

J’ai en fait de nombreux projets concernant les façons d’étendre GIMP: une meilleure interface de plug-ins, la communication bidirectionnelle entre le cœur de GIMP et les plug-ins, et même la possibilité de hacker l’interface graphique de GIMP avec les plug-ins! Mais la priorité: à l’heure actuelle, installer un plug-in ou d’autres ressources est chiant et complexe.

Avant toute chose, un petit rappel:

Vous pouvez financer ZeMarmot/GIMP!

Tout ce que nous faisons pour GIMP, sous licence libre pour tous, est fait grâce au projet ZeMarmot. Ce projet paie notamment le développement de GIMP, puisque cela fait partie des améliorations nécessaires pour notre propre pipeline de production.

Cependant à ce jour, notre financement n’est même pas suffisant pour payer une seule personne à temps plein. Notre studio à but non lucratif a pourtant survécu avec 2 personnes jusque là pendant quelques années, avec des périodes de petites dépressions et de burnouts (un peu-beaucoup dernièrement).

Nous continuons à espérer financer collaborativement assez pour payer 2 salaires pleins et justes. Cela nécessite environ 4 fois le financement actuel. C’est pourquoi nous essayons cette nouvelle approche: parler de nos plans de développement en avance (plutôt qu’une fois faits, comme tout ce que nous avons déjà fait dans GIMP et d’autres logiciels libres), et donc pour une fois, je fais cet appel au financement avant de rentrer dans le détail, car on a vraiment besoin de vous!

Vous aimez les évolutions récentes de GIMP? Souhaitez-vous voir cela continuer dans cette lancée? Si tel est le cas, vous pouvez nous aider! Le projet est financé participativement actuellement sur ces 2 plateformes:

» Patreon crowdfunding (USD) «

» Tipeee crowdfunding (EUR) «

Qu’est-ce qu’une extension?

Ce que j’appelle une extension dans cet article est toute ressource pouvant être installée dans GIMP. Dans mon code actuel, une extension peut inclure:

  • des plug-ins
  • des brosses (brosses natives ou pour le nouvel outil MyPaint)
  • des dynamiques de peinture
  • des dégradés
  • des motifs
  • des palettes
  • des préréglages d’outil

Dans le futur, cela sera étendu pour inclure:

  • des scripts
  • des modèles d’image
  • des thèmes
  • des icônes
  • … et toute autre ressource à laquelle je ne pense pas encore.
Qu’est ce que la gestion d’extension?

Tout simplement, “gérer” des extensions signifier pouvoir:

  • chercher de nouvelles extensions (mises à disposition dans des dépôts distants);
  • installer de nouvelles extensions;
  • désinstaller des extensions;
  • désactiver des extensions (les rendre inactives sans les supprimer);
  • mettre à jour les extensions: quand un créateur d’extension en met une nouvelle version à disposition, GIMP devrait vous en avertir et vous donner la possibilité de mettre à jour en un clic.

Vous avez sûrement déjà une idée du type de fonctionnalité dont je parle. Par exemple, votre navigateur web (Firefox, Chrome, etc.) a probablement une telle fonctionnalité, et il est fort probable que vous ayiez déjà cherché/installé des extensions pour votre navigateurs dans votre vie. En gros, je souhaite que GIMP propose la même chose.
À ce jour “installer” une extension dans GIMP impliquait en général une recherche sur le web qui vous emmène sur une page quelconque (parfois dans des sites pas forcément fréquentables) avec des instructions bizarres vous demandant de télécharger une archive, et de la décompresser dans un répertoire caché au fin fond de votre disque. Parfois cela marchait, parfois non, et vous ne compreniez pas forcément ce que vous faisiez. En un mot: c’est la merde.

Pour le créateur d’extensions

Si vous créez des ressources pour GIMP, par exemple des brosses, des plug-ins, des images de démarrage ou autre, voici ce que ce projet vise pour vous: nous souhaitons mettre en place un site web où vous pourrez uploader vos extensions (nous recyclerons peut-être le vieux domaine registry.gimp.org ou en ferons un nouveau, tel que extensions.gimp.org).
Le code pour ce site sera sur gitlab.gnome.org, bien que le dépôt soit vide pour l’instant (je travaille sur le core code de GIMP en premier) comme je viens à peine d’en demander la création.

Techniquement une extension n’est rien de plus compliquée que l’ajout de métadonnées à votre travail: un nom d’extension, une description, des captures d’écran si votre extension s’y prête, etc. Votre adresse de site web est aussi bienvenue ainsi que celle de votre suivi de bugs, nous permettant de rediriger les gens dans la bonne direction au besoin (rendant votre travail plus efficace). Dans l’implémentation en cours, j’ai choisi le format AppStream de méta-données, bien connu des développeurs de Logiciels Libres, et simple à écrire (nous avons encore des détails à régler pour la prise en charge de Windows et peut-être même non-Linux en général, mais rien d’insurmontable). Les méta-données sont vraiment le composant principal permettant la recherche et la gestion correctes d’extensions!

Nous étendrons ce format avec quelques tags spécifiques vous permettant de décrire le contenu de votre extension. Par exemple, voici un squelette de méta-données pour une extension fournissant un set de brosses à installer (dans l’implémentation en cours, qui pourra changer):

<?xml version="1.0" encoding="UTF-8"?> info.libreart.brushset org.gimp.GIMP My cool brush set A collection of brushes for GIMP https://libreart.info CC0-1.0 GPL-3.0+ org.gimp.GIMP brushes

C’est pas plus compliqué. Vous mettez vos brosses dans le répertoire brushes/ (tel que décrit par la clé “GIMP::brush-path“) et voilà!

Ce que ça change pour GIMP

Deux autres conséquences vraiment sympa si nous transformons certaines de nos données ou plug-ins fournis par défaut avec GIMP:

  1. Il vous sera possible de désactiver des fonctionnalités ou données dont vous n’avez que faire. J’ai entendu dire que certains supprimaient même des fichiers pour rendre les menus moins toufus, tellement GIMP a de plug-ins pr défaut. Maintenant cela ne sera peut-être plus nécessaire.
  2. Des mises-à-jour de fonctionnalités de base pourraient se faire hors-sorties: une sortie de GIMP est un travail lourd qui demande beaucoup de temps et de préparation. Avez-vous d’ailleurs remarqué que nous sommes maintenant plus rapide pour sortir GIMP (3 sorties en 2 mois!)? Nous allons bien sûr continuer dans cette lancée. Cependant avec des extensions qui peuvent être mises-à-jour par un canal moins contraignant, nous pourrions nous simplifier la tâche, faire moins de grosses sortie de logiciels, tout en ayant encore plus de mises-à-jour!
Et la sécurité, dans tout ça?

Soyons clair: côté sécurité, à l’heure actuelle, le système de plug-in de GIMP est une véritable passoire.

Toutefois on peut travailler sur certains aspects: le système devra comparer les fichiers listés dans les méta-données avec ceux présents dans l’extension. Une extension annonçant être un set de brosses uniquement ne devrait ainsi pas contenir d’exécutable par exemple.

Et bien sûr, tout fichier exécutable (c’est à dire plug-ins ou scripts) devrait passer par de la revue de sécurité. Cela signifie que nous devrons trouver ceux dans la communauté capable d’effectuer une telle revue. Je le prédis: cela prendra un peu de temps pour se mettre en place. Mais c’est ce par quoi on doit passer.

Enfin on ne pourra accepter les exécutables compilés dans un premier temps. Un exécutable compilé n’est de confiance que si nous l’avons compilé nous-même, sur nos serveurs. Cela rajoute de manière évidente tout un monde de complexité (encore plus sachant que GIMP tourne sous Linux, Windows, macOS, BSDs…). Au début, il paraît donc évident que nous ne pourrons autoriser les extensions C et C++ sur notre dépôt. Je sais qu’on va me rétorquer que cela signifie se passer des certaines des extensions les plus connues. G’Mic est le plug-in qui vient immédiatement à l’esprit! Je ne suis pas fou, et il me paraît évident que l’on devra mettre en place des exceptions dès le début pour des créateurs de plug-in de confiance (avec un parcours connu et des développeurs reconnus dans le Libre), pour les autoriser à uploader des plug-ins compilés dans ce nouveau système d’extensions. Notons que ceux-ci seront vraiment des exceptions.

Quoiqu’il en soit, rentrer dans le monde des extensions est un chemin difficile. On le sait tous, la sécurité est importante, surtout de nos jours, et GIMP n’est pas un si bon élève sur ce point. Un jour, ce serait bien d’ailleurs si les extensions pouvaient être lancées dans un environnement bac à sable par exemple. Comme disent certains: le chemin est long, mais la voie est libre!

Le code

Je l’ai dit, j’ai déjà commencé. Mon code actuel peut déjà charger et démarrer les extensions, lire et lister les métadonnées, et (dés)activer des extensions. Ce sont les bases. Mais cela ne fait que commencer.

Après les bases, il restera beaucoup à faire, tel qu’obtenir la liste des extensions depuis les dépôts, et travailler sur le site web (Patrick David devrait m’aider sur cet aspect; on rappelle qu’il a déjà fait notre nouveau site web et Pixls.us, la communauté à la mode pour les photographes utilisant du Logiciel Libre).

Je ne sais quand je finirai, notamment car je travaille sur plusieurs projets à la fois dans GIMP (comme une meilleure prise en charge des écrans haute densité, et bien sûr notre plug-in pour l’animation; mais aussi beaucoup beaucoup plus!). J’espère tout de même pouvoir avoir quelque chose à sortir pour le grand public d’ici la fin d’année. 🙂

Merci à tous!
Et n’oubliez pas: votre financement est plus que jamais nécessaire, sur Tipeee ou Patreon (ou regardez encore notre page générique de dons pour ZeMarmot ). Cela nous permet d’avancer nous-même et de faire avancer GIMP!

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

Articles similaires

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

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

Thuban : Syspatch : Patches execsize + ipsecexpire pour OpenBSD

Hier, l'équipe OpenBSD nous a livré deux nouveaux correctifs, pour OpenBSD 6.3 et 6.2 :

- le correctif 'execsize' afin d'empêcher que tout utilisateur normal puisse planter le système lors de l'exécution d'un programme ELF incorrect.
- le correctif 'ipsecexpire' : lors de l'expiration d'une clé IPsec, le noyau peut paniquer à cause d'une temporisation de tâche inachevée.

OS concernés :
- 6.3 - patch n°12 'execsize', n°13 'ipsecexpire'.
- 6.2 - patch n°18 'execsize'.
Architectures concernées : amd64, arm64, i386

Ces correctifs touchant le noyau, un redémarrage est requis !

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

blog-libre : Récupérer les bookmarks de Firefox en ligne de commande (en jouant avec sqlite)

Depuis que j’utilise l’astuce du Ctrl+l sur Firefox, je me base énormément sur mes bookmarks (marque-pages). L’étape suivante était de pouvoir les récupérer en ligne de commande (pour faire des trucs rigolos avec). Ça tombe bien, ça va me permettre de vous montrer un peu sqlite.

sqlitebrowser

Sur Ubuntu/Debian un apt install sqlitebrowser vous installera sqlitebrowser, à mon sens la meilleure application graphique pour les bases sqlite. Afin de jouer avec la base sqlite Firefox qui nous intéresse, on lancera sqlitebrowser ~/.mozilla/firefox/*.default*/places.sqlite &. Je vous invite ensuite à cliquer sur l’onglet Parcourir les données puis dans Table regarder moz_boomarks et moz_places. Ce sont les deux tables qui vont nous intéresser.

Dans l’onglet Exécuter le SQL :

  • Si vous tapez select url from moz_places; puis appuyez sur le bouton Play (ou F5 ou Ctrl+Entrée), vous allez récupérer la liste des URL de vos bookmarks. Vous venez d’afficher la colonne url de la table moz_places
  • Si vous tapez select title from moz_bookmarks; puis appuyez sur le bouton Play, vous allez récupérer la liste des titres de vos bookmarks. Vous venez d’afficher la colonne title de la table moz_bookmarks
  • Malheureusement la colonne url de la table moz_places vous renvoie beaucoup de résultats. On va utiliser select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;, on sélectionne la colonne url des tables moz_places et moz_bookmarks où (condition where) les valeurs de la colonne id de la table moz_places (moz_places.id) sont égales aux valeurs de la colonne fk de la table moz_bookmarks (moz_bookmarks.fk)
  • Sinon vous pouvez aussi faire select url from moz_places inner join moz_bookmarks on fk=moz_places.id; mais pour les explications, il faudra me payer
Interroger sqlite en ligne de commande

On peut tester nos requêtes SQL, chercher ce qui nous intéresse dans les tables mais comment récupérer les résultats directement depuis la ligne de commande ? On aura besoin de apt install sqlite3 puis echo 'select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite. C’est simple… quand on connaît.

Voici la ligne de commande complète que je vous recommande echo 'select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite | grep '^http' > ~/firefox.bookmarks. La seule subtilité est le grep '^http' qui va sélectionner uniquement les lignes commençant par http en effet il est fort probable que vous ne vouliez pas les “place:” et les bookmarklets (comme celui du Jdh).

Moi perso je voulais encore autre chose les url des bookmarks ainsi que leurs titres :

echo 'select moz_places.url,moz_bookmarks.title from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite | grep '^http' > ~/firefox.bookmarks

Fonction ff

ff() {if [[ "$#" -eq 0 ]]then (firefox >/dev/null 2>&1 &)elif [[ "$#" -gt 0 ]] then fzf --bind 'right:accept' --multi --literal --exact --query="$*" --select-1 --exit-0 --print0 <~/firefox.bookmarks | sed -z 's/|.*//' | xargs -0 -I '{}' bash -c '(firefox "{}" >/dev/null 2>&1 &)'fi}

Vous devez copier cette fonction par exemple dans votre ~/.bashrc. Vous aurez besoin de fzf (et du man hé hé hé). Si vous tapez ff, ça vous lancera Firefox. J’ai “https://www.journalduhacker.net/newest|jdh” dans mon ~/firefox.bookmarks, si je tape ff jdh ou ff hack, ça me lancera https://www.journalduhacker.net/newest. Si vous tapez ff h (http étant un résultat présent sur chaque ligne) vous afficherez tous les bookmarks et pourrez lancer plusieurs bookmarks simultanément en les sélectionnant avec Tab.

Je ne donne aucune explication de plus : 1/ Devoir de vacances (j’ai été sympa, j’ai viré des paramètres) 2/ Pour apprendre et comprendre, il faut nécessairement mettre les mains dedans, il ne suffit pas de lire, il faut pratiquer, tester, se tromper 3/ Je me suis dit que certains apprécieraient de chercher à comprendre par eux-mêmes, il y a un grand plaisir à découvrir et comprendre par soi-même 4/ L’article sur fzf arrivera un jour mais va être long ha ha ha

Tcho !

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

Articles similaires

blog-libre : Raspberry Pi 3 Modèle B : Même pas 6 mois

En tant que sysadmin et power user j’ai un gros défaut, j’aime quand ça fonctionne. J’ai un Pi depuis moins de 6 mois, il est en panne. Je précise que je suis toujours convaincu par la solution mais c’est mieux quand ça marche.

LED rouge au démarrage comme seule indication. Je doute fortement que ça vienne de la carte SD, lisible à partir d’un pc, reformatée avec Etcher en utilisant la dernière image de Raspbian Stretch Lite pour tests, même problème. De plus je stockais les données sur clé USB (j’aime bien les SanDisk Cruzer Fit pour leur taille) afin d’éviter l’usure prématurée de la carte SD et j’avais désactivé l’écriture des logs. J’ai branché le Pi sur un chargeur de téléphone, même punition.

Dommage que ce ne soit probablement pas la carte SD, ça m’aurait fait une excuse pour tester les Samsung Pro Endurance mais à 27 euros c’est un peu trop.

Quelqu’un a eu un souci similaire ?

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

Articles similaires

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

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

Pages