vendredi 18 décembre 2009

Minifier le rendu HTML avec ZEND

Voici quelques bouts de code que j'implémente dans les développements que je réalise avec le Zend Framework. Le but de ce code est de supprimer tout ce qui est inutile dans le code HTML

  • Les commentaire
  • L'indentation
  • Les retours à la ligne
Certains diront que c'est inutile, que ça sert à rien. Bah je suis pas d'accord ! Cela permet de gagner quelques octets par page. Et donc d'accélérer un peu le chargement d'une page. Ce qui n'est pas négligeable par les temps qui court lorsque l'on développe un site à destination des plateformes Mobile (iPhone, Android, ...)
Donc le premier truc à faire est de créer un plugin de controller. Dont voici la source :

class My_Controller_Plugin_CompressHtml extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopShutdown()
{
$response = $this->getResponse();
$body = preg_replace('#(?:(?:(^|>[^<]*?)[\t\s\r\n]*)|(?:[\t\s\r\n]*(<|$)))#', '$1$2',$response->getBody());
$response->setBody($body);
}
}
Si vous débuter avec Zend il faut placer cette classe dans VOTRE_DOSSIER_PROJET/Librairy/My/Controller/Plugin/CompressHtml.php.

Je vais pas vous faire un cours sur les expressions régulières. Le seul truc à savoir c'est que ce plugin de controller est appeler tout à la fin du processus de distribution de la requête.

Une fois cette classe créer, il faut la déclarer. Pour celà il faut éditer le fichier VOTRE_DOSSIER_PROJET/application/Bootstrap.php et ajouter les quelques lignes de code suivantes :

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => '',
'basePath' => APPLICATION_PATH,
));
Zend_Loader_Autoloader::getInstance()->registerNamespace('My_');
return $autoloader;
}

protected function _initFrontController()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new My_Controller_Plugin_CompressHtml());

return $frontController;
}

public function run()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->dispatch();
}

}
Pour ceux qui ce demande ce qu'est le Bootstrap.php ? C'est le fichier contenant la classe d'amorçage de votre application. Tout passe par ce fichier.
Voilà ! Normalement si vous avez bien suivit, tout le code HTML de vos pages seras minifié lors du rendu HTML. Alors bien sûr on peut encore améliorer. Par exemple en m'étant en cache le résultat obtenu mais ça sera l'objet d'un autre post.

jeudi 17 décembre 2009

Hightcharts : des graphiques interactif en javascript

hightchart graphique interactif javascriptHightCharts est une librairie Javascript gratuite permettant d'ajouter facilement des graphiques interactifs (histogramme, camembert, courbes, ...).

C'est une librairie en pure javascript qui ne nécessite pas de plugin du coté client (flash, JAVA, ...). Elle fonctionne sur tout les navigateurs modernes y compris Safari pour iPhone et Interner Explorer.
Voici un petit aperçu des graphiques réalisés avec cette librairie.

hightchart graphique interactif javascript
Allez voir le site officiel : Hightcharts graphique javascript intéractif

mercredi 16 décembre 2009

Google Goggles : la recherche visuelle


Fini les mots clé et les expressions clé. Il y a quelque jours Google la célèbre firme de View mountain à lancer une toute nouvelle application "Goggles". Pour le moment cette application est disponible sur Android l'os pour smartphone développé par Google. A mon avis elle va donner pas mal de fil a retordre à iPhone d'Apple. Je vous laisse découvrir cette magnifique appli au travers de cette petite vidéo :


Comme vous l'aurez sans doute compris, Google vient de s'offrir une super paire de lunette.

MooTools Forge : des plugins pour le framework javascript

Dans la communauté web, du développement, tout le monde à déjà entendu parlé du framework javascript JQuery et de ses plugins. Il existe de nombreux autres framework, dont un "Mootools" dont je parle pas assez souvent ici. Personnellement je trouve cette librairie js, excellente. Si vous entamé un développement, je vous conseille d'y jeté un coup d'œil.
Et pour vous aider, voici un petit lien vers une toute nouvelle forge pleine de plugin pour Mootools. Certes elle n'est pas très étoffé, mais elle a le mérite d'existé. De plus elle se rempli de jours en jours.

mercredi 1 juillet 2009

Jumpcut : Un gestionnaire de presse-papier pour Mac OX X

jumpcut-gestionnaire-copier-coller-presse-papier-mac-osxVoici un petit utilitaire très sympathique pour les accros du copier-coller.

Pour ceux qui se demande à quoi ça peut bien servir un gestionnaire de presse-papier, hé bah ! ça permet de de faire plusieurs copier, et au moment de faire un coller, vous pouvez choisir entre les différents textes que vous avez précédemment copier.
N'ayez crainte, ce petit utilitaire ne vient en rien modifier les fonctionnalités de Mac OS X. Il vient en complément. Vous pourrez toujours faire vos copier-coller en faisant (  + C et  + V ) .
Si vous souhaitez accèder à l'historique du presse-papier il vous suffit de faire ( ctrl + alt + V ). Puis tout en maintenant ctrl + alt enfoncé, vous pouvez revenir dans l'historique en utilisant les flèche du directionnelle gauche ou droite.
Bref ce petit logiciel vient combler une lacune d'OS X, en complétant la fonction du copier-coller.


jumpcut-gestionnaire-copier-coller-presse-papier-mac-osxAllez également voir :

mardi 30 juin 2009

Touche pour developpeur sur mac os x

mac-os-x-touche-developper-programmationDepuis quelques temps, j'ai des collègues qui essaye de switcher sur mac. Seulement ils ne trouvent certaines touches du clavier très employé pour la programmation et le développement.

Alors voici un petit coups de main pour tout ce qui sont dans le même cas qu'eux.
Il ne faut pas perdre de vue que mac c'est facile. Tout est visuelle ou se fais par drag and drop.
voici quelques raccourcis :
  • accolade ouvrante "{" : alt + (
  • accolade fermante "}" : alt + )
  • crochet ouvrant "[" : alt + shift + (
  • crochet fermant "]" : alt + shift + )
  • pipe "|" : alt + shift +L
Voilà ! ça peut sembler un peu compliquer aux premiers abords, mais ça vient tout seul par la suite.

vendredi 26 juin 2009

Voici comment faire une capture écran sur mac os X

capture-copie-ecran-touche-macTout d'abord bienvenu à toi ! Car je suppose que si tu lis ce post c'est que tu essaye de te perfectionner sous mac OS X. Donc je vais te donner un petit coup de main et t'expliquer comment faire une capture ou une copie écran sur mac.

Tout d'abord, sache qu'il n'y a pas de touche [impr écran] sur le clavier mac. Tout va se faire avec les touches :
  • [cmd] commande (ou pomme pour les nostalgique )
  • [ctrl] contrôle
  • [shift] ou la petite flèche vers le haut
  • [3] le " sur le clavier français
  • [4] le ' sur le clavier français
  • [espace] la grande barre tout en bas.
J'ai coloré les touches sur la capture qui illustre ce post. Maintenant que tu as repéré ces touches, on va pouvoir passer aux choses sérieuses. Il existe deux façons de faire :
  • la capture écran
  • la copie écran
La capture écran va faire une copie de l'écran et générer un fichier images sur le bureau. Tandis que la copie écran va copier l'écran et stocker cette copie temporairement dans la presse-papier. Pour avoir ensuite l'image il faudra ouvrir un logiciel genre textEdit, openOffice ... et faire "coller"(Pomme+V).

Pour faire une capture écran, on peut faire :
  • commande + shift + 3 : pour capturer tout l'écran
  • commande + shift + 4 : pour faire apparaître un curseur et capturer juste une portion de l'écran
  • commande + shift + 4 et espace : pour capturer une fenêtre, un menu ou une icône du bureau
Pour faire une copie écran, on peut faire :
  • contrôle + commande + shift + 3 : pour capturer tout l'écran
  • contrôle + commande + shift + 4 : pour faire apparaître un curseur et capturer juste une portion de l'écran
  • contrôle + commande + shift + 4 et espace : pour capturer une fenêtre, un menu ou une icône du bureau
Voilà ! Normalement tu es capable de faire une copie écran sur mac.