lolop a écrit 3817 commentaires

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.

    Ben non (j'aurais dû lire Batchyx jusqu'au bout).

    Modifié en ajoutant une globale uint8_t coucou[10000000];
    Et en stockant les résultats coucou[i] = mafonction1(i % UCHAR_MAX)*2; pour que le résultat soit utilisé donc que la boucle ne soit pas réduite par l'optimiseur.

    pointal@soupir:~/testinlinec$ gcc testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 250650621
    Macro:  223207182
    Inline-Macro:  27443439
    pointal@soupir:~/testinlinec$ gcc -O1 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 96174252
    Macro:  102364884
    Inline-Macro:  18446744073703360984
    pointal@soupir:~/testinlinec$ gcc -O2 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 92908719
    Macro:  89149068
    Inline-Macro:  3759651
    pointal@soupir:~/testinlinec$ gcc -O3 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 96442803
    Macro:  91111680
    Inline-Macro:  5331123
    
    

    Dont acte.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.

    En corrigeant mon bug (⇒ end = rdtsc();), c'est nettement mieux:

    pointal@soupir:~/testinlinec$ gcc testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 242608338
    Macro:  231264504
    Inline-Macro:  11343834
    pointal@soupir:~/testinlinec$ gcc -O1 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 15078402
    Macro:  15015321
    Inline-Macro:  63081
    pointal@soupir:~/testinlinec$ gcc -O2 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 342
    Macro:  342
    Inline-Macro:  0
    pointal@soupir:~/testinlinec$ gcc -O3 testinlinec.c
    pointal@soupir:~/testinlinec$ ./a.out 
    Inline: 351
    Macro:  342
    Inline-Macro:  9
    
    

    L'inlining est similaire à la macro.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.

    Ah, en effet, gros bug (faudrais pas coder trop tard le soir):

    end = rdtsc

    Et je ne me souviens pas avoir vu d'erreur par gcc. Je reverrais ça ce soir…

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.

    … le code inline a donc l'avantage que le compilo cast le paramètre en uint8_t, ce que ne fait pas la macro, ce qui permettrais de supprimer le test (faudrais voir, coût du test vs coût du cast sans le test, avec un peu de chance le inline devient plus rapide).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 2.

    testinline.c:13:1: warning: comparison is always false due to limited range of data type [-Wtype-limits]

    La ligne return v>UCHAR_MAX? 0 : mapping[v]; est là pour avoir le même code que dans la macro. Et gcc 4.7 semble avoir des contrôles en plus du 4.6.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.

    Tu a essayé de compiler ton code ? Chez moi, avec GCC 4.7.1 en 64bit:

    Oui, en utilisant CMake + make, sinon je n'aurais pas pu donner les résultats.

    Enfin bref, c'est pas le tout de pondre du code de test, mais autant que ce code calcule quelque chose qui ne puisse pas être connu à l'avance

    Le but était de comparer l'inlining (effectif) vs la macro. Peut-être que toi tu connaissais à l'avance le résultat, moi pas.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 3.

    J'aime bien le inline avec le contrôle de type par le compilo & Co - je trouve ça plus propre que la définition de macros. Je me suis demandé quel coût avait le inline vs la définition de macro.

    Testé avec le source suivant (sous Linux 64 bits, gcc 4.6.3).

    // Fichier testinlinec.c
    #include <stdio.h>
    #include <stdint.h>
    #include <time.h>
    #include <limits.h>
    
    #define TESTSCOUNT  10000000
    
    static uint8_t mapping[256];
    
    // Définition avec du inline.
    static inline uint8_t mafonction1(uint8_t v)
    { return v>UCHAR_MAX? 0 : mapping[v]; }
    
    // Définition en macro.
    #define mafonction2(X) (X > UCHAR_MAX ? 0 : mapping[X])
    
    
    
    inline uint64_t rdtsc()
    {
        uint32_t lo, hi;
        __asm__ __volatile__ (
          "xorl %%eax, %%eax\n"
          "cpuid\n"
          "rdtsc\n"
          : "=a" (lo), "=d" (hi)
          :
          : "%ebx", "%ecx" );
        return (uint64_t)hi << 32 | lo;
    }
    
    
    void main(void)
    {
        int i;
        int x;
        uint64_t start, end;
        uint64_t tinline, tmacro;
    
        // Initialisation du mapping avec des valeurs décalées.
        for (i=0 ; i<256 ; i++)
            mapping[i] = (i+8)%UCHAR_MAX;
    
        // Test avec le inline.
        start = rdtsc();
        for (i=0 ; i<TESTSCOUNT ; i++)
            x = mafonction1(i % UCHAR_MAX)*2;
        end = rdtsc;
    
        tinline = end - start;
        printf("Inline: %lu\n", tinline);
    
        // Test avec la macro.
        start = rdtsc();
        for (i=0 ; i<TESTSCOUNT ; i++)
            x = mafonction2(i % UCHAR_MAX)*2;
        end = rdtsc;
    
        tmacro = end - start;
        printf("Macro:  %lu\n", tmacro);
    
        printf("Inline-Macro:  %lu\n", tinline - tmacro);
    }
    
    

    Le résultat dépend fortement de l'option de compilation choisie (je suppute que dans certains cas il n'inline pas). Sur ma machine (note: le temps est en nano-secondes):

    -O0 Inline-Macro:  227906089 nsec
    -01 Inline-Macro:   14369156 nsec
    -02 Inline-Macro:      94070 nsec
    -O3 Inline-Macro:      89284 nsec
    
    

    (note: avec des variations d'une exécution sur l'autre… vu la résolution c'est normal, les -O2 et -O3 sont quasi équivalent pour ce test)

    Note: code pour le timing issu de stackoverflow.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Une table

    Posté par  (site web personnel) . En réponse au message Coût d'un accès mémoire.. Évalué à 4.

    Tu fais le calcul une fois pour toutes pour les 256 valeurs au démarrage et stocke ça dans une globale, après c'est de l'accès direct en mémoire à l'index désiré. Si c'est beaucoup utilisé, ça va se retrouver dans le cache avec un accès très rapide, sinon… c'est que ça ne le mérite pas :-)

    Et éventuellement, tu peux définir:
    static inline uint8_t mafonction(uint8_t v)
    { return maglobale[v]; }

    Comme ça c'est masqué et si tu changes l'implémentation de mafonction(), ton code restera le même.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: AMA ça va être dur (€€€)

    Posté par  (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 2.

    Pas d'expérience là dessus (j'ai juste un Galaxy Note, qui me sert aussi en… téléphone, annuaire, dépannage photos, keepassdroid, etc - ça éclate x 5 ton budget juste pour l'appareil, à toi de voir si ça vaut le coup/coût pour ton usage).

    Eventuellement du côté des Archos:
    Par exemple ARCHOS 80 G9 à 230€… + stick à 50€ + abonnement/prépayé si tu veux pouvoir le connecter en 3G (pas sûr que tu ais du WiFi partout)

    Comme c'est du Androïd, si (à vérifier) tu as accès l'Androïd market, il y a les applications pour client ssh, vim & Co.
    Mais c'est pas léger… quid de la qualité de saisie en terminal ?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: hybride tel-tablette ?

    Posté par  (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 2.

    C'est ce que j'ai.

    J'ai en plus un (tout) petit clavier bluetooth qui dépanne pas mal, avec ssh & consor ça tourne bien, sauf deux trucs: le "ESC" qui est récupéré par Android et fait sortir de l'application, les touches de contrôle.

    Mais, là c'est loin de 100€, sur le site de la fnac c'est de 480€ à 580€, y'aura peut-être moins chez ailleurs, mais pas à 100€ (ou alors il est en carton, ou encore "tombé du camion").

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # AMA ça va être dur (€€€)

    Posté par  (site web personnel) . En réponse au message Tablette ou autre pour admin sys en cyclo-camping. Évalué à 3.

    Et enfin, je ne voudrais pas y mettre plus qu'une centaine d'euros

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: linux admin

    Posté par  (site web personnel) . En réponse au message cherche exemples de documentation avec belle mise en page. Évalué à 3.

    Ben, tu passe en Sphinx (reStructuredText) et tu as les outils qui te génèrent ta doc "belle comme la doc Python" (normalement tu peux personnaliser les styles, voir même ajouter des éléments spécifiques).

    Le problème est: de quoi tu parts ? Du neuf, de l'ancien ? Sous quel format ?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Relecture...

    Posté par  (site web personnel) . En réponse au journal Le Salon Solutions Linux en fort déclin ?. Évalué à 10.

    Le rédacteurs du "Magazine en ligne des professionnels de l'informatique" devraient se relire avant de publier.

    Nos investissements dans le R&D ont augmenter considérablement et vous encore s'accroître d'ici quelques mois. Nous sommes certainement le plus gros investisseur privé français en R&D Open Source !

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # (±HS) L'occasion de changer

    Posté par  (site web personnel) . En réponse au message Est-ce difficile de porter une application .Net sous linux ?. Évalué à 4.

    Mon syndicat utilise un logiciel maison pour la gestion de ses adhérents.

    Ça pourrait valoir le coup de regarder du côté des softs de gestion d'association, y'a justement un post sur Garradin (et de mémoire il y a eu des posts sur d'autres softs de gestion d'adhérents, faut rechercher).

    Ton problème deviendrait alors: comment exporter les données et les réimporter dans le nouveau système.

    Tu gagnerais de pouvoir utiliser ça avec n'importe quel butineur web… et être indépendant de Microsoft ou Linux ou MacOS.

    Contrepartie: avoir une machine pour l'hébergement.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Demande de précision ?

    Posté par  (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 2.

    alors que le Ä suédois est à la fin entre le Å et le Ö.

    Q? en Suède, ils le mettent où ?

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Demande de précision ?

    Posté par  (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 7.

    Ça serait vachement pratique quand on apprend une langue étrangère basée sur les caractères latins, pour rechercher dans des dictionnaires¹ ayant des ordres différents dans les caractères.

    ¹ Oui, je sais, (maintenant) y'a les traducteurs en ligne et les moteurs de recherche.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Un complément

    Posté par  (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.

    Sur le problème de l'encodage du contenu dans une réponse sur stackoverflow avec Python 3 CGI encoding

    import locale                                  # Ensures that subsequent open()s 
    locale.getpreferredencoding = lambda: 'UTF-8'  # are UTF-8 encoded.
    
    import sys                                     
    sys.stdin = open('/dev/stdin', 'r')       # Re-open standard files in UTF-8 
    sys.stdout = open('/dev/stdout', 'w')     # mode.
    sys.stderr = open('/dev/stderr', 'w') 
    
    

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Je suis nul

    Posté par  (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.

    Pour convertir QUOI en code HTML ?

    Si c'est juste pour échapper les caractères (entre autre &), tu peux utiliser cgi.escape() sur le contenu à échapper (donc pas sur toute la page d'un coup, mais sur les parties contenu et attributs HTML).

    Sinon, pour tous les caractères accentués, symboles, marques… si tu indiques utf8, tu dois pouvoir les générer directement à ce format dans ton document sans avoir à te taper des & eacute ; (sinon à quoi ça sert d'encoder en utf8?).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Au cas où

    Posté par  (site web personnel) . En réponse au message problème python apache et utf8 [resolu]. Évalué à 2.

    Je ne suis pas expert du CGI sous Python3, une question:

    Qui gère l'encodage de la réponse vers utf8 ?

    • un hook dans l'écriture sur stdout par les outils CGI en Python3 …
    • une conversion explicite (à faire) "truc".encode("utf-8")

    Sinon, ton erreur semble en effet n'avoir aucun rapport avec l'encodage, mais avec une "simple" interdiction d'exécution.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • # Demande de précision ?

    Posté par  (site web personnel) . En réponse au journal La fin du Minitel. Évalué à 9.

    Mon premier Minitel avait la particularité d'avoir un clavier où les touches étaient rangées en ordre alphabétique et non pas azerty ! Ça en dit long sur l'estime que nous portaient nos technocrates de l'époque…

    Lapin compris la relation.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: What's the point ?

    Posté par  (site web personnel) . En réponse à la dépêche Garradin : gestionnaire d'association léger, complet et libre. Évalué à 10.

    Meu non. Je me garde deux liens sur les joies de PHP.

    Pour moi PHP c'est quand je n'ai pas le choix. Mais, à chacun ses plaisirs.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Siouplé !

    Posté par  (site web personnel) . En réponse au message NFS4 et mauvaise attribution de owner/group. Évalué à 2.

    Bon, alors un peu de désespoir en plus… j'ai aussi un montage NFS entre deux machines, qui se fait en V4 (pas réussi à forcer le V3 malgré toutes les options), avec du LDAP et des ACLs…. et pas trouvé de réponse à mon problème (on doit le voir dans les archives linuxfr) - qui fait que les données sont inaccessibles par les utilisateurs (sauf à tourner root…).

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Déjà dépassé

    Posté par  (site web personnel) . En réponse au journal [HS] Metro, huitpointzéro, placebo. Évalué à 3.

    Dans ton image, AOL c'était "kids only"…

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Un autre, qui est suivi

    Posté par  (site web personnel) . En réponse au journal Problème de suivi d’un logiciel privateur. Évalué à 1.

    Je crois qu'il n'y a pas (trop) de problème pour la mise en place initiale d'un tel système s'il n'y a que les étapes que tu indiques (avec bien sûr des trucs en plus après - comptes utilisateurs & Co - mais liés intrinsèquement au logiciel).
    Ce que j'ai pu voir, c'est que lorsqu'il y a un problème / crash / bug, la réparation aussi doit pouvoir se faire simplement, AMA en deux étapes:

    • réinstallation du logiciel (éventuellement sur une autre machine) - la procédure que tu décrits est ok
    • remise en place des données (là, c'est bien que le soft prévoit de lui-même de faire - ou au moins proposer - des sauvegardes régulières "ailleurs" que sur le disque local)

    Si tu as ces deux étapes, alors tu es prêt pour l'utilisation en écoles.

    D'ailleurs, une mise à jour peut se faire de la même façon: réinstallation + remise en place des données. Bon, voir aussi la gestion des versions si les structures de données évoluent entre les versions… conversion automatique et/ou très aidée fortement conseillés.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN

  • [^] # Re: Un autre, qui est suivi

    Posté par  (site web personnel) . En réponse au journal Problème de suivi d’un logiciel privateur. Évalué à 3.

    C'est beau la théorie. En pratique plus ton système est compliqué, plus tu as de problèmes (même avec un bel installeur). Et dans une structure comme une école maternelle/primaire, un problème informatique c'est un truc qui fait que tu laisses tomber le logiciel et que tu passes à un autre, parce que ça n'est pas ton métier, tu n'as pas les compétences, et tu as mille autres choses à faire au moins sinon plus importantes.
    Faut que ça marche simplement (Kiss), et du apache+cgi+bdd+frontend c'est une multiplication inutile des risques, c'est de l'informatique qui a besoin d'informaticiens.

    Les gens qui jouent à installer ce genre de trucs sur des NAS, des raspberry pi ou autre, ne sont pas la cible des logiciels tel que ce que recherche Antony.

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN