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.

#2051 Le 24/09/2012, à 10:42

Titus007

Re : /* Topic des codeurs [7] */

@grim:

grim7reaper a écrit :

Genre tu fais du touillage de bits, ou tu utilises une variable comme groupe de flags et il te faut au moins 8 bits. Bah tu peux utiliser int_least8_t pour être tranquille (la taille réelle pourra cependant être 16, 24 ou 32 bits, ça te garantit au moins 8 c’est tout).

Ce passage est un peu obscur pour moi, mais surtout parce que je ne savais pas ce qu'était le twiddling, et que j'ai toujours pas compris ce qu'étaient des flags ou groupe de flags (mais je ne fais pas de programmation, donc c'est un peu normal). L'autre raison est que dans ce passage, je ne comprends pas si tu fais la manip sur tout le message (at least=au moins tu la fais sur 16, 24, 32 bits ou seulement sur 8 puisque c'est le minimum défini).


3% of people today would die if facebook was completely destroyed, 2.7% wouldn't. If you are one of the 0.03% that would be laughing, copy and paste this to your signature. If you are one of the 12% who would mourn the dead, don't. If you are among the 60% of people who don't have Internet, well... and if you don't care, do whatever the f... you want !

Hors ligne

#2052 Le 24/09/2012, à 10:57

tshirtman

Re : /* Topic des codeurs [7] */

en C on utilise souvent des masques de bits comme flags, genre

0000 0001 = FEATURE1
0000 0010 = FEATURE2
0000 0100 = FEATURE3

et quand tu appele la fonction, tu lui passe (FEATURE1|FEATURE2) ce qui est une addition bit à bit qui donne 0000 0011, la fonction testera si le nombre passé (disont qu'on l'appèle flags), renvoit true pour flags & FEATURE1 ("et" bit a bit), dans ce cas on sait que FEATURE1 a été demandé.

edit: j'ai pas trouvé de moyen joli de déclarer des flags en C, ce que j'ai trouvé de mieux pour l'instant c'est http://c-faq.com/misc/sd28.html, mais je pratique pas trop ce genre de chose (ni le C en général, grim aura peut être mieux dans sa besace).

Dernière modification par tshirtman (Le 24/09/2012, à 11:38)

Hors ligne

#2053 Le 24/09/2012, à 13:54

grim7reaper

Re : /* Topic des codeurs [7] */

Titus007 a écrit :

Ce passage est un peu obscur pour moi, mais surtout parce que je ne savais pas ce qu'était le twiddling

Le twiddling c’est juste quand tu joues avec les bits.
Par exemple, tu prends un unsigned int mais au lieu de le considérer comme un unsigned int tu le vois comme un tableau de bits et tu fais ce que tu as à faire avec.

Titus007 a écrit :

et que j'ai toujours pas compris ce qu'étaient des flags ou groupe de flags (mais je ne fais pas de programmation, donc c'est un peu normal).

Je ne sais pas si l’explication de tshirtman est clair pour toi.
Sinon il y a un tuto sur le site du zéro à ce sujet, je ne sais pas ce qu’il vaut.
Sinon, tu peux aussi nous dire le point que tu ne comprends pas smile

Titus007 a écrit :
grim7reaper a écrit :

Genre tu fais du touillage de bits, ou tu utilises une variable comme groupe de flags et il te faut au moins 8 bits. Bah tu peux utiliser int_least8_t pour être tranquille (la taille réelle pourra cependant être 16, 24 ou 32 bits, ça te garantit au moins 8 c’est tout).

L'autre raison est que dans ce passage, je ne comprends pas si tu fais la manip sur tout le message (at least=au moins tu la fais sur 16, 24, 32 bits ou seulement sur 8 puisque c'est le minimum défini).

Si j’ai besoin de 8 flags, il me faut au moins 8 bits, donc je vais utiliser le type int_least8_t.
Ce que je dis ensuite, c’est que la taille réelle de ce type peut être 8 bits, 16 bits, 24 bits, …
J’aurais au moins 8 bits, je ne vais en utiliser que 8. Mais la type en contient peut-être plus.



tshirtman a écrit :

edit: j'ai pas trouvé de moyen joli de déclarer des flags en C, ce que j'ai trouvé de mieux pour l'instant c'est http://c-faq.com/misc/sd28.html, mais je pratique pas trop ce genre de chose (ni le C en général, grim aura peut être mieux dans sa besace).

Nope.
En fait, j’utilise toujours des constantes en décimal ou hexadécimal.
Et si c’est vraiment complexe, je mets un gros commentaire (exemple de code que j’avais écrit pour le projet de cette année) :

    /* 3: - disable resizer.
     *    - disable output formatter (Cf. "Summary of Constraints", page 91 of
     *      TMS320DM643x DMP Video Processing Front End (VPFE) User's Guide).
     *    - set write enable (write data in SDRAM).
     *    - enable VDHD mode (vertical and horizontal synchronization).
     *
     * 2: - disable low-pass filter (Cf. "Summary of Constraints", page 91 of
     *      TMS320DM643x DMP Video Processing Front End (VPFE) User's Guide).
     *    - configure input as YCbCr 8-bit.
     *
     * F: - pack to 8-bits/pixel (into SDRAM).
     *    - set data width to 8 bits.
     *
     * 8: - input is interlaced.
     *
     * 4: - set VD polarity as negative.
     *    - configure VD and HD as inputs.
     */
    VPFE_CCDC_SYN_MODE = 0x00032F84;

Hors ligne

#2054 Le 24/09/2012, à 14:08

tshirtman

Re : /* Topic des codeurs [7] */

sinon on peut faire des choses genre:

FEATURE1 = 1 << 0
FEATURE2 = 1 << 1
FEATURE3 = 1 << 2

etc…

edit: c'est rigolo, j'avais jamais pensé à utiliser gdb comme shell C rapide…

Dernière modification par tshirtman (Le 24/09/2012, à 14:09)

Hors ligne

#2055 Le 24/09/2012, à 16:28

Titus007

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :
Titus007 a écrit :

Ce passage est un peu obscur pour moi, mais surtout parce que je ne savais pas ce qu'était le twiddling

Le twiddling c’est juste quand tu joues avec les bits.
Par exemple, tu prends un unsigned int mais au lieu de le considérer comme un unsigned int tu le vois comme un tableau de bits et tu fais ce que tu as à faire avec.

Ok, si j'ai bien compris, le twiddling c'est que tu joues plutôt avec la représentation binaire d'un type plutôt qu'avec sa "valeur".

Titus007 a écrit :

et que j'ai toujours pas compris ce qu'étaient des flags ou groupe de flags (mais je ne fais pas de programmation, donc c'est un peu normal).

Je ne sais pas si l’explication de tshirtman est clair pour toi.
Sinon il y a un tuto sur le site du zéro à ce sujet, je ne sais pas ce qu’il vaut.
Sinon, tu peux aussi nous dire le point que tu ne comprends pas smile

Si j'ai pas trop mal compris le principe, les flags sont un moyen d'activer certaines options d'une fonction (comme les -x en shell ?). De ce que j'ai encore compris, on ne peut pas donner un nombre indéfini de type à une fonction en C. L'astuce est donc d'avoir un seule type avec laquelle on va faire du twiddling pour activer telle ou telle option. J'ai bon ?

Titus007 a écrit :
grim7reaper a écrit :

Genre tu fais du touillage de bits, ou tu utilises une variable comme groupe de flags et il te faut au moins 8 bits. Bah tu peux utiliser int_least8_t pour être tranquille (la taille réelle pourra cependant être 16, 24 ou 32 bits, ça te garantit au moins 8 c’est tout).

L'autre raison est que dans ce passage, je ne comprends pas si tu fais la manip sur tout le message (at least=au moins tu la fais sur 16, 24, 32 bits ou seulement sur 8 puisque c'est le minimum défini).

Si j’ai besoin de 8 flags, il me faut au moins 8 bits, donc je vais utiliser le type int_least8_t.
Ce que je dis ensuite, c’est que la taille réelle de ce type peut être 8 bits, 16 bits, 24 bits, …
J’aurais au moins 8 bits, je ne vais en utiliser que 8. Mais la type en contient peut-être plus.

Ok, on va faire genre des & pour tester quelle option a été activée pour des flags sur au moins 8 bits, indépendamment de la taille du type après. Comment on sait si c'est sur les premiers 8 bits, ou les 8 derniers qu'il faut jouer pour activer tel ou tel flag ?


tshirtman a écrit :

edit: j'ai pas trouvé de moyen joli de déclarer des flags en C, ce que j'ai trouvé de mieux pour l'instant c'est http://c-faq.com/misc/sd28.html, mais je pratique pas trop ce genre de chose (ni le C en général, grim aura peut être mieux dans sa besace).

Nope.
En fait, j’utilise toujours des constantes en décimal ou hexadécimal.
Et si c’est vraiment complexe, je mets un gros commentaire (exemple de code que j’avais écrit pour le projet de cette année) :

    /* 3: - disable resizer.
     *    - disable output formatter (Cf. "Summary of Constraints", page 91 of
     *      TMS320DM643x DMP Video Processing Front End (VPFE) User's Guide).
     *    - set write enable (write data in SDRAM).
     *    - enable VDHD mode (vertical and horizontal synchronization).
     *
     * 2: - disable low-pass filter (Cf. "Summary of Constraints", page 91 of
     *      TMS320DM643x DMP Video Processing Front End (VPFE) User's Guide).
     *    - configure input as YCbCr 8-bit.
     *
     * F: - pack to 8-bits/pixel (into SDRAM).
     *    - set data width to 8 bits.
     *
     * 8: - input is interlaced.
     *
     * 4: - set VD polarity as negative.
     *    - configure VD and HD as inputs.
     */
    VPFE_CCDC_SYN_MODE = 0x00032F84;

Question : Ici je vois un 3. La forme d'un flag n'est pas nécessairement tu genre 00010...000 (pour les opérations logiques sur un bit en particulier) ?

En tout cas, merci à tous les deux pour votre patience envers un petit noob. tongue


3% of people today would die if facebook was completely destroyed, 2.7% wouldn't. If you are one of the 0.03% that would be laughing, copy and paste this to your signature. If you are one of the 12% who would mourn the dead, don't. If you are among the 60% of people who don't have Internet, well... and if you don't care, do whatever the f... you want !

Hors ligne

#2056 Le 24/09/2012, à 16:56

tshirtman

Re : /* Topic des codeurs [7] */

3 c'est en représentation hexadécimale, en mémoire, c'est 0011, (hexa = de 0 à 15, soit 4 bits) donc plusieurs flags d'un coup, il liste les 4 flags que ça gère dans le commentaire smile

Hors ligne

#2057 Le 24/09/2012, à 19:16

grim7reaper

Re : /* Topic des codeurs [7] */

tshirtman a écrit :

sinon on peut faire des choses genre:

FEATURE1 = 1 << 0
FEATURE2 = 1 << 1
FEATURE3 = 1 << 2

etc…

Des fois j’utilise cette notation aussi. Ça dépend.



Titus007 a écrit :

Ok, si j'ai bien compris, le twiddling c'est que tu joues plutôt avec la représentation binaire d'un type plutôt qu'avec sa "valeur".

Exact smile

Titus007 a écrit :

Si j'ai pas trop mal compris le principe, les flags sont un moyen d'activer certaines options d'une fonction (comme les -x en shell ?). De ce que j'ai encore compris, on ne peut pas donner un nombre indéfini de type à une fonction en C.

En fait, en C on peut donner un nombre indéfini de paramètres (on appelle ça des fonctions variadiques).
Là c’est surtout que l’on peut en avoir beaucoup, mais un nombre fini et variable.
Pour reprendre l’exemple de la SDL, on a un seul paramètre qui contient un groupe de flag qui précise quoi initialiser.

int SDL_Init(Uint32 flags);

Ça évite d’avoir une fonction à trouzmille booléens en paramètre du genre.

int SDL_Init(char timer, char audio, char video, char cdrom, char joystick, char no_parachute, char event_thread);
Titus007 a écrit :

L'astuce est donc d'avoir un seule type avec laquelle on va faire du twiddling pour activer telle ou telle option. J'ai bon ?

Yes, t’as tout compris.

Titus007 a écrit :
Titus007 a écrit :

L'autre raison est que dans ce passage, je ne comprends pas si tu fais la manip sur tout le message (at least=au moins tu la fais sur 16, 24, 32 bits ou seulement sur 8 puisque c'est le minimum défini).

Si j’ai besoin de 8 flags, il me faut au moins 8 bits, donc je vais utiliser le type int_least8_t.
Ce que je dis ensuite, c’est que la taille réelle de ce type peut être 8 bits, 16 bits, 24 bits, …
J’aurais au moins 8 bits, je ne vais en utiliser que 8. Mais la type en contient peut-être plus.

Ok, on va faire genre des & pour tester quelle option a été activée pour des flags sur au moins 8 bits, indépendamment de la taille du type après. Comment on sait si c'est sur les premiers 8 bits, ou les 8 derniers qu'il faut jouer pour activer tel ou tel flag ?

Bah si tu en utilises que 8 et que le int_least8_t fait plus de 8 bits, tu bosseras que sur les 8 premiers.

Titus007 a écrit :
tshirtman a écrit :

edit: j'ai pas trouvé de moyen joli de déclarer des flags en C, ce que j'ai trouvé de mieux pour l'instant c'est http://c-faq.com/misc/sd28.html, mais je pratique pas trop ce genre de chose (ni le C en général, grim aura peut être mieux dans sa besace).

Nope.
En fait, j’utilise toujours des constantes en décimal ou hexadécimal.
Et si c’est vraiment complexe, je mets un gros commentaire (exemple de code que j’avais écrit pour le projet de cette année) :

[…]
    VPFE_CCDC_SYN_MODE = 0x00032F84;

Question : Ici je vois un 3. La forme d'un flag n'est pas nécessairement tu genre 00010...000 (pour les opérations logiques sur un bit en particulier) ?

Comme tshirtman l’a fait remarquer, c’est de l’hexadécimal.
En C, tu ne peux qu’écrire des nombres en décimal, octal et hexadécimal.
Pas de binaire, du moins de manière portable (après certains compilateurs le supportent) ou alors il faut passer par du préprocessing comme dans le lien de tshirtman.



tshirtman a écrit :

3 c'est en représentation hexadécimale, en mémoire, c'est 0011, (hexa = de 0 à 15, soit 4 bits) donc plusieurs flags d'un coup, il liste les 4 flags que ça gère dans le commentaire smile

Exact.
Encore que là c’est un peu plus complexe. C’est de la configuration par registre donc un « flag » peut être sur plusieurs bits.

Dernière modification par grim7reaper (Le 24/09/2012, à 19:30)

Hors ligne

#2058 Le 25/09/2012, à 01:55

Pylades

Re : /* Topic des codeurs [7] */

Oo’, j’ai un mec qui vient de suivre OptBall sur Gitorious.
Bon, en même temps, il vient de suivre une soixantaine de dépôts. ^^


“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

#2059 Le 25/09/2012, à 08:59

Titus007

Re : /* Topic des codeurs [7] */

grim7reaper a écrit :

(...)

Merci beaucoup pour toutes ces explications, c'est beaucoup plus clair !

Bah si tu en utilises que 8 et que le int_least8_t fait plus de 8 bits, tu bosseras que sur les 8 premiers.

Les 8 premiers bits correspondant en terme d'int aux nombres décimaux de 0 à 255, c'est ça ?

En fait, j’utilise toujours des constantes en décimal ou hexadécimal.
Et si c’est vraiment complexe, je mets un gros commentaire (exemple de code que j’avais écrit pour le projet de cette année) :

[…]
    VPFE_CCDC_SYN_MODE = 0x00032F84;

(...)
Comme tshirtman l’a fait remarquer, c’est de l’hexadécimal.
En C, tu ne peux qu’écrire des nombres en décimal, octal et hexadécimal.
Pas de binaire, du moins de manière portable (après certains compilateurs le supportent) ou alors il faut passer par du préprocessing comme dans le lien de tshirtman.
(...)
Encore que là c’est un peu plus complexe. C’est de la configuration par registre donc un « flag » peut être sur plusieurs bits.

L'idée c'est que comme tu ne peux pas écrire directement en binaire, tu travailles en hexa. Ça c'est une chose en terme de déclaration de constantes. Par contre, dans ton exemple, tu fais en fait tes opérations logiques sur un "paquet" de 4 bits plutôt que bit par bit, c'est ça ?

Petite question encore : dans ton exemple, on pourrait écrire indépendamment

    VPFE_CCDC_SYN_MODE = 0x0004F832;

par exemple, ou l'ordre compte ?


3% of people today would die if facebook was completely destroyed, 2.7% wouldn't. If you are one of the 0.03% that would be laughing, copy and paste this to your signature. If you are one of the 12% who would mourn the dead, don't. If you are among the 60% of people who don't have Internet, well... and if you don't care, do whatever the f... you want !

Hors ligne

#2060 Le 25/09/2012, à 10:15

tshirtman

Re : /* Topic des codeurs [7] */

l'ordre compte, c'est une zone en mémoire utilisé comme une série d'interrupteurs (un peu comme ton boitier électrique, chacun indique si quelque chose est actif)
             

0111 01O1 ←lumière de la salle de bain
 ↖↖↖↖ ↖↖↖↖chauffe eau 
  ↖↖↖↖ ↖↖↖garage
   ↖↖↖↖ ↖↖cuisine
    ↖↖↖↖ ↖convecteurs
     ↖↖↖↖
      ↖↖↖↖prises salon
       ↖↖↖chambre
        ↖↖bureau
          ↖disjoncteur général

ici on a 8 bits, soit deux chiffes hexadécimaux. b0111 = 0*8 + 1*4 + 1*2 + 1*1 = 0x7 et b0101 = 0*8 + 1*4 + 0*2 + 1*1 = 0x5

donc un nombre hexadécimal 0x75 pour indiquer l'état électrique de ta maison
l'ordre est important par ce que c'est celui que le tableau électrique comprends

Les 8 premiers bits correspondant en terme d'int aux nombres décimaux de 0 à 255, c'est ça ?

8 bits peuvent représenter les nombres entiers de 0 à 255, ou les entiers relatifs de -128 à 127, ou d'autres choses, ce que les 8 premiers bits d'un int en mémoire représentent dépends de l'ordre dans lequel l'entier est rangé en mémoire, ça peut être la partie haute ou la partie basse du nombre, ça dépends des processeurs.

Dernière modification par tshirtman (Le 25/09/2012, à 10:24)

Hors ligne

#2062 Le 25/09/2012, à 10:47

The Uploader

Re : /* Topic des codeurs [7] */

Plus, Haskell's weird constructs might actually solve the problems they claim to solve (unlike OO Programming).

Y'a un peu de vrai quand même. big_smile


- 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

#2063 Le 27/09/2012, à 12:09

tshirtman

Re : /* Topic des codeurs [7] */

http://code.google.com/p/go/issues/detail?id=4142#c2

I also proposed making malloc(0) perfectly fine, since zero is a
perfectly fine value. I also, in the same letter, proposed making
zero-sized arrays legal, mostly so you could do the extend-the-struct
trick for a variable-sized array as the last field of the struct. I
got two letters back as answer to my one. #1: Malloc(0) shouldn't work
because zero-sized arrays don't work. #2: Zero-sized arrays shouldn't
work because malloc(0) doesn't work. Well played, ANSI C committee,
and may your lives be a living hell.

big_smile

Hors ligne

#2064 Le 27/09/2012, à 19:07

xapantu

Re : /* Topic des codeurs [7] */

Il y a des programateurs qui utilisent des langages impératifs, comme le Caml : un extrait de mon cours d'algorithmie d'aujourd'hui. Bon, je suis mauvaise langue, il était bien ce cours quand même smile

Hors ligne

#2065 Le 27/09/2012, à 19:50

Rolinh

Re : /* Topic des codeurs [7] */

xapantu a écrit :

Il y a des programateurs programmeurs qui utilisent des langages (...)

Fixed

Hors ligne

#2066 Le 28/09/2012, à 17:50

The Uploader

Re : /* Topic des codeurs [7] */

J'ai rendu mon mémoire ! \o/

J'ai encore l'oral à préparer ! /o\


- 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

#2067 Le 29/09/2012, à 17:19

xapantu

Re : /* Topic des codeurs [7] */

Rolinh a écrit :
xapantu a écrit :

Il y a des programateurs programmeurs qui utilisent des langages (...)

Fixed

Oui, c'était du second degré tongue (c'est comme le Caml, je suppose qu'on quand même peut l'utiliser en impératif (mais à la base c'est quand même du fonctionnel), j'en sais pas grand chose en fait, mais de là à le présenter comme un des seuls langage impératifs...). Mais le programmateur, venant d'un prof qui fait des cours d'algo, ça fait bizarre quand même tongue  (surtout que le reste du cours était bien !)

Hors ligne

#2068 Le 01/10/2012, à 18:31

Dr Le Rouge

Re : /* Topic des codeurs [7] */

Ayé, j'ai enfin publié mon programme de vérification de vote électronique. Pfiou, il m'aura occupé pendant un moment celui-là ^^


C'est deux suites de Cauchy qui veulent aller à la soirée 'no limit'. Hélas, à l'entrée le videur leur dit : "désolé, c'est complet !".
mon site perso (π²/6.fr) et mon blog

Hors ligne

#2069 Le 02/10/2012, à 19:50

Elzen

Re : /* Topic des codeurs [7] */

Bon, petite question de propreté en HTML/CSS.

J'veux faire une liste de liens vers des répertoires. Dans chaque répertoire, j'ai un fichier icon.png représentant rapidement le contenu du répertoire.

Je voudrais que, à l'affichage, le truc affiche à la fois l'image en question et un texte descriptif (généralement, le nom du répertoire, mais à la casse prêt et sans le slash final, donc pas exactement le contenu de l'attribut href). Seulement, pour les navigateurs en mode texte ne gérant pas les images, j'veux éviter d'avoir le nom affiché deux fois.

J'ai donc commencé par faire ça, en HTML :

<li><a href="répertoire/"><img src="répertoire/icon.png" alt="Titre" /></a></li>

Et le pendant CSS :

li a img:after {
	content: attr(alt);
}

Sauf que bizarrement, sous Firefox, ça n'a pas l'air de marcher : le contenu est bien affiché quand l'image ne se charge pas (genre, pour les répertoires dans lesquels il n'y a pas encore le fameux fichier), mais dès que l'image s'affiche, les deux disparaissent.

Du coup, j'ai tenté la manœuvre inverse : afficher seulement le texte en HTML et faire afficher l'image par CSS (ce qui, d'ailleurs, me semblerait un tantinet plus propre). Donc, HTML :

<li><a href="répertoire/">Titre</a></li>

Et CSS :

li a:before {
	content: url(attr(href) "icon.png");
}

Ce qui, évidemment, ne fonctionne pas.

li a:before {
	content: attr(href) "icon.png";
}

M'affiche bien l'adresse de l'image au format texte, mais la norme n'a pas l'air prévue pour qu'on combine les fonctions CSS (même quand je mets quelque part la vraie adresse directe de l'image, url(attr(machin)) ne marche pas, même sans concaténation).

Je pourrais faire une classe CSS par lien, avec à chaque fois la bonne adresse en dur dans la CSS, sauf que ça me semblerait assez moche, et surtout pas portable (je serais obligé de retoucher le CSS à chaque ajout de répertoire en plus de retoucher le HTML, ce qui est bof).

Donc, je reviens sur l'idée de départ, à savoir mettre une balise image dans le lien, mais en mettant le contenu textuel supplémentaire ailleurs que dans la balise image directement. L'idée sur laquelle je me suis arrêté est, côté HTML :

<li><a title="Titre" href="répertoire/"><img src="répertoire/icon.png" alt="Titre" /></a></li>

Et côté CSS :

li a:after {
	content: attr(title);
}

Il y a doublon d'information entre les attributs alt et title, mais ç'n'est pas particulièrement grave, vu les attributs en question.

Mais du coup, j'me demande : vous feriez comment, vous ? Y a un truc plus propre pour faire ça ?

Hors ligne

#2070 Le 02/10/2012, à 20:22

maxpoulin64

Re : /* Topic des codeurs [7] */

@ArkSeth

<li>
	<a class="lien-repertoire" href="repertoire/">
		<img src="repertoire/icon.png" alt="" />
		<span> Titre du répertoire </span>
	</a>
</li>

En HTML, une image est une image, un lien est un lien, un texte est un texte.

Avec ça, normalement le rendu est potable même sans CSS. Mais tu peux mettre "vertical-align: middle;" sur l'image et le span pour garder le tout centré verticalement. J'ai ajouté le span pour faciliter le centrage vertical, il suffit d'appliquer "vertical-align: middle;" sur le span et l'image pour que le tout soit centré verticalement proprement.

La propriété "alt" de l'image ne sert qu'à afficher un texte de remplacement quand l'Image n'existe pas, mais quand l'image s'affiche, il est normal que le texte ne s'affiche pas. C'est par exemple, si tu as un graphique dans une image: tu mets la propriété alt= "Graphique des blah blah blah", pour les aveugles ou simplement informer le visiteur de ce que l'image devrait contenir normalement. Ici, c'est simplement une décoration, alors on la laisse vide.

Hors ligne

#2071 Le 02/10/2012, à 20:29

Elzen

Re : /* Topic des codeurs [7] */

Le truc est que, d'une, un alt vide, sauf cas exceptionnel, c'est assez moche : si l'image apparaît dans le code HTML, alors c'est que c'est une information sémantique utile, qu'il faut donc légender⁽¹⁾ ; de deux, en l'occurrence, le choix d'afficher les deux informations (texte et image) est ici purement stylistique, un seul des deux suffit niveau sémantique (si j'pouvais faire facilement comme je veux, je ferais le contraire, à savoir texte seul et image en CSS, mais bon, j'm'adapte) ; et de trois, j'ai demandé une organisation HTML/CSS, ta réponse est donc HS. Donc merci d'éviter d'essayer de m'apprendre mon boulot, surtout quand manifestement, tu n'le maîtrises pas si bien que ça tongue


(Edit : (1) le principe, c'est que si tu n'as rien à mettre en alt, c'est que l'image n'a rien à fiche dans le code HTML, c'est une image qui doit être ajoutée par CSS. C'est un peu la raison de base pour laquelle l'attribut alt est obligatoire (alors qu'un attribut vide provoque un warning à la validation))

Dernière modification par ArkSeth (Le 02/10/2012, à 20:32)

Hors ligne

#2072 Le 02/10/2012, à 20:35

maxpoulin64

Re : /* Topic des codeurs [7] */

ArkSeth a écrit :

Le truc est que, d'une, un alt vide, sauf cas exceptionnel, c'est assez moche : si l'image apparaît dans le code HTML, alors c'est que c'est une information sémantique utile, qu'il faut donc légender ; de deux, en l'occurrence, le choix d'afficher les deux informations (texte et image) est ici purement stylistique, un seul des deux suffit niveau sémantique (si j'pouvais faire facilement comme je veux, je ferais le contraire, à savoir texte seul et image en CSS, mais bon, j'm'adapte) ; et de trois, j'ai demandé une organisation HTML/CSS, ta réponse est donc HS. Donc merci d'éviter d'essayer de m'apprendre mon boulot, surtout quand manifestement, tu n'le maîtrises pas si bien que ça tongue

J'ai pas trop compris ta question alors, et je n'essais pas de t'en apprendre plus (mais c'est aussi mon métier, appris un peu à l'arrache cela dit). Mais je pense que c'est vraiment la meilleure solution, c'est joli d'essayer de garder le plus de trucs en CSS possible, mais ça a beaucoup de limitations. Perso j'ai toujours des cas où je me retrouve où je dois mettre une dizaine de <div> un dans l'autre pour obtenir le résultat demandé. Ça fait longtemps que j'ai arrêter de me poser des questions sur la sémantique de la page HTML, parce que manifestement mes graphistes eux s'en tapent de l'organisation, ils veulent du style ><

T'as demandé comment on ferait, moi c'est comme ça que je fais, parce que sinon ça devient vite un bordel (surtout avec IE dans les parrages). Après t'es pas obligé de prendre l'avis hein, t'as demandé des avis, alors des avis tu reçois.

*retourne travailler*

Hors ligne

#2073 Le 02/10/2012, à 20:46

Elzen

Re : /* Topic des codeurs [7] */

Bon, je n'pensais pas qu'une question comme ça virerait au troll là-dessus, mais vu qu'on y est…

maxpoulin64 a écrit :

je n'essais pas de t'en apprendre plus

Alors évite de faire des tournures du genre « Avec ça, normalement le rendu est potable même sans CSS. Mais tu peux mettre telle propriété que tu n'as pas demandé et qui n'a rien à voir avec la question », parce que c'est l'impression que ça peut donner tongue

maxpoulin64 a écrit :

(mais c'est aussi mon métier, appris un peu à l'arrache cela dit)

Effectivement, tu as l'air d'avoir apprit les choses assez à l'arrache ^^

maxpoulin64 a écrit :

Perso j'ai toujours des cas où je me retrouve où je dois mettre une dizaine de <div> un dans l'autre pour obtenir le résultat demandé.

Bah, perso, je réfléchis sémantiquement d'abord, et graphiquement, j'arrive presque toujours à obtenir ce que je veux (et dans le pourcent de cas où ça ne passe pas, il se trouve qu'entre les délires du graphistes et les normes (et les lois, parce que l'accessibilité, c'est dans la loi), le graphiste passe en second).

maxpoulin64 a écrit :

(surtout avec IE dans les parrages).

Ça, ça peut effectivement être problématique. En l'occurrence, ç'pour mon site perso, donc le rendu final sous IE, j'n'ai pas les moyens de tester, donc tant pis. Mais ç'vrai que j'n'avais pas précisé.

maxpoulin64 a écrit :

Après t'es pas obligé de prendre l'avis hein, t'as demandé des avis, alors des avis tu reçois.

Bah disons que l'avis était un peu mal présenté, et surtout pas franchement dans le sujet tongue (D'autant que j'ai demandé explicitement un truc propre, et que tu m'as répondu un truc ostensiblement pas propre, voir mon édit ci-dessus concernant le alt)

Néanmoins, merci à toi wink (et désolé pour la réponse peut-être un peu brusque)

Dernière modification par ArkSeth (Le 02/10/2012, à 20:49)

Hors ligne

#2074 Le 02/10/2012, à 21:32

Mindiell

Re : /* Topic des codeurs [7] */

Mouais, ben j'y réfléchis parce que le problème est assez intéressant wink

Hors ligne