08
feb
2010

Lorsque je parcoure le code du Zend Framework, je vois souvent des conditions écrites sous cette forme :

if (0 == $argc) {
  // ...
}

Libellés :

13
jan
2010

Jusqu'ici on ne pouvait stocker sur Google Documents que certains types de fichiers (.doc, .xls, .pdf...). Google vient d'annoncer qu'on pourra bientôt uploader n'importe quel type de document et qu'on disposera gratuitement d'un espace de 1 Go. Le Go supplémentaire sera facturé 0.25 $ et on pourra lancer une recherche sur les documents stockés dans cet espace.

Libellés : ,

09
jan
2010

Une petite astuce pour tester un contrôleur qui génère du PDF. Pour s'assurer que c'est bien du PDF qui est envoyé, on peut utiliser Zend_Pdf qui est capable de charger un document existant :

$this->dispatch('/moncontrolleur/1/pdf');
$this->assertResponseCode(200);
$this->assertHeaderContains('Content-type', 'application/pdf');
$pdf = Zend_Pdf::parse($this->getResponse()->getBody());
$this->assertEquals('MonProgramme', $pdf->properties['Creator']);

Si le PDF n'est pas correct, Zend_Pdf lancera une exception : Zend_Pdf_Exception: File is not a PDF. On peut également vérifier les propriétés du PDF et le nombre de pages. Par contre, on ne peut pas accéder au contenu du PDF pour vérifier le texte qu'il contient.


08
jan
2010

Ah les arrondis ! On pourrait penser que c'est très simple mais comme souvent le diable se cache dans les détails.

Prenons par exemple la méthode round de PHP. Elle nous propose 4 types d'arrondi :

// Arrondi vers l'infini (méthode par défaut: PHP_ROUND_HALF_UP)
echo round(1.244, 2) . "\n"; // Affiche 1.24
echo round(1.246, 2) . "\n"; // Affiche 1.25
echo round(1.245, 2) . "\n"; // Affiche 1.25
echo round(-1.245, 2) . "\n"; // Affiche -1.25
 
// Arrondi vers zéro
echo round(1.245, 2, PHP_ROUND_HALF_DOWN) . "\n"; // Affiche 1.24
echo round(-1.245, 2, PHP_ROUND_HALF_DOWN) . "\n"; // Affiche -1.24
 
// Arrondi bancaire (arrondi au nombre pair le plus proche)
echo round(1.245, 2, PHP_ROUND_HALF_EVEN) . "\n"; // Affiche 1.24
echo round(1.235, 2, PHP_ROUND_HALF_EVEN) . "\n"; // Affiche 1.24
 
// Arrondi au nombre impair le plus proche
echo round(1.245, 2, PHP_ROUND_HALF_ODD) . "\n"; // Affiche 1.25
echo round(1.235, 2, PHP_ROUND_HALF_ODD) . "\n"; // Affiche 1.23
Libellés : ,

30
dec
2009

Google Closure dispose d'une classe bien pratique nommée goog.i18n.NumberFormat qui permet de formater des nombres.

Formatage de monnaie

goog.require("goog.i18n.NumberFormat");
goog.i18n.NumberFormatSymbols = goog.i18n.NumberFormatSymbols_fr_FR;
var fmt = new goog.i18n.NumberFormat(
  goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN
);
alert(fmt.format(1243.567)); // Affiche 1 243,56 €
Libellés : ,

04
dec
2009

Je viens de tomber sur un méchant bogue dans mon application. Il est du à une subtilité dans les formats ISO proposés par Zend_Date.

Le problème se situe au niveau des années. Zend_Date propose deux formats différents : yyyy et YYYY. Le premier, celui avec les y en minuscules fournit le résultat auquel on peut s'attendre, alors que le deuxième renvoie l'année dans lequel se situe la semaine !

Libellés : , ,

13
nov
2009

goog.require

Cette fonction est à la base du système de paquets de Google Closure. D'une façon similaire à la fonction require_once de PHP, elle permet d'inclure les dépendances. Techniquement parlant, elle charge les scripts nécessaires en ajoutant des balises SCRIPT. Le problème c'est que le chargement de ces scripts se fait de façon asynchrone.

Libellés : ,

11
nov
2009
Un exemple de calendrier

Google vient de publier Closure qui est un ensemble d'outils destinés à faciliter le développement d'interfaces Web. Basé sur HTML + CSS + Javascript, cette boite à outils comprend notamment :

  • Le compilateur Closure : ce n'est pas vraiment un compilateur, mais plutôt un outil qui permet d'optimiser du code Javascript. Il effectue une série de vérification sur le code, supprime les parties non utilisées et en réécrit certaines pour accélérer l'exécution du script.
  • La bibliothèque Closure : c'est un ensemble de script Javascript qui fournit des contrôles (boutons, menus...) pour créer des interfaces utilisateurs et toutes une panoplie de fonctions pour manipuler le DOM, communiquer avec le serveur, réaliser des animations...
  • Les modèles Closure : Google fournit un compilateur (sous la forme d'une archive JAR) qui prend en entrée des fichiers modèles (ou templates si vous préférez) portant une extension .soy et qui génère des scripts .js. Ces scripts peuvent ensuite être utilisé pour générer du HTML.
Libellés : ,

05
nov
2009

Ca doit être une erreur qui n'arrive pas souvent pour encore se trainer avec un logo du siècle dernier...

Logo Google Vintage