gaaaaaAab a écrit 1387 commentaires

  • [^] # Re: quelques remarques

    Posté par  . En réponse au message Je cherche à créer une expèce de proxy. Évalué à 2. Dernière modification le 19 avril 2014 à 01:12.

    Si elle existe, je ne l'ai pas vue, mais j'ai peut-être mal cherché.

    En fait, j'ai pas trouvé non plus, mais c'est p-e parce que c'est pas comme ça qu'on ferait en Python. Tu peux peut-être t'en sortir avec un décorateur qui fabriquerait à la volée des classes dérivées des types qui t'intéressent avec les ajustements dont tu as besoin. Autrement dit, au lieu d'encapsuler ta classe dans un proxy générique, est-ce que ça serait pas plus simple d'avoir un générateur de classes proxy spécialisées ?

  • # quelques remarques

    Posté par  . En réponse au message Je cherche à créer une expèce de proxy. Évalué à 2. Dernière modification le 18 avril 2014 à 19:35.

    Attention, __getattr__ est censé renvoyé la valeur d'un attribut. Ton implémentation actuelle renvoie une méthode qui renvoie la valeur de l'attribut pour _obj. Est-ce que tu ne voudrais pas plutôt faire ? :

        def __getattr__(self,name):
            return getattr(self.__dict__['_obj'],name)

    Pour l'appel direct c[0], de ce que j'ai testé, l'interpréteur utilise la méthode __getitem__, mais en l'appelant directement, sans passer par __getattr__. Du coup, tu peux t'en sortir en ajoutant la méthode:

        def __getitem__(self, key):
            return self.__dict__['_obj'].__getitem__(key)

    Si tu veux pouvoir affecter un élément de la liste, il faut que tu ajoutes aussi __setitem__. Bref, pour faire propre, il faudrait ajouter tous les __<methode>__ de la classe qui t'intéresse (inclus __repr__ et __str__ pour faire joli).

    Mais du coup, tu te retrouves avec un proxy spécialisé pour les listes, ce qui n'est pas forcément ce que tu veux. L'étape d'après est de lister tous les attributs de la classes que tu veux proxifier, et rajouter les méthode __*__ dont tu as besoin à l'instanciation. Et du coup, il y a surement une recette quelque part sur le net.

    Edit: je vois que je répond un peu à côté de la question sur les __getitem__ et compagnie

  • [^] # Re: ~~~~~~~~~~~~~~

    Posté par  . En réponse au message [offre d'emploi] developpeur Python/DBA dans un hedge fund a Cambridge. Évalué à 4.

    nous sommes un fond macro, autrement dit on s'intéresse a des changements macroscopiques, a long terme, pas a la milliseconde.

    c'est probablement moins nocif que le HFT, mais est-ce pour autant bien ?

    La finance a bon dos, mais peut être que si les gouvernements et les gens comme toi et moi arrêtaient de vivre a crédit on ne serait pas autant dans la merde.

    ouais, c'est sûr. Mais il ne faudrait pas non plus croire que la finance se résume à la bourse. Dans le vaste de monde de la finance, il y a des trucs utiles, et d'autres moins.

    je ne risquerais jamais mon argent pour investir dans des startups, ou dans des bons du trésor Grec. Il y a des gens qui prennent ces risques, et il est normal qu'ils soient payes en retour, non ?

    Je ne sais pas si on peut répondre à cette question sans regarder le type de société qu'on veut au niveau macroscopique. Dans la société actuelle, c'est effectivement comme ça que ça marche, donc c'est "normal". Est-ce pour autant la meilleure façon de financer les entreprises ?

    Pour les états, le financement ne devrait pas passer par le bon vouloir des investisseurs. Un état a les moyens de définir ses recettes comme ses dépenses. Le fait est que le verrouillage du système politique nous enferme dans du clientélisme (local ou de classe). D'autre part, il ne me semble pas que les investisseurs privés se soient rués au secours de la Grèce. J'ai même cru comprendre que c'était plutôt le contraire, et que c'est les autres états européens qui ont sorti du pognon, avec beaucoup de réticence et après beaucoup d’atermoiements.

    La bourse ne sert pas qu'a enrichir les grands patrons, elle sert aussi a financer des vrais projets.

    D'après Frédéric Lordon, ça a été vrai à un moment, mais ça ne l'est plus. Malheureusement, l'article de départ n'est pas accessible publiquement, mais il y a quand même cette interview

    http://blog.mondediplo.net/2010-03-12-Il-faut-fermer-la-Bourse

  • # mailpile ?

    Posté par  . En réponse au journal Thunderbird : j'en peux plus ! Qui arrive à l'utiliser pour de vrai ? Quoi d'autre ?. Évalué à 8.

    la recherche de Thunderbird me convient très bien, mais je reçois un volume d'e-mail très raisonnable. J'avais vu la conf sur mailpile au fosdem, et ça a l'air très très chouette. Je ne sais pas si c'est utilisable en prod mais c'est un projet à suivre.

  • [^] # Re: df

    Posté par  . En réponse au message Utiliser la sortie d'une commande comme chaîne de recherche de awk. Évalué à 3.

    Note que tu invoques sed une fois de trop, tu peux écrire

    sed "1d; s/ .*//"

    ça n'a l'air de rien, mais sur des gros volumes de données, la différence en performance peut-être significative

  • [^] # Re: awk -F'X'

    Posté par  . En réponse au message Utiliser la sortie d'une commande comme chaîne de recherche de awk. Évalué à 2.

    hmmm … alors j'avais mal compris ta question … et je pensais que t'avais testé la version avec cut :D

    cut utilise aussi les délimiteurs dans la sortie, donc, pas besoin de les remettre, ils y sont déjà.

  • [^] # Re: awk -F'X'

    Posté par  . En réponse au message Utiliser la sortie d'une commande comme chaîne de recherche de awk. Évalué à 3.

    chaîne de recherche awk

    Certes, mais il y avait aussi du sed dans la question, alors du coup … ;-)
    non, en vrai, il y a deux raisons :

    • le demandeur ajoute parfois une contrainte technologique par ignorance des alternatives plutôt que par choix délibéré de la techno vraiment adaptée à son problème,
    • je ne suis pas super fan de awk, et je crois qu'on peut le remplacer par quelque chose de "mieux" (souvent sed) dans quasiment tous les cas.

    avec cut, tu peux "reecrire" la chaine pour obtenir /1/2 en sortie ?

    j'imagine que tu pensais /2/1 ?
    Si c'est bien le cas, la réponse est, à ma connaissance, non, mais il se trouve que ce n'était pas la question ! ;-)
    Pour extraire des champs sans réordonner -> cut, pour des trucs hors périmètre de cut -> autre chose

  • [^] # Re: awk -F'X'

    Posté par  . En réponse au message Utiliser la sortie d'une commande comme chaîne de recherche de awk. Évalué à 2.

    cut permet aussi de spécifier le délimiteur de champs:

    cut -d '/' -f 1,3
  • [^] # Re: Un bon gros update

    Posté par  . En réponse au journal Rencontrez badbios le virus plus puissant que Stuxnet. Évalué à 5.

    ça me rappelle quelque chose . Eet-ce qu'il aurait pas un GPS dans son alim ce brave homme ?

  • [^] # Re: Oublies le C.

    Posté par  . En réponse au journal C(++) ?. Évalué à 6.

    Quel genre de portabilité ? C++ est très portable.

    ça dépend. Si tu n'utilises toujours le même compilo sur toutes les plate formes, ça ira. Par contre, si tu utilises le compilo de Sun sur Solaris, le compilo d'HP sur HP-UX, g++ sur Linux, etc … il vaut mieux ne pas utiliser les fonctionnalités trop récentes, parce qu'elles risquent de n'être supportées que par g++.

    En quoi c'est pénible ? Il y a des bibliothèques qui font la conversion des noms de symboles pour toi.

    je ne parlais pas de l'interprétation des symboles manglés pour qu'ils soient lisibles par un humain (nm -C !!) mais des problèmes d'intégration au runtime.
    Le mangling n'étant pas standardisé, chaque compilo utilise le sien propre. Il n'est pas imaginable de linker deux libs binaires produites par deux compilos différents. Si tu compiles tout toi même, pas de problème. Par contre, si tu link sur des libraires externes, en plus de la version de la lib, tu dois gérer un paramètre de dépendance supplémentaire. Eventuellement, si tu récupères une lib binaire dont tu n'as pas les sources, tu te retrouves contraint à l'utilisation du compilateur qui a servi à générer cette lib.
    Pire, deux versions différentes d'une même suite de compilation peuvent être incompatibles entre elles (c'est le cas de g++, qui pète régulièrement la compatibilité du mangling).
    Côté mise en prod, ça peut aussi être un joyeux boxon. Pour peu que l'infrastructure technique ne soient pas complètement bien contrôlée, et que plusieurs services interviennent …

    tu peux toujours utiliser extern "C" pour exporter une interface plus « simple ».

    oui, tu peux (en fait t'as pas le choix), mais c'est particulièrement pas objet, et ça tire son lot de contrainte. Tu ne peux pas exposer n'importe quoi via des extern "C", et ça peut demander parfois pas mal de contorsions pour arriver à un truc qui marche.

    Ensuite, Python et Java étant des langage objets eux aussi, c'est plus facile de mapper le concept d'objet d'un langage vers l'autre en C++ qu'en C.

    Alors là, je demande à voir. Tu vas faire du extern "C" de toute façon.

  • [^] # Re: Evite le C++

    Posté par  . En réponse au journal C(++) ?. Évalué à 2.

    Le C++ c'est trop difficile à apprendre

    "Le C++ est difficile à apprendre" n'est pas un bon argument. Par contre, "le C++ est trop difficile à apprendre", ça se discute. Pour le reformuler, la question est de savoir si le temps que tu vas investir à maîtriser les subtilités du C++ va payer. C'est impossible à mesurer à priori, on ne peut que s'appuyer sur son intuition et ce qu'on peut lire sur le sujet. Si j'avais du faire autre chose que du C il y a 10 ans, j'aurais sûrement fait du C++. Mais aujourd'hui, avec la pléthore de langage qui bénéficie de l'expérience du C++, et notamment des endroits ou le langage s'est un peu fourvoyé, j'aurais pas du tout envie de rentrer dans la complexité C++ (Avis personnel, chacun en pense ce qu'il veut).

    Pareil pour le C.

    pas tout à fait. Même en écrivant du C++ "non-C" (pas de gestion de mémoire manuelle, utilisation des exceptions et tout ce qu'il faut), il y a plus de fonctionnalités dans C++, et la combinatoire pour mal les utiliser est plus élevée.

    Faire des cast de type à tout bout de champ par exemple.

    je veux bien un exemple de code avec ce que tu considères être des "cast à tout bout de champs", parce que ça ne me parait pas être une fatalité.

    Je ne dis pas que le C est supérieur au C++ (ça serait crétin). Il est indéniable que le C++ permet, pour ceux qui le maîtrisent, de développer beaucoup plus vite qu'en C. Il y a même des situations ou du code en C++ tourne plus vite que du C. Mais le C++ est un langage exigeant. La migration du C au C++ n'est pas indolore, voire coûteuse. Faut voir si ça vaut le coup ou pas. Je ne dis pas autre chose (même s'il m'a fallu plein de mots pour en arriver là).

  • [^] # Re: Oublies le C.

    Posté par  . En réponse au journal C(++) ?. Évalué à 3.

    En mettant de côté le fait que je n'aime pas le C++, je vois d'autres contextes ou choisir le C par rapport au C++ à du sens:
    - une base de code existe déjà en C pour le projet,
    - on a besoin de portabilité,
    - une librairie dynamique (les problèmes de mangling en C++, c'est super pénible),
    - une librairie qui sera bindée dans plusieurs language de plus haut niveau (Java, C++, Python, …),
    - surement d'autres si je me creusais la tête plus longtemps.

    Les 3 derniers relèvent un peu du même contexte : besoin d'intégration avec d'autres trucs que du C++

  • [^] # Re: heureusement

    Posté par  . En réponse au message est-il légal de vendre une appliance centos avec un logiciel proprio dedans ?. Évalué à 3.

    à partir du moment ou tu deviens distributeur de CentOS, tu dois fournir les sources (ou les avoir à dispo pendant 3 ans). Tu ne peux pas te contenter de dire "ben allez les chercher là bas". D'autant que les repository bougent tous les jours, mais pas la VM que tu fournis au départ.

  • [^] # Re: heureusement

    Posté par  . En réponse au message est-il légal de vendre une appliance centos avec un logiciel proprio dedans ?. Évalué à 2.

    j'y ai repensé, et je suis d'accord, je ne vois pas de problèmes de licence fondamental.
    Mais il faut quand même fournir les sources de CentOS (avec l'infrastructure de build aussi, non ?) et ça, ça doit quand même être un peu pénible. Il faut aussi probablement ajouter touts les mentions légales nécessaires au produit final "VM + soft proprio" (genre mention des licences qui l'exigent, il y a des licences libres autre que la GPL dans CentOS)

  • [^] # Re: Oublies le C.

    Posté par  . En réponse au journal C(++) ?. Évalué à 4.

    Il est aujourd'hui ridicule de choisir le C face au C++.

    Chaque langage a ses forces et ses faiblesses. Pour une tâche donnée, certains langages seront mieux adaptés que d'autres. Le fait qu'un langage soit "multi-paradigmes" ne suffit pas à le qualifier comme langage idéal pour tous les besoins. Python aussi est multi paradigmes (et j'aime beaucoup le python), c'est par pour ça que je vais en mettre partout.

    La citation pertinente :

    Quand ton seul outil est un marteau, tout ressemble à un clou

    et la trollesque :

    quand ton marteau est c++, tout ressemble à un doigt

    Ca fait pas avancer le débat, mais c'est aussi constructif que ta première phrase (plus constructif même, parce qu'il y a un marteau dedans ;-) )

  • [^] # Re: Evite le C++

    Posté par  . En réponse au journal C(++) ?. Évalué à 3.

    Disclaimer : je ne nie pas les apports du C++ au monde du développement, mais c'est un langage que je n'aime pas (pour tout un tas de raisons).

    Le C++ n'est pas du "C avec des syntaxes en plus pour faire de l'objet". L'approche "je migre en C++ en n'utilisant que l'héritage" me parait super casse gueule. Très probablement, à un moment, va se présenter un problème qui nécessitera de rentrer plus profondément dans le langage (et pleurer ?! :) ).

    j'ajoute deux liens :

    • tout l'article est passionnant, mais j'en extrait ce qui est peut-être le plus pertinent pour un débutant en C++:

    C++ has become an extremely complex language. There are countless ways of doing the same thing — almost all of them either plain wrong, dangerous, unmaintainable, or all of the above. The problem is that most code compiles and even runs.

    et même, soyons fou, je propose une traduction :

    C++ est devenu un langage extrêmement complexe. Il y a d'innombrables façons de faire une même chose — presque toutes sont complètement fausses, ou dangereuses, ou non maintenables, voire les trois en même temps. Le problème, c'est que la plupart du code compile, et même s'exécute.

    • un article de Rob Pike (co-créateur de Go) se demandant pourquoi il n'y a pas plus de développeurs C++ qui s'intéressent à Go. tl; dr: il y a trop de fonctionnalités dans C++
  • [^] # Re: Oublies le C.

    Posté par  . En réponse au journal C(++) ?. Évalué à 3.

    Sur ce cas précis, le comportement du noyau est réglable via /proc/sys/vm/overcommit_memory

  • [^] # Re: heureusement

    Posté par  . En réponse au message est-il légal de vendre une appliance centos avec un logiciel proprio dedans ?. Évalué à 2.

    la question me parait tout à fait légitime. La plupart des licences libres (en tout cas GPL like) entrent en oeuvre au moment de la redistribution.

  • [^] # Re: UE et pétitions

    Posté par  . En réponse au journal Initiative citoyenne pour le revenu de base. Évalué à 3.

    oui mais la CE, c'est pas le clampin moyen :-)

    j'ai répondu plus longuement à ton premier message sur la question. Evitons de mélanger les fils !

  • [^] # Re: UE et pétitions

    Posté par  . En réponse au journal Initiative citoyenne pour le revenu de base. Évalué à 3.

    oui, j'ai un peu mélangé mon scepticisme envers les institutions européennes avec mon intention de départ.

    Je ne nie pas que c'est intéressant de déclencher le débat, mais je voulais éviter une cruelle déception à qui croirait que la pétition européenne a la moindre chance de déboucher sur quoi que ce soit dans le cadre institutionnel.

    Je pourrais (voire devrais) en rester là, puisque c'était l'objectif initial de mon post. Je continue quand même parce je pense que c'est important de connaitre et comprendre nos constitutions, et que là, je n’interprète pas de la même façon que toi. La suite de ma réponse est affirmative, mais si tu vois des erreurs, ça m'intéresse.

    En gros, le texte que tu cites confirme que la commission est forcée de "soumettre une proposition" (je ne sais pas ce que ça veut dire, par contre) qui va dans le sens de la pétition, si la question posée dans la pétition rentre dans le cadre des attributions de ladite commission.

    Non, j'aimerais que ça soit comme tu dis, mais, d'une part, ça ne correspond pas à ce que j'ai vu de la Commission Européenne (pendant le débat sur les brevets logiciels, elle avait proposé en 2nde lecture au parlement européen un texte qui ignorait l'intégralité des amendements votés par les députés en 1ère lecture). D'autre part, ça ne correspond pas non plus à l'interprétation qu'en fait la Commission Européenne elle-même.

    Tiré du site de la Commission Européenne:

    What happens when a citizens' initiative gets one million signatures?1
    (…)
    The Commission is not obliged to propose legislation as a result of an initiative. If the Commission decides to put forward a legislative proposal, the normal legislative procedure kicks off: the Commission proposal is submitted to the legislator (generally the European Parliament and the Council or in some cases only the Council) and, if adopted, it becomes law.

    voir aussi la FAQ

    unlike decisions on registration, this decision is based on a political analysis by the Commission of the initiative's substance and is not subject to an appeal procedure.

    The citizens' initiative is an agenda-setting initiative which obliges the Commission to give serious consideration to requests made by citizens, but it is not obliged to act on them.

    However, if it decides not to act, the Commission will clearly explain its reasons.

    La seule obligation que se reconnait la CE, c'est considérer sérieusement la pétition, et, si elle refuse d'agir, d'expliquer pourquoi. On a vu plus contraignant.

    Je pense que ça ne veut dire que ce que ça ne veut dire : il n'est pas question de reprendre texto le texte de la pétition, il faut les mettre dans les formes indispensables à l'analyse d'un texte dans la commission.

    il est tout à fait à la portée de la société civile de produire des propositions législatives de qualité (cf les amendements proposés par LQDN, FDN, la FFII, …). Pourtant, quand bien même la pétition serait "appropriée" sur le plan formel, je suis assez sûr que la CE ne la reprendrait telle quelle. A mon avis, il faut lire la "proposition appropriée" comme appropriée sur le plan formel, mais aussi sur le plan politique. Cela dit, tant qu'une initiative n'aura pas atteint le million, on ne saura pas trop ce qu'il faut mettre derrière cet adjectif.

    "dans le cadre de ses attributions" et "* "aux fins de l'application des traités"
    Là dessus, on est d'accord. Quand bien même le CE voudrait, elle ne pourrait probablement pas faire grand chose sur la question du revenu de base, en tout cas, pas directement.

  • # UE et pétitions

    Posté par  . En réponse au journal Initiative citoyenne pour le revenu de base. Évalué à 6.

    En bref, si l'initiative récolte 1.000.000 de signatures de citoyens européens, alors le débat sur le revenu de base sera à l'ordre du jour du parlement européen.

    c'est en bref, mais c'est faux, c'est pas comme ça que ça marche. Je cite l'article 11 du traité de Lisbonne (cf http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:C:2010:083:0013:0046:fr:PDF ):

    Des citoyens de l'Union, au nombre d'un million au moins, ressortissants d'un nombre significatif d’États membres, peuvent prendre l'initiative d'inviter la Commission européenne, dans le cadre de ses attributions, à soumettre une proposition appropriée sur des questions pour lesquelles ces citoyens considèrent qu'un acte juridique de l'Union est nécessaire aux fins de l'application des traités.

    voilà voilà … donc il s'agit :
    * "d'inviter la Commission européenne" : surtout pas la forcer,
    * "une proposition appropriée" : appropriée selon les critère de la CE, donc éventuellement exactement l'inverse de ce que demande la pétition.
    * "dans le cadre de ses attributions" : joli petit bout de phrase derrière laquelle on peut se cacher pour à peu près tout et n'importe quoi.
    * "aux fins de l'application des traités" : il s'agit juste d'appliquer, pas question de sortir du cadre des traités (facile aussi de se cacher derrière ça).

    Tout ça pour dire que je ne suis pas contre le principe des pétitions, ça permet de donner "du corps" et de la visibilité à des idées qui circulent dans tous les pays européens, mais je crois qu'il ne faut pas attendre grand chose de la Commission européenne sur le sujet.

  • [^] # Re: Tu es dur

    Posté par  . En réponse au journal MS Office c'est vraiment de la merde. Évalué à 4.

    S'il fallait attendre que les logiciels n'aient plus de bugs pour les commercialiser, je crois que le monde serait "assez" différent :D

  • # mouais, comme être guitariste quoi

    Posté par  . En réponse au journal Geek à la mode. Évalué à 3.

    cf cette excellente planche de kek:

    http://blog.zanorg.com/?perm=476

  • # comentaire bookmark

    Posté par  . En réponse au journal Atelier au THSF: light painting avec une ledbar. Évalué à 4.

  • [^] # Re: j'ai trouvé

    Posté par  . En réponse au message gawk traitement du port serie ttyS0. Évalué à 3.

    s/<1>/<0>/g/

    argv[0] est le nom du programme lancé (donc pour le bash, c'est "bash" dans la variable $0), et pour awk, $0 représente toute la ligne (tandis que $1 représente le premier champs). Comme il n'y a qu'un seul champs par ligne, $0 et $1 sont équivalents pour awk, mais pas pour le shell !