nyroBlog
Ban NyroBlog, by Dal's
Image by Dal's - ?

Tag: Web 2.0


PhpMyVisites prépare sa future version : Piwik

PhpMyVisitesUn petit tour sur le site le site de PhpMyVisites dont je vous ai déjà parlé et je découvre qu'ils ont une beta sous le coude qui promet. En effet, la prochaine version (2.3) incluera une carte de chaleur de vos pages.

Mais qu'est-ce qu'une carte de chaleur ?
C'est tout simplement votre page, sur laquelle on va ajouter un calque pour vous montrer où les utilisateurs ont cliqué. Bien sûr, les endroits les plus cliqués auront des couleurs plus fortes afin de bien faire la différence, à la façon des lunettes qui montre la présence de chaleur dans les James Bond et autres du genre...
Cette nouvelle fonctionnalité utilise en fait ClikHeat Labsmedia, un autre projet open source sur sourceforge.
Exemple du site :
PhpMyVisites ClickHeat

Bon super, c'est tout ?

Non ! la suite devient un peu plus intéressante. En effet, cette fonctionnalité est sympa, mais sans doute pas celle que vous voulez. PhpMyVisites à penser à vous et vous écoute par le biais de feedback2.0. Après une brève inscription, vous pourrez proposer votre propre amélioration pour PhpMyVisites. Puis les gens vont voter pour celle-ci et si elle est beaucoup demander (et réalisable), elle sera sûrement implantée dans la prochaine version. Et bien sûr, vous pouvez voter pour les autres souhaits. A noter qu'il est demander de rédiger dans la langue de Shakespeare.

Alors à vos souris pour voter, et vos claviers si vous avez d'autres idées !

Enfin, en descendant tout en bas de la page d'accueil, je découvre une ligne, toute petite, mais très intéressante :

Piwik: le futur de phpMyVisites, actuellement en plein developpement (pour plus d'informations contactez nous!)

Un clic sur le lien, et en effet, c'est vraiment en plein développement ! La page n'est pas très agréable à l'oeil, mais l'intérêt n'est pas là. Un petit tour sur la démonstration en ligne pour se rendre compte des améliorations :

  • Tout les changements de page se font en Ajax (avec le fabuleux jQuery) : un gain de temps énorme.
  • Les graphiques sont maintenant en Flash pour afficher plus d'infos au survol. Encore pas mal de bugs d'affichages à ce niveau là
  • Ces graphiques affiches le code HTML pour l'inclure directement dans vos pages et ainsi montrer vos stats en live. Les inclure dans votre netvibes sera donc facile !
  • Un nouvel affichage apparaît : par nuage de tags (tagcloud). Intéressant pour les mots-clé des moteurs de recherche.
  • Export au format XML, JSON, CSV et PHP de toutes les données. Simple affichage du contenu pour le moment, sans doute un téléchargement proposé par la suite.

Vivement que cette version voit le jour. Je vais envoyer un mail pour voir s'ils ont besoin de développeur PHP, on verra bien ce que ça peut donner !

La Youtube'star du moment : Chocolate Rain

Vu à l'instant sur le journal de 22h de Fox11, Chocolate Rain (qui a déjà sa page dans wikipédia) cartonne :


Et comme toutes 'star', il y a déjà son lot de parodies...

Et ça tombe bien (façon de parler), car il pleut averse avec un bon orage s'abat sur Los Angeles actuellement, le premier depuis que je suis là.

Google Docs ?

Si vous vous demander encore à quoi peut servir l'externalisation des données sur google Docs (ou équivalent), regarder simplement cette vidéo (en anglais) :

Publié sur le blog officiel pour annoncer la sortie de leur nouvel outil de présentation en ligne à la Powerpoint.

Scriptaculous : Callbacks de l'effet Shake.

Comme j'ai oublié mes photos de ce week-end (à Beverly Hills), un petit poste programmation.

Je m'amuse avec Scriptaculous pour faire des retours d'informations intéressants aux utilisateurs. Durant mes tests, je me suis rendu compte que les callback que je donnai à l'effet Shake n'était jamais exécuter.

Un petit tour dans le fichier effects.js et je me rends compte que rien n'est fait pour le faire. En effet, l'effet Shake est simplement une combinaison de 6 effets Move les uns après les autres, dans des sens différents. Et les options de callback données à l'effet Shake ne sont pas retranscrit à chacun d'entre eux.

Qu'à cela ne tienne, voici le bout de code permettant de palier à ça (dont la modification de ce fameux effet) :

Effect.combinedOptions = function(options) {	
	var ret = {
		start:{},
		update:{},
		finish:{}
	};
	
	if (options.beforeStart)
		Object.extend(ret.start,{'beforeStart':options.beforeStart});
	
	if (options.beforeUpdate) {
		Object.extend(ret.start,{'beforeUpdate':options.beforeUpdate});
		Object.extend(ret.update,{'beforeUpdate':options.beforeUpdate});
		Object.extend(ret.finish,{'beforeUpdate':options.beforeUpdate});
	}
	if (options.afterUpdate) {
		Object.extend(ret.start,{'afterUpdate':options.afterUpdate});
		Object.extend(ret.update,{'afterUpdate':options.afterUpdate});
		Object.extend(ret.finish,{'afterUpdate':options.afterUpdate});
	}
	
	if (options.afterFinish)
		Object.extend(ret.finish,{'afterFinish':options.afterFinish});
	
	return ret;
}

Effect.Shake = function(element) {
  element = $(element);
  var options = Effect.combinedOptions(arguments[1] || {});
  var oldStyle = {
    top: element.getStyle('top'),
    left: element.getStyle('left') };
  return new Effect.Move(element, 
      Object.extend(options.start,{ x:  20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      Object.extend(options.update,{ x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      Object.extend(options.update,{ x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      Object.extend(options.update,{ x: -40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      Object.extend(options.update,{ x:  40, y: 0, duration: 0.1,  afterFinishInternal: function(effect) {
    new Effect.Move(effect.element,
      Object.extend(options.finish,{ x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) {
        effect.element.undoPositioned().setStyle(oldStyle);
  }})) }})) }})) }})) }})) }}));
}

Le combinedOptions prendra donc en paramètre l'objet option de l'effet Shake pour en ressortir un autre, dans lequel on aura inséré les callback nécessaires selon si l'effet Move est au début, au milieu ou à la fin de l'effet Shake.

Et voilà, c'est tout bon maintenant.

A mon avis ce bug existe pour beaucoup d'autres effets de combinaisons, vous pouvez employer la même technique (et la combinedOptions pour les corriger). J'ai soumis le code sur le wiki de scriptaculous.

Je n'avais jamais testé auparavant Scriptaculous et prototype. C'est une nouvelle façon de voir le javascript et c'est tellement agréable de coder avec ces framework que je crois que je ne pourrai plus m'en passer, après seulement quelques jours d'utilisation...

Gallerie d'images automatique

Comme j'ai un peu de temps, je vous donne ici les sources du script que j'ai mis en place pour ma galerie d'images.

En fait, j'utilise JW Image Rotator pour le diaporama en flash. Ce player est génial et très bien documenté. On peut le faire communiquer avec du JavaScript très simplement. C'est donc ce que j'ai fait avec la liste déroulante qui va envoyer l'url de la playlist à recharger.

Pour gagner du temps et être vraiment simple à utiliser, j'ai décider de ne pas avoir d'administration et que le simple fait d'envoyer un nouveau dossier mettrait en ligne les photos. La liste déroulante est donc générée en PHP pour faire apparaitre tous les dossiers existants. Le script générant la playlist récupère juste la liste des fichiers du dossier demandé et ressort un fichier XML, au format souhaité.

Etant donné que j'ai hébergé ce script sur mon ftp de free, j'ai du changer un peu les fonctions de récupération des dossiers/images pour qu'il fonctionne. si vous êtes dans le même cas, utiliser fonc.free.php à la place de fonc.php et tout ira bien.

Enfin, j'ai mis en place un rss pour permettre aux gens de suivrent simplement l'actualité de mes photos. Il suffit simplement de créer un flux XML au format demandé et on a un beau fil RSS tout nouveau tout beau !

NB : Pour mettre en place ce script sur votre site, vous devrez sans doute modifier des petits trucs dans tous les fichiers. Faites un tour complet avant.