nicolas a écrit 722 commentaires

  • [^] # Re: iAïce

    Posté par  . En réponse au journal Linux est partout, même dans ton frigo. Évalué à 2.

    De l’eau lyophilisée. Ça c’est de l’innovation !
  • [^] # Re: Pourquoi se limiter au libre ?

    Posté par  . En réponse à la dépêche Rapport annuel 2010 sur le développement du noyau Linux. Évalué à 5.

    « Windows supporte a peine 2 architecture et uniquement pour les pc. »

    C’est le principe de la portabilité selon les windowsien.

    Oui, je suis un peu rancunier : → [ ]
  • # Bullshit

    Posté par  . En réponse au journal Microsoft Brevets logiciels et effets de bord. Évalué à 7.

    « A cause de la remarque de la société inciminée: Its opponent, Toronto-based tech company i4i Inc., said Microsoft is seeking to radically rewrite U.S. patent law. I4i Chairman Loudon Owen said Microsoft's proposed changes would have devastating consequences for patent holders. "Every patent in the U.S. will be vulnerable," he said. "The implications are immense." »

    C’est déjà le cas ; la société fait juste de la com’ car juridiquement tout brevet est vulnérable. La raison en est simple : il est impossible de vérifier, de façon exhaustive, qu’une invention répond aux critères du brevet. Si le système était si fragile, pour qu’une simple invalidation de brevet puisse le détruire, il y a longtemps qu’il n’existerait plus. En cas de contestation, seule la justice décide et seul le brevet en question est annulé, pas l’ensemble comme la société voudrait le faire croire pour, dans ses rêves, se faire les défenseurs de l’innovation toute entière…
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Au fait, pour ceux qui se poseraient la question devant ce ramassis de connerie, allouer 2 Go sur une machine de 32 bits est parfaitement faisable, il faut juste avoir la mémoire nécessaire, et, remercions PAE et *-bigmem, il devrait être possible d’allouer 4 Go sur une machine qui contient suffisament de RAM.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Oui, je l’ai vu passé à l’occasion de cette « discussion » (au moins elle aura servi à quelque chose ^^) dans Wikipedia, y’a le lien vers la norme en ASCII :

    « 2.2.4.2 Numerical limits

    A conforming implementation shall document all the limits specified
    in this section, which shall be specified in the headers <limits.h>
    and <float.h> .

    "Sizes of integral types <limits.h>"

    The values given below shall be replaced by constant expressions
    suitable for use in #if preprocessing directives. Their
    implementation-defined values shall be equal or greater in magnitude
    (absolute value) to those shown, with the same sign.

    [...]

    * maximum value for an object of type int
    INT_MAX +32767 »
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Bon, comme le bouton pertinent ne marche pas (j’ai 20 avis disponibles, un bug?) je te dis merci. :)
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Je déroge à ma règle concernant ma question uniquement, car si quelqu’un a une réponse, elle m’intéresse fortement.

    J’ai un système de 1 Go de RAM, et 1 Go de SWAP. Environ 250 Mo de la RAM et 180 Mo du SWAP sont occupés. Je fais un malloc de environ 1 Go, il doit me trouver une mémoire continue. Il ne peut physiquement exister 1 Go de mémoire continue, pourtant, le système me la donne lors du malloc. Ma question est : comment le kernel gère ça ?
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    T’es mignon, mais perso. je code pas ce genre de truc, j’utilise ASCII (pour toi c’est peut-être une marque d’incompétence, pour moi… c’est juste aller au plus vite avec la solution du moment, et c’est parfaitement portable), quand c’est pas trop lourd j’utilise des libs qui font le boulot derrière, faite par des gens qui y ont passé du temps dessus. Je manipule régulièrement plusieurs Go de données numériques, j’ai eu à lire une fois du binaire écrit par du Fortran, c’est clairement la gageure et c’est un gros boulot en soit (faut y aller octet par octet presque, mais faute au Fortran qui est horrible à ce niveau). Tu parles que j’ai vite fait de le convertir dans un format binaire portable et facile à manipuler. Mes connaissances actuelles ne sont clairement pas suffisantes pour taper dans du binaire multi-plateforme, là comme ça, et surtout pas pour un troll, c’est un boulot en soit, mais comme presque tout en C, tu me donnes un mois je te sors un format de fichier binaire au poil, et totalement portable. Mais ce n’est pas possible de discuter avec vous, vous remettez en doute sans cesse mes compétences, mais n’hésite pas toi à me donner ton pedigree.

    « Comme plein de gens le disent depuis le debut sur le thread, c'est faisable, mais non trivial »

    Et ben je crois qu’on est « tombé » d’accord. Enfin… mis à part qu’on a dévié, dès mon second commentaire j’ai bien fait la distinction entre le code et les fichiers de données. Il faut faire la distinction. Le code est portable, les fichiers binaires ne l’ont jamais été.

    Ce sera mon dernier commentaire.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Ça c’est purement un problème de capacité des machines.

    Alors effectivement un code qui alloue 2 Go n’est pas non plus portable sur une machine qui n’a que 1 Go. Ok, tu as gagné : le C n’est pas « portable ».

    Sinon sur un vrai système (c’est du quick&dirty) :

    #include <stdlib.h>
    #include <stdio.h>

    #define N 250000000
    int main (int argc, char **argv) {
      int *a;
      int i;
      a = (int*)malloc (N * sizeof (int));
      printf ("%u\n", a);
      for (i = 0; i < N; i++)
        a[i] = 0;
      printf ("zeros\n");
      for (i = 0; i == 0;);
      return 0;
    }


    J’alloue donc ~1 Go, j’ai 1 Go de RAM :
    nicolas:~% ./a.out
    2078031880
    mon clavier s’est blo… nan je rigole ^^ par contre ça swappe
    zeros

    Résultat du TOP :
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    23784 nicolas 20 0 955m 666m 172 R 100 66.6 0:19.75 a.out

    Ça marche parce que mon système n’est pas en carton ^^, tant que j’alloue une quantité inférieure à la mémoire de RAM c’est bon…

    D’ailleurs un spécialiste dans la salle pour me dire comment c’est possible ? Un malloc doit retourner une zone continue.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 3.

  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 3.

    « Le tout doit etre portable »

    Par « le tout » je suppose que tu parles du code et du fichier de donnée. D’une remarque que j’ai précisé dès le début (pfiou ça remonte assez loin maintenant dans le fil) que je parle du code et pas des fichiers de données qui sortent.

    Pour le code, comme je le dis et le répète : c’est portable, rien à faire. Pour du fichier de donnée portable et facile, pas de secret : format texte, printf&co à donf. c’est ce que je fais. Si tu veux du binaires : c’est casse-couille, faut manipuler la mémoire bit-à-bit pour forcer l’endianess&co, c’est portable, juste casse-couille, je n’ai personnellement jamais fait donc je ne saurais te pondre le code là comme ça en 10 minutes, mais c’est possible : c’est ce que fait très certainement la JVM, y’a pas de miracle !

    « c'est volontairement vague » À tel point que je n’ai pas compris.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Ou plus récent, le PAE (je m’attendais à ce que sortes celle-là), parce qu’à priori ça fonctionne sur le même principe : « The maximum linear address space was limited to 64 KB » Wikipedia.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 1.

    La dernière perle dont tu nous as gratifié (à moins que… quelqu’un en voit une autre?) :
    « Le probleme etant que des que tu passes sur un autre systeme, ca pete, parce que la taille du type de donnee a change. »

    Ça pête juste pareil : 16 bits = 64 ko addressables, 32 bits = 4 Go addressables. malloc (INT_MAX) t’alloueras en fait toujours la moitié de la mémoire.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 3.

    « int* MyArray=malloc(INT_MAX); --> alloue 32Ko sur une machine avec entiers de 16bit [...] Quand a Java »

    ⇒ Fortune !
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 3.

    Mais… mais… merde à la fin ! Tu le fais exprès, c’est pas possible, tu veux troller c’est ça ?

    en:C_standard_library
    en:limits.h

    Et tu as le même problème en Java ! Faut vérifier que tu ne dépasses pas la limite. La seule différence est qu’en Java le code gruik avec le chiffre en dur est accepté.

    95 % ? T’es optimiste ! :p
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Ok, vite fait .

    int a une taille minimal : 16 bits, quand tu risques de dépasser, comme je l’ai dit, les constantes sont définies, par exemple si tu additionnes deux int il faut faire attention que les deux soit < INT_MAX / 2 par exemple (je ne me rappelle plus le nom exacte de la constante). Pareil pour la multiplication : il faut vérifier que tu es inférieur à la racine. Au passage je crois que c’est pareil pour le java, en C# j’en sais rien et je m’en tape. Et, mis à part si le langage peut manipuler des entiers de taille arbitraire, il faut faire attention à la taille des int, toujours, sinon ton code va t’exploser à la gueule tôt ou tard.

    Ne pas accepter d’utiliser une variable nommée INT_MAX (ou que sais-je) en lieu et place d’un nombre codé en dur dans ton code est au mieux du foutage de gueule, au pire de l’incompétence.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 3.

    Bien, tu as juste prouvé que ceux qui ne suivent pas la norme ANSI ont des problème de portabilité.

    Je crois qu’il y a un problème de définition : coder en ANSI veut dire respecter la norme et ne pas faire de suppositions sur les comportements indéfinis de la norme.

    Taille des int ⇒ tout un tas de constante à chercher dans un include (dont j’ai oublié le nom), dans le cas où on sait que ce sera problématique.
    / d’entiers négatifs ⇒ Répètes après moi : « La division d’entiers en C est une division euclidienne. » Un fois que tu as compris ça tu n’as plus jamais de problème avec les divisions d’entiers, quelque soit le langage. C’est tout simplement magique…¹
    Taille des pointeurs ⇒ sizeof est ton ami.

    Va donc sur l’article anglais, la phrase est assez éloquente :
    « The reason some behavior has been left undefined is to allow compilers for a wide variety of instruction set architectures to generate more efficient executable code for well-defined behavior, which was deemed important for C's primary role as a systems implementation language; thus C makes it the programmer's responsibility to avoid undefined behavior, possibly using tools to find parts of a program whose behavior is undefined. Examples of undefined behavior are:

    * accessing outside the bounds of an array
    * overflowing a signed integer
    * reaching the end of a non-void function without finding a return statement, when the return value is used
    * reading the value of a variable before initializing it »

    Les comportement indéfinis sont précisément là pour laisser champ libre à l’implémentation en fonction de l’architecture cible. Et pour enfoncer le clou :
    « These operations are all programming errors that could occur using many programming languages; C draws criticism because its standard explicitly identifies numerous cases of undefined behavior, including some where the behavior could have been made well defined, and does not specify any run-time error handling mechanism. » C’est-il pas beau ?

    Pour la route : « man gcc », [/], « -ansi », « -pedantic », et surtout retourner sur les bancs de l’école. On ne peut pas dire que je pisse du C à longueur de journée, mais je connais quand même les bases.

    Et, je crois que ça vient de C99, s’il y a quelqu’un pour confirmer…, on a accès à des types à la taille prédéfinie.

    ¹ D’une part, la division euclidienne n’est bien définie que pour les entiers naturels (c.-à-d. positifs), d’autre part, la blague avec l’arrondi à l’entier inférieur n’en est plus une.
  • [^] # Re: Monde moderne

    Posté par  . En réponse au journal Police à l'université. Évalué à 4.

    Pour archivage en ce qui concerne les mémoires de Master et autres travaux d’importance. Parce que la lecture sur écran peut devenir fatigante (définition très largement inférieure au papier, luminosité, etc.), parce qu’on peut annoter et faire des commentaires facilement sur le papier.

    Sinon les profs. sont pas fous, quand ils veulent un bête pdf ils le demandent. Mais dans la solution que tu proposes les élèves, malins comme ils sont, risqueraient de « croire » qu’ils peuvent s’affranchir de la mise en forme de la page et rendre un truc dégueulasse en s’excusant du fait que de toute façon le prof. va la changer (déjà qu’un truc mis en forme, c’est pas toujours joyeux).
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    « Oui il y a toujours un moyen de faire la chose de maniere multi-plateforme (#define, ne pas oublier d'utiliser sizeof, etc...) mais au final, c'est du boulot en plus pour le developpeur »

    ⇒ Fortune ! :D
  • [^] # Re: 22.

    Posté par  . En réponse au journal Police à l'université. Évalué à 8.

    Rend du Computer Modern, là il la verront la différence !
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 2.

    Même pas pour KDE et toutes les appli. qui en font partie. Ça utilise une configuration [section] et clef = valeur tout ce qu’il y a de plus classique.

    Voilà c’était juste pour apporter une petite précision à ton commentaire (parce que de toute façon le commentaire parent est soit : un gros troll, soit quelqu’un qui n’a jamais réellement utilisé Linux car ce n’est pas possible d’en avoir une telle méconnaissance autrement).
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 4.

    Pour ECMA, les membres que tu cites ne font pas parti de l’assemblée générale, qui, seule, vote pour ou contre l’inclusion des nouveaux membres à la majorité des 2/3 et pour la publication des normes (dans le menu présentation il y a un pdf, je l’ai un peu parcouru). Les membres que tu cites ont des droits dans les comités techniques, c’est-à-dire l’élaboration des normes. Et en tout il n’y a que 60 entreprises regroupées sous ECMA, toutes ont nécessairement été acceptées par l’AG (c.-à-d. les 18 entreprises pré-citées).

    Le C est portable, oui, il a été conçu pour ; Wikipedia le dit, mes professeurs me l’ont toujours dit, et je le constate tous les jours : je n’ai jamais eu à porter un code, oui, parce que précisément le C est portable, tous les jours j’utilise le même code sur des machines indifféremment 32 ou 64 bits. Que tu puisses faire des choses non-portables en C démontre juste que ce n’est pas un langage neuneu-proof, mais pas portable : non ; Malloc t’assure l’alignement des données, tu les dé-s-alignes : c’est ton problème.

    Pour revenir sur le cœur du sujet : je ne crois pas que le numéro du standard correspond à la version du langage, en tout cas les fonctionnalités qu’apportent la version du standard ECMA nº4, si j’en crois ton lien, correspondent aux fonctionnalités du langage en version 2 de chez Microsoft, si j’en crois Wikipedia. La liste des fonctionnalités dans les version 3 et 4 sont donc non normalisées, avec les conséquences que j’ai exposées.

    Il reste la question de différencier de ce qui est couvert ou pas, si c’est clair pour toi, tant mieux. Mais je le répète tout ceci est une guerre de communication (c’est le principe du FUD), pour aller vérifier que telle implémentation d’un langage est conforme à telle standard, et donc non soumis à attaque par brevets, il faut avoir des compétences au seins de l’entreprise, et pas des moindres : tout ça pour vérifier qu’on peut utiliser Tomboy (je force le trait) ? Bref s’il faut parcourir une spécification d’un langage et son implémentation pour vérifier les choses, ça signifie que c’est loin d’être simple.

    ACPI était un exemple pour mon autre argument : on a d’une part le problème du FUD sur les brevets, d’autre part le problème de la main-mise sur le langage, que ce soit au niveau institutionnel (standard, qui sont plus une solution qu’un problème pour apporter quelques garanties), ou que ce soit au niveau pratique. Et là ACPI montre que grâce à une implémentation de référence, qui n’est rien d’autre que le standard de facto (hors toute considération de l’existence d’un standard institutionnel), Microsoft a su tourner la situation à son avantage. Il est difficile de croire qu’ils n’en feront pas de même pour le langage dont il est question ici.

    Enfin vient l’utilisation de techno. Microsoft, oui, le risque « par hasard » n’est pas si petit que ça une fois que tu t’es donné l’objectif de : ré-implémenter avec une technologie Microsoft, avoir une API proche de la lib. Microsoft, etc. Tu offres mécaniquement plus de possibilité de tomber sur le coup d’un brevet. Sans compter que tu as toujours ce problème de communication et de FUD qui vient : cela donne plus de poids à ce dernier pour faire croire qu’il y a lieu de s’inquiéter.
  • [^] # Re: Mouais...

    Posté par  . En réponse au journal Le Goncourt en CC-BY-SA !. Évalué à 5.

    C’est pas la première fois que tu ressors cet argument. J’ai enfin trouvé la référence : [http://fsffrance.org/news/article2009-09-22.fr.html].

    Donc les utilisateurs aussi peuvent porter plainte et obtenir gain de cause.
  • [^] # Re: EFF au secours !

    Posté par  . En réponse au journal De la déchéance des brevets. Évalué à 2.

    « on laisse la boite payer cher pour le dépot de brevet. »

    Ça risque d’être encore plus difficile pour le particulier de déposer un brevet. Et si seule les grosse boîtes y ont accès tu vas encore plus distordre les effets néfastes qu’ont les brevets à l’heure actuelle. Au contraire je pense plutôt que ça devrait être gratuit, avec comme effet annexe de ne plus tenter les organismes de dépôt à accepter tout et n’importe quoi, par contre il faudra accepter que la société, au sens général, les finance : ça tombe bien c’est la principale bénéficiaire.

    « une fois le brevet déposé et validé, si quelqu'un arrive a prouver facilement l'antériorité il devrait pouvoir le signaler à moindre frais »

    Il y a une recherche d’antériorité, effectuée par l’office des brevets mais dont le financement (assez élevé je crois d’ailleurs) est à la charge de demandeur. Bien sûr la recherche ne saurait exhaustive.

    « une fois le brevet déposé et validé, si quelqu'un arrive a prouver facilement l'antériorité il devrait pouvoir le signaler à moindre frais »

    Je ne peu que pertinenter. Ce serait une réelle avancée, car à l’heure actuelle il est assez facile de déposer un brevet, c’est normal, c’est le système qui veut ça : il est impossible de vérifier de façon exhaustive et unanime les critères à l’obtention d’un brevet. Par contre pour invalider un brevet il faut qu’il y ait litige et passer par la case justice. Un procédure simple pour signaler l’antériorité serait déjà un bon moyen de limiter les abus.
  • [^] # Re: Bonne nouvelle

    Posté par  . En réponse à la dépêche Que penser du rachat de Novell ?. Évalué à 4.

    Est-ce que tu as seulement lu le lien que tu donnes sur ECMA ? Je vais t’aider et citer le passage. « 4.2 Decisions on acceptance shall be made by the General Assembly with a two thirds majority of all the ordinary members. » Tu continues sur le site, et tu as la liste des membres de l’Assemblée générale : 18 noms, de grosses entreprises. Pour entrer il te faut le soutien de 12 des ces entreprises. Après tu peux avoir un droit de regard sans faire partie des décisions, mais on retrouve là encore que des grands noms. Je regarde les faits : c’est un club très petit, ne me dis pas que n’importe qui peut y entrer.

    Le C est multi-plateforme, dire le contraire n’est que l’aboutissement d’années de propagande (je soupçonne Java). Quand tu codes en C tu n’as pas a savoir si t’es en little ou big endian, ni la taille de tes pointeurs, ce sont des représentations internes de la machine et le C permet justement de s’en affranchir ! Quand j’écris un int, et durant tout le code, je me fiche des détails techniques de représentation des nombres : endianness, taille des données à la précision numérique près, etc. Quand j’écris un code ANSI C il doit tourner et rendre le même résultat quelque soit la machine le supportant (à la précision numérique près), la force du C est très précisément d’abstraire ces problèmes de représentation interne. Je soupçonne que tu mélanges avec la portabilité des données, binaires, produites et enregistrées sur disque, ce qui n’a rien à voir avec la portabilité du code. Mais ce problème explose au développeur inattentif très précisément parce que le code C a abstrait cette représentation.

    Tu dis « la version normalisée est la 3.0 », j’attends tes sources, parce que ce n’est pas ce que dit Wikipedia, du coup je suis allé voir la liste des standard ECMA : C# 4ème édition : juin 2006, selon Wikipedia la sortie de la version 3.0 du langage chez Microsoft date d’Août 2007.

    Concernant ACPI, au contraire j’ai parfaitement compris le problème, je l’ai posé en terme d’implémentation de référence : si l’implémentation de référence ne respecte pas le standard, ce dernier ne sert plus à rien. Je fais le parallèle avec la situation de Mono vs. l’implémentation de Microsoft.

    Bien sûr qu’il y a un FUD à propos des brevets, demande à Albert, à propos de Linux, à propos de l’attaque contre Tomtom sur le Fat32, tout ceci y participe, utiliser des technologies de chez Microsoft est susceptible de l’alimenter. Pas sur le langage en lui-même : mais ça je l’ai dit, tu n’as juste pas lu, la partie standardisée ou couverte par des accords unilatéraux (ie. Microsoft envers quiconque, quiconque étant égal à all et différent des non-profit ou autre OSS) n’a pas à craindre de brevets. Mais il est difficile de faire la part des choses et de relever ce qui est couvert par les brevets de ce qui ne l’est pas. C’est déjà assez difficile concernant le noyau… c’est une guerre de communication : utiliser des techno. de chez Microsoft c’est donner de la force au FUD.

    « Non il y en a au moins 2 vu que Mono implemente C# 4 en toute legalite. » Mono est développé par Novell qui a des accords spécifiques avec Microsoft. Qu’en est-il du reste de l’éco-système, libre, non-libre, commerciaux, etc., qui utiliserait Mono, implémenterait une lib. avec des fonctionnalités proches d’une lib. non couverte par les accords, tout ceci sur une techno. spécifiquement Microsoft, tu vas me dire qu’il n’existe aucun risque de tomber sur une solution proche de ce qu’à utiliser, et breveté, Microsoft ? Le risque est àmha plus grand que de partir from scratch.

    Enfin je n’ai jamais dit que Mono devrait suivre à fortiori le standard « comme un petit chien ». Dans ce cas il suit l’implémentation de référence : retour à la case départ, ce sera du Microsoft, ça ne sera plus couvert par un standard, donc soumis à des attaques ou FUD sur les brevets. Ou alors Mono suit sa propre voie, redéfinit un langage à lui, etc., mais on perd toute compatibilité. Je ne sais pas pourquoi je me répète, tu ne vas pas plus lire que la première fois.