Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#2476 Le 05/06/2011, à 00:04

Кຼزດ

Re : /* Topic des codeurs couche-tard [4] */

Pylade a écrit :

Bon, c’est définitif, les autohells c’est le mal absolu. Tout comme le style Gnu, d’ailleurs.


(Nan mais sérieux, génère ton config.h, tu vas rigoler… roll)

C’est facile, pourtant… tongue


dou

Hors ligne

#2477 Le 05/06/2011, à 00:39

Pylades

Re : /* Topic des codeurs couche-tard [4] */

Ouais, ben, lis-le ensuite pour voir à quel point il est moche* (déjà faut comprendre qu’il faut le générer). Ensuite, essaie de comprendre sa logique. Puis ensuite, essaie d’intégrer sa logique à la logique des fichiers sources du programme. Au bout d’un moment, t’as juste envie d’envoyer ça au diable.


Du, si quelqu’un peut me passer une tarball d’un helloworld utilisant Gettext (KISS, et sans autohells), je lui en serai fortement reconnaissant (ouais, je n’ai pas réussi à faire fonctionner Gettext, tout comme Readline, d’ailleurs… je dois avoir du mal avec l’école Gnu).


*. Sérieusement, le :

/* Define to the version of this package. */
#define PACKAGE_VERSION "2.4"
[ 8 lignes dont 2 seulement hors commentaires ]
/* Version number of package */
#define VERSION "2.4"

c’est juste mythique.


Bon, j’ai refait ma cible pour générer les tarballs. Qu’en pensez-vous ?

dist: mrproper
    tar zcf $(TARBALL) . --exclude-backups --exclude-vcs --exclude='*/.*' --xform='s/\./$(EXEC)-$(VERSION)/'

Bah alors ? Pas de commentaires ?

Dernière modification par Pylade (Le 05/06/2011, à 02:46)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2478 Le 05/06/2011, à 02:03

samυncle

Re : /* Topic des codeurs couche-tard [4] */

.


Hello world

Hors ligne

#2479 Le 05/06/2011, à 02:39

cm-t

Re : /* Topic des codeurs couche-tard [4] */

'Nuit;


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#2480 Le 05/06/2011, à 06:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores totaux, depuis le début :

1) 3423    nesthib
2) 3060    samuncle
3) 2883    Pylade
4) 2172    Кຼزດ
5) 1697+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1663    cm-t
7) 1292    na kraïou
8) 866    helly
9) 862    \\Ouranos//
10) 659    gnuuat
11) 584    tshirtman
12) 565    Lagierl
13) 428    Rolinh
14) 352    The Uploader
15) 348    nathéo
16) 263    Kanor
17) 196    Askelon
18) 166    :!pakman
19) 121    ǤƦƯƝƬ
20) 99    kamui57
21) 93    petifrancais
22) 78    edge_one
22) 78    pierguiard
24) 70    gulp
25) 42    sakul
26) 39    Le Rouge
27) 37    ilagas
28) 33    xapantu
29) 30    keny
30) 26    gustare
30) 26    d10g3n
32) 25    GentooUser
32) 25    Morgiver
34) 24    ไ୦บเઢ'
34) 24    Steap
36) 20    CROWD
37) 18    Ph3nix_
38) 16    kouskous
39) 15    timsy
40) 12    stratoboy
40) 12    sailing
42) 11    alexises
42) 11    Crocoii
44) 10    Toineo
44) 10    NutMotion
44) 10    pseudovingtcinqcaracteres
44) 10    pfriedZ
44) 10    CasseTaTele
44) 10    Zeibux
44) 10    THS`
51) 8    Mornagest
52) 7    Vista
53) 6    ubuntlin
53) 6    asma.geek
55) 5    tendances-tdct
55) 5    kinouchou
57) 4    danychou56
57) 4    Neros
57) 4    Biaise
57) 4    totoflute
57) 4    pinballyoda ㋛
57) 4    NLS le pingouin
57) 4    ceric
57) 4    Dice-Man
65) 3    Revan26914
65) 3    raspouillas
65) 3    sweetly
68) 2    SoJaS
69) 1    geenux
69) 1    ArzhurBZH

RépartitionPosts/heure


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2481 Le 05/06/2011, à 06:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores de la période en cours :

1) 40    Pylade
2) 26    cm-t
3) 20    Кຼزດ
4) 19    nesthib
5) 17    samuncle
6) 13    na kraïou
7) 11    tshirtman
8) 9    Rolinh
9) 4    \\Ouranos//
9) 4    The Uploader
9) 4    grim7reaper
9) 4    kamui57

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2482 Le 05/06/2011, à 09:51

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Hello World!

kamui57 a écrit :

Est-ce que quelqu'un sait comment virer ce debug ?

Regarde du côté de mode.

Hors ligne

#2483 Le 05/06/2011, à 10:17

kamui57

Re : /* Topic des codeurs couche-tard [4] */

Merci beaucoup grim ! avec mode(-1) dans le script, c'est tout bon big_smile


Quand le dernier arbre aura été abattu, et le dernier animal exterminé, les hommes se rendront compte que l'argent ne se mange pas (proverbe indien)
Toshiba Satellite L655 4 Go RAM, Archlinux Gnome-shell,LXDE / W7
Toshiba Satellite M30 512 Mo RAM, Archlinux Gnome 3 restreint / Crunchbang LXDE
https://help.ubuntu.com/community/Pastebinit pour poster du texte sur internet en console

Hors ligne

#2484 Le 05/06/2011, à 16:13

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Pylade a écrit :

Du, si quelqu’un peut me passer une tarball d’un helloworld utilisant Gettext (KISS, et sans autohells), je lui en serai fortement reconnaissant (ouais, je n’ai pas réussi à faire fonctionner Gettext, tout comme Readline, d’ailleurs… je dois avoir du mal avec l’école Gnu).

Heu, un truc comme ça ?

Hors ligne

#2485 Le 05/06/2011, à 20:07

Pylades

Re : /* Topic des codeurs couche-tard [4] */

big_smile \o/

Merci beaucoup !


En fait, j’étais con, je croyais que bindtextdomain prenait comme argument le répertoire où se trouve le *.mo


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2486 Le 05/06/2011, à 20:13

grim7reaper

Re : /* Topic des codeurs couche-tard [4] */

Bah alors, on oublie de faire un ptit RTFM tongue

man bindtextdomain

Sinon, y a ce tuto qui est pas mal (dans le sens où c'est du gettext en C et sans autohell, contrairement à beaucoup d'autres)

Dernière modification par grim7reaper (Le 05/06/2011, à 20:17)

Hors ligne

#2487 Le 05/06/2011, à 23:02

Кຼزດ

Re : /* Topic des codeurs couche-tard [4] */


dou

Hors ligne

#2489 Le 05/06/2011, à 23:39

Pylades

Re : /* Topic des codeurs couche-tard [4] */

grim7reaper a écrit :

Bah alors, on oublie de faire un ptit RTFM tongue

man bindtextdomain

Arf, je n’avais pas remarqué que ces fonctions avaient leur page de manuel. En fait j’avais utilisé la doc d’un particulier, mais il n’était pas super clair.


grim7reaper a écrit :

Sinon, y a ce tuto qui est pas mal (dans le sens où c'est du gettext en C et sans autohell, contrairement à beaucoup d'autres)

Ouais, c’est pas mal.


Tiens, j’ai fait du makefile, pour la peine :

EXEC=clfb

.PHONY: all

all:
    find -name '*.po' | while read po; \
    do mkdir -p "locale/$${po%.po}/LC_MESSAGES"; \
    msgfmt "$$po" -o "locale/$${po%.po}/LC_MESSAGES/$(EXEC).mo"; \
    done

Et au niveau principal :

pot: $(EXEC).pot

$(EXEC).pot: clfb.c clfb.h
    xgettext -k_ -o po/$(EXEC).pot -Esi $^ --package-name=$(EXEC) --package-version=$(VERSION) --from-code=utf-8
    sed -i po/$(EXEC).pot \
        -e 's/YEAR/2011/' \
        -e 's/THE PACKAGE'"'"'S COPYRIGHT HOLDER/Paul (…)/' \
        -e 's/PACKAGE/clfb/' \
        -e 's/FIRST AUTHOR <EMAIL@ADDRESS>/Paul (…) <(…)>/'

Mais là, j’ai mis pot en .PHONY, et du coup c’est reconstruit à chaque fois. Il n’y a pas une cible spéciale plus appropriée, pour ça ?
J’ai aussi un petit souci, c’est que dans clfb.h, j’ai un define qui est utilisé dans clfb.c, mais qui n’apparaît pas dans le clfb.pot généré…

Dernière modification par Pylade (Le 05/06/2011, à 23:40)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2490 Le 06/06/2011, à 00:02

nesthib

Re : /* Topic des codeurs couche-tard [4] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#2491 Le 06/06/2011, à 00:08

cm-t

Re : /* Topic des codeurs couche-tard [4] */

'Nuit;


Actu Ubuntu            ☺/
Pauses Ubuntu sur Paris            \_< -t
[(π)] La Quadrature du net

Hors ligne

#2492 Le 06/06/2011, à 00:18

Pylades

Re : /* Topic des codeurs couche-tard [4] */

Ah, et puis je signale qu’il est inutile de chercher à inclure locale.h lorsque l’on inclue libintl.h ; et que l’on va bientôt fermer…


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2493 Le 06/06/2011, à 00:21

:!pakman

Re : /* Topic des codeurs couche-tard [4] */

Ça consiste en quoi globalement le "Gnu coding style" ?
Très vite fait, c'est quoi les particularités de cette façon de coder ?


...

Hors ligne

#2494 Le 06/06/2011, à 00:24

samυncle

Re : /* Topic des codeurs couche-tard [4] */

.


Hello world

Hors ligne

#2495 Le 06/06/2011, à 00:45

Pylades

Re : /* Topic des codeurs couche-tard [4] */

:!pakman a écrit :

Ça consiste en quoi globalement le "Gnu coding style" ?
Très vite fait, c'est quoi les particularités de cette façon de coder ?

C’est fait pour être très moche, illisible, et donner envie de ne pas se pencher sur le code du programme.

Plus sérieusement, il a y plein de trucs : ça va de l’indentation et espacement (il y a une espace entre le nom de la fonction et la parenthèse ouvrante) à l’organisation générale du code. Si tu veux te faire peur, regarde leur strlen ou leur helloworld.


Bon, en fait, je me demande si c’est une bonne idée de localiser la notice qui présente la licence.

Et puis vous ne m’avez pas répondu : quand un programme n’est pas scriptable, c’est bien inutile de préfixer les messages d’erreur, hein ?

Dernière modification par Pylade (Le 06/06/2011, à 03:02)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#2496 Le 06/06/2011, à 01:05

Кຼزດ

Re : /* Topic des codeurs couche-tard [4] */

Pylade a écrit :
:!pakman a écrit :

Ça consiste en quoi globalement le "Gnu coding style" ?
Très vite fait, c'est quoi les particularités de cette façon de coder ?

C’est fait pour être très moche, illisible, et donner envie de ne pas se pencher sur le code du programme.

Plus sérieusement, il a y plein de trucs ça va de l’indentation et l’espacement (il y a un espace entre le nom de la fonction et la parenthèse ouvrante) à l’organisation générale du code. Si tu veux te faire peur, regarde leur strlen ou leur helloworld.

Leur strlen reste quand même plus efficace.
(mais à part ça, oui, ça peut se résumer en un mot : le chaos)


dou

Hors ligne

#2497 Le 06/06/2011, à 01:36

Elzen

Re : /* Topic des codeurs couche-tard [4] */

Tiens, python fait un truc bizarre au niveau du garbage collector…

Genre j'ajoutais dans un conteneur GTK un composant venu d'un autre module que j'avais juste récupéré directement (pas de variable dans le module qui faisait l'ajout), puis pour tester les options, je le virais et je le remettais, et le truc avait été détruit entre temps.

Du coup j'ai fait autrement, mais ç't'un peu bizarre quand même.

Hors ligne

#2498 Le 06/06/2011, à 06:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores totaux, depuis le début :

1) 3428    nesthib
2) 3065    samuncle
3) 2893    Pylade
4) 2178    Кຼزດ
5) 1698+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1668    cm-t
7) 1292    na kraïou
8) 866    helly
9) 862    \\Ouranos//
10) 659    gnuuat
11) 588    tshirtman
12) 565    Lagierl
13) 428    Rolinh
14) 352    The Uploader
15) 348    nathéo
16) 263    Kanor
17) 196    Askelon
18) 171    :!pakman
19) 121    ǤƦƯƝƬ
20) 99    kamui57
21) 93    petifrancais
22) 78    edge_one
22) 78    pierguiard
24) 70    gulp
25) 42    sakul
26) 39    Le Rouge
27) 37    ilagas
28) 33    xapantu
29) 30    keny
30) 26    gustare
30) 26    d10g3n
32) 25    GentooUser
32) 25    Morgiver
34) 24    ไ୦บเઢ'
34) 24    Steap
36) 20    CROWD
37) 18    Ph3nix_
38) 16    kouskous
39) 15    timsy
40) 12    stratoboy
40) 12    sailing
42) 11    alexises
42) 11    Crocoii
44) 10    Toineo
44) 10    NutMotion
44) 10    pseudovingtcinqcaracteres
44) 10    pfriedZ
44) 10    CasseTaTele
44) 10    Zeibux
44) 10    THS`
51) 8    Mornagest
52) 7    Vista
53) 6    ubuntlin
53) 6    asma.geek
55) 5    tendances-tdct
55) 5    kinouchou
57) 4    danychou56
57) 4    Neros
57) 4    Biaise
57) 4    totoflute
57) 4    pinballyoda ㋛
57) 4    NLS le pingouin
57) 4    ceric
57) 4    Dice-Man
65) 3    Revan26914
65) 3    raspouillas
65) 3    sweetly
68) 2    SoJaS
69) 1    geenux
69) 1    ArzhurBZH

RépartitionPosts/heure


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2499 Le 06/06/2011, à 06:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [4] */

Scores de la période en cours :

1) 50    Pylade
2) 31    cm-t
3) 26    Кຼزດ
4) 24    nesthib
5) 22    samuncle
6) 15    tshirtman
7) 13    na kraïou
8) 9    Rolinh
9) 5    grim7reaper
9) 5    :!pakman
11) 4    \\Ouranos//
11) 4    The Uploader
11) 4    kamui57

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#2500 Le 06/06/2011, à 08:48

Rolinh

Re : /* Topic des codeurs couche-tard [4] */

Кຼزດ a écrit :

Leur strlen reste quand même plus efficace.

Plus efficace que quoi?

Sinon, ouais, j'appuie Pylade: le GNU coding style saylemal.
D'ailleurs, au cas où tu ne connaissais pas ce célèbre passage du Linux Kernel coding style, deuxième paragraphe:

First off, I'd suggest printing out a copy of the GNU coding standards,
and NOT read it.  Burn them, it's a great symbolic gesture.

Sinon, bah, je crois que l'exemple de strlen cité par Pylade parle de lui-même:
strlen GNU:

#include <string.h>
#include <stdlib.h>

#undef strlen

/* Return the length of the null-terminated string STR.  Scan for
   the null terminator quickly by testing four bytes at a time.  */
size_t
strlen (str)
     const char *str;
{
  const char *char_ptr;
  const unsigned long int *longword_ptr;
  unsigned long int longword, himagic, lomagic;

  /* Handle the first few characters by reading one character at a time.
     Do this until CHAR_PTR is aligned on a longword boundary.  */
  for (char_ptr = str; ((unsigned long int) char_ptr
            & (sizeof (longword) - 1)) != 0;
       ++char_ptr)
    if (*char_ptr == '\0')
      return char_ptr - str;

  /* All these elucidatory comments refer to 4-byte longwords,
     but the theory applies equally well to 8-byte longwords.  */

  longword_ptr = (unsigned long int *) char_ptr;

  /* Bits 31, 24, 16, and 8 of this number are zero.  Call these bits
     the "holes."  Note that there is a hole just to the left of
     each byte, with an extra at the end:

     bits:  01111110 11111110 11111110 11111111
     bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD

     The 1-bits make sure that carries propagate to the next 0-bit.
     The 0-bits provide holes for carries to fall into.  */
  himagic = 0x80808080L;
  lomagic = 0x01010101L;
  if (sizeof (longword) > 4)
    {
      /* 64-bit version of the magic.  */
      /* Do the shift in two steps to avoid a warning if long has 32 bits.  */
      himagic = ((himagic << 16) << 16) | himagic;
      lomagic = ((lomagic << 16) << 16) | lomagic;
    }
  if (sizeof (longword) > 8)
    abort ();

  /* Instead of the traditional loop which tests each character,
     we will test a longword at a time.  The tricky part is testing
     if *any of the four* bytes in the longword in question are zero.  */
  for (;;)
    {
      longword = *longword_ptr++;

      if (((longword - lomagic) & ~longword & himagic) != 0)
    {
      /* Which of the bytes was the zero?  If none of them were, it was
         a misfire; continue the search.  */

      const char *cp = (const char *) (longword_ptr - 1);

      if (cp[0] == 0)
        return cp - str;
      if (cp[1] == 0)
        return cp - str + 1;
      if (cp[2] == 0)
        return cp - str + 2;
      if (cp[3] == 0)
        return cp - str + 3;
      if (sizeof (longword) > 4)
        {
          if (cp[4] == 0)
        return cp - str + 4;
          if (cp[5] == 0)
        return cp - str + 5;
          if (cp[6] == 0)
        return cp - str + 6;
          if (cp[7] == 0)
        return cp - str + 7;
        }
    }
    }
}
libc_hidden_builtin_def (strlen)

strlen FreeBSD:

#include <sys/cdefs.h>
#include <string.h>

size_t
strlen(str)
    const char *str;
{
    register const char *s;

    for (s = str; *s; ++s);
    return(s - str);
}

Au passage, note le coding style affreux de GNU tongue

EDIT: en fait, FreeBSD a fait une révision de son strlen l'année passée:

#include <sys/cdefs.h>
__FBSDID("$FreeBSD: src/lib/libc/string/strlen.c,v 1.10 2010/03/13 00:15:06 delphij Exp $");

#include <sys/limits.h>
#include <sys/types.h>
#include <string.h>

/*
 * Portable strlen() for 32-bit and 64-bit systems.
 *
 * Rationale: it is generally much more efficient to do word length
 * operations and avoid branches on modern computer systems, as
 * compared to byte-length operations with a lot of branches.
 *
 * The expression:
 *
 *    ((x - 0x01....01) & ~x & 0x80....80)
 *
 * would evaluate to a non-zero value iff any of the bytes in the
 * original word is zero.
 *
 * On multi-issue processors, we can divide the above expression into:
 *    a)  (x - 0x01....01)
 *    b) (~x & 0x80....80)
 *    c) a & b
 *
 * Where, a) and b) can be partially computed in parallel.
 *
 * The algorithm above is found on "Hacker's Delight" by
 * Henry S. Warren, Jr.
 */

/* Magic numbers for the algorithm */
#if LONG_BIT == 32
static const unsigned long mask01 = 0x01010101;
static const unsigned long mask80 = 0x80808080;
#elif LONG_BIT == 64
static const unsigned long mask01 = 0x0101010101010101;
static const unsigned long mask80 = 0x8080808080808080;
#else
#error Unsupported word size
#endif

#define    LONGPTR_MASK (sizeof(long) - 1)

/*
 * Helper macro to return string length if we caught the zero
 * byte.
 */
#define testbyte(x)                \
    do {                    \
        if (p[x] == '\0')        \
            return (p - str + x);    \
    } while (0)

size_t
strlen(const char *str)
{
    const char *p;
    const unsigned long *lp;
    long va, vb;

    /*
     * Before trying the hard (unaligned byte-by-byte access) way
     * to figure out whether there is a nul character, try to see
     * if there is a nul character is within this accessible word
     * first.
     *
     * p and (p & ~LONGPTR_MASK) must be equally accessible since
     * they always fall in the same memory page, as long as page
     * boundaries is integral multiple of word size.
     */
    lp = (const unsigned long *)((uintptr_t)str & ~LONGPTR_MASK);
    va = (*lp - mask01);
    vb = ((~*lp) & mask80);
    lp++;
    if (va & vb)
        /* Check if we have \0 in the first part */
        for (p = str; p < (const char *)lp; p++)
            if (*p == '\0')
                return (p - str);

    /* Scan the rest of the string using word sized operation */
    for (; ; lp++) {
        va = (*lp - mask01);
        vb = ((~*lp) & mask80);
        if (va & vb) {
            p = (const char *)(lp);
            testbyte(0);
            testbyte(1);
            testbyte(2);
            testbyte(3);
#if (LONG_BIT >= 64)
            testbyte(4);
            testbyte(5);
            testbyte(6);
            testbyte(7);
#endif
        }
    }

    /* NOTREACHED */
    return (0);
}

EDIT: il faudrait lancer le 6e topic non?

Dernière modification par Rolinh (Le 06/06/2011, à 11:48)

Hors ligne