Pensez à marquer vos tickets comme résolus.
Pensez aussi aux pour les réponses pertinantes
Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
- Elle sera en haut du forum, elle sera donc plus visible
- Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
- Tu demandes surement à tes clients de faire le même
Pour ne pas passer pour un boulet :
http://coursz.com/difference-entre-r...-et-gddr4.html
Apparemment ya des gens qui se lancent dans un testing avancé du bouzin ...
Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.
"Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
Kenneth E. Boulding
"Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
Jean-Baptiste Say, Traité d'économie politique, 1803.
"/home/earth is 102% full ... please delete anyone you can."
Inconnu
sur les bases du behavior driven development c'est pas inintéressant Marco
Ils me font rigoler ceux qui jugent le code en fonction du style de programmation. Comme si le procédural était un critère de mauvaise qualité.
Donc le style Java, langage que je ne pratique pas mais qui parait très clair à lire dans ce contexte.
Pas un par contre à jeter un œil au SQL ? Parce que c'est pareil, Oracle je ne connais pas. Je fais du SQL server depuis des années. Mais bon dieu je me souviens de ma première question sur un newsgroup SQL Server et un Fred Brouard alais SQLpro me répondant texto : "Déjà réécris là en utilisant des jointure JOIN ! cela date de SQL 2 (1992)"
Et bon dieu après cette petite remarque et le sentiment de honte éprouvé je n'ai toujours écrit que des jointures.
Donc quand je lis des trucs comme :
J'ai comme un haut-le-cœur de voir tous ces AND à la queue-leu-leu, dont la plupart joignent des tables. Ca marche pas de souci cela étant... bien c'est une autre question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 String requete = "SELECT " + "v.g_cn_cod,"//id candidat + "v.g_ta_cod,"//id affectation + "ti.g_ti_cod,"//id inscription + "cg.c_gp_cod,"//groupe de classement pédagogique + "cg.c_cg_ord_app,"//ordre d'appel + "cgi.c_gi_cod,"//id internat + "cgi.c_ci_ran,"//rang de classement internat + "ti.g_ti_cla_int_uni,"//type d'internat (cf notes ci-dessous) + "sv.a_sv_flg_aff," + "sv.a_sv_flg_att" + " FROM " + "g_can c,"//candidats + "a_voe v,"//voeux + "a_sit_voe sv,"//codes situations des voeux + "a_rec_grp rg,"//groupes de classement pédagogique + "c_can_grp cg,"//classements pédagogiques + "a_rec_grp_int rgi,"//groupes de classement internats + "c_can_grp_int cgi,"//classements internats + "g_tri_ins ti"//données formations inscriptions + " WHERE " + " v.i_rh_cod=1"//voeux avec internat + " AND cg.i_ip_cod=5" //candidat classé + " AND c.g_ic_cod >= 0" //dossier non-annulé (décès...) + " AND ti.g_ti_eta_cla=2" //classement terminé + " AND (sv.a_sv_flg_aff=1 OR sv.a_sv_flg_att=1)"//en attente ou affecte + " AND c.g_cn_cod=v.g_cn_cod" + " AND cg.c_cg_ord_app is not null" + " AND v.a_sv_cod=sv.a_sv_cod" + " AND v.g_cn_cod=cg.g_cn_cod" + " AND cg.c_gp_cod=rg.c_gp_cod" + " AND rg.g_ta_cod=v.g_ta_cod" + " AND rg.g_ti_cod=ti.g_ti_cod" + " AND v.g_cn_cod=cgi.g_cn_cod" + " AND cgi.c_gi_cod=rgi.c_gi_cod" + " AND " + "( " + " (rgi.g_ta_cod is null AND rgi.g_ea_cod_ins=ti.g_ea_cod_ins AND rg.g_ti_cod=ti.g_ti_cod) " //internat par établissement -> un seul groupe de classement + " OR " + " (rgi.g_ta_cod is not null AND rgi.g_ta_cod=v.g_ta_cod AND rgi.g_ti_cod=ti.g_ti_cod)" //internat par formation + ")" + "AND ti.g_ti_cla_int_uni IN (0,1)" //restriction aux internats à classement propre ;
Moi là où j'ai du mal c'est que le gars pourrait me donner des cours, il a tous les titres et les diplômes pour, et c'est même une partie de ses fonctions.
Aïe aïe aïe durant ma formation (professionnelle il est vrai) on m'apprenait déjà les jointures, en 1998 (l'ancien millénaire).
Par contre sur le dépot Git ils jouent le jeu, le développeur tient compte des remarques et intègre des modifs.
Émotion
Infantilisation
Culpabilisation
Christophe Alévèque - 18 Mars 2021
Serait ce bénéfique de la refactorisée ? j'ai l'impression que c'est fait exprès pour aider les gens à lire et pour rendre la requête plus maintenable.
Pour ne pas passer pour un boulet :
http://coursz.com/difference-entre-r...-et-gddr4.html
je ne suis en aucun cas un pro du SQL
un premier jet qui doit fonctionner juste comme ça, ce serait à mon sens :
un truc un peu plus ordonné, avec les jointures en rapport avec les tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 SELECT v.g_cn_cod,--id candidat v.g_ta_cod,--id affectation ti.g_ti_cod,--id inscription cg.c_gp_cod,--groupe de classement pédagogique cg.c_cg_ord_app,--ordre d'appel cgi.c_gi_cod,--id internat cgi.c_ci_ran,--rang de classement internat ti.g_ti_cla_int_uni,--type d'internat (cf notes ci-dessous) sv.a_sv_flg_aff, sv.a_sv_flg_att FROM g_can c inner join--candidats a_voe v inner join--voeux a_sit_voe sv inner join--codes situations des voeux a_rec_grp rg inner join--groupes de classement pédagogique c_can_grp cg inner join--classements pédagogiques a_rec_grp_int rgi inner join--groupes de classement internats c_can_grp_int cgi inner join--classements internats g_tri_ins ti--données formations inscriptions on c.g_cn_cod=v.g_cn_cod on v.a_sv_cod=sv.a_sv_cod on v.g_cn_cod=cg.g_cn_cod on cg.c_gp_cod=rg.c_gp_cod on rg.g_ta_cod=v.g_ta_cod on rg.g_ti_cod=ti.g_ti_cod on v.g_cn_cod=cgi.g_cn_cod on cgi.c_gi_cod=rgi.c_gi_cod WHERE v.i_rh_cod=1--voeux avec internat AND cg.i_ip_cod=5 --candidat classé AND c.g_ic_cod >= 0 --dossier non-annulé (décès...) AND ti.g_ti_eta_cla=2 --classement terminé AND (sv.a_sv_flg_aff=1 OR sv.a_sv_flg_att=1)--en attente ou affecte AND cg.c_cg_ord_app is not null AND ( (rgi.g_ta_cod is null AND rgi.g_ea_cod_ins=ti.g_ea_cod_ins AND rg.g_ti_cod=ti.g_ti_cod) --internat par établissement -> un seul groupe de classement OR (rgi.g_ta_cod is not null AND rgi.g_ta_cod=v.g_ta_cod AND rgi.g_ti_cod=ti.g_ti_cod) --internat par formation ) AND ti.g_ti_cla_int_uni IN (0,1) --restriction aux internats à classement propre ;
c'est du code SQL, je ne me suis pas embêté avec la concaténation de string
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 SELECT v.g_cn_cod,--id candidat v.g_ta_cod,--id affectation ti.g_ti_cod,--id inscription cg.c_gp_cod,--groupe de classement pédagogique cg.c_cg_ord_app,--ordre d'appel cgi.c_gi_cod,--id internat cgi.c_ci_ran,--rang de classement internat ti.g_ti_cla_int_uni,--type d'internat (cf notes ci-dessous) sv.a_sv_flg_aff, sv.a_sv_flg_att FROM g_can c --candidats inner join a_voe v --voeux on c.g_cn_cod=v.g_cn_cod inner join a_sit_voe sv--codes situations des voeux on v.a_sv_cod=sv.a_sv_cod inner join a_rec_grp rg --groupes de classement pédagogique on rg.g_ta_cod=v.g_ta_cod inner join c_can_grp cg --classements pédagogiques on v.g_cn_cod=cg.g_cn_cod on cg.c_gp_cod=rg.c_gp_cod inner join a_rec_grp_int rgi --groupes de classement internats on cgi.c_gi_cod=rgi.c_gi_cod inner join c_can_grp_int cgi --classements internats on v.g_cn_cod=cgi.g_cn_cod inner join g_tri_ins ti--données formations inscriptions on rg.g_ti_cod=ti.g_ti_cod WHERE v.i_rh_cod=1--voeux avec internat AND cg.i_ip_cod=5 --candidat classé AND c.g_ic_cod >= 0 --dossier non-annulé (décès...) AND ti.g_ti_eta_cla=2 --classement terminé AND (sv.a_sv_flg_aff=1 OR sv.a_sv_flg_att=1)--en attente ou affecte AND cg.c_cg_ord_app is not null AND ( (rgi.g_ta_cod is null AND rgi.g_ea_cod_ins=ti.g_ea_cod_ins AND rg.g_ti_cod=ti.g_ti_cod) --internat par établissement -> un seul groupe de classement OR (rgi.g_ta_cod is not null AND rgi.g_ta_cod=v.g_ta_cod AND rgi.g_ti_cod=ti.g_ti_cod) --internat par formation ) AND ti.g_ti_cla_int_uni IN (0,1) --restriction aux internats à classement propre ;
la 2e étape c'est traiter la dernière condition, je vais vérifier si le test de nullité peut s'écrire avec la jointure d'une façon ou d'une autre
Émotion
Infantilisation
Culpabilisation
Christophe Alévèque - 18 Mars 2021
Bon en tout cas il est possible de faire de la jointure conditionnelle :
https://blog.developpez.com/sqlpro/p...conditionnelle
Le fameux SQLpro évoqué plus haut. J'ai appris plus de ce monsieur que de quiconque autre sur ce forum ou partout ailleurs sur le web. Des cours et articles simples, une vraie compréhension de ce que l'on fait à le lire. Des bases pour les données
Donc il doit y avoir moyen de réécrire aussi cette partie sans trop de souci :
sous forme de jointure conditionnelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 AND ( (rgi.g_ta_cod is null AND rgi.g_ea_cod_ins=ti.g_ea_cod_ins AND rg.g_ti_cod=ti.g_ti_cod) --internat par établissement -> un seul groupe de classement OR (rgi.g_ta_cod is not null AND rgi.g_ta_cod=v.g_ta_cod AND rgi.g_ti_cod=ti.g_ti_cod) --internat par formation )
Vous noterez qu'on a pas de schéma rien, pas de scripts de création de bases, en gros 2-3 connecteurs et quelques noms de tables sous formes d'acronymes ou diminutifs (g_can, a_voe,a_sit_voe,...)
On a pas plus d'infos sur le site web et son architecture, l'implémentation réelle de l'algo, l'interfaçage ... ???
Donc on publie l'algo sans aucune notion du shéma de données sur lequel il tourne ?
On se fout pas un peu de la gueule du monde là ?
C'est possible de juger d'un algorithme sans idée des données sur lesquelles il bosse ? sinon quelques fichiers entrée et sortie en xml
Émotion
Infantilisation
Culpabilisation
Christophe Alévèque - 18 Mars 2021
Et si l'actualisation se faisait en continu, il est probable que certains internautes auraient écrit : ' Je pense que si l'actualisation se faisait une fois par jour, ce serait moins stressant pour les lycéens'.
N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.
Un peu plus de précisions sur les conditions de développement de l'algo : http://ingenuingenieur.blog.lemonde....?xtor=RSS-3208
Bon ça reste très communi-coincé et "7 étapes du deuil" : blabla c'est injuste parce que la vie est injuste ... blabla mieux qu'APB ... blabla pédagogie ... blabla nous écoutons les craintes ...
à voir si ça sera suivi d'effet.
Nom de fonctions, commentaires et variables en français = yeurk
Le code devrait toujours être écrit en anglais, d'abord pour être universellement compréhensible par tous les programmeurs de la planète, ensuite parce que l'absence d'accents spécifiques aux autres langues rend celui-ci difficilement lisible même pour une personne parlant la langue.
C'est faux : tous les développeurs du monde ne comprennent pas forcément bien l'anglais, y compris en France. Et je ne vois pas du tout de souci d'utiliser le français pour un programme franco-français destiné à résoudre une problématique franco-française.
Et il y a largement pire que de coder en français : c'est le mélange français/anglais dans les noms de variable et de fonctions, ou encore pire, des mots mal traduits en anglais ou avec des fautes pour cause d'une maîtrise insuffisante de la langue de Shakespeare parce que certains ont mis cette règle absurde de tout faire en anglais même quand cela ne s'imposait pas.
Si ton point pourrait être valide pour les noms de variables et de fonction, cela ne s'applique pas aux commentaires. Ensuite, si l'absence d'accent pose réellement un souci de compréhension, il suffit de choisir un autre mot. Enfin, tu peux mettre des accents dans les variables et les noms de fonction en Java (bien que même moi je ne recommanderai pas cette pratique).
Pour un programme non forcément spécifique à la France et dont les sources sont partagées en revanche (ou un projet d'une entreprise un tant soi peu internationale), je suis totalement d'accord sur le fait de tout mettre en anglais.
Enfin ce n'est pas la seule horreur que je lis dans cette discussion, comme le fait que soi-disant le fait que cela soit écrit en procédural serait le Mal absolu, alors qu'au final le style de programmation doit être adapté au projet, ainsi qu'aux compétences de ses développeurs.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager