Michaël a écrit 2936 commentaires

  • # BSD Owl Scripts

    Posté par  (site web personnel) . En réponse au journal Gérer ses fichiers de config avec git. Évalué à 9. Dernière modification le 17 avril 2015 à 11:09.

    Sommaire

    Comment gérez-vous les fichiers de configs répartis sur vos différentes machines ?

    Je fais ça avec BSD Owl Scripts¹ qui propose un module dédié pour les systèmes FreeBSD.

    Organisation

    Dans mon parc, j'ai quelques ordinateurs personnels sous FreeBSD ou Mac OS X et quelques systèmes virtualisés dans des jails. Chaque machine, possède un dossier contenant ses fichoers de configuration et il existe un dossier common contenant les fichiers communs à toutes les machines:

    % ls
    common    creidhne  llea      mongan    poudriere puk

    Tous ces dossiers sont dans un dépôt git qui est cloné sur chaque machine réelle – les machines virtualisées dans des jails n'ont pas besoin du clone, cf. ci-dessous.

    Fichiers communs

    Dans le fichier common on trouve par exemple un fichier host mais aussi plein de petits trucs du style configuration du dæmon npd qui met à jour l'horloge du réseau, ou bien un fichier Xresource.

    % ls common
    10-ignore-patterns.fdi hosts                  ports-supfile
    PolicyKit.conf         loader.conf            portsnap.conf
    Xmodmap                login.conf             refuse-supfile
    Xresources             make.conf              resolv.conf
    devfs.conf             motd                   src.conf
    devfs.rules            networks               stable-supfile
    doc-supfile            ntp.conf               sudoers
    fonts-local.conf       pkgtools.conf          sysctl.conf

    Fichiers par machine réelle

    Pour la machine réelle llea on a les fichiers spécifiques suivants: on y trouve la configuration de SSH, de NFS, de poudrière, de musicpd, etc.:

    % ls llea
    ls
    Makefile            exports             loader.conf.local   smartd.conf
    NOTES               ezjail.conf         make-site.conf      ssh_config
    NOTES.jail          fstab               musicpd.conf        sshd_config
    allow-restart.pkla  fstab.creidhne      periodic.conf       sysctl.conf
    device.hints        fstab.mongan        poudriere.conf      ttys
    dump_hdaa_config.ml jail.conf           rc.conf             xorg.conf

    La partie importante est le Makefile:

    ### Makefile -- The LLEA workstation
    
    BOOT=           loader.conf
    BOOT+=          loader.conf.local
    BOOT+=          device.hints
    
    BASE=           rc.conf
    BASE+=          login.conf
    BASE+=          sysctl.conf
    BASE+=          fstab
    BASE+=          fstab.creidhne
    BASE+=          fstab.mongan
    BASE+=          ttys
    BASE+=          resolv.conf
    BASE+=          ntp.conf
    BASE+=          devfs.rules
    BASE+=          sshd_config
    BASE+=          ssh_config
    BASE+=          exports
    
    BASE+=          hosts
    BASE+=          networks
    BASE+=          jail.conf
    BASE+=          periodic.conf
    
    XORG=           xorg.conf
    XORG+=          Xresources
    XORG+=          Xmodmap
    
    PORT=           sudoers
    PORT+=          ezjail.conf
    PORT+=          musicpd.conf
    PORT+=          poudriere.conf
    
    PKLA+=          allow-restart.pkla
    
    .PATH: ../common
    
    .include "conf.freebsd.mk"
    
    ### End of file `Makefile'

    Les listes BOOT, BASE, XORG, PORT et PKLA énumèrent respectivement les fichiers de configuration pour le démarrage de la machine, pour le système de base, Xorg, les ports et les règles pour le Policy Kit de FreeDektop.org.

    L'incantation magique .PATH: ../common indique à bmake que les fichiers non trouvés dans le dossier courant peuvent être cherchés dans ../common. Après ceci un petit make install donne

    % console
    make install
    ===> Switching to root credentials for target (install)
    Password:
    install -d /etc
    install -d /etc/ssh
    install -d /etc/ssh
    install -d /usr/local/etc
    install -d /usr/local/etc/polkit-1/localauthority/50-local.d
    install -d /boot
    install -d /etc/X11
    install -o root -g wheel -m 444 rc.conf /etc
    install -o root -g wheel -m 444 ../common/login.conf /etc
    install -o root -g wheel -m 444 sysctl.conf /etc
    install -o root -g wheel -m 444 fstab /etc
    install -o root -g wheel -m 444 fstab.creidhne /etc
    install -o root -g wheel -m 444 fstab.mongan /etc
    install -o root -g wheel -m 444 ttys /etc
    install -o root -g wheel -m 444 ../common/resolv.conf /etc
    install -o root -g wheel -m 444 ../common/ntp.conf /etc
    install -o root -g wheel -m 444 ../common/devfs.rules /etc
    install -o root -g wheel -m 444 sshd_config /etc/ssh
    install -o root -g wheel -m 444 ssh_config /etc/ssh
    install -o root -g wheel -m 444 exports /etc
    install -o root -g wheel -m 444 ../common/hosts /etc
    install -o root -g wheel -m 444 ../common/networks /etc
    install -o root -g wheel -m 444 jail.conf /etc
    install -o root -g wheel -m 444 periodic.conf /etc
    install -o root -g wheel -m 440 ../common/sudoers /usr/local/etc
    install -o root -g wheel -m 444 ezjail.conf /usr/local/etc
    install -o root -g wheel -m 444 musicpd.conf /usr/local/etc
    install -o root -g wheel -m 444 poudriere.conf /usr/local/etc
    install -o root -g wheel -m 444 allow-restart.pkla /usr/local/etc/polkit-1/localauthority/50-local.d
    install -o root -g wheel -m 444 ../common/loader.conf /boot
    install -o root -g wheel -m 444 loader.conf.local /boot
    install -o root -g wheel -m 444 device.hints /boot
    install -o root -g wheel -m 444 xorg.conf /etc/X11
    install -o root -g wheel -m 444 ../common/Xresources /etc/X11
    install -o root -g wheel -m 444 ../common/Xmodmap /etc/X11
    cap_mkdb /etc/login.conf
    

    On voit une authentification avec su - mais on pourrait utiliser sudo aussi. La dernière ligne montre un petit détail sympa puisque la base de donnée des logins est automatiquement reconstruite.

    Fichiers par machine virtualisée dans une jail

    C'est la même chose que pour une machine réelle, mais il faut ajouter une déclaration JAILDIR qui indique la racine du système de fichiers du système virtualisé:

    ### Makefile – The CREIDHNE Trac server
    
    JAILDIR?=   /guest/jail/creidhne
    

    Ainsi dans le système hôte, on peut installer les fichiers dans le système virtualisé:

    % make install
    ===> Switching to root credentials for target (install)
    Password:
    install -d /guest/jail/creidhne/usr/local/etc/apache24
    install -d /guest/jail/creidhne/usr/local/etc/apache24/Includes
    
    install -o www -g www -m 640 site.html /guest/jail/creidhne/var/trac/templates
    install -o www -g www -m 640 style.css /guest/jail/creidhne/var/trac/htdocs
    

    Et voilà!

    Prolongations

    Si vous êtes tentés pour avoir la même chose sur votre sytème Linux préféré n'hésitez pas à me faire part de vos besoin sur le issue tracker du projet! Même en français ou en allemand! :)


    ¹ Disponible sous Debian, Ubuntu, et bientôt MacPorts et FreeBSD. Une installation à la mano est possible et facile. Marche aussi sous Cygwin.

  • # La mise en page dépend du support

    Posté par  (site web personnel) . En réponse au message choix logiciel et imprimeur livre photo. Évalué à 4.

    Quel format pérenne adopter? Les éditeurs ont tous des livres de dimensions différentes. J'imagine que passer d’un format carré 22*22 à 30*30 est assez simple mais que passer d’un format carré à un format paysage nécessite de refaire complétement la mise en page.

    Ma réponse sur ce point est: aucun! Je ne suis pas non plus d'accord avec ton affirmation selon laquelle passer d'un format carré à un autre serait simple: il n'y a aucun raisin que tu veuilles changer la taille de tes photos et un agrandissement n'est pas forcément la solution qu'il faut privilégier!

    La mise en page dépend du support, c'est comme ça, c'est la vie!

    Tu peux imaginer écrire un algorithme qui fait cette mise en page pour toi, mais ça c'est une autre façon de résoudre le problème en associant une mise en page à chaque support possible.

  • [^] # Re: ports ?

    Posté par  (site web personnel) . En réponse au journal Le Dell xps 13 édition développeur est enfin là. Évalué à 2.

    La transmission locale par cable se meurt, n'espérez pas avoir une évolution la dessus et faites vous à l'idée que vous prendrez votre prochain portable avec un petit cable USB (type A ou C) vers RJ45.

    Les écrans modernes ont un hub USB, ce qui permet de brancher le réseau et le clavier sur l'écran et de ne brancher que deux câbles sur l'ordinateur portable (le hub USB et l'écran) au lieu de trois si on utilise du RJ45 (le clavier USB, l'écran et le RJ45), donc même si on utilise un réseau filaire, cela un intérêt de le faire passer dans l'USB!

  • [^] # Re: GEDCOM

    Posté par  (site web personnel) . En réponse à la dépêche Ancestris à Poitiers au congrès de la Fédération Française de Généalogie d'octobre 2015. Évalué à 2. Dernière modification le 09 avril 2015 à 15:01.

    Il est vrai que l'on devrait parler de grammaire et non de norme.

    Oui alors, ce n'est ni une norme ni une grammaire: le document que j'avais lu est très flou: deux codeurs travaillant indéopendemment ont de fortes chances d'écrire des implémentations incompatibles.

    Si tout le monde fait une connerie cela ne devient pas pour autant une vérité.

    En effet, mais il reste à prouver que c'est une connerie.

  • [^] # Re: GEDCOM

    Posté par  (site web personnel) . En réponse à la dépêche Ancestris à Poitiers au congrès de la Fédération Française de Généalogie d'octobre 2015. Évalué à 3.

    A ce jour, je serai curieux de comparer ohmigene et ton logiciel, côté respect GEDCOM.

    Ce n'est pas trop mon domaine alors ma parole ne pèse pas beaucoup, mais je m'y étais vaguement intéressé pour aider mon oncle qui prépare des bases de données généalogiques non personnelles (ahnenreich.de) et la norme GEDCOM est tout sauf une norme. Ce document n'a visiblement pas été écrit par des professionnels et c'est très difficile d'écrire un parser potable… À cause de cela et à cause de toutes ces limitations, quasiment aucun soft n'utilise GEDCOM tel que défini par la “norme” et utilise des extensions. Résultat, quand je lis qu'une implémentation respecte GEDCOM:

    1. Je me demande ce que cela veut dire, puisque le document qui définit GEDCOM est hyper-ambigü!
    2. Je me demande à quoi ça sert, vu qu'apparemment ce n'est compatible avec personne.
  • [^] # Re: Projet très intéressant

    Posté par  (site web personnel) . En réponse au journal Présentation du projet (film d'animation) ZeMarmot et appel à musiciens. Évalué à 2.

    à titre personnel mais je regrette sincèrement la domination de la 3D qui a pour moi bien moins de charme que la 2D).

    Je le regrette aussi d'autant que le fait de pouvoir choisir les points de vue librement comme le permet la 3D ne rend pas pour autant ces points de vue intéressants! Une des premières scènes d'Akira est une course-poursuite entre deux gangs de motards. C'est réalisé avec beaucoup d'imagination et d'intelligence et laisse loin derrière beaucoup de films 3D – qui semblent préférer se concentrer sur les scènes de cataclysme.

  • # Je n'ai pas de smartphone!

    Posté par  (site web personnel) . En réponse au sondage Les notifications des applications sur mon téléphone. Évalué à 10.

    J'ai choisi Obi-Wan Kenobi car je n'ai pas de smartphone!

  • # Louanges

    Posté par  (site web personnel) . En réponse au journal Don de vieux GLMF. Évalué à 4. Dernière modification le 31 mars 2015 à 20:24.

    Avant de jeter tout ça je me suis dis que j'allais les proposer ici ou ils pourraient peut-être faire un ou des heureux.

    Je ne suis pas intéressé mais je salue ton geste, très responsable et très sympa!

  • [^] # Re: mince ou sont passé les images?

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 1.

    Trop gros, passera pas !

    Vraiment?

  • [^] # Re: mince ou sont passé les images?

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 6.

    Parce que dans ce cas précis, c'est explicitement la femme qui est dégradée.

    En quoi ces images sont-elles dégradantes? Est-ce que l'image suivante est dégradante pour l'homme qu'on voit au premier plan?

    Chippendale

    Les jeux de séduction ou les représentations symboliques de l'érotisme font partie de notre société. Je suis un homme et si je prends du plaisir à danser avec une femme ou à regarder un corps de femme, cela mer regarde, moi et mes goûts, et cela n'a rien à voir avec du sexisme, enfin!

  • [^] # Re: mince ou sont passé les images?

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 5.

    Sincèrement, analyser les fonds d'écran pour déterminer si une communauté et une personne est sexiste ou pas, c'est vraiment trop léger.

    Ce que révèle ces fonds d'écrans c'est que parmi les utilisateurs de tunyx, quelques personnes s'intéressent aux voitures de sport et aux nenettes à oualpe, Conclure que ces personnes ne peuvent qu'être des hommes, ça c'est du vrai sexisme indiscutable. Et assortir son commentaire d'une tétrachiée d'articles sur le féminisme, c'est le comble de la cuistrerie.

  • [^] # Re: .

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 3.

    C'est vrai que tout l'objet de la distribution c'est cet alias.

    C'est un des points mis en avant par l'auteur du journal, non?

  • [^] # Re: distrib 1 - journal 0

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 3.

    Si je résume, je peux « épier » tous les fichiers (y compris les ressources statiques genre icônes, *.jpg, *.mp3) que j'installe avec un classique « make install » ? Où cela ne marche que pour les libs utilisées à la compilation ?

    Non seulement cela, mais aussi tous les fichiers lus pendant la compilation du programme, ce qui permet de détecter les dépendances puisqu'on sait à quel paquet appartient chaque fichier.

    En fait je trouverais presque ça malsain de tout faire automatiquement.

    Il y a beaucoup d'autres exemples qui ne peuvent être détectées automatiquement que grâce à des tests ayant une assez grande superficie, ce sont toutes les dépendances de type runtime. Au hasard:

    • Bibliothèques pour un langage de script
    • Macros TeX, METAPOST, M4
    • Programmes auxiliares utilisés dans un appel system ou similaire.

    Bref, la recherche des bibliothèques liées ne marche raisonnablement bien que pour les programmes compilés en natif – mais rate de toute façon toutes les références aux programmes externes.

  • [^] # Re: distrib 1 - journal 0

    Posté par  (site web personnel) . En réponse au journal NuTyX, une distribution atypique. Évalué à 5.

    Oui, plus précisément c'est une fonction de cards qui analyse la liste des paquets installées pour y trouver la liste des librairiers liées.

    Deux idées qui peuvent être intéressantes pour développer ça.

    Mon programme make préféré, souvent bmake sous Linux a un mode dit méta qui lui permet de détecter automatiquement les dépendances dans le travail de compilation. Sous BSD un processus peut surveiller les I/O de ses fils grâce à filemon(4) ce qui permet cette détection. On peut appliquer la même stratégie à la préparation des paquets: en épiant les I/O des processus fils, on peut automatiquement détecter la liste des dépendances de production.

    La détection complète des dépendances d’exécution me semble beaucoup plus délicate à réaliser puisque l'examen des bibliothèques liées ne détecte que… les bibliothèques, mais il y a beaucoup d'autres exemples de dépendances.

    Une deuxième suggestion est de regarder du côté de opam le gestionnaire de paquets de OCaml qui est censé inclure plein de choses intelligentes sorties de la recherche sur la gestion des dépendances de paquets — je ne m'en sers que de façon superficielle mais j'en suis très content!

  • [^] # Re: Un amoureux du Bourne Shell

    Posté par  (site web personnel) . En réponse au journal Assistant de projet logiciel. Évalué à 3. Dernière modification le 23 mars 2015 à 13:56.

    Tout d'abord, merci de présenter/partager ton projet.

    Et en plus maintenant il y a un paquet Debian (non officiel) qu'on peut télécharger sur la page Releases du projet.

    https://github.com/michipili/anvil/releases/tag/v0.3.0

  • [^] # Re: Handbrake ?

    Posté par  (site web personnel) . En réponse au message Script pour encoder vidéos GoPRO HERO4. Évalué à 4.

    J'aime aussi beaucoup Handbrake pour les raisons que tu évoques. Il utilise ffmpeg pour le MP4, et ffmpeg est lui aussi très facile à utiliser!

  • [^] # Re: Licence DBAD

    Posté par  (site web personnel) . En réponse au journal Licence open source "Don't Be a Jerk". Évalué à 3.

    Genre FUDer sur la GPL "leur usage international est problématique"?

    Autant que je sache on s'y connaît tous les deux autant en droit l'un que l'autre: nib, zéro, que dalle. Conclusion: nous n'avons pas d'autre choix que de nous fier aux experts compétents.

    Oui, et donc on risque quoi en pratique? quelqu'un a déjà pu récupérer du fric en annulant cette clause devant un tribunal?

    Quelqu'un a déjà essayé? Le contrat n'est utile qu'en cas de litige. Tant qu'il n'y a pas de litige, on ne peut pas voir de différence.

  • [^] # Re: non libre :/

    Posté par  (site web personnel) . En réponse au journal Licence open source "Don't Be a Jerk". Évalué à 2. Dernière modification le 20 mars 2015 à 07:36.

    Un avocat ou juriste ajouterait qu'elle n'inclut pas d'exclusion de responsabilité de celui l'utilisant, ce qui serait recommandé même si IANAL

    % jot -b '+1' 1000000 | xargs printf '%s '
  • [^] # Re: Pas sûr qu'elle tienne devant un tribunal

    Posté par  (site web personnel) . En réponse au journal Licence open source "Don't Be a Jerk". Évalué à 3.

    Honnêtement, elle me semble franchement casse-gueule.

    1. Elle ne cite pas la juridiction compétente, donc au regard du droit international, toute juridiction peut se déclarer compétente.

    2. Au regard du droit français, les clauses de non responsabilité sont nulles, et le code général de la consommation s'applique.

    C'est drôle (un peu) mais c'est tout.

  • [^] # Re: Licence DBAD

    Posté par  (site web personnel) . En réponse au journal Licence open source "Don't Be a Jerk". Évalué à 5.

    Et surtout ça voudrait dire qu'il y a une palanquée de logiciels libres qui ne sont pas libres hors pays anglophone.

    La plupart des logiciels libres sont diffusés avec une licence adaptée au droit étatsunien, mais leur usage international est problématique.

    Au regard du droit français, les clauses de non garantie sont nulles et lorsqu'une licence ne décrit pas les juridictions compétentes, je peux choisir le tribunal – et donc le système juridique – où porter ma plainte. Je ne suis pas juriste, je lis juste ce que les experts juridiques de l'INRIA, du CEA et du CNRS ont conclu lorsqu'ils ont décidé d'écrire les textes de licences CeCILL-B.

    Un jour ou l'autre il faut prendre conscience que le droit c'est compliqué et que lorsqu'on n'y connaît rien on mène systématiquement des discussions de bistrot.

  • [^] # Re: pourquoi?

    Posté par  (site web personnel) . En réponse au journal Assistant de projet logiciel. Évalué à 3.

    C'est utile quand on importe ou convertit un projet par exemple. J'ai écrit ces filtres lorsque j'ai du convertir des projets CVS et SVN en git, et j'ai profité de l'occasion pour nettoyer les fichiers. Lorsqu'on libère un projet fermé, le filtre sed permet de nettoyer le code, par exemple pour éliminer ou corriger certaines parties.

    Pour un rep en production, cela effectivement peu d'intérêt.

  • [^] # Re: Avantage par rapport à Latexmk ?

    Posté par  (site web personnel) . En réponse au journal Assistant de projet logiciel. Évalué à 3.

    Je suis fan. :D

  • [^] # Re: Parce que les meilleures blagues sont sans rapport avec systemd

    Posté par  (site web personnel) . En réponse au journal Rions un peu avec apple. Évalué à 4.

    J'ai pas compris le rapport avec systemd.

    J'en déduis que tu n'as pas d'AppleWatch – où que tu ignores tout de son fonctionnement!

  • [^] # Re: Un amoureux du Bourne Shell

    Posté par  (site web personnel) . En réponse au journal Assistant de projet logiciel. Évalué à 3.

    Ah oui, c'est CeCILL-B, c'est écrit au début des fichiers mais j'ai oublié de le mettre à la place appropriée!

  • [^] # Re: Un amoureux du Bourne Shell

    Posté par  (site web personnel) . En réponse au journal Assistant de projet logiciel. Évalué à 10.

    Pourquoi s'infliger le Bourne Shell alors qu'il existe pléthore de langages plus adéquates pour des projets de scripts « complexes » (Python, Ruby, Lua, name_your_favorite_langage,…) ? C'est le syndrome de Stockholm ?

    Ce n'est pas du tout le syndrome de Stockholm! Dans mon utilisation quotidienne des systèmes Unix, le shell est mon outil de travail. Ainsi, lorsque j'ai accompli une tâche en saisissant des commandes dans une session shell il est enfantin de transformer cette suite de commandes en procédure shell: il suffit de la recopier dans un fichier! On ne peut pas faire plus simple.

    De plus, le shell a aussi l'avantage qu'il est la lingua franca d'Unix, sidonc je veux utiliser git dans une procédure shell je n'ai pas besoin de recourir à des techniques d'envoûtement vaudou pour écrire des bindings bizarre pour faire dialoguer git avec mon langage préf́éré.

    Si j'utilise le shell pour décrire mes programmes, je peux aussi utiliser le langage de mon choix pour écrire mes sous-routines. Un petit programme C? Du OCaml, tout le monde peut se parler gr̀àce au shell!

    Mais quand je vois le niveau de soin apporté à ce projet (oui je dis que d'habitude les projets Shell c'est crade…)

    Merci, je suis content que ça se voie! :) Maintenant, lorsque tu verras des scripts shell tout crades tu pourras râler en montrant des exemples concrêts de code bien organisé!