Browse Source

Refine report : less technical

Olivier Marty 8 years ago
parent
commit
127485bd0f
1 changed files with 35 additions and 59 deletions
  1. 35 59
      rapport/rapport.tex

+ 35 - 59
rapport/rapport.tex

@@ -28,7 +28,7 @@ Pour cela on se connecte à son agenda (Google Calendar), et on analyse ses emai
 (Gmail) pour prévoir ses déplacements, mais d'autres sources pourrait être
 ajoutées, de façon modulaire.
 Pour chaque événement, on géolocalise l'adresse avec l'API d'OpenStreetMap,
-puis on cherche les moyens de transport utile pour ce rendre à ces coordonnées~:
+puis on cherche les moyens de transport utiles pour ce rendre à ces coordonnées~:
 lignes passant par une station proche, stations de vélos proches...
 En cas de problème sur l'un de ces moyens de transport, l'utilisateur est
 notifié par le medium de son choix (email, ou sms via l'API de free mobile).
@@ -37,73 +37,54 @@ notifié par le medium de son choix (email, ou sms via l'API de free mobile).
 
 Le projet est divisé en trois principales composantes :
 
-\subsection{La classe Event}
+\subsection{Les événements}
 
-Cette classe représente un événement auquel l'utilisateur va se rendre.
-Elle présente quatre attributs : id, date, location, et description.
-Les instances sont produites à partir de deux sources : Google Calendar et
+Les événements auquel l'utilisateur va se rendre sont représentés par un objet
+contenant un identifiant unique, la date, l'addresse, et une description.
+Ces événements sont récupérés à partir de deux sources : Google Calendar et
 Gmail.
-
-Les seuls mails aboutissant à la détection d'un événement sont ceux de la forme :\\
+Cependant les seuls mails aboutissant à la détection d'un événement sont ceux de la forme :\\
 "Rendez-vous\\
 le 22/02/2016 08h45\\
 à Université Paris Diderot\\
 pour le cours de WDM"
 
 
-\subsection{La classe Source}
-
-Cette classe représente une information provenant d'internet et qui concerne
-l'état d'un moyen de transport.
-Chaque instance doit fournir la méthode problem() (renvoie true si le moyen de
-transport encontre un problème), et les attributs id (identifiant de la source)
-et message (descriptif du problème).
+\subsection{Les sources de trafic}
 
-Nous avons implémenté plusieurs sources~: l'état des lignes de la RATP, du
-Transilien, et le nombre de vélos et de places libres dans les stations de
-jcdecaux\_vls (vélos en libre service disponibles dans de nombreuses villes).
+Une information concernant l'état d'un moyen de transport est représenté par un
+objet contenant un identifiant unique, un message, et un attribut booléen qui
+determine si le moyen de transport présente un problème.
 
-\paragraph{ratp\_trafic} Les données sont récupérées en scrapant l'url
-\url{http://ratp.fr/meteo/}.
-En effet la ratp ne fournit aucune API publique dynamique (l'API statique a
-cependant été utilisée pour obtenir la localisation des stations et les lignes
-les traversant).
+Les données proviennent de différentes sources :
+\begin{itemize}
+  \item \textbf{État des lignes de la RATP} Les données sont récupérées en scrapant l'url
+  \url{http://ratp.fr/meteo/}.
+  En effet la ratp ne fournit aucune API publique dynamique (l'API statique a
+  cependant été utilisée pour obtenir la localisation des stations et les lignes
+  les traversant).
 
-\paragraph{transilien} Les données sont récupérées en scrapant l'url \url{http://www.transilien.com/info-trafic/temps-reel}.
-La SNCF fournit une API pour chercher des itinéraires, ou avoir les prochains
-horaires, mais pas, à notre connaissance, pour avoir des informations de trafic.
+  \item \textbf{État des lignes Transilien} Les données sont récupérées en scrapant l'url \url{http://www.transilien.com/info-trafic/temps-reel}.
+  La SNCF fournit une API pour chercher des itinéraires, ou avoir les prochains
+  horaires, mais pas, à notre connaissance, pour avoir des informations de trafic.
 
-\paragraph{jcdecaux\_vls} Les données sont récupérées via l'API de jcdecaux\_vls
-(voir \url{https://developer.jcdecaux.com/#/opendata/vls}).
-
-\paragraph{} L'analyse des fichiers HTML ou JSON téléchargés est effectuée à
-l'aide de la bibliothèque Python
-\href{http://www.crummy.com/software/BeautifulSoup/bs4/doc/}{BeautifulSoup4}.
-Nous avions en premier lieu écrit des transformateurs en xquery pour formatter
-toutes les données dans un schéma commun, mais l'utilisation d'un logiciel
-externe (Saxon) rendait chaque requête très lente, d'autant que le résultat
-n'était pas un objet natif Python.
+  \item \textbf{Vélos en libre service jcdecaux} Les données sont récupérées via
+  l'API jcdecaux\_vls (voir \url{https://developer.jcdecaux.com/#/opendata/vls}).
+\end{itemize}
 
 \subsection{La boucle principale}
 
 Cette boucle articule les différents modules entre eux.
-Elle fonctionne à l'aide d'un tas qui contient des instances de la classe Event
-représentant les prochains événements dont le programme a connaissance.
-De temps en temps, elle appelle les générateurs d'événements (module event) pour
-vérifier si de nouveaux événements sont connus.
-Lorsqu'un un événement arrive à échéance (dans l'état actuel du code on vérifie une
-demi-heure avant l'échéance), on cherche la localisation de l'événement, puis
-une liste d'identifiants de sources qui peuvent être utiles pour ce rendre à cet
-événement (lignes passant auprès du lieu, stations vélos proches).
-Pour cela elle trie les sources pas distance croissante, prend les deux meilleures
-ainsi que celles qui sont à une distance comparable (au plus 100 mètres de plus
-que la plus petite distance),
-puis ne garde que celles qui sont moins de $2$km.
-Le module source récolte alors les informations, et si un problème est soulevé
-par l'une des sources, une notification est envoyée.
-
-
-\section{Fichiers python}
+Elle consomme les événements depuis les sources, qu'elle rafraichit toutes les
+$30$ secondes.
+Une demi-heure avant qu'un un événement arrive à échéance, on cherche la
+localisation de l'événement, puis on cherche les sources qui peuvent être utiles
+pour ce rendre à cet événement (stations proches).
+Le module source récolte alors l'état de ces sources, et une notification est
+envoyée pour chaque problème soulevé.
+
+
+\section{Programmes python}
 
 Afin d'éxecuter un programme, il faut lancer la commande
 \texttt{python3 fichier.py}.
@@ -114,8 +95,7 @@ Il faudra peut-être installer les dépendances python :
 il demandera l'autorisation de se connecter aux API Google Calendar et Gmail.
 
 \paragraph{demo.py} Lance une démonstration qui ignore les événements mais donne les
-notifications à partir d'une adresse. Il faut souvent appuyer sur
-\texttt{<enter>}
+notifications à partir d'une adresse.
 
 \paragraph{find.py} Ce fichier fournit une aide
 pour trouver les identifiants utilisé en interne pour désigner une source.
@@ -127,10 +107,6 @@ n'était pas dans un format qui nous convenait, en plus de peser plus de 500Mo~!
 Ce fichier extrait de ces données la liste des stations et les lignes les
 traversant, le fichier final ne pesant que 500Ko.
 L'url ou l'on peut trouver les données brut est indiqué en
-commentaire.\\\\
-
-
-\small{Note: Après l'oral nous avons changé la démo pour afficher une carte avec un marqueur par
-source.}
+commentaire dans ce fichier.
 
 \end{document}