C'est un produit dérivé de cette série de journaux. Il faut simplement intégrer le produit de ces développements comme le vecteur d'informations à la racine de la pensée LinuxFR. C'est une pensée complexe, mais très réelle, et pas imaginaire.
Bon, je la reproduis ici quand même, je ne sais pas trop si j'ai le droit, mais c'est un magazine municipale à vocation d'information publique :
Mix’Arts : la sécurité des personnes avant tout
Lors du Conseil Municipal du 29 janvier dernier, Archipel a combattu la fermeture des locaux de Mix’Art Myrys, collectif culturel, longtemps demeuré dans l’illégalité d’occupations illicites de bâtiments. La réalité est pourtant simple : l’utilisation de ses locaux actuels est dangereuse (stockage de produits inflammables, absence d’alarme incendie, absence de désenfumage du bâtiment, absence de vérification des installations technique…). Ce lieu mettait donc en danger les occupants et les visiteurs. L’Équipe municipale, pénalement responsable en cas d’incident, a pris ses responsabilités : elle l’a fait fermer au public. Or, Mix’Art Myrys a refusé les multiples propositions de rénovation formulées par la collectivité, prétendument « insuffisantes » … mais représentant 3 millions d’argent public ! Les critiques d’« Archipel », préférant fermer les yeux sur le danger de l’occupation actuelle, posent question. Elles interrogent sur l’existence d’un calcul politique commun à nos opposants et aux dirigeants de Mix’Art Myrys. En ce qui nous concerne, nous n’entendons pas politiser ce dossier et, jamais, nous ne transigerons avec la sécurité des Toulousains, qu’ils soient artistes ou non. Jamais !
Les failles XSS, c'est important aussi. Directory traversal, c'est pas joli non plus.
Je ne blâme pas Django, je trouve qu'ils ont un tableau plutôt léger même. Mais c'est du python, et c'est possible.
Le C et le C++ permettent des failles de type dépassement de mémoire, qui sont méchantes. Mais les langages interprétés contiennent leurs lots de failles, qui ne font pas vraiment partie du langage en lui-même, mais des droits avec lesquels ils s'exécutent sur la machine.
Pour moi les problémes de sécurité sont uniquement avec des bibliothèques écritent en langage non safe (C/C++). Ce n'est pas le cas ?
Bien sûr, ce n'est pas le cas. Il y a plein de bibliothèques écrites en Python qui ont des problèmes de sécurité. Par exemple, un backend d'un site web écrit en Django, qui n'échappe pas correctement des entrées utilisateurs, menant à une injection SQL.
Il faut mettre à jour la bibliothèque. Et pas attendre que les gens qui en dépendent se réveillent.
C'est à peu près ça. C'était un choix pertinent, il y a 10 ans. Aujourd'hui, la plateforme Web a gagné en fonctionnalités, et performances, et pour beaucoup de cas, c'est le meilleur choix pour l'utilisateur.
Pour mon expérience, le dernier article (sur la distribution) était le plus intéressant.
Notamment :
Distributing applications on a couple of computers inside the same company is not an issue. A lot of products are available for automating the pushing of files onto computers. Issues might start to appear when you need to coordinate the deployment across different physical sites.
Je ne suis pas tout à fait d'accord. Je travaille dans une petite équipe, plutôt indépendante, faisant partie d'un gros groupe, avec sa politique de distribution de logiciels. Nous, on fait les nôtres, sur le côté. C'est volontaire, et assumé, on est un peu électrons libres transversaux, pour mettre de l'huile dans les rouages quand il faut. Et bien sûr, il n'en faut pas trop non plus.
Bref, donc on doit distribuer des logiciels. Et s'intégrer à « l'AppStore » du groupe, c'est difficile, voir pas désirable du tout, car nos logiciels ne doivent pas être installés par tout le monde.
Pendant 10 ans (!), j'ai développé et maintenu deux applications Java/Swing, déployé avec JavaWebStart. J'ai trouvé plein de limites à Swing, et j'ai dû hacker des composants (faire de la pseudo-réflexivité dessus) pour arriver à mes fins. Par exemple, pour que le menu déroulant d'une combobox ne soit pas limité en largeur à la taille de la combobox, mais affiche le maximum d'informations :
importjava.awt.BorderLayout;importjava.awt.Component;importjava.awt.Dimension;importjava.awt.Insets;importjavax.swing.JComboBox;importjavax.swing.JList;importjavax.swing.ListModel;importjavax.swing.event.PopupMenuEvent;importjavax.swing.event.PopupMenuListener;importjavax.swing.plaf.basic.BasicComboPopup;/** * This is a workaround for the combobox popup, whose width is equal to the component width. * To display very large content, it's really annoying, so this listener resize the popup if necessary. */publicclassComboBoxPopupResizerListenerimplementsPopupMenuListener{privatefinalJComboBox<?>comboBox;/** * Build the listener. * @param comboBox The combobox whose popup will be resized. */publicComboBoxPopupResizerListener(JComboBox<?>comboBox){this.comboBox=comboBox;}@Override@SuppressWarnings("unchecked")publicvoidpopupMenuWillBecomeVisible(PopupMenuEvente){// Copy paste from http://forum.java.sun.com/thread.jspa?threadID=522572&messageID=2501520BasicComboPopuppopup=(BasicComboPopup)this.comboBox.getUI().getAccessibleChild(this.comboBox,0);//Popupif(popup==null){return;}intpreferredWidth=(int)Math.max(this.comboBox.getPreferredSize().getWidth(),this.comboBox.getWidth());Componentcomp=popup.getComponent(0);//JScrollPane// Compute height by rendering the first elementJList<Object>popupList=popup.getList();ListModel<Object>popupListModel=popupList.getModel();intmodelSize=popupListModel.getSize();intheight;if(modelSize>0){// Fetch the insets to add to the rendered componentInsetsinsets=popup.getInsets();modelSize=Math.min(modelSize,this.comboBox.getMaximumRowCount());height=(int)popupList.getCellRenderer().getListCellRendererComponent(popupList,popupListModel.getElementAt(0),0,false,false).getPreferredSize().getHeight()*modelSize+insets.bottom+insets.top;}else{height=(int)this.comboBox.getPreferredSize().getHeight();}popup.setPreferredSize(newDimension(preferredWidth,height));popup.setLayout(newBorderLayout());popup.add(comp,BorderLayout.CENTER);}@OverridepublicvoidpopupMenuWillBecomeInvisible(PopupMenuEvente){}@OverridepublicvoidpopupMenuCanceled(PopupMenuEvente){}}
C'est beau comme un camion avec des roues de vélo, mais je m'en suis servi partout.
Ensuite JavaWebStart, c'est pas si beau et tout joli. C'est plein de bugs chiants, comme « tiens, je crois que le cache est pas à jour, mais faut lancer l'application deux fois pour que ça force la mise-à-jour, lalala ». On a dû plusieurs fois demander aux utilisateurs de supprimer le cache et de recommencer.
La signature de l'application est compliquée aussi, mais ça, évidemment, c'est le problème de toute application. Le Web résout ça, en délégant cette partie au serveur, donc à l'administrateur système, et pas au développeur.
Enfin, la sécurité des communications. En Swing, ben… on fait ce qu'on veut. C'est bien, mais il faut aussi réinventer la roue : transmission des informations via TLS, authentification, etc. En Web, c'est déjà dedans. Alors évidemment, quand on a besoin du TCP brut, ou pire, de l'UDP, c'est plus dur.
Donc on est parti sur une réécriture en Web. Parce que ça marche, c'est « mature », ça se distribue facilement. Bien sûr, c'est pas tout rose. La multitude de frameworks est décourageante. La vitesse de dépréciation aussi. Mon application Swing, elle marche depuis 10 ans, même sur des ordinateurs récents. C'est solide, ça tient la route, ça se casse pas tout seul.
Il y a beaucoup d'aspect des applications Web que je n'aime pas. C'est bloaté à mort, c'est souvent un gâchis de ressources monumentales. Pour beaucoup de choses, je préfère une application de bureau. Mais il ne faut pas renier pour autant les fabuleuses avancées de cette plateforme : le Web remplit beaucoup de cas d'utilisation aujourd'hui, pour la plus grande peine des utilisateurs de VisualBasic.
Les contraintes, oui. Par exemple, définir que marcel a besoin de libfoo >=2, <3, !2.2.1 ça peut se concevoir. Évidemment, ça ne marche que si libfoo utilise le système de version sémantique. Sinon, c'est la foire d'empoigne…
In [4]: some_list = 'setanéstebnsetanustebnésatenastubnestpnesanuastnbtsnastbnstanstbnsteanutsenbstanstbnstaà' * 1000
In [7]: %%timeit
...:
...: list_a = []
...: list_b = []
...:
...: for s in some_list:
...: if s[0] == 'a':
...: list_a.append(s)
...: elif s[0] == 'b':
...: list_b.append(s)
...:
...:
6.08 ms ± 142 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [8]: %%timeit
...:
...: list_a = [s for s in some_list if s.startswith('a')]
...: list_b = [s for s in some_list if s.startswith('b')]
...:
...:
11.8 ms ± 159 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [10]: def starts_with_a(s):
...: return s[0] == 'a'
...:
...: def starts_with_b(s):
...: return s[0] == 'b'
...:
In [11]: %%timeit
...:
...: list_a = list(filter(starts_with_a, some_list))
...: list_b = list(filter(starts_with_b, some_list))
...:
...:
10.4 ms ± 187 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [12]: %%timeit
...: generator_a = (s for s in some_list if s.startswith('a'))
...: generator_b = (s for s in some_list if s.startswith('b'))
...:
...:
401 ns ± 1.17 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [13]: %%timeit
...: generator_a = (s for s in some_list if s.startswith('a'))
...: generator_b = (s for s in some_list if s.startswith('b'))
...:
...: len(list(generator_a))
...: len(list(generator_b))
...:
...:
12 ms ± 113 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [14]: len(some_list)
Out[14]: 88000
Sur une telle liste, moyennement grosse, les générateurs ont l'air d'aller légèrement plus vite. C'était un test rapide et sûrement pourrave.
Pour résumer (traduction libre):
- Utiliser les scopes
- Utiliser un fichier .npmrc à la racine du projet pour paramétrer les dépôts.
- Faites attention lors de l'utilisation d'un proxy.
- Soyez attentifs aux échecs de construction de projet.
Attention quand même à ne pas basculer dans la situation inverse.
La CI/CD existe et marche très bien sans ces gestionnaires de paquets drogués à la version latest.
Dans ma boîte, j'ai un Jenkins qui recompile tous nos logiciels, qu'ils soient en C++ ou en Python. Et on a même plusieurs environnements, SuSE 10, SuSE 11, CentOS 7, Ubuntu 20.04, avec des compilateurs différents (GCC de 7 à 9), des versions de boost différents (pour le C++), etc.
Mais TOUT est hors-ligne. C'est le développeur qui choisit la version, qui la regarde, et qui la soumet à la plateforme de CI/CD (souvent par le biais d'un dépôt Git). C'est pour moi hors de question qu'une plateforme de CI/CD aille chercher une version d'une bibliothèque sur Internet à poil.
Pour Yarn, il existe par exemple yarn install --offline --non-interactive --frozen-lockfile, et dans le lockfile, il y a les condensats des paquets. C'est sûr, le développeur ne peut pas tout vérifier, mais au moins, la plateforme de CI/CD ne fait rien en cachette.
Avant, yavait pas de CI/CD. Mais un logiciel comme Jenkins, forké en 2011 à partir de Hudson créé en 2005. Et avant ça, il existait d'autres solutions. npm est sorti en 2010. Il n'y a donc aucune excuse pour lui, d'un point de vue de la sécurité. Pareil pour pip, 2011, aucune excuse. RubyGems date de 2003, donc c'est plus excusable.
Je pense que c'est la traduction de l'acronyme anglais TIL (Today I learned) qui vient de reddit: Aujourd'hui J'Apprends. Ou bien, Aujourd'hui, J'Ai Appris. Je ne sais pas trop.
Non, c'est vraiment dommage la télémétrie. Et si je me souviens bien, y a pas ça dans VLC. Et retirer la télémétrie dans Chrome est très très difficile, Microsoft a passé plusieurs mois à le faire.
Enfin, il existe VSCodium, comme mentionné dans l'article, qui lui, est libre, contrairement à VSCode. La télémétrie est un moyen de surveillance. C'est léger, mais c'en est un.
Je développe une application Web, dont une partie du backend est en Javascript, sur Node.js. Je veux déployer ça avec des RPMs, parce que je suis un vieux croûtons, et parce que mes machines n'ont pas accès à Internet. Elles sont 200 et plus, parfois sur des lignes ADSL.
Voilà la recommendation qu'on m'a faite : https://github.com/kelektiv/node.bcrypt.js/issues/573#issuecomment-771660008
@Glandos If your deployment is an RPM, just copy the node_modules folder verbatim.
Pour tous ceux qui ont déjà fait ça, un node_modules/, c'est 500Mo. On me demande explicitement de faire un transfert de 500Mo (en xz, 30Mo) juste parce que tout le monde a une bande passante grosse comme… comme… enfin, très grosse ?
Allons bon.
(Au final, j'ai fait du webpack, mon RPM fait 2Mo, il est autonome ;) )
UPDATE: At 2020-01-30 23:17 UTC we received a call from a VP at Google who apologised for the bad communication from Google and explained the situation, which related to some extremely abusive content which was accessible on the default matrix.org homeserver. Our Trust and Safety team had already identified and acted on this content to enforce the server's terms of use, and so we've explained how Element and Matrix works, established a channel for communication over any future moderation concerns, and expect the app to be restored shortly.
UPDATE: The app is restored as of 2020-01-31 00:30 UTC. Huge thanks to everyone for your patience and support while we sorted this out, and to the wider Element team who spent their Saturday on this. Thanks also to Google for being transparent and apologetic and the rapid resolution once we'd established contact.
En effet, c'est revenu. Quand je vois ce qu'il a été nécessaire de faire, je me dis que quand même, ils ont de la chance d'avoir une boîte, des gens motivés et compétents sur la technologie. Je ne suis pas sûr que Google mette en place un « canal de communication pour toutes les affaires futures à propos de la modération ».
Genre… j'ai même pas essayé. Mais je crois que progressive et optimize sont par défaut. Le reste, j'ai jamais testé, mais ça vaut le coup. Bon, évidemment, là, j'ai pas le temps. Je vais devoir mettre ton commentaire très instructif de côté :)
[^] # Re: Factoriser
Posté par Glandos . En réponse au journal Schnorr aurait-il cassé RSA ?. Évalué à 3.
C'est un produit dérivé de cette série de journaux. Il faut simplement intégrer le produit de ces développements comme le vecteur d'informations à la racine de la pensée LinuxFR. C'est une pensée complexe, mais très réelle, et pas imaginaire.
[^] # Re: Breveté aux USA, breveté partout ?
Posté par Glandos . En réponse au journal OCB serait-il toujours protégé par des brevets ?. Évalué à 9.
Et en plus, j'arrive toujours pas à comprendre comment on peut valider le fait de poser un brevet sur une formule mathématique.
Est-ce qu'on a le droit de me demander des royalties parce que j'exécute la suite de Fibonacci sur ma machine ?
Bon, évidemment, le débat n'est jamais fermé, mais ce journal parle justement du fait que ça pourrait être mieux pour OCB :)
[^] # Re: Factoriser
Posté par Glandos . En réponse au journal Schnorr aurait-il cassé RSA ?. Évalué à 8.
Tu es le premier à avoir fait la remarque, malgré le grand nombre de lecteurs. Je me demande si c'est un facteur aggravant.
# Réponse de la majorité municipale
Posté par Glandos . En réponse au journal L'espace artistique Mixart-Myrys et le hackerspace Tetalab en danger. Évalué à 3.
Elle est disponible sur http://documents.toulouse.fr/AToulouse/atoulouse_mars2021/version_accessible/expression-politique/groupe-aimer-toulouse.html
Bon, je la reproduis ici quand même, je ne sais pas trop si j'ai le droit, mais c'est un magazine municipale à vocation d'information publique :
[^] # Re: Quel est le problème ?
Posté par Glandos . En réponse au lien Le cauchemar de l'empaquetage: côté distrib. Évalué à 3.
https://www.djangoproject.com/weblog/2020/feb/03/security-releases/ Donc oui, c'est possible.
Ensuite : https://www.cvedetails.com/product/18211/Djangoproject-Django.html?vendor_id=10199
Les failles XSS, c'est important aussi. Directory traversal, c'est pas joli non plus.
Je ne blâme pas Django, je trouve qu'ils ont un tableau plutôt léger même. Mais c'est du python, et c'est possible.
Le C et le C++ permettent des failles de type dépassement de mémoire, qui sont méchantes. Mais les langages interprétés contiennent leurs lots de failles, qui ne font pas vraiment partie du langage en lui-même, mais des droits avec lesquels ils s'exécutent sur la machine.
[^] # Re: Quel est le problème ?
Posté par Glandos . En réponse au lien Le cauchemar de l'empaquetage: côté distrib. Évalué à 3.
Bien sûr, ce n'est pas le cas. Il y a plein de bibliothèques écrites en Python qui ont des problèmes de sécurité. Par exemple, un backend d'un site web écrit en Django, qui n'échappe pas correctement des entrées utilisateurs, menant à une injection SQL.
Il faut mettre à jour la bibliothèque. Et pas attendre que les gens qui en dépendent se réveillent.
[^] # Re: Distribution
Posté par Glandos . En réponse au lien Java sur le bureau: parce que les webapps, ça va bien 5 minutes. Évalué à 5.
C'est à peu près ça. C'était un choix pertinent, il y a 10 ans. Aujourd'hui, la plateforme Web a gagné en fonctionnalités, et performances, et pour beaucoup de cas, c'est le meilleur choix pour l'utilisateur.
# Distribution
Posté par Glandos . En réponse au lien Java sur le bureau: parce que les webapps, ça va bien 5 minutes. Évalué à 4.
Pour mon expérience, le dernier article (sur la distribution) était le plus intéressant.
Notamment :
Je ne suis pas tout à fait d'accord. Je travaille dans une petite équipe, plutôt indépendante, faisant partie d'un gros groupe, avec sa politique de distribution de logiciels. Nous, on fait les nôtres, sur le côté. C'est volontaire, et assumé, on est un peu électrons libres transversaux, pour mettre de l'huile dans les rouages quand il faut. Et bien sûr, il n'en faut pas trop non plus.
Bref, donc on doit distribuer des logiciels. Et s'intégrer à « l'AppStore » du groupe, c'est difficile, voir pas désirable du tout, car nos logiciels ne doivent pas être installés par tout le monde.
Pendant 10 ans (!), j'ai développé et maintenu deux applications Java/Swing, déployé avec JavaWebStart. J'ai trouvé plein de limites à Swing, et j'ai dû hacker des composants (faire de la pseudo-réflexivité dessus) pour arriver à mes fins. Par exemple, pour que le menu déroulant d'une combobox ne soit pas limité en largeur à la taille de la combobox, mais affiche le maximum d'informations :
C'est beau comme un camion avec des roues de vélo, mais je m'en suis servi partout.
Ensuite JavaWebStart, c'est pas si beau et tout joli. C'est plein de bugs chiants, comme « tiens, je crois que le cache est pas à jour, mais faut lancer l'application deux fois pour que ça force la mise-à-jour, lalala ». On a dû plusieurs fois demander aux utilisateurs de supprimer le cache et de recommencer.
La signature de l'application est compliquée aussi, mais ça, évidemment, c'est le problème de toute application. Le Web résout ça, en délégant cette partie au serveur, donc à l'administrateur système, et pas au développeur.
Enfin, la sécurité des communications. En Swing, ben… on fait ce qu'on veut. C'est bien, mais il faut aussi réinventer la roue : transmission des informations via TLS, authentification, etc. En Web, c'est déjà dedans. Alors évidemment, quand on a besoin du TCP brut, ou pire, de l'UDP, c'est plus dur.
Donc on est parti sur une réécriture en Web. Parce que ça marche, c'est « mature », ça se distribue facilement. Bien sûr, c'est pas tout rose. La multitude de frameworks est décourageante. La vitesse de dépréciation aussi. Mon application Swing, elle marche depuis 10 ans, même sur des ordinateurs récents. C'est solide, ça tient la route, ça se casse pas tout seul.
Il y a beaucoup d'aspect des applications Web que je n'aime pas. C'est bloaté à mort, c'est souvent un gâchis de ressources monumentales. Pour beaucoup de choses, je préfère une application de bureau. Mais il ne faut pas renier pour autant les fabuleuses avancées de cette plateforme : le Web remplit beaucoup de cas d'utilisation aujourd'hui, pour la plus grande peine des utilisateurs de VisualBasic.
[^] # Re: Pinning
Posté par Glandos . En réponse au lien Le cauchemar de l'empaquetage: côté distrib. Évalué à 4.
Non, le pinning, c'est pas une bonne chose.
Les contraintes, oui. Par exemple, définir que
marcel
a besoin delibfoo >=2, <3, !2.2.1
ça peut se concevoir. Évidemment, ça ne marche que silibfoo
utilise le système de version sémantique. Sinon, c'est la foire d'empoigne…[^] # Re: Python
Posté par Glandos . En réponse au journal Découvrir Docker, Python, LLVM et Emscripten. Évalué à 4.
Allez, on dégaine un iPython, c'est parti.
Sur une telle liste, moyennement grosse, les générateurs ont l'air d'aller légèrement plus vite. C'était un test rapide et sûrement pourrave.
# En gros
Posté par Glandos . En réponse au lien Comment Google se moque de la CNIL (Pixel de Tracking). Évalué à 9.
17 clics pour ne pas être pisté. De multiples panneaux d'avertissements terrifiants.
Au final : un dépôt forcé de cookies.
[^] # Re: Tu t'es fait pythonisé :)
Posté par Glandos . En réponse au journal Découvrir Docker, Python, LLVM et Emscripten. Évalué à 5.
https://github.com/hauntsaninja/pyp Pour piper du shell dans du Python
https://github.com/amoffat/sh Pour appeler du shell depuis Python
Le deuxième est particulièrement efficace.
# Impressionnant
Posté par Glandos . En réponse au lien Archive du web : service Europe ?. Évalué à 4.
Il y a même la page d'accueil de mon site web, pourtant inconnu, et qui ne contient qu'un texte pour dire qu'il n'y a rien.
# Petit guide pour NPM avec GitHub
Posté par Glandos . En réponse au lien Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies. Évalué à 2.
https://github.blog/2021-02-12-avoiding-npm-substitution-attacks/
Pour résumer (traduction libre):
- Utiliser les scopes
- Utiliser un fichier
.npmrc
à la racine du projet pour paramétrer les dépôts.- Faites attention lors de l'utilisation d'un proxy.
- Soyez attentifs aux échecs de construction de projet.
[^] # Re: Unmix tha police
Posté par Glandos . En réponse au lien Copyright madness : jouer de la musique pour empêcher d'être filmé. Évalué à 3.
L'accordéon marche aussi chez nos amis Saxons : https://youtu.be/QYnSzxS9Wx8
[^] # Re: La faille entre la chaise et le clavier
Posté par Glandos . En réponse au lien Dependency Confusion: How I Hacked Into Apple, Microsoft and Dozens of Other Companies. Évalué à 10.
Attention quand même à ne pas basculer dans la situation inverse.
La CI/CD existe et marche très bien sans ces gestionnaires de paquets drogués à la version latest.
Dans ma boîte, j'ai un Jenkins qui recompile tous nos logiciels, qu'ils soient en C++ ou en Python. Et on a même plusieurs environnements, SuSE 10, SuSE 11, CentOS 7, Ubuntu 20.04, avec des compilateurs différents (GCC de 7 à 9), des versions de boost différents (pour le C++), etc.
Mais TOUT est hors-ligne. C'est le développeur qui choisit la version, qui la regarde, et qui la soumet à la plateforme de CI/CD (souvent par le biais d'un dépôt Git). C'est pour moi hors de question qu'une plateforme de CI/CD aille chercher une version d'une bibliothèque sur Internet à poil.
Pour Yarn, il existe par exemple
yarn install --offline --non-interactive --frozen-lockfile
, et dans le lockfile, il y a les condensats des paquets. C'est sûr, le développeur ne peut pas tout vérifier, mais au moins, la plateforme de CI/CD ne fait rien en cachette.Avant, yavait pas de CI/CD. Mais un logiciel comme Jenkins, forké en 2011 à partir de Hudson créé en 2005. Et avant ça, il existait d'autres solutions.
npm
est sorti en 2010. Il n'y a donc aucune excuse pour lui, d'un point de vue de la sécurité. Pareil pourpip
, 2011, aucune excuse. RubyGems date de 2003, donc c'est plus excusable.# Mais il y est arrivé quand même
Posté par Glandos . En réponse au lien What's holding Firefox 85 on sid ? - reddit. Évalué à 3.
https://tracker.debian.org/news/1228455/accepted-firefox-8501-1-source-into-unstable/
# NFTables ?
Posté par Glandos . En réponse au lien Web GUI / iptables : gère tes règles de pare-feu à la souris avec Easywall. Évalué à 7.
Ah, je suis rabat-joie, mais j'ai récemment migré de ferm vers nftables, et même si ça a été laborieux, j'y ai bien gagné au change.
Je ne sais pas si iptables est sur la pente descendante, mais… ça serait bien que Easywall gère nftables ;)
[^] # Re: Documentaire sur Arte
Posté par Glandos . En réponse à la dépêche Wikipédia : vingt ans déjà !. Évalué à 3.
Je pense que c'est la traduction de l'acronyme anglais TIL (Today I learned) qui vient de reddit: Aujourd'hui J'Apprends. Ou bien, Aujourd'hui, J'Ai Appris. Je ne sais pas trop.
[^] # Re: Tout ça pour ça
Posté par Glandos . En réponse au lien Raspbian : installation dans le dos des utilisateurs d'une télémétrie vers des serveurs Microsoft. Évalué à 10.
Non, c'est vraiment dommage la télémétrie. Et si je me souviens bien, y a pas ça dans VLC. Et retirer la télémétrie dans Chrome est très très difficile, Microsoft a passé plusieurs mois à le faire.
Enfin, il existe VSCodium, comme mentionné dans l'article, qui lui, est libre, contrairement à VSCode. La télémétrie est un moyen de surveillance. C'est léger, mais c'en est un.
# L'écosystème n'est pas du tout économe.
Posté par Glandos . En réponse au lien C’était mieux avant tous ces sites pleins de javascript. Évalué à 7.
Je développe une application Web, dont une partie du backend est en Javascript, sur Node.js. Je veux déployer ça avec des RPMs, parce que je suis un vieux croûtons, et parce que mes machines n'ont pas accès à Internet. Elles sont 200 et plus, parfois sur des lignes ADSL.
Voilà la recommendation qu'on m'a faite : https://github.com/kelektiv/node.bcrypt.js/issues/573#issuecomment-771660008
Pour tous ceux qui ont déjà fait ça, un
node_modules/
, c'est 500Mo. On me demande explicitement de faire un transfert de 500Mo (en xz, 30Mo) juste parce que tout le monde a une bande passante grosse comme… comme… enfin, très grosse ?Allons bon.
(Au final, j'ai fait du webpack, mon RPM fait 2Mo, il est autonome ;) )
[^] # Re: C'est revenu
Posté par Glandos . En réponse au journal Google expulse (temporairement ?) Element (client Matrix) du Play Store. Évalué à 9.
En effet, c'est revenu. Quand je vois ce qu'il a été nécessaire de faire, je me dis que quand même, ils ont de la chance d'avoir une boîte, des gens motivés et compétents sur la technologie. Je ne suis pas sûr que Google mette en place un « canal de communication pour toutes les affaires futures à propos de la modération ».
Allez, soyons positifs, ça n'a pris que 24h ;)
[^] # Re: Imprimante multi-fonctions
Posté par Glandos . En réponse au journal Maximizer, Satisficer et Achat d'une Nouvelle Imprimante. Évalué à 3.
https://framagit.org/Glandos/deliver_scan/-/blob/master/deliver_scan.py#L19
Genre… j'ai même pas essayé. Mais je crois que progressive et optimize sont par défaut. Le reste, j'ai jamais testé, mais ça vaut le coup. Bon, évidemment, là, j'ai pas le temps. Je vais devoir mettre ton commentaire très instructif de côté :)
[^] # Re: Imprimante multi-fonctions
Posté par Glandos . En réponse au journal Maximizer, Satisficer et Achat d'une Nouvelle Imprimante. Évalué à 3.
https://framagit.org/Glandos/deliver_scan
Attention, c'est du gros bricolage. Mais souvent, je gagne 20% sur la taille finale.
[^] # Re: Pas de Ryzen ?
Posté par Glandos . En réponse au journal Assembleur de PC en France. Évalué à 2.
J'y ai quand même trouvé l'OCTO 5 et le META 5, qui sont de l'embarqué avec des Ryzen V1000.