lundi 13 août 2018

Désinstaller des applications système d'Android

Rendons d'abord à César, ce qui est à César. Cet article ne pourrait pas exister sans ce message de Pourrito sur Mastodon :

Je viens de découvrir comment désinstaller une appli système sans être root ! […]

adb shell pm uninstall -k --user 0  com.facebook.system

Effectivement, la méthode décrite fonctionnement parfaitement bien sur un téléphone récent (Android 6+), même si ce dernier n'est pas rooté. Comme il le précise lui-même un peu plus tard, il est à noter que l'argument -k est inutile, car sert exclusivement à conserver les paramètres et données de l'application. Dans un cas de nettoyage avancé, nous pouvons l'omettre pour supprimer complètement les applications visées.

Attention, la manipulation décrite dans cet article peut s'avérer dangereuse si vous supprimez des composants importants de votre téléphone. Je tiens donc à rappeler qu'en aucun cas je ne pourrai être tenu responsable des dommages survenus sur votre appareil. À vous de prendre vos responsabilités avant de taper des commandes au hasard. Prenez garde de ne rien supprimer de vital sur votre téléphone (service système…), pensez à faire des sauvegardes avant de tenter quoi que ce soit. D'autant que je ne connais pas de méthode permettant de réinstaller les applications supprimées de cette manière.

Voici donc la marche à suivre, sous Archlinux, pour réaliser toute l'opération :

  1. Installez le paquet android-tools et android-udev : sudo pacman -S android-tools android-udev
  2. Sur votre téléphone, rendez-vous dans les paramètres d'Android et activer la catégorie « Options pour les développeurs », tel que visible dans la capture d'écran ci-après. Si par défaut vous ne voyez pas cette catégorie, il se peut qu'elle soit encore cachée sur votre terminale. Pour l'afficher, vous devez vous rendre dans la catégorie « À propos du téléphone », puis appuyer sept fois sur la case « Numéro de build ». Les six premières fois il ne se passera rien de spécial, c'est normal. À la septième fois, un message vous confirme que la catégorie développeur est désormais accessible.
    Capture d'écran des paramètres d'Android
  3. Dans le menu « Options pour les développeurs », activez les paramètres (première bascule tout en haut à droite, puis appuyer sur « OK »). Le reste du menu est désormais fonctionnel.
    Capture d'écran des options pour développeurs d'Android Confirmation d'activation des paramètres de développement d'Android
  4. Trouvez, plus bas dans la catégorie des « Options pour développeurs », le paramètre « Débogage USB ». Activez-le.
    Débogage USB d'Android Confirmation d'activation du débogage USB d'Android
  5. Vous pouvez désormais brancher votre téléphone à votre ordinateur via un câble USB. Assurez-vous de connecter votre téléphone en mode « MTP », via la notification dans le volet supérieur d'Android. Dans la capture d'écran ci-après, il faut d'abord appuyer sur « Recharge par USB », puis sur « Transférer des fichiers ».
    Choix du type de connexion USB pour Android Choix du type de connexion USB pour Android
  6. Il est temps désormais de passer à la ligne de commande. Normalement, l'installation d'android-udev a permis la reconnaissance automatique de votre téléphone par Archlinux. Si tel n'est pas le cas, je vous laisse voir par vous-même comment installer la bonne règle udev pour votre téléphone. Toutes ces manipulations peuvent se faire directement, vous n'avez pas besoin de redémarrer votre session ou même votre ordinateur. Ouvrez votre terminal préféré et tapez une première fois la commande adb devices. Cette commande permet de lister les terminaux Android connectés à l'ordinateur. Vous allez voir apparaître une ligne contenant un identifiant suivi du mot unauthorized. Au même instant, un popup va automatiquement s'afficher sur votre téléphone.
    Validation de la connexion de débogage USB sur Android
  7. Appuyez sur OK et la connexion de débogage USB est désormais autorisée entre votre ordinateur et votre téléphone. Entrez à nouveau adb devices dans la console et vous verrez que le même élément affiche désormais device.
    Différents appels adb devices en console

Vous êtes tout·e bon·ne, vous allez pouvoir désinstaller des applications. Pour ce faire, toujours dans votre terminal, vous devez entrer la commande suivante : adb shell pm uninstall --user 0 <app_id>. Par exemple, pour supprimer l'application « Google Play Films et Séries » (ou « Google Vidéos », ou « Google Films » suivant les téléphones) vous pouvez tout simplement faire : adb shell pm uninstall --user 0 com.google.android.videos

L'app_id dont je parle est le nom de code de l'application sur votre téléphone. Vous pouvez le trouver facilement dans l'url de l'application lorsque vous consultez le Google Play Store. Par exemple dans le cas de l'application « Google Play Films et Séries » l'url est https://play.google.com/store/apps/details?id=com.google.android.videos. L'app_id est ce qui vient après ?id=.

Voici un petit florilège de commandes pour dégooglifier un peu votre téléphone :

# Google Chrome
adb shell pm uninstall --user 0 com.android.chrome
# Gmail
adb shell pm uninstall --user 0 com.google.android.gm
# Google Play Films et Séries
adb shell pm uninstall --user 0 com.google.android.videos
# Youtube
adb shell pm uninstall --user 0 com.google.android.youtube
# Google Play Music
adb shell pm uninstall --user 0 com.google.android.music
# Google Hangouts
adb shell pm uninstall --user 0 com.google.android.talk
# Google Keep
adb shell pm uninstall --user 0 com.google.android.keep
# Google Drive
adb shell pm uninstall --user 0 com.google.android.apps.docs
# Google Photos
adb shell pm uninstall --user 0 com.google.android.apps.photos
# Google Cloud Print
adb shell pm uninstall --user 0 com.google.android.apps.cloudprint
# Google Actualités et météos
adb shell pm uninstall --user 0 com.google.android.apps.genie.geniewidget
# Application Google
adb shell pm uninstall --user 0 com.google.android.googlequicksearchbox

Par ailleurs et pour information, cette commande m'aura permis de nettoyer un téléphone Wiko assez récent en supprimant les applications chelous présentes de base dessus :

  • Applications pas dans le Play Store… Dafuq Oo?
    • com.qiku.cloudfolder
    • com.qiku.candywall
    • com.ape.led (une application « Lampe torche » allumant l'écran tout en blanc et gavé de pubs…)
    • com.ape.myseneschal (Wiko « Phone Assist », un groupe d'application chelou, a priori la même chose que Smart Assist en marque blanche pour Wiko)
  • com.qiku.android.clone360 (360 Clone)
  • com.qihoo.security (360 Security)

Une bonne manière de procéder, pour éviter de supprimer trop vite une application importante, est de commencer par désactiver les applications qui vous encombrent. Après quelque temps, si vous ne remarquez pas de problèmes particuliers, vous pouvez tenter de les supprimer. Pour cela, vous pouvez utiliser la commande suivante qui liste les applications désactivées de votre téléphone : adb shell pm list packages -d

Après avoir désinstallé des applications de cette manière, si vous consultez la liste des applications de votre téléphone dans les paramètres Android, vous pouvez, dans certain cas, toujours voir affiché les applications en question avec une mention absconse « Application non installée pour cet utilisateur » ou un truc du genre. L'application disparaîtra définitivement au redémarrage suivant de votre téléphone, que je vous conseille de faire dès votre ménage terminé.

vendredi 29 décembre 2017

Petite rétrospective

J'ai soudainement pensé à ça l'autre soir, alors que je me disais que ça faisait un moment que je n'avais rien publié ici. L'usage veut qu'à cette période de l'année nous réfléchissions à nos bonnes résolutions. Mais il n'y a rien de plus facile à oublier, abandonner ou trahir que ces bonnes résolutions. Nous ne pouvons prédire les hasards de la vie qui nous obligent à changer notre fusil d'épaule en cours d'année, nous conduisant à abandonner des résolutions prises avec entrain le 1er janvier précédent. Alors qu'au fond, bonnes résolutions ou pas, nous sommes tou·te·s capable du meilleur dans nos vies. L'idée que j'ai eu est donc de plutôt mettre en valeur ce qu'on a réussi de bien l'année écoulée.

En ce qui me concerne, cette année a été l'occasion d'évoluer dans mes activités associatives :

  • chez les scouts et guides de France, j'ai cessé d'être chef pionniers-caravelles, pour me tourner vers l'accompagnement de deux maîtrises du territoire Atlantique-Vendée. En parallèle, j'ai passé ma formation initiale de formateur et commencé à intervenir sur des formations internes au mouvement.
  • après quelques mois de torpeur, l'association Duchesse a été relancée avec succès. Le compte bancaire a été ouvert et les premières adhésions enregistrées. Le but de l'association, à l'image des AMAP qui permettent de sortir des grandes surfaces pour revenir à une consommation plus responsable d'aliments locaux, est de fournir à ses adhérents des services web (hébergement de fichiers, synchronisation d'agendas ou de contacts) qui fonctionnent localement (à Nantes en l'occurrence), pour se sortir de la logique d'enfermement des GAFAM.

Par ailleurs, j'ai pu avancer sur un certain nombres de projets personnels informatiques, parmi lesquels :

  • la mise à disposition de ma configuration d'Emacs. Cette dernière n'est pas forcément encore complètement expliquée, mais cela m'a permis de me faire la main avec le concept de literate programming que j'apprécie énormément dans sa philosophie.
  • l'évolution de mon extension simple-hinting pour Firefox, afin de la rendre compatible avec le nouveau format des extensions et ce faisant la rendre compatible avec Chrom·ium·e. Au cours de sa réécriture, je me suis intéressé à la problématique des trackers d'url (ces arguments supplémentaires ajoutés aux liens, qui permettent de savoir où vous l'avez rencontré) et des liens courts, qui permettent trop souvent de maquiller ces trackers (sachant d'ailleurs que la taille des URLs n'est plus un problème sur Twitter). Ce faisant, j'ai développé un petit outil permettant de démaquiller ce genre de lien pour savoir à l'avance où vous mettrez les pieds.
  • la traduction de différents projets libres, parmi lesquels Markor (Android), Car Report (Android), Mate Desktop (Linux), NovProg (Linux, Windows, Mac OSX), Enigmail (extension Thunderbird), et j'en passe certainement. C'est un moyen simple de s'investir dans des projets libres de qualité, sans pour autant se remettre à coder le soir venu.

vendredi 22 septembre 2017

Comment j'ai transformé mon ordiphone en véritable ordinateur portable

Suite à mes études d’ingénieur et ma thèse, j’avais acquis deux ordinateurs portables, suivi au cours de l’année passée d’un troisième, acheté d’occasion en troisième main. Cet achat devait compenser les signes évidents de vieillesse des deux premiers.

Malheureusement, ce troisième larron n’a pas duré autant que ce que j’aurais espéré. Je me retrouvais donc dans une sorte de petite impasse morale, à savoir qu’il me restait trois (!) ordinateur vaguement en état, que j’avais envie d’en acheter un nouveau, mais que je me disais que ce n’était pas la priorité absolue. Je commençai donc à réfléchir à des solutions de remplacement intelligentes.

C’est là que je me suis rappelé que j’utilisai au quotidien un appareil à la puissance de calcul au moins comparable à un petit ultra portable : mon téléphone mobile mon ordiphone. Il s’agit d’un Fairphone 2, équipé de leur version dégooglisée d’Android. Pourquoi chercher à acheter un nouveau PC alors que j’en utilisai déjà un chouette au quotidien ?

Par contre je n’ai pas imaginé un seul instant considérer mon téléphone en tant que PC proprement dit sans l’adjonction d’un véritable clavier physique. C’est là que j’ai croisé la route d’un petit clavier d’EC Gadgets.

Cela fait maintenant plus d’une semaine que je me balade partout avec, l’utilisant pour prendre des notes en réunion associative ou écrire dans le train. Le fait est que je redécouvre mon téléphone sous un autre angle, en démultipliant d’un coup ses possibilités. Je me rends compte du même coup combien je pouvais le sous-utiliser jusque-là.

En complément du clavier, pour justement prendre des notes, rédiger à l’avance mes articles de blog (comme celui-ci) ou enfin recommencer à écrire, j’utilise l’application libre et open source Markor. Cette dernière est simple, « fait le taf’ » et possède un thème sombre des plus agréables.

Tout n’est cependant pas si rose, loin s’en faut. Des petits détails viennent entacher ce tableau, il faut être honnête. La première chose que j’ai effectuée après le premier appariement du clavier, c’est d’installer la disposition bépo pour clavier externe d’Android. Et c’est là que ça coince un petit peu. De manière générale, Android se foire un peu sur certains points dans l’utilisation d’un clavier externe :

  • lorsque le clavier est apparié, impossible d’ouvrir le clavier virtuel. Du coup, ne sont plus accessibles :
    • les emojis,
    • les caractères spéciaux autres que ceux déclarés en touche morte.
  • le support desdites touches mortes est assez aléatoire, alors que c’est l’un des points important de la disposition bépo.

Par ailleurs, le clavier que j’ai acheté, bien que très bien pour la plupart des usages, comporte quelques désagréments qui deviennent bloquant en disposition bépo :

  • la touche backspace est toute petite comparée à la touche des chevrons située juste en dessous. Du coup, supprimer rapidement les dernières lettres entrées se termine souvent par l’ajout de quelques chevrons. C’est un coup à prendre ;
  • certaines touches sont moins réactives que d’autres. C’est le cas par exemple de la touche ! dans le coin inférieur droit. Problème, en bépo cela devient la touche du f, utilisé finalement assez régulièrement. Je suis donc très souvent obligé de revenir sur mes pas car un f n’est pas passé. Dommage ;
  • pire, un choix de conception a été de supprimer la touche *, remplacée par un accès chelou à l’aide d’une touche meta (combinaison de l’appui sur la touche fn et e). Spoiler alert, ça ne fonctionne pas. Mais le pire, c’est que cette touche physique sert en bépo pour le ç. Je me retrouve donc privé d’accès à cette lettre. Heureusement Android permet de basculer facilement et rapidement de disposition clavier (via un appui sur Ctrl + space), mais ça reste très désagréable au quotidien, cette lettre revenant assez fréquemment tout de même. En fait, j’avais mal compris comment appeler la touche *. Grâce à une collègue, j’ai découvert qu’elle était accessible via un fn + x (oui l’utilisation de la touche fn reste obligatoire). Mais j’ai retrouvé mon ç, je suis content.

Voilà pour l’état des lieux. Est-ce que je serai toujours aussi enthousiaste dans trois semaines, ou est-ce que le ç aura eu raison de ma patience ? Affaire à suivre.

mercredi 2 août 2017

Installation d'un noyau à jour pour archlinux sur un serveur Kimsufi

Les offres Kimsufi ont ceci de chouette qu’elles permettent à n’importe qui ou presque de s’offrir un serveur dédié pour pas trop cher. C’est la raison pour laquelle, à la suite du décès de mon serveur perso hébergé à la maison, je m’étais tourné en catastrophe vers leurs offres. L’autre intérêt est qu’ils proposent Archlinux dans leurs templates d’installation. C’est la distribution que je maîtrise le mieux désormais, c’est plutôt pratique.

Seulement voilà, pour une raison obscure, ce template d’installation, en plus de fournir des outils obscurs internes à OVH (pourquoi pas, je ne suis qu’invité chez eux je le reconnais), installe un noyau très étrange, sans passer par le système de paquet habituel. Il s’agit d’un noyau étiqueté linux-3.14.32-xxxx-grs-ipv6-64.

Malheureusement, la version 3.14 commence désormais sérieusement à dater et les soucis commencent à fleurir sérieusement. Ça a commencé, en ce qui me concerne, par un bug gênant de compatibilité avec PHP7 compilé pour des versions plus récentes du noyau (heureusement corrigé entre temps). Puis un bug encore plus gênant entre LXC et systemd (non corrigé pour sa part). Bref, l’eau prenait le navire de toute part.

Je m’étais imaginé que basculer sur un autre noyau serait compliqué/risqué, mais en fait il n’en est rien. Voici la marche à suivre.

  1. Déjà, il vous faut vous connecter en root sur votre serveur (logique). Je vous recommande de sauvegarder les fichiers /boot/grub/grub.cfg et /etc/grub.d/06_OVH-kernel.
  2. Vous devez alors installer le nouveau noyau, à votre convenance (linux ou linux-lts). Pour ma part je me suis décidé pour la version LTS. N’oubliez pas les headers qui vont bien : pacman -S linux-lts linux-lts-headers
  3. L’installation des paquets linux déclenchent la compilation de l’image bootable avec mkinitcpio. Nous n’avons donc rien de plus à faire à ce niveau-là.
  4. Par contre OVH a prévu le coup et a placé son propre noyau avec un niveau de priorité élevé dans la config de grub. Avant de régénérer le fichier grub.cfg nous devons donc en tenir compte. J’ai décidé pour ma part de supprimer le fichier /etc/grub.d/06_OVH-kernel (sauvegardé auparavant). Vous pouvez également le renommer avec une valeur supérieure à 10. Par exemple /etc/grub.d/11_OVH-kernel (le noyau linux que vous avez installé précédemment occupant le fichier 10_linux).
  5. Il ne reste plus qu’à régénérer le fichier grub.cfg : grub-mkconfig -o /boot/grub/grub.cfg.

C’est tout. Pour que les modifications soient prises en compte, il ne vous reste qu’à redémarrer votre serveur : systemctl reboot. Dans mon cas j’ai désormais :

# uname -r
4.9.40-1-lts

mardi 27 juin 2017

Note de service à l'attention de mes ami·e·s sous Windows

Une nouvelle vague d’attaque de type « ransonware » semble avoir débuté. Ce type d’attaque virale est conçue pour chiffrer l’ensemble de votre disque dur, vous demander de payer pour récupérer vos données… et se répandre parmi vos contacts. Voici quelques mesures simples que je vous invite à suivre (si ce n’est pas déjà fait) pour éviter le pire.

  1. Ne plus considérer l’email comme un media sûr. Vous vous devez de soupçonner absolument tous les messages vous arrivant, même s’ils semblent légitimes. N’ouvrez plus jamais les pièces jointes sans avoir pris le temps au préalable de vérifier sa provenance :
    1. Si c’est un message de votre assurance, banquier, école, ou tout autre administration et ce, même si vous l’attendiez — oui, des attaques usurpent très convenablement les emails des impôts qui vous envoient votre déclaration — : appelez-les. Oui, appelez votre banquier, agent d’assurance, etc. et demandez leur la confirmation que ce mail est légitime et provient bien de leurs services.
    2. Si le mail provient d’un collègue : allez le voir, demandez-lui de confirmer l’envoi. Beaucoup d’entreprises sont actuellement dans le noir (Saint Gobain, Point P…) ou l’ont été (Renault…) simplement parce que personne n’a pensé à vérifier que le mail provenant du collègue était légitime.
    3. S’il provient d’une imprimante/copieur de votre service dans votre entreprise, mais que vous n’avez rien imprimé vous-même : supprimez immédiatement ce mail. Et renseignez-vous autour de vous pour savoir quel est le con qui a fait ça. 90% des attaques virales actuelles en entreprise / dans les administrations usurpent les imprimantes (vous savez ces mails dont l’objet est « CANON - 98V7900.pdf ». Refusez de recevoir des scans par mails.
    4. S’il provient d’une de vos connaissances : appelez-la, textotez-la.
    Et tant que vous n’avez pas eu de réponse, n’ouvrez pas.
  2. Si un popup s’ouvre sur votre ordinateur alors que vous naviguez, vous prévenant que vous avez chopé un virus, ne cliquez jamais sur ok, valider ou tout autre bouton ou lien de confirmation. Prenez le temps de souffler un grand coup, puis cherchez le moyen de fermer la fenêtre sans valider : la croix rouge en haut à droite, alt+f4… C’est seulement dans un deuxième temps, que vous pouvez lancer vous-même votre propre anti-virus pour confirmer (ou pas) la présence d’un virus. En effet énormément d’arnaque / virus se font passer pour des anti-virus. Seul votre antivirus que vous avez installé est habilité à vous dire si vous avez un virus. La détection de virus via un site web c’est faux. ça ne marche pas ! Si vous ne savez pas ce qu’est un antivirus ou n’en avez jamais installé, alors ne faites rien, et demandez de l’aide.
  3. De manière générale n’acceptez plus aucune confirmation dont vous n’êtes pas directement à l’origine sur votre ordinateur (ou même votre téléphone).
  4. Ne donnez jamais vos identifiants Facebook, Twitter ou whatever ailleurs que sur Twitter et Facebook. Jamais. Nulle part. Sans exceptions.
  5. Si vous stockez des mots de passes dans votre boîte mail, supprimez immédiatement ces mails. Il suffit que votre boîte mail soit compromise — n’importe quel spyware/virus qui se mets sur votre machine par exemple — et n’importe quel gamin russe a immédiatement accès à l’ensemble de vos comptes. Il existe des tas de logiciels chouettes pour gérer vos mots de passe et les synchroniser en ligne (lastpass, dashlane, keepass…). Au pire, de nos jours, un post-it planqué sur votre bureau sera plus sûr (si vous avez confiance dans votre famille / collègues…).
  6. N’utilisez pas le même mot de passe partout. Pareil, utilisez un logiciel qui se chargera de vos mots de passe pour vous (voir le point précédent). Si c’est le cas actuellement, c’est le moment de tous les changer. Je ne rigole pas : faites-le maintenant.
  7. Si vous avez installé cacaoweb ou tout autre outil divers et varié pour regarder des films/séries en streaming, virez-moi ça. Sérieusement. Ce sont des saloperies et une part non négligeable des merdes actuelles se répandent par le biais de ces machins. Il existe des tas de site permettant de regarder des séries/films sans avoir besoin de rien installer. Si on vous demande d’installer quoi que ce soit, changez de site. Demandez autour de vous, nous avons tous des références en tête si vous ne trouvez rien.
  8. N’installez jamais de nouveaux programmes depuis n’importe quel site. Évitez comme la peste les annuaires type 01net, download.com ou que sais-je. Ce sont des nids à Spyware. Renseignez-vous, par exemple sur Wikipedia, pour connaître le site officiel des logiciels et téléchargez-les seulement depuis leur site officiel.
  9. Si vous utilisez Dropbox, OneDrive… allez dans les paramètres et désactivez le démarrage automatique avec le système. D’une part ça vous redonnera un peu de ressource, et surtout ça évitera, en cas d’attaque du type chiffrement du disque dur, de perdre les données actuellement stockées dans le cloud. Lancez ces logiciels que au moment où vous avez réellement besoin de synchroniser des fichiers.
  10. Faites des sauvegardes régulières sur un disque dur externe. Ça ne coûte plus si cher que ça. Ne laissez aucune photos, films ou document important sur votre PC. Tout cela doit être stocké au plus vite sur ce disque dur. Mais ne laissez jamais ce disque dur branché sur votre ordinateur. Branchez-le seulement au moment de faire la sauvegarde. De cette manière, si votre PC est attaqué et son contenu chiffré par un virus, vous ne perdrez pas le contenu du disque dur. S’il est branché au moment de l’attaque, il y a un risque non négligeable pour qu’il se retrouve également chiffré. Bref, ayez le sous la main, mais ne le branchez pas en permanence.
  11. Assurez-vous de tenir votre système à jour. Ne désactivez surtout pas les mises à jour de Windows. Tout aussi chiant et long que cela puisse être, laissez les s’installer dès qu’elles sont publiées. Idem pour votre navigateur internet (Firefox, Opera…).

Voilà, c’est à peu près tout ce que je vois pour l’instant. N’hésitez pas à partager d’autres bonnes pratiques si vous en avez.

[Édit.] Ajout de la règle 11 sur proposition de Christophe. Ajout de la règle 8.

mercredi 31 mai 2017

Les humains sont trop fiers

Musée de l’automobile de Compiègne — juin 2306

« … Et ça les enfants, c’est une pièce assez rare : il s’agit d’une voiture autonome, construite vers 2035.
— Qu’est-ce que c’est, une voiture autonome ?
— C’est une voiture intelligente qui roule seule : le conducteur n’est plus qu’un simple passager.
— Ouaaah, mais c’est trop bien. Pourquoi ça n’existe plus ?
— Hé bien, le souci c’est que ces voitures devaient composer pendant un temps avec le reste du trafic routier : les voitures non-autonome. Elles avaient été paramétrées, bien sûr, pour la plus grande prudence. Au cas où un piéton, ou un autre véhicule venait empiéter sur leur trajectoire, elle ralentissait, voire s’arrêtait pour éviter les accident. C’est tout à fait normal. »

Il marqua une pause, balaya du regard son auditoire, et reprit :

« Mais c’est quelque chose que l’humanité avait déjà connu : à la fin du XIXe siècle, lorsque les automobiles ont commencées à circuler, les voies étaient encore encombrées de chevaux, diligences, etc. Et pendant longtemps le code de la route a contenu des règles spécifique pour dire aux conducteurs que les chevaux avaient la priorité. La différence, sans doute, c’est que les voitures ont assez rapidement été capables de circuler beaucoup plus rapidement que les chevaux. L’adoption a donc été massive.
— Et que s’est-il passé pour les voitures automômes ?
— … autonomes ! Eh bien… j’imagine que pour le coup les humains sont trop fiers : ils n’ont pas appréciés de perdre du temps dans leurs véhicules automatiques pour laisser la place aux fangios du volant qui continuaient à rouler en manuel. Peut-être aussi qu’une partie d’entre eux étaient triste de perdre la sensation de conduite. Quoi qu’il en soit, progressivement ces véhiculent ont été abandonnés. En parallèle, l’automatisation d’autres tâches dans les usines, les champs, la médecine, avait laissé beaucoup de gens sans emplois. Beaucoup ont tentés leur chance comme conducteur de taxis…
— C’est quoi un « taxi » ?
— J’y venais justement. C’était des gens qui proposaient, contre le paiement d’une certaine somme en fonction de la distance, de la météo ou de leur humeur, de vous conduire en voiture où vous le désiriez. La version archaïque de nos chauffeur en quelque sorte. C’est d’ailleurs j’imagine ce qui s’est produit : l’offre a très rapidement dépassé la demande au début des années 2100, au point qu’il est devenu classique, pour ceux qui avaient les moyens, d’avoir un chauffeur attitré. Ça s’est répandu progressivement à l’ensemble de la société.
— Un peu comme tout à l’heure avec les carosses : les riches avaient tous un pâle meunier pour les servir.
— Ahah oui, en voilà un qui suit. Oui les « palefreniers ». Sauf que désormais tout le monde peut en avoir un. »

Alors que la classe se dirigeait vers la sortie en ordre dispersé, qui en s’attardant encore auprès d’une réplique du fardier de Cugnot, qui en chahutant gentiment dans les escaliers ou encore en commençant à parcourir les cartes interactives souvenir une à une, un élève resté légèrement en retrait philosopha à demi-voix : « L’humanité est un éternel recommencement. »

Le guide referma les portes de la galerie des voitures avec sa clé, l’école étant le dernier groupe de la journée, puis porta un regard inquiet à sa montre. Il usa de sa présence persuasive pour inciter les derniers visiteurs à se diriger vers la sortie. Ceci fait, il quitta prestement sa veste et posa sa casquette sur le comptoir à l’entrée, où il la retrouverait le lendemain matin. En quittant la boutique pour la cour du palais impérial, il parcouru rapidement quelques écrans de sa montre et appuya sur l’application de mise en relation avec son chauffeur. Le temps de traverser l’espace pavé et de fermer les grandes grilles dorées, sa voiture l’attendrait le long de la rue.

Il s’engouffra à l’arrière et claqua la portière derrière lui.

« Dépêche toi, Eudes, nous allons être en retard pour le spectacle de ma fille à l’école. »

L’automobile électrique à sustentation s’élança sans un bruit ni vibration en direction de la forêt toute proche. Le guide consulta à nouveau sa montre. Il avait un quart d’heure pour couvrir les trente kilomètres le séparant de son village et l’école de sa fille. Heureusement, Eudes était un conducteur hors pair et il savait aller vite. Tandis que les arbres défilaient au delà des limites autorisées à la fenêtre, le guide repensa à sa dernière visite. Oui, il se demandait vraiment pourquoi les humains n’avaient pas réussi à accepter les voitures autonomes.

Changement de couleurs du blog. Un peu plus de chaleur ne fera pas de mal. À venir, la possibilité de choisir entre différents thèmes de couleurs.

vendredi 26 mai 2017

Upgrade your rubies < 2.4 with rvm on Archlinux

I previously wrote about it in a toot on mastodon. As this toot was incomplete, I prefer precise it here. The solution described here was found by rando on the official archlinux forum.

Some time ago, Archlinux switch to openssl 1.1. I’ll not discuss here the good or the bad of such a move, neither will I speak about the various crash it leads to (spotify, steam…). In fact, all the broken packages were AUR packages and proprietary stuff, often statically compiled against some libs and arbitrary depending on some others. In a perfect world, we do not have such a problem for these software as we should be able to compile them as we wish. But that is not the subject.

One of the collateral victim of this switch is the ruby ecosystem. Yes, if you do the things rights (and of course you do it), you don’t use the official ruby package, but one of the various userland ruby environment tools (rvm, rbenv…). If you do, you already know that each new openssl version obliged us to recompile our rubies. That was this easy: rvm reinstall myruby

But with the openssl switch, we discover a bad situation: it is impossible to compile ruby version inferior to the 2.4 with openssl 1.1. If you have, like me, to maintain an application using ruby 2.1, 2.2 or 2.3, it became suddenly impossible to compile it.

After a long quest around the various compilation option and way to pass it to make through rvm, I finally found the solution.

First, you must have installed openssl-1.0. Because we will build our rubies against it. Yes, you can have both openssl-1.0 and openssl installed on your system. Then, all we have to do is to export a bunch of variables before doing our rvm reinstall:

$ export PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig
$ export CFLAGS="$CFLAGS -I/usr/include/openssl-1.0"
$ export LDFLAGS="$LDFLAGS -L/usr/lib/openssl-1.0 -lssl"
$ rvm reinstall ruby-2.1.2

And now you should have your ruby 2.1.2 running as before. You don’t need to pass any other environment variable before running it. You may have to reinstall some of your gem after that thought, and in most of the cases, it should be fixed with a simple bundle install in your project repository.

mardi 23 mai 2017

Travail sur le blog

Je viens de terminer un travail de longue haleine sur ce blog. Le temps me manquant particulièrement ces derniers temps, pas mal de détails avaient été laissés de côtés. Une soirée à devoir rester à l’écoute de problèmes potentiels sur un serveur, il n’y a rien de mieux pour reprendre de la feuille de style.

J’ai donc pu terminer la feuille de style d’impression des articles, qui hérite du travail réalisé par l’équipe de Dotclear sur la feuille d’impression de base.

Par ailleurs j’ai ajouté une nouvelle catégorie « Microblog » dont le but sera de recueillir mes messages court, avant de les transmettre à différents media sociaux comme Facebook, Twitter, Diaspora, Mastodon… L’idée étant de les héberger en priorité chez moi et de n’utiliser les media sociaux qu’en simple vecteurs de diffusion. Il reste malheureusement par contre le plus dur à faire : le composant qui s’occupera de reposter tout ça à droite et à gauche. Quoique pour Facebook et Twitter ça devrait être facile avec Iftt. Mais pour Diaspora et Mastodon il y aura sans doute de la bidouille à faire.

jeudi 2 février 2017

Python and gettext setup

As I’m relatively new to the python ecosystem some things, which may be obvious for many, continue to bother me a bit. The last problem I encounter, which block me for several days, was the following.

In my spare time, I’m developing carp, a python3 application to help me manage my different encFS containers. As I want to do clean stuff and learn good practice, I check my source code with flake8. And I setup internationalization too.

If I read the python documentation about the gettext module, I see that pushing the following lines at the top of my application is sufficient to have gettext working (1):

import gettext
gettext.install("carp", PATH_TO_PO_FILES)

This, is responsible to install the _ function in the global namespace. Problem is, if I do that, flake8 keeps complaining that _ is undeclared. Then stupidly I redeclare it this way (2):

import gettext
gettext.install("carp", PATH_TO_PO_FILES)
_ = gettext.gettext

This is not working at all. Even if (1) was working as intended, as soon as I redeclare _ in (2), it stops working. Thus for now I come back to the explicit declaration (3) and it works as expected:

import gettext
gettext.bindtextdomain("carp", PATH_TO_PO_FILES)
gettext.textdomain("carp")
_ = gettext.gettext

But still, I’m wondering why (2) does not work. Did I forget something? Surely, I misunderstood something, but I cannot point it out. Comments and explanations if you have some are very welcome.

(This post will be cross post to stackoverflow, I’ll update it with an answer from there if any good one comes.)

- page 1 de 38