votre avatar

TNZfr

est avec nous depuis le 24 octobre 2011 ❤️

666 commentaires

Le 29/03/2024 à 18h 51

Et pas de version Linux :/

Le 28/03/2024 à 10h 00

Mouaif, toujours en attente du player ultra ...

Le 27/03/2024 à 10h 39

Les filtres sous Outlook, je ne sais pas comment traiter les mails ayant de plus de X jours. Sous Thunderbird, j'ai cette possibilité. Je trouve les possibilités en terme de filtre bien plus poussé sous Thunderbird

C'est sûr. A la maison, je n'utilise que Thunderbird (en béta) depuis plusieurs années.
La qualité que je trouve à Outlook est par rapport au niveau moyen de qualité des produits MS.
:mrgreen:

Le 21/03/2024 à 17h 09

2024. Heureusement les fanboys sont toujours là pour me rappeler que le problème c'est moi qui utilise mal le logiciel. Que ferais-je sans vos remarques pertinentes pour remettre en cause mon ressenti personnel. Vous savez quoi ? Votre gentillesse me rend humble. Bref...

Pour info, j'utilise Excel au bureau et j'ai Calc installé chez moi... que j'ai tuné à mort pour ressembler à Excel.

Je maintiens que quand je lance Calc, je trouve ca moins pratique. Des trucs à la con comme "supprimer les doublons d'une colonne" ou "définir le multipage pour l'impression/export" me semblent tellement plus pratique dans Excel.

Et il y a aussi un truc dérangeant dans le rendu à l'écran. Je pense que ca vient des marges/espacements des cellules ou du texte dans les cellules. Faudrait que j'investigue un peu plus pour mettre le doigt dessus.

Tu vois, tu reconnais toi même que tu as / es un problème !

Et donc, tu es avec un LO 24.2.1 ?

Le 21/03/2024 à 12h 59

C'est MS lui même qui avait annoncé l'arrêt des licences perpétuelles sur MS Office à la sortie d'Office2021, ne t'en déplaise.
Bien sûr, les grands comptes ont gueulé parce que le tout Office3615 ne répond pas à leur besoins.

Source de cette annonce ?
Ce n'est pas les souvenirs que j'ai gardé de l'époque, j'ai peut-être loupé ce point vu que les grands comptes avec qui je travaille n'utilise qu'à la marge les versions perpetuelles.


Ben quand tu as les détails des négociations grands comptes genre plusieurs dizaines de milliers de licences ... le prix unitaire n'est pas celui d'une PME, c'est au-dessus car dans l'équation il faut tenir compte de l'incapacité des grands comptes à changer rapidement de solution (migration, formations, etc ...). Et MS est tellement ancré dans les fondations des infra de SI, qu'ils peuvent faire ce qu'ils veulent.
Quel rapport avec ta phrase initiale : "un modèle où le prix unitaire des licences augmente avec les quantités prises" ?
BTW, il y a une gamme de produit PME (en dessous de 300 sièges), vs la gamme Enterprise. Donc bien sur que les prix ne sont pas les mêmes. Sans même parler du principe de "level" dans certains types de contrat, qui génèrent des prix différents suivant les quantités.


Ce n'est pas parce que tout le monde fait une c.nnerie que ce n'est plus une c.nnerie. J'observe d'ailleurs que l'euphorie du tout-cloud retombe rapidement dès les premières factures.
C'est une connerie, et c'est pour ça que l'action de MS monte, que les analystes plébicitent ces orientations, et que le marché répond présent. N'hésite pas à écouter les réunions d'investisseurs (earning call), cela remettra en question tes positions, vu les croissances à 2 chiffres annoncées tous les trimestres.

je réagis sur le dernier point : Conformisme quand tu nous tiens !

Les financiers font dire aux chiffres copieusement manipulés ce qu'ils veulent ... et surtout ce que les investisseurs et les prospects veulent entendre. Parce que une fois embarquer dans le manège, y'a un gap entre la plaquette marketing et l'exploitation des solutions achetées. Je peux t'en parler je suis allé voir ce qu'il y a réellement derrière le rideau (quelques certifications et utilisation pratiques pour des grands comptes).

Ce n'est que de la comm' ... Pour illustrer l'idée : a la télé, il n'y a que de la bagnole électrique, et dans la rue ? Après tout dépend de ce qui est important pour toi, ce que te disent tes sens ou ton besoin d'assimilation dans la foule bêlante ?

Le 21/03/2024 à 11h 36

Cette annonce est une manœuvre pour se rattraper aux branches suite aux mécontentements d'un possible arrêt des licences perpétuelles.
"un possible arrêt" qui n'est qu'issu de l'imagination des convaincus anti-MS.
En même temps, mon petit doigt m'a dit que les renégociations de licences MS fonctionneraient suivant un modèle où le prix unitaire des licences augmente avec les quantités prises : un vrai business-model de dealer de drogue.
Un business modèle, où plus tu prends plus c'est cher ? Waow. L'inverse du capitalisme et du principe d'économie d'échelle, l'inverse de ce que tout le moned fait, c'est beau.
A côté de ça, le reste de la stratégie cloud / IA de MS ne satisfait pas non plus.
C'est EXACTEMENT ce que les chiffres disent d'ailleurs, suffit de regarder les différents résultats financiers.
Un autre petit doigt m'a confié que les mises à jour passant, les profils développeurs avaient de plus en plus de mal à « personnaliser » leur poste de travail (comprendre faire des gros détournements techniques pour pouvoir bosser) parce que l'écosystéme MS se rigidifie petit à petit pour ressembler à un modèle Apple et/ou IBM. Bizarrement, les bons développeurs partent pour des boîtes où ont leur laisse le choix de l'écosystème pour travailler.
Oui, on connait les "bons développeurs", pour qui c'est aux autres de s'adapter à eux, et non l'inverse. Les mêmes qui à chaque fois qu'ils doivent récupérer un projet commencent par dire "ah non le code est nul, faut tout recommencer, et en plus j'aime pas ce langage/framework/whatever".
Les équipes de sécurité ont enfin les outils pour s'occuper des populations de développement, et doivent récupérer une dette sécuritaire qui peut avoir plein d'impacts critiques.

Tout test arguments s'entendent ... mais il te manque les infos qui vont bien.

« "un possible arrêt" qui n'est qu'issu de l'imagination des convaincus anti-MS. »

C'est MS lui même qui avait annoncé l'arrêt des licences perpétuelles sur MS Office à la sortie d'Office2021, ne t'en déplaise.
Bien sûr, les grands comptes ont gueulé parce que le tout Office3615 ne répond pas à leur besoins.


« Un business modèle, où plus tu prends plus c'est cher ? Waow. L'inverse du capitalisme et du principe d'économie d'échelle, l'inverse de ce que tout le moned fait, c'est beau. »

Ben quand tu as les détails des négociations grands comptes genre plusieurs dizaines de milliers de licences ... le prix unitaire n'est pas celui d'une PME, c'est au-dessus car dans l'équation il faut tenir compte de l'incapacité des grands comptes à changer rapidement de solution (migration, formations, etc ...). Et MS est tellement ancré dans les fondations des infra de SI, qu'ils peuvent faire ce qu'ils veulent.


« C'est EXACTEMENT ce que les chiffres disent d'ailleurs, suffit de regarder les différents résultats financiers. »

Ce n'est pas parce que tout le monde fait une c.nnerie que ce n'est plus une c.nnerie. J'observe d'ailleurs que l'euphorie du tout-cloud retombe rapidement dès les premières factures.


« *Oui, on connait les "bons développeurs", pour qui c'est aux autres de s'adapter à eux, et non l'inverse. Les mêmes qui à chaque fois qu'ils doivent récupérer un projet commencent par dire "ah non le code est nul, faut tout recommencer, et en plus j'aime pas ce langage/framework/whatever".
Les équipes de sécurité ont enfin les outils pour s'occuper des populations de développement, et doivent récupérer une dette sécuritaire qui peut avoir plein d'impacts critiques.
* »

Tu décris une situation de reprise de projet. Les raisons sont nombreuses : évolution fonctionnelle, dette sécuritaire, dépassement de budget (tu sais les équipes plein de jeunes développeurs sans expérience et sans leader technique pour rester dans l'enveloppe), ...
Les devs expérimentés connaissent déjà ce qui répond au besoin et les tas de m*rde à paillettes ayant une durée de vie de 6 mois et contrairement à ce que tu dis, ce n'est pas par caprice de diva.
Côté sécurité, ben, aujourd'hui la prérogative sécurité est maintenant au-dessus de tous ce que les fonctionnels et les devs peuvent dire. Laisser des trous de sécurité de nos jours a des conséquences importantes pouvant aller jusqu'à l'arrêt complet du SI ... tout ça parce qu'un projet n'a pas voulu se mettre en conformité. Parmi mes clients, il est même question d'arrêter les applications qui ne se mettent pas à jour même si les services utilisateurs n'ont rien à mettre à la place malgré les sommations et les délais de grâce.

Le 21/03/2024 à 09h 55

Tu bosses chez MS ?

Le 21/03/2024 à 09h 54

Autant qu'il est utile de préciser que l'ergonomie de LO est déroutante (et donc moins pratique) quand on est habitué à MO.

Et aussi qu'il est facile de changer la présentation des menus dans LO

(pour le savoir il faut être curieux et laisser ses avis de café du commerce au vestiaire)

Le 21/03/2024 à 09h 51

le problème c'est outlook qui est vraiment bien plus pratique à l'usage quand on est en exchange, jamais réussi à passer sur thunderbird pour me débarrasser d'office

Outlook est peut être le meilleur logiciel que MS ait pu faire.

Le 21/03/2024 à 08h 07

Difficile de te répondre, j'ai mis du temps à me sevrer de MS Office ...

Le 21/03/2024 à 08h 04

Cette annonce est une manœuvre pour se rattraper aux branches suite aux mécontentements d'un possible arrêt des licences perpétuelles. En même temps, mon petit doigt m'a dit que les renégociations de licences MS fonctionneraient suivant un modèle où le prix unitaire des licences augmente avec les quantités prises : un vrai business-model de dealer de drogue.

A côté de ça, le reste de la stratégie cloud / IA de MS ne satisfait pas non plus. Un autre petit doigt m'a confié que les mises à jour passant, les profils développeurs avaient de plus en plus de mal à « personnaliser » leur poste de travail (comprendre faire des gros détournements techniques pour pouvoir bosser) parce que l'écosystéme MS se rigidifie petit à petit pour ressembler à un modèle Apple et/ou IBM. Bizarrement, les bons développeurs partent pour des boîtes où ont leur laisse le choix de l'écosystème pour travailler.

Le 21/03/2024 à 11h 10

Je suis dans le même cas.
Bien que le lanceur Heroic arrive à démarrer la plupart des jeux ... j'ai moi aussi une grosse préférence pour le service de Steam et de son client Linux natif.

Le 21/03/2024 à 08h 25

Mouais ... moi j'y vois un intermédiaire de plus dans la chaîne.

Ce qui me paraît le plus probable c'est qu'Epic Games a réussi à négocier une part des 30% réclamés habituellement par Apple en leur promettant de la volumétrie et des prix de vente plus élevés.

En résumé : A fuir !

Le 21/03/2024 à 08h 18

Ok pour le correcteur ... mais CoPilot ou pas ?

Le 20/03/2024 à 07h 33

Ah zut ... je viens de passer à la version 125.
:ouioui:

Le 11/03/2024 à 10h 36

Le 0 binaire, j'm'en tape. C'est la conversion numérique qui est utilisée après.
La spécification de atoi c'est qu'elle reçoit une string. En C une string est terminée par un NUL. Si ce NUL n'est pas là, rien ne prouve que atoi ne va pas continuer à lire les caractères qui suivent. La spec dit que atoi arrête la conversion, pas nécessairement le scan de la string. Le fait qu'atoi est implémenté par une boucle "while le catactère courant est entre '0' et '9'' est un détail d'implémentation qui est généralement valide sur une architecture X86 ou ARM, mais peut-être pas sur une architecture IBM z9, ou une encore différente qui sortira l'année prochaine. Rien n'interdit à atoi() de continuer à scanner plus loin s'il le désire. Il ne peut pas aller plus loin que le NUL mais rien ne dit qu'il ne va pas aussi lire le caractère qui suit le \n.

Maintenabilité :fou:

Ah oui, je commence à comprendre : tu fais du z-linux ... CàD une implémentation très IBM d'un environnement Linux (j'ai fait aussi de l'AIX et y'a des contextes où c'est pas bon à manger surtout quand il s'agit d'une appli multi-OS).

La maintenabilité justement, c'est en environnement zOS où j'ai pu voir passer les pires trucs pondus par des « barbus-plein-d'XP ».

Dans ce genre de contexte de travail, les documentations projet tiennent sur une page : Cf Machin-pas-loin-de-la-retraite-ou-déjà-parti. Et les DSI derrière qui attendent en embuscade le départ en retraite pour tout décommissionner en urgence afin que cela ne leur pète pas au nez.
Une fois, des vieux programmes Z ont été rachetés à un client et la prise en main des bouzins a été longue et dure. Plusieurs mois de reverse-engenering pour s’apercevoir qu'on aurait plus vite fait de repartir de la page blanche.

La maintenabilité efficace, par ordre de priorité pour moi :
1. Programmation structurée
2. Capacité à comprendre pour un dev extérieur et accessoirement par l'auteur lui-même
3. Cohérence d'écriture globale : va maintenir un source avec 5 ou 6 styles d'écriture différents et avec du C, ça peut faire très vite mal à la tête.
4. Mail et/ou N° de téléphone de la personne qui a l'histoire du programme en tête : mieux vaut demander à un qui sait plutôt qu'à 2 qui cherchent

Le 11/03/2024 à 07h 00

Dans le "t'es content ?" ... il fallait comprendre que je salue tes efforts pour prouver ton point de vue. Je salue également tes capacités de recherche d'un environnement suffisamment vétuste te permettant de prouver tes dires : la version 9.4 de GCC a été mise à jour pour la dernière fois en juin 2021. Pour te dire, même la vieille LTS Ubuntu 22.04 installe de base GCC 11 et propose GCC 12.
Au quotidien, je tourne en GCC 13.

Si tu crois que j'ai "recherché" un environnement vétuste... ben non. J'ai juste pris la première VM que j'avais sous la main (car oui, ma machine principale est sous Windows :eeek2:)
Je reste dans le ton des commentaires qui ont été faits. L'arrogance dont tu me crédites n'est ni plus ni moins que celle avec laquelle tu as entamé les débats.
On pourra se la jouer court de récré, car bizarrement, en relisant nos premiers échanges, je n'ai pas du tout la même interprétation que toi. Je t'avoue qu'après un "script kiddy" et "une médaille en chocolat dans le paramétrage Java", j'ai commencé sans doute à être un peu moins sympa, sans pour autant tomber dans des attaques ad hominem. Je préfère toutefois laisser aux lecteurs se faire leur propre opinion à ce sujet.

Pour ma part, je pense que l'on peut clore la discussion, le tour ayant été fait sur le sujet.

« Si tu crois que j'ai "recherché" un environnement vétuste... ben non. J'ai juste pris la première VM que j'avais sous la main (car oui, ma machine principale est sous Windows) »

Une VM en WSL je suppose ?

Le 10/03/2024 à 22h 52

Il faut que tu comprennes une chose : que ton programme fonctionne ou pas, je m'en fiche totalement (et ceci le plus sincèrement du monde et sans vouloir te manquer de respect).

Ce que j'essaie de te dire (et d'autres aussi), c'est que ton comportement arrogant vis-à-vis de ton programme est une des plaies quant à la sécurité des programmes d'aujourd'hui. Rust (que je n'apprécie pas vraiment, je trouve sa syntaxe illisible) empêche, de par sa conception, les principaux pièges qui constituent la majorité des failles (une étude révélait, par exemple, que la majorité des failles de sécurité dans des programmes C étaient dues à des buffer overflow).

Le pire, c'est que non seulement tu n'arrêtes pas de dire que ton programme est bien pensé, mais qu'en plus, tu te montres plutôt méprisant (pour ne pas dire insultant) envers celles et ceux qui ne seraient pas d'accord avec toi.

Du coup, je ne peux qu'abonder dans le sens du commentaire 14 de Stephane Bortzmeyer (sauf le côté virilisme que je n'ai pas trop compris dans son propos), où, désolé de te le dire, ton comportement est l'archétype même de ceux qu'il dénonce.

Dans le "t'es content ?" ... il fallait comprendre que je salue tes efforts pour prouver ton point de vue. Je salue également tes capacités de recherche d'un environnement suffisamment vétuste te permettant de prouver tes dires : la version 9.4 de GCC a été mise à jour pour la dernière fois en juin 2021. Pour te dire, même la vieille LTS Ubuntu 22.04 installe de base GCC 11 et propose GCC 12.
Au quotidien, je tourne en GCC 13.

« Le pire, c'est que non seulement tu n'arrêtes pas de dire que ton programme est bien pensé, mais qu'en plus, tu te montres plutôt méprisant (pour ne pas dire insultant) envers celles et ceux qui ne seraient pas d'accord avec toi. »
Je reste dans le ton des commentaires qui ont été faits. L'arrogance dont tu me crédites n'est ni plus ni moins que celle avec laquelle tu as entamé les débats.

Pour le virilisme, bien vu, je n'avais pas rebondi sur son commentaire.
Disons que le monsieur ferait bien d'aller faire un stage dans une équipe projet au sein d'une ESN pour voir comment ça se passe dans la vraie vie.
Non, tous les devs ne sont pas nuls (y'en a quand même), les conditions de réalisation des projets, par contre, sont pour beaucoup dans la dette technique des applis (et donc les CVEs créées ou non corrigées ...). Dans ces conditions de réalisation, de manière non exhaustive, on y trouve les comptables gérant à date d'échéance, un turn-over de compétition, des affectations de développeurs sur des périmètres dépassant leur niveau d'expérience, un client girouette, etc ...

Le 10/03/2024 à 22h 01

Je me suis amusé à le compiler et à le lancer, histoire de voir. Toi qui est si fier de ton programme, sache qu'il génère 8 warnings avec gcc 9.4 (je croyais qu'il fallait les éviter ? C'est en tout cas ce que tu demandais commentaire 6.31 (je ne l'invente pas).

Et le comble, c'est que ton programme se termine par un beau segmentation fault à l'exécution.


Current Minimum Maximum
Core 0 : Khz Khz Khz
Core 1 : Khz Khz Khz
Core 2 : Khz Khz Khz
Core 3 : Khz Khz Khz
Core 4 : Khz Khz Khz
Core 5 : Khz Khz Khz
Core 6 : Khz Khz Khz
Core 7 : Khz Khz Khz

Total : Khz Khz Khz
Average : Khz Khz Khz

Nb Mini :
Nb Maxi :

Extr. Min: Khz Khz Khz
Extr. Max: Khz Khz Khz
Segmentation fault


(tu m'excuseras, je me suis contenté d'un copier/coller de la console, je n'ai pas envie de m'amuser à héberger une image pour ensuite la coller ici).

Alors, tu peux dire tout ce que tu veux de ton programme, tu ne peux pas lutter contre les faits.

Le plus drôle dans tout ça, c'est que j'ai trouvé un buffer overflow exploitable, et que je voulais justement le compiler/tester pour vérifier, mais que je n'ai même pas eu à le faire, car ton programme plante de lui-même.

J'applaudie, à 2 mains, les 20 ans d'expérience mis avec tant de valeur dans ton commentaire précédent :top:

Ok ... (t'es content ?)

Le 10/03/2024 à 21h 42

Cette approche plus dépouillée sert la maintenabilité.
Désolé de te le dire, mais toi qui défend la maintenabilité à tout va (ça fait plusieurs fois que tu parles de maintenabilité), il y a encore beaucoup de boulot pour que ton programme soit maintenable :
- avoir des conventions cohérentes : un coup de PascalCase, un coup du camelCase, un coup du snake_case
- nommage qui laisse sérieusement à désirer ;
- utilisation de constantes en dure, au lieu de les définir via un #define ou une variable const ;
- utilisation de la virgule au lieu du point virgule pour séparer des instructions (oui, c'est valable en C, je sais, mais cela n'en est pas moins une très mauvaise pratique, surtout pour éviter de définir un bloc d'instructions dans un if ou else par exemple)
Mon code fonctionne car les procédures appelées forment un ensemble.
Comme je te l'ai déjà dit dans un précédent commentaire : ton code fonctionne pour toi, dans ton cas d'utilisation. Mais il est public (tu l'as publié sur github) et tu ne sais pas dans quelles conditions il sera utilisé.

Ton code est du pain béni pour n'importe quel hacker, mais ça, tu n'en as que faire. Pire, tu refuses ne serait-ce que de le concevoir.
PS : surconfiance avec + de 20 ans d'XP sur le sujet ... mais bien sûr. Je dirais plutôt que tu nous fais une crise d'ego universitaire.
Argument d'autorité + attaque ad hominem (encore). Peux-tu rajouter la victimisation la prochaine fois stp, histoire de varier les procédés rhétoriques ?

Ou plus simplement, avoir de vrais arguments pour défendre ton point de vue. Merci d'avance ;)

Mon dieu !
Je n'ai pas utilisé les conventions normées.

Oui, c'est publié sur github et tous les script-kiddies de passage vont l'utiliser pour coller le boxon sur internet parce que c'est pas dans les normes des gardiens de la méthode.

Le 10/03/2024 à 21h 24

Oui, c'est ce que j'ai ajouté en éditant. Mais la discussion portait sur le 0, pas le newline.

Le 0 binaire, j'm'en tape. C'est la conversion numérique qui est utilisée après.

S'il y avait eu utilisation des strings dans un printf par exemple, oui, il y aurait eu un memset.

Le 10/03/2024 à 20h 55

$ nproc
12
$ nproc|od -c
0000000 1 2 \n
0000003

$ nproc|wc -c
3


Donc les 3 caractères sortis par nproc sont : 1 2 et \n (=0x0a)

Pas de 0 "binaire" (comme tu l'appelles) de lu en fin de chaîne quand tu lis ces 3 caractères avec ton fread.

Ce qui suit les caractères lus par le fread est indéterminé. Ce n’est pas pour rien que le fread retourne le nombre de caractères lus.

Par contre, c'est le atoi qui te sauve non pas parce que la chaîne est terminée par un 0 mais parce qu'elle est terminée par un 0x0a et que le atoi s'arrête au premier caractère différent d'un chiffre après avoir détecté le début d'un nombre.
Et ici, si la lecture du pipe s'est bien passée (ce que tu ne vérifies pas), tu auras bien ton nombre.

Et atoi s'arrête aussi sur le newline ... pas uniquement sur le 0 binaire.

Le 10/03/2024 à 20h 13

Houlà... que de certitudes qui ne se basent sur rien d'autre qu'une ignorance crasse... Et quelle belle démonstration du postulat de Dunning Kruger.

Non, passer Buffer à 11 ou une quelconque autre valeur ne changera rien à l'affaire (et je passe sur le fait que tu hard-codes la taille du buffer au lieu d'utiliser une constante...) . Le simple fait que tu le proposes prouve que tu n'as rien compris. Le problème ce n'est pas le fread qui va écrire trop loin, ce n'est pas un buffer potentiellement trop petit, c'est le atoi qui va lire trop loin car rien ne garantit que le buffer sera terminé par un zéro binaire.

Car non, la commande passée à popen ne renvoie pas une string, elle renvoie un stream de bytes que fread va mettre dans la variable Buffer. Mais cela ne constitue pas une "string" au sens C car le stream ne contient pas de zéro binaire en fin, et fread n'en mettra pas. Pour mettre un tel byte nul en fin, il eut fallu faire un truc du genre (de tête et quick-n-dirty, et pas portable car suppose que sizeof(char) == 1, mais obligé vu que tu n'as pas jugé utile de définir un constante pour la taille du buffer) :

Buffer[fread(Buffer,1,sizeof(Buffer)-1,fd)] = '\0';

Note à quel point c'est différent de ce que tu as écrit, notamment il faut lire au maximum 15 éléments de taille 1, et non 1 élément de taille 15 de façon que fread renvoie le nombre de bytes lus histoire qu'on puisse accoler un NUL en fin.

Ou alors... utiliser fgets() ???

Tout ceci prouve que tu n'as jamais écrit du code qui fonctionne autrement que par hasard et sur ta propre machine. Donc, au niveau expérience, évite de voir la paille dans l'oeil de ton voisin, ça t'évitera de passer pour un noob.

Tout ton commentaire ne sert à rien. Dans un exposé universitaire, tu aurais raison mais pas là.

Effectivement, si la commande lancée par le popen aurait retourné un stream sans fin de ligne ni 0 binaire, cela aurait été pris en compte (avec un p'tit memset). Cette approche plus dépouillée sert la maintenabilité. Et ta proposition est juste, mais n'aide pas la maintenance.

Mon code fonctionne car les procédures appelées forment un ensemble.

PS : surconfiance avec + de 20 ans d'XP sur le sujet ... mais bien sûr.

Le 09/03/2024 à 09h 24

Contrôle des pipes : la chaine de caractère finit dans un atoi ... qui sortira une valeur nulle au pire
Heu, non, au "pire" il y a un dépassement de buffer. Ni l'initialisation de l'array de caractères sur le stack ni le fread ne peuvent garantir qu'il y aura bien un byte nul pour terminer la string. S'il y a un byte nul, c'est par chance parce que le stack n'a pas encore réutilisé de l'espace déjà initilalisé par un appel précédent.

char Buffer[16] = "";

ça garantit juste que Buffer[0] est le caractère nul, mais ne dit rien des 15 autres, qui vont simplement récupérer ce qui traîne sur le stack.

En absolu, d'un point de vue purement universitaire et théorique ... tu as raison.

Mais, quand tu regardes ce pourquoi la variable va être utilisée, la plage de valeurs recues est très limitée. A vrai dire, j'aurai pu réduire la taille de la variable car la valeur la plus grande est sur 10 caractères, donc un Buffer[11] aurait fait le job.

Et pour finir avec les strings, la commande donnée au popen retourne une string, donc une série de caractères terminée par un 0 binaire. Du coup, je suis sûr d'avoir une string en bon et dûe forme dans le atoi ...

C'est dingue ce que le manque d'XP et une croyance universitaire crasse peuvent faire dire.

Le 07/03/2024 à 10h 10

Contrôle des pipes : la chaine de caractère finit dans un atoi ... qui sortira une valeur nulle au pire. Et la plupart des programmes qui utilisent des pipes font des appels comme ça : pclose(popen("commande","r")); ... surtout utilisé dans les programmes multi-threadées pour remplacer la fonction system() non compatible avec le multi-threading.
Depuis quand "la plupart des programmes" c'est une justification pour faire quelque chose qui s'apparente à une mauvaise pratique ?

Et puis, pas de bol, je ne parlais pas de ça (du aoti). Je parlais d'aller lire un flux sans même savoir s'il est ouvert correctement ou pas.
Contrôle du système de fichiers : surtout sur une arborescence mémoire montée par le noyau (et donc mécaniquement présente sinon tu n'aurais pas même pu te connecter à la machine).
Il est effectivement impossible d'avoir un programme tournant dans un environnement "sécurisé" comme les conteneurs, un chroot, ou dont l'accès à cette partie du système de fichier est interdite via des règles de gestion fine. De même qu'il est impossible que la limite du nombre de descripteur de fichiers ouverts soit atteinte. Tant de certitude...
Un contrôle de malloc unitaire sur des tailles maîtrisées (dépendant du nombre de cores/threads et non d'un paramètre utilisateur) ... t'es gentil. Tu passerais ton temps à faire des malloc / realloc dans des boucles et/ou des malloc dépendants de paramètres utilisateur (donc potentiellement déconnants), là, oui le contrôle des valeurs retournées est obligatoire.
Es-tu certains à 100% que les appels à malloc soient maitrisés ? Moi non. Le premier dépend de la valeur de retour du programme "nproc" : le premier programme "nproc" trouvé qui sera dans le PATH (c'est ça la faille qui ne dépend pas du langage : utilisation d'un programme sans préciser son chemin absolu, permettant de le substitué très facilement). Ton nproc renvoi 100000000 et boum.

En gros, ton programme, je peux lui faire consommer 4Go très facilement si j'en ai envie. Toujours maitrisé donc ?

De plus, tu sembles considérer des ordinateurs avec une mémoire de plusieurs Go. Sache que Linux tourne sur de nombreux terminaux. Par exemple, des routeurs. Celui que j'ai et sur lequel tourne OpenWRT ne dispose plus que de quelques ko (oui oui, quelques ko !).
Effectivement, tu fais bien d'arrêter ... parce qu'enfoncer les portes ouvertes des « bonnes » pratiques trouvées sur wikipedia, n'importe quel script-kiddie en est capable.
Que d'arrogance.... Que répondre à ça, si ce n'est que tu ne sembles même pas comprendre les bases de la sécurité informatique dans les programmes...
Tu n'as même pas essayé de comprendre l'algo (d'ailleurs personne n'en a parlé) et
En toute honnêteté, on s'en fiche de ton algo. C'est pas le but de la discussion. Le but c'est l'apport d'un langage comme le Rust par rapport au C.
pourquoi les contrôles que tu dénonces manquants ne sont pas nécessaires.
Et moi je maintiens qu'ils sont nécessaires. Pas pour le cas "normal" (on est d'accord la-dessus). Mais un attaquant qui cherche à exploiter une faille n'en à rien à faire du cas normal. Ce qui l'intéresse, ce sont les effets de bords exploitables.

Et désolé de te le dire, mais ton programme, pourtant court, présente de nombreuses failles que ton orgueil refuse de considérer.
Maintenant, puisque tu as trouvé des « failles », je te propose de mettre à jour le bout de code et de nous montrer comment il devrait être.
Pas de souci. Je peux. Où puis-je t'adresser mon devis ?

Bon, tu ne fait qu'effleurer la surface et tu campes sur tes positions.
Tu nous fais le chapitre du programmeur absolu qui ne sait pas contextualiser. Et justement, la contextualisation permet d'ajuster le code avec ce qui est nécessaire. C'est un ensemble. Pour faire tourner une application dans un datacenter la composante plateforme de production est très importante (puissance de calcul, système d'exploitation ...) dans la conception du code.

Je vais faire le vieux con et j'aime pas ça : un programme ne tourne pas tout seul, il lui faut un OS et une machine pour fonctionner. Si tu ne tiens pas compte de ces paramètres, aucun programme ne pourra être dans les clous des règles de programmation, à part HelloWorld, et encore, y'a des fois où certains arrivent à faire de la m*rde avec ce dernier. Mais bon, pour ça, il faut avoir un peu plus de bagages que des formations médailles en chocolat de paramétrage de frameworks en java. Tout le monde sait qu'avec Java, on a pas besoin de machine et de système d'exploitation !

Le 07/03/2024 à 00h 21

Y aussi le COBOL. C'est quasiment de l'assembleur, cela dit.

Mouaif ... en Cobol, tu ne manipules pas les entiers et les flottants en natifs, et encore moins les instructions évoluées du processeur.

Le 06/03/2024 à 23h 59

J'ai regardé ton programme, histoire de m'amuser. Je me considère rouillé en C, dans la mesure où je n'en fais plus depuis fort longtemps. Voici ce que j'ai vu, qu'un langage comme Rust ne laisserait pas passer :
- fonction GetNbCore() : aucune vérification sur l'accès au pipe, ni aucune gestion des erreurs.
- fonction read_freq() :
- idem, aucune vérification quant aux accès au système de fichiers
- pas de vérification de la valeur de retour des appels à malloc
- je ne vais pas dire que la mémoire n'est pas libérée, puisque ton application à juste besoin d'allouer de la mémoire au début une fois pour toute au début de l'application. Une fois qu'on est dans la boucle principale, aucune allocation n'est faite.

Je m'arrête là pour l'analyse. Un attaquant aurait de quoi largement faire avec ce petit programme ^^ Surtout qu'il y a d'autres problèmes (mais pas lié au langage lui-même).

Contrôle des pipes : la chaine de caractère finit dans un atoi ... qui sortira une valeur nulle au pire. Et la plupart des programmes qui utilisent des pipes font des appels comme ça : pclose(popen("commande","r")); ... surtout utilisé dans les programmes multi-threadées pour remplacer la fonction system() non compatible avec le multi-threading.

Contrôle du système de fichiers : surtout sur une arborescence mémoire montée par le noyau (et donc mécaniquement présente sinon tu n'aurais pas même pu te connecter à la machine).

Un contrôle de malloc unitaire sur des tailles maîtrisées (dépendant du nombre de cores/threads et non d'un paramètre utilisateur) ... t'es gentil. Tu passerais ton temps à faire des malloc / realloc dans des boucles et/ou des malloc dépendants de paramètres utilisateur (donc potentiellement déconnants), là, oui le contrôle des valeurs retournées est obligatoire.

Et au jeu des vérifications, j'ai aussi oublié de contrôler l'espace disque disponible (ben oui puisqu'il y a des fopen), les T° CPU / carte mère (ben oui, ça boucle) et l'âge du capitaine.

Effectivement, tu fais bien d'arrêter ... parce qu'enfoncer les portes ouvertes des « bonnes » pratiques trouvées sur wikipedia, n'importe quel script-kiddie en est capable. Tu n'as même pas essayé de comprendre l'algo (d'ailleurs personne n'en a parlé) et pourquoi les contrôles que tu dénonces manquants ne sont pas nécessaires.

Maintenant, puisque tu as trouvé des « failles », je te propose de mettre à jour le bout de code et de nous montrer comment il devrait être. Toutefois, il faut que :
* ça compile sans warning,
* ça reste maintenable CàD compréhensible par quelqu'un qui découvre le code pour la 1ere fois (ça c'est pas simple)
* les perfs ne soient pas dégradées : CàD une conso CPU qui ne polluera pas les mesures.

Enjoy !
(d'où le fameux « keep it simple, stupid ! »)

Le 06/03/2024 à 22h 09

Ce projet est vraiment sensé pouvoir démontrer quelque chose ?
Il ne démontre aucune compréhension spécifique de l'architecture d'un ordinateur. Faire des malloc, utiliser le keyword "register" ou savoir comment récupérer les fréquence du CPU via sysfs ça n'est pas de la compréhension du fonctionnement d'un ordinateur. Tu sais coder en C et utiliser certaines API du système Linux.

La remarque de Stéphane sur le fait d'être un Dieu s'attache plutôt à critiquer la remarque qui était que si tu sais comment l'ordinateur fonctionne, alors il est à ta charge de gérer l'intégrité de la mémoire et que, au final, c'est facile de ne jamais faire de bourde puisque tu sais comment ça fonctionne.

Tu es inhumain si tu es capable de guarantir que tu ne commetras aucune erreur de distraction qui aboutiront à des problèmes de mémoire si tu n'as pas l'assitance d'outils (et il en existe en C aussi).
Là aussi ton projet ne démontre rien, sa complexité est trop basse pour prouver que tu as cette qualité qu'on trouve inhumaine ;)

Fais mieux et après on cause !

Et pour peu que tu aies compris les mécanismes codés ... lire 3 lignes et reconnaître une arborescence linux et un ou 2 mots-clés du langage ne fait pas de toi un critique crédible. Tu as regardé la surface et tu es passé à côté de l'algo.

Le 04/03/2024 à 15h 27

« Normalement, un dev sait comment un ordi fonctionne, sait comment un processus vit en mémoire, sait comment le code et les données sont agencées dans l'espace mémoire du process et sait comment le langage ordonne les données en mémoire. » Ça, ce n'est pas un dev, c'est un Surhomme, voire un Dieu Vivant venu de l'espace. Les devs que je connais sont humain·es et ont des capacités cérébrales finies (d'où l'importance du rapport de la Maison-Blanche, avec lequel je suis d'accord).

Du coup, que penses tu de ce petit programme de monitoring des fréquences CPU en C, écrit le nez au vent sans notes, juste avec le schéma de données en tête ? :D

https://github.com/TNZfr/watchfreq

Edit : Eh bé ... 22 clones du dépôt en 5 heures. :)

Le 04/03/2024 à 09h 37

Ceci dit pourquoi ça serait au langage de porter la notion d'intégrité de la mémoire ?

Normalement, un dev sait comment un ordi fonctionne, sait comment un processus vit en mémoire, sait comment le code et les données sont agencées dans l'espace mémoire du process et sait comment le langage ordonne les données en mémoire.

A quoi bon bouffer des perfs en compil et en execution pour faire des contrôles inutiles dans la mesure où le dev a déjà fait le travail ?
:D

Le 04/03/2024 à 09h 32

Et les perfs ?
Je n'ai jamais entendu parler du fait que Rust serait plus rapide que le C !?

Et pour faire plus rapide que le C, c'est l'assembleur ... et là, les « framework for monkeys » y'en a pas.

Le 04/03/2024 à 09h 29

Un des problème de l'interface chaise-clavier, c'est qu'elle ne fait pas toujours attention à la gestion de sa mémoire. Sauf que C (et C++) n'y font pas pleinement attention non plus. C'est une des problématiques à laquelle Rust tente de répondre : faire des vérifications à ce niveau, dès la compilation.
Ça ne résoud pas tous les problèmes induits par l'interface chaise-clavier mais au moins ces problèmes très "technico-techniques" de gestion de mémoire.

Quite à faire des vérifications à la compil parce que le dev est un légume, dans ce cas, passe directement à l'ADA.

Ce n'est pas bien compliqué de se représenter les cycles de vie de la donnée et de sa représentation en mémoire. Si tu sais faire ça, il est alors possible d'avoir un binaire opérationnel dès la 1ere compil.

Mais bon, aujourd'hui, on apprend à paramétrer des framework et non à programmer.

Le 07/03/2024 à 10h 19

À la fois, si on part de ce principe,
-> on interdit les couteaux (ou on écrit dessus "les couteaux tuent")
-> on interdit les voitures, perceuses ....
Et aussi les éditeurs de code parce que ils n'ont pas de garde-fou et que l'on peut écrire du code malicieux avec

Pour quel objectif je dirais ?
Est ce que les produits finaux peuvent être mis entre toutes les mains ?
L'utilisateur final doit il être dégagé de toutes responsabilité ? (Chez Apple, c'est ce qu'il se passe)

Est ce que MS se rend compte de l'aspect boite de pandore de copilot ? Le paramètre nature humaine est l'un des plus difficiles à gérer voire le plus difficile. Quand on voit la quantité de code nécessaire pour le contrôle de saisie.

Le 07/03/2024 à 08h 19

Je vois ce que tu veux dire ... mais n moment dans la chaîne humaine, il faut bien un maillon à l'esprit responsable pour éviter ce genre de dérives.

Refiler un outil sans garde-fous à des irresponsables ne peut que générer des problèmes. C'est du niveau « idiocracy »

Le 07/03/2024 à 08h 15

Pas mieux !
Le pire dans l'affaire c'est la demande du service juridique ... :keskidit:

Visiblement, CoPilot doit sortir contre vents et marées, prêt ou pas, avec sous sans âge minimum et surtout le plus vite possible avant qu'il y ait un cadre juridique sur le sujet.

MS n'a pas un comportement responsable avec cette technologie nouvelle où le champ du possible est bien compliqué à périmètrer.

Le 05/03/2024 à 10h 30

A vrai dire, pour faire bouger Tesla, faut taper sous la ceinture du père Musk.
CàD lui plomber les cours de bourse de Tesla en pourrissant X/Twitter et en revendant massivement les actions Tesla. Les fonds d'investissements peuvent reporter leur capitaux sur d'autres valeurs boursières. Ainsi des ventes massives d'actions Tesla feront mécaniquement descendre le cours ... et ça, ça fait sortir le Musk du bois.

Le 19/01/2024 à 18h 29

Non, c'est une offre pro ou même pour les FAI.

À la limite à comparer au tarif de collecte Internet en France.

Ben non, c'est l'offre grand public.

Le 19/01/2024 à 16h 35

Si tu as encore de l'électricité.
Linus Torvald a subi une tempête de neige : plus d'électricité ni d'internet pendant 4 ou 5 jours.

Le 19/01/2024 à 16h 33

Ben en fibre grand public, tu as la Freebox Delta à 8Gbs/700Mbs pour 40€/mois pendant un an puis 50€/mois.

Le 16/01/2024 à 07h 56

Difficile de commenter cette information ... soit on dit ce qu'on pense, soit on fait attention à ne pas déclencher une crise d’hystérie chez les bien-pensants persuadés que « tout le monde il est beau, tout le monde il est gentil ».

Le 03/01/2024 à 14h 50

Ne pas oublier le mouse.com AVANT !! ^^
(ou le mouse.sys dans le config.sys)
Que la déclaration des interruptions/mémoire corresponde bien au straps de la carte son... pour avoir un ordinateur MULTIMEDIA :D

Et les cartes d'extension mémoire sur bus ISA ? : IRQ + base address + mapping
(386sx avec 3 Mo ... la rolls !)

Le 03/01/2024 à 13h 19

Non. À l'époque, Windows ne savait même pas encore qu'il allait exister.

Oui et par rapport à la petite phrase de l'article ?

Le 03/01/2024 à 11h 33

Ceci dit, il n'y avait pas beaucoup de choix non plus ... et c'était sans carte réseau ;)

Le 03/01/2024 à 11h 31

Petite précision, à l'époque MS-DOS était l'OS et Windows une bête application graphique qu'il fallait lancer en ligne de commande ou pour les plus dégourdis depuis l'autoexec.bat

Le 17/11/2023 à 13h 51

Yes, mais on parlait du cas d’usage spécifique des très grosses volumétries et du réseau 10G.
Volumétries que l’on n’atteint que dans le cas des gros jeux, et de gros cas d’usages spécifiques pas grand public.
S’il s’agit d’avoir son drive Google et d’aller sur Netflix en 4K sur trois écrans en même temps, le 10G n’a aucun sens, 1G est largement suffisant.
Les fournisseurs de cloud ne fournissent pas de débit de synchro très élevé (je doute même que tu atteignes le 1G). Et de toute façon, pour accéder à tes photos, tes vidéos de vacances, tes pdf et tes word, bon, 1G ou 10, c’est impossible de voir la différence.
Tes données restent synchronisées en local en cache pour les plus fréquemment accédées, ce qui n’élimine pas complètement la nécessité d’avoir du sto local.
Donc mon point, c’est que si tu as 1G et des usages non spécifiques, s’il reste des euros, il vaut mieux acheter du sto que du 10G.
Par contre, 24 To, on délire. Une famille moyenne doit avoir une dizaine de fois moins de données à stocker, en étant très conservateurs.

Oui la tendance aujourd’hui est celle que tu décris … mais pour combien de temps encore ?



Les scandales de protection de la vie privée dans les clouds vont bien finir par arriver à plus ou moins long terme. Du coup, je prends de l’avance et je stocke @home.


Le 17/11/2023 à 11h 03

As tu une idée de l’ordre de grandeur du coût des outils nécessaires par rapport à ce tuto ?

Le 16/11/2023 à 15h 33

perso je t’enterai bien de passer de la fibre. mais comment passer dans les gaînes dans le mur ?



j’ai déjà du CAT7a qui passe et je pourrais passer une fibre en plus. mais faut pouvoir souder à l’autre bout. par ce que passer le connecteur fibre dans la gaine même pas en rêve.



(si tu as , ou quelqu’un d’autre des idées là dessus je suis preneur )

C’est ce que qu’il m’est arrivé : remplacement d’un Cat7 dans une gaine de 20 mm.



J’ai fait intervenir (par connaissance) un poseur de fibre avec sa machine à souder (5 000€ la machine quand même). Mais bon, en dehors de la soudeuse, il faut avoir une sacrée formation sur le sujet car les étapes et les contraintes à respecter ne s’inventent pas. Ce n’est pas avec un tuto sur tiktok que tu peux souder des fibres :D



Bref, il m’a posé un câble à 12 brins et m’en a soudé 8 (4 paires LC) dans chacun des 2 boîtiers aux extrémités. Pour l’instant j’ai : transceiver optique dans la freebox delta -> Fibre -> Switch Mikrotik 4 SFP+ -> DAC passif 3m vers les 2 PC principaux + transceivers RJ45 / Cat8 / adaptateur réseau usb C à 2.5 Gbs pour le PC du taf.



Ceci dit, si tu as des gaines de 30 mm ou plus, peut être que des jarretières toutes prêtes pourraient passer. Dans ce cas, tu t’évites le passage d’un technicien.

Le 16/11/2023 à 13h 34

Franchement, autant passer au 10G direct :)
Je ne vois pas vraiment le 2,5G comme une solution à un problème, en se démerdant bien, le 10G est quasiment au même prix.

Nan, les tarifs ne sont pas linéaires avec la bande passante en fonction de la techno utilisée.



En cuivre : il te faut du cat7 voire cat8. Les transceivers cuivre consomment de folie ( >> 0.5W) et chauffent pour une distance pleine puissance allant jusqu’à 30 m en descente avec le vent dans le dos. Un transceiver SFP+ / RJ15 10 Gbs = 70€. Les cartes réseau en PCIe ont besoin d’un refroidissement. Les adaptateurs USB / Ethernet fonctionnent correctement à 2.5 Gbs et après c’est la misère.



En optique / DAC : pour des tarifs 2 à 3 fois inférieurs (transceiver SFP+ / LC multimode short range [CàD 300 m] il faut compter 24€). Les jarretières optiques se trouvent moins cher que beaucoup de câbles ethernet etc …

Le 16/11/2023 à 13h 24

Je croyais être le seul idiot à avoir acheté un 5950X 😅



Et oui, Steam est capable d’envoyer à des débits bien supérieurs à 200Mo/s, mais la moyenne que j’observe chez moi, c’est de l’ordre de 200Mo/s.



(et je ne suis pas tant limité par le hardware, entre les SSD dans la machine, ça va bien à 2Go/s parfois)

Nan, nan, t’es pas tout seul. Là où mon 5950x me sert le plus, c’est sur les compilations de noyaux : 10 à 12 min (en signant le noyau) suivant les versions (c’est de plus en plus long ceci dit).



Les Xeon Gold du DC du taf me font l’exercice en un peu plus d’une heure (sans signer le noyau).

Le 16/11/2023 à 13h 16

Tu as confiance dans la puce tpm d’un pc? Nan parceque c’est juste le discours du fabricant de la carte mère hein.

Non plus … ça ne serait que moi, j’utiliserais un HSM.