google est mon ami

Panoramio widget API : un premier essai

Panoramio From GoogleCela faisait déjà quelques mois que je voulais tester Panoramio mais le temps m'avait toujours manqué... Je voulais voir ce que ça donnait d'avoir ses propres photos dans Google Earth et autres produits dérivés. Et je voulais voir aussi s'il était possible d'avoir un "rendu" de ces photos dans ce blog.

En fait je me suis inscrit fin Avril, en rentrant de Tunisie, en déposant quelques photos à l'arrache et il aura fallu pas moins d'une semaine avant que mes photos ne soient validées pour figurer dans Google Earth. Autant ce temps ne me parait pas aberrant, autant j'ai été très déçu de découvrir qu'il n'existait pas de widget permettant de montrer ces photos ici. J'ai donc laissé tomber. Ce n'est pas la première fois - et pas la dernière non plus - que je laisse tomber un service en ligne en découvrant qu'il ne répond pas à mon besoin.

C'est à la mi-Mai que j'ai découvert que je ne devais pas être le seul à être déçu par la chose. En effet l'équipe de Panoramio, en pleine restructuration depuis le rachat par Google (voir ici, puis ici), a enfin daigné entendre les voix d'une bonne partie de ses utilisateurs en mettant à leur disposition une API de widgets.
Même s'il n'est pour l'instant pas d'actualité d'afficher ses propres photos sur une map Google (ce qui me semble être THE killer-app), il est quand même possible d'afficher un widget de ses propres photos.
Deux méthodes sont proposées : par JavaScript ou par IFrame. J'ai donc décidé de faire un premier essai par la méthode IFrame. C'est un peu franchement Quick & Dirty, mais ça fonctionne. La preuve : 

Indexer proprement un serveur Confluence avec GSA

Ceux qui ont déjà essayé le savent : indexer un wiki Confluence avec la Google Search Appliance n'est pas une sinécure. Il y a quelques jours, je me suis retrouvé devant un serveur Confluence totalement à genoux devant la GSA et voici comment j'ai résolu le problème.

GSA 6.2

Le serveur indiquait un nombre absolument terrifiant de sockets dans l'état TIME_WAIT. Evidemment le processeur était full (et les utilisateurs du wiki, furieux). Le premier réflexe que j'ai eu, vu que je ne connais pas la machine sur lequel tourne ce wiki et que je n'y ai pas accès, a été de régler le plus light possible les paramètres de charge d'hôte. Premier constat, ça ne change rien. Après avoir tourné la doc dans tous les sens, un détail m'a sauté aux yeux : il s'agit bien d'une charge d'hôte et non de machine. Ainsi si le serveur fait tourner plusieurs services ou si ces services sont accessibles via des aliases ou des adresses IP, il faut toutes les déclarer. Et oui... Ceci dit, déclarer tous les aliases du wiki n'a pas eu un impact phénoménal : le serveur était toujours (presque) autant surchargé. Il fallait donc trouver une autre solution...
Je suis alors allé faire un tour approfondi dans les journaux et rapports et il est vite devenu évident que le problème venait de Confluence. J'ai d'ailleurs trouvé à ce sujet une issue intéressante (et non résolue) sur le tracker d'Atlassian. Confluence n'est pas un foudre de guerre en ce qui concerne la gestion du cache. Il est même plutôt mauvais. Et pour contourner le problème, une seule solution : le robots.txt. Comme vous le savez sans doute, ce fichier, situé à la racine d'un site, sert à indiquer aux crawler comment se comporter. Bien évidemment l'exploitation de ce fichier est laissé à la charge du crawler, et nombre d'entre eux ne le respecte pas ; mais avec Google - standards obligent - c'est assez redoutable. Je me suis donc inspiré du fichier cité dans le tracker d'Atlassian et l'ai retravaillé aux vues de mes logs. Le voici :
	
  1. # Confluence 2.X ROBOTS.TXT
  2.  
  3. User-agent: *
  4.  
  5. Disallow: /*decorator=printable
  6. Disallow: /*javascript*
  7. Disallow: /administrators.action?
  8. Disallow: /createrssfeed.action?
  9. Disallow: /dashboard.action?
  10. Disallow: /labels-javascript
  11. Disallow: /doexportpage.action?
  12. Disallow: /dopeopledirectorysearch.action
  13. Disallow: /dosearchsite.action
  14. Disallow: /dosearchsite.action?
  15. Disallow: /exportword?
  16. Disallow: /login.action
  17. Disallow: /login.action?
  18. Disallow: /searchsite.action?
  19.  
  20. Disallow: /admin/
  21.  
  22. Disallow: /display/~*
  23. Disallow: /display/*tasklist.complete=
  24. Disallow: /display/*tasklist.uncomplete=
  25. Disallow: /display/*decorator=normal
  26. Disallow: /display/*decorator=printable
  27. Disallow: /display/*focusedCommentId=
  28. Disallow: /display/*refresh=
  29. Disallow: /display/*replyToComment=
  30. Disallow: /display/*rootCommentId=
  31. Disallow: /display/*showChildren=
  32. Disallow: /display/*sortBy=
  33. Disallow: /display/*showComments=
  34.  
  35. Disallow: /download/attachments/*version= 
  36. Disallow: /download/userResources/ 
  37. Disallow: /download/resources/ 
  38.  
  39. Disallow: /label/
  40.  
  41. Disallow: /labels/
  42.  
  43. Disallow: /pages/*showComments=
  44. Disallow: /pages/*tasklist.complete=
  45. Disallow: /pages/*tasklist.uncomplete=
  46. Disallow: /pages/*decorator=normal
  47. Disallow: /pages/*decorator=printable
  48. Disallow: /pages/*focusedCommentId=
  49. Disallow: /pages/*refresh=
  50. Disallow: /pages/*replyToComment=
  51. Disallow: /pages/*rootCommentId=
  52. Disallow: /pages/*showChildren=false
  53. Disallow: /pages/*sortBy=
  54. Disallow: /pages/copypage.action?
  55. Disallow: /pages/createblogpost.action?
  56. Disallow: /pages/createpage.action?
  57. Disallow: /pages/diffpages.action?
  58. Disallow: /pages/diffpagesbyversion.action?
  59. Disallow: /pages/editblogpost.action?
  60. Disallow: /pages/editpage.action?
  61. Disallow: /pages/removepage.action?
  62. Disallow: /pages/revertpagebacktoversion.action?
  63. Disallow: /pages/templates
  64. Disallow: /pages/templates/
  65. Disallow: /pages/viewchangessincelastlogin.action?
  66. Disallow: /pages/viewpage.action?*showComments
  67. Disallow: /pages/viewpage.action?spaceKey=
  68. Disallow: /pages/viewpagesrc.action?
  69. Disallow: /pages/viewpreviouspageversions.action?
  70.  
  71. Disallow: /plugins/
  72.  
  73. Disallow: /spaces/*decorator=printable
  74. Disallow: /spaces/*decorator=normal
  75. Disallow: /spaces/blogrss.action?
  76. Disallow: /spaces/listrssfeeds.action?
  77. Disallow: /spaces/viewmail.action?
  78. Disallow: /spaces/viewmailarchive.action?
  79. Disallow: /spaces/viewthread.action?
  80.  
  81. Disallow: /themes/
  82.  
  83. Disallow: /users/ 
  84.  
  85. # End file
 
La mise en place de ce fichier robots.txt a eu l'effet escompté et les utilisateurs du wiki sont désormais satisfaits. Il a en outre l'avantage de ne faire aucune hypothèse quant aux spécifités éventuelles du crawler qui le visite et il est donc possible de gérer la charge d'hôte directement dans l'interface de la Google Search Appliance. Ce qui n'est pas le cas du fichier qui m'a servi d'inspiration...

Search Fail à double détente !

Je n'arrive pas à savoir si c'est du second degré...

GSA Fail !

Site propulsé par Drupal !    Contenu mis à diposition sous un contrat Creative Commons