benja a écrit 1211 commentaires

  • [^] # Re: Essaye ça

    Posté par  . En réponse au message alternative (plus rapide) à find pour rechercher par date de modification. Évalué à 1. Dernière modification le 28 mai 2018 à 01:01.

    Attention comme le dit bertrand plus bas au dépassement de la taille maximale d'une ligne de commande.
    Bref, il vaut mieux utiliser une boucle cat | while read f; do ... $f; done que l'expansion for f in "`cat ...`" (et tant qu'à faire se passer du fifo: find ... | while read).

  • [^] # Re: find exec +

    Posté par  . En réponse au message alternative (plus rapide) à find pour rechercher par date de modification. Évalué à 1.

    Nope, comme l'indique le man, il se comporte comme xargs.
    Ceci dit, ta remarques est pertinente dans le cadre générale et en l'occurrence à l'astuce de lfb4.

  • [^] # Re: Point fixe

    Posté par  . En réponse au journal Les échecs en échec. Évalué à 3.

    L'impertinence et l'universalisme de sa réaction, l'universalisme qui est une propriété essentielle de l'humour—il me semble --, viendrait du constat que la plupart d'entre nous est incapable de distinguer—je te cite—"du vide derrière des mots complexes" d'un savoir scientifique.

    L'insulte, s'il doit y en avoir une, est donc probablement dirigée vers notre société elle-même, incapable de nous éduquer suffisamment. Tout n'est peut-être pas perdu car il-y-a encore, heureusement, certaines âmes dont la mission est de nous élever. Pour cela, je te remercie ;o)

  • [^] # easy peasy

    Posté par  . En réponse au message MV de tout les fichiers et sous dossier ayant moins de une semaine. Évalué à 1. Dernière modification le 04 novembre 2017 à 19:15.

    find . -depth -mtime +6 -a \( -type d -exec /bin/echo mkdir /dest/{} \; -o -type f -exec /bin/echo mv {} /dest/{} \; \) 2> /dev/null

    Mtime à adapter en fonction de ce que tu veux (et oui, le titre de ton sujet est en contradiction avec son corps).

    De rien, man est ton ami pour les explications… (édit je m'adresse à l'auteur de la question)
    (edit2: ça ne marche pas en fait… désolé j'avais voulu être plus astucieux, mais bon… il reste la possibilité de créer d'office les répertoires en bougeant le test mtime dans la branche qui copie les fichiers, et éventuellement avoir une autre commande pour purger les répertoires vides)

  • [^] # Re: Carte Graphique? Sans doute...

    Posté par  . En réponse au message DEBIAN plantage. Évalué à 1. Dernière modification le 29 août 2017 à 02:07.

    étant donné la forte similitude entre les deux crashs

    Il m'apparaît à l'instant qu'il s'agit de deux photographies du même crash… Enfin bon, le raisonnement vaut pour lui-même. À vous de voir donc si le pilote "nouveau" est régulièrement impliqué dans d'autres crashs constatés. D'autant plus que vous avez déjà pu mettre en cause cette carte graphique.

  • [^] # Re: Carte Graphique? Sans doute...

    Posté par  . En réponse au message DEBIAN plantage. Évalué à 2.

    Cela pourrait encore simplement être la conséquence d'un bug dans le pilote de votre carte (Notons les mentions récurrentes de "nv04". de "nvkm" et de "nouveau" dans la trace de pile d'appelle. Tant qu'à faire, et étant donné la forte similitude entre les deux crashs, il serait pertinent d'effectuer une recherche google sur la transcription de celle-ci… avec un peu de chance ce problème est connu (ou en passe de l'être… cf. point 42)).
    J'essayerais encore les possibilités suivantes, dans l'ordre :

    1) Essayer un noyau plus récent, issue de la branche en développement de debian (les pilotes y étant inclus). Télécharger le paquet ici https://packages.debian.org/sid/amd64/linux-image-4.12.0-1-amd64/download , ensuite l'installer avec "sudo dpkg -i lefichier.deb" .

    2) Idem, mais issu de la branche expérimentale: https://packages.debian.org/experimental/amd64/linux-image-4.13.0-rc5-amd64/download . Notez que ce noyau est en préversion et probablement pas aussi fiable que le précédent.

    3) En dernier recours, utiliser le pilote propriétaire conçu par nvidia. Cela pourrait se réduire à lancer "sudo apt install nvidia-driver" en admettant que les dépôts "contrib" et "non-free" soient activés. Cf. https://wiki.debian.org/NvidiaGraphicsDrivers

    42) Si parvenu à l'étape 3 vous ne rencontrez enfin plus de problème, vous avez plus que probablement découvert un bug dans le pilote libre de votre carte. Les développeurs (et les utilisateurs) de celui-ci vous en seront dès-lors très reconnaissants de leur communiquer son existence ainsi que toute information nécessaire à sa résolution. C'est par ici que ça se passe: http://nouveau.freedesktop.org . Notez aussi qu'au moins un de ses développeurs fréquence ce site.

  • [^] # Re: Sauvegarde disque

    Posté par  . En réponse au message Recherche logiciel de restauration/clonage de configuration d'OS. Évalué à 3. Dernière modification le 27 juillet 2017 à 00:31.

    PS:
    Pour répondre ta question "Comment distinguer la version 32/64 bit d'un OS du jeu d'instruction utilisé", ben on ne sait pas… Il faut faire confiance aux distributions, ou bien tout recompiler soit-même et vérifier les options de compilation utilisées. Par exemple, le i386 de debian ne fonctionne plus sur un i386, et même plus sur un i486 si je ne me trompe pas. Ubuntu est plus stricte encore, leur i386 est en fait un i586/i686; ubuntu ne tournant plus sur certains processeurs amd (k6-II par exemple) ou cyrix car utilisant des instructions non reconnues par ceux-ci.

    En règle générale, on compile pour le dénominateur commun d'une famille d'architecture, en l' occurrence soit x86_64 a.k.a amd64 soit x86 a.k.a. IA32, et certains programmes ou certaines bibliothèques vont choisir à l'exécution un code optimisé pour tel ou tel processeur.

  • [^] # Re: Sauvegarde disque

    Posté par  . En réponse au message Recherche logiciel de restauration/clonage de configuration d'OS. Évalué à 1.

    Au contraire, prends plutôt la version 64 bits qui est tantôt appelée amd64 (parce que amd a été le premier à vendre cette archi et a aussi implémenté son support dans le compilateur gcc IIRC), tantôt appelée x86_64 voire x64 et qui fonctionne que ce soit sur de l'intel (aussi appellé EMT64 arf:p) ou de l'AMD. Tu pourras au besoin faire tourner des applications 32 bits aussi; l'inverse n'étant pas possible (c.-à-d. faire tourner une application 64bits sur un système 32bits).

  • # Power ?

    Posté par  . En réponse au journal Free Hardware Design, pour que le débat continue et que les initiatives se multiplient !. Évalué à 3. Dernière modification le 20 juillet 2017 à 08:04.

  • # Brute force

    Posté par  . En réponse au message [sed] Remplacer du texte contenu dans une variable et contenant des () et *. Évalué à 1. Dernière modification le 23 mai 2017 à 00:33.

    ancienne_valeur="`echo "$ancienne_valeur" | sed 's/./[&]/g'"
    nouvelle_valeur="` idem  | sed 's/&/\\&/g'`"
    

    À priori cela devrait marcher dans la plupart si pas tous les cas (à tester…), l'idée est d'échapper systématiquement tous les caractères par un singleton, ce qui empêche leur interprétation en tant que méta-caractère.

  • [^] # Re: pour ceux qui veulent une preuve du soutient de stalmann

    Posté par  . En réponse au journal Le candidat du logiciel libre. Évalué à 1.

    Avant d agir il faut te poser la question de la conséquence de tes actes.

    Je pense l'avoir fait en 2 temps: 1) je l'ai aidé, de bonne fois, sur une question qu'il a posté dans le forum (je précise que j'avais déjà pris connaissance d'un des ses commentaires nauséabond avant) 2) lorsque j'ai posté mon message ci-dessus, qui, bien que sous la forme d'une provocation, avait pour but d'essayer d'entamer une remise en question par un renversement de rôle.

    Alors probablement que les "conséquences" ne sont pas celles que j'aurais pu espérer; et ce bien que le renversement de rôle est maintenant total grâce à ton intervention complice. Alors si Zurvan n'arrive pas à s'identifier à un immigrant en demande d'aide, peut-être qu'il arrivera à s'identifier au punisseur dont les actes ne portent pas les conséquences attendues ? La question mérite d'être posée…

  • [^] # Re: pour ceux qui veulent une preuve du soutient de stalmann

    Posté par  . En réponse au journal Le candidat du logiciel libre. Évalué à -2. Dernière modification le 15 avril 2017 à 23:54.

    La question mérite effectivement d'être posée…

    ;-) (pas sûr que tout le monde suive)

  • [^] # Re: pour ceux qui veulent une preuve du soutient de stalmann

    Posté par  . En réponse au journal Le candidat du logiciel libre. Évalué à -1.

    Ça me fait mal de penser que j'ai déjà perdu mon temps à t'aider dans les http://linuxfr.org/forums Mon avis, c'est qu'un président qui réussirait à "remplacer" des gens de ton espèce—par qui que ce soit—fera certainement progresser sa société.

  • [^] # Re: Aucun soucis

    Posté par  . En réponse au message IPv6 public mais IPV4 privé. Évalué à 1. Dernière modification le 25 janvier 2017 à 21:58.

    Je crois que le groupe de mot importants c'est "réseau privé ipv4". On peut mettre un tunnel ipv6 sur tous les postes inviduellement, on perd juste la notion de réseau privé.

    (De plus, techniquement, avec un tunnel tu crée un mini réseau privé IPv6 local à la machine et à sa gateway. Donc non, désolé, c'est faux, on ne peux pas faire tenir 128 bits dans 32 bits, on peut tourner cela comme on veut.).

  • [^] # Re: Chaussette

    Posté par  . En réponse au message Communication inter-processus. Évalué à 1. Dernière modification le 25 janvier 2017 à 08:41.

    note: tu peux utiliser la construction with open() as _fifo: qui te permet de scoper ton FD, pour le fermer automatiquement lorsque que le cours d'exécution sort du scope, et donc aussi en cas d'exception non rattrapée :)

  • [^] # Re: Aucun soucis

    Posté par  . En réponse au message IPv6 public mais IPV4 privé. Évalué à -1.

    Aucun soucis

    Au contraire, c'est impossible.

  • [^] # Re: Chaussette

    Posté par  . En réponse au message Communication inter-processus. Évalué à 3.

    , vous en pensez quoi ?

    os.read(os.open(fifoFilename, os.O_NONBLOCK | os.O_RDONLY)

    C'est normal que tu épuises les fds disponibles car tu ne fermes pas ce qui est ouvet (en fait, tu attends que le GC le fasse, ce qui pourrait expliquer le pourquoi "avec un sleep ça marche").

    Typiquement, tu ouvres le fichier FIFO à l'extérieure de la boucle. Encore mieux, tu peux l'ouvrir avant de lancer ton subprocess (qui, in fine, n'est rien d'autre qu'un fork et donc hérité les FDs ouverts sauf si close_on_exec). Et puis, toujours mieux, au lieu d'utiliser un fichier fifo, tu peux utiliser un pipe anonyme. Mais… mais… Attendez ? Ne serait-ce pas ce que que stdin=subprocess.PIPE fait ? Mais oui :-) En fait, tu n'as qu'à faire des read/write sur ce stdin (en mode bloquant, de préférence), et tu l'as déjà ton IPC. :-)

    Utiliser des sockets est une autre option qui permet notamment de faire un select(), i.e. de multiplexer avec d'autres connections réseaux.

  • [^] # Re: semops

    Posté par  . En réponse au message Sémaphore en C. Évalué à 1.

    Note2: Ton while (mdispo[num]==true) num++; n'a aucune chance de marcher avec des forks car tu n'as plus de partage de la mémoire entre les process, ce qui fait qu'on utilise un sémaphore en premier lieu… :p Au contraire, avec des threads, tu peux faire cela et utiliser un mutex (et tu n'as plus besoin de sémaphore…).

  • # semops

    Posté par  . En réponse au message Sémaphore en C. Évalué à 1. Dernière modification le 26 décembre 2016 à 06:05.

    Tu as 2 problèmes:
    1. Partager la ressources par X (=3) processus. Chaque processus décrément le SNlibre (en mode bloquant), par contre il ne faut pas oublier d'initialiser le SNlibre à X au début (ce que tu as oublié il me semble: à faire dans le parent, logiquement…).
    2. Trouver un numéro de ressource unique. Je te propose l'algorithme suivant: tu essayes de décrémenter de Y(=X) puis d'incrémenter de Y-1 en mode non bloquant, le tout dans une même semop. Si ça ne marche pas, tu réessaye avec avec Y=Y-1 jusqu'à Y=1… Le numéro de ressource vaut Y. À nouveau il faut penser à mettre le sémaphore à X au début…

    Si je ne m'abuse pas, tu peux combiner 2 et 1 et n'utilise qu'un seul sémaphore… ;-)

    Note: par pitié, éviter ce genre d'horreur (au pire… utilise stdbool). Je te laisse chercher pourquoi ça n'est vraiment pas une bonne idée ;-)


    typedef enum boul
    {true, false} boul;

  • # bug

    Posté par  . En réponse au message Multiprocessing. Évalué à 2.

    barracks = [Pool(dormitorySize)] * (int(nurserySize/dormitorySize) + 1)

    Probablement pas ce que tu veux faire ("un ensemble de N dortoirs"), tu utilises toujours le même pool.

    In [5]: [ Pool()] * 2
    Out[5]:
    [<multiprocessing.pool.Pool at 0x7f79ba6ff748>,
     <multiprocessing.pool.Pool at 0x7f79ba6ff748>]
    
  • # Réservés aux barbus

    Posté par  . En réponse au journal Les Init alter-natifs. Évalué à 4. Dernière modification le 04 décembre 2016 à 21:03.

    Retours d'expérience appréciés !

  • [^] # Re: Tagless final un chemin vers MetaOCaml en bibliothèque ?

    Posté par  . En réponse au journal Découvrir MetaOCaml dans son navigateur. Évalué à 2.

    Mon instinct est que tu n'a pas compris le sujet. ;-)

    [ Tu finis par me le répèter gentillement à chacune de nos discussions. Ironiquement il y aurait au moins une chose que j'ai comprise avant que tu aies du me l'apprendre… Mais soit, je te laisse le loisir d'en douter aussi, juste pour la beauté d'atteindre le point méta ;-) ]

    Blague à part, tu as écris toi même que ton 'a repr était l'équivalent au 'a code de MO, ça ne devrait pas être si difficile que ça à faire, non ? Ok j'ai compris que tu ne relèveras pas ce défit, tant pis.

    Ma question reste : que ne peut-on pas faire avec l'approche tagless final qui nécessite le recours à MetaOCaml ?

    Profiter de l'optimisateur d'ocaml et d'un compilateur efficace qui ciblent du code machine ? Le unboxing implicite ?

  • [^] # Re: Tagless final un chemin vers MetaOCaml en bibliothèque ?

    Posté par  . En réponse au journal Découvrir MetaOCaml dans son navigateur. Évalué à 2. Dernière modification le 14 novembre 2016 à 17:25.

    Merci pour ces précisions même si j'ai encore du mal à voir le rapport avec MetaOCaml. Il me semble que le papier "module mania" (qui est relativement vieux) parvient à résoudre ce problème dans le cas d'un interpréteur "dynamique", en utilisant une technique simple quoique verbeuse. On reste loin d'une solution compilée et sans faute de type au run-time.

    Je me demande naïvement s'il serait possible d'utiliser MetaOCaml pour l'implémentation d'un tel interpréteur afin de supprimer les injections/projections sur un type universel qui permettent l'extensibilité dans le cas de la solution de "Module Mania"¹, ou de rendre performant l'interpréteur de kantien².

    1: en fait j'ai réutilisé cet interpréteur (~~ Lua 2.0) pour un projet personnel et je m'étais posé la question, sans avoir le temps/compétence/motivation pour la tester sérieusement.
    2: dans lequel je ne retrouves pas la solution au problème d'extensibilité mais simplement des transformations/extensions d'AST pour faire des optimisations avec une conversion vers la représentation initiale utilisée par l'interpréteur. Ça permet de faire de l'extensibilité sur l'optimisation, donc sur les fonctions comme vous dites et non sur le type "valeur". J'ai du mal à voir une application concrète de cette technique de conversion bi-directionnelle car on peut baser l'évaluateur sur l'AST optimisé directement (vu qu'on n'a quand même pas d'extensibilité sur la valeur). Enfin soit.

  • [^] # Re: Tagless final un chemin vers MetaOCaml en bibliothèque ?

    Posté par  . En réponse au journal Découvrir MetaOCaml dans son navigateur. Évalué à 2.

    fonction de type int -> int -> int sous sa forme optimisée

    1) le type "optimisé" est une conséquence de l'utilisation des GADT et ne présume en rien de l'efficacité de l'implémentation
    2) de fait, tu as encore besoin d'un interprêteur, eval : 'a repr -> 'a.

    Ne te méprends pas sur mon commentaire, je trouve cette technique intéressante, de part justement du trade-off facilité d'implémentation vs performance inhérent à tout interpréteur. J'aime bien aussi utiliser les modules; j'en profite pour te conseiller la lecture du papier "module mania" qui explique comment faire un interpréteur "extensible" sans gadt et sans first-class module.

    Metaocaml joue dans une autre catégorie en permettant 1) de spécialiser/optimiser au niveau natif (vs au niveau de l'interpréteur) 2) d'avoir du multistage et de la fiabilité (ce que tu perdrais en transformant ton interpréteur en générateur de code).

    Mon instinct me dit que tu devrais pouvoir utiliser metaocaml pour implémenter ton "eval" de manière efficace tout en conservant ton architecture d'extension par modules. Malheureusement il n'y a pas de gadt (pas encore ?) dans MO donc tu devras t'en passer, idem au niveau des foncteurs ça risque d'être un peu plus compliqué; néanmoins ça serait intéressant que tu t'y essayes lors de ton expérimentation avec MO.

  • [^] # Re: Cas d'utilisation ?

    Posté par  . En réponse à la dépêche DragonFly BSD 4.6 et 4.6.1. Évalué à 1. Dernière modification le 14 novembre 2016 à 14:29.

    Qu'en est-il de la gestion des options ? Est-ce qu'il est possible de faire quelque chose pour mélanger le repo officiel avec des builds customisée ? Où bien on est de-facto contraint à rebuilder tout ce que dont on est succeptible d'utiliser ?

    (J'avais eu la chance de te poser la question en 2014 mais je ne me souviens plus de ta réponse, et peut-être que ça a évolué depuis… Quoi qu'il en soit, merci d'avance )