PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Firefox et les extensions : préparez-vous pour la fin de l’année !

lundi 21 août 2017 à 18:30

A partir de Firefox 57, qui doit sortir à la fin de l’année (au mois de Novembre pour être exact), le format historique utilisé pour les extensions va disparaître, pour ne conserver que le format WebExtensions qui est disponible en parallèle depuis maintenant plus d’un an. Se débarrasser d’une très vieille et très grosse portion de code était nécessaire pour Mozilla afin de retravailler son navigateur fétiche pour les performances (et si j’ai pas senti les différences sur le startup, je confirme que les travaux en cours semblent déjà porter leurs fruits, malgré un multiprocess désactivé et également une accélération désactivée sous Linux par défaut). Alors pour ne rien perdre de vos fonctions tierces chéries, il va falloir creuser un peu.

Pour information, ce vieux format d’extension empêche notamment Mozilla de pouvoir pleinement profiter des architectures modernes de CPU qui même dans des machines bas de gamme proposent généralement deux cœurs d’exécution, là où Mozilla ne savait en exploiter qu’un seul. La transition s’annonce malheureusement douloureuse.

J’ai réellement percuté ce samedi matin au réveil où en découvrant ceci sur ma propre installation :

Moi qui vous faisait encore il y a quelques mois l’apologie de toutes sortes d’extensions (vous remarquerez que tout n’est pas installé sur ma machine perso), ça la fout mal, et il reste peu de temps pour trouver les remplaçants, quand ils existent, ce qui on le verra n’est pas si évident. J’ai quand même tenté de reprendre ma liste de 2017 et de voir ce qui pouvait coincer.

Stylish

Depuis son rachat, l’extension n’a pas évolué et manifestement son passage à Webextensions n’est pas prévu. Il est recommandé, à la place, d’utiliser Stylus, qui permet d’exploiter les thèmes de userstyles.org. En plus, sa traduction est disponible sur Transifex, ça tombe bien je bosse déjà dessus pour la traduction de Calamares.

J’ai tellement tardé à vous faire la vidéo dessus que je pense que je ferais directement la nouvelle extension, parce que si évidemment le CSS n’a que peu évolué, ainsi que les outils de développement de Firefox, l’interface de ce nouveau jouet est assez différente de l’ancienne (et moins bonne de mon point de vue, parce que ça s’intègre absolument pas au choix de thème qu’on a pu faire).

HeaderTool

La page d’addons dit incompatible (probablement bloquant pour le multiprocess, c’est encore fonctionnel sur mon installation). Et manifestement, vu l’activité, autant chercher autre chose. Il se pourrait bien que ça soit le cas de cette extension, Modify Header Value, même si l’ergonomie est assez douteuse pour l’instant (la peinture est encore fraîche cependant, ça devrait pouvoir s’améliorer).

Calomel SSL validation

L’équipe indique sur la page de l’extension qu’il ne leur est pas possible de proposer l’extension au nouveau format à cause de restrictions de sécurité de WebExtensions qui bloque l’accès à certaines informations de la page.

Pas de remplaçant manifestement donc pour l’instant, ce qui est bien dommage. Je l’avais dit que ça allait être douloureux ?

Secure Login

Là je suis confus : j’ai justement changé pour la version Webextensions il y a quelques mois, et pourtant, il indique que c’est obsolète. Pour rappel, cette extension me permet de remplir directement, via un raccourci clavier, les formulaires de login pour lesquels j’ai enregistré utilisateur et mot de passe au sein de Firefox.

Après ouverture d’une issue Github, j’ai appris qu’il était possible de « packer » une Webextension à l’intérieur de l’ancien format (Jetpack, qui était déjà une tentative de moderniser l’infrastructure des extensions), et c’est uniquement pour ça que c’est marqué obsolète. La version « full » est toujours prévue, mais pas de date précise (en tout cas j’ai pas trouvé).

uBlock Origin

Responsable d’une grande partie de mon confort de navigation (j’ai déjà pu m’expliquer longuement à ce sujet), le travail est en cours pour migrer vers webext. Apparemment il est préférable d’exporter ses paramètres si jamais il y a un souci et que la nouvelle version débarque vierge de toute personnalisation, le bouton se trouve dans le panneau de contrôle de l’extension :

La sortie semble proche, un planning existe pour la mise à disposition des versions. Fin août pour démarrer avec une version « hybride » qui s’occupera de la migration des données au nouveau format, début octobre pour la fin des opérations. Si vous êtres impatients vous pouvez déjà tenter d’utiliser la version de dev.

Advanced Cookie Manager

J’en avais parlé dans un article dédié, et vu le peu d’activité autour de l’extension, il va falloir trouver un remplaçant. Je vais probablement tester A cookie manager (trouvé à la troisième page de résultats…) dans les prochains jours pour voir si ça peut faire le café, mais ça semble jeune.

Tree Style Tab

Pour l’instant, c’est pas encore prêt. Si jamais ça traîne trop, je serais peut-être amené à utiliser Tree tabs à la place (après tout, TST a toujours été marquée comme expérimentale dans Firefox).

J’ai déjà parlé de Pure URL dans un article dédié, pas la peine de s’étendre pour l’instant.

Quelques anciennes toujours populaires

Je me suis tout de même penché sur certains de mes vieux articles et essayé de chercher des infos pour certaines vieilles recommandations.

FireFTP

Si vous l’utilisez encore, préparez-vous à utiliser un logiciel externe, tel que Filezilla, manifestement au vu de l’activité du dépot rien n’est prévu.

DownThemAll

L’extension n’est plus maintenue, il faudra apparemment passer par flashgot à la place dont les travaux sont en cours parait-il, mais le forum est avare en infos fraîches à ce sujet.

Un futur à marche forcée ?

De manière générale, quelqu’un tente de recenser les travaux de migration. On voit que c’est pas la joie, pas mal de monde n’est pas encore prêt. Il faut dire que certaines vont avoir du mal à s’adapter aux multiples restrictions, nécessaires d’un point de vue sécurité ou non, qui sont de service avec cette nouvelle infrastructure. Et il y a de grandes chances pour que les mécontentements soient nombreux lorsque Novembre arrivera. Mais vu les travaux sous le capot qui attendent encore notre navigateur préféré d’ici là, c’est un mal nécessaire.

Est-ce que j’ai déjà dit que ça allait être douloureux ?

PS : dans ma liste, le fait d’avoir supprimé Header Tool et Stylish m’a permis de voir le multiprocessus activé. Yeah !

Mirror’s edge catalyst : cool mais… 

samedi 19 août 2017 à 10:30

Je fais partie des rares joueurs à avoir été conquis par le concept de Mirror’s Edge : un jeu de « parkour » à la première personne, un concept qui avait eu du mal à trouver un public même s’il a fini avec les années avec des chiffres honorables. Et les groupies on tanné DICE, le développeur du jeu, pour avoir une suite. Enfin une suite, ce n’est pas vraiment ce qu’on a eu. Et ça fait partie de ses problèmes.

Dire que j’ai adoré le premier est un euphémisme : je l’ai acheté peu de temps après sa sortie sur PC en boîte (50 balles donc), fait plusieurs fois, et plus tard je l’ai acheté également sur Xbox 360 pour retrouver les sensations grisantes de mes mouvements mais dans mon canapé ce coup-ci. Et pourtant on peut lui trouver beaucoup de défauts : très court (6h le premier run, 4h30 le deuxième), une histoire pas nécessairement intéressante, et certains lui reprocheront un aspect couloir qui colle mal avec l’idée de liberté de course sur les toits (un aspect couloir qu’on accepte pourtant dans d’autres jeux sans problème).

Ce concept de « première personne » pour un platformer/runner pas évident à aborder

Pour sa « suite », DICE a voulu voir plus grand : exit les couloirs, on passe au monde ouvert avec missions annexes en tout genre, la ville, qui était vraiment très blanche dans l’original, est un peu plus colorée et composée de quartiers avec chacun une identité et une dominante de couleur différente.

On joue toujours Faith Connors, dont le « métier » est messagère, ce qui signifie dans l’univers du jeu le transport d’informations qui ne doivent pas passer par les canaux ultra-surveillés des autorités, autorités qui ne sont plus étatiques mais privées, car toute la ville est dirigée par une poignée d’entre elles. Une évolution de la société qui n’est pas sans rappeler le pouvoir grandissant que prennent les multi-nationales de nos jours. Nous retrouvons donc notre demoiselle pas du tout en détresse à sa sortie de prison, pour avoir été trop imprudente lors d’une mission. De nature contestataire (ses parents ont été tués par les autorités justement parce qu’il refusaient ce modèle de société ultra-totalitaire), la demoiselle passe par les toits pour parvenir à ses fins.

D’ailleurs, comme pour le premier opus, on est toujours coincé sur ces fameux toits, mais ce coup-ci point de couloirs, on peut pratiquement parcourir la ville entière dès le début, à quelques exceptions près. En effet, alors qu’on était complet en termes de compétences (la difficulté augmentant nous poussant naturellement vers ces capacités qu’on trouve inutile au début), maintenant certains mouvements sont à débloquer dans un arbre de compétences à l’aide de points acquis au fil de l’augmentation du niveau du joueur. On nous donne aussi quelques objets au fil de l’aventure, qui nous permettent d’accéder à certains endroits ou faciliter certaines missions.

Si au départ j’ai pesté face à cette mécanique, finalement, et comme le jeu nous y incite, on apprécie de re-découvrir un lieu avec ces nouvelles aptitudes qui permettent aussi de découvrir de nouveaux raccourcis ou objets cachés. Parce que l’objectif global reste toujours la rapidité pour aller d’un point A à un point B, des missions annexes étant spécialement conçues pour ça.

Un point qui m’a particulièrement déçu cependant, c’est le sens urbain. Dans son réglage par défaut c’est un GPS amélioré qui vous montre systématiquement un chemin à prendre, mais on se rend vite compte qu’il n’est pas nécessairement le plus efficace qui soit, et surtout pas très varié, c’est à dire qu’il ne tient pas compte des alternatives à moins de s’y engager de soi-même. Je trouve que c’est un élément un peu trop facilitateur, là où dans d’autres jeux de ce type il fallait connaître le terrain comme sa poche.

Et puisqu’il faut en parler, l’histoire. J’évoquais en introduction, ce jeu n’est pas une suite mais un reboot, et si des éléments restent communs (rappel : les parents contestataires, les corporations qui remplacent des états- on s’en approche doucement, avec un Facebook qui exploite 2 milliards d’internautes), beaucoup de choses ont changé, mais certains noms sont restés, sans forcément leur contexte original. Je ne m’en souvenais pas quand j’ai lu les tests à la sortie du jeu, et du coup j’étais perdu en écoutant les différences, un peu comme si vous aviez raté un épisode de série télé, ou dans le cas présent une saison entière tant les changements sont nombreux. Icarus n’est plus un projet de police agile composée de traîtres mais un personnage de la bande (plutôt tête à claques en plus), la mort des parents s’inscrit dans un complot dont la mère a fait un peu partie malgré elle, et l’histoire de la frangine fait un grand écart tout en conservant l’idée d’opposition /appartenance aux deux mondes opposés.

Et c’est perturbant, parce que le personnage principal reste le même. J’aurais moins eu de problème avec cette histoire finalement moyenne avec un personnage moins marqué dans mon esprit. On me rétorquera que la problématique est la même dans un Zelda, mais je ne pense pas avoir vu un épisode où Zelda remplace Ganon. Ce qui est finalement le cas ici.

Mais bon, tout n’est pas à jeter non plus. En premier lieu, la jouabilité. Sur PS4 la manette est à chier, ce qui fait qu’il m’a fallu bien 6h de jeu avant de commencer à être à l’aise. Mais à partir de là, c’est devenu festival, on enchaîne les sauts et acrobaties avec un plaisir béat, servi par un level design au poil qui laisse de la place à l’imagination sur les chemins à prendre (si on fait abstraction du GPS, pour rappel), ou les méthodes pour atteindre certains endroits.

Autre point positif, les combats. Dans le premier il était clair qu’il était impossible de se battre quand bien même certains mouvements étaient possibles, tout affrontement se soldait pratiquement par un échec. Alors que là, le niveau est bien plus équilibré, ou plutôt Faith sait maintenant réellement se battre, avec des mouvements nombreux qu’il faudra sortir à bon escient, parce que tous les ennemis n’ont pas les mêmes faiblesses. Comme je l’ai déjà dit certains mouvements sont à débloquer dans l’arbre de compétences, ce qui est moins gênant parce que les combats sont rares au début.

L’arbre, ou plus tôt les arbres, séparés en trois catégories : combat, mouvement, équipement

En parlant de ça, essayez de boucler certaines missions secondaires de livraison très tôt. Après, l’apparition aléatoire des pelotons d’agents de sécurité, est moins aléatoire et plus systématique ce qui ralentit inévitablement la course. Pareil pour les courses de vitesse. Il semble que ce soit aussi dépendant de votre propension à éclater les caméras de sécurité, essayez de retarder le nettoyage le plus possible et pas tout péter comme moi dès que j’en ai eu la possibilité.

Concernant les missions liées aux personnages secondaires, leur intérêt est là aussi variable, les principales que je vous recommande étant celles qui permettent de « libérer » les communications d’une zone pour pouvoir s’y téléporter, pratique parce que je l’ai déjà dit la ville est immense et on peut déjà perdre un temps fou à récupérer tous les éléments, récupération récompensée par des points d’expérience dont la montée en niveau permet d’acquérir de nouvelles compétences.

En résumé, j’en pense quoi ? C’est un bon jeu si on a jamais joué au premier, avec les forces et les faiblesses de ses mécaniques de jeu et du rythme inégal lié au monde ouvert (je le considère pas comme une tare spécifique au titre puisque ce problème est également présent dans pratiquement tous les open world, la série Assassin’s Creed en tête). L’histoire n’est pas complètement débile, si on adhère au concept de ville dirigée par des entreprises. L’idée de faire un reboot n’est pas si mauvaise dans le fond, mais une vraie suite étoffant les personnages déjà présents dans le premier aurait pu être plus intéressant à mon sens.

Reste le gameplay que j’adore toujours mais qui risque d’en dérouter plus d’un, tout comme son grand frère à l’époque : le mélange première personne/plateforme/runner étant très particulier, à l’image des contrôles du personnage. Si vous le trouvez à pas cher (comme moi par exemple chez Micromania en occasion) ça vaut peut-être le coup de se pencher dessus 🙂

Un bracelet connecté qui ne téléphone pas maison ? C’est possible !

jeudi 17 août 2017 à 18:30

Oui, moi qui n’hésite pas à vous rabâcher en permanence que votre vie privée n’est pas à vendre, m’intéresse malgré tout depuis un moment à des moyens de surveiller mon activité physique, surtout dans le cadre d’un processus pour commencer à perdre du poids. Pourquoi parler de vie privée ? La quasi-totalité des objets dit connectés, sont surtout connectés à leur fabricant qui s’occupe de siphonner toutes les données qu’ils collectent via leurs appareils sur votre compte (certes pour vous fournir un service, mais ce n’est pas seulement pour ça), et c’est ce que je cherche à éviter à tout prix. Heureusement, un petit village résiste encore et toujours à l’envahisseur il existe une application qui conserve les données en local sur le téléphone et est compatible avec certains bracelets du marché.

Je tiens à remercier Luernos pour m’avoir d’abord présenté cette possibilité lors d’un after du Premier Samedi du Libre, ainsi que le rafraîchissement de ma mémoire via Twitter quand je me suis lancé.

L’application en question s’appelle GadgetBridge, est est disponible sur F-Droid. Elle est compatible avec les bracelets de marque Xiaomi (chinois), et les défuntes montres Pebble. Ne pouvant pas acheter une montre depuis le rachat par Fitbit, j’ai regardé de quoi les bracelets du constructeur chinois sont capables. Les fonctions sont limitées suivant les modèles, et je me suis concentré sur le modèle le plus récent, le Mi Band 2, qu’on trouve notamment sur Amazon à moins de 30 euros. Au programme, lecture du rythme cardiaque, capteur de mouvement pour l’activité physique, déportation des notifications et affichage de l’heure. Tout ça sur un écran minuscule éteint la plupart du temps, ce qui devrait permettre de concentrer toute l’attention de la batterie sur la capture des mouvements.

Premier contact : pas parfait, bidouille nécessaire

Le premier appairage entre le bracelet et l’application a eu lieu au deuxième essai. A comparer à mon ancien manager qui avait acheté le même bracelet et galéré 1h30 pour faire la même chose avec son téléphone et l’application officielle. On apprend alors que dans sa configuration par défaut, le firmware est apparemment très vieux, et va donc devoir être mis à jour pour être pleinement fonctionnel. D’autant plus que le support de l’application varie d’une version à l’autre du firmware. Ne serait-ce que pour les infos cardiaque si on en croit le wiki.

C’est là que les choses se sont un peu compliquées, mais à bidouilleur, bidouilleur et demi. Le firmware à jour se trouve dans le fichier APK de l’application Mi Fit. Rien de surprenant, mais étant donné qu’on cherche justement à s’en passer, c’est un peu gênant. L’application se trouve sur le Play Store, j’ai donc cherché un moyen de le télécharger sur mon pc pour extraire uniquement les fichiers nécessaire. Après une petite recherche, c’est gplaycli qui va me servir. C’est un utilitaire qui est compatible uniquement avec Python 2.7 (le portage semble en cours vers Python 3), j’ai donc sur mon poste utilisé la commande suivante pour l’installer :

pip2 install gplaycli

Il faut ensuite créer manuellement le fichier /etc/gplaycli/gplaycli.conf (dossier à créer également) :

[Credentials]
gmail_address=
gmail_password=
#keyring_service=gplaycli
android_ID=3d716411bf8bc802
language=fr_FR
token=True
token_url=https://matlink.fr/token/email/gplaycliacc@gmail.com
retries=10

[Cache]
token=~/.cache/gplaycli/token

J’ai collé mes identifiants Google, et j’ai pu ensuite récupérer le fichier :

[seboss666@seboss666-ltp ~/dev ]$ gplaycli -d com.xiaomi.hm.health
Download complete

L’id se récupère avec l’URL en faisant une recherche sur le Play Store en version web. En relisant le tableau j’ai un problème : la dernière version de l’application contient la dernière version du firmware et ce n’est pas ce que je recherche puisque d’après ce même tableau le dernier firmware en date sent un peu le moisi (enfin je suis certain qu’il fonctionne très bien avec l’application officielle, mais ça…).

Finalement, je suis contraint de me tourner vers APKMirror pour récupérer la version 2.3.0. Dommage, au moins ai-je une solution qui fonctionne pour récupérer des APK depuis le Play Store si besoin.

Bref, la mise à jour du Mi Band 2 se fait ensuite en deux temps d’après la doc : d’abord flasher le 1.0.0.53, puis ensuite le 1.0.1.39, ainsi que les polices qui vont avec pour les notifications textes. C’est diablement simple, on envoie les fichiers .fw correspondants sur le téléphone via USB, et depuis un explorateur de fichier on a le choix de l’ouvrir avec l’utilitaire de mise à jour de firmware. On patiente un peu et roulez jeunesse. L’ajout des polices se fait même à chaud. Si le support des mises à jour s’affiche en beta, j’ai effectivement pu constater que parfois, l’application ne détecte pas correctement que le flash est terminé, bien que la connexion aie été réinitialisée. En dehors de ça, c’est tout à fait fonctionnel.

L’utilisation les premiers jours

Sinon, qu’est-ce que j’en pense ? Eh bien, déjà j’ai une sale tendance à gonfler comme un ballon de baudruche arrivé le soir, ce qui fait que le bracelet me serre à mort, il est donc fréquent de le réajuster. La partie « activité » s’enclenche dès qu’on bouge un poil, j’ai pu le constater en essayant la section « activité en temps réel » de GadgetBridge. Rien que le fait de boire de l’eau fait un peu bouger le capteur, à comparer quand j’aurai vraiment fait quelque chose de violent d’un point de vue activité.

Concernant la lecture du rythme cardiaque, j’ai l’impression qu’elle se fait à l’envers tellement j’ai des résultats bizarres. Déjà, elle n’est pas continue, il faut appuyer sur le bracelet et basculer sur la fonction, attendre quelques secondes et lorsqu’il vibre, le résultat est affiché. Mais souvent, il me dit que le rythme est plus élevé alors que je suis au repos comparé à un instant où je peux transpirer pas mal (du style, après avoir enchaîné ménage, vaisselle, lessive, car oui quand on est gros et qu’on a plus l’habitude, ça suffit à faire transpirer). J’ai au départ pensé à un problème avec mes poils, mais la lecture était pire en plaçant le capteur sur l’intérieur du poignet. Je suis donc clairement déçu sur ce point et c’est pourtant l’une des mesures que je comptais suivre et qui a justifié l’achat à la base (ça semble confirmé d’après ce thread Quora). La lecture en continu nécessite une application dédiée qu’évidemment je ne suis pas prêt d’installer puisque les conditions qui m’interdisent d’installer l’application de base s’appliquent toujours. Évitez également de mesurer plusieurs fois dans la même minute, le timestamp se limite à cette granularité, le graphe devient tout chelou s’il y a plusieurs valeurs au même moment. Dommage.

Petit résumé du sommeil avec la répartition, comparé à l’activité en journée

La seule chose pour l’instant qui semble relativement fiable, et là j’ai aucune raison du pourquoi, c’est le sommeil. Les données différencient sommeil profond de sommeil léger, et malgré quelques trous dans la lecture, ça semble correspondre pas mal. Je pense qu’il faudra du temps pour avoir une base de comparaison de ces données. A noter que le bracelet peut rester déconnecté du smartphone un moment sans perdre de données, ce qui est toujours pratique, j’ai eu très sporadiquement une déconnexion du bracelet sans raison particulière.

Parmi les points positifs restants, les notifications sont sympas aussi pour éviter d’avoir à sortir systématiquement son smartphone de sa poche. Il y a les notifications de base pour les appels, les SMS, les mails (que je n’utilise pas), et un support des notifications génériques (besoin d’autoriser l’accès), ce qui permet d’afficher l’application qui envoie une notification.

Un autre point fort est la batterie, après l’avoir reçu le mardi et chargé à bloc, le samedi soir j’étais à 91%. Il est possible que ça soit moins efficace en cas d’activité soutenue et répétée, ou si on s’amuse à demander en permanence la récupération des data sur le téléphone. Mais c’est tout de même un très bon point. (update après deux semaines, encore 59% de charge, vraiment bon).

Un autre point fort qui retombe dans la technique pure, les données de GadgetBridge sont exportées dans une base sqlite3, il est donc ensuite possible de la parcourir et potentiellement visualiser ces données en dehors de l’application (je n’ai pas encore trouvé de tels outils, mais potentiellement un grafana pourrait aider). Donc j’en reparlerai sûrement dans quelques semaines.

Verdict ?

Les solutions sont rares, mais pouvoir mesurer son corps sans qu’une société étrangère ne récupère toutes ces informations pour son compte est possible. Cependant, comme on pouvait s’y attendre la qualité n’est pas nécessairement super top, je ne parle pas de l’application qui est visuellement propre et fait le taf, mais bien du matériel, à moins de 30 balles le bracelet c’est pas évident. La qualité de fabrication est de mon point de vue irréprochable, mais côté précision, c’est pas la joie. Tout comme certains acceptent d’utiliser des logiciels libres dont la qualité n’est pas toujours irréprochable, il est dommageable de ne pas disposer de ces solutions matérielles à une qualité comparable.

Évidemment, si vous connaissez d’autres dispositifs qui sortent d’ailleurs qu’un obscur projet KickStarter (ou apparenté évidemment), je parle d’une solution accessible grand public de qualité qu’on peut présenter comme une alternative viable, surtout en ce qui concerne la collecte de données, hésitez pas à partager en commentaires. Dans tous les cas attendez-vous à un retour dans quelques semaines.

Petite parenthèse culturelle : Leo Moracchioli

lundi 14 août 2017 à 18:30

Une fois n’est pas coutume, j’ai envie de vous parler d’un artiste multicasquettes, découvert par un ami plus métalleux que moi qui plutôt que de suivre des conférences sur la vie privée et la sécurité, cherche toujours de nouvelles musiques à écouter.

Contrairement à ce que son nom indique, Leo est norvégien. Ce musicien, qui sait manifestement jouer d’un nombre indécent d’instruments, tient depuis quelques années une chaîne YouTube à l’éffigie du studio qu’il a monté, Frog Leap Studios, qui sert à la fois de réceptacle à ses petites « vlog » qu’au cœur de son activité principale : les reprises de chansons au format « Métal ».

Et tout y passe, de la Macarena à Britney Spears en passant par Sia, Coolio, Pharell Williams, Mickael Jackson, ZZ Top, La reine des neiges (en fait j’adore sa version de la chanson plutôt que l’originale), Le roi Lion, ou encore Jamiroquoi, Nicki Minaj, Aqua, Blur, Ace of Base… Rien ne semble lui résister, même si comme pour tout artiste, certains morceaux sont bien plus inspirés que d’autres. Les clips valent autant que les musiques elles-mêmes, dans lesquels participent parfois des amis musiciens, mais aussi sa femme, bassiste (comme c’est surprenant), et également sa fille, trop choupinou.

C’est également un grand collectionneurs de guitares, il est même allé jusqu’à se fabriquer la sienne, et franchement, allez voir, ça a trop de la gueule ce qu’il a fait. Malgré tout, comment fait-il pour se payer ses guitares, bien que très occasionnellement on lui en offre carrément une ? Eh bien, en dehors de l’audience YouTube, ses morceaux sont disponibles pratiquement partout, comme en atteste la page d’accueil du site. La disponibilité est cependant un peu aléatoire, j’ai pu en attester sur Amazon. Les options les plus recommandables sont dès lors Patreon, ou mieux, la nouvelle boutique qu’il vient d’ouvrir ou la majorité de l’argent tombe dans sa poche à lui. C’est ce que j’ai fait et continuerai à faire pour les prochains albums.

C’est d’ailleurs un de ses morceaux que j’ai utilisé pour la petite comparaison de formats audio, vous voyez que la qualité est au rendez-vous. Faut juste avoir de l’espace (rappel, les 14 archives pèsent un petit 7.6Go). Vous avez donc normalement les billes si vous vous payez ses morceaux et que vous manquez cruellement de place (sinon demandez, j’ai toujours pas avancé mon dépôt persos de scripts en vrac).

Voilà. Ne vous attendez pas à un million d’articles de ce genre, au delà de la musique c’est surtout les moyens de le récompenser pour son taf excellent qui m’ont motivé à partager (j’ai d’ailleurs probablement déjà partagé certaines chansons sur Twitter). Après, comme on dit, « ne jamais dire fontaine je ne boirais pas de ton eau »…

Bonne écoute et à bientôt 😉

Quelques astuces diverses, septième

vendredi 11 août 2017 à 18:30

J’aime mon métier. On est jamais une semaine sans faire quelque chose de nouveau, de bricoler certaines commandes, de gagner du temps dans l’absolu, de devoir contourner une limitation bizarre. Bref, vous l’avez compris, y’a toujours des choses à apprendre, et il serait idiot de ne pas partager tout ça.

Nettoyer les fichiers temporaires de Rsync

Après un rsync foireux (sans utiliser –append-verify), beaucoup de fichiers partiels sont restés sur le serveur de destination. Ce sont de simples fichiers cachés, pour les nettoyer, c’est pas compliqué :

find /dir/to/search/ -type f -iname ".*" -ls

Attention toutefois si des fichiers cachés légitimes se trouvent dans ces dossiers (.htaccess par exemple).

Synchroniser uniquement les permissions d’une arborescence depuis un backup

J’ai eu l’occasion de devoir uniquement réparer les permissions d’une arborescence après un chmod 755 malencontreux sur tous les dossiers d’un client (cassant des dépots Git, des traitements automatisés…). Contrairement à ce qu’on pense, ce n’est pas rsync qui va faire le taf à partir du backup :

$ cd /mnt/backup/www
$ find . ! -type l -exec chmod -v --reference='{}' /www/'{}' \;
$ find . ! -type l -exec chown -v --reference='{}' /www/'{}' \;

Bien évidemment j’ai compris ça après avoir fait mon rsync…

Python/virtualenv : faire en sorte qu’un venv puisse exploiter les modules « globaux »

Un problème que j’ai découvert avec virtualenv, c’est que si on installe un module via le gestionnaire de paquets, donc accessible via tout le système, ce n’est pas le cas pour vos environnements virtuels Python, du moins par défaut. Pour corriger ce petit souci, il faut mettre à jour son environnement avec la commande suivante :

virtualenv --system-site-packages <nom_du_venv>

Évidemment l’alternative est d’installer le module au sein du virtualenv 😀

Utilisateur en lecture seule pour mysqlump

Un collègue a pensé que le SELECT était suffisant pour un utilisateur en lecture seule destiné à faire des dumps. Il n’était pas si loin :

mysql> GRANT SELECT, LOCK TABLES ON 'user'@'host';

diff au travers d’SSH

Quand vous devez comparer le contenu de deux fichiers, diff est un des outils les plus pratiques pour identifier les points à corriger. Il y a par contre quelques subtilités quand les deux fichiers en question ne se trouvent pas sur le même serveur :

Avec une clé SSH sans passphrase :

diff foo <(ssh myServer 'cat foo')

Si besoin d'un mot de passe :

vimdiff /path/to/file scp://remotehost//path/to/file
ssh [login]@[host] "cat [remote file]" | diff - "[local file]"

Vérifier la date d’un certificat SSL/TLS avec OpenSSL

Soit vous utilisez votre navigateur, mais c’est lent (chargement complet du site, plusieurs clics pour afficher le contenu du certificat), un peu plus rapide avec une extension comme Calomel SSL Validation, sinon, inévitablement OpenSSL revient sur le tapis :

[seboss666@SebLBNvm ~ ]$ echo | openssl s_client -servername blog.seboss666.info -connect blog.seboss666.info:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Jul  7 00:00:00 2017 GMT
notAfter=Sep  5 23:59:59 2019 GMT

Relancer automatiquement la connexion MySQL pour votre API en Python

Je suis en train de réécrire l’API pour collect que j’avais commencé à l’époque, toujours en Python, mais avec Flask au lieu de Bottle, et en conservant la base MySQL plutôt que MongoDB. Mais une chose à laquelle je ne m’attendais pas, c’était que la connexion pourtant persistante que mon application crée lors du lancement finit par être coupée (par MySQL probablement). Et par défaut, il ne la rétablit pas, pour ça, il suffit d’ajouter une petite ligne au début de votre code :

base = mdb.connect('127.0.0.1', 'user', 'pass', 'base')
base.ping(True)

Drupal : lister les modules installés avec Drush

Le site d’un client m’envoyait les logs Drupal dans /var/log/messages (très, très dégueulasse on est d’accord), en lui demandant de changer ce paramètre l’agence nous dit qu’il n’y a rien à faire côté Drupal. Pas de bol, après un grep dégueu j’ai identifié le module coupable . Mais il y a plus propre avec drush :

[www-data@client-p-web01:~/www/current/src]$ drush @sites pm-list --yes --type=module --status=enabled |grep syslog
Core Syslog (syslog) 7.56

Forcer le type d’un fichier particulier avec Nginx

Quand on peut pas installer le module more_headers, et qu’nginx force application/octet-stream, un simple add_header ne suffit pas, il faut jouer un peu plus :

location /download/ {
types { }
default_type text/plain;
}

Whitelister le dossier .well-known pour Let’s Encrypt sur Nginx

Nginx toujours. Un client a empêché que ses certificats Let’s Encrypt soient renouvelés en ajoutant des règles de sécurité. Combiné avec une redirection forcée vers HTTPS, c’est une catastrophe. Pour empêcher Nginx de me renvoyer lors du challenge ACME, j’ai dû adapter un peu la configuration :

server {
    listen 80;
    server_name domain.tld;
    root /var/www/;

    location ~ ^/(?!\.well-known) { return 301 https://$server_name$request_uri; }

}

Je vous laisse vous torturer l’esprit pour comprendre la regex 😛 Le résultat est là : pas de redirection HTTPS lors du challenge ACME, et le renouvellement a pu se faire.


Comme d’habitude, si vous avez vous aussi des bricoles rapidos comme ça à partager, les commentaires complètent très bien 🙂 (ou au pire envoyez par mail, j’inclue dans un prochain billet en vous citant)