Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4158 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  573  574  575  ..  1454  1455  1456  1457  1458  1459
Auteur Sujet :

blabla@web

n°1747762
Shinuza
This is unexecpected
Posté le 17-06-2008 à 18:39:15  profilanswer
 

Reprise du message précédent :

theredled a écrit :


Bah ouais, je sais pas, ou si ya pas de normes définies, informations importantes etc... genre

Code :
  1. /**
  2. *  @copyright Monde Cie
  3. *  @author Pouetman
  4. */


?


C'est pas une norme, c'est la notation JavaDoc, t'es libre de faire ce que tu veux, si ton code n'est pas parsé pour créer une doc, tu peux très bien choisir le format qui te sied.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
mood
Publicité
Posté le 17-06-2008 à 18:39:15  profilanswer
 

n°1747807
the real m​oins moins
Posté le 17-06-2008 à 19:50:27  profilanswer
 
n°1747809
the real m​oins moins
Posté le 17-06-2008 à 19:51:20  profilanswer
 

et sinon, vu que c'est le topic, c'est legal ce genre de connerie ?

<span class="foo&#45;bar">pouet</span>


j'ai l'impression que mes browsers aiment pas trop en fait.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1747810
0x90
Posté le 17-06-2008 à 19:52:17  profilanswer
 

mIRROR a écrit :


bah nan j ai appris ca avec gatsu mais en effet ce genre d effets cosmetiques ca appartient au js (moi aussi j avais tendance a foutre ca dans le html meme si ca me perturbait :/)
les paranos ils se bouffent des coins carrés pissétou [:cloud_]


 
/me partially disagree
 
Si c'est dynamique (tooltip complexe, etc...) en js c'est le plus simple en effet, je dirais même que les bidouilles à base de :hover en css pour faire des menus sont "légales" mais ne sont pas du tout dans l'esprit du texte, si on arrive à faire des menus avec ça, c'est plus par hasard que par choix des concepteurs initiaux, tout comme les design à base de flottants en fait...
 
Par contre, si ça doit apparaitre dès le chargement de la page ( div pour coins ronds, l'onglet par défaut d'une zone à onglets, etc...), je préfère le laisser dans le html, quitte à avoir l'équivalent du boulot du js qui aurait décoré un bloc nu coté serveur, genre un truc à base de tags jsp genre:

Code :
  1. <d:block>
  2. le contenu de ton block
  3. </d:block>


Tu conserve toujours ta séparation entre le contenu et les div "inutiles", faut juste un poil plus de coopération entre les dev serveur et les dev clients que ce qu'il se fait habituellement, mais le résultat se charge plus vite et t'évite de faire un gros walk de toute la page en js... ( c'est donc un avis purement orienté par les perfs clients, même pas par l'obsession w3c-nazi que le site marche sans js, même si je préfère que ce soit le cas quand même ).


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1747811
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-06-2008 à 19:53:25  profilanswer
 

Shinuza a écrit :


C'est pas une norme, c'est la notation JavaDoc, t'es libre de faire ce que tu veux, si ton code n'est pas parsé pour créer une doc, tu peux très bien choisir le format qui te sied.


 
'tain mais lol quoi :/ Tjs là quand il s'agit de dire n'imp :/
 

Spoiler :

Alors que c'est du PhpDoc bien sûr  [:iorili]  
 
:o


---------------
Gamertag: CoteBlack YeLL
n°1747843
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 21:05:08  profilanswer
 

0x90 a écrit :

 

/me partially disagree

 

Si c'est dynamique (tooltip complexe, etc...) en js c'est le plus simple en effet, je dirais même que les bidouilles à base de :hover en css pour faire des menus sont "légales" mais ne sont pas du tout dans l'esprit du texte, si on arrive à faire des menus avec ça, c'est plus par hasard que par choix des concepteurs initiaux, tout comme les design à base de flottants en fait...

 

Par contre, si ça doit apparaitre dès le chargement de la page ( div pour coins ronds, l'onglet par défaut d'une zone à onglets, etc...), je préfère le laisser dans le html, quitte à avoir l'équivalent du boulot du js qui aurait décoré un bloc nu coté serveur, genre un truc à base de tags jsp genre:

Code :
  1. <d:block>
  2. le contenu de ton block
  3. </d:block>


Tu conserve toujours ta séparation entre le contenu et les div "inutiles", faut juste un poil plus de coopération entre les dev serveur et les dev clients que ce qu'il se fait habituellement, mais le résultat se charge plus vite et t'évite de faire un gros walk de toute la page en js... ( c'est donc un avis purement orienté par les perfs clients, même pas par l'obsession w3c-nazi que le site marche sans js, même si je préfère que ce soit le cas quand même ).


C'est justement la partie Dev servuer et dev clients qui fait particulièrement chier. Tant qu'on sera dirigé par des marketeux qui pinent queudal au devweb et à l'importance de la communication dev serveur et dev client. Ben on l'aura dans le cul.

 

Mais je vais un peu te contredire sur un point. Ma solution est parfaite dans le cas où, le site doit se prendre un lifting, et par hasard il avait été codé sans coin arrondis. S'il faut rajouter des coins arrondis, on le peut selon le block ou pour l'ensemble des blocks, sans devoir toucher du code back qui parfois peut etre juste de la misère à modifier :S

 


et sinon le bébé en transparence de partout est sorti :
http://www.nokiatrendslab.fr/
avec notez la technique pour faire de la transparence alpha, sans se soucier de la hauteur/largeur et sans avoir à se faire chier de déclarer un filter à la con. Et donc aussi sans se soucier du chemin de l'image, (cf, post quelques pages précédentes)
.maClass {background:url(lefichierpng.png); filter:expression(pngFix(this))}

 

avec bien sur la possibilité de passer 1 ou 2 paramètres pour gérer certains cas (cas où on veut pas d'overflow:hidden et cas où on utilise un pixel répété)

 

Après faut juste expliquer la technique et c'est magique \o/

Message cité 1 fois
Message édité par gatsu35 le 17-06-2008 à 21:08:16
n°1747857
Shinuza
This is unexecpected
Posté le 17-06-2008 à 21:37:36  profilanswer
 

gatsu35 a écrit :

avec notez la technique pour faire de la transparence alpha, sans se soucier de la hauteur/largeur et sans avoir à se faire chier de déclarer un filter à la con. Et donc aussi sans se soucier du chemin de l'image, (cf, post quelques pages précédentes)
.maClass {background:url(lefichierpng.png); filter:expression(pngFix(this))}


http://en.wikipedia.org/wiki/Law_of_Demeter


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747884
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-06-2008 à 22:00:02  profilanswer
 

Tidy me dit action="POST" & <script language="javascript"> et il a bien raison :o


---------------
Gamertag: CoteBlack YeLL
n°1747893
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 22:10:46  profilanswer
 
n°1747894
theredled
● REC
Posté le 17-06-2008 à 22:12:55  profilanswer
 

Shinuza a écrit :


C'est pas une norme, c'est la notation JavaDoc, t'es libre de faire ce que tu veux, si ton code n'est pas parsé pour créer une doc, tu peux très bien choisir le format qui te sied.


[:ojap]


[:ojap]
([:ojap])
 

the real moins moins a écrit :

et sinon, vu que c'est le topic, c'est legal ce genre de connerie ?

<span class="foo&#45;bar">pouet</span>


j'ai l'impression que mes browsers aiment pas trop en fait.


C'est ptet plus le CSS qui va pas forcément aimer :D


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 17-06-2008 à 22:12:55  profilanswer
 

n°1747898
Shinuza
This is unexecpected
Posté le 17-06-2008 à 22:19:41  profilanswer
 

gatsu35 a écrit :


 [:petrus dei] explain more ?

Si pour une raison x ou y, le js se charge pas, bam, t'as plus de site.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747901
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 22:25:20  profilanswer
 

Shinuza a écrit :

Si pour une raison x ou y, le js se charge pas, bam, t'as plus de site.


bah c'est con, mais ya tout le site hein [:petrus75], c'est juste une fonction pour pallier au pb de IE, mais par defaut tu as tout le site [:petrus75]

 

Ils auront juste des PNG avec un fond gris [:petrus75]
mais sachant que ce site était largement parti pour etre en mode "web 2.0 rien a foutre des gens qu'on pas de JS" je m'en suis pas soucié [:petrus75].

 

Mais accessoirement le site fonctionne très bien sans JS :o, j'ai peut etre juste quelques petits reglages à effectuer au niveau de la classe hasJS pour  bloc et ca sera parfait \o/.

 

J'ai ptet pas besoin de te rappeler que faire fonctionner un site sans JS est mon cheval de bataille :o

 

edit : mais pourquoi je cherche à me justifier [:pingouino]

Message cité 1 fois
Message édité par gatsu35 le 17-06-2008 à 22:25:44
n°1747902
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 22:28:11  profilanswer
 

Dj YeLL a écrit :

Tidy me dit action="POST" & <script language="javascript"> et il a bien raison :o


pour le site l'intégration c'est pas moi qui l'ai faite :o, moi j'ai livré des maquette W3C Compliant :o
 
apres derriere tu prends en compte les facteurs suivant :  
 
- Obligation d'utiliser un vieux script de merde pour les stats, et l'ingé a intégré à l'arrache, sachant que le script doit aussi prendre en compte les vieux navigateur, il est usuel d'utiliser language="javascript"
- apres pour les method="POST" et autres biduleries du genre c'est pas moi [:cosmoschtroumpf]

n°1747906
Shinuza
This is unexecpected
Posté le 17-06-2008 à 22:37:26  profilanswer
 

gatsu35 a écrit :


bah c'est con, mais ya tout le site hein [:petrus75], c'est juste une fonction pour pallier au pb de IE, mais par defaut tu as tout le site [:petrus75]
 
Ils auront juste des PNG avec un fond gris [:petrus75]
mais sachant que ce site était largement parti pour etre en mode "web 2.0 rien a foutre des gens qu'on pas de JS" je m'en suis pas soucié [:petrus75].
 
Mais accessoirement le site fonctionne très bien sans JS :o, j'ai peut etre juste quelques petits reglages à effectuer au niveau de la classe hasJS pour  bloc et ca sera parfait \o/.
 
J'ai ptet pas besoin de te rappeler que faire fonctionner un site sans JS est mon cheval de bataille :o
 
edit : mais pourquoi je cherche à me justifier [:pingouino]


J'ai jamais parlé de désactiver le js, relis.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747908
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 22:44:23  profilanswer
 

Shinuza a écrit :


J'ai jamais parlé de désactiver le js, relis.


Ben si pour une raison X ou Y le JS ne se charge pas, je ne vois pas pourquoi je n'aurai plus de site, puisque le site fonctionne sans JS
 
Evite de tourner autour du pot, ça serait mieux

n°1747909
Dj YeLL
$question = $to_be || !$to_be;
Posté le 17-06-2008 à 22:46:06  profilanswer
 

gatsu35 a écrit :


pour le site l'intégration c'est pas moi qui l'ai faite :o, moi j'ai livré des maquette W3C Compliant :o
 
apres derriere tu prends en compte les facteurs suivant :  
 
- Obligation d'utiliser un vieux script de merde pour les stats, et l'ingé a intégré à l'arrache, sachant que le script doit aussi prendre en compte les vieux navigateur, il est usuel d'utiliser language="javascript"
- apres pour les method="POST" et autres biduleries du genre c'est pas moi [:cosmoschtroumpf]


 
Je n'en doute pas :D


---------------
Gamertag: CoteBlack YeLL
n°1747917
Shinuza
This is unexecpected
Posté le 17-06-2008 à 22:57:44  profilanswer
 

gatsu35 a écrit :


Ben si pour une raison X ou Y le JS ne se charge pas, je ne vois pas pourquoi je n'aurai plus de site, puisque le site fonctionne sans JS
 
Evite de tourner autour du pot, ça serait mieux

Voilà ce qui va se passer, ton site se charge, et IE essaiera d'évaluer l'expression ou les expressions dans les CSS, hors la fonction correspondante n'existe pas. Ca va donc tourner en boucle (puisqu'il faut écraser la référence à l'élement avec elm.style.filter = ' ') et exploser.
 
J'ai eu ce genre de soucis sur Renault, aussi con que ça puisse paraitre ça arrive, et ça rend le site inutilisable. Et le message d'erreur est incompréhensible bien sur.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747922
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 23:08:41  profilanswer
 

Ah ça oui anéfé [:petrus75]
mais si on part du principe que le fichier JS est bien là, et que la fonction est bien là il n'y aura aucun soucis.
En règle général, CSS/JS sont toujours liés chez nous et ça ne peut pas arriver.
 
Accessoirement, comment veux-tu reussir à faire du PNG32 sans avoir à te faire chier, et tout en respectant les contraintes que j'avais ctié quelques pages avant :  
 

gatsu35 a écrit :


l'utilisation d'un filtre pour le PNG sous IE6 a quelques détails à connaitre
- ce n'est pas un background-image, mais une couche qui au niveau du model de la boite se situe sous la couche du background-image, et sous la couche du background-color.
- quand on applique ce filter, l'image sera toujours calée en haut à gauche, et ne pourra pas etre répétée ou autre, et bien sur aucun moyen de la caler à droite ou en bas
- l'image peut etre utilisée de deux manières différentes :  
     - method 'crop' : l'image se comporte alors comme un background-image toujours positionné en top left
     - method 'scale' : l'image se redimenssionne aux dimensions de la boite (je m'en sert quand j'ai juste un fond opaque répété, l'image est au final agrandie à mort
- Quand on se sert du filter du png sur un élément, il se peut que les liens ou les éléments fils soient devenus inactifs.
 
 
Connaissant ces détails, apres il suffit de coder une fonction propre, qui gère tous ces problèmes. Avec en plus un parametre pour dire crop ou scale (crop etant la valeur par defaut)


n°1747924
nraynaud
lol
Posté le 17-06-2008 à 23:09:27  profilanswer
 

gatsu35 a écrit :


pour le site l'intégration c'est pas moi qui l'ai faite :o, moi j'ai livré des maquette W3C Compliant :o
 
apres derriere tu prends en compte les facteurs suivant :  
 
- apres pour les method="POST" et autres biduleries du genre c'est pas moi [:cosmoschtroumpf]


cette remarque est un motif de licenciement dans certaines boites ...  
 

Spoiler :

Et un bon moyen de promotion dans la majorité que représentent les autres :/


---------------
trainoo.com, c'est fini
n°1747927
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 23:30:28  profilanswer
 

nraynaud a écrit :


cette remarque est un motif de licenciement dans certaines boites ...  
 

Spoiler :

Et un bon moyen de promotion dans la majorité que représentent les autres :/



EN quoi ça serait un motif de licenciement ou les corps de métiers sont complètement séparés.
ce n'est pas à moi de rajouter les vieux scripts moches, et les form s'il y en a besoin. J'en mets souvent au niveau de la maquette HTML Mais comme je ne touche jamais à l'intégration j'ai bien le droit de dire que c'est pas moi :o

n°1747932
Shinuza
This is unexecpected
Posté le 17-06-2008 à 23:38:40  profilanswer
 

gatsu35 a écrit :

Ah ça oui anéfé [:petrus75]
mais si on part du principe que le fichier JS est bien là, et que la fonction est bien là il n'y aura aucun soucis.
En règle général, CSS/JS sont toujours liés chez nous et ça ne peut pas arriver.
 
Accessoirement, comment veux-tu reussir à faire du PNG32 sans avoir à te faire chier, et tout en respectant les contraintes que j'avais ctié quelques pages avant :  
 


Nan mais comme je t'ai dis, c'est arrivé sur Renault, 4h de panique totale parce que tout était pété, impossible de tracer l'erreur (Ligne 1 [:bien], j'ai même cru à un caractère pourri)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747942
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 23:48:07  profilanswer
 

Shinuza a écrit :


Nan mais comme je t'ai dis, c'est arrivé sur Renault, 4h de panique totale parce que tout était pété, impossible de tracer l'erreur (Ligne 1 [:bien], j'ai même cru à un caractère pourri)


Ben ouais mais tu crois que parcourir TOUT le dom à la recherche de l'élément qui a besoin de la fonction pngFix c'est plus intelligent [:petrus75], la CSS c'est le seul recours connu

n°1747947
Shinuza
This is unexecpected
Posté le 17-06-2008 à 23:52:35  profilanswer
 

gatsu35 a écrit :


Ben ouais mais tu crois que parcourir TOUT le dom à la recherche de l'élément qui a besoin de la fonction pngFix c'est plus intelligent [:petrus75], la CSS c'est le seul recours connu

Y'a rien qui me prouve que ça serait beaucoup plus lent. Donc, non c'est pas le seul recours connu, mais j'ai du temps, je ferais des recherches.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1747952
gatsu35
Blablaté par Harko
Posté le 17-06-2008 à 23:56:11  profilanswer
 

Shinuza a écrit :

Y'a rien qui me prouve que ça serait beaucoup plus lent. Donc, non c'est pas le seul recours connu, mais j'ai du temps, je ferais des recherches.


faire un getElementsByTagName('*') sur les sites qu'on traite c'est assez warrior nan [:dawa] ?

n°1747970
the real m​oins moins
Posté le 18-06-2008 à 01:13:18  profilanswer
 


theredled a écrit :


C'est ptet plus le CSS qui va pas forcément aimer :D


a vrai dire, j'ai pas essayé d'isoler le bordel, mais meme sans classe déclarée dans mon css avec l'un ou l'autre nom, me semble que ff rendait juste n'importe quoi


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1748005
masklinn
í dag viðrar vel til loftárása
Posté le 18-06-2008 à 09:42:58  profilanswer
 

XHTML vs HTML, un post pas mal sur b-list: http://www.b-list.org/weblog/2008/jun/18/html/


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1748078
El_gringo
Posté le 18-06-2008 à 11:55:55  profilanswer
 

Quelqu'un aurait une idée de ce qui cloche ici :  
http://forum.hardware.fr/hfr/Progr [...] 5826_1.htm

n°1748090
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 12:25:44  profilanswer
 

Bon, j'en reviens toujours à mes optims SQL, je pige pas ce qu'il faut que je fasse pour éviter un full scan sur une table lors d'un order by multiple :??:
Requête-type :

Code :
  1. SELECT r.ID
  2. FROM playersinreps AS pir
  3. JOIN replays AS r ON r.ID = pir.RepID
  4. WHERE r.IsPrivate =0
  5.  AND pir.IsObs =0
  6. GROUP BY r.ID
  7. ORDER BY r.DateAdded DESC , r.ID
  8. LIMIT 0,3


Explain :


id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra
1  SIMPLE  r  index  PRIMARY  PRIMARY  4  NULL  5631  Using where; Using temporary; Using filesort
1  SIMPLE  pir  ref  RepID  RepID  4  depot.r.ID  2  Using where


Donc si j'enlève le "r.DateAdded DESC", là pu de pb, ça pootre en perfos. Sinon, c'est 0.11 s pour une requête comme ça, ça me fait un peu chier [:pingouino]
Je vois rien dans la doc qui me dise comment je peux régler ce type de problème, pourtant c'est pas la mer à boire, si ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748092
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-06-2008 à 12:30:34  profilanswer
 

t'as un index dessus? Si oui, il est bien en desc?


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1748093
ratibus
Posté le 18-06-2008 à 12:31:44  profilanswer
 

Taiche a écrit :

Bon, j'en reviens toujours à mes optims SQL, je pige pas ce qu'il faut que je fasse pour éviter un full scan sur une table lors d'un order by multiple :??:
Requête-type :

Code :
  1. SELECT r.ID
  2. FROM playersinreps AS pir
  3. JOIN replays AS r ON r.ID = pir.RepID
  4. WHERE r.IsPrivate =0
  5.  AND pir.IsObs =0
  6. GROUP BY r.ID
  7. ORDER BY r.DateAdded DESC , r.ID
  8. LIMIT 0,3


Explain :


id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra
1  SIMPLE  r  index  PRIMARY  PRIMARY  4  NULL  5631  Using where; Using temporary; Using filesort
1  SIMPLE  pir  ref  RepID  RepID  4  depot.r.ID  2  Using where


Donc si j'enlève le "r.DateAdded DESC", là pu de pb, ça pootre en perfos. Sinon, c'est 0.11 s pour une requête comme ça, ça me fait un peu chier [:pingouino]
Je vois rien dans la doc qui me dise comment je peux régler ce type de problème, pourtant c'est pas la mer à boire, si ?


Il sert à quoi ton ORDER BY r.DateAdded car vu que tu remontes pas le champ en question et que le ORDER est appliqué après le GROUP BY ça sert un peu à rien :D

 

Edit : OK en fait il fait comme pour le SELECT :

Citation :

The select list extension also applies to ORDER BY. That is, you can use non-aggregated columns or calculations in the ORDER BY clause that do not appear in the GROUP BY clause. This extension does not apply if the ONLY_FULL_GROUP_BY SQL mode is enabled.

Message cité 1 fois
Message édité par ratibus le 18-06-2008 à 12:33:57

---------------
Mon blog
n°1748094
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 12:32:37  profilanswer
 

Ouais j'ai un index mais je savais pas qu'on pouvait le définir pour desc ou asc [:petrus75]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748095
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 12:35:19  profilanswer
 

ratibus a écrit :


Il sert à quoi ton ORDER BY r.DateAdded car vu que tu remontes pas le champ en question et que le ORDER est appliqué après le GROUP BY ça sert un peu à rien :D


Spour avoir une liste d'IDs triés dans cet ordre. Les 3 plus récents puis, pour 2 trucs ayant la même date, je vais juste sorter sur l'ID.
Ca te paraît pas terrible ?

 

EDIT : chu en train de découvrir http://www.mysqlperformanceblog.com/ et splutôt pas mal [:petrus75]


Message édité par Taiche le 18-06-2008 à 12:46:32

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748099
ratibus
Posté le 18-06-2008 à 12:57:58  profilanswer
 

T'as quoi comme index sur ta table r ?

 

Je tenterais un ALTER TABLE replays ADD INDEX (IsPrivate, DateAdded DESC, ID) et fais péter l'EXPLAIN ensuite ;)

Message cité 1 fois
Message édité par ratibus le 18-06-2008 à 12:58:46

---------------
Mon blog
n°1748117
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-06-2008 à 13:38:25  profilanswer
 

Taiche a écrit :


Code :
  1. SELECT r.ID
  2. FROM playersinreps AS pir
  3. JOIN replays AS r ON r.ID = pir.RepID
  4. WHERE r.IsPrivate =0
  5.  AND pir.IsObs =0
  6. GROUP BY r.ID
  7. ORDER BY r.DateAdded DESC , r.ID
  8. LIMIT 0,3




Euhh une autre question, c'est la même requête qu'hier en simplifiée ( genre il manque le count(*) ) ou s'en est une autre???
Si c'est une autre j'aurais tendance à préferer un distinct à un group by ( même si l'optimizer mysql transforme ça en group by et que ça ne changera rien à ton problème).

 

Ensuite j'écrirais également la requête dans l'autre sens et légèrement remaniée:

Code :
  1. SELECT r.ID
  2. FROM  replays AS r  
  3. INNER JOIN playersinreps AS pir ON r.ID = pir.RepID   AND pir.IsObs =0
  4. WHERE r.IsPrivate =0
  5. GROUP BY r.ID
  6. ORDER BY r.DateAdded DESC , r.ID
  7. LIMIT 0,3


Enfin l'index double DateAdded, ID ne servira en théorie pas a grand chose car
http://dev.mysql.com/doc/refman/5. [...] ation.html

Citation :

Quelques cas où MySQL ne peut pas utiliser les index pour répondre à ORDER BY: (Notez que MySQL utilisera quand même les indexes pour trouver les lignes qui correspondent à la clause WHERE) :
*      Vous effectuez un ORDER BY sur des clefs différentes :

 

Message cité 1 fois
Message édité par anapajari le 18-06-2008 à 13:39:58

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1748184
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 14:40:38  profilanswer
 

Bon alors [:petrus75]

ratibus a écrit :

T'as quoi comme index sur ta table r ?


Avant ta proposition ci-dessous, la clé primaire qui est ID et DateAdded.
Sur pir, j'ai RepID et PlayerID.

ratibus a écrit :


Je tenterais un ALTER TABLE replays ADD INDEX (IsPrivate, DateAdded DESC, ID) et fais péter l'EXPLAIN ensuite ;)


Hop :

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra
1  SIMPLE  r  range  PRIMARY,IsPrivate  IsPrivate  2  NULL  5581  Using where; Using index; Using temporary; Using filesort
1  SIMPLE  pir  ref  RepID  RepID  4  depot.r.ID  2  Using where


Ca a l'air pas mal, ça rajoute un using index dessus. Mais la requête bouffe toujours 0.11 s, je présume que c'est le filesort qui détruit tout.

anapajari a écrit :


Euhh une autre question, c'est la même requête qu'hier en simplifiée ( genre il manque le count(*) ) ou s'en est une autre???


Une autre, celle-ci est lancée sur toutes les pages (hier stait une version simplifiée d'un truc lancé uniquement sur demande).

anapajari a écrit :


Si c'est une autre j'aurais tendance à préferer un distinct à un group by ( même si l'optimizer mysql transforme ça en group by et que ça ne changera rien à ton problème).
 
Ensuite j'écrirais également la requête dans l'autre sens et légèrement remaniée:

Code :
  1. SELECT r.ID
  2. FROM  replays AS r  
  3. INNER JOIN playersinreps AS pir ON r.ID = pir.RepID   AND pir.IsObs =0
  4. WHERE r.IsPrivate =0
  5. GROUP BY r.ID
  6. ORDER BY r.DateAdded DESC , r.ID
  7. LIMIT 0,3


Enfin l'index double DateAdded, ID ne servira en théorie pas a grand chose car
http://dev.mysql.com/doc/refman/5. [...] ation.html

Citation :

Quelques cas où MySQL ne peut pas utiliser les index pour répondre à ORDER BY: (Notez que MySQL utilisera quand même les indexes pour trouver les lignes qui correspondent à la clause WHERE) :
*      Vous effectuez un ORDER BY sur des clefs différentes :


 


Ouais, j'ai bien vu cette limitation et c'est un peu le but de mon post initial, parce que je me demande comment font les gens dans la vraie vie. Je veux dire, spa si extraordinaire que ça de vouloir sorter sur 2 colonnes, si ?
 
Sinon, pour ta propal de requête (et en supprimant l'index proposé par ratibus), le timing est toujours le même à peu de choses près (0.10 s), mais l'explain est un peu différent :

id  select_type  table  type  possible_keys  key  key_len  ref  rows  Extra
1  SIMPLE  r  index  PRIMARY  PRIMARY  4  NULL  5631  Using where; Using temporary; Using filesort
1  SIMPLE  pir  ref  RepID  RepID  4  depot.r.ID  2  Using where


J'avoue bien aimer le coup de déplacer le pir.IsObs=0 dans le JOIN, ça me paraît effectivement plus logique.
 
En tout cas, merci beaucoup pour l'aide, c'est très apprécié :jap: J'avale pas mal de doc sur le sujet mais ça a l'air d'être assez complexe, ce type de problème [:pingouino]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748199
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 14:52:44  profilanswer
 

Sinon, je viens de tester avec le distinct à la place du group by et effectivement on a les mêmes perfos [:petrus75] Si j'enlève le group by/distinct, les perfos déchirent tout genre 0.0084, soit un facteur 10 [:petrus75] Au niveau explain, le "using temporary" disparaît (ce qui est logique pour moi).


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748235
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-06-2008 à 15:30:46  profilanswer
 

Taiche a écrit :

J'avoue bien aimer le coup de déplacer le pir.IsObs=0 dans le JOIN, ça me paraît effectivement plus logique.


Dans les perfs ça change strictement rien, je trouve que c'est une question de lisibilité.
Les limitations sur les tables jointées dans le ON, les conditions sur la table "principale" dans le where.
 
Tu peux tester cette version pour voir:

Code :
  1. SELECT r.ID AS ID, MAX(r.DateAdded)
  2. FROM  replays AS r  
  3. INNER JOIN playersinreps AS pir ON r.ID = pir.RepID   AND pir.IsObs =0
  4. WHERE r.IsPrivate =0
  5. GROUP BY r.ID
  6. ORDER BY MAX(r.DateAdded) DESC, r.ID
  7. LIMIT 0,3


Normalement tu devrais améliorer les perfs en reduisant l'échantillon ordonné.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1748242
ratibus
Posté le 18-06-2008 à 15:36:11  profilanswer
 

anapajari a écrit :


Dans les perfs ça change strictement rien, je trouve que c'est une question de lisibilité.
Les limitations sur les tables jointées dans le ON, les conditions sur la table "principale" dans le where.
 
Tu peux tester cette version pour voir:

Code :
  1. SELECT r.ID AS ID, MAX(r.DateAdded)
  2. FROM  replays AS r  
  3. INNER JOIN playersinreps AS pir ON r.ID = pir.RepID   AND pir.IsObs =0
  4. WHERE r.IsPrivate =0
  5. GROUP BY r.ID
  6. ORDER BY MAX(r.DateAdded) DESC, r.ID
  7. LIMIT 0,3


Normalement tu devrais améliorer les perfs en reduisant l'échantillon ordonné.


Sauf que là ça va parce que c'est un INNER JOIN. Dans le cas d'un LEFT ou RIGHT JOIN le fait de passer un critère du WHERE vers le critère de jointure c'est pas du tout garanti que ça donne les mêmes résultats
 
Taiche > tu peux pas foutre le résultats de la requête en cache au pire ? :D


---------------
Mon blog
n°1748263
anapajari
s/travail/glanding on hfr/gs;
Posté le 18-06-2008 à 15:45:51  profilanswer
 

ratibus a écrit :

Sauf que là ça va parce que c'est un INNER JOIN. Dans le cas d'un LEFT ou RIGHT JOIN le fait de passer un critère du WHERE vers le critère de jointure c'est pas du tout garanti que ça donne les mêmes résultats


nan mais c'est surtout que ça va tout le temps!!!
Alors que foutre les conditions dans le where ça te transforme les outer en inner (et donc fausse tes résultats) :o
Exemple:

Code :
  1. SELECT A.id, B.id FROM A LEFT OUTER JOIN B ON A.id = B.idA WHERE B.id > 0


==

Code :
  1. SELECT A.id, B.id FROM A INNER JOIN B ON A.id = B.idA WHERE B.id > 0


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1748271
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 18-06-2008 à 15:48:32  profilanswer
 

anapajari a écrit :


Dans les perfs ça change strictement rien, je trouve que c'est une question de lisibilité.
Les limitations sur les tables jointées dans le ON, les conditions sur la table "principale" dans le where.


Ui, tout à fait.

anapajari a écrit :


Tu peux tester cette version pour voir:

Code :
  1. SELECT r.ID AS ID, MAX(r.DateAdded)
  2. FROM  replays AS r  
  3. INNER JOIN playersinreps AS pir ON r.ID = pir.RepID   AND pir.IsObs =0
  4. WHERE r.IsPrivate =0
  5. GROUP BY r.ID
  6. ORDER BY MAX(r.DateAdded) DESC, r.ID
  7. LIMIT 0,3


Normalement tu devrais améliorer les perfs en reduisant l'échantillon ordonné.


Borf, 0.15 s, l'explain a pas l'air de bouger. Nan mais c'est le group by qui casse tout, le MAX a l'air de foutre un peu aussi sa merde (sans group by mais avec le MAX, je redescends à 0.11 et quand je vire le max aussi c'est 0.008). Je sais pas ce que fait MAX exactement avec les perfos.

ratibus a écrit :

Taiche > tu peux pas foutre le résultats de la requête en cache au pire ? :D


Bin j'aimerais bien, la question c'est : quand ce cache est-il invalidé ? Passke rajouter SQL_CACHE dans mon select, ça me fait pas peur mais faut juste être sûr que les données sont rafraîchies quand il faut, etc...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1748280
ratibus
Posté le 18-06-2008 à 15:55:38  profilanswer
 

anapajari a écrit :


nan mais c'est surtout que ça va tout le temps!!!
Alors que foutre les conditions dans le where ça te transforme les outer en inner (et donc fausse tes résultats) :o
Exemple:

Code :
  1. SELECT A.id, B.id FROM A LEFT OUTER JOIN B ON A.id = B.idA WHERE B.id > 0


==

Code :
  1. SELECT A.id, B.id FROM A INNER JOIN B ON A.id = B.idA WHERE B.id > 0



C'est pas ça que je dis :o

 
Code :
  1. SELECT A.id, B.id FROM A LEFT OUTER JOIN B ON A.id = B.idA WHERE B.id > 0


!=

Code :
  1. SELECT A.id, B.id FROM A LEFT OUTER JOIN B ON A.id = B.idA AND B.id > 0

Message cité 1 fois
Message édité par ratibus le 18-06-2008 à 15:55:52

---------------
Mon blog
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  573  574  575  ..  1454  1455  1456  1457  1458  1459

Aller à :
Ajouter une réponse
 

Sujets relatifs
blabla 3blabla 2
PUTAIN HARKO TU AS FERM2 BLABLA ![Beaucoup de blabla pour rien : post à effacer] Compiler .bat
variable1="blabla + variable2 +blala : c'est possible ??[PHP & regex] "blabla blabla file.ext?point=444 blabla" Recupérer 444
mail("celine@hotmail.com"," sujet","blabla"); pose une err ! Help[MySQL] WHERE 'blabla' compris dans le champ truc
[blabla@olympe] Le topic du modo, dieu de la fibre et du monde[PHP / BlaBla - limite]
Plus de sujets relatifs à : blabla@web


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)