GuieA_7 a écrit 675 commentaires

  • [^] # Re: CremeCRM

    Posté par  (site web personnel) . En réponse au message Quel CRM libre choisir aujourd'hui ?. Évalué à 2.

    Mon collègue était surpris que dpkg-config ne soit pas déjà installé ; du coup il mettra à jour le tutoriel.

  • [^] # Re: Écrire du texte, "C'est tout con, mais c'est horripilant"

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec Jehan, développeur GIMP. Évalué à 3.

    Évidemment qu'il y a des chefaillons un peu partout, y compris dans le libre. Mais tu présentes ça dans un thread qui parle d'une fonctionnalité bancale de Gimp. Alors c'est peut-être juste maladroit de ta part, mais du coup tu présentes le problème des chefaillons comme majeur dans le libre, et qui expliquerai peut-être la frustration de cet utilisateurs : peut-être que si les fonctionnalités étaient choisies par les utilisateurs finaux il y aurait moins de frustration.

    Je pense que, dans le cas général, et dans notre cas particulier de Gimp, c'est un faux problème (ou tout du moins très mineur). Non le problème c'est qu'il y a très peu de développeurs par rapport à l'importance du logiciel (on a vu la même chose avec OpenSSL par exemple). Les fonctionnalités peuvent être choisies au mieux, il faudrait 10 fois plus de codeurs (et/ou que les dév actuels puissent travailler à plein temps dessus) pour que le développement se fasse à une vitesse satisfaisante.

    Mais le problème est complexe, ce n'est pas la faute des utilisateurs qui seraient juste des feignasses hein. Du coup l'initiative de Jehan qui permet aux utilisateurs de financer le développement du logiciel est très bonne à mon avis. Parce que contrairement aux simples dons que tous les projets acceptent, là on a une vrai dynamique de 'vous donnez et moi derrière je peux bosser à plein temps'.

  • [^] # Re: Écrire du texte, "C'est tout con, mais c'est horripilant"

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec Jehan, développeur GIMP. Évalué à 7.

    ce n'est pas très honnête d'avoir ignoré ma phrase

    Pas du tout; en fait c'est très exactement le contraire : je souligne l'incohérence de tes propos, et en particulier cette phrase.
    En effet, il n'est pas du tout question d'esclavage dans mon post ; tu es tout à fait en droit de refuser. En fait n'importe qui refuserait, c'est bien normal. Pourtant les 10 personnes n'ont aucune gène à venir demander ("on n'est pas du tout pour l'esclavage hein, mais si tu le ne fais pas t'es qu'un sale égoïste"). Pourtant tu le vois comme de l'esclavage, et c'était le but.

    En revanche, désolé, mais c'est toi qui es malhonnête :

    • dans ton exemple 50 % des gens sont des dev, et 50% de valeureux utilisateurs qui contribuent. Gimp (car c'est un bon exemple) a une poignée de développeurs et des milliers d'utilisateurs (sinon il n'y aurait pas de bouquin Gimp à la Fnac). Si 50% de cette communauté était des dev, Gimp serait supérieur à photoshop depuis longtemps !
    • Dans ton premier post tu parles de "public - l'utilisateur final" ; et là dans ton exemple les utilisateurs sortent les poubelles quand les dévs ne font que balayer : on dirait même qu'ils travaillent plus dur que les devs, les pauvres ! Quand je fais un rapport de bug, même si le bug m'a fait perdre du temps et que je prends encore 2 heures pour rédiger le rapport, mon investissement en temps n'a rien de comparable au temps que les devs ont passé sur le logiciel ; ma récompense c'est que le logiciel est réparé. Je ne m'attends pas à prendre des décisions majeures pour si peu. Et faire un feedback du genre un post sur le forum officiel en disant "la fonctionnalité truc c'est de la merde" c'est un investissement encore plus petit. Attention les feedbacks c'est très bien - quand c'est constructif au moins—mais ne pas faire tout ce qui as pu être dit pas les utilisateurs ne veut pas dire ne pas écouter les feedbacks du tout.

    Allez comme j'adore les analogies je vais affiner un peu :)

    Il se trouve qu'en effet un week-end sur 2 tu nettoies le littoral (à la base tu adores le littoral, le centre ville tu t'en tapes). 10 personnes (parmi lesquelles un t'a prêté un balai et une autre donné un sac poubelle) viennent te voir pour que tu nettoies d'autres quartiers. 3 veulent que tu nettoies le quartier A, 2 le quartier B, le reste 5 quartiers différents ; celui qui t'a prêté un balai continuera à le faire, et peut être même qu'une 2ème personne te donnera un sac poubelle. Et donner des retours ne leur fait pas peur non plus : si ce n'est pas assez propre ils te le diront. Parce que tu es gentil, tu acceptes de nettoyer le quartier A (c'était les plus nombreux). Bilan: tu fais 7 déçus qui penses que tu es un égoïste et que tu ne les écoutes pas du tout :)

  • [^] # Re: Écrire du texte, "C'est tout con, mais c'est horripilant"

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec Jehan, développeur GIMP. Évalué à 10. Dernière modification le 29 juin 2015 à 21:37.

    J'imagine que si 10 personnes venaient te demander de venir balayer la rue un dimanche (alors que toi tu voulais mater des Game of Thrones tranquille), gratuitement et pendant qu'ils regardent, tu t'exécuterai. Ben oui ça serait très démocratique (ils sont 10 et toi 1), et en plus ça serait utile à la communauté (alors que bon glander pendant ton temps libre, quelle idée). Et puis bon ils pourraient tout à fait apprendre à balayer, mais sincèrement ça a l'air difficile et assez chiant, alors que toi tu feras ça sûrement très bien. Ne t'inquiète pas, dans un grand élan démocratique ils seront toujours prêts à te dire si ton travail ne leur convient pas et qu'ils faut recommencer. Enfin sauf qu'en fait M. Machin il voulait que tu balayes devant chez lui avant devant chez Mme Truc, du coup il ne trouve pas ça super démocratique quand même, tu ne l'écoutes pas du tout, il a même l'impression que tu lui pisses à la raie, c'est pas très sympa.

  • [^] # Re: CremeCRM

    Posté par  (site web personnel) . En réponse au message Quel CRM libre choisir aujourd'hui ?. Évalué à 4.

    Sais-tu si il y a un moyen de récupérer les contacts du mobile dans CremeCRM ?

    Oui c'est plus ou moins possible, mais pas de manière forcément très satisfaisante malheureusement.

    Aux alentours de 2010, quand on a regardé ce qui était le mieux pour synchroniser les contacts/activités avec les téléphones, ActiveSync (AS) semblait être le seul truc disponible à peu prêt partout. Comme c'est un machin pas forcément super ouvert de chez Microsoft, nous n'étions pas franchement enchantés, mais nous avons implémenté un module 'activesync', qui se connecte à un serveur AS en tant que client (comme un téléphone en fait) et permet donc la synchro. Il te faut donc un client AS sur ton téléphone (l'iPhone le fait de base et Android le faisait, avant en tout cas) et un serveur AS : à l'époque c'était généralement un Exchange ou un compte Google (en libre il me semble qu'on a rapidement eu des problèmes avec ZPush, et comme ce n'était pas vraiment demandé par les utilisateurs/clients on n'a pas persévéré dessus).

    En pratique l'implémentation de chez google marchait pas trop mal (mais pétait les plombs de temps en temps ; il préfèrent clairement qu'on passe par leur API perso…), et selon les version d'exchange ça marche plus ou moins bien (si tu es intéressait par exchange—mais j'imagine que non :)—je peux demander ce qui tourne chez nos clients). Et il y a genre 6 mois google a arrêté le protocole ActiveSync sur ses serveurs (et sur les téléphones récents je ne sais pas trop ; peut être une app externe au pire).

    Conclusion: via ActiveSync éventuellement.

    Sinon, un de mes collègues développe pour un client un module qui utilise l'API google. Ça arrivera donc dans le trunk quand on en sera satisfait, mais ce n'est pas disponible à l'heure actuelle, et encore moins dans la version stable.

    Personnellement j'aimerai bien bosser avec du CardDav/CalDav, vu que c'est plus standard et disponible sur la plupart des téléphones maintenant (et les serveurs google). Mais comme ce n'est pas du tout demandé par nos clients (c'est triste mais google est omniprésent, et ils ne s'en séparerons pas pour nos beaux yeux :) ) et qu'à côté j'ai plein de choses à faire, c'est repoussé à quand j'aurai le temps (ou quand un client sera intéressé donc).

    Dernière solution:
    tu as des outils pour synchroniser un téléphone avec un client mail (parfois, outlook permet de le faire avec des logiciels tiers) ; ensuite tu exportes tes contacts en CSV/XLS dans ton client mail et tu réimportes dans Creme (on a un importeur CSV/XLS assez puissant).
    Mais ce n'est à priori pas automatisable : c'est vraiment pour un premier import, pas pour de la synchronisation.

    Voila. J'espère que ma réponse n'était pas trop ennuyante.

  • [^] # Re: Écrire du texte, "C'est tout con, mais c'est horripilant"

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec Jehan, développeur GIMP. Évalué à 10.

    Je ne sais pas si c'est de la bêtise ou de la méchanceté (les 2 n'étant pas mutuellement exclusifs), mais tes commentaires sont vraiment toxiques.

    J'imagine que cracher sur le travail des autres ça t'aide à te sentir malin. C'est sûr que c'est plus facile que de venir nous présenter ton propre travail ; toi qui fait sûrement passer l’intérêt des utilisateurs avant le tien (et ce même lorsque c'est sur ton temps libre évidemment), ça doit être bien pourtant. Mais je suis à peu près sûr que ça n'arrivera pas…

    (et oui désolé linuxfr je ne t'ai pas écouté et j'ai nourri le troll)

  • [^] # Re: Bouleversifiant

    Posté par  (site web personnel) . En réponse au journal Nous les intellectuels autoproclamés du numérique. Évalué à 1.

    On fait ça ! Cela sera l'occasion de savoir qui tes enfants ont le plus écouté, Nabila ou toi. Qui sait, tu pourrais être agréablement surpris :)

  • [^] # Re: Écrire du texte, "C'est tout con, mais c'est horripilant"

    Posté par  (site web personnel) . En réponse à la dépêche Entretien avec Jehan, développeur GIMP. Évalué à 10.

    on peut citer […] Enlightenment dont les dev sont à l'écoute des besoins des utilisateurs

    Va vraiment falloir retrouver et tabasser les utilisateurs qui ont demandé à ce que E17 sorte avec 10 ans de retard et sans appli :)

  • [^] # Re: Bouleversifiant

    Posté par  (site web personnel) . En réponse au journal Nous les intellectuels autoproclamés du numérique. Évalué à 4.

    Bon j'aurai sûrement beaucoup de choses à répondre, mais comme on semble au final tout à fait d'accord, cela serait inutile.

    Juste une chose : les gens de ma génération on toujours vécu en entendant "c'est la crise" ; alors pour nous au final cela ne veut pas forcément dire grand chose. Il est normal que tu t'inquiètes en voyant tes enfants vivre dans un monde où trouver du travail (par exemple) est bien plus difficile qu'à l'époque où toi tu as commencé.

    C'est fondamentalement humain que tu vois en premier lieu ce qu'on a perdu, et que ce qu'on a gagné soit juste du bonus. Mais au final je pense que la plupart des gens [*] ont en fait toutes les cartes en main pour vivre heureux, mais qu'il faille faire l'effort de s'en rendre compte. Les média en véhiculant l'image que la "réussite" (j'ai vraiment horreur de ce terme) ça soit l'argent facile et rapide et la célébrité ont à mon avis une grande part de responsabilité dans ce problème ; mais je refuse de tout leur mettre sur le dos car chacun a aussi la possibilité de réfléchir par soi-même, et donc c'est la solution de facilité de dire "c'est leur faute ils ont qu'à dire des trucs intelligents pour que nous n'ayons pas besoin de réfléchir".

    [*] parce que oui évidement qu'il y a de la vraie misère en France. Mais les vrais miséreux, même s'ils seront toujours trop nombreux ne sont heureusement que très peu. Beaucoup de pauvres ont un logement avec l'électricité, l'eau courante, un frigo pas trop vide, Internet, une télé… Si les richesses étaient mieux réparties (et c'est le problème) leur vie n'en serait que meilleure certainement, mais on est (heureusement) bien loin des 'Misérables', et les gens ont au final bien trop à perdre pour prendre la fourche et le fusil et faire la révolution (je ne veux surtout pas dire "y a des gens qui meurent alors taisez vous", juste "ce n'est pas grave si à 50 ans vous n'avez pas une Rollex" :) ).

  • [^] # Re: Bouleversifiant

    Posté par  (site web personnel) . En réponse au journal Nous les intellectuels autoproclamés du numérique. Évalué à 8.

    Y a vraiment encore ici des gens pour tenir ce genre de discours digne du bistrot du coin ? (à moins que ça ne soit de l'humour ; si c'est le cas désolé)

    Je pense qu'il y a 3000 ans les vieux disaient déjà des plus jeunes qu'ils étaient stupides/fainéants/superficiels/…

    Alors que bien sûr tous les gens de ta génération sont intelligents/travailleurs/honnêtes ; du coup c'est à se demander pourquoi la planète est dans cet état.

    j'ai 34 ans (j'imagine tu en as un peu plus), et déjà à mon époque la plupart des gens se passionnaient pour des trucs stupides de jeunes et des people à 2 balles. Et désolé mais à l'époque Sheila et compagnie c'était pas non plus super intellectuel. Et dans ma famille ceux qui consomment le plus des ragots people, ce sont des personnes âgées (je doute que ça soit les lycéens qui fassent vivre 'France dimanche'…).

    Tu as visiblement choisi ton confort et celui de ta famille comme principale priorité, et il n'y a vraiment rien de mal à ça (devine quoi ? la plupart des gens font ça). Mais du coup, en tant qu'informaticien, si tu trouves que les boites d'informatique sont toute naze, et bien c'est aussi de ta faute ; pas entièrement de ta faute évidemment, ta faute de manière infinitésimale, mais non nulle. Si tous les informaticiens comptent sur le fait que d'autres montent des boites par exemple, et bien ce sont effectivement des non-informaticiens qui montent des boites (des financiers par exemple). Et de la même manière que toi tu ne joueras pas l'avenir de ta famille sur un coup de poker en changeant de travail, et bien personne ne va venir monter une boite à 200 mètres de ta maison et te proposer de doubler ton salaire pour un travail à mi-temps sur un passionnant logiciel libre.

  • [^] # Re: CremeCRM

    Posté par  (site web personnel) . En réponse au message Quel CRM libre choisir aujourd'hui ?. Évalué à 2.

    Voila j'ai créé la fiche sur alternativeto.net (une belle façon de passer son samedi matin :) ). Elle est en attente de validation.

  • # CremeCRM

    Posté par  (site web personnel) . En réponse au message Quel CRM libre choisir aujourd'hui ?. Évalué à 6.

    Je précise tout de suite, je suis le développeur principal de CremeCRM, histoire qu'il n'y ait pas d’ambiguïté.

    Mon collègue/associé/ami a récemment mis à jour le tutoriel pour pouvoir installer la dernière version (la 1.5 pour laquelle je n'ai pas encore pris le temps de faire une dépêche…):
    http://www.cremecrm.com/forum/viewtopic.php?f=14&t=617&p=886#p886

    Autant installer Creme n'est pas forcément complètement trivial, autant le tutoriel détaille même l'installation de Django. Si tu n'arrives toujours pas à installer Django avec ça, il faudra se poser des questions ! :)

    le CRM doit être sous licence GPL;

    Affero GPL v3.
    Il n'y a pas de version communautaire opposée à une version commerciale ; tout est libre.
    En fait on va même plus loin puisque même si tu choisissais d'utiliser notre version SaaS, tu peux récupérer quand tu le souhaites ton code ET tes données ; on peut aussi installer sur ton propre serveur par exemple.

    le CRM ne doit être qu'un CRM et le faire bien (ce qui correspond à la philosophie UNIX sur les logiciels, donc "exit" les solutions ERP proposant un module CRM)

    C'est le cas ; bon après CRM ça peut vouloir dire beaucoup de chose. Par exemple entre un CRM pour les TPE et un CRM pour les grands comptes il va y avoir un grande différence, et je pense qu'il va falloir un peu préciser tes besoins pour trouver le CRM de tes rêves de toutes les façons.

    si possible, mais ce n'est pas une obligation, avoir des applications ANDROID et iOS pour y accéder à distance

    En temps que webapp, Creme a toujours été accessible depuis les mobiles. Mais comme ce n'était pas forcément aussi confortable que possible, la 1.5 vient avec une interface pour les téléphones (qui n'empêche pas d'accéder à l'interface classique) (mais pas de version déconnectée si c'était la question):
    http://www.cremecrm.com/forum/viewtopic.php?f=14&t=614

    l'interface doit être traduite en français;

    C'est le cas.

    Si tu as des questions, il y a notre forum ou même notre chan IRC (#cremecrm sur Freenode).

    Bon week-end !

  • [^] # Re: fond/forme…

    Posté par  (site web personnel) . En réponse au message caillou dans la mare linux. Évalué à 6.

    mais oui Windows est une daube à côté.

    Je trouve ça assez "dangereux" ce genre de propos. Alors oui les Windows 9*/millenium étaient des gros tas de boue plantogènes bien loin de l'état de l'art ; ceci dit les desktops Linux de la même époque, même s'ils s'appuyaient sur un noyau de qualité n'étaient pas vraiment assez conviviaux pour être confiés à M. et Mme Michu (des années plus tard je devais encore recourir très souvent au terminal et je ne parle pas de développement) ; certes microsoft avait déjà un budget conséquent, mais si ce n'est pas vraiment la question.

    De nos jours, d'un côté comme de l'autre on a un OS qui plante rarement et un environnement perfectible mais qui fait à peu prêt son taff. Alors oui j'utilise exclusivement (personnellement et professionnellement) Linux depuis plus de 10 ans, et j'en suis très content, mais quand j'ai sauté le pas c'était pour avoir un système libre (et de qualité), pas un système qui soit intrinsèquement supérieur à tous les niveaux (parce que ce n'est pas le cas).

    Du coup si tu dis à des gens qui utilisent windows, et pour qui ça marche plutôt bien, que c'est de la daube à côté de Linux, ils vont s'attendre à débarquer dans un monde merveilleux, qui fait tout au moins aussi bien que windows (sur tous les points, même ceux qui ne dépendent pas vraiment de Linux) sans les trucs qu'ils n'aiment pas. Et du coup ils courent juste à la grosse déception.

    Et après ils viennent pleurer ici en majuscule :)

  • # Matériau

    Posté par  (site web personnel) . En réponse au journal OpenMW passe d'Ogre3D à OpenSceneGraph. Évalué à 6.

    Enfin, Ogre3D v2.1 à refondu la gestion du matériel (au sens 3D, pas au sens matériel de l'ordinateur)

    En fait ce que tu appelles "matériel 3D" s'appelle plutôt "matériau" (métal, bois, pierre…) donc pas de confusion possible.

  • [^] # Re: supposons que .

    Posté par  (site web personnel) . En réponse au message python , fichier __init__py & virtualenv .. Évalué à 1.

    Si tu es un novice en programmation tout court, je te conseillerai dans un premier de ne pas chercher à découper ton code en plusieurs fichiers, et plutôt à comprendre les notions fondamentales (variables, types, structures de contrôle, classes, fonctions …), quitte à d'abord tout mettre dans un seul fichier. De toutes les façons tes premiers programmes seront très simples, et tu ne vas pas te lancer dans quelques chose de trop ambitieux sans avoir bien compris les bases.

    Mais bon revenons à ta question, qui nécessite quelques explications préliminaires:

    Lorsque tu fais import foo, 'foo' doit être :

    1. à l'endroit où sont présents les libs Python de ton système.
    2. dans le même module que ton fichier courant.

    Pour connaître les chemins où va chercher python tu peux faire dans une console python:

    import sys
    sys.path

    En fait le problème du point 2, c'est qu'un de tes propres fichiers peut masquer un module standard (ex: tu crées un fichier 'math.py'). C'est pourquoi à partir de Python3, la façon 2 disparaît, et tu peux du coup faire :

    from math import cos # la c'est la lib standard
    from .math import ta_fonction_a_toi # ton propre math.py

    Note que tu peux utiliser ce comportement en Python2 en mettant from __future__ import absolute_import au début de tes fichiers.

    Attention si tu veux utiliser des imports relatifs ('from .math import ') tu devras lancer ton script avec l'option '-m' (et sans le '.py') pour le considérer comme un module.

    Du coup pour ta question, et ben soit :

    • tu mets complement/ dans le même module.
    • tu le mets avec les libs installées classiquement (genre dans ton virtualenv histoire de pas péter ton système).
    • tu modifies l'environnement Python (ce que fait virtualenv au final), genre comme ça.
  • # Parrot

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de Perl 5.22.0. Évalué à 1.

    Il y a quelques années on associait me semble-t-il généralement Perl6 avec la VM Parrot. Ce n'est visiblement plus le cas ; en allant sur leur site, il semble pourtant que le projet soit encore bien actif, avec une 7.4.0 sortie il y a 15 jours. Bien que je n'ai jamais trop cru en ce projet, je le trouvais quand même intéressant.

    Quelqu'un aurait-il des informations sur la relation entre les 2 projets du coup ?

  • # Tonton python

    Posté par  (site web personnel) . En réponse au message python , fichier __init__py & virtualenv .. Évalué à 1.

    Fichier __init__:
    Ce fichier est présent dans tous les répertoires qui doivent être identifiés comme des modules python (je crois qu'on peut s'en passer dans les dernières versions de Python3).

    Imaginons tu aies un un module de dessin gfx.py ; avec le temps celui-ci grossit pas mal et tu veux le découper ; tu crées alors un répertoire gfx/ dans lequel tu mets un __init__.py, et les autres fonctionnalités découpées (circle.py, square.py …). Le code présent dans __init__.py sera exécuté dès lors que tu vas faire un import gfx
    Si tu veux accéder au code de dessin tu pourras faire (entre autres):

    from gfx import foo # ca c'est pour le code dans gfx/__init__.py
    
    from gfx import square # ensuite tu pourra faire square.Square(...)
    
    from gfx.square import Square # ensuite tu pourra faire Square(...)

    L’intérêt de mettre un from square import Square dans gfx/__init__.py c'est de pouvoir écrire directement :

    from gfx import Square

    L'idée étant de remonter les symboles les plus utiles par exemples, mais ce n'est pas du tout obligatoire.

    chaque developpement python , faut il créer un environnement virtuel ou c'est crée directement par python ?

    Je ne suis pas sûr de comprendre la question. De base Python va utiliser l'environnement de ton shell, et va alors chercher les libs installées par ta distro (ou 'pip' lancé sans virtualenv). Le problème c'est quand les libs fournies par ta distro n'ont pas la version que tu souhaites ; ou pire que tu veux faire cohabiter des softs utilisant des versions différentes des mêmes libs. Du coup ça dépend que ce que tu veux !
    Si tu veux utiliser/suivre les versions des libs de ta distro (pour être inclus un jour dedans par exemple), ben tu ne vas pas utiliser de virtualenv pour ton soft. Si tu t'en tapes et que tu veux des versions plus récentes, alors oui un virtualenv sera sûrement indiqué (histoire de ne pas foutre la grouille dans ton système). Et si tu distribues ton soft, donne au moins le moyen d'installer les bonnes versions des libs (fichier requirements.txt que tu peux donner directement à manger à pip).

    y a t-il une difference entre windows et linux en dev

    Il me semble que faire des virtualenv sous windows est encore un peu compliqué, mais que ça évolue dans le bon sens. Et sous windows il faudra un peu de taff pour avoir un shell/terminal de qualité ; de plus, en pratique un certain nombre de packages Python ne sont pas testés sous windows, ou ne marche pas du tout avec (mais ce n'est pas une majorité hein).

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 1.

    Oui évidemment, je citais C++ pour l'exemple.

    La "solution" adoptée par un certain nombre de langages (ex: Java, C#) va être d'interdire tout simplement l'héritage multiple ; ça évite de tomber sur le problème, mais du coup ça prive aussi d'un outil qui peut s'avérer puissant. Je n'ai pas vraiment d'avis sur le fait que cela soit une bonne ou une mauvaise solution.

    De la la même manière la "solution" de Rust au problème est de mettre une restriction, en s'appuyant visiblement sur des écueils rencontrés avec Haskell. Il s'agit la aussi d'un compromis (un peu comme toujours en technique certes).

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 1.

    mais la problématique est bien : quelle méthode sera appelé en cas de double définition

    C'est en ça que je trouvais que sémantiquement ça se ressemble. Mais mon commentaire était vague c'est vrai.
    Je crois qu'on est d'accord en fait.

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 2.

    Ça explique tout merci.
    Dans l'esprit ça ressemble au problème des héritages en diamant de C++ par exemple.

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 3.

    Merci à vous 2 pour vos réponses de qualitay.

    Allez zou distribution de +1

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 2.

    Il me semble que seules la crate définissant WordCount et la crate définissant String pouvaient implémenter le trait pour String, tout autre crate n'en a pas le droit.

    Si c'est le cas, alors je me suis un peu emporté ! À vérifier donc.

    Par contre tu peux bien implémenter WordCount pour un type défini dans ton propre code.

    Ah ben oui forcément, sinon ça va être difficile de faire des API ! Parce que définir dans ton code une classe avec une interface d'un autre package c'est un peu le truc de base.

    La subtilité étant de pouvoir étendre des types définis ailleurs (comme bool), vu qu'étendre ses propres types ça tombe sous le sens.
    En revanche oui, à vérifier si on peut étendre dans C un type défini dans A avec un trait défini dans B, j'ai peut être dit des bêtises pour ce cas ; le lien que j'ai donné au dessus (sur http://blog.rust-lang.org) ne parle pas d'une telle restriction, mais ce n'est pas une documentation exhaustive non plus…

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 4.

    Oui tout à fait, mais les traits vont quand même un cran plus loin.

    Les méthodes d'extensions comme les traits permettent de dire : à partir de maintenant, les String ont la méthode wordCount() ; sans cela tu devrais, dans ton code, appeler une méthode statique prenant une String en paramètre (d'ailleurs comme l'explique ton lien il s'agit principalement de sucre syntaxique qui fait cet appel statique à ta place).

    En revanche, les traits permettent aussi de faire la chose suivante :
    si un code tiers définit le trait WordCount (ayant une méthode wordCount()), ainsi que des fonctions manipulant des objets implémentant ce trait, je peux dans mon propre code dire que les String (définies dans la bibliothèque standard que je ne peux/veux pas modifier) implémentent ce trait, et donc appeler les fonctions de ce code en lui passant directement des String. Ce n'est pas possible en C# de dire que maintenant String implémente l'interface IWordCount.

    En C#, tu devrais soit :

    • dériver de String dans une classe WordCountableString (bon en l'occurrence les String ne sont pas dérivables en C#, mais avec une autre classe ça aurait pu être une possibilité).
    • créé une classe proxy WordCountableString qui wrappe un objet String.

    Mais du coup si du code tiers te génère des objets String, tu devras construire un objet WordCountableString correspondant pour pouvoir les passer aux méthodes attendant des IWordCount ; ce qui alourdit à la fois le code et l'exécution (à cause d'objets supplémentaires 'inutiles').

  • [^] # Re: Premières impressions

    Posté par  (site web personnel) . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 5.

    Ce qui permet, notamment, si moi je définis un nouveau trait, et qu’il se trouve qu’un type de la lib standard/xyz respecte l’ensemble des propriétés de ce trait (et donc, est substituable au sens du LSP), que je l’utilise partout où j’ai déclaré que j’utilisais un type implémentant mon trait, même s’il ne déclare pas l’implémenter explicitement (je ne peux pas modifier la lib standard ou la lib xyz pour y rajouter mon trait).

    À moins que je n'ai pas compris ce que tu voulais dire, tu te trompes. Dans ce très bon lien sur les traits (que j'avais déjà donné plus haut) on peut lire :

    Unlike interfaces in languages like Java, C# or Scala, new traits can be implemented for existing types (as with Hash above). That means abstractions can be created after-the-fact, and applied to existing libraries.

    Il faut certes déclarer explicitement que le type existant implémente bien ton propre Trait, mais il n y a pas besoin de modifier la bibliothèque standard pour ça, tu le fais dans ton propre code.

  • [^] # Re: Spring

    Posté par  (site web personnel) . En réponse au journal OpenRTS, un moteur de jeux-vidéo open-source en Java. Évalué à 1.

    Ok merci pour ta réponse ça explique bien des choses.

    OpenRTS est 100% original (pas de risque de conflit avec une licence existante), et sa licence MIT ne l'oppose pas à un usage commercial.

    • Spring a depuis longtemps laissé tomber le 'T.A.' de son nom, donc je pense qu'un studio qui lui adjoindrait des assets originaux n'aurait aucun risque de conflit de licence je pense.
    • Attention à ne pas opposer libre et commercial. Un jeu peut tout à fait être libre et commercial. Il peut aussi avoir un moteur libre (sous licence GPL par exemple dans le cas de Spring), des assets propriétaire et être commercial. Après on est bien d'accord une licence MIT sera sûrement plus attractive en pratique, les studios rechignant classiquement même s'il faut juste libérer leur moteur.