60

Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura à juste titre rien a foutre de ces considérations tout comme d'ailleurs 99.9% de programmeurs Java.

pencil, sauf que -Java

61

Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura à juste titre rien a foutre de ces considérations tout comme d'ailleurs 99.9% de programmeurs Java.


oui merci

En fait, je pense que son prof n'en aura rien à fiche si on gère mal la dépile et si ça fait le café serré ou plutôt long.

En PHP, j'aurais pu lui répondre, ça m'aurait pris pas plus de 20 minutes, mais là... Java, j'y pige toujours rien depuis ce matin.

Vous ne vous prendriez pas la tête un peu ?
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

62

C'est quoi ta technique préférée pour le SQL en PHP ?

63

En PHP y'a du "escape_query_strings", c'est réglé :P
Sinon on peut affiner avec les stripcslahes(), str_replace(), tout dépend.
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

64

Uther (./59) :
Ca me fait rire ces guéguerres d'optimisation très poussées alors qu'il s'agit d'un devoir Java. Le prof n'aura (à juste titre) rien à foutre de ces considérations tout comme d'ailleurs 99.9% des programmeurs Java.

pencil Et c'est pourquoi les softs java sont si lourds. CQFD.
Comble: les codeurs java ont souvent si peu de considération pour les perfs que leurs progs arrivent à leaker malgré le GC (GWT dev mode, Eclipse, glassfish, etc.)
(et pour info ces considérations de performances sont parfois effectuées. Typiquement l'infrastructure de gestion des horaires de l'école est fait en C# pour des raisons de performances, du moins c'est le premier argument avancé pour justifier le choix...)
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

65

[nosmile]
montreuillois (./63) :
En PHP y'a du "escape_query_strings", c'est réglé :P
Sinon on peut affiner avec les stripcslahes(), str_replace(), tout dépend.

Bon, de toute façon, autant aller au plus simple :
http://en.wikipedia.org/wiki/Category:SQL_keywords
Déjà, si tu remplaces tout ça (plus les OR et les AND) par rien ou quelque chose d'inoffensif, je dirais que tu es à peu près tranquille.
Mais je n'ai pas trop l'habitude de protéger du SQL.

66

Le topic est bientôt résolu, on peut le recycler non ? grin

montreuillois (./63) :
En PHP y'a du "escape_query_strings", c'est réglé :PSinon on peut affiner avec les stripcslahes(), str_replace(), tout dépend.

Ah ok, si l'objectif est de protéger une valeur qui va être insérée dans une requête SQL (et non de protéger une requête complète, ce que j'avais compris d'après la description de la méthode), alors tu peux essayer ça (en supposant que c'est du MySQL derrière, mais faute d'informations plus précises...)
/** * Remove SQL for preventing code and data injection in server Side. * @param input a Suspicious String. * * @return a clear String. */ public String removeSQL( String input ) { return input.replace ('([\'"])', '\$1'); // nombre de \ à vérifier ^^ }
Pen^2 (./58) :
Je suis tout à fait certain que tu peux dissocier les deux, je le fais très souvent.

Tu as un exemple ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

67

./64 : tu crois vraiment que le codeur moyen s'occupe des performances de son code ?

68

iwannabeamaki (./66) :
Tu as un exemple ?
De ? D'exception en attribut ?
Ben, pas spécifiquement là tout de suite, mais ça prendrait trente seconde à coder. Tu veux que je teste les perfs ? Je sais pas si j'aurai le courage ce soir grin

69

Brunni (./64) :
crayon.gif Et c'est pourquoi les softs java sont si lourds. CQFD. Comble: les codeurs java ont souvent si peu de considération pour les perfs que leurs progs arrivent à leaker malgré le GC (GWT dev mode, Eclipse, glassfish, etc.)
Attention je n'ai pas non plus dit que faire du java épargnait de réfléchir a l'optimisation, loin de là particulièrement dans les code fortement réutilisé comme les frameworks/outils que tu cites.
Mais, il n'en reste pas moins que dans 99.9% des cas pour les développeurs finaux, les optimisation de bout de chiffon dont vous parlez n'ont aucun intérêt. Les optimisations vraiment utiles se trouvent ailleurs.
Brunni (./64) :
et pour info ces considérations de performances sont parfois effectuées. Typiquement l'infrastructure de gestion des horaires de l'école est fait en C# pour des raisons de performances, du moins c'est le premier argument avancé pour justifier le choix...
Pour moi, c'est idiot comme argument. Si tu veux des performances au point que le comportement de Java ne convient plus, autant faire du C : c'est fait pour.

Au niveau performance le C# même s'il s’avérera peut-être meilleur dans certains cas, restera au final toujours relativement proche du Java, vu qu'il a à peu près les mêmes contraintes (VM, GC, fortement OO, ...).
avatar

70

Bonjour à tous,

Je viens de m'inscrire sur ce forum car la personne qui a des problèmes en JAVA c'est moi. Pour vous expliquer mon problème, je me retrouve avec un projet à rendre dans l'urgence et le JAVA n'est pas un code que je maitrise.

Pour le moment j'ai réussi à faire certaines fonctions mais il y en a certaines qui me posent encore beaucoup de problèmes. Concernant remove SQL il s'agit de recupérer une chaine de caractère en supprimant tout ce qui peut faire une injection SQL dedans.
Sinon un autre problème c'est au niveau de l'email j'ai essayé de récupérer une regex de la norme RFC 2822 mais ca ne passe pas.
package org.esgi.javaweb; import java.text.SimpleDateFormat; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtility // implements IStringUtility { public static void main(String[] args) { String var1 = "yves@gmail.com"; System.out.println(isEmail(var1)); } public static boolean isEmpty(String input) { if (input == null || input.trim().equals("")) return true; else { return false; } } public static boolean isInteger(String input) { if (!isEmpty(input)) { try { Integer.parseInt(input.trim()); return true; } catch (NumberFormatException e) { return false; } } else return false; } public static boolean isNumeric(String input) { if (!isEmpty(input)) { try { Double.parseDouble(input.trim().replace(",", ".")); return true; } catch (NumberFormatException e) { return false; } } else return false; } public static boolean isEmail(String input) { if (!isEmpty(input)) { // The Official Standard: RFC 2822 return Pattern.matches("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b", input); } else return false; } public static boolean isBoolean(String input) { if (!isEmpty(input)) { return "true".equalsIgnoreCase(input) || "false".equalsIgnoreCase(input) || input.equals("1") || input.equals("1"); } else return false; } public static boolean isDate(String pattern, String input) { SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); if (!isEmpty(input)) { if (input.trim().length() != dateFormat.toPattern().length()) { return false; } dateFormat.setLenient(false); try { dateFormat.parse(input.trim()); } catch (Exception e) { return false; } return true; } else return false; } public static String removeSQL(String input) { } public static String removeJavascript(String input) { } public static String removeXmlTags(String input) { return input.replaceAll("<[^>]+>", ""); } public static String removeXmlTags(String tag, String input) { } public static String normalize(String input) { } }

71

./67> Ben oui. Je ne parle pas de faire du JNI et dérouler les boucles, mais de s'assurer que ce que tu fais soit efficace, surtout si c'est prévu pour être réutilisé. On a une architecture sur laquelle vont attaquer potentiellement des millions de clients, donc si ce n'est pas efficace tu vas le sentir.
Pour le coup de l'exception dans l'absolu on s'en fout pas mal, et ça va très bien pour un truc vite codé. Sauf que c'est pas malin d'éduquer les gens à faire comme ça.
Pour moi savoir dealer correctement avec ces patterns de base c'est une question d'habitude, et ça donne une idée de la qualité du codeur.
Un pote m'avait fait la même réflexion quand il y a 2 ans j'avais écrit un truc du genre pour attribuer un ordre aléatoire à une liste de N tableaux de jeu:
boolean[] used = new boolean[N];
int[] order = new int[N];
for (int i = 0; i < N; i++) {
    int r;
    do r = (int)(Math.random() * N);
    while (used[r]);
    used[r] = true;
    order[i] = r;
}

Et en effet, même si en pratique ça ne causera pas de problème, ne pas être capable de garantir un temps d'exécution borné sur une tâche aussi basique, c'est carrément lame. Imagine seulement comment je m'en sortirais sur des trucs plus complexes...
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

72

Pour le removeAllXMLTags, idée de méthode de bourrin (je suis pas certaine à 100% de la syntaxe et je l'ai pas relu 50 fois, donc à tester).

Par contre, j'ai pas le temps de faire de la pédagogie, désolée :/ Je rentre chez moi ce soir vers 23h si ton ami a des questions, mais je sais même pas si j'aurai le net.

J'ai quand même essayé d'éviter de débutantiser mon code pour le rendre plus compréhensible (par exemple s+="abc" devient s=s+"abc")

Pour removeUnXMLTagEnParticulier, il suffit de rajouter un test avec la méthode string1.compare(string2) dans un if(string1.size()==string2.size()) et d'adapter ce code.


boolean thereIsAPotentialNewTag = false; String potentialNewTag=""; String outputString=""; int stringSize=inputString.size() //(ou length(), je sais plus lequel existe) for (int index=0;index<stringSize,index++) { String char = inputString.charAt(index); if (char.equals(">")) { if (thereIsAPotentialNewTag) { outputString=outputString+potentialNewTag; potentialNewTag=""; thereIsAPotentialNewTag=false; } } else if (char.equals("<")) { thereIsAPotentialNewTag=true; if (thereIsAPotentialNewTag) { outputString=outputString+potentialNewTag; } } else if (char.equals(" ")) { outputString=outputString+potentialNewTag; thereIsAPotentialNewTag=false; } //Choisit où mettre le charactère actuel if (thereIsAPotentialNewTag) potentialNewTag=potentialNewTag+char; else outputString=outputString+char; //Fin de la chaine de charactère : if(index==stringSize-1) { if(thereIsAPotentialNewTag) { outputString=outputString+potentialNewTag; //ajoute le dernier cacactère stocké dans potentialNewTag si la chaîne se finit sans que le tag potentiel ait été fermé. } } return outputString; }
avatar
I wanna... bioman, bioman, défenseur de la teeeerrrreee

73

./70> Tu penses vraiment que ton prof veut quelque chose d'aussi compliqué pour l'e-mail?
Ce serait pas mal de comprendre cette chaîne, déjà, comme ça tu pourras voir pourquoi ça ne marche pas. Pour cela je te conseille de te renseigner sur la syntaxe des regexp.
1) [a-z0-9!#$%&'*+/=?^_`{|}~-]+
Alors là entre crochets tu as une liste de caractères permis, avec un tiret '-' pour dire 'entre'. Par exemple a-z = de a à z minuscule. Donc on a a-z, 0-9, et plein de caractères permis ensuite. Le + à la fin signifie qu'il faut 1 ou plus de ces caractères. Des exemples sont donc 'a', 'hello', et des contre-exemples sont ';', car ce caractère n'est pas inclus, donc les caractères cités y apparaissent zéro fois.
2) ensuite (?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
Le (?: c'est pour ne pas avoir de groupe capturant et là on s'en fout, prends-le comme une (. Une expression entre parenthèse est valide si elle correspond totalement au contenu. Par exemple (a[b-z]) signifie qu'il faut avoir un a suivi d'une lettre entre b et z. On peut y appliquer un opérateur, par exemple (a[b-z])+ signifie que ça doit apparaître au moins une fois. Donc 'az' est valable, 'azag' est valable aussi, mais pas '' ou 'xg' car l'expression entre parenthèse apparaît zéro fois.
\. signifie un point, ensuite tu as de nouveau la liste de caractères valides, qui doit se trouver entre 1 et n fois (+). Ainsi, '.a' est valide, mais pas '.' car il y a zéro caractère après le point.
A la fermeture (tout à droite) on a une étoile *, ce qui signifie qu'on doit trouver zéro ou plusieurs occurrences. Ainsi, si on a 'foo' il n'y a pas de point, donc l'expression 2) n'existe pas, et l'expression en 1) correspond. Si on a 'foo.bar' alors 'foo' fait partie de 1) et '.bar' de 2). Dans les deux cas ça correspond.
3) @(?:[a-z0-9]
Il faut ensuite un '@', puis un nom qui commence par une lettre minuscule ou un chiffre, puis:
4) (?:[a-z0-9-]*[a-z0-9])?\.)+
0 à n caractères entre a et z minuscule, ou 0 à 9, ou un tiret, puis se terminer par un caractère. En gros on veut juste éviter que ça ne se termine par un tiret. Après ça il faut y avoir un point, et le tout --- 3) et 4) ensemble, du fait de la parenthèse, peut se répéter à volonté. Donc 'a-.' est invalide, 'a.' est valide, 'a' est invalide, 'a.b-c.d.' est valide.
5) (?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)
Ensuite il faut soit 2 caractères majuscules, soit un nom com/org/etc.
Et voilà, comme ça tu peux faire des tests wink
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

74

mephiston (./70) :
Sinon un autre problème c'est au niveau de l'email j'ai essayé de récupérer une regex de la norme RFC 2822 mais ca ne passe pas.
Je suppose que tu as simplement récupéré l'expression régulière telle qu'elle et que tu l'as mise entre guillemets.

En Java (comme dans la plupart des langage avec une syntaxe de type C le "\" donne une signification particulière au caractère qui le suit. Si tu veux qu'il soit considéré comme un caractère "\" classique il faut le remplacer par "\" (et donc remplacer les "\" par "\\")
avatar

75

Pour continuer mon post précédent, plus d'infos ici:
http://www.regular-expressions.info/

Tu peux aussi essayer de construire une expression plus simple, mais pas totalement juste (au fond on s'en fout un peu; mais mieux vaut laisser passer des e-mails non valides que l'inverse wink). Voici le raisonnement:
1) Une adresse est décomposable en 2 groupes: ce qu'il y a avant le @, ce qu'il y a après.
2) Le nom d'utilisateur se compose de lettres minuscules et de symboles (mettons juste _ et . pour l'instant)
3) Le nom de domaine se compose d'un ou plusieurs noms, séparés par un point, suivi d'un nom de domaine. Exemple: hotmail.com, mail.hotmail.com (2 noms dans ce dernier).
Construisons donc le nom d'utilisateur: on veut des caractères minuscules, donc on écrit [a-z]. On veut permettre les chiffres (0 à 9) alors on rajoute: [a-z0-9]. On veut aussi le point et l'underscore, ça donne donc [a-z0-9._]. Il faut au moins un de ces caractères avant le @, donc on va utiliser l'opérateur +, mis à droite de l'expression pour signifier ça:
[a-z0-9._]+
Ensuite il faut un @, donc on rajoute:
[a-z0-9._]+@
Ensuite pour la partie de droite on veut la même chose, mais on aimerait quand même obliger à avoir au moins un point. Donc là c'est plus dur: on va juste permettre les caractères et l'underscore pour le domaine, et il en faut au moins un:
[a-z0-9_]+
Après ce "mot" il faut un point, avant le nom de domaine:
[a-z0-9_]+\.
(il faut précéder le point d'un \, cf la syntaxe)
Et ensuite il faut de nouveau un mot après le point, le .com/.fr/etc.
[a-z0-9_]+\.[a-z0-9_]+
Maintenant, ce petit groupe donne comme possibilité par exemple 'hotmail.com', 'mail.com' mais pas 'mail.hotmail.com' car on a un mot + un point + un mot. Alors on va permettre de répéter le 'mot.' à volonté, en en faisant un groupe:
([a-z0-9_]+\.)+[a-z0-9_]+
J'ai mis le mot suivi du point entre parenthèses pour en faire une sous-expression, et j'ai ajouté un + après pour dire qu'on veut ça 1 fois au moins. Ainsi il prendra 'hotmail.', mais aussi 'mail.hotmail.': c'est tout simplement 2 fois la même expression à la suite smile Ensuite il reste juste un mot: le com/fr/etc.
Et voilà on met tout ensemble et on a une expression qui fait pas tout mais qui est convenable, et au moins tu comprends pourquoi grin
[a-z0-9._]+@([a-z0-9_]+\.)+[a-z0-9_]+
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

76

(à noter qu'en réalité, la validation d'une adresse mail est très complexe si on veut prendre en compte toutes les possibilités offertes par le standard [que quasiment personne n'utilise, mais bon])
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

77

Merci pour tous vos conseil, le temps est écoulé je dois envoyer mon projet. J'ai quand même bien avancé.

Merci encore et une trés bonne soirée.

78

Ah, zut, j'avais compris que tu avais un peu plus de temps ("pour cette *nuit*") cheeky
Bon, ben, bonne chance !

79

Ravi que ça t'ait été utile. Dommage que tu aies su implémenter le removeXmlTags sans nom mais pas celui avec, ce n'était pas plus compliqué sad

Note que personne n'a rebondi sur mon ./71, mais je vais quand même donner une solution possible pour faire ça en temps borné au cas où quelqu'un tomberait dessus par hasard et serait rongé par le problème grin
boolean[] used = new boolean[N];
int[] order = new int[N];
for (int i = N; i > 0; i--) {
  // Choisit r parmi les i entrées restantes
  int j, k, r = (int)(Math.random() * i);
  // Trouve la r-ième entrée non utilisée
  for (j = k = 0; j <= r; k++)
    if (!used[k])
      j++;
  used[k] = true;
  order[N-i] = k;
}
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

80

Ah oui, dsl, j'ai lu ça et j'avais plus le temps de répondre (j'avoue que ça ne me rongeait pas outre mesure trinon (mais c'était très moche, oué embarrassed))

81

./79 : soit j'ai pas compris le pb, soit c'est mauvais aussi comme algo, tu peux faire un O(n) :int[] order = new int[N]; int[] pool = new int[N]; for (int i = N; i-- > 0; ) { pool[i] = i; } for (int i = N; i > 0; --i) { int r = (int)(Math.random() * i); order[i - 1] = pool[r]; pool[r] = pool[i - 1]; }
[edit] mais je dois pas avoir compris pke ça me semble un peu bidon trifus
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

82

Hmm j'ai pas vraiment réfléchi à vrai dire.
Bon le tien là il ne marchera pas, par contre l'idée est intéressante...
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

83

J'ai édité entre temps, y'avait un pb d'indice, mais bon l'idée n'est pas bien complexe à comprendre même avec ce genre d'erreur
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

84

En effet, tu évites le décalage en ramenant le dernier indice en place, là maintenant ça marche normalement hehe
iwannabeamaki (./81) :
[edit] mais je dois pas avoir compris pke ça me semble un peu bidon trifus

C'était pas non plus un concours de programmation hein, juste que la première solution était moche, pour faire un truc très simple ^^ mais apparemment pas si simple parce que même en y repensant j'ai trouvé une solution moins bonne que la tienne ^^
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

85

Ok, de la façon dont tu as présenté le problème je pensais qu'il y avait un piège et que ça n'était pas aussi évident que ça en avait l'air ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

86

Pen^2 (./65) :
http://en.wikipedia.org/wiki/Category:SQL_keywords
C'est un peu limitant ; par exemple, tu peux faire une requête SQL Oracle sans utiliser un seul des mots clés de la norme SQL cheeky.
Pen^2 (./65) :
Mais je n'ai pas trop l'habitude de protéger du SQL.
Pareil (en fait, en gros, depuis le début du topic, à quelques détails prêt, j'aurais pu écrire "pareil" à tout ce que tu as écrit cheeky. Toi aussi, tu n'es qu'un petit développeur d'informatique de gestion ? tsss
Zerosquare (./76) :
(à noter qu'en réalité, la validation d'une adresse mail est très complexe si on veut prendre en compte toutes les possibilités offertes par le standard [que quasiment personne n'utilise, mais bon])
Oui, j'ai un script PHP que j'avais pioché je ne sais où qui fait ça (plus une requête MX pour vérifier que le domaine a bien un enregistrement valide) :
[Ah ben comme je suis un mec à la cool, j'ai indiqué dans les commentaires la provenance du script \o/]
Check e-mail PHP
/** Validate an email address. Provide email address (raw input) Returns true if the email address has the email address format and the domain exists. http://www.linuxjournal.com/article/9585 */ function validEmail($email) { $isValid = true; $atIndex = strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } else { $domain = substr($email, $atIndex+1); $local = substr($email, 0, $atIndex); $localLen = strlen($local); $domainLen = strlen($domain); if ($localLen < 1 || $localLen > 64) { // local part length exceeded $isValid = false; } else if ($domainLen < 1 || $domainLen > 255) { // domain part length exceeded $isValid = false; } else if ($local[0] == '.' || $local[$localLen-1] == '.') { // local part starts or ends with '.' $isValid = false; } else if (preg_match('/\.\./', $local)) { // local part has two consecutive dots $isValid = false; } else if (!preg_match('/^[A-Za-z0-9\-\.]+$/', $domain)) { // character not valid in domain part $isValid = false; } else if (preg_match('/\.\./', $domain)) { // domain part has two consecutive dots $isValid = false; } else if (!preg_match('/^(\\.|[A-Za-z0-9!#%&`_=\/$\'*+?^{}|~.-])+$/', str_replace("\\","",$local))) { // character not valid in local part unless // local part is quoted if (!preg_match('/^"(\\"|[^"])+"$/', str_replace("\\","",$local))) { $isValid = false; } } if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) { // domain not found in DNS $isValid = false; } } return $isValid; }
avatar

87

iwannabeamaki (./66) :
Le topic est bientôt résolu, on peut le recycler non ? biggrin.gif


Recyclage granted ! Let's begin fight.

Merci à tous pour votre aide !
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

88

Je déteste les sites Web fait en JSP (délit de sale gueule) ! PAN !
avatar
Slammeur (qu'on voit danser, le long des golfes clairs).
Mon blog qui parle de jeux-vidéo

89

iwannabeamaki (./85) :
Ok, de la façon dont tu as présenté le problème je pensais qu'il y avait un piège et que ça n'était pas aussi évident que ça en avait l'air ^^

C'est intéressant quand même je trouve, avec ce problème simple, de remarquer que perso je suis parti sur la même base que précédemment (j'ai gardé les 2 déclarations en tête). Résultat j'ai amélioré le truc mais c'est resté similaire et non optimal.
Toi tu es parti avec une idée totalement nouvelle et tu as trouvé directement la bonne solution.
En dehors du fait que j'ai été mauvais, j'y vois là une preuve que l'optimisation "prémature" n'est pas forcément une si mauvaise idée, parce qu'en optimisant par après on est influencé voire contraint par la structure du reste du code ^^
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

90

Nil (./86) :
Pen^2 (./65) :
http://en.wikipedia.org/wiki/Category:SQL_keywords
C'est un peu limitant ; par exemple, tu peux faire une requête SQL Oracle sans utiliser un seul des mots clés de la norme SQL cheeky.

Je me doutais que c'était pas une super idée ; de toute façon le principe même de filtrer les mots est dangereux, on peut toujours en oublier.
En JAVA, il faut utiliser les PreparedStatement à priori (les injections sont filtrées directement par le driver JDBC)
Pen^2 (./65) :
Mais je n'ai pas trop l'habitude de protéger du SQL.
Pareil (en fait, en gros, depuis le début du topic, à quelques détails prêt, j'aurais pu écrire "pareil" à tout ce que tu as écrit cheeky. Toi aussi, tu n'es qu'un petit développeur d'informatique de gestion ? tsss

grin
(en fait je fais de l'*informatique scientifique* tripo)