daily pastebin goal
82%
SHARE
TWEET

Untitled

a guest May 16th, 2018 113 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Un parseur de logs pour des stats
  2.  
  3. L'objectif de l’exercice est de parser des logs de issus du serveur plan de Mappy pour en sortir des informations.
  4. Le log est constitué d'un timestamp puis d'une url qu'a reçu un serveur de plan.
  5. Les logs sont déjà rangés par ordre chronologique de timestamp (c'est garanti).
  6.  
  7. Une tuile de plan correspond à une url de la forme :
  8. ``/map/1.0/slab/photo/256/16/32798/22739``
  9.  
  10. Dans notre cas, "photo" correspond à ce qu'on appelle le viewmode, cela va déterminer le mode d'affichage du plan. Parmi les valeurs possibles du viewmode, on retrouve : photo, standard, standard_hd (hd = haute définition), traffic, traffic_hd, etc.
  11.  
  12. L’objectif de l'exercice de sortir le nombre de viewmodes identiques qui se suivent dans les lignes avec le nombre d’occurrences. Les urls qui ne correspondent pas à une tuile n'interviennent pas dans le décompte, en revenche on peut considérer que la tuile d'avant et la tuile d'après ne se suivent pas.
  13.  
  14. Ex : si en entrée on a
  15.  
  16. ````
  17. 2017-10-05 00:01:09,745 /map/1.0/slab/standard/256/19/263920/186677
  18. 2017-10-05 00:01:09,752 /map/1.0/slab/standard/256/12/2056/1387
  19. 2017-10-05 00:01:09,772 /map/1.0/slab/standard/256/14/8338/5848
  20. 2017-10-05 00:01:09,775 /map/1.0/slab/standard/256/19/263921/186678
  21. 2017-10-05 00:01:09,785 /map/1.0/slab/traffic/256/14/8338/5850
  22. 2017-10-05 00:01:09,807 /map/1.0/slab/traffic_hd/256/12/2061/1387
  23. 2017-10-05 00:01:09,839 /map/1.0/multi-descr/standard_hd/256/13/7773,6273;7773,6274;7774,6273;7774,6274;7775,6273;7775,6274;7776,6273;7776,6274;7777,6273;7777,6274;7778,6273;7778,6274
  24. 2017-10-05 00:01:09,862 /map/1.0/slab/traffic_hd/256/12/2060/1396
  25. 2017-10-05 00:01:09,878 /map/1.0/multi-descr/standard/256/14/8529,5662;8529,5663;8529,5664;8530,5662;8530,5663;8530,5664;8531,5662;8531,5663;8531,5664;8532,5662;8532,5663;8532,5664;8533,5662;8533,5663;8533,5664
  26. 2017-10-05 00:01:09,976 /map/1.0/slab/standard_hd/256/14/8620/6047
  27. 2017-10-05 00:01:10,029 /map/1.0/slab/traffic/256/14/8336/5847
  28. 2017-10-05 00:01:10,047 /map/1.0/slab/traffic/256/17/134034/90800
  29. 2017-10-05 00:01:10,055 /map/1.0/slab/standard/256/19/260681/184714
  30. 2017-10-05 00:01:10,073 /map/1.0/slab/standard/256/17/67270/47296
  31. 2017-10-05 00:01:10,076 /map/1.0/slab/public_transport_hd/256/15/33165/22527
  32. 2017-10-05 00:01:10,109 /map/1.0/slab/standard/256/18/126515/84965
  33. 2017-10-05 00:01:10,113 /map/1.0/slab/standard/256/18/134034/89724
  34. 2017-10-05 00:01:10,114 /map/1.0/slab/standard/256/19/270890/191082
  35. 2017-10-05 00:01:10,208 /map/1.0/toto
  36. 2017-10-05 00:01:10,222 /map/1.0/slab/standard/256/14/8248/6005
  37. 2017-10-05 00:01:10,224 /map/1.0/slab/standard_hd/256/18/132782/90227
  38. ````
  39.  
  40.  
  41. En sortie on aura (séparé par des tabulations) :
  42. ````
  43. standard    4
  44. traffic 1
  45. traffic_hd  2
  46. standard_hd 1
  47. traffic 2
  48. standard    2
  49. public_transport_hd 1
  50. standard    3
  51. standard    1
  52. standard_hd 1
  53. ````
  54.  
  55. Dernier raffinement : on souhaite savoir quels étaient les niveaux de zoom (le nombre après 256) représentés pour chaque viewmode.
  56. Une troisième colonne devra donc indiquer la liste des niveaux de zooms. Il doivent apparaître une fois seulement, séparés par des virgules et on se moque de l'ordre (tant que le niveau de zoom est unique dans la liste). Donc notre sortie finale peut ressembler à ça :
  57.  
  58. ````
  59. standard    4   19,12,14
  60. traffic 1   14
  61. traffic_hd  2 12
  62. standard_hd 1   12
  63. traffic 2   14,17
  64. standard    2   19,17
  65. public_transport_hd 1   15
  66. standard    4   18,19
  67. standard    4   14
  68. standard_hd 1   18
  69. ````
  70. Un fichier tornik-map-20171006.10000.tsv correspond à un extrait de 10000 lignes d'un log réel ; il est fourni à des fins de tests.
  71.  
  72. L’exécutable doit lire sur le log sur l'entrée standard (on lui a pipé une entrée) et envoyer le résultat dans la sortie standard.
  73.  
  74. Le résultat de l'exercice sera un dépot git (idéalement sur github). Nous devons être autonomes pour valider le traitement de l'excercice.
  75.  
  76. # Une dernière chose
  77. Souvent certains candidats pensent que ce type d'exercice a pour but de montrer qu'on connait des fonctionnalités exotiques du langage... L'objectif est opposé : produire du code qui sera maintenable (donc simple et lisible) par le plus grand monde dans l'équipe.
  78.  
  79. Bon code !
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top