[PDF] TFE - GBISHOP - FINAL Travail de fin d'études





Previous PDF Next PDF



298240S31D1 Bachelier en informatique et systèmes - finalité

BACHELIER EN INFORMATIQUE ET SYSTEMES -. FINALITE : TECHNOLOGIE DE L'INFORMATIQUE. ENSEIGNEMENT SUPERIEUR TECHNIQUE DE TYPE COURT. CODE 2982 40 S31 D1.



Evaluation du bachelier « informatique et systèmes (finalité

5 juin 2012 l'évaluation du bachelier « informatique et systèmes (finalité technologie de l'informatique) ». Le présent rapport.



Evaluation des bacheliers « informatique de gestion » et

13 juin 2012 1 sur 13. Evaluation des bacheliers « informatique de gestion » et. « informatique et systèmes (finalités automatique et technologies de.



298230S31D1 Bachelier en informatique et systèmes - finalité

BACHELIER EN INFORMATIQUE ET SYSTEMES -. FINALITE : RESEAUX ET TELECOMMUNICATIONS. ENSEIGNEMENT SUPERIEUR TECHNIQUE DE TYPE COURT. CODE 2982 30 S31 D1.



MASTER EN ARCHITECTURE DES SYSTÈMES INFORMATIQUES

Bachelier en informatique et systèmes : • Finalité : Réseaux et télécommunications. • Finalité : Informatique industrielle. • Finalité : Technologie de l' 



ANALYSE TRANSVERSALE

7 mai 2013 Annexe 8 : organigramme du bachelier en Informatique et systèmes. (finalité technologie de l'informatique) (EPS) .



TFE - GBISHOP - FINAL

Travail de fin d'études en vue de l'obtention du diplôme de bachelier en. Informatique et Systèmes : finalité Technologie de l'informatique.



Liste des principales formations de promotion sociale pouvant ouvrir

26 juin 2014 BACHELIER EN INFORMATIQUE ET SYSTEMES - FINALITE : TECHNOLOGIE DE L'INFORMATIQUE.



Bacheliers Masters

SCIENCES ET TECHNOLOGIES Vous êtes attiré par la technologie omniprésente dans les entreprises ... section INFORMATIQUE ET SYSTÈMES - FINALITÉ :.



Pro-J

Les cours de 1ère année du bachelier et certaines finalités de master sont organisées Informatique et Systèmes - Finalité Technologie de l'Informatique.

TFE - GBISHOP - FINAL

AvenueduCiseau151348Louvain-la-NeuveTel.:+3210/47.53.90 DÉVELOPPEMENTD'UNFRAMEWORKDECORRECTIONDECODEJAVAPOURPYTHIA (PLATEFORMED'APPRENTISSAGEDELAPROGRAMMATION)Travaildefind'étudesenvuedel'obtentiondudiplômedebachelierenInformatiqueetSystèmes:finalitéTechnologiedel'informatique ETUDIANT:BISHOPGREGORY RAPPORTEUR:LAMBEAUCHRISTIAN ANNEEACADEMIQUE2013-2014

2 Remerciements LadécouvertedePythiaetsespossibilitésfutlemomentclédemontravail.Sanscela,j'auraisprobablementtrouvéunautresujetbeaucoupmoinspassionnant.Eneffet,ceTFE1futvraimen tattrayantpourmoi.Malgré leslongues journéesdestag eparfoisfatigantes,jetrouvaislamotivationnécessaireausoirpouravancersereinement.Jemedoisdoncdere mercier MonsieurCombéfispourm'avoirfaitdé couvrircetteplate -formeetégalementpourtoutcequ'ilapum'apprendre.Parcestage,jeremercieMadameVandenSchrieckpourm'avoirpropo sécettepériode d'apprentissageetconse illéuntravailenrapportavecmonobjetdestage. JesouhaitenaturellementremercierMonsieurLambeaupoursesnombreuxconseilsetremarquesquifurentbénéfiquesdanslaréalisationdemonprojet.Deplus,ilm'afaitpartdenombreusesastucesetidéesconcernantjQuery. Siaujourd 'huimontravaildefind'étudeses tpratiquementc ompatibleavecl'EPHEC2,c'estprincipalementgrâceàl'aidegénéreusequem'aproposéeMadameVroman.Eneffet,malgrélefaitqu'ellenesoitpasmonrapporteurdeTFE,elleavolontiersacceptéderépondreàquelquesquestionsconcernantdesdétailsdemoninterfaceutilisateur.Deplus,j'aiétémisencontactavecMonsieurVerhelst,notammentgestionnaireduréseauEPHEC,etMonsieurDelvigne,gesti onnaired'eCampus.Ilsontpum'aide ràmieuxcomprendrelesaspectstechniquesd ontauraitbeso inmaplate-formepourpouvoirse joindreauréseaudel'éc ole.C'étaitdoncagréab ledepouvoird iscuteravecd' autresenseignantsprêtsàm'expliquerteloutelaspect.Sesentirdanslabonnevoieestquelquechosedesincèrementrassurant. 1Travaildefind'études2Écolepratiquedeshautesétudescommerciales

3 TabledesmatièresRemerciements.........................................................................................................................21.Introduction.......................................................................................................................42.Corpsdutravail..................................................................................................................52.1Avisdesétudiantsconcernés......................................................................................52.2Descriptiondesoutilsutilisés.....................................................................................62.2.1Pythia...................................................................................................................62.2.2Python3...............................................................................................................72.2.3MySQL..................................................................................................................72.2.4LightweightDirectoryAccessProtocol(LDAP)....................................................72.2.5HTML,CSS,jQuery&JSON..................................................................................82.3Solution.......................................................................................................................82.3.1LeServeurLDAP...................................................................................................92.3.2Labasededonnéesdistante.............................................................................102.3.3Laplate-forme...................................................................................................103.Difficultésrencontrées....................................................................................................264.Améliorations..................................................................................................................275.Conclusion.......................................................................................................................286.Webographie...................................................................................................................297.Annexes...........................................................................................................................30I.Schémarelationnel.......................................................................................................30II.Diagrammed'activité:Soumissiond'unétudiant........................................................31

4 1. Introduction Durantmesdeuxannéesàl'UniversitécatholiquedeLouvainenSciencesinformatiquesetmestroisannéesàl'EPHECenTechnologiedel'informatique,j'aisouventétéconfrontéaumêmecasdefigure.Lesprofesseursdemandentàcequel'onsoumettenostravauxsurlaplate-formeClarolinequecesoiteCampusouiCampus.Dûaunombreélevédesoumissions,lesprofesseursn'ontpasnécessairementletempsdecorrigerchaqueexercicepourchaqueétudiant.Ainsi,nousn'avonspasconstammentunfeedbacksurnosimplémentationsenlangagedeprogrammati on.Nous avonsbienévidemmentnoscompilateurs installéslocalementsurnosmachines,maisilarrivequ'ilssoientsoitenanglais,soitincompletsvis-à-visdescorrectionsàapporterànoscodes.Approchantdelasessiond'examens,ilétaitdoncpossiblequedesétudiantsn' étaientpastotalem entconfiants quantàleurcapacitéàimplémentercorrectement.Fortdeme sdébutsàl'UCL3etdem onanglais ,jen 'aipasrencontrécesproblèmesdansledomainedelaprogrammation. Lehasarddeschosesouplussincèrementmesantécédentsfirentqu'unstagemefutproposéàl'EPL4oùj'avaispasséquatrequadrimestres.Ainsi,quandj'apprisquemonstagesebaseraitprincipalementsurPythia,uneplate-formeintelligentequipermetd'analyserducodesoumisetderenvoyerducontenuutilesurbasedel'implémentation,j'aidirectementpenséàunealternativepourl'EPHEC.J'enfisdonclademandeentantquetravaildefind'études,cequifutaccepté. Ildevaitse baserautourduPascal, langagequi,jus qu'endécembre2013,étaitlepremierlangagedeprogrammationenseignéàl'EPHEC. Monframeworkpermettraitauxenseignantsd'avoirrapidementuncompterendusurlesexercicesréalisésparlesétudiants.Cesdernierspourrontdoncs'entraîneràleurguisesurdesexer cicesbasiqu es.Cetteinterfacewebpédagogiqu eparticiperaitdoncàl'apprentissagedesnéoprogrammeurs. Avantdepouvo ircommen cermontravail,monpremi erobjectiffutd'apprendrele fonctionnementdelaplate-formePythia.Dûàsapopularitéplutôtfaibleetàsajeunesse,ilestforteme ntcompliquédetrouverd eladocumentationprincipalementte chniques urcelle-ci.Ainsi,i lmefallutdécouvrir unepartie desfonc tionnalitésviames premièressemainesdestage.Jen'avaispratiquementaucuneconnaissanceàsonsujet,jenesavaisriendesonsystème.Conscientsdesrèglesimposéesparl'EPHEC,MonsieurCombéfis(monmaîtredestage),MonsieurLambeauetmoi-mêmeavionsconvenuqueletravaileffectuéautourdePythiad urantcettep ériodedestage neconcerneraitp aslafonction nalitéprincipalequ'estl'analysedecodesmaisplutôtl'améliorationdelaplate-formeainsiquel'ajoutdediversmodules.Bienvite,jemerendiscomptequelanouvelleversiondelaplate-formePythianeconte naitpluscette"i ntelligenc e"précédemmentcitée. Eneffet,cette dernièrenepermettaitquedelancerdesmachinesvirtuellescontenantl'environnementadéquatàlatâchedésirée.CesfichierssystèmesétaientpréalablementconçusparPythiaàl'aidedepaquetsDebianSqueeze.Lesfonctionnalitésprincipalesdecetteplate-formesontdonclacréationetl'exécutiondemachinesvirtuellesLinux. 3UniversitécatholiquedeLouvain4EcolePolytechniquedeLouvain

5 Cependant,aucoursdespremièressemainesdemonstageetdel'élaborationdemonTFE,jefusinforméquel'EPHECapporteraitdesmodificationsauxcoursdeprogrammationdonnésauseindel'établissement.Eneffet,suiteauprojetMarcourt,deslangagestelsqueCouencorePascalétaientappelésàdisparaîtredel'enseignementàl'EPHEC.C'estalorsqu'undébatpritplace ,qu'allaitadv enirmaplate-forme?Ilfal lutdon ctrouverunes olutionrapidementafindenepastrop meretarderau niveaude sdiffére nteséché ances.Unedécisionfutprisequelquesjoursplustard,maplate-formesebaseraitdésormaisautourdulangageJava,quiseraitconservépourlesétudiantsdedeuxièmeannée.2. Corpsdutravail 2.1 Avisdesétudiantsconcernés Lapremièreétapedemontravailconsistaenl'acquisitiondupointdevuedesétudiantsfaceàce rtainslangagesdeprogr ammation,leursappréhen sionsou encorecequ'ilspréféraientdansceux-ci.J'avaisco mmencémontravails urlelangagePascal,j'aidonc recueillidiversesopinionsvis-à-visdecelui-ci.J'aiparlasuiteposédesquestionssimilairesparrapport auJava.Voic iunelisted'opin ionsanonymes quipourraient êtreutilesauxenseignantsdanslefutur. PASCAL • "Cequiplaît:lasimplicitédelapriseenmaindulangage,cequidéplaît:les";"aléatoires,leslimitesdulangage."• "Jetrouvequ'ilseraitmeilleurdesepenchersurlepythonpourinitierlesnouveauxinscritsàlaprogrammation."• "LePascalacommegrandequalitédepouvoirfacilementdonnerunaperçudelalogiquedeprogrammation, auvuedulangage dehautniveau(trèsproched el'humain).Évidemment,savoircoderenPascalserévèleêtrecomplètementinutile(lePythonauraitétémieuxparexemple,maisjeletrouvemoinsfaciled'accèsquandoncommencelaprogrammation).Enrésumé,jenedonneraipasdepointnégatifauPascalsimpleme ntparcequ'iln'aplusaucuner aisond'êtrehorm isdansl'apprentissagedelalogiquedebase."• "Venantd'unlangageplus"évolué"(Java),jedétesteles";"aléatoires.J'aipasséplusdetempsàenmettreouensupprimerdes";"qu'àcoder."• "Pourquoinechoisis-tupasunlangagesansbugspourtonTFE?"• "1)pluspersonnen'utilisecelangageetj'aiquandmêmeespoirqu'aveclamassedelangagesexistants,ilyaitmoyendetrouverunlangageutile(Ruby,Python,...)et"facilepourdébuter".2)syntaxelourdeetparfoisincompréhensible(Begin,endetsesdérivéesainsiquedesrandomisé";"pourlesif/elsenotamment).3)IDEinfâmeàsouhaitmaiscohérentaveclepoint1 .4)seulpo intpositi f:quelquesou tilssyntaxiquesutilescommelewith,leswitchconditionnelouencorelein[..].5)ahj'ai

6 faillioublierlepiredetous:lestableauxquicommencentàl'indice1.Riendemieuxpoursemerletroublelorsdel'apprentissageduC..."• "(-)Navigationdansl'IDEhorrible(mêmeunbloc-notesfaitmieux)(+)Sacapacitéàs'arrêteraupremierfauxpasduprogrammeurDEBUTANTcaroui,celangageestadaptéauxdébutantsuniquementselonmoi."JAVA • "Cequimep laît:langage abordable, puissancede laJVM, objectifsconcrets rapidementatteints,massivementutilisé.Cequinemeplaîtpas:grosprogrammeslentsàlacompilation,tropverbeux,peut-êtreunpetitcoupdevieux?Remarques:bienqueJava8soitsorti,deslangagesfonctionnels(SCALA,HASKELL,CLOJUREetc....)sontmaintenantplusperformantspourmoinsdelignedecode."• "BienpluspratiqueàutiliserqueleC.Pasbesoindes'embarrasserdetoutel'histoiredespointeurs.Toutestfaitautomatiquementetdanslecadredel'apprentissage,çapermetdeseconcentrersurlesalgorithmesdebasesanstropdeproblèmes.Pourtoutcequiestorientéobjet,l'héritageestjusteunpeucomplexeàassimiler.Unpointpositifestlaportabilitédulangagequipermetd'utiliser,entreautres,uneinterfacegraphiquedebasefonctionnantsurtouslesos.Lacritiquequej'aileplusentendueestlarelativelenteurd'exécutionmaisànotreniveau,iln'yaaucunedifférence.Enbref,Javafaitpleindetrucsdansl'ombreetj'aienviededire,cen'estpasplusmalpourundébutant!"• "LeJavaouvrelesportessurlemarchédel'emploi."• "J'aimebeaucouplesinterfacesgraphiquesenJava."J'enaiconclu,qu'aufinal,passerdePascalàJavafutunebonnechosetantlesétudiantsonttendanceàpréférercelui-ci.Deplus,ladocumentationetlacommunautéautourdeJAVAsontbienplusvastes. 2.2 Descriptiondesoutilsutilisés2.2.1 Pythia Pythiaestuneplate-formedontlebutpremierestd'enseignerlaprogrammationetlaconcep tiond'algorithmes.Elleexécutelecodedansu nenvironnementsécuriséafind'évitertoute erreurpréjudiciablepouvantêtrecauséeparducodeétudiantmalicieux.Sonprincipalavantageestdefournirunfeedbackintelligentauxapprentis.Laplate-formeoffreunenvironnementautonomequisupporteunenseignementdelaprogrammation.Ilestdoncpossibledeproposerdesexercicesauxétudiants,exercicesqu'ilspourrontrésoudreensoumettan tleursréponses.Le feedbackrenvoyéleurpe rmetde

7 corrigerleurserreurs.IlestimportantdesoulignerlefaitquePythian'estpasliéqu'àunseultypedelang agepourles énoncés. Eneffet,grâceàso nenvironnement"Bac-à-sable",laplate-formeestmulti-langage. 2.2.2 Python3 Pythonestunlangagedeprogrammationorientéobjet,multi-paradigmesetmultiplateformeutilisépourécriredifférentstypesd'application.Ilestconsidérécommeunlangagedehautniveaupermettantdes'axerautourduproblèmeàrésoudre,permettantd'utiliserdesmotsusuelsdeslanguesnaturellesainsiquedessymbolesmathématiques.Sasyntaxeassezrigoureusepermetunelisibilitébienplusévidentequed'autreslangagestelsqueCouJava. Lechoixdulangagem'aétéimposéouplussincèrementsuggéréparmonmaîtredestage.Ilmeperm etdep ouvoirré alisermesscripts analysantles codessoumisparlesétudiants.Lamanipulationdesfichiersaveccelangageestégalementbienplusfacile. Deplus,j'utiliselemoduleBottledePython3pourimplémenterunserveurweb.Jen'aidoncpasbesoind'utiliserunserveurAPACHE/PHPpourdéployermoninterfaceutilisateur. 2.2.3 MySQLMySQLestunsystèmedegestiondebasededonnées(SGBD)relationnellefaisantpartiedeslogicielsdegestiondebasededonnéeslesplusutilisésaumonde.C'estdoncpourcelaquej'aipré féréutiliser cesystèmeàPostgreSQL. Eneffet,légèrementdiff érentdes onconcurrent,ilm'aétésuggéréd'utilisercetautresystèmeadministrableviapgAdmin.Cependant,étantbienplushabituéetenconfianceaveclepremiergestionnairecité,j'aipréférénepasexplorerunnouveausystème. Poursefaire,j 'utilise unMySQLSERVERquej egèrevial'applicationdécouverteàl'EPHEC:MySQLWorkBench. 2.2.4 LightweightDirectoryAccessProtocol(LDAP) Afindepouvoirsubvenirauxexigencestechniquesdel'EPHEC,ilaétédécidéd'utiliserunserveurLDAPpourl'authentificationsécuriséedesutilisateursd'oresetdéjàexistantsdanslesystème. LDAPestunpro tocolerep osantsur leProtocoleInternet(TCP/IP) etpermettantd'interrogeretdegérerdesservicesd'annuaire.L'arbrereprésentesouventlapolitiquedelastructurereprésentée.Onutilisedonclesracinesoulespremièresbranchesdel'arbrepourreprésenterlesélémentsdebasedel'annuaire(lenomdelasociété,del'application,...)tandisquelesbr anchesplus profondesre présententlesentités(util isateursetgroup esd'utilisateurs).CeserveurestdonccomparableàunActiveDirectory. J'aiutilisél elogicielApacheDir ectoryStud iopourvisualisermonser veurmaisj'aipréféréutiliserlescommandesviaunterminalpourajouterdesentités.

8 2.2.5 HTML,CSS,jQuery&JSONL'HyperTextMarkupL anguage(HTML)étantlefo rmatdedonn éespardéfautpourreprésenterlespagesweb,ilétaitcertainquecedernierseraitutiliséavecduCSSdansmonprojet. Àcôté,jQuery,quiestunebibliothèqueduJavaScript(JS),permetl'interactionentrecedernieretl'HTML.Elleal'avantagedesimplifierl'utilisationduJSmaisestpluslourdeàexécuter.Néanmoins,pourmaplate-forme,cedésavantageestnégligeable.LeJavaScriptObjectNotation(JSON)permetdeformaterdesdonnéestextuellesdelamêmemanièrequelefaitleXML.Certeslimité,JSONprésenteunestructureplusagréablequecedernier. 2.3 Solution Lasolutionquejeproposesediviseentroisparties: Ø UnserveurLDAPdistantpermettantl'authentificationdesutilisateurs; Ø Unebaseded onnéesMySQL distanteco ntenanttouteslesinformation sdesutilisateurs; Ø Maplate-formecontenantdiversesentités: § PythiaavecunenvironnementpourlesmachinesvirtuellessupportantJavaetPython(pourlesscriptsd'analyse); § ServeurwebPythonàl'aidedumoduleBottle; § UnebasededonnéesMySQL; § Uneinterfaceutilisateur;

9 2.3.1 LeServeurLDAPAfindesubvenirauxexigencesdel'EPHECetdesonsystèmeutilisateur,j'aiinstalléunserveurLDAPmeservantdoncdeserveurd'authentification,ceciafindesimulerleprobableActiveDirectory(AD)del'école. Monserviced'annuaireestprobablementconçudifféremmentdeceluidel'institutmaisjepensequ'ils'enrapprochesuffisamment,dumoinsdanslalogique.J'yaicréédoncunarbreaveccommeracinedeuxcontrôleursdedomaines:"ephec"et"be". Plusbas,nousretrouvonsungrouped'utilisateursàsavoir"students"danslequelseretrouventtouslesétudiantsinscrits.JenesuispascertaindecommentdifférencierlesétudiantsenTI5,marketingoucomptabilité.Enmargedecetteunitéd'organisation,nousretrouvonslesutilisateurs"professeurs"ainsiqu'uncompteadmin. J'aichoisicetteséparationenfonctiondesadressesmailsactuellementutilisées.UnétudiantauneadresseHExxxxxx@students.ephec.betandisqu'unprofesseurenauneplussimplexxxxxx@ephec.be. Pourajouterungrouped'utilisateurs,ilsuffitd'utiliserlacommandesuivante: ldapadd -cxWD cn=admin,dc=ephec,dc=be -f students.ldif Ilestensuitedemandélemotdepasseduserveur.Cefichier"new-group.ldif"contientleslignessuivantes: dn: ou=students, dc=ephec, dc=be objectClass: top objectClass: organizationalUnit ou: students Demanièreassezsimilaire,unfichier"student.ldif" dn: uid=HE111111, ou=students, dc=ephec, dc=be objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson cn: Jane Doe gn: Jane sn: Doe uid:HE111111 userPassword: {CRYPT}* Ilfautyfournirnom,prénom,matricule.Unmotdepasseestàconfigurerparlasuiteàl'aidedelacommandesuivante: ldappasswd -xWD cn=admin,dc=ephec,dc=be -S uid=HE111111,ou=students,dc=ephec,dc=be 5Technologiedel'Informatique

10 Surceserve ur,chaque motdepasseestcrypté/haché enSSHA.JesuisbiensûrconscientquetouslesutilisateursEPHECsontdéjàexistantssurl'ADdel'école.Jetrouvecependantimportantdemontrercommentajouteruneunitéàl'arbre. Unefoislesdifférentsutilisateurscréés,leserveurLDAPestprêt,ilattendlesrequêtesprovenantdemonserveurwebPython. 2.3.2 Labasededonnéesdistante Égalementexigéeparl'EPHEC,unebasededonnéesexterneàcelledemaplate-formeestnécessaire.Lesétudiantsetenseignantsnedevantpascréerunnouveaucompte,ilfautpouvoirfacilementallerchercherleursinformationsdebaseàl'aidedeleuridentifiant. Cesinformationssontassezsimples:prénom,nom,emailetdanslecasd'unétudiant,legroupeauquelilappartient. Commepourl'ActiveDirectorydel'EPHEC,jen'aipaspuavoirconnaissancedelastructuredelabasededonnées.Celle-cicontientdoncselonmoideuxtables. Laprem ière"USER"estlaprincipale avectouslesutilis ateursetle ursi nformationsrespectivescitéesprécédemmentavecleurmatriculeouidentifiantcommecléprimaireafinderespecterl'unicité. Laseconde,necontenantuniquementqu'unecolonne,meparaitmoinsprobablemaispasimpossible.Elleconservel'ensembledesgroupesouclassesdel'école,ceciafindepouvoirlesrécupérerassezfacilement. 2.3.3 Laplate-forme 2.3.3.1 LabasededonnéeslocaleAyantcommencémonprojetdansl'idéededevoircréerdesnouveauxutilisateurspourchaqueétud iantouenseignant,j' aidûmodifiermesplansparlasui te.Eneffet, MadameVromansouhaitepouvoirintégrercetteplate-formeausystèmedel'EPHEC.Ainsi,ilfautallerchercherlesdonnéessurunserveurdistanttelquedécritaupointprécédent.JeneprendsdoncplusencompteunetableUSERlocale,lesmatriculesviennents'ajoutervialesvariablessessionsdesconnexions.Lesidentifiantsutilisateursdansmabasededonnéesnesontpasdesclésétrangères,eneffet,iln'yapasdetablelesstockantconcrètement. Monsystèmesediviseencours,eux-mêmesdivisésenexercices.Chaquetentativepourunexercicespécifiquedelapartd'unutilisateurcorrespondàunesoumission.Unexercicepeutdonccontenirunnombreélevédesoumissions.

11 Laprem ièretablequejepeuxbrièv ementdécrire estdoncla tableCOURSE ,reprenantl'ensembledescours.J'aichoisilestermesanglaiscarjetrouvecelaplusagréableetplusintuitif.Ellecontientprincipalementletitre,labrèvedescription,l'identifiantduprofesseurprincipalducours,l'identifiantdulangagedeprogrammationchoisiouencorel'étatactuelducours.Ilenvademêmepourlesexercicesàladifférenceprèsquelesdescriptionssontstockéessurleserveurmêmeetnonenbasededonnées.Deplus,ilyal'identifiantducoursauquell'exerciceserapporte. ChaquesoumissionseretrouvedanslatableSUBMISSION.L'étatetladatedesoumissionsontbienévidemmentlesattributsclés.L'utilisateuretl'exerciceauxquelselleserapportesontégalementspécifiés. Jepeuxe nsuitevousparl erdesautrestablestellesqueFOLLOWS ouMODERATES.Lapremièrereprendlesétudiantsétantinscritsàuncoursenparticulier.Unétudiantpeutêtreinscritmanuellement,viasonidentifiant,ouviasongroupe,lui-mêmeinscrit.Lasecondetablereprendcettefois-cilesenseignantsayantdesdroitssurcertainscours. Pourterminer,destablesmoinsimportantestellesqueLOGIN,LANGUAGEouencoreROLEreprennentrespectivementladateetl'heuredeladernièreconnexiondel'utilisateur,leslangagesdeprogrammation disponi blessurlaplate-formeetlesnoms desrô lesdesutilisateurs(admin,professeur,étudiant). 2.3.3.2 LeserveurWeb J'aiimplémentéunserveurwebaveclelangagePythonpourdeuxraisons.Lapremièreestpersonnelleetsubjective.Eneffet,jen'avaisjamaisentenduparlerdeserveurwebautrequ'ApacheetPHP,j'enaidoncsaisil'occasion.Laseconde,quantàelle,vientdemonmaîtredestageMonsieurCombéfis.Ilm'aconseilléPythonpourlafacilitéd'implémentationdessocketsetdoncnotammentlaconnexionplusaiséeavecPythia. Poursefaire,j'aiutilisélemoduleBottlequi,aprèsavoirétéimporté,nenécessitequ'unesimplecommandepourlancerleserveurwebenmodeécoute.run(host='localhost', port=8080, debug=True, reloader=True,app=app) Lesparamètresdelafonctionrun()sontassezsimples."Reloader"signifiequ'encasdemodificationsdanslesfichiers,leserveurredémarreautomatiquement,enlesprenantencompte.

12 L'ensembledesfonctionnalitésdelaplate-formesontglobalementliéesmaisrépartiesdansdesfichiersPythonafindegarderlecodeclairetcohérent.Jenedécriraiiciqu'unepartiedechaquefichier. 1. Fichierserver.pyLeserveurBottleestexécutégrâceaufichierserver.py,touteslesrequêtesPOSTouGETvenantdel'interfaceutilisateursontredirigéesversleurfichierrespectif.Parexemple,larequêted'unecréationd'unexerciceoud'uncoursestenvoyéeverslefichiercreate.py.C'estégalementviacefichierserveurqueducontenuestenvoyéàPythiaetparconséquent,larépo nseyestégalementréceptionnée.Pour cetteconnexion ,j'utiliseu nsocketseconnectantauport9000,celuioùPythiaestpardéfautàl'écoute. Pourredirigerunerequêteverslabonnefonctiondufichierqui,àsontour,redirigeraverslebonfichier,ilfautvérifierlarouteempruntéeparlarequêteàl'aidedecettecommande: @route('/create/exercice/',method="POST")defcreate_exercice(course): Lesdeuxpremièrespartiesdulienformentuneroutestatiquealorsquelasecondepartieestdynamiqueetlavaleurs'ytrouvantpeutêtrealorsutiliséecommeargumentpourlafonctionliéeàlaroute. Avantderedi rigerune création,cefichie rvérifieégalementlavaliditédesparamètres envoyés.Eneffet,ilanalysechaqueélémentenvoyéenJSONetlescompareauxvaleursattendues.Encasd'erreur,lep rocessus s'arrêteetrenvoieunmessageàl 'interfaceutilisateurviaduJSON.Ilpermetégalementle téléchargementdesfichiersdessoumissions,soit chaquefichi erindividuellementsoit,après compression,l'ensembledessoumissionssousforme d'unearchiveZIP.Lorsdelaconnexiondel'utilisateurauserveurweb,ilyal'initialisationd'unesessionquipermettradelierdesvariablesàl'utilisateursurlefrontend. # Création de la session session_opts = { 'session.type': 'file', 'session.data_dir': './session/', 'session.auto': True, 'session.timeout':1800 } Unesessionestprogramméepourdurertrenteminutesmaximumeninactivité.Lecontenudelasess ione ststockédansundossier sessionsurleser veur.

13 2. Fichierfunction.pyL'ensembledesfonctionsutiliséesdanslesdiversfichiersPythonpourfaireinteragirlaplate-formesetrouventdanslefichierfunction.py.Ilestimportantdenoterqu'audébutdechaquefichierautrequeserver.py,lasessionactuellementinitiéeparcedernieresttransféréeafindepouvoirconstammentprendreencomptel'utilisateuractuellementconnectéàlaplate-forme.Lesfonctionsprincipalessontbienévidemmentlesfonctionsdeconnexionauxdifférentesbasesdedonnées.Ilfauteneffetpouvoirseconnecterpourenretirercedontnousavonsbesoin.§ Connect():seconnecteàlabasededonnéeslocale§ EPHECconnect():seconnecteàlabasededonnéesdistanteLorsd'uneconnexionvial'interfaceweb,onvérifieleloginentré.Sicelui-cicontient"HE»suivid'unesériedechiffres,ilserad'oresetdéjàconsidérécommeunétudiant.Lelogin"admin»,quirestemodifiable,serareconnuentantqu'administrateuràpleinpouvoir.Pourterminer,siaucundesdeuxcasprécédentsnes'applique,l'utilisateurseraconsidéréentantqueprofesseur.LesfonctionstellesqueisAdmin(),isTeacher(),isConnected()parlentd'elles-mêmes.Pourlereste,ilyamajoritairementdes"getters»telsquegetExercices()quirenvoietouslesexercicesetleursattributs,getAllTeachers(),getLastLogin(),getUser()etbiend'autresencore.Lafo nctiongetStudentsFor()estparticul ière,ellevapremièrementchercher touslesétudiantsexistantspourensuitelescompareraveclesétudiantsinscritsmanuellementàuncours(etnonvialeurgroupe).Danslecasoùunétudiantesteffectivementinscrit,ellel'ajouteàuneliste.Danslecascontraire,ellevérifieensuites'iln'estpasinscritvialesgroupesinscritsaucours.Lafonctionestimplémentéedesortequel'étudiantneserapascomptédeuxfoisdanslegroupedesinscriptions.3. Htmlgenerator.pyLefichierhtmlgenerator.pys'occupedegénérerl'htmlàrenvoyerviaJSONàl'interfaceutilisateur.Ceciseradavantageexpl iquéaupointco ncernantlefrontend.Eneffet, l'ensembledecefichiertraitantl'aspectvisuel,iln'estpasdansmonintérêtdeledécrireicimême.Encasd'i nactivitétr oplongueoudedéconnexionv olontaire,toute slesnavigationsjusqu'alorsautoriséesserontobligatoirementredirigéesverslapagedeconnexion,ceciafind'éviterl'utilisationd'unesessionnenousappartenantpas.

14 4. Create.pyAprèschaquevalidationparserver.pylorsd'unecréation,lecontenuduJSONesttraitédanscreate.py.Ilyaalorsdeuxfonctions:lacréationd'uncoursoucelled'unexercice.Danslecasd'uncours,c'estassezsimple.Latotalitédesparamètresencodésvontenbasededonnées.UnUID6dedouzecaractèresestgénéréetplacéentantquecléprimaireducoursàconditionquecelui-cin'existepasdéjà.Danslecascontraire,uneautrecléseragénérée.Lesmodérateurs,groupesetétudiantssélectionnéssontégalementsauvegardés.Danslecasd'unexercice,leprocessusestbienpluslongetpluscompliqué.Eneffet,créerunexerciceimpliquedecréerunetâchesurPythia,d'ycréerdiversfichiersscriptsPythonetdelancerunMAKEsurPythiaafinquelatâchesoitcompiléeparlesystèmepourenfinsupprimertouslesfichiersutileslorsdelacréationmaisdésormaisinutilesaprèscelle-ci.Ilestimportantdesoulignerquelecontexted'unexercice(sonénoncéensomme)seranonpasstockéenbasededonnées,maisbiendansunfichiersurleserveur.Lorsdudébutduprocessus,lescripts'assurequel'exercicen'existepasdéjàenvérifiantsoncheminabsolusurleserveur.Lechemindufichiercontexteestcommesuit:./CONTEXT/ID_COURSE/ID_TEACHER/ID_EXERCISE/ID_EXERCISE.descDanscemême dossier setrouveanswer.txtcontenantlecodecompletpro duitparleprofesseur.Lesdiversscriptsajoutésdansledossierdelatâcheserontdécritsdanslechapitredécrivantlacréationd'unetâche.Ceux-cisont,toutcommedanshtmlgenerator.py,construitsenfonctiondesparamètres reçusafindefairecorre spondrel'exercic eauxspécifi cationsencodées.SiPythiadevaitrencontreruneerreurlorsdelacompilationetcréationdel'exercice,unmessaged'erreurseraitrenvoyéetleprocessusseraitinterrompu.Encasderéussite,àlafinduprocessus,ilyauraàlafoisdesfichiersstockéscôtéserveur(description,paramètrespourlamachinevirtuelle,réponse,...)etàlafoisdesinformationsenregistréesenbasededonnées.6UniqueID

15 5. Modify.pyModify.pynepermetpasdemodifierl'entièretéd'unexercice.Eneffet,unexerciceétantcompiléparPythia,lesfichierssontalorsdanslesystème.Seuleslesvaleursprésentesenbasededonnéesetl'énoncésontmodifiables.Modifierlecodedel'énoncépourraitengendrerdesincohérences.Quandunétudiantréussitunexercice,siensuiteleprofesseurlemodifie, l'étudianta-t-iltoujour sréussil'exercice?Saso umissi onindiqueouialorsqu'actuellement,sonimplémentationn'estpeut-êtrepluscorrecte.Ledéroulement,quantàlui,estassezsimilaireàlacréationd'uncours.Lesvérificationssontidentiques.Ilyaégalementlapossibilitédechangerl'étatd'uncours.Pouvoirpasserlecoursde'public'à'caché'ouencore'supprimé'.6. Submissions.pyAprèsavoirreçularéponsedePythiaconcernantuneimplémentationpourunexercicedonné,server.pydélèguelestâchesàsubmissions.py.Lafonctionchecking()vapermettreàlafoisderegardersieffectivementl'étudiantaréussil'exercicemai ségalementd'automatiserunesauvegarde,ceciafindep ouvoirtoujoursretrouverladernièresoumissionfaite.LaréponsedePythiaseradécriteplusloin.Cettefonction-cirenverraunmessageadéquatàlaréussiteounondel'apprenant.Aprèscela,lafonctionsubmitted()estappelée,ellesechargedestockerenbasededonnéesl'identifiantuniq uedelasoumission,l'utilisateurd elasoumission,ladate ouencorel'état.Lecontenudelatentative,lui,eststockécôtéserveurdelamêmemanièrequeladescriptiondel'énoncé.Lechemindufichierdelasoumissionuniqueestcommesuit:./SUBMISSIONS/ID_COURSE/ID_TEACHER/ID_EXERCICE/ID_USER/ID_SUBMISSION.txtDanscemêmedossiersetrouvelefichiersavedcomprenantladernièresauvegardedel'utilisateur.

16 2.3.3.3 PythiaLeprincipalcomposantdemonproduitfinalestbienévidemmentlaplate-formePythia.Celle-cipermetdecréerdesmachinesvirtuellesavecunenvironnementspécifiqueafindepouvoirensuitelesexécuterdepairaveclestâches,quicorrespondentauxexercices.1. Créationd'unenvironnementLatâchefastidieusequ'estlaconceptiond'unsystèmedefichierssimple(SimpleFileSystem)impliquedetr ouverlespaquets nécessaires ettouteslesdépend ancespourl'environnement.Danslecasdel'environnementadéquatpourmaplate-forme,ilmefalluttrouverlespaquetspourinstalle rPythonetJava.LesUML7debasesu rPythia,son td'originepratiquementvides,necontiennentquelestrictminimumdunoyauLinux,ceciafind'avoirdesmachines lespluslégèrespossib le,permettant notammentdeleslancertrèsrapidement.LorsduMAKE,le sdiffér entspaquetsajoutés danslefic hierdeconfigurationserontinstalléssurlenoyau Linux.Aprè scela,notrefile systemestopératio nnel!Iles tdonc possibled'exécuterdescommandesPythonouJava.7UserModeLinux

17 2. Créationd'unetâcheLedossierd'unetâchecontientunemultitudedefichiersquejevaisvousdécrireetquisontégalementconçusparcreate.py,précédemmentexpliqué.L'entièretédecesfichierssetrouve,aprèsleMAKE,danslefilesystemdelatâche.Ilyadoncbiendeuxfilessystem:unpourl'environnementetunpourlatâche.• controlPremierfichierdelatâche,celui-cicontientl'uniquelignepermettantl'exécutiondelatâche.Eneffet,parunsimplechemin,ilappellelefichierShellcontenanttouteslesinstructionsUnixàexécuteràlachaine.Parexemplepourmestâchesgénériques:/ephec.sh• ephec.shLefichiercentraldelatâche,ilexécuterachaquefichierscriptoufichierJavaenfonctiondel'existencedel'unoul'autrefichier.J'expliquececiàl'aided'unecaptured'écran.

18 Lespremièreslignessontsimples.L'UMLnetrouvantpasautomatiquementJAVAdanssonrépertoire,jerajouteunchemind'accèsàceluidéjàexistant.Encequiconcernelesdroitsd'exécution,lamachinevirtuellenepeutpasexécuterlescommandesn'importeoù.Elledoitdonccréerundossiertemporaire,ydéplacertouslesfichiers.Ensuiteseulement,viennentlesétapesdelatâche.• Student.pyPremierfichierscriptdelatâche,cescriptestunchoixdemapart.J'aioptépourunepré-vérificationdecompilationenvérifiantsil'étudiantn'avaitpasplacédesidentifiantsinterditsouinutilestelsqueSystem.out.printlnouencoredeszonesdecommentaires.Jevérifieégalementquel'utilisateurabiencommencéàimplémenterlaclasseoulafonctionsicelaestdemandé.Lapré-vérificationpermetd'éviterdelancerlecompilateurJAVAqui,lui,estbienpluslent.Encasd'erreursdétectées,ellessontplacéesdanslefichierwarnings.txt• Warnings.txtSicefichierestinexistant,leprocessuspasseàlasuite.S'ilexiste,lecontenu(écritsousformeJSON)vaêtrerenvoyéparPythiaauserveurweb,quiàsontourlerenverraaufrontenddel'utilisateur.Pourqueducontenusoitrenvoyé,ilsuffitdel'envoyersurl'output,c'estpourcelaquej'utiliselacommandecat.• Files.pySecondscriptdelatâche.Saprincipalefonctionestdeplacerlecontenudel'étudiantdansl'éventue lcontenuquel'enseignantavaitdé fini.Lachain edecaractères:"@@@xxx@@@»permetd'indiqueroùlecodedel'étudiantserainséré.ImplémentationprofesseurSoumissionenvoyéparl'étudiant

19 Soumissionassemblée,envoyéeàlacompilation• Errors.txtLeséventuelleserreursengendréeslorsdelacompilationdunouveaufichierJavasontstockéesàleurtour.Encasd'erreur,c'estlefichiererrors.pyquiestappeléalorsquedanslecascontraire,onexécutelefichierclasscréélorsdelacompilationréussie.• Errors.pyCefichie rscriptsecharged'analyserchaqueligned'e rreurgénéréelorsdelacompilation.Sipossible,illesretranscritenfrançaisetdonnedespetitesastucesdetempsàautre.Delamêmemanièrequepourleserreursdepré-compilations,PythialesrenvoiesousformatJSON.Vulegrandnombred'erreurspossibles,jen'aipaseuletempsd'ajouterchaqueerreuràmesscripts.Lesprincipalesysont,ilestcependantpossiblequed'autressoientajoutéesprochainement.• Run-errors.pyÀl'in stardufichierprécéd ent,run-errors.pyanalyseligneparlig neleserreursgénéréescettefois-cilorsdel'exécution.Ilestdoncégalementprobablequetoutesleserreursnesoientpastraitées.Rappelonslefaitquecescriptn'estappeléquesideserreursd'exécutionsonteulieu.Dans lecascontrai re,lepr ocessusar riveàlafindufichierephec.shetPythi arenvoiealorsuniquementl'outputrenvoyéparlefichierJAVAquistipulesiouiounon,lesbonnesréponsesontététrouvées.Lecodeétudiantetlecodeprofesseursontsoumisàdesjeuxdetestsadéquatsenfonctiondes typesdesarguments.Encasde réponses identique s,lasoumissionestdéclaréeréussie.

20 3. FichierdeconfigurationÀchaquetâcheestassociéunfichierdeconfigurationdevantêtreluparPythia.CefichierestsousformatJSON.{ "environment": "java", "taskfs": "04546266456c/h.paul/86cdc5ec2db/86cdc5ec2db.sfs", "limits": { "time": 10, "memory": 32, "disk": 50, "output": 1024 } } Ilcontientl'environnementàexécuterainsiquelalocalisationdufilesystemdelatâche.Lesautresparamètressontceuxquiconfigurentlecôtétechniquedelamachinevirtuelle(tempslimited'exé cutionautorisé,mém oireviveallouée, mémoirephysiqueallouéeetlenombredecaractèresmaximumqu'ellepeutrenvoyer).Chaquefichierdec onfigurationassociérespe ctivement àsonpropreexercicesetrouvesurleserveurdanslemêmedossierquesonfilesystem.Pourbienfaireladistinction:Ø LefilesystemdelatâchesetrouvecôtéserveurdansundossierendehorsdePythia.Ø Lefichierdeconfigurationliéàlatâcheestégalementàcetendroit.Ø Lefilesystemdel'environnementJava+Python3setrouve,lui,auseindePythia.

21 4. ExécuterPythiaLaplate-formeopen-sourceécoute,pardéfaut,surleport9000.Poursefaire,ilfautlancerunequeue(unefile)etunnombreadéquatdepools,programmescapablesdelancerplusieursmachinesvirtuelles.Surcetteillustration,lefrontendreprésentelesdifférentsutilisateurspassantvialeserveurwebBottle.Leserveursecharged'envoyerlecontenuviasocketversPythiaetsafiledetâches.Chaquetâcheestalorsdistribuéeàunpoolquin'estpasoccupé.Danslecasoùaucunn'estlibre,latâchepatientejusqu'àpouvoirêtretransférée.Aprèstraitementparlamachinevirtuelle,lecontenurepasseparlaqueuequilerenvoieàsontourauserveur.Lancercesdifférentscomposantsestassezsimple.1) SepositionnerdansledossieroutdePythia;2) Lancerlacommandepourdémarrerlaqueue,quiécoutepardéfautsurleport9000./pythiaqueue3) Lancerchaquemachineaveclacommandesuivante:./pythiapool-tasksdir:"/SERVER/tasks/»Pardéfaut,lesfichiersdeconfigurationsontauseindePythia,or,dansmasolution,jelesplacesurleserveuren-dehorsdudossierprincipal,toutcommelesexercices.EncasdemiseàjourdePythia,lesexercicesneseraientdoncpassupprimés.

22 2.3.3.4 InterfaceUtilisateur-frontendCedernie rpointconcernantmaplate-formevadécrirel' expéri encevécueparlesdifférentsutilisateurs.Jevaisexpliquerlaquasi-entièretédesfonctionnalitésactuellementdisponibles.Ecoutantsurleport8080,nouscommençonsnotrenavigationparlapageconnexionàl'adressesuivante:127.0.0.1:8080oulocalhost:8080.Laprésentationseferasipossiblesurserveurdistant.• ConnexionNousavonsalorsfaceànousleboutonnousconnectantavecleserveurLDAP.Enfonctiondesidentifiantsr entrésetde leurexac titude,nousser onsredirigésversletableaudebord.Encasd'identifiantserronés,unmessagepertinentestaffiché.• TableaudebordLaprem ièreinterfaceapparaitalorsdyn amiquementsanschargementd 'unenouvellepageHTML.Eneffet,toutsebasesuruneuniquepagedontlecontenuchangeàl'aidedejQuery.Unebarredenavigationestégalementapparue,celle-ciresteraprésentetantquel'utilisateurresteconnecté.• CoursLelienverslescoursprésentsdanscettebarredenavigationpermetdepouvoirretourneràtoutmomentsurlalistedescoursdisponibles.Lecontenuprincipalestuntableauavectrireprenantlescours,stipulantleurtitre,leur(s)professeur(s),leurniveaudedifficulté.Pourdesutilisateursavecdesdroitsplusélevés,lestatutducoursestégalementvisible.- Unétudiantnepeutvoirquelescoursauxquelsilestinscritetdontlestatutestpublic;- Unprofesseurpeutajouteruncoursetvisionnerlescoursdontilestmodérateur.Cependant,lescourssupprimésluiserontmasqués.Lescourssontmodifiablesetuniquementsupprimablesentantquecréateur;- Unadminis trateurpeutvoirtouslescours,en ajouter,les modifieroules supprimer.

23 • AjouteruncoursCettepagen'estvisiblequepourlesenseignantsoulesadministrateurs.Lecréateurayantpleindroitsursoncours,ildoitfournir:- Letitre:maximumcinquantecaractères;- Lelangagen'estpasmodifiable,unlangagenepeuts'ajouterquemanuellementvialesystèmePythiaetnonparmaplate-forme.J'aidoncplacéleselectdanslebutdeprévoirunéventuelfuturavecd'autreslangagessurcelle-ci;- Unedescription,elledoitpouvoirdécrireenquelquesmotslecours,lesexercicesqu'ilcontient;- Lestatutducours(PublicouCaché);- Ajouterunétudiantmanuellementviasonmatricule,sonnomousonprénom;- Untableaur eprenantlesétud iantsd'oresetdéjàajoutésestaffich é(triautorisé);- Deuxtableauxconte nantlesgroupesin scritsetlesgroupes non-inscrits.Lesgroupessontinterchangeablesentreceux-ci;- Deuxtableauxcontenantlesprofesseursmodérateursetlesnon-sélectionnés.Lesenseignantssontinterchangeablesentreceux-ci.Encasd'e rreur,u nmessageadéquatapparaitsurlapage.Il appartientdoncàl'utilisateurdemodifierleschampsnécessaires.• ModifieruncoursCettepagen'estvisiblequepourlesenseignantsmodérateursducoursconcernéoulesadministrateurs.Elleestidentiqueàlapagedecréation,sicen'estqu'ellepossèdeunecontrainte.- Unprofesseurn'étantpaslecréateurducoursnepeutpasmodifierlalistedesmodérateurs.• SupprimeruncoursetleréafficherCetteoptionretranscritesouslaformed'unboutonn'estdisponiblequesurlapagedescoursetn'estvisiblequepourlescréateursd'uncoursettouslesadministrateurs.Unmessagedeconfirmationestdemandépourévitertoutemanipulationinvolontaire.Encasdesuppressioneffective,lecoursesttoujoursdisponibleenbasededonnéesetsurl'interfacedel'administrateur.Danslecasoùl'enseignantsouhaiteréaffichercecours,ildevracontacterparlui-mêmel'admin.Cedernierpourralefairesoitvialapagedemodificationenchangeantlestatutducourssoitviaunbouton.Lecoursrepassealorsenstatutcaché.

24 • ExercicesCetaffichagecontienttouslesexercicesdisponiblespouruncoursspécifique.Toutcommelescours,ilssontaffichésdansuntableausimilaireavecuneoptiondetri.Lecontenudutableauestcependantdifférentsurunpoint.Lesétudiantsnevoyantpaslestatutdel'e xercice, ilestremplacéparlestatutdeleuréve ntuellede rnièresoumissionpourcetexercice-là.Sil'étudiantl'adéjàréussimaisqu'ilcommettoutdemêmeuneerreurlorsd'unetentativepostérieure,l'exerciceseraconsidérécommenon-réussi.Ilfautsoulignerqu'iln'yaqu'unseulprofesseurparexercice,bienquel'ensembledesenseignantsmodérantlecoursyaittoustoutdemêmeaccès.- Unétudiantnepourravoirquelesexercicesquisontpublics;- Lesexercicesnesontpasentièrementmodifiables(cf.Modify.py);- Lesexercicessontsupprimables.Leprocessusestidentiqueàceluid'uncours;- Unprofesseurmodérantcecourspeutvisionnertouslesexercices,saufceuxsupprimés.Ilpeutenajouteretvoittouteslessoumissionsducours;- Unadministrateurabienévidemmentpleinpouvoir.• AjouterunexerciceÀl'instard'uncours,l'enseignantdoitfournirducontenu.Cependant,celui-ciestbienplusprécisetspécifique.Unmessaged'erreurapparaitsinécessaire.- Unintitulé:cinquantecaractèresmaximum;- Laclasseprincipaleetlafonctionprincipaledel'énoncé;Pourcesdeuxd erniersparam ètres,leprofe sseurdoitdécidersiouio unonl'étudiantdevralesfournirousil'exercicesedérouleraàl'intérieurdeceux-ci(cf.lesschémasdeFiles.py).Ildoitdonccocherounonlescasesen-dessousdechaqueoption.- Laliste deséventuelsargumentsdel afonctionprincipale(uniquementfournirletypedel'argument);- Ilfaute nsuitefou rnirlaconfigurationp ourlamachinevirtuelle(cf.Fichierdeconfiguration);- Lestatutpublicoucaché;- Leniveaudedifficulté(de0à5,lepasestde0.5);- Lecontexte quicorrespondàl'é noncédel'e xercice.Letextare aestmunideTINYMCEpourpouvoirdonnerunaspectplusagréableaucontexte;- Lecodecompletaveccommenomdeclasse"Teacher»afindepouvoirfaireladistinctionaveclaclassedel'étudiant;- Lapartiedecemêmecodequel'étudiantnedoitpasfournir(cf.lesschémasdeFiles.py)ainsiquelachainedecaractèresoùlecodedel'étudiantdoits'insérer.

25 • SoumissionsDisponiblepourtouslesprofesseursmodérantlecoursetlesadministrateurs,cettepagepermetd evisionnertouteslessoumissi onsdechaqueétudiantpourl'exercice choisi.Ladated ederniè reconnexionainsiquelesdate sdechaquesou missionetle urréussiteounonsontaffichées.Leprofesseurpeutalorschoisirdetéléchargerindividuellementunetentativedel'étudiantouplutôttouteslestéléchargersousformatZIP.Letableaupossèdelesoptionsdetrietderecherche.• StatistiquesIlestp ossible, pourlesprofesseursayantaccès ,devisionner quelquesstati stiquesconcernantunexerciceouuncours:- Lenombred'étudiantsinscrits;- Lenombredesoumissionspouruncoursouunexercice;- Lepourcentagederéussitevis-à-visdesétudiants;- Lepourcentagederéussitevis-à-visdessoumissions;- ...• ExerciceLapagelaplusimportanteestcelleoùlessoumissionsvontpouvoirêtreeffectuées.- Ilyal apossi bi litéde masquerl'énoncéafind'éviterd'avoirl'affichage tropencombré;- L'option"sauvegarder»estdisponible;- Chaqueenvoiengendreunesauvegarde;- Unprofesseurpeutchargerlessoumissionsd'unétudiantdonné;- Onpeutchangeràtoutmomentlethèmedesonéditeur.Lechoixeststockédansuncookievalableseptjours;- Zonedemessagespourleserreurs,lesastucesetlesconseils.

26 3. Difficultésrencontrées- Lapremièredifficultérencontréefuttoutsimplementl'environnement.J'étaisdansl'incapacitéd'installerunemachinevirtuelleouundualbootsurmamachine.Monordinateurbloquantlesdémarrag esautresquesurl'OSactueletlale nteurconsidérabledelavirtualisationm'empêchèrentdecommencerassezrapidementmontravail.Pe ndantcetemps,jef isdesrecherchesdedocumen tationsqui mepermirentdemieuxdébuteru nefoisp aré.Eneffet,après plusieursjournées detentatives,jefinisparréussiràdébloquerl'UEFI8pourenfininstallerunLinuxmepermettantdedébutermontravail.- J'aiétépendantdelonguessemainesdansledouteconcernantlesutilisateursdemaplate-forme.Fallait-ildesnouveauxcomptes?Pour rais-jeaccéder àl'ActiveDirectory?Desincertitudesassezdéconcertantessurlelongterme.- TouslesmodulesnesontpasoptimauxsurPython3,parexemple,lemoduleLDAPestassezbrouillonetnepermetpasdefairecequed'autresmodulespermettent.Or,j'aicher chépendantd esheuresavantdetrouver commentfaire.Lafau teàquoi?Troppeudedocumentations.J'aidonccontactémoi-mêmelecréateurdumodule,mailauquelilm'aréponduavecbeaucoupdesympathie.- Pythiaétantassezpe uconnu, leserreurs rencontrées etlesmessagesd'erre ursinconnusauwebfurentdifficilesàdéchiffrer.- Jen'aiutiliséungestionnairedeversionquetrèstardivement.Decefait,j'aiprisplusdetempsàréécrirequelquechosedeperdualorsqu'aveccetoutil,celaauraitétébienplusrapide.8UnifiedExtensibleFirmwareInterfacedéfinitunlogicielintermédiaireentrelemicrologiciel(firmware)etlesystèmed'exploitation(OS)d'unordinateur.Cetteinterfacesuccèdesurcertainescartes-mèresauBIOS.

27 4. Améliorations- Actuellement,lacréationestgénérique. Ellen epermetdoncquedes exercice ssimples.Ilestcependant possib ledecré ermanuellementdesexerc icespluscomplexesenécrivantlesscriptssoi-même.Uneaméliorationàapporterseraitdoncd'élargircettegénéricité.- Lamodificationtechniquedesexercices.- Ajouterplustardd'autres langagesàlaplate-formeseraitpourm oiuneréelleréussite.- Plusdestatistiquespertinentes.- Unmoduleanti-plagiatpourdesexercicesplusimportants.- Pouvoirimporterdeslibrairies.- Pouvoirimporterd'autresclasses.- Mettredescontraintestemporellesoudescontraintessurlenombredesoumissions.- Rendrelesexercicesunpeuplusludiques,plusattrayants.

28 5. ConclusionAprèsdenombreusesheuresdeprogrammation,jesuistoujoursaussicontentdemapropositiondeTFE.J'aimeeneffeténormémentl'idéed'avoirlapossibilitédefournirunoutilàl'écoleoùj'aiapprispasmaldechosesdanscertainsdomaines.Dûaufaitqueleurproduitfinalneserapeut-êtrejamaisutilisé,plusieursétudiantsdemonannéetrouventmoinsdemotivationàréaliserleurtravail.Pourmapart,savoirquedesétudiantsaurontpeut-êtrelapossibilitéd'utilisermaplate-formeestunemotivationsupplémentaire.Celamedonneenvied'apporterdenombreusespossibilitésàmonproduit.Aprèslaremisefinaledemontravail,j'espèregardercontactaveclesenseignantsétantintéres sésparmontravail.J'espèreque ceux-cimecon tacterontafi ndepouvoirapportertelleoutellecorrection.Ilesteneffetpossiblequemonproduitnesoitpasoptimalpourtouslesexercicesqu'ilssouhaitentproposeràleursétudiants.Voirmontravailêtreintégréàl'enseignementdelaprogrammationàl'EPHECseraitpourmoiuneréelleréussite.Encequiconcernelesacquis,j'aibeaucoupapprisnotammentdansl'utilisationdeLinuxetsesterminauxUnix.Pythonétantunnouveaulangagepourmoi,jepeuxdirequecelangageestdésormais monpréf éré,celuiquejeprônerai sdanslecas deconceptionsd'applications.Malgréladécouverted'unnouveautypedeserveurweb,jemaintiensmapréférencepourAPACHEetlePHPentantquelangagedeprogrammation.Pythiarestepar-dessustoutunprojetd 'avenir. Eneffet, suiteàmongranddévouementlorsdemonstageconcernantsonaméliorationetmamotivationàdomicilepourmeneràbienmontravaildefind'études,MonsieurCombéfissouhaitegardercontactavecmoiafin depouvoir, plustard,étab lirune futurecollaborationdanslebu tdedévelopperdavantagePythiaetsescomposants.Unautrevéritableacquisesttoutsimplementlagestiondutempsetlerespectd'unplanning.J'aiprissoindebienrespectermeséchéancespersonnellesconcernantdespartiesplusoumoinsimportantesdemonprojet,quitteàtravaillerbienplustardcertainsjours.Pourlapremièrefois,jen'aipassentiunréelmanquedetempsoudustresspourlaremised'untravail.Pourterminer,aprèscestagefructueuxetcetravaildefind'étudescaptivant,jesuisd'oresetdéjàcertaindevouloirfairedelaprogrammationmonfuturmétier.Jepossèdeunevéritablepassionpourlaconceptiondeprogrammes,d'algorithmesouencorelarésolutiondeproblématiques.

29 6. Webographiev ThePythiaProject-www.pythia-project.org(consultéenfévrier2014)v BuildinganAddressBookwithOpenLDAPwww.onlamp.com/pub/a/onlamp/2003/03/27/ldap_ab.html(consultéenmai2014)v HowtocreateanewuserinOpenLDAPmindref.blogspot.be/2010/12/openldap-create-user.html(consultéenmai2014)v Bottle:PythonWebFramework-bottlepy.org/docs/dev/index.html(consultéen2014)v davispuh/MySQL-for-Python-3-https://github.com/davispuh/MySQL-for-Python-3(consultéenmars2014)v WelcometoPython.org-https://pypi.python.org/(consultéen2014)v StackOverflow-stackoverflow.com(consultéen2014)v MySQLDocumentation-dev.mysql.com/doc/(consultéenmars2014)v jQueryUI-jqueryui.com(consultéenmai2014)v jQueryAPIDocumentation-api.jquery.com(consultéenmai2014)v W3SchoolsOnlineWebTutorials-w3schools.com(consultéenmai2014)v Mottie/tablesorter-https://github.com/Mottie/tablesorter(consultéenmai2014)v CodeMirror-codemirror.net(consultéenfévrier2014)v Bootstrap-getbootstrap.com(consultéenmars2014)v RegExr:Learn,Build,&TestRegEx-regexr.com(consultéen2014)

30 7. AnnexesI. Schémarelationnel

31 II. Diagrammed'activité:Soumissiond'unétudiant

quotesdbs_dbs32.pdfusesText_38
[PDF] Syndicat des infirmières et infirmiers du Nouveau-Brunswick

[PDF] LES CAHIERS DU PÔLE ALIMENTAIRE. Chantier prioritaire 2013 PANORAMA DES RÉGIMES DE PRÉVOYANCE DES BRANCHES DE L ALIMENTAIRE

[PDF] REGLEMENT DU SERVICE ANNEXE D HEBERGEMENT. - FONCTIONNEMENT DU SERVICE DE RESTAURATION - RESTAURANT SCOLAIRE et CAFETERIA

[PDF] Une série de baccalauréat conforme

[PDF] REGLEMENT COMPLET DU JEU SANS OBLIGATION D ACHAT «DPAM FAIT SON CARNAVAL» ORGANISE PAR LA SOCIETE DU PAREIL AU MEME DU

[PDF] Baccalauréat en enseignement du français langue seconde

[PDF] Nos permanences : Du lundi au vendredi de 9h-12h et 14h-17h30 Adresse mail :

[PDF] APRÈS LA SECONDE. CIO de Montrouge 24, rue Arthur AUGER

[PDF] LE CONTEXTE LA PRESENTATION DU PROJET

[PDF] Formation réalisée en partenariat. 36 rue du Parc de Clagny VERSAILLES Tél. : Fax : Internet :

[PDF] LES GRILLES DE SALAIRES 2013 Dans la Fonction Publique Hospitalière

[PDF] COMMUNE DE FERNEY-VOLTAIRE CAHIER DES CHARGES

[PDF] L apprentissage Jeudi 30 janvier 2014, 9h00 à 16h00 DDEC

[PDF] NUMERATION MATERNELLE. La partie sur la numération s'intitule : «Approche des quantités et des nombres».

[PDF] AVIS DE MARCHÉ FNS. La procédure d'achat du présent avis est couverte par l'accord sur les marchés publics de l'omc : Non