tag:linuxfr.org,2005:/users/mildredLinuxFr.org : les contenus de Mildred2020-09-17T14:37:11+02:00/favicon.pngtag:linuxfr.org,2005:Diary/393082020-08-24T22:56:18+02:002020-08-24T22:56:18+02:00GitHub remplace la branche master par mainLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Bonjour cher journal. Aujourd'hui je prends ma plume pour te parler de ce que j'ai vu sur GitHub et qui m'a beaucoup choqué : <a href="https://github.com/github/renaming#from-master-to-main">https://github.com/github/renaming#from-master-to-main</a></p>
<blockquote>
<p>One month after the new settings are available in GitHub.com, we will set the default to main for any user or organization that hasn't chosen a default branch for new repositories. We'll do the same in GitHub Enterprise Server 2.23. You can opt out of this at any time by configuring the default branch name for new repositories to master or any other word.</p>
</blockquote>
<p>En langue de Molière, on pourrait dire :</p>
<blockquote>
<p>Passé un mois une fois que les nouvelles préférences seront disponibles, nous allons définir "main" comme branche par défaut pour toute organisation ou utilisateur n'ayant pas explicitement défini autre chose. De même pour GitHub Enterprise Server 2.23. Vous pouvez vous exclure de ce changement à n'importe quel moment en configurant la branche par défaut des nouveaux dépôts à "master" ou tout autre nom.</p>
</blockquote>
<p>Et ce ne sont pas les seuls à faire ce changement. Les master/slave redis ou OpenZFS deviennent des primary/replica, … Voir : <a href="https://www.theregister.com/2020/06/15/github_replaces_master_with_main">https://www.theregister.com/2020/06/15/github_replaces_master_with_main</a></p>
<p>A un moment, je me pose la question. Qu'est-ce qui fait que par un consensus étrange, un grand nombre de personnes décident de jeter à la poubelle une partie de notre vocabulaire ? Pourquoi d'un coup les mots "blanc", "noir", "maître", "esclave" ou encore d'autres devraient être proscrits ? Comment en est-on venu à considérer les mots eux-même comme étant bons ou mauvais ?</p>
<p>Cela me rappelle vivement 1984 de George Orwell et la <a href="https://fr.wikipedia.org/wiki/Novlangue">Novlangue</a>. Si vous ne l'avez pas lu, allez en librairie et lisez-le car il est criant d'actualité.</p>
<p>Si je me suis intéressée à l'informatique, c'est parce que l'ordinateur ne ment pas. Il est toujours juste et logique. Tu lui dit vrai, il répond vrai, et 100% du temps. C'est un domaine où la logique prime. Voir débarquer l'idéologie ainsi dans ce domaine que j'affectionne tant est une épreuve à l'image de la société que nous formons où également l'idéologue de la langue de bois est devenue incontournable. Car en vérité, cette langue de bois n'a pas pour vocation à protéger les minorités. C'est juste un instrument de pouvoir comme les autres afin de nous soumettre à une idéologie que nous n'avons pas choisie.</p>
<p>Et je vais finir sur cette question philosophique : Qui est le plus raciste ? Celui qui s'en fout de savoir qui est blanc ou qui est noir et qui juge la personne par ses actes, ou celui qui considère que le noir est lésé juste par sa couleur de peau et qu'il est nécessaire de mettre en place une discrimination afin de rétablir une justice ?</p>
<p>Personnellement, je me fous royalement de la couleur de peau des gens (pareil pour leur identité sexuelle, religion ou nationalité).</p>
<div><a href="https://linuxfr.org/users/mildred/journaux/github-remplace-la-branche-master-par-main.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/121404/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/github-remplace-la-branche-master-par-main#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/121404/comments.atomtag:linuxfr.org,2005:Diary/391192020-04-29T22:42:28+02:002020-04-30T13:43:01+02:00GNOME avec un scheduler temps réelLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Je viens de découvrir sur ce lien : <a href="https://blogs.gnome.org/shell-dev/">https://blogs.gnome.org/shell-dev/</a> (chercher "Real-Time Scheduler") que GNOME avait une fonctionnalité expérimentale permettant d'être schedulé en temps réel.</p>
<p>C'est une fonction que j'ai toujours souhaitée, ne sachant pas comment la réaliser. J'ai souvent joué avec les paramètres nice et ionice sans succès, j'ai toujours eu des freeze dans GNOME alors que d'autres interfaces basées sur Linux semblent pouvoir gérer ça plus proprement (Android…)</p>
<p>Et voilà, c'est là.</p>
<p>Je rêve d'autre chose aussi, aucun accès IO dans le fil d'exécution principal du rendu du shell, mais c'est peut être déjà le cas (et de plus en plus, avec wayland, les imperfections deviennent de plus en plus criantes). En effet, j'ai longtemps fait de la résistance et me suis traînée un disque dur rotatif en lieu et places des SSD plus modernes (mais plus onéreux également). En tant que développeur, je me dis que si je ne compte pas sur l'optimisation d'un SSD, je ferais forcément du code moins pourri en terme de performances. mais a mon avis ça passe par des langages plus proches de la machines tout en restant modernes, comme <a href="http://nim-lang.org">Nim</a> que je viens de découvrir pour remplacer les monstres comme Javascript.</p>
<p>En tout cas l'astuce pour le scheduler temps réel dans GNOME est simple :<br>
<code><br>
gsettings set org.gnome.mutter experimental-features "['rt-scheduler']"<br>
</code>Et s'assurer que gnome-shell a les permissions suffisantes :<br>
<code><br>
getcap /usr/bin/gnome-shell<br>
</code>Sinon, les lui donner :<br>
<code><br>
setcap CAP_SYS_NICE=+ep /usr/bin/gnome-shell<br>
</code>Après, je suis passée en SSD juste au même moment, donc difficile de dire, mais j'ai quand même l'impression que lorsque l'ordinateur travaille bien, il reste réactif.</p>
<div><a href="https://linuxfr.org/users/mildred/journaux/gnome-avec-un-scheduler-temps-reel.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/120240/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/gnome-avec-un-scheduler-temps-reel#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/120240/comments.atomtag:linuxfr.org,2005:Diary/355162015-01-06T16:50:16+01:002015-01-07T02:57:59+01:00Comment faire une sandbox de mon système de fichier ?Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>J'ai un petit problème, et j'aimerais votre avis sur comment le résoudre. Je vous propose également une solution que j'ai réalisée (mais avec certaines limitations). Mon cas d'utilisation est simple. Je viens de cloner un projet depuis son dépôt Git, je l'ai compilé, et j'aimerais éviter de faire un <code>make install</code> bien crade.</p>
<p>Pourquoi c'est crade ? Déjà parce que tous les projets ne fournissent pas toujours un <code>make uninstall</code>, et qu'ensuite, il n'y a aucune façon de bien vérifier que le <code>make uninstall</code> enlève bien tout. Donc je ne le fais simplement pas.</p>
<p>Ce que je fais, c'est un <code>make DESTDIR=$PWD/root install</code> qui va tout m'installer dans <code>root/usr/local/...</code>. Et j'aimerais exécuter ces fichiers. Sauf que comme l'application n'est pas relocalisable, ce n'est pas possible.</p>
<p>J'ai pensé qu'il serait possible avec OverlayFS + chroot d'arriver a mes fins. OverlayFS se chargerait de monter quelque part une image de mon système de fichier complet (<code>/</code>) ne lecture seule, et d'y inscrire un dossier <code>$PWD/root</code> en lecture-ecriture. Il ne reste plus qu'un chroot pour entrer dans de dossier, et le tour est joué.</p>
<p>C'est le rôle du projet <code>ovroot</code> (pour overlay chroot) qu'il est possible de trouver sur <a href="https://github.com/mildred/ovroot">github</a>. Mon principal problème est que OverlayFS va monter une image de ma partition racilee (<code>/</code>), mais pas de mes fichiers personnels (<code>/home</code>) ni de plein de trucs super utiles comme <code>/run</code>, <code>/proc</code>, <code>/dev</code> ou <code>/sys</code>. Cela semble être une limitation de ce que peut faire OverlayFS.</p>
<p>Et vous, connaissez-vous un projet qui puisse faire quelque chose de similaire ?</p><div><a href="https://linuxfr.org/users/mildred/journaux/comment-faire-une-sandbox-de-mon-systeme-de-fichier.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104397/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/comment-faire-une-sandbox-de-mon-systeme-de-fichier#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/104397/comments.atomtag:linuxfr.org,2005:Diary/352242014-09-05T14:54:13+02:002014-09-05T14:54:13+02:00Question ouverte : Quel futur pour le web, au delà de HTTP.Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Bonjour,</p>
<p>Je m'intéresse depuis un moment a une meilleure manière d'envisager le Web, de manière complètement décentralisée. Je m'intéresse au Web, principalement parce que c'est l'application la plus répandue d'Internet et qu'elle est devenue incontournable. Et la raison pour laquelle je m'intéresse a sa future architecture décentralisée est la même que la raison qui me pousse a chercher des architectures décentralisées aux autres protocoles.</p>
<ul>
<li>
<a href="http://bittorrent.org/">BitTorrent</a> remplace FTP</li>
<li>
<a href="http://tox.im/">Tox</a> remplace Jabber/SIP</li>
<li>
<a href="http://cjdns.info/">cjdns</a> et la cryptographie <a href="http://ed25519.cr.yp.to/">ED25519</a> remplace ICANN pour l'allocation des IP</li>
<li>l'Email est distribué, mais n'est pas complètement décentralisé. Dommage.</li>
<li>le Web reste complètement centralisé</li>
</ul><p>Une fois cet état de fait établit, considérons ce que nous pouvons souhaiter d'un nouveau protocole:</p>
<ul>
<li>Un anonymat (relatif) des visites des sites web. Au moins que ce soit un peu plus dur pour la NSA de savoir ce que vous faites.</li>
<li>Une facilité pour les auteurs de publier, sans avoir a payer cher une infrastructure</li>
<li>Un comportent face a la charge similaire a bittorrent: plus le site est populaire, plus il est rapide a charger, et moins l'infrastructure de départ est limitante. Cela permettrait vraiment d'appliquer l'auto-hébergement de resources lourdes comme les vidéos. Et de se passer ainsi de réseaux centralisateurs comme Google/Youtube.</li>
<li>Les liens à l'envers (<em>backlinks</em>). Pouvoir facilement faire une requête "quelles sont les pages qui pointent sur moi". Cela peut permettre de nouvelles applications intéressantes comme la publication de commentaires de manière décentralisée. (Le billet de blog, en JavaScript par exemple, listera les pages qui pointent sur le billet et affichera leur contenu a la fin du billet sous le titre "Commentaires")</li>
<li>Rester accessible a des clients relativement légers qui ne peuvent pas forcément partager leur ressources avec le réseau (téléphones portables).</li>
</ul><p><a href="http://blog.sogilis.com/post/96697849656/the-future-of-the-web-in-peer-to-peer">Je pose cette même question ailleurs</a> avec une tentative de réponse: BitWeb, une idée de baser les sites web sur BitTorrent. Mais cela impose tout de même quelques limites:</p>
<ul>
<li>l'anonymat n'est pas garanti. Non seulement l'auteur du site sait qui télécharge, mais n'importe qui peut savoir. Les informations disponibles sont tout de même moins précises</li>
<li>la mise a jour d'un site web requiert la mise a jour d'un torrent, ce qui n'existe pas encore a l'heure actuelle</li>
<li>Cela limite les sites web a des sites sans logique coté serveur. A moins d'introduire cette logique dans le protocole. Je ne trouve pas ça plus mal.</li>
<li>L'implémentation des <em>backlinks</em> demande aussi une extension du protocole (probablement de la DHT)</li>
</ul><p>Mais il n'y a pas que BitTorrent. Il existe aussi <a href="https://freenetproject.org/">Freenet</a>, un des premiers réseaux anonymes, si ce n'est le premier. L'anonymat est bien plus pris en compte, mais on perd lourdement en performances. Pour être un nœud du réseau, il est également nécessaire d'allouer pas mal de ressources.</p>
<p>Je remarque également que cette question intéresse beaucoup de monde, et pas mal de personnes tentent différentes approches.</p>
<p>Et vous, avez-vous réfléchi a la question ?<br>
Connaissez-vous des projets intéressants dans le domaine ?<br>
Avez-vous des idées ?</p><div><a href="https://linuxfr.org/users/mildred/journaux/question-ouverte-quel-futur-pour-le-web-au-dela-de-http.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/103208/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/question-ouverte-quel-futur-pour-le-web-au-dela-de-http#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/103208/comments.atomtag:linuxfr.org,2005:Diary/348162014-03-17T14:27:27+01:002014-03-17T16:22:06+01:00Comment réduire les attaques à notre vie privée sur le webLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>La vie privée est quelque chose de plus en plus attaqué de nos jours. Et il existe de nombreuses manières pour les sites web de savoir qui vous êtes. Quelques unes :</p>
<ul>
<li>les cookies</li>
<li>le cache de votre navigateur via l'en tête ETag</li>
<li>des informations qui vous identifie de manière assez spécifique (type mimes préférés, langue, user-agent, …)</li>
<li>des appels javascript qui peuvent également vous identifier (plugins actifs, OS, distribution, plateforme, …)</li>
<li>les plugins comme flash</li>
<li>localStorage</li>
</ul><p>Si vous avez d'autres éléments a ajouter a la liste, ça serait intéressant de répondre en commentaire.</p>
<p>Je me rappelle d'un temps où il était possible de désactiver les cookies, et les sites continuaient à fonctionner. Ou d'avoir le navigateur demander a chaque fois qu'il y avait un cookie, si on voulait l'accepter ou non. C'était le bon temps. Depuis, il est impossible d'utiliser le web sans cookies ni javascript. Les manières de contrôles les brèches à notre vie privée sont devenues inefficaces et ont été supprimées. D'autres brèches ont été ajoutées (localStorage, …?) sans moyen de contrôler leur étendue.</p>
<p>Il existe bon nombre d'extensions qui permettent de colmater ces trous :</p>
<ul>
<li><p>Whiteliste : Pour bloquer les utilisations non légitimes. Entre autre <a href="https://addons.mozilla.org/en-US/firefox/addon/noscript/">NoScript</a> ou <a href="https://addons.mozilla.org/en-US/firefox/addon/requestpolicy/">RequestPolicy</a>. J'ai longtemps utilisé ce genre d'extensions, mais c'est très contraignant, et inutilisable pour quelqu'un de non averti techniquement. Les sites web ne marchent pas, et on doit deviner sur quels domaines autoriser les cookies et les scripts pour que ça marche. Parfois on en a pas envie, car on est obligé d'autoriser un domaine trop générique. On finit par avoir une whiteliste énorme, qui ne représente pas réellement la confiance qu'on donne aux sites qu'on visite.</p></li>
<li><p>Blackliste : de type <a href="https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/">AdBlock</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/ghostery/">Ghostery</a> ou encore <a href="https://addons.mozilla.org/en-US/firefox/addon/disconnect/">Disconnect</a> (pour Firefox) que j'utilise. Moins contraignant que les extensions énoncées ci-dessus, mais qui protègent moins. Elles se basent sur des listes noires a interdire. Ça marche, mais ce n'est pas universel. Et il est possible de passer à travers les mailles du filet. Bien, j'attends mieux.</p></li>
<li><p>Sandbox : c'est la troisième solution, qui je pense est la meilleure, mais qui n'est pas beaucoup implémentée. Principalement car elle est sans doute plus invasive au niveau des navigateurs. Il ne suffit pas de bloquer ou autoriser des requêtes, mais il faut rediriger les requêtes, les transformer, pour qu'elles deviennent inoffensives. Il me semble que la navigation privée en est un exemple.</p></li>
</ul><p>C'est ce système de sandbox que je trouve le plus intéressant. Comment ça peut marcher pour des cookies ? Il suffit d'avoir pour chaque tab une cookie jar séparée. Par exemple, selon le tab dans lequel vous êtes, le cookie user_id de facebook.com aura une valeur différente. Le tab est fermé et le cookie disparaît. On retrouve d'ailleurs cette idée d'autodestruction dans l'extension <a href="https://addons.mozilla.org/en-US/firefox/addon/self-destructing-cookies/">Self-Destructing Cookies</a>, mais je ne pense pas qu'il y ait aussi la séparation entre deux tabs ouvets.</p>
<p>Connaissez-vous des projets qui vont dans ce sens ?</p>
<p>J'imagine pour ma part une solution à base de proxy filtrant qui pourrait se baser sur des données fournies par le navigateur, comme un identifiant de session attribué par onglet. Ainsi le proxy pourrait publier un cookie lors d'une requête en fonction de l'onglet pour lequel la requête a été faite. Le seul bémol se situe sur la partie exécutée au niveau du navigateur. Les cookies attribués par JavaScript, le localStorage, … Peut être que le proxy peut modifier la notion de domaine origine sur lequel le navigateur fonde sa stratégie de sandboxing, en attribuant un domaine origine différent pour chaque onglet au moment de la réponse HTTP.</p><div><a href="https://linuxfr.org/users/mildred/journaux/comment-reduire-les-attaques-a-notre-vie-privee-sur-le-web.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/101577/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/comment-reduire-les-attaques-a-notre-vie-privee-sur-le-web#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/101577/comments.atomtag:linuxfr.org,2005:Diary/343572013-09-30T09:42:26+02:002013-09-30T09:42:26+02:00Surveillance globale, une réalité ? Une puce 3G embarquée dans les processeurs intel ?Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p><strong>Intel vPro : les nouveaux intel Sandy Bridge peuvent-ils se connecter à un réseau à notre insu ?</strong></p>
<p>J'ai lu cet article qui m'a fait un peu peur : <a href="http://news.softpedia.com/news/Secret-3G-Radio-in-Every-Intel-vPro-CPU-Could-Steal-Your-Ideas-at-Any-Time-385194.shtml">Secret 3G Radio in Every Intel vPro CPU Could Steal Your Ideas at Any Time</a>. Je ne sais pas trop quoi en penser, si c'est vrai ou pas … mais ça ne m'étonnerait pas plus que ça.</p>
<p>N'oublions pas que la plupart de nos téléphones portables ont des modems qui peuvent contrôler le processeur principal, et que le firmware de ce modem est non libre et non maîtrisé. Si le même modèle arrive sur nos ordinateurs classiques, où pourrons-nous nous réfugier ? Existe-t-il des alternatives OpenHardware viables ? Comment construire une cage de Faraday chez soi ?</p>
<p>Après, il est tout à fait possible que l'article soit un peu trop alarmiste. Quand je regarde la <a href="http://www.intel.com/content/www/us/en/enterprise-security/what-is-vpro-technology-video.html">vidéo promotionelle de Intel</a>, on imagine que la puce 3G cachée n'existe pas forcément, surtout lorsqu'on lis la liste des restrictions à la fin de la vidéo. Cependant, même si ce n'est pas encore pour aujourd'hui, n'aura-t-on pas cette technologie dans une version prochaine d'un processeur quelconque ?</p>
<p>Il faut quand même rappeler que certaines de nos voitures modernes envoient nos traces GPS aux institutions via le système OnStar (voir l'article <a href="http://cartech.about.com/od/Safety/a/Gms-Onstar-Service-How-Does-It-Work.htm">GM's OnStar Service: How Does It Work?</a>), et même lorsqu'on ne souscrit pas au service. <a href="http://cartech.about.com/od/Safety/a/Gms-Onstar-Service-How-Does-It-Work_2.htm">Page 2 de l'article</a> :</p>
<blockquote>
<p>OnStar also claims that it anonymizes GPS data before selling it to third parties, but this remains a privacy concern. While the data may not be tied directly to your name or the VIN of your car or truck, GPS data is by its very nature not anonymous. GM also purportedly tracks this data even after you cancel your OnStar subscription, though it is possible to completely sever the data connection.</p>
</blockquote><div><a href="https://linuxfr.org/users/mildred/journaux/surveillance-globale-une-realite-une-puce-3g-embarquee-dans-les-processeurs-intel.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/99807/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/surveillance-globale-une-realite-une-puce-3g-embarquee-dans-les-processeurs-intel#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/99807/comments.atomtag:linuxfr.org,2005:Diary/326162012-05-23T15:24:32+02:002012-05-23T15:24:32+02:00Qui par ici est anti-conspirationnisteLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Je remarque que bon nombre de journaux de bord anti-conspirationniste se font mal noter par le système de note du site. Et je me demandais si beaucoup d'entre vous partagent mes convictions anti-conspirationnistes.</p>
<p>Êtes vous, vous aussi ouvert à un débat sur les crimes de l'OTAN, <a href="https://www.youtube.com/watch?v=A-c-6qkbxd0">le 11 septembre</a>, <a href="http://youtu.be/3uu_NdsPoHQ">la mascarade politique ou encore notre asservissement financier</a> ?</p>
<p>Pensez vous que <a href="http://www.agoravox.fr/actualites/international/article/bush-condamne-pour-crimes-de-116901">Georges W Bush devrait se rendre après avoir été reconnu coupable de crimes de guerres</a> ? Croyez-vous aussi que la Grèce devrait sortir de l'euro pour son plus grand bien ? Devrait on récuser nos politiciens face au conflit d'intérêt flagrant dans lequel ils se trouvent ?</p>
<p>Devrait on nous aussi <a href="http://le-message.org/">faire passer le message</a> ou <a href="http://gold-up.blogspot.fr/2012/05/gold-up-pose-5-questions-au-nouveau.html">poser les bonnes questions à notre nouveau président</a> ?</p>
<p>Pourquoi la police de la pensée est elle si oppressante et si insaisissable ? Pourquoi n'avons pas nous aussi le courage de parler malgré le ridicule dont on fait l'objet ?</p>
<p>Parce que face aux vérités précédentes qui sont occultées, qu'en est il d'autres sujets pour lesquels un déni violent fait rage. Qu'en est-il <a href="https://www.youtube.com/watch?v=p2YsLk94qyc">des OVNIS</a> (<a href="https://www.youtube.com/watch?v=7vyVe-6YdUk">disclosure</a>) ? Ou encore du sujet de <a href="http://pesn.com/">l'énergie libre</a> qui est encore plus secret ?</p>
<p>Et qu'en est-il des différentes personnes comme <a href="http://benjaminfulford.net/">Benjamin Fulford</a> ou <a href="http://divinecosmos.com/start-here/davids-blog">David Wilcock</a> qui disent que cette tyrannie mondiale est en train de s'effondrer grâce à l'intervention des <a href="http://tdarkcabal.blogspot.com/">white hats</a> et d'autres actions <a href="http://freedomreignsusa.blogspot.com/">d'affranchis</a> ?</p>
<p>Que penser de tout ça ?<br />
La réalité devient de moins en moins tangible.</p><div><a href="https://linuxfr.org/users/mildred/journaux/qui-par-ici-est-anti-conspirationniste.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/94224/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/qui-par-ici-est-anti-conspirationniste#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/94224/comments.atomtag:linuxfr.org,2005:Diary/315142011-08-25T15:41:46+02:002011-08-25T15:41:46+02:00Et pourquoi pas un nouveau modèle de sécurité pour le web ?Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Cela fait quelques temps que je m’interroge sur le modèle de sécurité du web actuel, basé sur la politique de même origine. J'aimerais proposer un modèle de sécurité différent, qui pourrait rendre beaucoup plus robuste les applications web. Mais il faut la coopération des navigateurs. Voici mon idée:</p>
<p>
<strong>Petit résumé de la situation</strong>
</p>
<p>A l'heure actuelle, une page web n'a pas le droit de faire une requête XmlHttpRequest sur un autre domaine. Par exemple, si example.com essaye de charger facebook.com via XmlHttpRequest, la requête échoue. A juste titre, parce que si jamais elle réussissait, example.com aurait accès aux informations privées de mon compte Facebook <em>(je sais, il n'y a pas grand chose de privé sur Facebook, mais imaginons ...)</em>.</p>
<p>Maintenant, rien n'interdit example.com d'avoir un tag <code><img></code> ou même <code><iframe></code> vers facebook.com. Couplé avec des analyses de la page en JavaScript, il est possible de récupérer des informations en provenance de Facebook. Les navigateurs essaient par tous les moyens possibles de rendre cette frontière la plus étanche possible, mais on imagine facilement qu'avec des nouvelles fonctionnalités ajoutées à JavaScript, de nouvelles failles peuvent facilement voir le jour.</p>
<p>Un exemple simple, vous avez dans la page un tag <code><img></code> vers une image sur <code>facebook.com</code>, et que la taille de cette image soit différente selon que l'utilisateur est connecté ou non à Facebook. Alors n'importe quel site, en regardant la taille de cette image, pourra savoir si l'utilisateur est connecté à Facebook ou non.</p>
<p>Et on peut imaginer d'autres exemples, et d'autres failles avec des fonctionnalités futures de JavaScript.</p>
<p>
<strong>Comment en est-on arrivé là ?</strong>
</p>
<p>Tout remonte à mon avis à l'invention des cookies. Les cookies sont des informations que le serveur peut stoker dans le navigateur et qui peuvent servir à l'identifier lorsqu'il revient sur le site. Les cookies ajoutent au protocole HTTP une notion d'état ou de session qui avait été volontairement omise à la création du protocole.</p>
<p>Pouvoir garder une session sur un site web est utile me direz-vous. Mais par contre, il n'y a pas de raison que lorsque vous regarder une page sur example.com, il n'y a aucune raison que les serveurs de publicité gardent une session. Et encore moins que la session des serveurs de publicité soit la même pour tous les sites que vous regardez.</p>
<p>Ainsi, un serveur de publicité, sais exactement quels sites vous visitez.</p>
<p>La session n'a de sens que pour la page que vous êtes en train de regarder, et de manière exceptionnelle, pour un cadre (frame) contenue dans cette même page.</p>
<p>
<strong>Une solution à cela ?</strong>
</p>
<p>La solution à laquelle je pense est très simple, mais pourrait casser quelques sites web qui utilisent le login facebook ou autre. Jusqu'à une mise à jour de ces sites ...</p>
<p>J'aimerais beaucoup que <strong>la session soit différente pour chaque onglet ou chaque fenêtre de navigateur !</strong> Je m'explique...</p>
<p>Vous regardez example.com. Ce site veut stocker un cookie, le navigateur stocke le cookie dans une nouvelle session associée à ce site et à cet onglet. Il vous l'indique de manière non intrusive dans la barre d'adresse. La page que vous visitez contient aussi une publicité du serveur adserver.net qui vous donne un cookie. De la même manière, le navigateur accepte le cookie, crée une session pour le serveur adserver.net et cet onglet précisément, et vous laisse consulter l’existence de cette session dans les propriétés de la page.</p>
<p>Vous ouvrez un nouvel onglet vers example<strong>.net</strong>, votre navigateur crée une session example.net avec le 2e onglet. example.net a aussi une publicité de adserver.net. Une nouvelle session adserver.net est créée pour le 2e onglet.</p>
<p>Vous avez donc maintenant deux sessions adserver.net. Une différente pour chaque onglet. adserver.net ne peux plus vous suivre à la trace.</p>
<p>Vous ouvrez un 3e onglet vers example.com, le premier site. Ce sera à votre navigateur de choisir si il vous crée une nouvelle session (cela doit être possible) ou si il réutilise la session du 1er onglet. Dans tous les cas, la publicité du 3e onglet vers adserver.net sera dans une 3e session séparée.</p>
<p>mais, que se passe-t-il pour les cookies qui ont une durée plus longue que la session ? Ils sont stockés, mais il appartient à l'utilisateur d'associer cette ancienne session à une nouvelle page.</p>
<p>Maintenant, le 2e onglet de example.net avais un bouton <strong>Login par Facebook</strong>. Ce contenu de facebook.com va chercher à récupérer les cookies d'une session précédente de Facebook pour vous connexter sur example.net. Pour ce faire, soit via JavaScript, soit via un en-tête HTTP, facebook va demander à votre navigateur d'ouvrir une session existante. Deux cas se présentent :</p>
<ul><li> Vous avez une session facebook existante (dans une autre fenêtre), votre navigateur vous propose de donner accès à votre session facebook au serveur example.net</li>
<li> vous n'avez pas de session facebook, une nouvelle session est créée.</li>
</ul><p>
<strong>Pour résumer</strong>
</p>
<ul><li> Tout chargement d'objet crée une nouvelle session, ou la reprise de la session du Referrer</li>
<li> L'utilisateur peut associer une session pré-existante à un objet manuellement. Cet objet est alors rechargé avec les cookies de la session précédente</li>
<li> Une page peux demander spécifiquement l'ouverture d'une session pré-existante. L'utilisateur peux alors en choisir une. Les sessions correspondant à des onglets de premier niveau sont présentées en premier, ensuite viennent les session demandées de manière spécifique, et enfin les autres sessions.</li>
<li> A l'ouverture d'une nouvelle page, le navigateur peut proposer d'ouvrir une session existante, ou de le faire par défaut, selon les préférences de l'utilisateur</li>
</ul><p>
<strong>Conclusion</strong>
</p>
<p>Quels sont vos avis sur cela ? Pensez-vous que j'ai une chance de faire passer cette vison des choses ?</p><div><a href="https://linuxfr.org/users/mildred/journaux/et-pourquoi-pas-un-nouveau-mod%C3%A8le-de-s%C3%A9curit%C3%A9-pour-le-web.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/87170/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/et-pourquoi-pas-un-nouveau-mod%C3%A8le-de-s%C3%A9curit%C3%A9-pour-le-web#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/87170/comments.atomtag:linuxfr.org,2005:Diary/311042011-05-09T15:06:13+02:002011-05-09T15:06:13+02:00Système de messagerie pour remplacer les e-mailsLicence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<p>Salut,</p>
<p>Je réfléchis en ce moment à un système de messagerie au dessus du protocole HTTP qui pourrait replacer dans une certaine mesure les e-mails. Mes buts sont:</p>
<ul><li>de permettre une implémentation simple, en particulier en utilisant XmlHttpRequest</li>
<li>de passer partout où HTTP passe</li>
<li>d'authentifier l'envoyeur</li>
</ul><p><a href="http://mildred.fr/Blog/2011/05/09/hmp_http_message_protocol/">Je propose donc un mini protocole REST</a> que je compte commencer à implémenter bientôt.</p>
<p>Ce qui m'a poussé à ça, c'est la découverte des <a href="http://fr.wikipedia.org/wiki/.onion">sites en <code>.onion</code></a>. Et la constatation qu'il n'y avait aucun système de messagerie semblable aux e-mails pour le réseau Tor.</p>
<p>Pourquoi ne pas réutiliser le SMTP: parce que la gestion en est bien assez complexe, surtout en prenant en compte les problèmes de SPAM. J'ai l'impression que les verveurs <code>.onion</code> sont bien souvent auto-hébergés, et il faut rendre l'administration du serveur la plus simple possible.</p>
<p>Je pense d'ailleurs me fournir en plug computer pour mettre tout cela en pratique.</p><div><a href="https://linuxfr.org/users/mildred/journaux/syst%C3%A8me-de-messagerie-pour-remplacer-les-e-mails.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/85986/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/syst%C3%A8me-de-messagerie-pour-remplacer-les-e-mails#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/85986/comments.atomtag:linuxfr.org,2005:Diary/302652010-10-02T12:05:19+02:002010-10-02T12:05:19+02:00Offres d'hébergement
Je suis actuellement à l'étranger, et je remarque que je ne peux pas utiliser le FTP de free.fr pour mettre à jour mon blog.<br />
<br />
Je cherche donc une offre d'hébergement décente. J'aimerais bien vous entandre sur quelle offre vous préférez et ce que vous conseillez pour quoi. Mes besoins sont minimes (html statique, si possible avec une configuration avancée du serveur web pour faire des redirections parce que les URI cools ne changent pas¹).<br />
<br />
J'ai pensé à Amazon EC2, mais je n'ai pas besoin de tous ces services.<br />
<br />
Et je pense que je vais prendre un domaine chez gandi.net<br />
<br />
¹ <a href="http://www.w3.org/Provider/Style/URI">http://www.w3.org/Provider/Style/URI</a><div><a href="https://linuxfr.org/users/mildred/journaux/offres-dh%C3%A9bergement.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/56540/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/offres-dh%C3%A9bergement#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/56540/comments.atomtag:linuxfr.org,2005:Diary/301092010-09-02T18:22:08+02:002010-09-02T18:22:08+02:00Architecture pour un MUA: Mail User Agent
Bonjour,<br />
<br />
J'ai eu l'occasion de travailler sur Tracker ces derniers temps, le nouveau moteur de recherche de bureau soutenu par GNOME et utilisant les ontologies Nopomuk et le langage de requêtes SPARQL standardisé par le W3C. Et j'ai comme idée d'utiliser cette fabuleuse plate-forme pour gérer mes e-mails à la place de Thunderbird.<br />
<br />
Pourquoi quitter Thunderbird ? Pour les millions de mails que j'ai en stock, il commence sérieusement à être lent. Et la gestion et le classement commence à être très difficile. Effet direct: je ne regarde plus mes e-mails.<br />
<br />
<strong>Comment fonctionne tracker ?</strong><br />
<br />
Tout d'abord, il y a tracker-store qui gère les accès à la base de donnée. On peut l'appeler via DBus avec des requêtes SPARQL ou pour faire plus rapidement, les bibliothèques tracker permettent d'accéder directement aux fichiers en lecture.<br />
<br />
Ensuite, il y a tracker-miner-fs qui une fois lancé va utiliser inotify pour scruter les dossiers dont il à la charge, et indexer les nouveaux fichiers. Si un fichier change, il va appeler tracker-extract pour lire les métadonnées et les insérer dans la base de données toujours avec des requêtes SPARQL.<br />
<br />
tracker-store utilise des plugins pour lire les différents types de fichiers, et tout le monde peut écrire un plugin. Dans le cadre de mon travail, j'ai écrit un début de plugin pour le format mbox et les mails au format RFC 2822.<br />
<br />
<br />
Une autre approche, utilisée par evolution, est que l'application qui gère les données va elle même se charger de mettre à jour la base de donnée tracker avec des requêtes SPARQL. L'inconvénient, si cela n'est pas couplé à l'indexation des fichiers, est que si l'application arrête de gérer certaines données (on enregistre un mail dans ~/Documents), alors on perd les informations sémantiques.<br />
<br />
<strong>Un MUA basé sur Tracker</strong><br />
<br />
J'ai pour idée de séparer mon MUA en trois parties:<br />
<br />
<strong>- un MDA</strong> qui va recevoir les emails des comptes POP ou IMAP et les stocker en local dans des fichiers indexés par Tracker.<br />
<strong>- un MUA</strong> qui va demander à Tracker la liste des emails indexés sur la machine et les présenter en fonction de plusieurs critères.<br />
<strong>- un MTA</strong> qui va envoyer les emails par SMTP<br />
<br />
Et rien n'interdirait de placer les fichiers emails dans ~/Documents/Banque/E-Mails ou encore ~/Documents/Factures/Electricité et pourtant pouvoir les retrouver dans le MUA.<br />
<br />
<strong>SPARQL</strong><br />
<br />
Je vous ai parlé de SPARQL, il s'agit d'un langage simple pour faire des requêtes dans la base de données. D'abord, comment cette base de donnée est elle structurée?<br />
<br />
La base de donnée est composée d'objets. Chaque objet à une URI qui va l'identifier et va avoir des relations avec d'autres objets ou des types de base (string, entier, date, ...). Ces relations ne sont pas au hasard mais normalisées par les ontologies Nepomuk.<br />
<br />
En pratique, un objet sera l'instance d'une classe ontologique qui peut elle même hériter d'autres classes ontologiques. Chaque classe est associée à un ensemble de propriétés qui peuvent aussi s'hériter.<br />
<br />
Dans SPARQL, les relations sont définies ainsi:<br />
<br />
<pre><br />
[sujet] [propriété1] [objet1], [objet1] ;<br />
[propriété2] [objet3], [objet4] .<br />
</pre><br />
<br />
Une propriété spéciale, <strong>a</strong> permet de donner la classe d'un objet en particulier, l'exemple suivant représente un e-mail:<br />
<br />
<pre><file:///home/toto/Mails/1> a nmo:Email ; nmo:messageSubject "Salut!" .</pre><br />
<br />
On peut ensuite introduire des inconnues en préfixant le nom de la variable inconnue par <strong>?</strong> et on peut construire des requêtes:<br />
<br />
<pre><br />
SELECT ?x nmo:messageSubject(?x)<br />
WHERE { ?x a nmo:Email . }<br />
</pre><br />
<br />
<br />
Ontologies nepomuk: <a href="http://www.semanticdesktop.org/ontologies/nmo/">http://www.semanticdesktop.org/ontologies/nmo/</a><br />
Tracker: <a href="http://projects.gnome.org/tracker/">http://projects.gnome.org/tracker/</a><br />
SPARQL Query: <a href="http://www.w3.org/TR/rdf-sparql-query/">http://www.w3.org/TR/rdf-sparql-query/</a><br />
QPARQL Update: <a href="http://www.w3.org/TR/sparql11-update/">http://www.w3.org/TR/sparql11-update/</a><div><a href="https://linuxfr.org/users/mildred/journaux/architecture-pour-un-mua-mail-user-agent.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/56386/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/architecture-pour-un-mua-mail-user-agent#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/56386/comments.atomtag:linuxfr.org,2005:Diary/300692010-08-19T12:43:58+02:002010-08-19T12:43:58+02:00Réinventer la roue est parfois plus simple que de réutiliser l'existant ...
... surtout lorsque l'existant n'est pas packagé pour ma distribution favorite: Fedora.<br />
<br />
Je m'explique: je veux créer un plugin pour le moteur de recherche de bureau Tracker qui va lire les fichiers mbox et indexer les e-mails qu'il contient. En l'occurrence ces fichiers mbox font partie d'une application intranet et je dois indexer spécialement certains en-têtes.<br />
<br />
J'aimerais utiliser tinymail qui correspond bien à mon besoin, mais il n'est pas packagé pour ma distribution. Et je me refuse à faire un sudo make install qui va certes m'installer cette bibliothèque mais ne va me proposer aucun moyen fiable et sûr de la désinstaller.<br />
<br />
Et comme faire un RPM est loin d'être aussi facile que créer un paquet ArchLinux (comprendre, ça prend plus de 5 minutes), je ne sais pas comment je vais faire. Il me reste les systèmes de paquets 0install, klik ou encore autopackage, mais je ne sais pas si c'est forcément adapté à mon besoin, et je vais encore devoir apprendre un nouveau système.<br />
<br />
Autre solution, augmenter mon Makefile de toutes les commandes nécessaires pour compiler tinymail en bibliothèque statique et le lier statiquement à mon plugin. Je ne sais pas comment on fait alors j'espère que ce sera rapide.<br />
<br />
Sinon, je réécris un mauvais parseur mbox/mime et j'espère que les e-mails que je vais parser resteront simple, en ASCII 7bits.<br />
<br />
PS: si vous avez une idée pour faciliter l'utilisation de logiciel non packagés, je suis preneur.<br />
<br />
<br />
tinymail: <a href="http://tinymail.org/">http://tinymail.org/</a><br />
tracker: <a href="http://projects.gnome.org/tracker/">http://projects.gnome.org/tracker/</a><div><a href="https://linuxfr.org/users/mildred/journaux/r%C3%A9inventer-la-roue-est-parfois-plus-simple-que-de-r%C3%A9utiliser-le.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/56347/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/r%C3%A9inventer-la-roue-est-parfois-plus-simple-que-de-r%C3%A9utiliser-le#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/56347/comments.atomtag:linuxfr.org,2005:Diary/298542010-06-18T20:48:30+02:002010-06-18T20:48:30+02:00Gtk : où comment faire fonctionner le presse-papier
Bonjour,<br />
<br />
J'ai remarqué qu'avec Gtk, il était presque impossible d'utiliser le presse papier primaire (avec le clic-milieu). Dans la vie courante, ce n'est pas un problème, mais si il s'agit d'utiliser gedit ou tout autre application focalisée principalement sur l'écriture de texte, ça devient très gênant.<br />
<br />
Ce qui m'intéresse, c'est de savoir si ça vous gêne autant que moi, ou si vous trouvez le comportement actuel parfaitement normal.<br />
<br />
Si vous avez des idées sur comment je pourrais aider à le corriger par moi même, ça m'intéresserait aussi.<br />
<br />
Le bug est décrit ici: <a href="https://bugzilla.gnome.org/show_bug.cgi?id=584236">https://bugzilla.gnome.org/show_bug.cgi?id=584236</a><br />
<br />
Vous pouvez tester :<br />
- ouvrez un fichier texte avec gedit<br />
- sélectionnez du texte<br />
- vous pouvez le coller avec le clic-milieu. Maintenant sélectionnez un autre texte<br />
- cliquez ailleurs : la selection disparaît<br />
- essayez de coller, ça ne marche pas<br />
<br />
Avec KWrite (l'éditeur de texte de KDE), on peut coller dans les deux cas. Toutes les autres applications X fonctionnent de même. C'est ce qui me fait d'ailleurs continuer à utiliser KWrite alors que je trouve maintenant gedit meilleur (et plus rapide dans un environnement GNOME).<br />
<br />
Alors, Quel est le comportement que vous préférez ?<br />
<br />
Sinon, est-ce que vous savez comment il est possible de trouver des resources pour que je puisse corriger moi même ce bug (c'est vraiment gênant). Je sais programmer, c'est mon métier, mais je manque de compréhension sur les rouages internes de Gtk.<br />
<br />
Ça m'est d'ailleurs déjà arrivé pour d'autres projets, comment vous faites, vous, quand vous voulez entrer sur un bout de code que vous ne maîtrisez pas ?<div><a href="https://linuxfr.org/users/mildred/journaux/gtk-o%C3%B9-comment-faire-fonctionner-le-presse-papier.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/56136/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/gtk-o%C3%B9-comment-faire-fonctionner-le-presse-papier#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/56136/comments.atomtag:linuxfr.org,2005:Diary/287462009-09-07T21:02:48+02:002009-09-07T21:02:48+02:00dir2rpm: créer des rpm facilement
J'avais un problème: pouvoir installer et surtout facilement désinstaller des logiciels que j'ai compilé depuis des sources dans /usr/local.<br />
<br />
Problème: certains projets (git par exemple) ne proposent pas de <code>make uninstall</code>. Comment faire ? Créer un package.<br />
<br />
Les solutions existantes:<br />
- checkinstall: je n'aime pas trop, il essaie de détecter ce qui est installer, sans garantie qu'il y arrive complètement. Et en plus il n'est plus maintenu et n'est pas dans les dépôts Fedora.<br />
- alien: pareil, pas dans les dépôts. Et il faut créer une archite tar.gz avant (enfin je suppose qu'il arrive a convertir, je n'ai pas vraiment essayé).<br />
<br />
Donc, j'ai fait un petit script zsh qui va tout faire tout seul. Il crée un fichier .spec et lance rpmbuild dessus pour créer un paquet rpm.<br />
<br />
Bien sûr, le paquet rpm n'aura aucune dépendance, sera très mal fait, minimaliste ... mais je m'en fous, je veux juste pouvoir le désinstaller à la fin, proprement. Je ne cherche pas a publier le paquet.<br />
<br />
Un petit exemple:<br />
<br />
<code>$ make prefix=/usr/local all doc info<br />
$ make prefix=/usr/local DESTDIR=root install install-doc install-html install-info</code><br />
<br />
J'ai maintenant git installé dans <code>./root/usr/local</code><br />
Je veux créer un paquet:<br />
<br />
<code>$ dir2rpm.sh root local-git-1.6.4.2<br />
...<br />
...<br />
rpmbuild -bb --rcfile root.rc --define '_topdir /usr/local/src/git-1.6.4.2/root.rpmbuild' root.spec<br />
...<br />
...<br />
<br />
Created local-git-1.6.4.2-1.i686.rpm</code><br />
<br />
Il ne reste plus qu'a l'installer:<br />
<br />
<code>$ sudo rpm -ivh local-git-1.6.4.2-1.i686.rpm<br />
Preparing... ########################################### [100%]<br />
1:local-git ########################################### [100%]</code><br />
<br />
Si ça vous intéresse, le script se trouve par là: <a href="http://gitorious.org/dir2rpm">http://gitorious.org/dir2rpm</a><br />
<br />
Si vous avez des alternatives, ça m'intéresse aussi.<br />
<br />
Mildred<div><a href="https://linuxfr.org/users/mildred/journaux/dir2rpm-cr%C3%A9er-des-rpm-facilement.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/55065/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/dir2rpm-cr%C3%A9er-des-rpm-facilement#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/55065/comments.atomtag:linuxfr.org,2005:Diary/285762009-07-22T14:51:03+02:002009-07-22T14:51:03+02:00Une alternative à make(1)
J'aimerais vous présenter un projet que je suis en train de développer, et qui est une nième alternative à la commande make que nous connaissons tous. Je l'ai nommé TBuild, le T étant là pour indiquer que j'utilise le langage <a href="http://fr.wikipedia.org/wiki/Tool_Command_Language">Tcl</a>.<br />
<br />
<strong>Alors, qu'est-ce que je reproche à make ?</strong><br />
<br />
- il est trop rudimentaire (c'est la raison de vivre d'automake)<br />
<br />
- il est trop lié à la plateforme cible (on écrit des lignes de commande shell, et le shell, ça change pas mal selon la plateforme, de même, les options des compilateurs changent, on a créé autoconf et mingw pour ça)<br />
<br />
- il ne gère pas bien les fichiers avec des noms particuliers (avec des espaces surtout). Souvent, même, les alternatives à make ont les mêmes problèmes car elles fonctionnent (comme make) par remplacement de variables dans du code shell. Si j'écris par exemple:<br />
<br />
<code>$(GENPDF) -o $@ $+</code><br />
<br />
et que le fichier cible ($@) est par exemple <code>mon joli document.pdf</code> et que mon fichier source ($+) est <code>ma jolie source.in</code>, j'ai la ligne de commande suivante (par exemple):<br />
<br />
<code>genpdf -o mon joli document.pdf ma jolie source.in</code><br />
<br />
Le shell va comprendre tout ça de travers et découper en mots selon les espaces. Si je met des guillemets dans ma commande, je pourrais m'en sortir jusqu'à ce que je rencontre un nom de fichier avec des guillemets ou une apostrophe. Pour le code source c'est rare, mais si on s'occupe de documents rédigés, ça peut arriver plus souvent.<br />
<br />
<strong>Ce qui serait bien d'avoir :</strong><br />
<br />
- la puissance d'un langage de script complet pour pouvoir entre autre faire de la détection de plateforme au démarrage et adapter ce qu'on compile à l'environnement<br />
<br />
- une syntaxe proche du shell pour ne pas avoir à se baser sur l'interprétation de notre commande par un shell. Il s'agit de pouvoir faire un fork()+exec("gcc", "-o", ...) de la commande a exécuter directement plutôt que un appel de system("gcc -o ...") qui est interpréta par le shell.<br />
<br />
Et je n'ai rien trouvé.<br />
Donc, j'ai créé mon propre système.<br />
<br />
<strong>TBuild</strong><br />
<br />
J'avais besoin d'un langage de programmation évolué proche de la syntaxe shell, le choix s'est donc naturellement porté vers <a href="http://fr.wikipedia.org/wiki/Tool_Command_Language">Tcl</a> (je n'en connais pas d'autres avec ces caractéristiques).<br />
<br />
Après, je devais me décider sur une sémantique. Comment décrire avec Tcl les étapes de compilation ? Je me suis basée sur une alternative à make que je connaissait bien: <a href="http://www.perforce.com/jam/jam.html">Jam</a>.<br />
<br />
Voir un exemple de <a href="http://gitorious.org/tbuild/tbuild/blobs/master/src/TBuildfile.tcl">TBuildfile.tcl</a><br />
<br />
Pour le moment, les fonctionnalités restent très simples, et pas encore toutes testées. Il n'est pas encore possible de construire des fichiers en parallèle (mais c'est prévu).<br />
<br />
Il est aussi prévu que ce système soit sécurisé. C'est à dire qu'il serait possible de lancer tbuild sur un projet qu'on vient de télécharger et d'être sûr qu'il ne posera pas de problèmes. Tant que gcc n'a pas de failles de sécurité bien sûr :)<br />
<br />
L'idée est que le support des langages sur fait dans des packages (par exemple <a href="http://gitorious.org/tbuild/tbuild/blobs/master/tcl.pkg/Clang.tcl">le support du langage C</a>). Ces packages seraient préinstallés, et sont a priori sécurisés (Clang ne pourra par exemple que lancer gcc sur des fichiers ne sortant pas du répertoire source). Il sera possible d'importer un package non sécurisé, mais l'utilisateur sera averti et aura la possibilité d'annuler l'opération.<br />
<br />
<br />
Voir le code: <a href="http://gitorious.org/tbuild/tbuild">http://gitorious.org/tbuild/tbuild</a><div><a href="https://linuxfr.org/users/mildred/journaux/une-alternative-%C3%A0-make1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/54899/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/mildred/journaux/une-alternative-%C3%A0-make1#comments">ouvrir dans le navigateur</a>
</p>
Mildredhttps://linuxfr.org/nodes/54899/comments.atom