SAINT DU JOUR

jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 28 janv. 2011 à 01:09
Pergos Messages postés 5 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 février 2011 - 8 févr. 2011 à 14:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52758-saint-du-jour

Pergos Messages postés 5 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 14:56
Effectivement, déjà, on voit le début et la fin du "for", ce qui n'est pas un luxe...

Et c'est vrai qu'avec la coloration syntaxique on s'y retrouve mieux, mais bon, sans éditeur de code...
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
8 févr. 2011 à 14:47
@Pergos
Merci pour tes (bonnes) critiques, mais j'aurai pu aussi y ajouter les commentaires comme, par exemple, les indices du tableau, ou encore alléger le code en supprimant le formatage des dates (qui ne sert à rien dans ce code)

En ce qui concerne le code de 007Julien, tu peux voir son évolution ici (avec un niveau d'initié ?):
http://www.javascriptfr.com/code.aspx?ID=52778
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
8 févr. 2011 à 11:48
@PERGOS
Merci pour ces appréciations et observations qui appellent de ma part les observations suivantes.

D'abord, l'indentation serait plus apparente si nous disposions de la possibilité d'utiliser un éditeur de code dans les commentaires. Ainsi le code du calendrier annuel universel élaboré à partir de cette première ébauche, devrait, me semble-t-il, mieux répondre aux attentes exprimées.

Ensuite, la première qualité d'un code étant l'efficacité, des compromis sont à opérer entre la concision et la lisibilité. Sauf à incruster le code dans des objets en quelque sorte pré-compilés (voir le compte est bon), les signes inutiles ou les noms à rallonges (avec la casse de Chameau ou CamelCase en VO) ralentissent l'exécution en javascript.

Que faut-il entendre enfin par aérer et «identer» correctement ? Des ayatollads du W3C ou d'ailleurs auraient-ils défini une fois pour toutes les règles à appliquer ? Sur ces points, j'aurais tendance à considérer, que les «professionnels» (serait-ce parce qu'ils sont parfois payés à la ligne ?) ont tendance à abuser avec des lignes totalement insipides.

Écrire un script ou l'apprécier sont finalement des exercices de liberté. Merci de nous permettre de l'exercer en clamant haut et fort, avec les alpinistes, architectes et maîtres-toile, qu'un beau script, c'est comme un beau site, cela se mérite !
Pergos Messages postés 5 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 09:03
Si je peux me permettre un commentaire à tous les deux :
@TEFA24600 :
ton code a le mérite effectivement d'être plus simple, bien indenté et donc facile d'accès aux novices. De ce point de vue là, c'est effectivement un réussite, même si le code aurait franchement pu être compacté (tout à fait d'accord avec la remarque de JDMCREATOR

@007JULIEN :
là, on touche un voire quelques crans au dessus, question niveau de programmation, MAIS (car il y a un mais), il serait bien d'aérer ton code et de l'indenter correctement. C'est bête et méchant, mais ceux qui passent par ces pages sont en grande partie des gens en recherche de "code-exemples" pour apprendre des "trucs qu'on ne trouve pas dans les bouquins"... Du coup, un code difficile à lire devient plus facilement rebutant, et on risque de se contenter du code de TEFA24600, sans profiter (en "supplément gratuit") de ce que peut apporter ton code à toi, ce qui à mon avis est dommage...
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
4 févr. 2011 à 11:55
Finalement, je me suis résolu à publier le calendrier susceptible d'être obtenu à partir de cette liste. Encore merci pour le travail accompli.
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
1 févr. 2011 à 17:45
Quant à la «troisième dimension», permettant de disposer de plusieurs Saints pour la même date, il n'est pas interdit de faire des «doubles splits» en utilisant, par exemple, la virgule comme second séparateur.
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
1 févr. 2011 à 17:39
En tous cas tu as fait le travail de Bénédictin relatif aux Saints !
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
1 févr. 2011 à 17:06
je me couche, c'est vrai que ton code est bien plus efficace !

Je voulais surtout faire un code accessible pour les novices, qu'ils aient un visuel du code assez clair afin qu'ils puissent traiter l'information simplement.

Je pense avoir rempli ce rôle avec cette source, c'est pourquoi je ne la modifierai pas pour le moment, mais j'avoue avoir été séduit par la légèreté de ta proposition !
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
1 févr. 2011 à 12:37
Ayant été un peu vite, la condition de saut du 29 février est erronée. Le décalage d'une unité (bs) doit être opéré non pas le 29 février (qui n'existe pas lorsqu'il serait utile) mais lorsque l'on change de mois dès le 60ème jour de l'année.
D'où la ligne
if (i==60 && cd.getMonth()==2) bs++;
Pour le reste, il conviendrait d'abord de fermer la dernière colonne du tableau
chn+='</td></table>';
et puis d'afficher l'année;, les quantièmes des mois et les fêtes mobiles...
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
1 févr. 2011 à 12:00
Je ne vois pas ce que l'on ne peut pas faire. Le simple script suivant en forme de calendrier affiche, me semble-t-il, plusieurs saints...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang= "fr">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Calendrier</title>
<style type="text/css">
body {font:9px verdanna;}
</style>
</head>

<script type="text/javascript">
var mos='janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre'.split(/\|/g);
var tSt="Jour de l'an|St Basile|Ste Geneviève|St Odilon|St Edouard|Ste Mélaine|St Raymond|St Lucien|Ste Alix|St Guillaume|St Paulin|Ste Tatiana|Ste Yvette|Ste Nina|St Rémi|St Marcel|Ste Roseline|Ste Prisca|St Marius|St Sébastien|Ste Agnès|St Vincent|St Barnard|St François de Sales|St Apollos|Ste Paule|Ste Angèle|St Thomas d'Aquin|St Gildas|Ste Martine|Ste Marcelle|Ste Ella|St Théophane|St Blaise|Ste Véronique|Ste Agathe|St Gaston|Ste Eugénie|Ste Jacqueline|Ste Apolline|St Arnaud|ND de Lourdes|St Félix|Ste Béatrice|St Valentin|St Claude|Ste Julienne|St Alexis|Ste Bernadette|St Gabin|Ste Aimée|St Damien|Ste Isabelle|St Lazare|St Modeste|St Roméo|St Nestor|Ste Honorine|St Romain|St Auguste|St Aubin|St Jaouen|St Gwénola|St Casimir|St Olive|Ste Colette|Ste Félicité|St Jean de Dieu|Ste Françoise|St Vivien|Ste Rosine|Ste Justine|St Rodrigue|Ste Mathilde|Ste Louise|Ste Bénédicte|St Patrick|St Cyrille|St Joseph|St Herbert|Ste Clémence|Ste Léa|St Victorien|Ste Karine|Annonciation|Ste Lara|St Habib|St Gontran|Ste Gwladys|St Amédée|St Benjamin|St Hugues|Ste Sandrine|St Richard|St Isidore|Ste Irène|St Marcellin|St Jean-Baptiste|Ste Julie|St Gautier|St Fulbert|St Stanislas|St Jules|Ste Ida|St Maxime|St Paterne|St Benoît-Joseph|St Anicet|St Parfait|Ste Emma|Ste Odette|St Anselme|St Alexandre|St Georges|St Fidèle|St Marc|Ste Alida|Ste Zita|Ste Valérie|Ste Catherine|St Robert|St Jeremie|St Boris|St Philippe|St Sylvain|Ste Judith|Ste Prudence|Ste Gisèle|St Désiré|Ste Pacôme|Ste Solange|Ste Estelle|St Achille|Ste Rolande|St Matthias|Ste Denise|St Honoré|St Pascal|St Eric|St Yves|St Bernardin|St Constantin|St Emile|St Didier|St Donatien|Ste Sophie|St Bérenger|St Augustin|St Germain|St Aymard|St Ferdinand|Ste Perrette|St Justin|Ste Blandine|St Kevin|Ste Clotilde|St Igor|St Norbert|St Gilbert|St Médard|Ste Diane|Ste Trinité|St Barnabé|St Guy|St Antoine|St Elisée|Ste Germaine|St Régis|St Hervé|St Léonce|St Romuald|St Silvère|St Rodolphe|St Alban|Ste Audrey|St Yann|St Prosper|St Anthelme|St Fernand|St Irénée|St Pierre/St Paul|St Martial|St Thierry|St Martinien|St Thomas|St Florent|St Antoine|Ste Mariette|St Eliane|St Thibaud|Ste Amandine|St Ulric|St Benoît|St Olivier|St Henri/St Joël|St Camille/Fête Nationale|St Donald|Ste Carmen|Ste Charlotte|St Frédéric|St Arsène|Ste Marina|St Victor|Ste Marie-Madeleine|Ste Brigitte|Ste Christine|St Jacques|Ste Anne|Ste Nathalie|St Samson|Ste Marthe|Ste Juliette|St Ignace|St Alphonse|St Julien|Ste Lydie|St Jean-Marie|St Abel|St Octavien|St Gaétan|St Dominique|St Amour|St Laurent|Ste Claire|Ste Clarisse|St Hippolyte|St Evrard|Ste Marie/Assomption|St Armel|St Hyacinthe|Ste Hélène|St Jean-Eudes|St Bernard|St Christophe|St Fabrice|Ste Rose|St Barthélémy|St Louis|Ste Natacha|Ste Monique|St Augustin|Ste Sabine|St Fiacre|St Aristide|St Gilles|Ste Ingrid|St Grégoire|Ste Rosalie|Ste Raïssa|St Bertrand|Ste Reine|St Adrien|St Alain|Ste Inès|St Adelphe|St Apollinaire|St Aimé|St Materne|St Roland|Ste Edith|St Renaud|Ste Nadège|Ste Emilie|St Davy|St Matthieu|St Maurice|St Constant|Ste Thècle|St Hermann|St Côme/St Damien|St Vincent de Paul|St Venceslas|Sts Michel|St Jérôme|Ste Thérèse|St Léger|St Gérard|St François|Ste Fleur|St Bruno|St Serge|Ste Pélagie|St Denis|St Ghislain|St Firmin|St Wilfrid|St Géraud|St Juste|Ste Thérèse|Ste Edwige|St Baudouin|St Luc|St René Goupil|Ste Adeline|Ste Céline|Ste Elodie|St Jean de Capistran|St Florentin|St Crépin|St Dimitri|Ste Emeline|St Simon|St Narcisse|Ste Bienvenue|St Quentin|Toussaint|Défunts|St Hubert|St Charles|Ste Sylvie|Ste Bertille|Ste Carine|St Geoffroy|St Théodore|St Léon|St Martin|St Christian|St Brice|St Sidoine|St Albert|Ste Marguerite|Ste Elisabeth|Ste Aude|St Tanguy|St Edmond|Présentation de Marie|Ste Cécile|St Clément|Ste Flora|Ste Catherine|Ste Delphine|St Séverin|St Jacques de la Marche|St Saturnin|St André|Ste Florence|Ste Viviane|St Xavier|Ste Barbara|St Gérald|St Nicolas|St Ambroise|Ste Frida|St Pierre Fourier|St Romaric|St Daniel|Ste Chantal|St Lucie|Ste Odile|Ste Ninon|Ste Alice|St Gaël|St Gatien|St Urbain|St Théophile|St Pierre Canisius|Ste Françoise-Xavière|St Armand|Ste Adèle|Noël|St Etienne|St Jean|St Gaspard|St David|St Roger|St Sylvestre".split(/\|/g);
var chn='';
var td=new Date(),an=td.getFullYear(),ms=-1,bs=0;
for (i=1;;i++){cd=new Date(an,0,i);
if (cd.getFullYear()!=an) break;
if (cd.getMonth()!=ms) {ms=cd.getMonth();chn+=', <td valign=\"top\"> '+mos[ms]+' <hr>'}
if (ms ==1 && cd.getDate()==29) bs++;
chn+=tSt[i-1+bs]+'
';}
chn+='
';
document.getElementById('cal').innerHTML=chn;
</script>

</html>
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
1 févr. 2011 à 11:04
@007Julien : je ne voulais pas splitter une simple chaine de caractère car, dans le cadre où l'on veut mettre plusieurs saints du jour, cette méthode ne le permet pas (ou alors s'en servir pour la troisième dimension).

Ensuite c'est vrai que je pouvais ajouter simplement un getdate() et getmonth() au lieu d'aller récupérer une date formatée puis à nouveau la retraiter (pour enlever le 0 des unités rajouté par la fonction précédente). Mea culpa.
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
1 févr. 2011 à 10:19
De grâce conserver les ordres lorsque vous évoquez les Saints ! Une chaîne ordonnée permet une écriture plus intelligible et plus concise :

var tSt="Jour de l\'an|Ste Ella|St Aubin| ... |St Roger|St Sylvestre".split(/\|/g);

La chaîne complète peut être obtenue, à partir du source précédent, par la ligne suivante.

chn='';for (i=1;i<367;i++) {d=new Date(2000,0,i);chn+='|'+ephemeride[d.getDate()][d.getMonth()+1];}

Il est alors facile, à partir de ce tableau des Saints tSt d'afficher le Saint du jour ou même de construire un calendrier type PTT. Encore convient-il de placer les fêtes mobiles !
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
28 janv. 2011 à 22:59
De rien, pour moi les seuls commentaires qui comptent sont ceux qui sont constructif ;)

Pour faire un tableau en 3 dimensions selon la méthode des [] :

tab=[ [ ["test"],["test2"] ], [ [ "test3"], ["test4"]]];

Revoie donc cela
tefa24600 Messages postés 30 Date d'inscription samedi 4 août 2007 Statut Membre Dernière intervention 21 février 2012
28 janv. 2011 à 11:18
Merci pour ta remarque, c'est vrai que c'est lourd d'afficher 365 lignes pour un simple tableau !
Néanmoins, je voulais être capable de faire un tableau à trois dimensions, dont la troisième permettrait de renseigner le nom de plusieurs saints.
Ça fait vieux script des années 80, j'aurai très bien pu utiliser une petite bdd et gagner surement en performance, mais j'avais pour obligation de le rendre accessible sans avoir besoin d'autre ressource qu'un navigateur (sous ie6 surtout...).

En tout cas, tu es le premier à m'avoir fourni un commentaire constructif depuis mon inscription sur Codes-Sources et je tiens à t'en remercier ;)
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
28 janv. 2011 à 01:09
Tant qu'à faire une source de ce genre, avec une "database à la javascript", autant s'assurer qu'elle est bien faite ;)

Ne t'en fais pas, elle est bien faite, seulement, tu aurais du la compressé en créant un tableau à l'aide de [] comme ceci ;

ephemeride[1]=["mon saint1","mon saint 2","..."]

et ainsi de suite ;)
Rejoignez-nous