Skip to Content

Web Storage

Written on janvier 26, 2012 at 20 h 47 min, by

HTML5 change la donne, nous faisons déjà du stockage côté client avec les cookies, mais ils sont limités à 4Ko et ont quelques défauts (sécurité, difficultés à gérer le multi-tab…). Web Storage est bien plus puissant et facile à manipuler.

Le principe est vraiment très simple : c’est un stockage sous la forme clé / valeur. Il y 2 mode de durée : sessionStorage ou localStorage.

// Stocker une valeur
sessionStorage.setItem('key', 'value');
localStorage.setItem('key', 'value');
 
// Récupérer une valeur
var item = sessionStorage.getItem('key');
var item = localStorage.getItem('key');
 
// Supprimer une valeur
sessionStorage.removeItem('key');
localStorage.removeItem('key');
 
// Supprimer toutes les valeurs
sessionStorage.clear();
localStorage.clear();

Support des navigateurs :

Voici quelques raisons justifiant l’utilisation de Web Storage dans le développement d’applications :

  • permettre à l’application de fonctionner en mode hors-ligne (stocker les données saisies en local et les synchroniser avec le serveur une fois connecté) ;
  • améliorer les performances (mettre en cache des données) ;
  • se passer d’un développement serveur ;
  • stocker par instance et non par domaine (contrairement aux cookies) ;
  • ne pas transmettre les données sur le réseau (contrairement aux cookies encore une fois) ;
  • disposer d’un espace de stockage important (5 Mo).

 

Certains points négatifs sont aussi à prendre en compte :

  • les données stockées sont vulnérables (visibles et modifiables par le client) ;
  • elles sont stockées dans un seul navigateur et il n’est donc pas possible d’y accéder depuis un autre ordinateur ou navigateur.

phploc et phing

Written on janvier 26, 2012 at 16 h 34 min, by

PHP Loc est un outil PHP vous permettant d’analyser votre code et d’obtenir un résultat sous la forme d’une sélection statistique.

Les résultats proposés, retournent le nombre de répertoires, de fichiers, les interfaces, méthodes et les fonctions.

<target name="phploc" description="Measure project size using PHPLOC">
	<exec executable="phploc">
		<arg value="--log-csv" />
		<arg value="./logs/phploc.csv" />
		<arg path="./application" />
	</exec>
</target>

Composer et Phing

Written on janvier 26, 2012 at 16 h 32 min, by

Vous pouvez vous faire des target phing pour gérer composer :

<target name="composer-install">
    <exec command="composer install" dir="." />
</target>

<target name="composer-install">
    <exec command="composer update" dir="." />
</target>

phing

Written on janvier 26, 2012 at 16 h 11 min, by

Phing est un super outil basé sur Apache ANT (http://www.phing.info) et destiné à PHP. Vous pouvez l’utiliser pour vous assister dans la réalisation de certaines tâches tout au long du cycle de vie de vos projets tels que la génération de code, la construction des releases, la génération de la documentation, la génération de rapports (tests unitaires, couverture du code, aspect du code…), le déploiement dans différents environnements…

Toutes les informations dont Phing a besoin pour fonctionner sont rassemblées dans le fichier build.xml. Ce fichier doit être présent à la racine du projet.

Exemple de fichier build.xml :

<?xml version="1.0" encoding="UTF-8"?>
 
<project name="GCR_2.5" basedir="." default="default">
 
	<property file="./build.properties" />
 
	<target name="default">
		<echo>${version}</echo>	
	</target>
</project>

Exemple de target pour l’exécution des tests unitaires :

<target name="run-tests">
    <exec command="php ./library/mageekguy/atoum/scripts/runner.php -bf ./tests/bootstrap.php -d ./tests" output="./logs/report.log" dir="." />
</target>

Exemple de target pour la génération de documentation :

<target name="doc-create" description="create de documentation with the phpdocumentor" depends="doc-clean">    
		<phpdoc title="API Documentation"
			destdir="./docs/src/"
			sourcecode="false"
			output="HTML:default:default"
			quiet="true">
				<fileset dir="./application">
					<include name="**/*.php" />
				</fileset>
		</phpdoc>
		<echo>Documentation created!</echo>
	</target>

HTTP URL taille max

Written on janvier 17, 2012 at 14 h 43 min, by

Une URL n’est pas infinie comme définie par la RFC2616,

Elle a une taille max définie en fonction des navigateurs :

  • IE4 a IE8 => 2083 caractères (source)
  • Firefox, Opera, Safari => 80 000 caractères

un super article sur le sujet ici.

ZF – installation

Written on janvier 16, 2012 at 13 h 37 min, by

1) Télécharger la dernière version du framework ici

2) Déplacer le dans le répertoire suivant :

  • GNU/Linux ou Mac : /usr/local/share/ZendFramework
  • Windows : C:\Program Files\Zend\ZendServer\share\ZendFramework

3) Inclure le répertoire library du framework dans le include_path du php.ini

4) Créer un nouvel alias pour GNU/Linux ou Mac :

alias zf.sh=/usr/local/share/ZendFramework/bin/zf.sh

Gérer Composer sous Eclipse

Written on janvier 8, 2012 at 12 h 13 min, by

L’outil Composer peut être géré dans Eclipse via les External Tools, voici ma méthode :

1) Télécharger Composer et le disposer dans le répertoire /usr/local/bin comme conseillé.

2) Aller dans l’item External Tools configuration :

2) Ajouter un nouveau program  : Composer (install)

3) Refaire la même configuration de program mais cette fois ci pour Composer (update) :

 

Voila vous avez maintenant les deux commandes : Composer(install) et Composer(update), qui sont disponible pour n’importe quel projet PHP.

Composer : Package Manager for PHP

Written on janvier 8, 2012 at 11 h 39 min, by

Composer – Package Management for PHP

Composer is a package manager tracking local dependencies of your projects and libraries.

Exemple de fichier composer.json :

{
"name": "my-project",
"version": "1.0.0",
"config": {
"vendor-dir": "library"
},
"repositories": {
"Mageekguy": {
"vcs": {
"url": "git://github.com/mageekguy/atoum.git"
}
}
},
"require": {
"mageekguy/atoum": "master-dev",
"silex/silex": "1.0.0-dev"
}
}

 

Exemple de fichier index.php :

<?php
require __DIR__.'/.composer/autoload.php';
 
$app = new Silex\Application();
 
$app->get('/hello/{name}', function($name) use($app) {
return 'Hello '.$app->escape($name);
});
 
$app->run();
 
?>

 Quelques pistes :

  • https://github.com/composer/composer
  • http://nelm.io/blog/2011/12/composer-part-1-what-why/

Blueprint Framework CSS

Written on octobre 9, 2011 at 17 h 57 min, by

Le principe d’utilisation de BluePrint est extrêmement simple, et suit parfaitement le concept de Grid CSS: le design est un agencement de blocs dont la taille est multiple de 40px (largeur 30px, marge 10px).

sources :