Web-développeur et Administrateur système Freelance au Luxembourg, j'ai mis en place ce blog pour vous permettre de suivre l'évolution de ma société et partager avec vous quelques lignes de code.
Olivier
web 2.0

Optimisation des tables du serveur Oxyweb

Suite à mon message précédent concernant l’optimisation des tables mysql, j’ai mis en place une exécution automatique de ce script sur tous les serveurs d’hébergement Oxyweb au milieu de la nuit.

Le bureau du jour

Hop hop, j’inaugure aujourd’hui une série de photos que j’ai intelligemment et opportunément intitulée “Le bureau du jour”. Mais en quoi cela consiste me direz-vous ? Et bien comme son nom l’indique (et c’est là que c’est très fort, vous allez voir) je vais y poster des photos de mon bureau !!

Extraordinaire idée ayant germée dans mon brillant cerveau fécond car il est vrai que je change souvent d’emplacement mes différents outils de travail.

Voici la première photo de la série:

16/09/2008

On y trouve:
- une chaise de compétition dont le confort égale son prix
- un titeuf râleur offert par ma mère (serait-ce un message caché ??)
- mon GSM
- un MacBook posé sur un griffin elevator
- les deux écrans de mon G5
- ma tasse de café du jour
- la jarretière de la femme à Yohan
- mes notes
- ma souris
- le bordel habituel: stylo, télécommande frontrow, postit, barrette de Ram morte, thermomètre, …

Boitier Antec pour le serveur de backup

J’ai migré mon serveur de backup interne dans un boîtier 4U Antec Take 4. Ce produit a l’avantage d’être carrément silencieux, il dispose de 2 gros ventilateurs à l’arrière, que l’on peut régler sur Low/Medium/High
L’alimentation dispose de son propre circuit de refroidissement, l’air étant aspiré à l’avant du boitier dans un canal dédié. Son ventilateur ne se déclenche que lorsque la température de l’alimentation le nécessite, ce qui reste rare et silencieux dans mon cas.

P1150717.JPG
P1150724.JPG

La machine se trouve dans une baie non ventilée, et se porte très bien en dessous de sa petite soeur, mon fileserver.

Petits inconvénients toutefois:
- les connecteurs de l’alimentation pour la carte mère sont un peu courts dans certains cas
- la baie des 4 disques durs n’est pas ventilée
- pas de ventilateur en facade 

J’ai farci cette machine de 4 disques Sata2 de 500G en raid5 sur une carte 3Ware 8506-4LP, ce qui me fait un disque virtuel utilisable de 1.5To avec de bons débits pour un simple serveur de backup.

Voici le résultat d’un hdparm sur cette machine:

zeus ~ # hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 1300 MB in 2.00 seconds = 649.42 MB/sec
Timing buffered disk reads: 310 MB in 3.02 seconds = 102.80 MB/sec

En comparaison avec un raid10 software de 4 disques Sata2 de 1To:

hercule ~ # hdparm -tT /dev/md2
/dev/md2:
Timing cached reads: 2426 MB in 2.00 seconds = 1213.14 MB/sec
Timing buffered disk reads: 500 MB in 3.00 seconds = 166.42 MB/sec

Un script bash pour optimiser les tables mysql

Et hop voilà un petit script bien pratique pour voir l’état de fractionnement des tables de votre serveur mysql:

#!/bin/bash
# -l 5 : parameter to launch OPTIMIZE query
while getopts ‘D:d:u:p:s:l:’ OPTION ; do
case $OPTION in
D)   defaults_file=“–defaults-file=$OPTARG”;;
d)   DB=$OPTARG;;
u)   user=“-u $OPTARG”;;
p)   pwd=“-p$OPTARG”;;
s)   socket=“–socket=$OPTARG”;;
l)   level=“$OPTARG”
esac
done
mysql=“mysql $defaults_file $user $pwd $socket”
if [ -z “$DB” ]
then
DB=`$mysql -N -e “show databases”`
fi
if [ -z “$level” ]
then
level=“101″
fi
for db in $DB
do
for table in `$mysql -N $db -e “show tables”`
do
ENGINE=$($mysql $db -e “show table status like ‘$table’\G |  awk ‘/Engine/ {print $2}’)
if [ “$ENGINE” == “MyISAM” ]
then
SIZE=$($mysql $db -e “show table status like ‘$table’\G | awk ‘/Data_length/ {print $2}’)
FREE=$($mysql $db -e “show table status like ‘$table’\G  | awk ‘/Data_free/ {print $2}’)
ROWS=$($mysql $db -e “show table status like ‘$table’\G | awk ‘/Rows/ {print $2}’)
if [ $FREE -gt 0 ] && [ $SIZE -gt 0 ]
then
FRAGMENTATION=$(printf ‘%i’ $(echo “scale=0; $FREE/($SIZE/100)”|bc))
echo “$FRAGMENTATION% $db.$table [Data_length=$SIZE Data_free=$FREE]“
if [ $FRAGMENTATION  -ge $level ]
then
echo “OPTIMIZE REQUESTED”
$mysql $db -e “use ‘$db’;OPTIMIZE TABLE $table\G
fi
fi
fi
done
done

Le script a besoin d’informations de connexion à la base mysql, soit en ligne de commande, soit via un fichier .my.cnf

Il peut analyser une database particulière ou toutes celles du système si aucune n’est fournie en paramètre.

Il peut déclencher l’exécution de la commande OPTIMIZE TABLE si le taux de fragmentation de la table dépasse le seuil founi dans le paramètre -l

Par exemple: ./optimize_tables -u root -pxxxxxxx ou ./optimize_tables -l 10

PS: ce script ne fonctionne qu’avec des tables au format MyISAM, la fonction OPTIMIZE ne fonctionnant pas pour de l’InnoDB

Problème d’accent dans un export CSV en PHP

J’ai passé pas mal de temps aujourd’hui pour trouver une solution à ce problème pourtant fort simple:

Exporter dans un CSV des données venant d’une base Mysql en UTF8 (avec des accents un peu partout) avec un script lui même encodé en UTF8.

Et bien vous pouvez me croire et demander confirmation à Ludo, c’est pas si simple, à tel point que la solution est perdue dans un message du site www.php.net sur la page de l’extension mbstring: utiliser le charset UTF-16LE

Pour faire court, voici un exemple de code PHP qui fonctionne:

header(“Content-type: application/vnd.ms-excel; charset=UTF-16LE”);
header(“Content-disposition:  attachment; filename=candidats-” .date(“Y-m-d”).“.csv”);
$out = fopen(‘temp.csv’, ‘w’);
$line = array(‘nom’, ‘prénom’, ‘âge’, ‘matricule’);
fputcsv($out, $line);
fclose($out);
$retfile_get_contents(‘temp.csv’);
echo chr(255).chr(254).mb_convert_encoding( $ret, ‘UTF-16LE’, ‘UTF-8′);

La dure vie d’un développeur ….

Mon dieu que tout celà est vrai….

Un site internet, ça rapporte combien ?

Prenons un exemple concret: www.troconet.net mon premier site en php/mysql commencé en 2000 (c’est dire si ca date, à l’époque on codait en PHP 3 et mysql 3 sous apache1 et le site était hébergé sur un PII 400Mhz sous un lit en AOL RTC illimité…) 

Voici un graphique de l’évolution du trafic en visiteurs et en pages vues ainsi que des revenus en centimes d’euros (autrement dit pour avoir des euros, il faut diviser par 100, facile).

Revenus Troconet

Pour information, les revenus sont uniquement générés par des bannières présentes sur le site à différents endroits, le site étant gratuit à l’usage pour les internautes.

Sans grande surprise, les revenus suivent l’évolution de la fréquentation, c’est donc le premier facteur important. 

Entre 2004 et 2005, les placements des bannières ont été optimisées, on en retrouve par exemple sur chaque fiche d’annonce sous une section “Utile” (voir cette fiche par exemple) ou encore sur la page de validation d’ajout d’une annonce dans l’espace membre. Ces simples optimisations ont permis de faire passer la “valorisation” d’un visiteur de 0,34 ct d’euro à 3,4 ct d’euro, avec un revenu annuel de plus de 22 000€. Le placement et la contenance des bannières est donc le deuxième facteur pour générer des revenus sur un site.

En 2006, j’ai lancé ma société, je n’ai plus eu de temps à consacrer au site, la fréquentation et les revenus ont logiquement dégringolé. Les 650 000 visiteurs de 2005 ne représentaient donc pas la masse critique nécessaire à ce genre de site pour s’auto-renouveler. Couplé à un manque d’innovation et de nouveauté, les internautes se sont détournés du site. Voilà le troisième facteur, s’occuper quotidiennement de son site.

Je pense qu’il est encore possible de générer des revenus conséquents avec des sites ayant une bonne valeur ajoutée par rapport à leurs concurrents, bien que les modèles de rémunérations basés exclusivement sur le bannering ne soient plus la panacée.

A quand la prochaine version de www.troconet.net ?

CV mis à jour

Je suis dans ma période de remise à niveau graphique. Cette fois-ci, c’est mon CV qui a subi un petit lifting grâce aux thèmes intégrés dans Pages, le logiciel de traitement de texte d’iWork d’Apple.

Il est disponible dans la page idoine

Nouveau site pour www.oxyweb.com

Après plusieurs mois de mise en place technique concernant les robots de gestion du serveur, je viens de mettre en ligne le nouveau site du service Oxyweb. Vous pouvez dès à présent consulter les offres et vous inscrire au service. Sur les conseils de Ludo, j’ai ajouté des vérifications ‘temps réel’ sur le formulaire de contact et celui d’inscription. 

Le site utilise quelques plugins jQuery, dont fancybox, pngFix, jquery.listen et jquery.form

Comme toujours, le design originel n’est pas de moi :) il s’agit d’un template css appelé StandardIssue disponible sur freecsstemplates et modifié à ma convenance personnelle.

L’espace client viendra par la suite.

Le HD est mort, vive le bluray …

.. oui mais non !

ce qui est bien avec format qui disparait, c’est que le support ne vaut plus rien. Après les platines, c’est au tour des galettes de dégringoler, et à 4 ou 7 euros l’unité (pas tous encore, je vous le concède) sur des sites comme Amazon, ca serait dommage de ne pas en profiter jusqu’au bout

P1150677.JPG

Je sais, dans le tas, y’a pas le film de l’année, mais je m’en fous, ca suffira largement à en mettre plein le nez à mon ampli et ma télé :)

« Messages précédents Messages suivants »