Jean-Philippe Garcia Ballester a écrit 1069 commentaires

  • [^] # Re: Probleme de licence

    Posté par  (site web personnel) . En réponse au journal AGPL et GPLv2. Évalué à 2.

    Il obtient du code qui est licencié en GPLv2+ et redistribué en GPLv3, le fait que tu le redistribue en v3 ne change pas que le code que tu distribues avec (hors patch GPLv3 ajouté par toi lors de la redistribution) est en GPLv2+...

    Et tu tiens ça d'où ? C'est en contradiction avec ce que je croyais : une licence est un contrat entre deux entités.
  • [^] # Re: Probleme de licence

    Posté par  (site web personnel) . En réponse au journal AGPL et GPLv2. Évalué à 2.

    Contrat avec A sous GPLv2+, tu choisis de distribuer l'ensemble sous v3 comme la licence t'y autorise (ca rajoute des restrictions supplementaires pour toi qui redistribue par exemple). C recoit l'ensemble sous v3, mais le code est toujours sous GPLv2+ (la licence n'a pas change!).

    Pourquoi ? Le contrat que passe C avec moi, c'est la GPLv3. Si C n'obtient pas une copie du code de A, pourquoi aurait-il le droit d'appliquer un contrat qu'il n'a pas passé ?

    C reprend alors le code (eventuellement le repackage et vire les parties v3 only si tu as fait des ajouts) et redistribue sous la licence initiale (GPLv2+). Donc voila, C applique le contrat passe avec A, parce que la licence du code l'autorise a le faire!

    De ce que je comprends, si A ne distribue plus le code (ni personne sous GPLv2+), C ne peut pas faire ça. La licence qu'il a eu, c'est la GPLv3, et elle ne l'autorise pas à redistribuer le code en GPLv2.
  • [^] # Re: Probleme de licence

    Posté par  (site web personnel) . En réponse au journal AGPL et GPLv2. Évalué à 2.

    Bien sur que si, tu n'as pas le droit de changer la licence que tu reprends. Le seul truc que tu peux faire c'est mixer ton code (tes ajouts/modifs), sous ta licence, avec la licence du code que tu as repris, sachant que les morceaux originaux restent sous la licence originale.

    Et pourquoi ? Je passe un contrat avec une entité A (la licence). Si ce contrat m'autorise à redistribuer sous un autre contrat, lorsque que je passe un contrat plus restrictif avec C sur ce code, pourquoi aurait-il le droit d'appliquer le contrat que j'ai passé avec A ?
  • [^] # Re: Probleme de licence

    Posté par  (site web personnel) . En réponse au journal AGPL et GPLv2. Évalué à 4.

    Dans tous les cas, il faut retenir que tu ne peux pas changer la licence du code/documentation que tu reprends. Tu peux redistribuer l'ensemble sous une licence compatible

    Je n'ai jamais compris la différence entre relicencier et redistribuer sous une autre licence. De ce que j'en avais compris, la licence n'est pas intrinsèque au code, mais c'est un contrat passé entre deux entités.

    Si par exemple une entité A développe un logiciel, et le distribue à B sous licence WTFPL. Alors B peut le redistribuer à C sous licence GPL, parce que la redistribution sous une autre licence est autorisé par la WTFPL, et C ne pourra pas appliquer les droits conférés par la WTFPL mais seulement ceux de la GPL. Pour que C puisse avoir le code sous WTFPL, il faut qu'elle obtienne une copie donné par A sous licence WTFPL, même si la copie est identique.

    J'ai bon, ou j'ai rien compris ?
  • [^] # Re: Bien fait!

    Posté par  (site web personnel) . En réponse au journal Un sandwich, un cinéma, puis le poste de police.. Évalué à 3.

    On étudie Balzac ou Zola à l'école, mais pas Barjavel.

    C'est faux.
  • [^] # Re: Detail un peu plus

    Posté par  (site web personnel) . En réponse au journal Firefox va faire un bon en avant.. Évalué à 6.

    De l'éducation ?
  • [^] # Re: Django

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 2.

    Avec RoR, je n'ai jamais eu que des galères pour l'installer et les packageurs Debian s'en plaignent car c'est impaquetable, inmaintenable, …

    Si tu parles de http://pkg-ruby-extras.alioth.debian.org/rubygems.html, c'est quand même pas auusi noir que tu le laisses entendre...

    Surtout que depuis que passenger existe (et il est dans Debian), déployé une appli rails est devenu un jeu d'enfant.
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 3.

    Pas vraiment. @classmethod, comme tous les autres décorateurs, c'est une méthode qui prend en paramètre une méthode et dont la valeur de retour (la méthode modifiée) est affectée à la place de la méthode d'origine.

    C'est donc nettement moins souple qu'une méthode qui prend en paramètre une classe. Par exemple, je veux créer une méthode qui prenne en paramètre une classe et une chaîne de caractère, et crée plusieurs méthodes dans la classe, dont le code est basé sur la chaîne.

    D'autre part, si un décorateur n'est rien d'autre qu'un appel de méthode, pourquoi n'est-ce pas la syntaxe d'un appel de méthode. Pour moi, et c'est très subjectif bien sûr, je trouve ça incohérent. Ça me gonfle d'avoir à apprendre quinze concepts et syntaxes pour faire des choses qui sont intrinsèquement la même notion.
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 4.

    C'est un détail jusqu'au jour où tu cherches pendant longtemps pourquoi ça marche pas… Et ça ne m'est pas arrivé qu'à moi…
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 2.

    Au temps pour moi sur ce point, j'ai toujours pas réussi à intégrer ce truc.
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 2.

    Je n'ai pas dit que ce n'était pas possible, j'ai dit que c'était galère (ce que tu viens de me confirmer), et que c'était incohérent dans le sens ou si tout est objet, rajouter une méthode de classe ou rajouter une méthode à un objet, c'est finalement la même chose, mais ça s'écrit pas du tout pareil.
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 7.

    Un autre exemple pour s'amuser : une méthode dont le nom commence par __ est privé, sauf si le nom se termine aussi par __. C'est tellement cohérent et intuitif qu'on dirait une règle de grammaire du français.

    stripatublu% python
    Python 2.5.4 (r254:67916, Nov 19 2009, 22:14:20)
    [GCC 4.3.4] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> class Plop:
    ... def __plop(self):
    ... pass
    ... def __plop__(self):
    ... pass
    ...
    >>> plop = Plop()
    >>> plop.__plop()
    Traceback (most recent call last):
    File "", line 1, in
    AttributeError: Plop instance has no attribute '__plop'
    >>> plop.__plop__()
    >>>


    Les plus trolleurs auront remarqué le message d'erreur très explicite.
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 2.

    Si tout est objet, cela veut dire que chaque instruction s'execute dans le contexte d'un objet, et donc self doit être défini. Quand tu ouvres un interpréteur ruby, self et définit dès le départ (et est une instance de type ObjectSpace).

    Quand je crées une nouvelle classe, je ne fais qu'instancier un objet de type Class. Lorsque je la définis, je suis dans le constructeur de cet objet, et donc self est bien défini, et représente l'instance que je suis en train de définir.

    Je ne trouve pas ceci cohérent avec le principe « tout est objet » :

    stripatublu% python
    Python 2.5.4 (r254:67916, Nov 19 2009, 22:14:20)
    [GCC 4.3.4] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> class Plop:
    ... pass
    ...
    >>> Plop().__class__
    <class __main__.Plop at 0x7f82a55b36b0>
    >>> Plop.__class__
    Traceback (most recent call last):
    File "", line 1, in
    AttributeError: class Plop has no attribute '__class__'


    En ruby, une classe est objet, tu peux créer une classe en appelant le constructeur de Class, et dont le scope n'est pas global. Ça, c'est cohérent avec le principe « tout est objet ».
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 2.

    À appeler des méthodes qui s'executent sur une classe (pour créer des méthodes par exemple).

    Ensuite, à partir du moment où tu commences à définir ta classe, elle existe, tout comme le fait qu'un objet existe avant que le constructeur soit terminé. Parce que étant donné qu'on peut rajouter des méthodes à la volée, même si c'est plus galère et/ou moche en Python qu'en Ruby, ta classe n'est jamais complètement définie (au sens ou les méthodes des objets de la classe ne sont jamais figés).

    Par exemple, en Ruby, si tu fais
    def monobjet.manouvellemethode

    end

    tu crées une méthode qui n'existera que sur l'objet monobjet, et pas sur tous les objets de la même classe. Pour créer une méthode de classe, tu utilises exactement le même concept : tu crées une méthode sur la classe que tu es en train de définir.

    De même, créer une classe anonyme se fait simplement en instanciant un objet de type class. Quoi de plus logique ?
  • [^] # Re: Python vs Ruby

    Posté par  (site web personnel) . En réponse au journal Choisir un framework web.... Évalué à 3.

    Un exemple pour étayer ton argument ?

    Ce que j'aime bien dans Ruby que je n'ai pas retrouvé en Python, c'est la cohérence. Il y a très peu de principes à savoir en Ruby, et lorsqu'on les a saisis, on devine facilement comment va se comporter le langage dans un cas inconnu.

    Un exemple pour étayer mon propos : self n'est pas défini lors de la définition de la classe en Python. On a aucun moyen d'accéder à l'objet qu'on est en train de définir.
  • [^] # Re: D'un autre cote..

    Posté par  (site web personnel) . En réponse au journal Rediriger une sortie audio vers un serveur de streaming.. Évalué à 5.

    La différence c'est qu'on a pas 15 000 surcouche pour écouter du son avec MPlayer.

    C'est assez amusant de voir que lorsqu'on a un outil qui remplit une tâche (alsa pour les drivers, PA pour le mixeur / réseau / choix d'une carte son, jackd pour le routage entres applications) les gens disent qu'on a trop de couches, et quand on a un outil qui fait tout les gens disent que c'est contraire au principe KISS.
  • [^] # Re: Oula

    Posté par  (site web personnel) . En réponse au journal Déboires avec OpenOffice. Évalué à 6.

    Tu négliges le contexte : dans son cas, il ne peut pas changer l'administration en un temps raisonnable (la solution "intelligente"), donc la seule solution "professionnelle" (c'est-à-dire qui permet de résoudre le problème dans les délais) est d'utiliser le seul logiciel qui peut lire le document (à supposer que son problème ne soit pas un problème de polices comme évoqué ailleurs).

    Evidemment que LaTeX et OOo sont des solutions professionnelles, si tant est que ce mot ait un sens, quand tu maitrises la chaîne de bout en bout.
  • [^] # Re: super!

    Posté par  (site web personnel) . En réponse au journal Des nouvelles du freeze de Debian Squeeze. Évalué à 1.

    Pour ce genre de problème tu as http://snapshot.debian.net/
  • [^] # Re: Siteduzero

    Posté par  (site web personnel) . En réponse à la dépêche Microsoft dans le groupe de travail du W3C sur SVG. Évalué à 6.

    Vous seriez les premiers à vous régaler un un service interne de microsoft utilisait sans autorisation un produit d'un autre service sans payer la licence (qui je crois bien n'exempte aucunement MS elle même), et à réclamer justice pour les faire chier

    Le code appartient à l'entreprise, pas à un service, donc à priori ce que tu dis ne tient pas. D'autre part, ce n'est pas parce que Microsoft passe un contrat avec un utilisateur qu'elle doit passer le même contrat avec un autre utilisateur (comprendre : il peut y avoir plusieurs licences pour le même code).
  • [^] # Re: Et après ?

    Posté par  (site web personnel) . En réponse à la dépêche Fabrice Bellard bat le record des décimales de Pi. Évalué à 2.

    Non, les deux limites sont bien égales, c'est juste que l'opération de soustraction n'est pas définie. Voir {http://fr.wikipedia.org/wiki/Droite_réelle_achevée}
  • [^] # Re: arretes moi si je me trompes

    Posté par  (site web personnel) . En réponse au journal Redimensionner un disque qcow2 avec les partitions internes en quelques commandes. Évalué à 3.

    Si tu ouvres un fichier et que tu seek au-dela de sa taille, sa taille est agrandie.
  • [^] # Re: P2V

    Posté par  (site web personnel) . En réponse au journal Redimensionner un disque qcow2 avec les partitions internes en quelques commandes. Évalué à 6.

    Pas sûr que ça marche mais

    qemu-img convert -f raw /dev/sda -O qcow2 vm-img.qcow2

    permettrait peut-être de n'utiliser comme place que celle effective des données, alors qu'un dd va créer un fichier de la taille du disque dur, quelle que soit l'utilisation du disque.
  • [^] # Re: Ecran plus petit

    Posté par  (site web personnel) . En réponse au journal Resolution independance. Évalué à 3.

    Je crois que la formule est S=d^2/(r+1/r), et on trouve effectivement les résultats que tu donnes.
  • [^] # Re: finalement je m'en sors a peu près mais ....

    Posté par  (site web personnel) . En réponse au journal Le son sous Linux : du pure n'importe quoi. Évalué à 2.

    Mais rien n'est incompatible avec rien, c'est justement pour ça que les diagrammes du système son sous Linux est hyper complexe et cyclique...
  • [^] # Re: finalement je m'en sors a peu près mais ....

    Posté par  (site web personnel) . En réponse au journal Le son sous Linux : du pure n'importe quoi. Évalué à 3.

    ertes Jack et PulseAudio n'ont pas les mêmes objectifs, mais sont-ils réellement incompatibles ?

    Non, PulseAudio a une sortie Jack. Je l'utilise chez moi, ça marche bien.