Tags:
create new tag
, view all tags

Stage de Loic Gasiorowski - IUT Charlemagne Nancy - [4/04/16 au 10/06/16]

Important : cette page est réservée au suivi du stage, merci de ne pas la modifier

Informations générales pour les stagiaires

Pour toute information concernant ce stage : contacter Thomas B. et Sébastien

Sujet

Documents de travail

Bibiliothèques/outils

Stage (avril - juin 2016)

Avril

Lecture des standards IVOA

Choix (ou développement) des librairies d'accès aux services CS, SIA, SSA, TAP

Définition de l'architecture (schéma de la base, stratégie d'interrogation du registry et des services individuels)

4 :

  • Accueil et visite des différents bâtiments
5 :
  • Mise en place poste de travail, Wiki, SVN
  • Renseignements sur le fonctionnement de l'OV
  • Tutoriels sur les différents outils (Aladin, ...)
6 :
  • Tutoriels sur les différents outils (Aladin, topcat, ...)
  • Renseignements sur l'architecture du système, le protocole OAI-PMH
7 :
  • Etude du service et rédaction de diagrammes expliquant le fonctionnement
  • Recherches sur l'architecture de la base de données
8 :
  • Premiers accès au XML en JAVA à partir d'une URL fixe
  • Récupération de toutes les ressources et création des requêtes SQL pour les ajouter à la table
  • Dissociation des Capabilities ConeSearch, SIA, etc...
  • Problème de requête sur le ConeSearch
11 :
  • Fonctionnement des ConeSearch avec les bonnes URLs
  • Résolutions de problèmes lorsque les URLs étaient différentes entre les requêtes
  • Début de simplification du code en utilisant XPath
12 :
  • Récolte entièrement faite avec XPath
  • Création des listes contenant les ressources, les ConeSearch, etc...
  • Création de la base de données
  • Ajouts des valeurs des listes dans la base de données
13 :
  • Correction d'un problème lors de l'ajout de données dans la base, lorsque la chaine contenait des guillemets
  • Commencement des tests sur la pertinence des ressources
14 :
  • Vérification lors de l'ajout d'une ressource dans la base de données si elle n'est pas déjà présente
  • Récupération d'attributs en plus pour les différentes ressources
  • Test du service de la ressource au moment du harvest
  • Création d'un log qui écrit à chaque harvest le nombre de ressources, de ConeSearchs, de SIA et de SSA collectés
  • Création de Target et ajout de Targets dans la base de données
15 :
  • Récupération des Targets depuis la base de données et tests de la pertinence des ressources
  • Correction d'un bug lors de l'appel de ConeSearch
18 :
  • Début d'écriture de tests
  • Vérification de la présence d'une erreur sur la page
  • Vérification si la requête contient un "from", un "until", les deux ou aucun
19 :
  • Vérification de la date de création ou de mise à jour de la ressource avant son traitement
  • Création de copies locales des requêtes XML pour éviter de surchager les serveurs
  • Dissociation des méthodes d'appel à un service : méthode qui teste si le service répond et méthode qui teste la pertinence du service
  • Vérification de la présence des champs des tests dans les ressources, sinon tests par défaut
20 :
  • Calcul du SR des Targets à partir d'une formule
  • Mise à jour des logs qui décrivent mieux le fonctionnement du service
  • Mise à jour des requêtes SQL pour utiliser des PreparedStatements
  • Création des tables Users et TargetsFollowed
  • Correction d'un problème dans la création des Alerts (Primary Key sur une seule colonne alors qu'il faut les deux colonnes)
21 :
  • Recherche des utilisateurs en fonction des alertes crées par le service (à corriger encore)
  • Tests d'envoi de mails à ces utilisateurs
22 :
  • Récupération des valeurs nécessaires à l'envoi de mail (adresses mail, objets surveillés, nouvelles ressources)
  • Envoi de mails aux utilisateurs concernés sans mise en forme
  • Création d'un Main pour parser le XML (from et until en option)
25 :
  • Changement du format de la date des Resources dans la base de données, avant : DATE (YYYY-MM-DD) / maintenant : DATETIME (YYYY-MM-DD HH:MM:SS)
  • Création de 3 Mains pour séparer l'exécution du programme : MainParsing, MainTesting, MainSending
  • Mise à jour du build.xml et création de 3 JARs correspondant aux 3 Mains
  • Tests d'envoi d'e-mails HTML pour un meilleure affichage
26 :
  • Absent à cause de la grève SNCF
27 :
  • Mise en forme du template HTML dans le fichier JAVA
  • Liste des ressources ajoutée au template pour que le mail soit complet
  • Mail écrit en anglais (texte fourni par Sébastien)
  • Mise en forme semblable à celle de Sébastien (reste à afficher le nombre d'objets pour chaque type et la requête)
28 :
  • Affichage du titre de la ressource ainsi que la requête permettant de récupérer le XML dans le mail
  • Ajout d'une table permettant de stocker les requêtes pertinentes pour pouvoir les ajouter dans le mail
  • Mise en place avec Thomas d'un crontab, tous les jours à 2h du matin. La date du from est la date du jour - 2 jours
29 :
  • Correction avec Thomas de la génération des JARs qui avaient un souci. Le crontab effectué dans la nuit n'a pas été concluant car les JARs n'étaient pas les bons.
  • Ajout d'un paramètre optionnel lorsqu'on lance le JAR sendingMail. En passant "nomail" comme argument, les mails ne s'enverront pas mais s'ouvriront dans le navigateur (pour l'instant).
  • Changements dans la base de données : la clé primaire des tables ConeSearches, SimpleImageAccess et SimpleSpectralAccess est maintenant (ivoId, baseURL), la table Alerts possède deux nouveaux attributs type et baseURL

Mai

Implémentation, tests, développement page web pour sélection des objets/positions à monitorer

Rédaction rapport de stage

2 :

  • Finalisation de l'écriture du mail : ajout de la liste des types pour chaque objet avec le nombre de nouvelles ressources pour chaque type, ajout de la requête permettant d'accéder aux données XML sans la table "Request"
  • Première page web avec le LoginWidget et un input pour écrire le nom de l'objet
3 :
  • Documentation et début d'écriture d'une servlet JAVA
  • Développement de la page web : LoginWidget fonctionnel, formulaire inaccessible si on n'est pas connecté
4 :
  • Ajout dans la base de données de l'objet et de l'utilisateur lorsque ce dernier entre un nom d'objet sur la page web
  • Affichage dynamique des objets que l'utilisateur suit
  • Possibilité de supprimer les objets suivis
  • Notification lors d'une action
9 :
  • Ajout d'un "Remove all" lorsque l'utilisateur suit 2 objets ou plus
  • Mise en forme de la page web
  • Commentaires et javadoc
10 :
  • Mise en place de la page web sur un serveur Tomcat + corrections pour la faire fonctionner
  • Correction : problème avec l'affichage du nom de l'objet dans le mail, la page n'est plus entièrement rechargée à l'ajout d'un objet
  • Ajout : noms des objets ou le nombre d'objets concernés dans le sujet du mail si il en a plus de 5, demande de confirmation lors de la suppression de tous les objets
11 :
  • Ajout des attributs ra, dec et sr lorsque l'on clique sur le nom d'un objet (requêtes Ajax lorsqu'on appuie sur le nom et popover qui s'affiche)
  • Récupération des alertes à partir du jour même (pour ne pas envoyer toutes les alertes de la table)
  • Crontab mis à jour avec la regénération des JAR
12 :
  • Modification du design du site
  • Nouvelle page qui représente les nouvelles ressources publiées concernant les objets que l'utilisateur suit, triées par ordre chronogique
13 :
  • Continué l'écriture de la timeline
  • Problème d'internet donc commentaires et javadoc
17 :
  • Problème d'internet donc commentaires et javadoc
  • Modification : si une Target est déjà présente dans la table, on l'a met à jour, sinon on l'ajoute
  • Correction d'un NullPointerException et d'un OutOfBoundException lorsque la requête TAP ne renvoie pas les données voulues
18 :
  • Encodage en UTF-8 du nom de l'objet lorsqu'on l'ajoute, pour éviter les erreurs avec le serveur de Simbad
  • Problème de suppression d'objet, la liste ne se mettait pas à jour si on supprimait le dernier élément ou si on supprimait tous les objets d'un coup
  • L'envoi de mails ne se fait plus qu'à partir de la date du jour (pour ne pas reprendre les alertes déjà traitées)
  • Problème d'id dans le code HTML, si un objet possède un espace dans son nom alors on ne peut plus cliquer dessus (un id en HTML ne peut pas avoir d'espace) --> correction en supprimant tous les caractères spéciaux du nom de l'objet mais problème car certains objets peuvent désormais avoir le même nom
19 :
  • L'id des objets dans le code HTML est désormais leur oidSimbad
  • Encodage des noms des objets lors de l'appel de la servlet pour éviter de perdre des caractères (problème entre [L69c] 34 5 et [L69c] 34+ 5 par exemple)
  • Ajout d'un lien vers la referenceURL dans le mail ainsi que sur la timeline
  • Ajout de la date de harvest dans le mail
  • Problème d'affichage du popover lorsque l'objet est à drotie dans la liste donc maintenant le popover s'affiche vers le haut
  • Affichage de l'unité du Search Radius (à choisir)
20 :
  • Le rayon est affiché en degrés s'il est supérieur à 1 et en arcmin sinon. Il n'y a plus qu'une décimale d'affichée
  • L'image de l'objet est ajoutée dans le popover, lorsqu'on clique sur un objet
  • Dans la timeline, ajout d'un bouton qui permettra d'ouvrir le widget
23 :
  • Début du développement du widget dans un modal
  • Début de la création de la config pour le widget
24 :
  • Widget fonctionnel dans le modal
  • Configuration du widget en fonction du bouton sur lequel on appuie
  • Test d'un TimeOut pour le test des ConeSearch
25 :
  • Correction d'un problème pour tester si la ressource est disponible ou non
  • Test des ressources avec d'abord un rayon de 2 minarc et si pas de résultat, avec le minimum entre le SR de l'objet et le maxSR du service
  • Changement du style des notifications sur la page web, style "metro" plus moderne
26 :
  • Ajout de l'attribut maxSr dans le DBManager
  • Correction du modal, il est maintenant responsive et centré horizontalement
  • Nouvelle table dans la base de données, "SentMails", qui est une table de "statistiques". Elle permet de voir combien de mails ont été envoyés, etc.
  • Ajout d'un lien vers Simbad sur l'image du tooltip de l'objet
27 :
  • Le contenu du popover est chargé à la création de l'objet, plus besoin d'attendre pour que l'image s'affiche lorsqu'on clique dessus
  • Résolution d'un problème lorsqu'on tentait d'ajouter un objet qui n'en n'était pas un (exemple : " ", "; SELECT *", etc...) et où une notification "Success" apparaissait. Désormais on obtient une erreur
  • Dans la timeline, changement du titre du modal en fonction du nom de l'objet cliqué
  • Timeline responsive, reste à corriger un problème de placement du bouton
  • Le placement du bouton se fait en fonction de la taille de l'écran
30 :
  • Diaporama pour la soutenance du jeudi 2 juin 2016
31 :
  • Retouches diaporama soutenance

Juin

Finalisation rapport de stage

1 :

  • Correction d'un problème dans la timeline, les dates n'étaient pas les bonnes.
  • Dans la timeline, les objets sont d'abord triés par date, puis par nom d'objet et enfin par type
  • Retouches diaporama soutenance
2 :
  • Pour le test des ressources, récupération des Targets uniquement suivies. Auparavant, toutes les Targets étaient récupérées, même s'il n'y avait pas d'intérêt
  • Commentaires du code Javascript et validation du code avec JSLint
  • Soutenance faite : retours plutôt bons, reste encore des choses à améliorer
3 :
  • Amélioration du diaporama avec les remarques faites après la soutenance
  • Rédaction rapport de stage
6 :
  • Rédaction rapport de stage
7 :
  • Rédaction rapport de stage
8 :
  • Rédaction rapport de stage
  • Commit des sources sur le dépôt SVN
9 :
  • ...
10 :
  • ...

Sauvegardes

  • à définir au cas par cas suivant le sujet du stage

Liens

Lien permettant d'accéder au service, hébergé sur la machine dans le bureau E4

Versions testables

Testé sur ...

Documentation

  • Rapport de stage:
  • Présentation:

Informations/travaux divers

  • ...

Travail post stage éventuel

Liste des améliorations à envisager

  • Factorisation du code Java :
    • redondance de méthodes qui font quasiment la même chose (le test des services par exemple pourrait s'écrire dans une seule méthode "callService" et prendrait un paramètre "type", et les coordonnées des objets. Elle utiliserait un switch sur le paramètre "type" par exemple)
    • suppression des classes "List..." qui sont inutiles, les remplacer directement par une ArrayList<...> qui éviterait de passer par des classes intermédiaires et d'accéder à l'ArrayList par le biai de l'obje. Cela permettrait d'utiliser moins de mémoire
  • Création de méthodes de debug, par exemple pour tester un service directement. Cela éviterait de passer par un navigateur à chaque fois

  • Amélioration des logs pour qu'ils soient plus significatifs et plus clairs
  • Renvoyer un résultat lorsque le service fait des opérations sur la base de données. Cela permettrait de générer des erreurs personnalisées dans l'interface Web
    • Lorsqu'un objet n'est pas ajouté à la base de données : objet inconnu de Simbad, connexion à la base de données impossible, connexion Internet qui ne fonctionne pas, etc...
  • Proposer un système de filtre sur les objets dans la timeline :
    • l'utilisateur peut décocher tous les objets qu'il suit sauf un seul pour afficher uniquement les nouvelles ressources concernant cet objet
    • l'utilisateur peut personnaliser l'affichage des ressources sans pour autant toucher à la liste d'objets astronomiques qu'il suit

Bugs connus

*
Topic revision: r95 - 2016-06-09 - LoicGasiorowski
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback