protéger un ou plusieurs fichiers par htaccess

Nous avons vu dans précédent article comment protéger un répertoire avec htaccess, c’est l’utilisation la plus courante de cette technique, mais ici nous allons nous intéresser a comment faire la même chose mais pour protéger uniquement un ou quelques fichiers d’un répertoire, c’est à dire, dans le même répertoire, certains fichiers seront protégés mais pas d’autres.

pour protéger un seul fichier voici ce qu’il faut mettre dans le .htaccess :

<files fichier.ext>
require valid-user
</files>

pour en protéger plusieurs :

<files fichier1.ext fichier2.ext fichier3.ext>
require valid-user
</files>

cette syntaxe est a utiliser en complément de celle expliquée dans l’autre article bien sûr.

bonne protection de fichiers…

Share

Lighttpd vs Apache vs Lighttpd + Apache

Il fut un temps où on ne se posait pas de question quant au serveur web, on prend Apache et on en parle plus, aujourd’hui les choses ont changé, Apache reste quand même le plus utilisé avec plus de 66% des parts de marché, suivi par IIS, puis tous les autres « petits » derrière, néanmoins en fonction des besoins, certains de ces petits peuvent s’avérer bien plus performants qu’Apache, aujourd’hui on va tester 3 configurations possibles avec Apache et Lighttpd.

d’après ce qu’on peut lire un peu partout sur le net, Lighttpd (lighty pour les intimes) est beaucoup plus performant quand il s’agit de servir des pages statiques, mais qu’en est-il vraiment ? et comment s’en sort-il avec le contenu dynamique ? (des sites statiques ça n’existe plus de nos jours ^^).

pour notre test, on va prendre un site très léger, basé sur Zend framework (donc loin d’être statique), contenant une page qui affiche 9 images au hasard a partir d’une tables mysql contenant environ 1000 enregistrements (seulement les emplacement des images sont stockés dans la base). Le serveur de test est un kimsufi L (petit processeur et 1Go de RAM).

versions utilisées :
Apache 2.2.9
Lighttpd 1.4.19
PHP 5.2.6

pour les tests on utilise siege, on lance donc un siege avec 100 concurrency sur 10 minutes, voici la commande :

siege -c100 -t10M URL_DU_SITE

on note également le Load average de la machine a la fin de l’opération.

1ère configuration : Lighttpd tout seul

voici le resultat :

Load average : 4.87
 
Lifting the server siege...      done.
Transactions:		       23859 hits
Availability:		      100.00 %
Elapsed time:		      600.37 secs
Data transferred:	       83.25 MB
Response time:		        2.02 secs
Transaction rate:	       39.74 trans/sec
Throughput:		        0.14 MB/sec
Concurrency:		       80.21
Successful transactions:       23859
Failed transactions:	           0
Longest transaction:	        5.20
Shortest transaction:	        0.10

2ème configuration : Apache2 tout seul

le résultat :

Load average : 77.51
 
Lifting the server siege...      done.
Transactions:		       23543 hits
Availability:		      100.00 %
Elapsed time:		      599.66 secs
Data transferred:	       82.16 MB
Response time:		        2.04 secs
Transaction rate:	       39.26 trans/sec
Throughput:		        0.14 MB/sec
Concurrency:		       80.22
Successful transactions:       23543
Failed transactions:	           0
Longest transaction:	       10.51
Shortest transaction:	        0.05

3ème configuration : Lighttpd + Apache

maintenant faisons le test en couplant les 2, dans cette configuration tout ce qui est statique (images, css, js, etc.) sera servi par lighty alors que les scripts php eux, seront traités par apache, pour cela on active le mod_proxy dans lighty, et on ajoute le code suivant dans le vhost de notre site :

 $HTTP["url"] !~ "\.(js|css|gif|jpg|png|ico|txt|swf|html|htm)$" {
               proxy.server  = ( "" => (
                               ( "host" => "127.0.0.1", "port" => 8080 )
                       )
               )
       }

vous l’aurez compris, Apache écoute sur le port 8080 (c’est fait en changeant le fichier /etc/apache2/ports.conf).

voici le résultat :

Load average : 14.79
 
Lifting the server siege...      done.
Transactions:		       22684 hits
Availability:		      100.00 %
Elapsed time:		      600.25 secs
Data transferred:	       79.10 MB
Response time:		        2.13 secs
Transaction rate:	       37.79 trans/sec
Throughput:		        0.13 MB/sec
Concurrency:		       80.53
Successful transactions:       22684
Failed transactions:	           0
Longest transaction:	        8.61
Shortest transaction:	        0.07

plutôt surprenant !

Conclusion :

Lighty s’en sort très bien au vu des transactions/s (ou le nombre total de transactions traitées), contrairement a ce qu’on pouvait attendre, coupler les 2 nous fait perdre en performances (on enregistre quand même un load average nettement inférieur a la config d’apache tout seul).

personnellement ce que je retiens, c’est que lighty n’est pas si mauvais que ça pour le contenu dynamique, les performances restent quand très proches dans les 3 cas, donc autant utiliser la solution qui nous plait 🙂

Share

Masked Input Plugin

Ou comment permettre à un utilisateur se saisir plus facilement dans un formulaire des données a longueur fixe, ou de format spécifique (dates, numéros de téléphone, etc.) sans se préoccuper du formatage.

C’est un plugin pour jQuery, il a été testé sur Internet Explorer 6 / 7, Firefox 1.5/2/3, Safari, Opera et Chrome.

Son fonctionnement :
on va prendre un champ date au format dd/mm/YYYY pour l’exemple :

quand le champ du formulaire reçoit le focus, le plugin va automatiquement pré-remplir le champ avec « __/__/____ » et votre saisie va automatiquement remplacer la chaine par défaut, ainsi pour une date vous n’aurez pas a saisir les / juste les information de la date, ce qui est quand même pas mal pour l’utilisateur final.

vous trouverez plus d’exemples sur cette page : Masked Input Plugin

l’onglet « usage » vous sera de grande utilité pour la partie implémentation et utilisation.

voici une vidéo pour illustrer quelques exemples :


 

Share

Internet Explorer 8

IE 8 a été annoncé en version finale lors du MIX09 de Microsoft qui s’est déroulé du 19 au 20 mars à Las vegas. Tout le monde peut le télécharger depuis le 19 mars.

Du coté des développeurs cette version est très attendue, surtout après une version 7 un peu décevante… Donc qu’en est-il avec cette nouvelle version ?

Chez nous les développeurs, la règle d’or est : « on ne réinvente pas la roue ! », du coup au lieux de vous faire un article en 30 pages, je vais juste relayer un super article fait par Alsacréations avec toutes les nouveautés d’IE8, tout ce qu’il supporte, ne supporte pas, etc. en résumé : un article complet sur IE8, bonne lecture…

Share

Partager un répertoire Windows avec VirtualBox

Dans cet article nous allons voir comment partager, facilement, un répertoire Windows avec une machine virtuelle sous VirtualBox.

Tout d’abord, précisions l’environnement :
Il s’agit d’un système Hôte sous Windows XP, nous installons dessus le logiciel VirtualBox, et dans ce dernier nous créons une machine virtuelle tournant sous Linux (Systême guest).

Pour commencer il faut installer les additions client pour notre VirtualBox, pour cela je vous renvoie à notre article : Additions client pour VirtualBox.

Une fois les additions client installées, procédons comme suit :

  1. Sélectionner la machine virtuelle est cliquez sur « Répertoires Partagés« 
  2. Cliquez sur le « + » (PLUS) a droite de la fenêtre qui s’ouvre et sélectionner un répertoire à partager, vous pouvez lui donner un nom
  3. Valider et démarrez votre machine virtuelle

Maintenant, nous allons voir comment monter le partage du coté de notre système guest (Linux), pour cela, exécutez la commande suivante :

mount -t vboxsf NOM_PARTAGE POINT_MONTAGE

où :
NOM_PARTAGE est le nom que vous avez donné à votre répertoire partagé lors de sa sélection.
POINT_MONTAGE est le point (répertoire, ou encore emplacement) dans la machine virtuelle dans lequel vous voulez monter le répertoire.

voici un exemple avec un partage nommé Downloads :

mount -t vboxsf Downloads /mnt/downloads
Share