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.

#2176 Le 24/05/2011, à 07:42

Compteur du TdCCT

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

Scores de la période en cours :

1) 230    Pylade
2) 166    nesthib
3) 124    na kraïou
4) 96    Кຼزດ
5) 79    samuncle
6) 63    cm-t
7) 50    nathéo
8) 45    Rolinh
9) 32    tshirtman
9) 32    Kanor
11) 29    The Uploader
12) 15    :!pakman
12) 15    grim7reaper
14) 10    sakul
14) 10    THS`
16) 8    helly
17) 6    Lagierl
18) 4    \\Ouranos//
19) 1    ArzhurBZH

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

#2177 Le 24/05/2011, à 21:10

grim7reaper

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

Hello World!

Aujourd'hui je viens de découvir le recursive globing (en même temps, avec ma connaissance du shell jpeux découvrir un truc par jour big_smile)

rm **/Thumbs.db

Paraît que c'est spécifique à Bash > 4 et zsh (mais à la limite je m'en fiche, c'est pas pour un script de toute façon).

Hors ligne

#2179 Le 24/05/2011, à 21:24

grim7reaper

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

Apparemment, à partir de bash 4 (je confirme pour bash 4.2.10 tongue).

Hors ligne

#2181 Le 24/05/2011, à 21:50

The Uploader

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

Aujourd'hui les mixins m'ont sauvé la vie. \o/

Je devais factoriser du code plus ou moins commun à plusieurs controllers (et oui il y a un moment où il faut factoriser et redevenir DRY-compliant tongue ), mais ce que je savais faire en Ruby (monkey patcher : hors de question et ça n'aurait pas fonctionné. Faire une classe dérivée et en faire hériter mes Controllers : bof à chaque nouveau Controller, il aurait fallu que je me rappelle de ne _pas_ le faire hériter de ActionController::Base... hmm )

Donc, plutôt que de faire une classe dérivée de ActionController::Base (ce qui n'a que peu de sens pour rajouter une fonction toute simple, et puis c'est un peu lourd...) à mes Controller Rails (l'héritance multiple n'existant pas en Ruby), j'ai fait un Module mixé à mes Controllers.

Lequel est 'required <nom_du_module.rb>' (ça le parse) et inclus ('include NomModule' - rien à voir avec le #include du C, ou si peu), ce qui fait que la/les fonction qui y est définie est incorporé à mon Controller en tant que méthode (c'est transparent à l'utilisation).

Bon évidemment j'ai déjà fait des modules dans d'autres langages, mais le mixer (incorporer) à la classe ça c'est nouveau... ça garde totalement l'approche objet de Ruby! yikes

En plus, les risques de clash entre noms de fonctions est nulle (pardon, "nil") grâce aux namespaces. cool

A couple of points about the include statement before we go on. First, it has nothing to do with files. C programmers use a preprocessor directive called #include to insert the contents of one file into another during compilation. The Ruby include statement simply makes a reference to a named module. If that module is in a separate file, you must use require to drag that file in before using include. Second, a Ruby include does not simply copy the module's instance methods into the class. Instead, it makes a reference from the class to the included module. If multiple classes include that module, they'll all point to the same thing. If you change the definition of a method within a module, even while your program is running, all classes that include that module will exhibit the new behavior.[Of course, we're speaking only of methods here. Instance variables are always per-object, for example.]

Mixins give you a wonderfully controlled way of adding functionality to classes. However, their true power comes out when the code in the mixin starts to interact with code in the class that uses it. Let's take the standard Ruby mixin Comparable as an example. The Comparable mixin can be used to add the comparison operators (<, <=, ==, >=, and >), as well as the method between?, to a class. For this to work, Comparable assumes that any class that uses it defines the operator <=>. So, as a class writer, you define the one method, <=>, include Comparable, and get six comparison functions for free. Let's try this with our Song class, by making the songs comparable based on their duration. All we have to do is include the Comparable module and implement the comparison operator <=>.

class Song
  include Comparable
  def <=>(other)
    self.duration <=> other.duration
  end
end

PS : Cependant, même si utiliser "require" (pour prendre le module lorsqu'il est dans un autre fichier) et "include" (pour faire une référence au module dans la classe - "mixer") ne copient pas le module dans la classe, je me demande ce qui se passe dans le cas suivant :

module A
    def printValue(var)
        print(var.to_s)
    end
end

module B
    def printValue(var)
        system("lpr", var.to_s)
    end
end

class Clash
    include A
    include B
    def pr
        printValue("test")
    end
end

J'essaie de faire comprendre ce code à irb (je n'ai que très rarement utilisé irb..) pour voir ce qu'il me dit..

edit: bon il faut dire que je n'ai pas utilisé de namespace dans la définition de la fonction de mon module, peut être que le cas (qui n'est pas le mien, pas plus que celui du haut car je n'ai qu'un module) ci-dessous ne clash pas car l'appel à printValue serait invalide et à remplacer par A.printValue ou B.printValue :

module A
    def A.printValue(var)
        print(var.to_s)
    end
end

module B
    def B.printValue(var)
        system("lpr", var.to_s)
    end
end

class Clash
    include A
    include B
    def pr
        printValue("test")
    end
end

PPS : Sinon pour uade/xmp/dumb je vais m'acharner jusqu'à pouvoir lire ce genre de zik : http://www.youtube.com/watch?v=MG0IGY4mRXk&NR=1 è_é

Dernière modification par The Uploader (Le 24/05/2011, à 22:26)


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#2182 Le 24/05/2011, à 23:08

samυncle

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

.


Hello world

Hors ligne

#2183 Le 24/05/2011, à 23:08

The Uploader

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

*le vent souffle dans une salle vide*


...... j'ai dit une connerie ? big_smile

(Bonne nuit wink )


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#2184 Le 25/05/2011, à 00:13

nathéo

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

;


C'est rarement par le sarcasme qu'on élève son âme.
Le jus de la vigne clarifie l'esprit et l'entendement.
De quoi souffres-tu ? De l'irréel intact dans le réel dévasté ?
La liberté n'est qu'un vain fantôme, quand une classe d'hommes peut affamer l'autre impunément. timezone[America/Bogota]

Hors ligne

#2185 Le 25/05/2011, à 00:14

Sir Na Kraïou

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

æ


Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.

Hors ligne

#2186 Le 25/05/2011, à 01:18

Кຼزດ

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

Bon ben aujurd’hui, j’ai codé.


dou

Hors ligne

#2187 Le 25/05/2011, à 02:44

cm-t

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

'Nuit;


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

Hors ligne

#2188 Le 25/05/2011, à 03:15

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

#2189 Le 25/05/2011, à 03:25

Pylades

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

grim7reaper a écrit :

Hello World!

Aujourd'hui je viens de découvir le recursive globing (en même temps, avec ma connaissance du shell jpeux découvrir un truc par jour big_smile)

rm **/Thumbs.db

Paraît que c'est spécifique à Bash > 4 et zsh (mais à la limite je m'en fiche, c'est pas pour un script de toute façon).

Bash 4.2.8, ça ne semble pas fonctionner… T’as un exemple ?


@ The Uploader : en gros c’est comme un module Python, quoi ? Ou il y a un truc que je n’ai pas saisi ?

Dernière modification par Pylade (Le 25/05/2011, à 03:25)


“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

#2190 Le 25/05/2011, à 06:43

grim7reaper

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

Hello World!

L'exemple y'en a un entre balise code…
Sinon tu peux essayer un truc du genre

ls **/*

Moi j'ai confirmé le fonctionnement en bash 4.2.10, pour le 4.2.8 faut voir avec tshirtman :]

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

Hors ligne

#2191 Le 25/05/2011, à 07:42

Compteur du TdCCT

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

Scores totaux, depuis le début :

1) 3346    nesthib
2) 3011    samuncle
3) 2773    Pylade
4) 2114    Кຼزດ
5) 1691+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
6) 1611    cm-t
7) 1258    na kraïou
8) 866    helly
9) 858    \\Ouranos//
10) 659    gnuuat
11) 570    tshirtman
12) 565    Lagierl
13) 399    Rolinh
14) 332    The Uploader
15) 308    nathéo
16) 263    Kanor
17) 196    Askelon
18) 160    :!pakman
19) 121    ǤƦƯƝƬ
20) 93    petifrancais
21) 91    kamui57
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

#2192 Le 25/05/2011, à 07:42

Compteur du TdCCT

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

Scores de la période en cours :

1) 240    Pylade
2) 176    nesthib
3) 128    na kraïou
4) 101    Кຼزດ
5) 82    samuncle
6) 69    cm-t
7) 60    nathéo
8) 45    Rolinh
9) 33    tshirtman
10) 32    Kanor
10) 32    The Uploader
12) 16    grim7reaper
13) 15    :!pakman
14) 10    sakul
14) 10    THS`
16) 8    helly
17) 6    Lagierl
18) 4    \\Ouranos//
19) 1    ArzhurBZH

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

#2193 Le 25/05/2011, à 08:46

Rolinh

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

C'est pratique!
(exemple pour Pylade:)

[robin@vidar ~/Hg/plouf] % cat **/*.java | wc -l
2113

au lieu de:

[robin@vidar ~/Hg/plouf] % cat $(find -name '*.java') | wc -l
2113

Dernière modification par Rolinh (Le 25/05/2011, à 08:58)

Hors ligne

#2194 Le 25/05/2011, à 11:23

The Uploader

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

@ The Uploader : en gros c’est comme un module Python, quoi ? Ou il y a un truc que je n’ai pas saisi ?

Euh ouais sûrement, mais je ne suis pas sûr que le côté mixin existe en python, c'est vachement mis en avant comme une spécificité de Ruby.


- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10

Hors ligne

#2195 Le 25/05/2011, à 11:33

tshirtman

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

perso j'avais fais un cat **/*.txt et ça marchait… sous bash 4.2.8 smile

Pour les mixins faudrait que je regarde plus en profondeur, mais je pense qu'on résoud ça avec les décorateurs, les adapteurs, ou l'inclusion de module pure et simple (mais on partage aussi bien les instances que les méthodes du module, dans ce cas) suivant les besoins.

Hors ligne

#2196 Le 25/05/2011, à 12:00

Pylades

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

cat **/*.c | wc -l
10700
cat $(find -name '*.c') | wc -l
find: "./Documents/lost+found": Permission non accordée
cat: ./.codeblocks/UserTemplates/GTK+: Aucun fichier ou dossier de ce type
cat: Project/main.c: Aucun fichier ou dossier de ce type
cat: ./Modèles/C: Aucun fichier ou dossier de ce type
cat: source: Aucun fichier ou dossier de ce type
cat: file.c: Aucun fichier ou dossier de ce type
244097

D’ailleurs, **/ c’est la même que */, chez moi :

cat */*.c | wc -l
10700

“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

#2197 Le 25/05/2011, à 13:32

Кຼزດ

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

% cat **/*.c | wc -l
12785679
% cat **/*.java | wc -l
136006
% cat **/*.py | wc -l
921231

smile


dou

Hors ligne

#2198 Le 25/05/2011, à 13:39

tshirtman

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

gaby@heartsking:~$ cat **/*.c | wc -l
1925465

gaby@heartsking:~$ cat */*.c |wc -l
611

gaby@heartsking:~$ cat $(find -name '*.c') | wc -l
1953441

oO

edit: je suis sous zsh… j'avais zappé…

Dernière modification par tshirtman (Le 25/05/2011, à 13:41)

Hors ligne

#2200 Le 25/05/2011, à 15:08

Rolinh

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

Mon but c'était pas de lancer un concours hein tongue.
(D'ailleurs, je ne l'ai pas lancé dans mon home mais juste dans un petit projet.)

@tshirtman: c'est... bizarre

[robin@vidar ~/Projects/lincopier/default] % cat $(find -name '*.c' -or -name '*.h') | wc -l
1957
[robin@vidar ~/Projects/lincopier/default] % cat **/*.c **/*.h | wc -l
1957
[robin@vidar ~/Projects/lincopier/default] % cat **/*.c **/*.h |wc -l 
1957

Je ne comprend pas la différence entre le 1er et le 3e chez toi... (zsh chez moi, of course).

EDIT: c'est nul bash yikes

[robin@vidar default]$ cat $(find -name '*.c' -or -name '*.h') | wc -l
1957
[robin@vidar default]$ cat **/*.c **/*.h | wc -l
cat: **/*.c: No such file or directory
cat: **/*.h: No such file or directory
0
[robin@vidar default]$ cat **/*.c **/*.h |wc -l 
cat: **/*.c: No such file or directory
cat: **/*.h: No such file or directory
0
[robin@vidar default]$ bash --version
GNU bash, version 4.2.10(2)-release (i686-pc-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Dernière modification par Rolinh (Le 25/05/2011, à 15:12)

Hors ligne