Nicolas Boulay a écrit 16011 commentaires

  • [^] # Re: Dans l'art voluptueuse de ne rien comprendre

    Posté par  (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 2.

    Si je reprend le code d'exemple :
    ça c'est bien un gadt ?
    type 'a exp_dic =
    {lit : int -> 'a;
    neg : 'a -> 'a;
    add : 'a * 'a -> 'a};;

    ça c'est la définition de la sémantique de "Lit" qui retourne une fonction de construction d'un type ?
    let lit : int -> exp = fun x ->
    {expi = fun d -> d.lit x}

    Que signifie la syntaxe : {expi = …} ? C'est la création d'un type avec un champs expi ?

    ça c'est l'éval :
    let eval1 : exp -> int = fun {expi = e} ->
    e {lit = (fun x -> x);
    neg = (fun e -> - e);
    add = (fun (e1,e2) -> e1 + e2)};;

    Que signifie la syntaxe "fun {expi = e}" ? et qu'est-ce que le terme "e {…}" ?

    "La première sécurité est la liberté"

  • [^] # Re: Dans l'art voluptueuse de ne rien comprendre

    Posté par  (site web personnel) . En réponse au journal EDSL et F-algèbres. Évalué à 7.

    J'ai toujours rien compris non plus. Mais je tente de comprendre pour simplifier une fonction de vérification du modèle et pas seulement d’exécution (ou alors une exécution qui rend vrai/faux). Le modèle récursif est élégant, mais devient vite imbitable avec des arbres.

    "La première sécurité est la liberté"

  • [^] # Re: J'ai jamais tout compris aux chaines de blocs!

    Posté par  (site web personnel) . En réponse au journal Microsoft s'intéresse au blockchain. Évalué à 10.

    " Quand on mine, on résout quoi exactement?"

    De mémoire, pour le bitcoin, tu dois trouver un nombre 128 bits, qui, ajouté à un bloc donne un hash SHA-256 avec un nombre déterminé de bit à zéro.

    Donc, tu testes un grand nombre de nombre pour en trouver un.

    " Si toutes les transactions jamais faites par BC sont gardées sur une chaîne, quelle taille fait cette chaîne aujourd'hui?"

    Qq centaine de Go de mémoire.

    " Comment peut-on demander à un réseau de 1 milliards de noeuds de rester synchronisé sans que des bouts soient ajoutés ici et là dans plusieurs branches?"

    Par un système de vote à la majorité, et une vérification des autres blocs et détection d'erreur qui ferait refuser les blocs douteux;

    " Comment peut-on savoir si la majorité du réseau approuve la transaction sans savoir combien de noeuds existent?"

    sur bitcoin, on attend juste la réponse de quelques noeuds pas de tous. Cette latence est en train de devenir un problème. (gros mineur en chine avec peu de bande passante)

    " Si un État créé 10millions d'"utilisateurs" et donc autant de noeuds, peut-il saborder le système en invalidant les transactions qui lui déplaisent?"

    Oui si il dispose plus de 50% de la puissance de calcul, mais cela ne serait pas discret. De plus, les noeuds sont des asic plus des PC ou même des cartes graphiques puissantes.

    " On dit que les utilisateurs restent anonymes derrière une clé publique, mais si l'autre partie identifie l'utilisateur de la clé, il peut ensuite pister toutes ses transactions en surveillant la chaîne?"

    Oui, c'est la différence entre le pseudonymat et l'anonymat.

    "Et pour finir: comment on fait un système d'identification avec ça??"

    Si tu connais le système de certificat TLS actuelle, tu sais qu'une clef est connu si elle est signé par une compagnie dont les clefs sont dans les navigateurs. Il faut donc leur faire confiance. Ici, la clef est simplement stocké dans la blockchain.

    "La première sécurité est la liberté"

  • [^] # Re: C'est long ce salmigondis

    Posté par  (site web personnel) . En réponse au journal Article intéressant sur le marché du PC. Évalué à 3.

    C'est totalement impensable d'avoir de la RAM déporté dans le docking station, c'est même du absolument n'importe quoi d'un point de vue hardware (sauf à faire un RAM disque, mais ce n'est pas ce que l'on cherche à faire).

    Switcher de cpu demande bien plus de travail que de simplement redémarrer. Cela pourrait être fait par intel : un moyen de transfert de la mémoire, et de l'état du processeur, et un moyen de démarrer les périphériques utilisés : un peu comme la gestion de la veille en RAM, mais avec un réveil sur une autre machine.

    On utilise déjà des docks, le but est vraiment d'avoir un cpu puissant sur les bureau. L'idée de rajouter un moyen de refroidissement est pas mal, il pourrait passer de 25W à 100W d'enveloppe thermique. Cela pourrait être fait par n'importe quel constructeur en plus. On peut même imaginer un mini watercooling pour faire ça.

    "La première sécurité est la liberté"

  • [^] # Re: C'est long ce salmigondis

    Posté par  (site web personnel) . En réponse au journal Article intéressant sur le marché du PC. Évalué à 2.

    Il y a souvent des cas spéciaux pour les périphériques bootables (cf les SSD par PCI). Je n'avais pas compris que c'était possible.

    "La première sécurité est la liberté"

  • [^] # Re: C'est long ce salmigondis

    Posté par  (site web personnel) . En réponse au journal Article intéressant sur le marché du PC. Évalué à 2.

    C'est presque ça. Je n'ai pas l'impression que tu puisses booter la machine externe depuis le disque de la machine en TDM. Le but est de pouvoir lire le contenu comme un disque externe.

    L'idéal serait d'avoir des stations de travail diskless. Pour 1000€, tu peux avoir une bombe (i7 32Go de ram), ce qui n'est pas le cas pour un portable.

    "La première sécurité est la liberté"

  • [^] # Re: C'est long ce salmigondis

    Posté par  (site web personnel) . En réponse au journal Article intéressant sur le marché du PC. Évalué à 3.

    En gros, tu veux un bon écran anti-reflets en full hd ou plus, en 11" ou 13" (l'idéal pour moi).

    Ensuite, la puissance nécessaire dépend des usages.

    Mais typiquement, en dev, on veut être très mobile (1.5kg max avec alim, 10h d'autonomie) et avoir de la puissance, ce qui n'est pas possible avec une telle mobilité. Je rève donc que ce genre d'ultraportable puissent se connecter à des stations de travail en tant que "disque dur".

    Avoir 2PC est très compliqué à gérer, il faut dupliquer tous les logiciels et les données. Si on pouvait partager un SSD entre 1 machines fixes puissante et un ultra portable, cela serait top.

    En plus, on pourrait avoir des stations de travail "agnostique", n'importe qui pourrait se brancher dessus, et avoir son environnement.

    Pour faire cela, il faut une certaine souplesse dans l'OS. Linux ne semble pas poser de problème, mais Windows doit avoir suffisamment de protections anticopies, pour que cela ne marche pas.

    "La première sécurité est la liberté"

  • [^] # Re: CAO en SAAS

    Posté par  (site web personnel) . En réponse au journal Le matériel libre où en sommes nous ?. Évalué à 3.

    " l'on fait du hardware sont enormes pour constituer par exemple les bases de references de composants"

    Je n'ai jamais compris pourquoi il fallait toujours redessiner l'empreinte d'un composant, alors que les boitiers suivent tous des standards (DIP, SO,…). Un composant devrait simplement référencer ce genre d'empreinte, et permettre de nommer les pins.

    "La première sécurité est la liberté"

  • [^] # Re: C++, où quand le code asm généré est plus lisible

    Posté par  (site web personnel) . En réponse au journal [C++14 ] Expressions template pour les nuls. Évalué à 1.

    "Le résultat est très verbeux, peut-on faire plus simple ? Comment se gère ce problème dans les autres langages ?"

    C'est un problème de meta-programmation. Tu as une forme de code qui tu veux transformer dans une autre forme qui se compile bien. Cette transformation se fait souvent au runtime (tensorflow).

    Je ne connais pas d'autres langage qui gère correctement la metaprogrammation qui fonctionne à la compilation. Il me semble que Lisp le fait, et Rust avec ses "macro".

    "La première sécurité est la liberté"

  • [^] # Re: FUD

    Posté par  (site web personnel) . En réponse au journal La Suède abandonne les paiements en espèce — ne devrait-on pas s'en inquiéter?. Évalué à 2.

    Dans mon premier pret, il y avait une clause qui disait explicitement que le taux montait de 0.5 point en cas de non domiciliation.

    Il faut ensuite aller en justice, un avocat c'est minimum 5000€ voir 10 000 si tu n'as pas chance. C'est très loin de ce que tu gagnes à avoir 2 banques.

    "La première sécurité est la liberté"

  • [^] # Re: FUD

    Posté par  (site web personnel) . En réponse au journal La Suède abandonne les paiements en espèce — ne devrait-on pas s'en inquiéter?. Évalué à 2.

    Ce genre de banque en deuxième banque semble pas mal pour la qualité des services. Mais souvent tu choisi ta banque en fonction du meilleur taux pour un crédit immobilier, car ils exigent la domiciliation du salaire. Ils ne veulent pas non plus un virement automatique qui vire tout sur le compte d'une autre banque. Il me semble que ces obligations sont illégales (vente lié) mais dans les faits…

    "La première sécurité est la liberté"

  • [^] # Re: FUD

    Posté par  (site web personnel) . En réponse au journal La Suède abandonne les paiements en espèce — ne devrait-on pas s'en inquiéter?. Évalué à 4.

    Le problème est que les français sont plus fidèle à leur banque qu'à leur conjoint. Cela ne pousse pas du tout à la concurrence.

    J'avais un collègue d'origine d'un pays de l'est qui trouvait dingue de devoir payer les services bancaires de base comme la CB. C'était toujours gratuit dans son pays.

    "La première sécurité est la liberté"

  • [^] # Re: FUD

    Posté par  (site web personnel) . En réponse au journal La Suède abandonne les paiements en espèce — ne devrait-on pas s'en inquiéter?. Évalué à 4.

    "Depuis que ma banque m'a bloqué mon compte pour "besoin de mettre a jours vos renseignements" (en plus la machine buggait pas moyen de mettre a jours, j'ai du passer par le guichet heureusement ouvert), je réfléchis sérieusement à comment me passer des banques :P"

    Si tu tombes sur du mauvais pain, tu changes de boulangeries, tu n'arrêtes pas de manger du pain…

    "La première sécurité est la liberté"

  • [^] # Re: Et les Panama Papers, alors ?!?

    Posté par  (site web personnel) . En réponse au journal La Suède abandonne les paiements en espèce — ne devrait-on pas s'en inquiéter?. Évalué à 6.

    Ils sont loin d'être condamné.

    "La première sécurité est la liberté"

  • [^] # Re: Gérer les fichiers

    Posté par  (site web personnel) . En réponse à la dépêche Focus sur les performances avec Fim 1.2.0. Évalué à 2.

    "Tout cela est diffile a réaliser avec des script qui font du hashage brutal de tous les fichiers d'un répertoire."

    J'aurais tenté avec une lecture de l'arborescence complète, puis comparaison byte à byte en cas de collision nom/taille. Faudrait que je tente le coup avec des morceaux d'un ancien code.

    "La première sécurité est la liberté"

  • [^] # Re: fichier en erreur ?

    Posté par  (site web personnel) . En réponse à la dépêche Focus sur les performances avec Fim 1.2.0. Évalué à 2.

    En fait, il faudrait un répertoire de référence, et des copies, si un fichier est corrompu dans le répertoire de référence, on le remplace par une copie (même nom, même taille, voir même path relatif).

    "La première sécurité est la liberté"

  • [^] # Re: Un chouia simpliste ?

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 3.

    Je parlais de performance à haut niveau. Souvent, les personnes veulent du C++ pour aller vite, alors que c'est leur architecture de message pourri réseau (round trip) qui pose problème, ou des appels systèmes trop nombreux, ou un nombre de refresh pas du tout maitrisé, etc…

    C'est toujours le même problème : avec un code de "hack", on peut aller 10x plus vite, avec le bon algo 1000x.

    Je répondais surtout à une personne qui voulait faire du "beau code", et un logiciel rapide sera toujours plus apprécié qu'un logiciel lent.

    "La première sécurité est la liberté"

  • [^] # Re: chi va piano va sano

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 2.

    Non la complexité cyclomatique simplifie trop le problème. Elle compte juste le nombre de branche dans une fonction, or le contenu de chaque test peut être indépendant. La différence, c'est entre n tests et 2n.

    Elle ne permet pas non plus de calculer les dépendances entre fonction (couverture d'instance). Typiquement une fonction qui en appel une autre. C'est le nombre total de chemin de l'executable qui compte pas vraiment, la somme des chemins de l'ensemble de chaque fonction sans tenir compte des appels.

    Ensuite, c'est surtout les "états" différents qui importent, plus encore que les chemins pour y arriver (même si c'est lié). Dans une machine d'état, c'est le nombre d'état qui compte, plus que la complexité des conditions de transition.

    "La première sécurité est la liberté"

  • # fichier en erreur ?

    Posté par  (site web personnel) . En réponse à la dépêche Focus sur les performances avec Fim 1.2.0. Évalué à 8.

    Est-ce qu'il y a une détection des fichiers en erreur ?

    Mon cas d'usage est celui de copies multiples de répertoire contenant mes archives photos (sauvegardes sur différent support faites au cours du temps). Parfois des images sont corrompues. Comment faire pour "remerger" toutes ces copies en un seul répertoire propre de référence.

    "La première sécurité est la liberté"

  • [^] # Re: Moi aussi !

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 2.

    Oui, mais à la fin, tu dois avoir moins de code, et ne pas le garder juste parce que tu t'es fait chier à l'écrire.

    "La première sécurité est la liberté"

  • [^] # Re: Un chouia simpliste ?

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 4.

    J'ai compris qu'un beau code n'est pas un code ultra générique, mais un code qui se lit comme une histoire. J'ai compris ça en lisant du code de hocwp, je ne sais pas si il est encore sur le site. C'était juste limpide. Un code comme ça, peut vivre longtemps.

    En informatique, ce n'est pas le code l'important, mais la fonction a réaliser, la maintenabilité, l'absence de bug, la vitesse d’exécution.

    J'ai vu une fois du beau code bien générique d'un code "professionnel". Il s'agissait de faire des filtres numériques (type O = I(n)a + I(n-1)*b +I(n+2)*c…), c'était généralisé avec une gestion de liste et des fonctions utilitaire. Or la plus part des filtres était d'ordre 2, ce qui aurait du faire des équations du genre "return ab+c*d;"…

    "La première sécurité est la liberté"

  • [^] # Re: chi va piano va sano

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 3.

    Pour arriver un peu à la même chose, je raisonne en cas de testes. Dans un monde rêvé, où tous les cas seraient testés, combien de tests cela fait ? Cela détermine le nombre d'état possible du code, et autant de problèmes potentiels, surtout après modification (non régression plus complexe).

    Cela permet de se rendre compte de la qualité d'un code "stateless", ce qui évite une grande quantité de teste finalement inutile. Cela permet de séparer très clairement les données du logiciel, des données temporaires inutiles. Cela permet d'identifier des "états stables" qui permet d'y retourner en cas de plantage ou d'exception non prévu, voir d'avoir un "reset()" propre, qui évite de recréer toujours le même objet. Cela permet de limiter les données du logiciel aux stricts nécessaire aux traitements, ce qui évite de trainer toutes les entrées et ne plus savoir ce qui est valide ou non, modifier ou non, etc… Pour faire cela, cela impose de gérer les erreurs avant le traitement, cela simplifie le traitement qui considère les entrées juste, et cela permet de faire de très joli message d'erreur, car on est très proche de l'entrée de pipeline de traitement (on dispose de tous les fichiers et leur numéro de ligne).

    "La première sécurité est la liberté"

  • [^] # Re: Moi aussi !

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 4.

    Quand tu commences à écrire du code en plus, au lieu d'en effacer, tu va dans le mauvais sens. C'est un peu le principe de la factorisation.

    "La première sécurité est la liberté"

  • [^] # Re: Un chouia simpliste ?

    Posté par  (site web personnel) . En réponse au journal Lutter contre l'overengineering. Évalué à 7.

    Surtout que la plus part du temps, c'est plus simple de réécrire le code que de jongler avec la "souplesse" de l'architecture complexe, qui de toute façon ne serait jamais assez souple pour les besoins futurs.

    "La première sécurité est la liberté"

  • [^] # Re: blockchain

    Posté par  (site web personnel) . En réponse à la dépêche Point d'étape sur loi française de finances 2016 (article 88) et les logiciels libres de caisse. Évalué à 2.

    Elle ne protège pas du bouton vert sur la caisse "passer cette transaction au noir parce que le mec paye en liquide".

    La loi a changé, si un vendeur de machine est pris, il est solidaire des fraudes faites avec… Je ne suis pas sûr que cela en vaut la peine.

    "La première sécurité est la liberté"