Wave-it

dimanche 12 mars 2017

Open Data : places libres dans les parkings de Montpellier

Depuis quelques années, on entend pas mal parler d'open data, ces fameuses données que les organismes publics (ou, plus rarement, les entreprises privées) publient sur internet, en libre accès, sans redevance nécessaire.

Il se trouve que la métropole de Montpellier a libéré en début d'année une donnée "temps réel" assez intéressante : le nombre de places libres dans certains parkings du centre-ville. Donnée assez pratique en période de soldes.

Voici donc une réutilisation (que j'ai faite entre deux révisions d'examens ;) ) pour situer les parkings concernés :

Carte des parkings

Voir la carte

Le code couleur est totalement arbitraire, mais reste assez classique :

  • Vert : c'est libre !
  • Orange : il reste entre 15% et 40% de places libres.
  • Rouge : moins de 15% de places libres.

Pour l'instant, les parkings concernés sont les suivants :

  • Parking Antigone
  • Parking Comédie
  • Parking Corum
  • Parking Europa
  • Parking Foch
  • Parking Gambetta
  • Parking Gare
  • Parking du Triangle
  • Parking Arc de Triomphe
  • Parking Pitot

En espérant que d'autres parkings, comme celui du Polygone (le centre commercial) soient intégrés au système plus tard.

dimanche 11 décembre 2016

Agenda Polytech Montpellier : premier projet, premières galères

Quand je suis entré en PeiP Montpellier, le "Parcours des écoles d'ingénieur Polytech", la prépa intégrée de mon école, le fait que l'emploi du temps change chaque semaine, contrairement au lycée, était un premier changement radical. Bon, il n'y a pas eu que ça (#Physique #Chimie #AmphisDe150, entre autres), mais c'est ce premier point qui concerne le premier article de ce blog. Vous êtes toujours là ?

Pour gérer leurs emplois du temps, les universités de France et de Navarre utilisent en très grande majorité ADE Campus, qui est un progiciel dédié à ça, et vraiment complet. Le seul reproche que l'on pouvait (et qu'on peut vraisemblablement toujours) faire à ce logiciel est que le visualiseur côté étudiant est pensé à 100% pour ordinateurs. Sur smartphone, il est rare de voir apparaître un menu. Et si voir celui-ci se charger relevait de la chance, pouvoir cliquer dessus relevait du miracle.

Bref. J'ai commencé l'enseignement supérieur en 2012, et déjà, nous les étudiants utilisions essentiellement nos smartphones pour organiser notre planning, etc. C'est encore plus vrai en 2016 d'ailleurs, et la tendance se poursuit.

Après un semestre à imprimer l'emploi du temps toutes les semaines, ou le charger dans Google Agenda le dimanche soir, j'ai décidé de prendre mon courage à deux mains et de créer une fichue version mobile, pour trouver plus facilement mon fichu amphi pas chauffé en hiver de ce fichu cours à 8h du (fichu) matin. L'agenda pour Polytech Montpellier était sur les rails.

Comment ça fonctionne

C'est une question qu'on m'a déjà posé souvent. Si vous lisez ce billet, c'est peut-être parce que je vous ai invité à le lire, en fait. ;)

Depuis le début, l'agenda Wave-it pour Polytech utilise la fonction d'export vers le format .ics d'ADE Campus. Le site télécharge simplement tous les créneaux apparaissant sur l'emploi du temps dans un gros fichier, contenant des informations utiles à chaque ligne.

Exemple d'un fichier ICS

La partie surlignée en bleu est un évènement. Vous pouvez voir qu'un évènement commence par une ligne BEGIN:VEVENT, est suivi par plein de propriétés (nom du cours, heures de début/fin, salle, nom de l'enseignant ...), et se termine par une ligne END:VEVENT. L'agenda va ensuite analyser ligne après ligne pour construire chacun des évènements, et y appliquer des traitements spécifiques.

Les premières versions téléchargeaient le fichier .ics correspondant à une section et effectuait l'analyse dans la foulée, et ce, à chaque fois qu'un visiteur demandait l'emploi du temps d'une section. Une opération qui prenait un temps de fou, et qui faisait bosser le serveur pour rien. De plus, à l'époque, le site de l'université, où était hébergé ADE Campus, tombait souvent en rade, ce qui faisait que mon site était aussi impacté. Bouh.

Le système de cache

J'ai donc décidé de créer un système de cache maison, toujours actif à l'heure actuelle, mais modifié pour prendre en compte certains ajouts.

  • Primo, le fichier .ics n'est re-téléchargé qu'une fois par heure avec une tâche CRON afin d'éviter d'impacter les visiteurs.
  • Secundo, l'analyse du fichier .ics est, également, faite une seule fois par heure. Un planning peut facilement atteindre 5000 lignes, et avec 24 plannings à gérer, on peut aisément imaginer la charge de travail.
    • Avant, un fichier .html était généré pur chacun des plannings, et ce fichier était fourni tel quel aux visiteurs. Instantanément.
    • Aujourd'hui, l'analyse du fichier .ics renvoie une structure .json, facile à analyser en PHP. La génération est faite côté serveur pour chacun des visiteurs, en très peu de temps.

Un autre avantage du cache est de pouvoir résister aux pannes du serveur du site de l'université, donc de pouvoir profiter de la redondance des informations. C'est ce qui me permet de profiter de pics de fréquentation certains matins.

Le bazar technique derrière

Je dois l'avouer, il s'agit de l'un de mes premiers projets web. C'est fait à titre purement personnel, sur mon temps libre, n'a pas été noté, et ne m'a pas permis de recevoir un quelconque avantage (ou goodies) de la part de Polytech. (J'ai bien le tee-shirt de l'école, fourni aux journées portes ouvertes, mais en taille XXL, alors que je fais du XS, c'est ridicule.)

Un peu d'histoire. Ce projet a démarré sans trop d'ambition derrière, avec mes connaissances de 2012 super limitées sur le sujet. Je suis donc parti sur du PHP (pur), sans framework. Même le CSS était totalement personnalisé. (Good ol' days !) C'était moche, un peu buggé avec certains cours à horaires ou salles exotiques, mais ça fonctionnait plutôt bien dans l'ensemble.

Au fil des années, j'y ai rajouté un framework CSS nommé MaterializeCSS, fortement inspiré par le Material Design de Google. Quelques couleurs sont venues étoffer les plannings, avec par exemple du rouge vif pour les examens. Avec toujours un rappel en tête : ce site est fait pour les smartphones, alors il faut que le résultat soit irréprochable sur les petits écrans !

Pour l'hébergement, c'est du mutualisé classique. Donc limité à PHP.

L'évolution prévue

Je m'occupe de l'agenda Wave-it que très occasionnellement, pour tout avouer. J'ajoute des trucs de temps en temps, au gré de mes envies, sans vraiment de prise de tête.

On me demande très souvent de rajouter la vue par semaine, "comme sur Passific", mais ce n'est pas quelque chose qui risque d'arriver de si-tôt.

  • Tout d'abord, pour avoir la vue par semaine, Passific est très bien pour ça !
  • Ensuite, parce que faire ça risquerait de porter atteinte à l'objectif "navigation sur smartphones" (si vous avez des idées pour afficher correctement un emploi du temps complet sur un petit écran, je suis preneur !).
  • Dernièrement, je ... manque de compétences là dedans. Il ne semble pas exister de librairie JS (ou autre ?) permettant de gérer tant d'évènements, avec certains qui se chevauchent, etc, sans perdre l'affichage mobile. Faire son propre script faisant ça serait tentant, mais très compliqué vu tous les cas bizarres que l'on peut rencontrer. Passific utilise les images à imprimer fournies par ADE Campus, qui n'a donc pas ce problème.

Une chose qui arrivera pour quand j'aurais un week-end 100% libre : la réécriture du code avec le framework PHP CodeIgniter. Niveau utilisateurs, rien de bien visible dans l'immédiat, mais de mon point de vue, bien plus de facilités à écrire de nouvelles choses ! Je sais que certains profs utilisent mon site pour leurs classes, et j'aimerais pouvoir supporter également leurs plannings.

PeiP ? Polytech ?

Pour la fin ... Il se trouve que j'ai commencé ce site quand j'étais en PeiP. C'était la seule section supportée par mon site.

Et puis, il se trouve que je suis rentré en IG en 2014. Tout naturellement, j'ai voulu gérer les sections de l'école, mais un souci important est apparu : les emplois du temps des PeiP et des Polytech sont gérés sur deux sites différents, avec deux versions différentes d'ADE Campus, avec deux formats de fichiers distincts.

J'ai maintenu pendant un an les deux versions. Durant l'été 2015, j'ai décidé d'abandonner le support des emplois du temps des PeiP pour me concentrer sur Polytech. Les statistiques de Google Analytics ne justifiaient pas que j'y passe plus de temps, surtout que je n'avais plus de contact parmi les prépa pour faire la publicité de mon site.

Il semblerait que le site de l'université utilise désormais la même version d'ADE Campus que Polytech, ce qui pourrait permettre un retour des PeiP sur le planning. Yeah !