Filed under: Web

Javascript – Observer Pattern pour vos onglets

janvier 5th, 2010

Bon, nous allons voir comment appliquer un « Observer Pattern » (patron Observateur) en javascript.

Tout d’abord, nous avons besoin de 2 types d’objets :

  • Un Objet qui observe possédant une méthode update :


Observer = function(name) {
this.name = name;
this.update = function(observable) {
if (observable.nav == this.name) {
this.className = 'nav_selected';
show.call($(this.name+'s'));
} else {
this.className = 'nav';
hide.call($(this.name+'s'));
}
}
};

  • Un Objet observé possédant un attribut qui référence les objets qui observent et 2 méthodes


Observable = function() {
this.observers = new Array();
this.notifyObservers = function() {
for (var i=0; i < this.observers.length; i++) {
this.observers[i].update(this);
}
}
this.addObserver = function(observer) {
this.observers.push(observer);
observer.update(this);
}
};

Et voilà (ou presque), on crée un objet mod Nav qui héritera par la suite d’Observable :


var modNav = {
nav:'client',
all:['client','product','group','schedule']
};
modNav.setNav = function(o) {
this.nav = (typeof(o) == 'string') ? o : o.id ;
this.notifyObservers();
}
modNav.getNav = function() {
return this.nav
}
modNav.init = function() {
for (var j=0; j
var m = this.all[j];
Observer.call($(m),m);
this.addObserver($(m));
}
}

Il ne reste plus qu’à faire hériter les objets div modifiable (un onglet <=> une div) :


Observable.call(modNav);
modNav.init();

Avec, pour notre exemple :

  1.  
  2. <ul>
  3.         <li class="nav_selected">CLIENTS</li>
  4.         <li class="nav">GROUPS</li>
  5.         <li class="nav">PRODUCTS</li>
  6.         <li class="nav">SCHEDULES</li>
  7. </ul>
  8.  

Et voilà (enfin) les onglets sont observables et nos moutons sont bien g…

Tags: ,
Posted in Web | No Comments »

Pourquoi Google Chrome est plus rapide ?

décembre 29th, 2009


Courte introduction. La genèse de Google Chrome. (4min)


Quelques explications sur V8 le nouveau moteur javascript. (5min)


Comment le moteur javascript v8 fonctionne ainsi que sa roadmap. (50min)

Télécharger les sources
svn checkout http://v8.googlecode.com/svn/trunk/ v8

Accéder au site officiel de V8.

Tags: , , ,
Posted in App, Web | No Comments »

WordPress Video Plugin HACK

décembre 14th, 2009

Comment rendre plus rapide et plus accessible une page web contenant du flash ?
Une première réponse serait de ne pas intégrer de flash dans les pages web.

Mais si nous avons réellement besoin de flash et que nous souhaitons partager une vidéo intéressante avec la communauté ?
Nous allons charger l’objet flash à la demande de l’utilisateur.

Voici un hack du plugin wordpress video plugin inspiré de ce qui se fait sur Facebook.

Télécharger l’archive wordpress-video-plugin-hack.tar

hack-minify.js


function LoadContent(page,usediv){try{xmlhttp=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");}catch(e){alert("Error: Could not load page.");}
document.getElementById(usediv).innerHTML='<img src="http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/loading.gif">';xmlhttp.onreadystatechange=function(){if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){document.getElementById(usediv).innerHTML=xmlhttp.responseText;}}
xmlhttp.open("GET",page);xmlhttp.send(null);return false;}
function toggle_visibility(id){var e=document.getElementById(id);if(e.style.display=='block')
e.style.display='none';else
e.style.display='block';}
function is_visible(id){var e=document.getElementById(id);if(e.style.display=='block')
return 1;else
return 0;}

inclusion dans wordpress header.php

  1. … wp_head(); ?>
  2. <strong><script type="text/javascript" src="http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/hack-minify.js"></script></strong>
  3. </head> …

hack de video.php

  1. // Youtube Code
  2. define("YOUTUBE_TARGET", "<div id=\"flashobj###URL###\"><a onclick=\"LoadContent(‘http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/flashobj.php?url=http://www.youtube.com/v/###URL###&amp;width=###WIDTH###&amp;height=###HEIGHT###’,'flashobj###URL###’);toggle_visibility(‘flashobj###URL###’);\"><img class=\"videothumb\" src=\"http://i1.ytimg.com/vi/###URL###/default.jpg\"><span class=\"videothumbplay\"><img id=\"thumbplay###URL###\" src=\"http://www.benjaminbaudouin.com/wp-content/plugins/wordpress-video-plugin-hack/fbvbs43b.png\"></span></a></div>");

les images fbvbs43b.png et loading.gif

style.css (thème thematic)

.videothumb {
cursor: pointer;
}
.videothumbplay {
cursor: pointer;
margin-left: -115px;
}

Voila à quoi ressemble le hack une fois implémenté (cliquez sur l’image pour lancer la vidéo):

Tags: , , , , ,
Posted in Web | No Comments »

Qui a le plus de serveurs Web ?

septembre 14th, 2009

1&1 Internet: 55 000 serveurs
OVH: 55 000 serveurs
Rackspace: 50 038 serveurs
The Planet: 48 500 serveurs
Akamai Technologies: 48 000 serveurs
SBC Communications: 29 193 serveurs
Verizon: 25 788 serveurs
Time Warner Cable: 24 817 serveurs
SoftLayer: 21 000 serveurs
AT&T: 20 268 serveurs
Peer1/ServerBeach: 10 277 serveurs
iWeb: 10 000 serveurs

En savoir plus

Tags: ,
Posted in Web | No Comments »

Une plateforme de micro-blogging Open Source

août 4th, 2009

identi-ca utilise le logiciel Open Source laconi

La dernière version permet de s’identifier via OpenID, Facebook Connect.

Tags: , , ,
Posted in App, Web | No Comments »

Page suivante Page précédente