User Tools

Site Tools


proj_cmi_l2:start

Licence Sciences, Technologies, Santé / Parcours MISMI

L2 CMI ISI - 4TIN401U Projet de programmation

Simplicity is prerequisite for reliability

Edsger Dijkstra


Quelques idées

  • Nos premiers échanges serviront à cerner les compétences qui sont en place et à déterminer l'ambition qu'il est légitime de se donner pour ce projet.
  • Le cours s'appuiera sur le langage de programmation python, et vraisemblablement javascript.

Le projet retenu consistera à:

  • Construire une application web permettant de récupérer du contenu dynamique disponible sur le web
  • Stocker et traiter le contenu
  • Utiliser différents outils, des exemples:
    • Analyse et visualisation du contenu, à l'aide de librairies comme d3js
    • Utilisation d'outils de suivi de projet de programmation (github)

  • Un tel projet (ou similaire) nécessite d'acquérir une méthode de travail:
    • Savoir trouver des librairies tiers (évaluer l'opportunité, comprendre la technicité, mesurer l'effort d'intégration), savoir les installer sur son poste de travail
    • Savoir trouver la documentation, et savoir l'ingurgiter (!)
    • Savoir agencer différents langages, différents formats de données (html, csv, json, etc.), différents protocoles et procédures de communication entre les applications (client / serveur, base de données, etc.)
    • Savoir organiser son code, le partager lorsqu'on travaille en équipe

Séances

  • 18/01 Introduction (2 x 1h20)
    • Installation d'un environnement de développement autour de python et pip
    • Application client - serveur, première notion
    • Exercices - Un serveur avec python/flask
  • 30/01 Extraction: premiers pas (1 x 1h20)
    • HTML, arborescence et DOM
    • python/lxml
    • Manipulation de chaînes de caractères, utf8
    • Fichier et stockage

Epreuve de contrôle continu du 27/04

  1. L'acronyme MVC (du modèle MVC) correspond à Modèle - Vue - COntrôleur.
  2. Dans le modèle MVC, le modèle est effectivement responsable de la gestion des données.
  3. Dans une application web MVC reposant sur le modèle MVC, la vue est réalisé à l'aide de HTML, javascript et CSS
  4. L'avantage majeur de l'approche MVC est d'apporter au système la modularité (bonne séparation des “tâches” dans des modules distincts).
  5. Flask est une librarie python qui permet de gérer les requêtes venant d'un navigateur. (Flask n'offre rien en particulier pour échanger avec une base de données.)
  6. Qu'entend t-on par “client” et “serveur” ? L'application est accessible à l'utilisateur au travers de la partie client (dans notre cas portée par un navigateur), le serveur est en quelque sorte un moteur de calcul distant au service de l'application et qui répond à des requêtes formulées par le client. Le client repose souvent sur un dispositif sans mémoire ou sans capacité de calcul qui résident coté serveur.
  7. L'utilisation de contenu web dynamique ?
    • La possibilité d'afficher du contenu obtenu depuis une base de données.
    • La possibilité de lier votre contenu à des pages situées ailleurs sur le web.
  8. Le script effectue:
    1. On charge en mémoire le contenu de la page sous la forme d'un fichier.
    2. On lit le contenu du fichier (texte) dotn on suppose qu'il est encodé selon la norme utf8
    3. Le document HTML, sa structure (son DOM), est recouvré à partir des balises qui sont présentes dans le texte.
    4. On recherche dans le DOM les attributs href des éléments se trouvant le long d'un chemin passant par les balises main, suivi immédiatement de div et suivi immédiatement de a.
    5. On lit et construit à nouveau (pour ré-initialiser) le document HTML.
    6. On va cette fois chercher le texte se trouvant à l'intérieur d'une balise h1, elle-même le long d'un chemin passant par les balises main, suivi immédiatement de div, suivi immédiatement de a, suivi immédiatement de article et suivi plus loin d'une balise h1.
  9. L'ajout des auteurs des unes exige de créer une nouvelle entité auteur dans la base de données, donnant vraisemblablement lieu au stockage d'attributs décrivant l' auteur(id, nom, prénom) Elle exige aussi de stocker les liens entre les auteurs et les unes.
    1. Si on fait l'hypothèse qu'une une a un seul auteur, il suffira d'ajouter un attribut auteur_id en clé étrangère dans la table des unes faisant référence à la clé primaire id d'un auteur.
    2. Si on prend en compte que les unes peuvent avoir plusieurs auteurs, il faudra alors créer une table distincte stockant l'association une_id, auteur_id.
  10. Le croquis attendu doit rendre l'architecture MVC de l'application en précisant les responsabilités des trois volets M, V, et C, et éventuellement de sous-modules.
    1. Par exemple, côté du modèle de données un sous-module pour extraire/stocker les données dans la base, et un autre sous-module pour effectuer des calculs statistiques (fréquences de mots) sur les unes.
proj_cmi_l2/start.txt · Last modified: 2017/04/27 17:53 by melancon