Valid XHTML     Valid CSS2    

Listing du fichier tp6.php

 

00001     <?php
00002     
# # (gH) -_- tp6.php ; TimeStamp (unix) : 27 Novembre 2020 vers 09:48
00003     
error_reporting(E_ALL | E_NOTICE | E_STRICT ) ;
00004     
header
('Content-Type "text/html; charset=iso-8859-1"') ;
00005     
ini_set
( 'default_charset', 'ISO-8859-1' );
00006     include(
"decra-inc.php") ;
00007     
00008     
00009     
$R
= ghRouge("R") ;
00010     
$XML
= ghRouge("XML") ;
00011     
$Awk
= ghRouge("AWK") ;
00012     
$Php
= ghVert("PHP") ;
00013     
$ruby
= ghRouge("Ruby") ;
00014     
$ror
= ghRouge("ROR") ;
00015     
00016     
$numSerie
= 6 ;
00017     
debutTP
($numSerie,"MVC en $ruby via ROR") ;
00018     
ghAtAngers() ;
00019     
00020     
## -------------------------------------------------------------------------------------------
00021     
00022     
sdl
(3) ; echo cmt(' pour afficher toutes les solutions : tp1.php?solutions=1') ; sdl(3) ;
00023     
00024     
## -------------------------------------------------------------------------------------------
00025     
00026     
p
("texte") ;
00027     echo
"" ;
00028     
finp() ;
00029     
debutSection() ;
00030     
00031     
$tableauDesRubriques = array() ;
00032     
$idr
= 0 ;
00033     
$idr
++; $tableauDesRubriques[$idr] = "Découverte de $ruby" ;
00034     
$idr
++; $tableauDesRubriques[$idr] = "Installation et test de ROR (première partie)" ;
00035     
$idr
++; $tableauDesRubriques[$idr] = "Chapitre un, une première mini-application" ;
00036     
$idr
++; $tableauDesRubriques[$idr] = "Chapitre deux, une vraie application" ;
00037     
$idr
++; $tableauDesRubriques[$idr] = "Tout le reste du turoriel" ;
00038     
$idr
++; $tableauDesRubriques[$idr] = "Ajout de fonctionalités" ;
00039     
$tdmCRLM
= new tdm($tableauDesRubriques) ;
00040     
$tdmCRLM
->titre() ;
00041     
$tdmCRLM
->menu("oui","oui","nou") ;
00042     
00043     
direAfficherSolutionsTP
($numSerie) ;
00044     
00045     
finSection() ;
00046     
00047     
$numExo
= 0 ;
00048     
00049     
## -------------------------------------------------------------------------------------------
00050     
00051     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Découverte de ruby
00052     
00053     ## -------------------------------------------------------------------------------------------
00054     
00055     
blockquote
() ; # tp
00056     
00057     
blockquote
() ; # énoncé
00058     
00059     
p
("texte") ;
00060     echo
" Commencer par lire le " ;
00061     echo
href
("../tuteurs/tutruby.php","tuteur $ruby") ;
00062     echo
" puis répondre aux questions suivantes&nbsp;:" ;
00063     
finp() ;
00064     
00065     
ol() ;
00066     
00067     
debutli
() ; p() ;
00068      echo
" Quelle version de
$ruby est installée dans les salles du département informatique " ;
00069      echo
" de la faculté des sciences d'Angers&nbsp;?" ;
00070     
finp
() ; finli() ;
00071     
00072     
debutli
() ; p() ;
00073      echo
" Est-ce que le premier exemple standard de notre tuteur, "
.href("bonjour.rb").", " ;
00074      echo
" fonctionne tel quel &nbsp;?" ;
00075      echo
" A-t-on besoin de la première ligne "
.b("require \"date\"")."&nbsp;?" ;
00076     
finp
() ; finli() ;
00077     
00078     
debutli
() ; p() ;
00079      echo
" Et le deuxième exemple standard, versions "
.href("tdm.rb")." et " ;
00080      echo
" "
.href("tdm2.rb")."&nbsp;?" ;
00081      echo
" Quelle version est la plus fidèle à l'esprit de
$ruby&nbsp;?" ;
00082     
finp
() ; finli() ;
00083     
00084     
debutli
() ; p() ;
00085      echo
" Est-ce que les exemples complémentaires nommés respectivement " ;
00086      echo
href
("sql.rb").", " ;
00087      echo
href
("ndjpm.rb")." et " ;
00088      echo
href
("demo_xml.rb")." " ;
00089      echo
" fonctionnent tels quels &nbsp;?" ;
00090     
finp
() ; finli() ;
00091     
00092     
finol() ;
00093     
00094     
p
("texte") ;
00095     echo
" Est-ce qu'il existe des "
.ghVert("Jupyter Notebooks")." pour $ruby&nbsp;?" ;
00096     
finp() ;
00097     
00098     
finblockquote
() ; # énoncé
00099     
00100     
solutionTP
($numExo,$numSerie) ;
00101     
00102     
p
("texte") ;
00103     echo
"Voici les réponses aux questions&nbsp;:" ;
00104     
finp() ;
00105     
00106     
ol() ;
00107     
00108     
debutli
() ; p("texte") ;
00109      echo
" Comme le montre la commande "
.b("ruby --version").", c'est la version " ;
00110      echo
ghBleu
("2.3.1p112") ;
00111      echo
" qui est installée dans les salles informatiques du département informatique " ;
00112      echo
" de la faculté des sciences d'Angers." ;
00113     
finp
() ; finli() ;
00114     
00115     
debutli
() ; p("texte") ;
00116      echo
" Oui, l'exemple standard "
.href("bonjour.rb")." fonctionne tel quel, m&ecirc;me sans" ;
00117      echo
" la première ligne "
.b("require \"date\"")."." ;
00118     
finp
() ; finli() ;
00119     
00120     
debutli
() ; p("texte") ;
00121      echo
" Les deux versions de la table de multiplication fonctionnent tels quels. " ;
00122      echo
" La deuxième version, qui définit une méthode "
.b("entier?")." dans la classe ".b("String") ;
00123      echo
" correspond sans doute plus à l'esprit de
$ruby." ;
00124     
finp
() ; finli() ;
00125     
00126     
debutli() ;
00127     
00128     
p
("texte") ;
00129      echo
em
("A priori").", seul l'exemple " ;
00130      echo
href
("ndjpm.rb")." fonctionne directement. " ;
00131      echo
" Les exemples " ;
00132      echo
href
("sql.rb")." et " ;
00133      echo
href
("demo_xml.rb")." " ;
00134      echo
" requièrent une installation. " ;
00135     
finp() ;
00136     
00137     
pre_fichier
("xmps-ruby.txt","cadre") ;
00138     
00139     
finli() ;
00140     
00141     
finol() ;
00142     
00143     
p
("texte") ;
00144     echo
" Oui, il existe des "
.ghVert("Jupyter Notebooks")." pour $ruby, comme l'indique la page " ;
00145     echo
href
("https://github.com/jupyter/jupyter/wiki/Jupyter-kernels","jupyter-kernels") ;
00146     echo
" mais l'installation n'est pas des plus aisées pour un environnement universitaire et " ;
00147     echo
" aucun "
.b("docker")." ne semble pour l'instant ne semble &ecirc;tre disponible..." ;
00148     
finp() ;
00149     
00150     
finsolution
() ; # contient un blockquote
00151     
00152     
finblockquote
() ; # tp
00153     
00154     ## -------------------------------------------------------------------------------------------
00155     
00156     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Installation et test de ROR (première partie)
00157     
00158     ## -------------------------------------------------------------------------------------------
00159     
00160     
blockquote
() ; # tp
00161     
00162     
blockquote
() ; # énoncé
00163     
00164     
$sous
= 0 ;
00165     
00166     
$sous
++ ; h3("Partie 2.".$sous) ;
00167     
00168     
p
("texte") ;
00169     echo
" Quelle version de "
.b("gem")." est installée&nbsp;?" ;
00170     echo
" Est-ce que la commande "
.b("gem install rails --version 3.0.5")." s'exécute correctement&nbsp;?" ;
00171     echo
" Pourquoi&nbsp;?" ;
00172     echo
" Comment corriger ce problème&nbsp;?" ;
00173     echo
" Vérifier ensuite que le code suivant produit une version minimale d'une application
$ruby&nbsp;:" ;
00174     
finp() ;
00175     
00176     
pre_fichier
("ror-minimal.txt","cadrebleu") ;
00177     
00178     
$sous
++ ; h3("Partie 2.".$sous) ;
00179     
00180     
p
("texte") ;
00181     echo
" Si ce n'est pas le cas, " ;
00182     echo
" est-ce que la commande "
.b("gem install rails --version 5.2.1")." s'exécute correctement&nbsp;?" ;
00183     echo
" Vérifier ensuite que le code suivant produit une version minimale d'une application
$ruby&nbsp;:" ;
00184     
finp() ;
00185     
00186     
pre_fichier
("ror-minimal.txt","cadrebleu") ;
00187     
00188     
p
("texte") ;
00189     echo
"Voici ce qu'on devrait obtenir&nbsp;:" ;
00190     
finp() ;
00191     
00192     
p() ;
00193     
nbsp
(12) ;
00194     
$img
= "ror1.png" ;
00195     echo
href
($img,img($img,"",600)) ;
00196     
finp() ;
00197     
00198     
$sous
++ ; h3("Partie 2.".$sous) ;
00199     
00200     
p
("texte") ;
00201     echo
" Si cela ne fonctionne toujours pas, lancer la commande " ;
00202     echo
b
("_ruby_on_rails")." qui, dans les salles du département informatique de l'université d'Angers " ;
00203     echo
" lance un "
.b("docker")." avec ruby et rails préconfigurés." ;
00204     
finp() ;
00205     
00206     
p
("texte") ;
00207     echo
"Quelle est alors la version de "
.b("ruby").", de ".b("gem")." et de ".b("rails")."&nbsp;?" ;
00208     
finp() ;
00209     
00210     
p
("texte") ;
00211     echo
"Exécuter les commandes suivantes et vérifier que le serveur est disponible à l'adresse "
.href("http://localhost:3000")."." ;
00212     
finp() ;
00213     
00214     
pre_fichier
("ror-cmd0.txt","cadrebleu") ;
00215     
00216     
$sous
++ ; h3("Partie 2.".$sous) ;
00217     
00218     
p
("texte") ;
00219     echo
"Quels sont les répertoires et les fichiers créés (en identifiez-vous certains&nbsp;?) si on exécute " ;
00220     
finp() ;
00221     
00222     
pre_fichier
("ror-cmd1.txt","cadrebleu") ;
00223     
00224     
p
("texte") ;
00225     echo
"Quel est le message d'avertissement si on exécute ensuite " ;
00226     
finp() ;
00227     
00228     
pre_fichier
("ror-cmd2.txt","cadrebleu") ;
00229     
00230     
p
("texte") ;
00231     echo
"Exécuter alors " ;
00232     
finp() ;
00233     
00234     
pre_fichier
("ror-cmd3.txt","cadrebleu") ;
00235     
00236     
p
("texte") ;
00237     echo
"Quels fichiers ont été alors créés (à mettre dans "
.b("ror-lst2.txt").")&nbsp;?" ;
00238     
finp() ;
00239     
00240     
p
("texte") ;
00241     echo
"Exécuter maintenant " ;
00242     
finp() ;
00243     
00244     
pre_fichier
("ror-cmd4.txt","cadrebleu") ;
00245     
00246     
p
("texte") ;
00247     echo
"Qu'affiche la console si on ouvre la page index du serveur&nbsp;?" ;
00248     
finp() ;
00249     
00250     
p
("texte") ;
00251     echo
"Que contient le fichier "
.b("Gemfile")." et quels ".b(em("groupes"))." sont définis dans ce fichier&nbsp;?" ;
00252     
finp() ;
00253     
00254     
finblockquote
() ; # énoncé
00255     
00256     
solutionTP
($numExo,$numSerie) ; # contient un blockquote
00257     
00258     
$sous
= 0 ;
00259     
00260     
$sous
++ ; h3("Partie 2.".$sous) ;
00261     
00262     
p
("texte") ;
00263     echo
" La commande "
.b("gem --version")." indique que la version ".b("2.5.2.1")." est installée." ;
00264     
finp() ;
00265     
00266     
p
("texte") ;
00267     echo
" La commande "
.b("gem install rails --version 3.0.5")." ne s'exécute pas correctement " ;
00268     echo
" parce qu'on essaie d'écrire dans des répertoires système sans &ecirc;tre "
.b("root").". " ;
00269     echo
" En principe, cette commande devrait &ecirc;tre précédée de "
.b("sudo").". " ;
00270     echo
" Comme vous n'avez pas les droits d'administration " ;
00271     echo
" dans les salles informatiques du département informatique " ;
00272     echo
" de la faculté des sciences d'Angers, il faudrait suivre la procédure indiquée " ;
00273     echo
href
("https://techgeek4shfl.blogspot.com/2015/10/install-ror-easy-way-without-sudo.html","ici").". " ;
00274     echo
" Malheureusement, toujours à cause des droits d'accès, cela ne fonctionne pas dans nos salles informatiques. " ;
00275     
finp() ;
00276     
00277     
$sous
++ ; h3("Partie 2.".$sous) ;
00278     
00279     
p
("texte") ;
00280     echo
"Cela ne fonctionne pas non plus avec "
.b("gem install rails --version 3.0.5")."." ;
00281     
finp() ;
00282     
00283     
$sous
++ ; h3("Partie 2.".$sous) ;
00284     
00285     
p
("texte") ;
00286     echo
"Une fois le dockeur lancé, les commandes "
.b("ruby --version").", ".b("gem --version")." et ".b("rails --version") ;
00287     echo
" affichent les numéros de version suivantes&nbsp;:" ;
00288     
finp() ;
00289     
00290     
pre_fichier
("ror-version.txt","cadrejaune") ;
00291     
00292     
p
("texte") ;
00293     echo
"A la suite du "
.b("bundle install")." on dispose de toute une arborescence (44 directories, 61 files)&nbsp;:" ;
00294     
finp() ;
00295     
00296     
pre_fichier
("ror-tree1.txt","cadrejaune") ;
00297     
00298     
p() ;
00299     echo
"La liste des fichiers, fournie ci-dessous, une fois triées, est dans "
.href("ror-lst1.txt").". " ;
00300     
finp() ;
00301     
00302     
textarea_fichier
("rorlst1","cadrebleu",10,70,"r1","ror-lst1.txt") ;
00303     
00304     
p() ;
00305     echo
"Si on exécute "
.b("rake db:setup").", Rails se plaint que la base n'est pas créée&nbsp;:" ;
00306     
finp() ;
00307     
00308     
pre_fichier
("ror-rake1.txt","cadrejaune") ;
00309     
00310     
p() ;
00311     echo
"Avec les deux commandes "
.b("rake")." suivantes, tout est OK&nbsp;:" ;
00312     
finp() ;
00313     
00314     
pre_fichier
("ror-rake2.txt","cadrejaune") ;
00315     
00316     
p() ;
00317     echo
"A la suite du lancement du serveur via "
.b("rails server")." de nouveaux fichiers sont créés, notamment dans le répertoire ".b("tmp/")."&nbsp;:" ;
00318     
finp() ;
00319     
00320     
textarea_fichier
("rorlst2","cadrebleu",10,70,"r2","ror-lst2.txt") ;
00321     
00322     
p() ;
00323     echo
"Il est sans doute prudent de passer ici par "
.b("diff")." pour visualiser les différences&nbsp;:" ;
00324     
finp() ;
00325     
00326     
textarea_fichier
("rorlst3","cadre",10,70,"r3","ror-diff.txt") ;
00327     
00328     
p
("texte") ;
00329     echo
" La console affiche alors les requ&ecirc;tes HTPP et la réponse du serveur&nbsp;:" ;
00330     
finp() ;
00331     
00332     
pre_fichier
("ror-serveur.txt","cadrejaune") ;
00333     
#pre_fichier("rails-console.txt","cadrejaune") ;
00334     
00335     
p
("texte") ;
00336     echo
" Le fichier "
.href("Gemfile.txt","Gemfile")." contient les noms de librairies utilisées&nbsp;:" ;
00337     
finp() ;
00338     
00339     
pre_fichier
("Gemfile.txt","cadrebleu") ;
00340     
00341     
p
("texte") ;
00342     echo
" Les groupes implémentés sont "
.b("development")." et ".b("test")." par défaut." ;
00343     
finp() ;
00344     
00345     
finsolution
() ; # contient un blockquote
00346     
00347     
finblockquote
() ; # tp
00348     
00349     ## -------------------------------------------------------------------------------------------
00350     
00351     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Chapitre un, une première mini-application
00352     
00353     ## -------------------------------------------------------------------------------------------
00354     
00355     
blockquote
() ; # tp
00356     
00357     
blockquote
() ; # énoncé
00358     
00359     
p
("texte") ;
00360     echo
"On ne va pas suivre ici la " ;
00361     echo
href
("http://french.railstutorial.org/chapters/beginning","version française") ;
00362     echo
" du tutoriel qui n'est pas à jour (mais vous pouvez vous en servir lorsque vous ne comprenez pas " ;
00363     echo
" les termes anglais) mais plut&ocirc;t la " ;
00364     echo
href
("https://www.railstutorial.org/book","version anglaise")." du tutoriel." ;
00365     
finp() ;
00366     
00367     
p
("texte") ;
00368     echo
"Lire le chapitre 1 jusqu'à la fin de la section 1.3 (aucune manipulation pour l'instant)." ;
00369     
finp() ;
00370     
00371     
p
("texte") ;
00372     echo
b
("Attention&nbsp;:")." pour ce qui suit, il ne faut pas créer le répertoire ".b("~/environment")." comme indiqué dans le tuteur. " ;
00373     echo
" Vous pouvez vous contenter du répertoire "
.b("environment")." dans le répertoire ".b("Mes_projets_ruby")." que vous retrouvez " ;
00374     echo
" aussi dans votre "
.em("home directory")." suite au lancement du ".b("docker").". " ;
00375     echo
" De m&ecirc;me, vous ne devez pas exécuter "
.b("rails server")." comme indiqué dans le tutorial, mais " ;
00376     echo
b
("rails server -p 3000 -b 0.0.0.0")." sous peine de ne pouvoir accéder au serveur." ;
00377     
finp() ;
00378     
00379     
p
("texte") ;
00380     echo
" Continuer alors la lecture du chapitre 1, exécuter les commandes indiquées jusqu'à la fin de la section 1.3.2 " ;
00381     echo
" pour créer l'application "
.b("hello_app") ;
00382     echo
" et vérifier que la commande " ;
00383     echo
b
("rails server -p 3000 -b 0.0.0.0")." affiche bien ce qu'on attend." ;
00384     
finp() ;
00385     
00386     
p
("texte") ;
00387     echo
"Voici ce qu'on doit obtenir&nbsp;:" ;
00388     
finp() ;
00389     
00390     
p() ;
00391     
nbsp
(12) ;
00392     
$img
= "ror1.png" ;
00393     echo
href
($img,img($img,"",600)) ;
00394     
finp() ;
00395     
00396     
p
("texte") ;
00397     echo
" Effectuer les manipulations de la section 1.3.3 " ;
00398     echo
" (fichiers "
.b("application_controller.rb")." et ".b("routes.rb").") " ;
00399     echo
" pour que la commande " ;
00400     echo
b
("rails server -p 3000 -b 0.0.0.0")." affiche désormais ".b("hello , world! et bonjour à tous !!").". " ;
00401     
finp() ;
00402     
00403     
p
("texte") ;
00404     echo
"Voici ce qu'on doit obtenir&nbsp;:" ;
00405     
finp() ;
00406     
00407     
p() ;
00408     
nbsp
(12) ;
00409     
$img
= "ror-bonjour.png" ;
00410     echo
href
($img,img($img,"",600)) ;
00411     
finp() ;
00412     
00413     
p
("texte") ;
00414     echo
" Lire ensuite la fin du chapitre 1 (section 1.4 et suivantes) mais sans réaliser les manipulations "
.b("git").", ".b("bitbucket")." ou ".b("heroku").". " ;
00415     echo
" Par contre on essaiera de comprendre ce qu'elles représentent." ;
00416     
finp() ;
00417     
00418     
finblockquote
() ; # énoncé
00419     
00420     
solutionTP
($numExo,$numSerie) ; # contient un blockquote
00421     
00422     
p
("texte") ;
00423     echo
"Il n'y a aucune question ici&nbsp;!" ;
00424     
finp() ;
00425     
00426     
finsolution
() ; # contient un blockquote
00427     
00428     
finblockquote
() ; # tp
00429     
00430     ## -------------------------------------------------------------------------------------------
00431     
00432     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Chapitre deux, une vraie application
00433     
00434     ## -------------------------------------------------------------------------------------------
00435     
00436     
blockquote
() ; # tp
00437     
00438     
blockquote
() ; # énoncé
00439     
00440     
p
("texte") ;
00441     echo
" Lire le chapitre 2 et réaliser toutes les manipulations proposées " ;
00442     echo
ghRouge
("sauf la modification du fichier ".em("Gemfile")) ;
00443     echo
" et toujours sans les parties "
.b("git").", ".b("bitbucket")." ou ".b("heroku")." jusqu'à la section 2.3.1 incluse. " ;
00444     echo
" On ne saisira pas non plus le numéro de version "
.b("_5.1.6_")." dans les commandes ".b("rails").". " ;
00445     echo
" Après les commandes "
.b("rails generate scaffold...")." et ".b("rails db:migrate").", ";
00446     echo
" on créera quelques utilisateurs et des micro-messages, comme ci-dessous&nbsp;:" ;
00447     
finp() ;
00448     
00449     
blockquote
() ; # tableau
00450     
table
(1,15,"collapse") ;
00451      for (
$i
=2;$i<=7;$i++) {
00452      if ((
$i
==2) | ($i==5)) { tr() ; }
00453     
td() ;
00454     
p() ;
00455     
nbsp
(12) ;
00456     
$img
= "ror".$i.".png" ;
00457      echo
href
($img,img($img,"",200)) ;
00458     
finp() ;
00459     
fintd() ;
00460      if ((
$i
==4) | ($i==7)) { fintr() ; }
00461      } ;
# fin pour i
00462     
fintable() ;
00463     
finblockquote
() ; # tableau
00464     
00465     
00466     
p
("texte") ;
00467     echo
"Vérifier ensuite que vous arrivez à imposer une longueur maximale de micropost de 140 caractères " ;
00468     echo
" comme indiqué dans la section 2.3.2. " ;
00469     echo
" Lire (sans manipulations) la section 2.3.5 puis essayer de trouver où est la base de données utilisées. " ;
00470     echo
" Quel est son schéma (iste et structure des tables)&nbsp;?" ;
00471     
finp() ;
00472     
00473     
finblockquote
() ; # énoncé
00474     
00475     
solutionTP
($numExo,$numSerie) ; # contient un blockquote
00476     
00477     
p
("texte") ;
00478     echo
" La base de données est accessible via le chemin "
.b("db/development.sqlite3").". " ;
00479     echo
" C'est du sqlite, donc "
.b(".schema")." affiche la structure de la base et des tables..." ;
00480     
finp() ;
00481     
00482     
finsolution
() ; # contient un blockquote
00483     
00484     
finblockquote
() ; # tp
00485     
00486     ## -------------------------------------------------------------------------------------------
00487     
00488     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Chapitre deux, une vraie application
00489     
00490     ## -------------------------------------------------------------------------------------------
00491     
00492     
blockquote
() ; # tp
00493     
00494     
blockquote
() ; # énoncé
00495     
00496     
p
("texte") ;
00497     echo
" Continuer les chapitres et essayer de réaliser un maximum de manipulations. " ;
00498     echo
" Vous pouvez essayer de faire un résumé des commandes et des gemmes utilisées." ;
00499     
finp() ;
00500     
00501     
finblockquote
() ; # énoncé
00502     
00503     
solutionTP
($numExo,$numSerie) ; # contient un blockquote
00504     
00505     
p
("texte") ;
00506     echo
"Voici la plupart des commandes et des gemmes utilisées&nbsp;:" ;
00507     
finp() ;
00508     
00509     
pre_fichier
("ror-cmds.txt","cadre") ;
00510     
00511     
finsolution
() ; # contient un blockquote
00512     
00513     
finblockquote
() ; # tp
00514     
00515     ## -------------------------------------------------------------------------------------------
00516     
00517     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # Ajout de fonctionnalités
00518     
00519     ## -------------------------------------------------------------------------------------------
00520     
00521     
blockquote
() ; # tp
00522     
00523     
blockquote
() ; # énoncé
00524     
00525     
p
("texte") ;
00526     echo
" Compléter le site avec la saisie d'une date de naissance, le calcul et l'affichage de l'age des personnes, " ;
00527     echo
" la saisie d'un nombre moyen de films vus par semaine (au cinéma, à la télé, sur ordinateur ou tablette...), " ;
00528     echo
" l'affichage de l'indication "
.b("j'aimerais lire plus de livres")." en mode oui/non et " ;
00529     echo
" le dépot d'un "
.b("CV")." au format PDF avec la consultation possible par les autres utilisateurs. " ;
00530     echo
" Au passage, vous en profiterez pour traduire tous les affichages en français, histoire de prouver que vous savez " ;
00531     echo
" d'où vient chaque page. " ;
00532     
finp() ;
00533     
00534     
p
("texte") ;
00535     echo
"En "
.b("option").", implémentez aussi le service des pages en XHTML strict plutot qu'en HTML 5 " ;
00536     echo
" (une validation sans erreur ni avertissement avec " ;
00537     echo
href
("http://users.skynet.be/mgueury/mozilla/download_090.html","HTML Validator") ;
00538     echo
" est conseillée), avec l'icone de validation associée, " ;
00539     echo
" le pourcentage des gens qui aimeraient et qui n'aimeraient pas lire plus de livres, le masquage et l'affichage en Javascript de " ;
00540     echo
b
("j'aimerais lire plus de livres")." pour ceux qui en lisent déjà suffisamment, " ;
00541     echo
" une liste bien présentée disponible en PDF (création à la volée) de tous les utilisateurs, " ;
00542     echo
" un graphique SVG qui fournit un box-plot des nombres de films par semaine, " ;
00543     echo
" un graphique PNG de l'histogramme des fréquences des lecteurs et des non lecteurs..." ;
00544     
finp() ;
00545     
00546     
finblockquote
() ; # énoncé
00547     
00548     
solutionTP
($numExo,$numSerie) ; # contient un blockquote
00549     
00550     
p
("texte") ;
00551     
#echo "On pourra utiliser l'archive " ;
00552     #echo href("projetRORcomplet.zip") ;
00553     #echo " afin de voir une solution complète. " ;
00554     
echo
em("Not yet!") ;
00555     
finp() ;
00556     
00557     
finsolution
() ; # contient un blockquote
00558     
00559     
finblockquote
() ; # tp
00560     
00561     #############################################################################
00562     
00563     
finTP
($numSerie) ;
00564     
?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)