juil 01

Introduction

Q : Pourquoi maitriser le shell ?

R : Parce que ca fait gagner un temps fou, que c’est propre, pêrmbeau, systématique, rapide et quasi illimité en terme de possibilités.

Merci à Adrien Urban de NBS System pour la création de ce support. Il vous sera peut être utile pour dédoubloner un fichier de clients ou de commandes, peut être pour faire certains tris dans vos bases ou fichiers. Les hébergeurs comme NBS System ou d’autres fournissent des accès shell limités, mais qui permettent d’utiliser ces outils (ou une partie d’entre eux).

Ces outils seront d’ailleurs principalement utiles aux développeurs.

UNIX & son copain Posix, leurs vies, leurs œuvres

Voici un cour de shell bash/unix pour les gens qui ne sont pas à l’aise avec, essentiellement les développeurs. Ca fait gagner un temps fou.

C’est volontairement simplifié, le but c’est pas de faire des DEV des SR, c’est juste un manuel de survie, donc les SRS qui balanceront des “ouais mais en fait c’est pas tout à fait ca” :

cat /dev/urandom > /dev/tty_du_srs_en_question 2>&1 &

Il est important de noter que la première partie part du principe de base que les noms/mots/autres sont sans espace ou autres caractères spéciaux. Cet aspect est présente après le reste.

Les concepts de base

Les flux particuliers :

stdin (entrée standard) : ce n’est pas une commande, c’est un FD, file desciptor, spécial qui est le flux d’entrée. C’est le fd 0.
stdout (sortie standard) : celle que l’on utilise 90% du temps, FD, en résumé ce qui s’affiche en retour d’une commande. c’est le fd 1.
stderr : sortie d’erreur c’est le fd 2.

on en reparle après.

Les redirections :

| : celui qu’on appel “pipe” le plus régulièrement, permet de joindre la sortie standard d’une command à l’entrée standard d’une autre.
< : prend son entrée standard à partir fichier
> : redirige la sortie standard vers autre chose, un fichier par exemple ou /dev/null (dans l’espace)
(on peut préciser par exemple 2>&1 qui redirige la sortie d’erreur (2) vers la sortie standard (1))
>> : redirige en mode append, on ajoute les données à la fin du fichiers existant.

Cas concrets :

ls > toto.txt : redirige le contenu de la sortie de ls (les fichiers listés) dans le fichiers toto.txt
ls >> toto.txt : idem sauf que ca ajoute à la fin du fichier. WARNING la première (ls>toto.txt) détruit toto.txt si il existe déjà.
ls > /dev/null : renvoi la liste des fichiers dans l’espace (/dev/null = grosse poubelle géante de taille infinie)
ls | more : liste les fichiers et envoi le résultat à la commande more qui affichera page par page.
less < toto.txt : éjectera toto.txt dans l’entrée standard de less qui sortira un résultat page par page. (ceci dit ca revient au meme que faire directement less toto.txt mais j’avais pas d’exemple en tete)

Wilcards :

Comme sous Windows, on peut utiliser des jokers ou wildcards :

ls * affiche tous les fichiers (ceci dit c’est le comportement par défaut)
ls t?t?.txt : listera titi.txt toto.txt et tutu.txt enfin remplacera ? à la position voulu par n’importe quel lettre.
ls t*.txt : affichera tous les fichiers commencant par t et finissant par .txt
ls tata[1-3].txt affichera tous les fichiers commencant par tata suivi du chiffre 1, 2 ou 3 puis finissant par .txt
ls t[a-i]* affichera tous les fichiers commencant par t, suivi d’une lettre entre a et i
bien sur on combien à l’infini : ls t[1-3]abc?zz.t?t est donc une commande recevable

WARNING : Unix est TOUJOURS “case sensitive”. a n’est pas égal à A.
WARNING : Contrairement a Windows, le remplacement des wildcards est traité directement par le shell, indépendamment du programme appelé. Le programme reçoit donc directement la liste des fichiers qui correspondent, même s’il s’attendait a recevoir une expression qui contenait ces caractères la.

ls T* et ls t* retourneront donc des résultats différents ! C’est une règle valable pour TOUTES les commandes.
INFO : TAB complète dans le shell quand c’est possible, sinon propose des possibilités.

Les amis (commandes) :

ls : liste les fichiers et répertoire

ls liste les fichiers du répertoire courant
ls -l la même chose en mode colonne.
ls -l –color colore les fichiers en fonction de leurs droits et types
-r : récursif

cat : équivalent de type sous windows

cat toto.txt, affiche le contenu de toto.txt
cat toto.txt titi.txt > tutu.txt, concatene toto et titi dans le fichier tutu.txt
cat toto.txt titi.txt >> tutu.txt, concatene toto et titi à la fin du fichier tutu.txt
cat * : affiche le contenu de tous les fichiers du répertoire courant. donc cat * > tutu.txt, copie tout dans tutu.txt

On peut aussi s’en service pour écrire dans un fichier :

cat > test.txt, redirigera donc l’entrée standard vers test.txt, on tape ce qu’on veut au clavier puis à la fin on tape CTRL+d ce qui interrompt la saisie et stock le contenu dans le fichier. Très pratique pour creer un fichier rapidement. Si on veut écrire à la fin d’un fichier existant : cat >> test.txt

cut : coupe ce que l’on récupère en fonction d’un délimiteur précis

imaginons que le fichier toto.txt contienne :
abc.def.ghi test 123
zzz.aaa:bbb_456

pour afficher uniquement un des blocs séparé par un des séparateurs (en l’occurence . ou ” ” ou _) : cat toto.txt | cut -f 1 -d “.”

donnera en sortie :
abc
zzz
-f c’est le champs (field) et -d le séparateur.

donc pour obtenir uniquement 456 :
cat toto.txt | cut -f 3 -d “_” par contre la ligne “abc.def.ghi test 123″ ne contenant pas d’underscore, n’a pas de troisièmes champs… et seule une ligne vide sera affiché, mais on verra plus loin comment éviter ca.

grep : affiche la pattern recherchée parmis des fichiers ou un flux

ls -l | grep toto.txt ne retournera que les lignes avec toto.txt parmis tout le résultat du ls.

cat toto.txt | grep “henri” n’affichera que les lignes du fichier toto.txt qui contiennent “henri”

cat toto.txt | grep “henri” | grep -v “IV” n’affichera que les lignes du fichier toto.txt qui contiennent “henri” mais pas celle contenant “IV”

le -v exclue le mot qui suit.
l’option -r fait un grep récursif,
l’option -i ignore la case (plus de distinction majuscule/minuscules),
l’option -n  affiche egalement les numeros des lignes : grep -nri henri . | grep -v “IV”

sortira tous henri de tous les fichiers du répertoire courant et des sous répertoire, peut importe que ce soit henri ou HENRI ou HeNrI, sauf les ligne contenant également “IV”. Chaque ligne aura le nom du fichier, le numero de la ligne, ainsi que le contenu de la ligne en question.

les options -A et -B sont pratique, c’est After et Before.

donc grep -A 2 -B 3 henri toto.txt sortira toutes lignes avec henri mais aussi les 3 lignes précédentes et les 2 lignes suivantes.

find : trouve des fichiers à partir d’un chemin précis et permet d’executer une commande dessus

find a plein plein d’options, je n’en montrerai ici que deux qui sont classiques et utiles
find . -name “*.txt” -print : trouvera récursivement tous les fichiers avec l’extension .txt à partir du répertoire courant “.”
find . -name “*.txt” -exec rm ‘{}’ \;

bon celle là elle est un peu funky en terme de synthaxe, mais :

le {} désign la liste de ce qui a été retourné par find et le -exec y applique une commande. En l’occurence rm qui efface les fichiers.

donc cette ligne de commande trouvera à partir du répertoire courant et dans tous les sous répertoire les fichiers avec extensions .txt, et les effacera.

find . -exec grep -q www.nbs.fr ‘{}’ \; -print

Afficher tous les fichiers contenant www.nbs.fr.On pourra ensuite y appliquer un autre traitement, par exemple avec sed pour remplacer www.nbs.fr automatiquement par www.nbs-system.com.

Note, il existe aussi l’option -iname qui fait comme -name, mais sans tenir compte de la case des noms de fichier.

locate : trouve des fichiers à partir d’une DB générée la nuit

le système linux, en général, fait tourner régulièrement un programme qui met à jour le contenu d’une base stockant tous les fichiers de toutes les partitions.

l’avantage par rapport à find c’est qu’au lieu de chercher en live, on a un “cache” donc ca va beaucoup plus vite.

locate *.txt donnera la localisation de tous les fichiers .txt partout sur le système instantannément sans faire la recherche. Le défaut c’est que si vous avez un nouveau fichier depuis le dernier uptade de la base, il ne sera pas montré. Pour forcer l’update de la base en live : updatedb

Note: afin d’eviter certain probleme de droits sur la base, il est conseille de ne pas lancer updatedb a la main directement. Le script (emplacement sous debian) /etc/cron.daily/find le lance avec les bons arguments.

sort : permet de trier un flux

Trie les lignes…

cat dictionnaire.txt | sort > dictionnaire_trié.txt
cela va trier par ordre alphabétique le dictionnaire “dictionnaire.txt” et écrire le résultat dans dictionnaire_trié.txt
-r ca le fera à l’envers (reverse), la commande est simple mais elle a pas mal d’options différentes à apprécier :)

uniq : permet de rendre unique les données qui sorte d’un flux

Supprime des lignes identiques qui se suivent…

cat fichier_plein_de_doublon.txt | sort |
uniq > fichier_dédoublonné_et_classé.txt

si le fichier contient :
titi
titi
toto
tutu
tata
tutu

ca donnera :
tata
titi
toto
tutu

sed : permet de remplacer des strings par d’autres dans un flux ou des fichiers

sed est un couteau suisse du traitement des flux. Il est capable de faire énormément de choses. Nous allons voir une toute petite partie de sed, la partie la plus utilisée.
sed permet surtout de remplacer une chaine par une autre
sed s/www.nbs.fr/www.nbs-system.com/g index.html

Affiche le contenu de index.html en remplacant toute les occurrence de www.nbs.fr par www.nbs-system.com

La syntaxe de base est s/chaine d’origine/chaine a mettre/options ou :
-        Le s au debut signifie substitution
-        Le / qui separe les differentes partie peux etre en fait n’importe quel caractere. Il faut le prefixer d’un backslash (\) si on souhaite utiliser le caractere en question ailleur.
-        La chaine d’origine est en fait une regex, tout comme les recherches avec grep.
-        Les options peuvent contenir:

o       g – remplace toutes les occurrences sur une meme ligne.
o       i -Cela permet de faire une recherché de chaine sans tenir compte de la case
o       p – affiche la ligne s’il y a eu une substitution

On a un code dans lequel il y a des requetes SQL qui n’ont pas tenu compte de la case des noms de tables ou de champs (mysql sous windows a tendance a s’en foutre de la case) et on veux le faire passer sous unix.

Dans un premier temps, on affiche uniquement les lignes qui changent (option -n pour ne pas afficher par defaut, et le p de la substitution), de facon a verifier que cela ne fait pas de betises :

sed -n ’s/MaJoLiE_tAbLe/majolie_table/igp’ fichier.php

Une fois que la substitution s’effectue correctement :

mv fichier.php fichier.php.old &&
sed ’s/MaJoLiE_tAbLe/majolie_table/ig’ fichier.php.old > fichier.php

A noter que l’on a plus ni le -n, li le p, de façon a bien afficher tout le fichier d’origine.

Les regex, explications complete :

  • X                 un caractere de base correspond a lui-meme
  • .                 le point correspond a n’importe quel caractere (comme ? en shell)
  • ^                 S’il est place au debut correspond au debut de ligne.
  • $                 s’il est place en fin, correspond a la fin de ligne
  • [aoeuiA-Z]   Les classes de caracteres. N’importe quel caractere qui correspond (voyelle en misucule, ou une majuscule)
  • [^0-9]         un caractere qui n’est PAS un chiffre
  • [0-9]*         * correspond a 0-n fois ce qui precede. Ici, rien ou une suite de chiffres.
  • S\?              \? Correspond a 0 ou une fois ce qui precede. Ici, rien ou un S.
  • \(abc\)        Les \(…\) permettent simplement de faire un groupe.

Par exemple : \(ta\)\* correspond a rien, ou une suite de ta.
-        X\|Y            correspondra X ou Y. Attention, il faut utiliser des () pour limiter l’etendu.

Dans la chaine de remplacement, le caractere & sera remplace par l’ensemble de la chaine d’origine (pratique pour la conserver, mais la commenter). D’autre part, \n ou n est un chiffre sera remplace par le texte correspondant au neme groupe (les parentheses).

Des exemples concrets :

Afficher toute les lignes commençant par une lettre minuscule
grep ‘^[a-z]‘
Ajouter un premier argument a toute les appels d’une fonction : sed ’s/ma fonction(/&1, /g’

Commenter tous les appels a la fonction prettylog (ne doit pas avoir de () dans les arguments:
sed ’s#prettylog([^()]*)#/* & */#g’

remplacer les fonction log_database(, log_engine( par log(”database”,  ou log(”engine”, :
sed ’s/log_\(database\|engine\)(/log(”\1″, /g’

Bien evidement, on reste dans l’optique du : sed ’s/…/…/g’ fichier1 > fichier2

tail : permet de voir la fin d’un fichier

tail toto.txt, affiche (par défaut) les 10 dernières lignes du fichier toto.txt

si vous avez à faire à un fichier qui change et qui grossit (genre fichier de log) et que vous voulez le suivre en continu :

tail -f toto.log : la commande ne s’arretera pas et continuera à vous montrer le fichier au fur et à mesure qu’il grossit.

head : permet de voir le début d’un fichier

comme tail mais pour montrer les lignes du début du fichier. (pas la peine d’essayer head -f)

chmod : permet de changer les droits d’un fichier ou répertoire

les droits sont cumulables, il existe read, write, execute. On va simplifier tout ca, mais il existe trois groupes à qui appliquer ces droits : le propriétaire du fichier, le groupe du fichier (généralement le groupe auquel appartient le propriétaire du fichier (voir chown)) et le propriétaire du fichier en lui même.

read vaut 4
write vaut 2
execute vaut 1

  • chmod 400 toto.txt donne les droits en lecture à root. chmod 444 toto.txt donne les droits en lecture à tout le monde.
  • chmod 555 c’est chmod 444 + chmod 111 soit les droits en lecture et en éxecution à tout le monde.
  • chmod 777 c’est lecture, écriture, exécution à tout le monde. (4+2+1 pour le propriétaire, le groupe et les autres).
  • chmod 000 enlève tous les droits à un fichier (notez que root bypass de toute façon ces droits)

Droits généralement utilisé :

600 – fichier normal, en lecture/ecriture uniquement pour son proprietaire
644 – pareil, et lecture pour les autres
700 – executable, en lecture/ecriture/execution uniquement pour son proprietaire
755 – pareil, et lecture/execution pour les autres

Note : un repertoire doit etre executable pour pouvoir aller dedans

Les droits peuvent egalement etre donner sous forme de modifications.

u – user
g – group
o – other
a – all

r – read
w – write
x – execute
X – execute si déjà present quelque part

chmod u+rw,go-w+rX

Ajoute les droits de lecture ecriture au proprietaire, enleve les droits d’ecriture au groupe et aux autres, leur donne le droit de lecture, ainsi que le droit d’execution si c’est un executable.

chown : permet de changer le proriétaire d’un fichier ou répertoire

Pour changer le proprietaire d’un fichier, il est necessaire d’etre root.

chown philippe:www-data toto.txt donne la propriété du fichier à philippe et l’affilie au groupe www-data.
chown xxx:yyy fichiers : xxx = user, yyy = groupe.

Donc si je veux donner la propriété et les droits à philippe et à tous les membres du groupe admin :
chown philippe:admin toto.txt

et avec un chmod 640 toto.txt je donne tous les droits de lecture/ecriture à philippe, la lecture au groupe admin, et aucun droits aux autres.

WARNING : un fichier en 777 est dangereux, tout le monde peut y écrire, a éviter en Web.
le truc classique en web qui passe (presque) dans tous les cas :
chown -R www-data.www-data *
chmod -R go-w+rX *

le -R dans ces commandes les rends récursives sur tous les fichiers et sous répertoires.

touch

touch crée un fichier vide s’il n’exite pas et change la date / heure à l’heure actuel si il existe.
touch toto.txt crée un fichier de toto.txt de 0 octets s’il n’existe pas et lui donne date/heure
au moment auquel commande est lancé s’il existe. Il existe d’autres options pour fixer une
date/heure précise entre autre.

mv / rm :

mv : c’est move.
mv toto.txt titi.txt renome toto.txt en titi.txt (attention, l’écrase s’il existe)

Note : mv permet egalement de renomer un repertoire, ou de deplacer plusieurs fichiers/repertoire vers un repertoire de destination.

rm toto.txt : efface le fichier toto.txt.
rm -r le fait récursivement. rm -f force l’effacement sans poser de question…

comme dans la plupart des commandes, on peut cumuler les switchs :

rm -rf * : efface récursivement tous les fichiers et répertoires situé sous le répertoire courant sans poser de question.

WARNING : guess why…

Lorsque vous utilisez mv ou rm de facon interactive, et que vous n’etes pas certain a 200% de votre ligne de commande (par exemple si c’est un via des variables, ou de l’expansion, …), utilisez l’options -i. Elle vous demandera confirmation avant d’écraser de façon irrémédiable des informations.

less / more :

Comme le dit régulièrement notre directeur technique, less can more. Donc less peut faire tout ce que fait more et plus.

Techniquement c’est bien aussi de connaitre more qui est en général plus utilisé dans les scripts ou les unix plus anciens (la ou il n’y a pas less)

less toto.txt va afficher le contenu (si il est en ascii, sinon en binaire il met un warning) du fichier toto.txt et bien sur ca se pipe :

grep henri toto.txt | less

pendant l’execution de more ou less vous pouvez appuyez sur / vous allez pouvoir rechercher dans le texte le mot qui vous intéresse.

echo :

echo affiche ce qui est en paramètre. echo est utile pour signaler quelque chose à l’utilisateur dans un script par exemple

(echo “Hello World”). echo peut aussi afficher le contenu d’une variable par exemple : echo $a ou encore se substituer à un ls en faisant echo * ou même à écrire dans un fichier echo YO > toto.txt.

la commande accepte beaucoup de switch, voir le manuel. (man echo)

man : les manuels des commandes

man ls
man awk (il fait mal à la tête celui la)

etc…

souvent sont aussi donné des références à d’autre man en pied de page du man.

par ailleurs man -k keyword recherche les pages de manuel qui parle de “keyword”.

Il existe plusieurs catégorie de man (1 à 8) de mémoire qui sont plus ou moins spécialisés. Généralement les commandes sont en man 1 (ce qui est le mode par défaut).

si vous voulez le man plus orienté programmation C d’une chose précise : man 3 sigpause man 2 c’est plus orienté sur les syscall. Bref vous c’est plutot le 1 donc man [commande].

Par défaut man vous affiche son contenu avec un pager (less), pendant l’exécution de man, vous pouvez donc appuyez sur / vous allez pouvoir rechercher dans le texte le mot qui vous intéresse également.

sudo / su : des commandes qui permettent de passer ou de lancer des commande en tant que Super Utilisateur (root quoi)

Arreter apache… : sudo apachectl stop

va prendre les droits root temporairement pour stopper apache, si vous êtes habitilité par le fichier sudoers à la lancer cette commande.

si c’est le cas, il vous suffit de retaper le mot de passe de votre utilisateurs sur le système pour lancer la commande.
su : permet de passer root en tapant le mot de passe du compte root de la machine.
sudo -s : permet de passer root, sans connaitre le mot de passe de root, si on y est autorisé par le fichier sudoers.

WARNING : root à TOUS les droits sans aucune limite de portée. Si vous demander au système d’écrire de la merde dans la ram, il le fera sans broncher, tout comme si vous lui demander de s’effacer lui même.

wc : compte les caractères, lignes ou les mots

wc -l toto.txt compte le nombre de ligne du fichier toto.txt
cat toto.txt | wc -l ca revient au même.
-m ou -c pour les charactères
-w pour les mots

awk : permet d’appliquer un traitement avancé de formatage à un flux ou d’un fichier

awk est un langage avec un synthaxe à part entière, pas simple de surcroit. C’est très puissant et très pénible. Personnellement je m’en sers que pour une chose, reformater une sortie standard.

Pour l’exemple, un fichier contenant :

tcpmux         1/tcp # TCP port service multiplexer
echo           7/tcp
echo           7/udp

les séparateurs de colonnes sont des tabulations (il y en a 2)… La joie…

Je veux afficher la colonne 1 et la colonne 3 en admettant que mes séparateurs sont des tabulations :

cat toto.txt | awk -F “\t” ‘{ print $1 $3 }’

le -F “\t” c’est pour dire que tabulation est le séparateur de champs. print $1 $3 affiche la premiere valeur et la 3°, selon ce séparateur.

bon le résultat est que j’ai :
tcpmux1/tcp
echo7/tcp
echo7/udp

si je veux y ajouter des espaces pour rendre ca lisible :

cat toto.txt | awk -F “\t” ‘{ print $1 “     ” $3 }’

Évidemment, ca peut se séparer selon un autre séparateur, par exemple le “/” :

cat toto.txt | awk -F “/” ‘{ print $1 “    ” $2 }’

retour de la commande :

tcpmux         1    tcp    # TCP port service multiplexer
echo           7    tcp
echo           7    udp

il a enlevé le séparateur au passage et l’a remplacé par 4 espaces.

Pour le moment c’est flou mais le jour où vous en aurez besoin, awk vous sauvera la vie ;-)

Dans le doute, man [nom de la commande]. Tous les admins lisent les mans, meme les SR/CQ expérimentés. Ca sert à rien de connaitre par coeur tous les switchs (options) d’une commande, le man est donc une référence régulièrement utilisée par tous.

Bash – gestion des commandes :

& : laisse un processus s’executer en tache de fond, et vous permet de continuer a travailler sur le shell

Genre find ca peut être long, donc mettre un find qui redirige son résultat dans un fichier et le laisser en tache de fond c’est parfois une bonne idée :

find /var/www -name ‘*.php’ > ~/find.log 2> ~/find.err &
fg / bg : met un processus en foreground (fg) ou background (bg).
fg %n : n étant le numéro du job si vous avez mis plusieurs jobs en background.
jobs : liste les jobs (en background ou suspendu)

Lorsque vous etes en train d’executer une commande, Contrôle-Z la suspend.
Foreground – repasse une commande suspendu ou en background au premier plan
Background – pareil que de l’avoir lancee avec &, la tache continue en fond.

ps aux : liste tous les processus

Une commande a un code de sortie. Ce code est presque toujours correspondant a la facon dont le processus c’est termine. Si ca c’est bien passé c’est 0 sinon c’est autre chose.

&& : permet de linker deux commandes, et de n’exécuter la deuxième que si la première a échouée.

rm toto.txt && echo “ok fichier effacé”

“ok fichier effacé” s’affichera que si le fichier toto.txt a été effacé.

|| : Inversement, ||  permet de n’executer la deuxieme partie que si la premiere n’a pas fonctionner.

rm toto.txt || echo “Erreur lors de la supression du fichier”

; : le point virgule est un délimiteur permettant d’enchainer les commandes mais sans vérifier que le retour de la précédente s’est bien passé. ls *; echo titi > toto.txt; cat toto.txt enchaine les 3 commandes.

export : plusieurs fonction, mais on va surtout utiliser export pour exporter une variable. (La rendre visible pour des programmes que vous lanceriez apres)

export a=”toto” (stock toto dans a, et exporte a)
ou export a=’ls’   (stock le retour stdout de la commande ls dans a et exporte a)

‘commande’ : c’est la quote (’) inverse (alt-gr 7 sur un azerty, la touche au dessus de tab sur un qwerty). backquoté une commande ou expression force son évaluation, et utilise sa sortie standard a l’endroit de la commande.

a=ls stock ls dans a. Si on veut stocker le résultat d’une commande ls dans a :
a=’ls’

Quoting

\ : n’interprête pas le caractère suivant le backslash. utile pour plein de truc.

exemple : “cd mon truc” ne marche pas. Il faut taper “cd mon\ truc” pour que l’espace entre mon et truc ne soit pas perçu par la commande comme étant deux paramètre distincts.

Il est également possible d’utiliser, de façon complètement équivalente :

cd mon\ truc
cd mon” “truc
cd “mon truc”
cd ‘mon truc’
cd mon’ truc’”

“ : double quotes. Entre double quotes, il n’y a pas de separation de mot, les variables ($a), double quotes, backquotes et backslash sont interprété. A utiliser de facon generale lorsque l’on utilise des variables, et que l’on ne veux pas avoir de separation de mot, ou de risque d’expansion. Essayez les commandes suivantes :

a=*
echo $a
echo “$a”

‘ : simple quotes. Entre simple quotes RIEN n’est interprete. Un autre simple quote met fin a la sequence sequence. Il n’y a AUCUN moyen de backslashe un simple quote dedans. Tres pratique quand on veux une chaine avec plein de double quotes, $ et autre qui reste exactement tel quel.

for : super important. Un exemple concret vaut mieux qu’un long discour. Je veux appliquer un traitement à tous les fichiers .txt du répertoire courant pour les renommer en .old :

for i in *.txt ; do mv -i “$i” “$i.old” ; done

on prend une variable i pour faire une boucle sur les mots que represente * (l’ensemble des fichiers du repertoire), ensuite on applique (do) avec $i qui est en fait une des valeurs de *, et on finit par done.

TRESSSS pratique…

Autre cas, d’utilisation : for ((i=0 ; i < 10 ; ++i)) ; { echo $i ; }

Affiche les chiffres.

Generalites

/etc/init.d/ :

c’est ici qu’on stock les scripts lançant ou stoppant les démons du système.

Par exemple sur apache :
/etc/init.d/apache start
/etc/init.d/apache stop
/etc/init.d/apache restart

pareil pour mysql et plein d’autres démons, la plupart accept stop, start, restart.

généralités :

–help donne de l’aide sur une commande
-v : en général rend la commande “verbose” (affiche plus d’info sur son execution)
-q : en général rend la commande quiet

C’est quasi toujours vrai pour –help pour -v et -q c’est fréquent mais pas systématique.

faire un script :

un script bash commence toujours par (sur sa premiere ligne) :

#! /bin/bash

C’est ce qui permet au système de savoir qu’il faut utiliser bash pour interpreter ce script.

un script de base :

cat > script_de_base.sh (on met “.sh” à la fin en général pour savoir que c’est un script bash mais c’est pas obligatoire)

#!/bin/bash

echo $1

(Contrôle-D pour finir)

ensuite on le rend exécutable: chmod +x script_de_base.sh
puis pour le lancer : ./script_de_base.sh toto

vous noterez le “./” au début c’est pour signaler qu’on lance le fichier depuis le répertoire courant “.” puisque, par sécurité, le répertoire courant n’est pas intégré à la variable PATH.

ca affichera $1 qui vaut en l’occurrence toto puisque $1 $2 $3 $4 etc… sont les paramètres dans l’ordre sur la ligne de commande, $0 étant le nom du programme en lui même, ici : ./script_de_base.sh

pour se faciliter la vie on met en général le path standard des binaires utiles dans le début du script :

PATH=/bin:/usr/bin:/sbin:/usr/sbin

et puis un commentaire sur ce qu’il fait le machin, c’est mieux pour les copains et les lendemains de cuites.

Quelques exemple de synthaxes un peu évoluées et utiles :

grep die *.php | grep -v “//” | grep -v “/\*” | grep -v “\*/”

ca devrait vous retourner le nom des fichier php, avec le contenu après un : qui contienne un die mais qui n’est pas commenté (sur la ligne elle-meme).

si vous voulez tous les effacer :

Pour ne garder que les fichiers qui correspondent

grep die *.php | grep -v “//” | grep -v “/*” | grep -v “*/” |
cut -f 1 -d “:”

donc si on assigne le contenu de cette commande à une variable et qu’on fait une boucle dessus :

a=’grep die *.php | grep die | grep -v “//” | grep -v “/*” | grep -v “*/” |
cut -f 1 -d “:”‘

On commence par verifier qu’on a le bon resultat escompter avec un echo, histoire de ne pas effacer n’importe quoi : for i in $a; do echo $i; done

une fois que c’est bon : for i in $a; do rm -f $i; done

sinon ca passait bien aussi avec un find :-)

Allez, une autre, on reformat un CSV :

le contenu original du fichier ORIGINAL.CSV :

toto:1:2222:toto is a star:20
titi:2:2222:bruno en str:4
tititt:2:2222:bruno en str:4
tutu:3:1122:denis b:8
tata:4:1112:thibault loves printers:12
tata2:4:1112:thibault loves printers:12
tata42:4:1112:thibault loves printers:12

on veut le sortir avec des séparateur qui soit des ; et pas des : et seuls les champs 1 et 5 nous intéressent et seul les tata* et titi* nous sont utiles :

Avec awk :
cat ORIGINAL.CSV | awk -F “:” ‘{ print $1 “;”  $5 }’ | grep t[ai]t[ai] > FINAL.CSV

Pareil, mais avec cut :
cat ORIGINAL.CSV | cut -d: -f 1,5 –output-delimiter “;” | grep t[ai]t[ai] > FINAL.CSV

Redémarrer apache et mysql en une ligne en ignorant l’affichage normal et d’erreur (pas conseillé), mais au moins en ne démarrant mysql que si apache s’est bien lancé :

{ /etc/init.d/apache restart && /etc/init.d/mysql restart ; } > /dev/null 2>&1

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: ,

juin 03

Pourquoi un site de E-commerce se doit de charger en moins d’1,5 seconde ?

Tout simplement parce que Google possède plus de 90% de part de marché et que ses dirigeants ont décidé d’inclure la vitesse de chargement parmi plus de 200 facteurs pris en compte dans le référencement naturel.

Certes, ce nouveau facteur ne sera pas plus important que la pertinence du contenu, mais il va petit à petit monter en puissance.

Cette transformation est logique, nos environnements de travail et personnels sont de plus en plus connectés, toutes les générations travaillent maintenant sur Internet, pourquoi devrions nous attendre, dans une société où l’instantané à pris le pouvoir ?

Depuis que l’homme est équipé de pouces opposables, d’une connexion ADSL et d’une culture Internet, il est impatient.

Pourquoi cette limite d’1,5 seconde ?

Quand votre site charge en moins de 1,5 seconde, il est plus rapide que 90% des autres sites actuellement connus de Google. Il est donc difficile à ce jour d’infliger une lourde pénalité à ceux chargeant en plus d’une seconde et demi.

Par contre, si vos pages charge en moins d’1,5 seconde, il peut vous favoriser, de la même façon que si votre site est très propre en terme de HTML ou bien conçu en terme de mots clefs. A l’avenir, ce facteur va se renforcer puisque les sites vont en tenir compte et charger plus vite.

1,5 seconde, c’est le temps que Google a choisi comme référence.

Dans les graphiques mis à disposition par Google, la délimitation est claire :

graph_temps_google
À moins d’1,5 seconde, vous êtes dans la zone verte, vous êtes rapide. Au-dessus d’1,5 seconde, vous êtes dans l’équipe rouge, vous êtes lent. Nous vous y trompez pas, aucun mot, aucun chiffre chez Google n’est utilisé par hasard. Le temps d’1,5 seconde découle de plusieurs études précises, parmi lesquelles nous pouvons déjà citer celle-ci ou celle-ci.

Et quand le mot « Lent » est choisi par Google, il a un sens fort.

Que perd-on précisément ?

De très nombreuses autres  études ont été menées et elles sont toutes formelles, être lent, c’est vendre moins, décourager l’utilisateur, freiner son business.

Les études donnent parfois des résultats différents. Certaines annoncent 2,8% de perte de chiffre d’affaire pour 1 seconde de plus de chargement, -4,3% de CA pour 2 secondes.

Amazon avait déjà fait le constat auparavant : 0,1s de plus de temps de chargement en plus leur coutait 1% de chiffre d’affaire.

Eric Schuman (Microsoft) et Jake Brutlag (Google), ont réalisé une étude et fait une conférence à ce sujet également. Il en ressort le même principe de fond mais certaines subtilités supplémentaires apparaissent. Entre une page qui charge en 50 ms et un autre en 2 secondes, le revenu par clic baisse de 4,3%, la satisfaction baisse de 3,8% et le temps avant le clic suivant augmente de 3,1s.

business & chute

Les dirigeants de Google ont d’ailleurs la volonté   exprimée de faire passer l’internaute de la page   de recherche au site de destination de la manière  la plus fluide possible. Le chargement, le  changement de monde, doit être le plus  imperceptible possible, « comme si l’on  tournait la page d’un livre ».

La publicité en ligne (SEM) et notamment les adwords sont également moins efficaces lorsque le site est lent, comme vous pouvez le lire dans l’aide de Google ici.

Phil Dixon de Shopzilla a pour sa part constaté, en passant le temps de chargement de son site de 7s à 2s :

  • 25% de pages vues en plus
  • 7 à 12% de ventes en plus

A l’inverse, quand le temps augmente, l’image de marque se dégrade elle aussi car les utilisateurs se plaignent et parlent entre eux, d’autant plus depuis l’avènement des réseaux sociaux.

Pourquoi ces pertes ?

Le cerveau humain a plusieurs « rythmes ».

cerveau

  • De un à cinq dixième(s) seconde : C’est la limite à laquelle nous estimons inconsciemment avoir une action immédiate sur ce que l’on manipule. Word, MacOS ou Windows ou encore l’interface d’un téléphone doivent réagir dans cette zone pour être apprécié. Le cerveau interprète, commande, reçoit, comme si l’outil utilisé était un prolongement du corps qu’il contrôle directement.
  • De cinq dixièmes à 1 seconde : La perception se modifie, nous n’avons plus l’impression de contrôler « directement ». Le cerveau assimile l’information et n’a plus l’illusion de pouvoir contrôler l’interface comme il contrôlerait un membre du corps.
  • De 1 à 5 secondes : C’est le temps habituel de chargement des sites. L’internaute l’accepte en générale relativement bien. Si un chargement doit durer plus de 5 secondes, il est intéressant d’occuper l’espace visuel de l’internaute pour garder son attention (une petite hélice, une barre de chargement, un pourcentage). Garder l’attention plus de 10 secondes sans occuper un des sens est illusoire.
  • À partir de 10 secondes : Le cerveau n’attend plus la réponse et vagabonde. Le site visité n’a plus l’exclusivité de l’attention de l’internaute. Celui-ci se demande s’il ne va pas aller sur un autre site concurrent, s’il a payé ses impôts, si le webmaster lui envoie les pages par la poste ou à dos de hamster, bref, la vente ne se fera probablement pas.

L’âge de l’internaute et sa culture internet changent la donne.

Les adolescents qui n’ont jamais réellement connus l’attente avant d’avoir un résultat, tout au moins sur l’informatique. Le temps à laquelle la réponse est reçue, après que la demande ait été envoyé, est d’une importance colossale mais il doit être d’autant plus réduit que le potentiel acheteur est jeune.

Une grand mère attendra 20 secondes la page Web du site avec les gentils dauphins pour réserver ses vacances. Hugo, du haut de ses douze ans, au delà de la deuxième seconde, il se demande si les pages du site lui sont acheminé par pigeons voyageurs ou à dos de hamster.

Comment mesurer le temps de chargement ?

Vous pouvez mesurer la rapidité de chargement de votre site avec ces deux extensions Firefox :

Ou avec ce site

Il est également possible de suivre l’évolution de la vitesse de chargement de son site dans les outils Google appelé « Webmaster tools ». Si vous n’avez pas de compte, créez en un et si vous en possédez déjà un, allez dans l’onglet Labo puis dans « Performances du site ».

Pourquoi les sites ne chargent pas plus vite ?

Avec le matériel toujours plus puissant et les connexions toujours plus rapides, la question se pose en effet.

Les sites qui ont vus le jour il y a dix ou quinze ans chargeraient très rapidement aujourd’hui, bien plus rapidement qu’à l’époque. Les connexions vont plus vite, nous sommes passés à l’ADSL du coté de clients et aux connexions très haut débit du côté des serveurs.

Alors avec de tels progrès, pourquoi un site prend-t-il toujours 4 à 20 secondes pour charger ?

Les machines ont évolué des deux coté également. Les ordinateurs sont plus puissants et les serveurs ont vus leurs capacités de traitement multiplié par plus de 1000. Par contre, la vitesse de la lumière n’a pas progressé. Elle met toujours plusieurs dizaines de milliseconde à traverser l’atlantique, de même, les connexions internet ont aussi une limite de progrès, tout comme les protocoles qui soutiennent internet. Tous ces facteurs font que l’ensemble a progressé de manière non homogène.

Un serveur 1000 fois plus rapide de nos jours est également 100 fois plus sollicité qu’avant. 3000 visites par jours il y a 15 ans, c’était un “grand site”, aujourd’hui, c’est un trafic modeste.

Composition du temps de chargement d’une page

Le temps de chargement d’une page est composé de plusieurs facteurs :

  • L’initialisation de la connexion et la résolution du nom de domaine
  • Le temps d’interprétation des scripts php / asp
  • Le temps de chargement des éléments par le réseau
  • La recherche des informations en bases de données
  • Le formatage d’une sortie en HTML
  • Le délai d’interprétation et d’affichage du navigateur

C’est un résumé puisque le temps est en fait découpé en plus de sous sections mais nous entrerions dans trop de détails.

Il y a quelques années, j’avais proposé le schéma suivant, résumé lui aussi :

latence-2

Les performances des connexions et du matériel ont donc évolué mais au final, les programmes aussi. Les sites web modernes n’ont plus rien à voir avec ceux d’il y a quinze ans et ils ont apportés une souplesse sans égale au E-commerçant.

Gestion de catalogue avancée, page dynamique et agréable à regarder, outils d’administration poussés, les sites modernes sont définitivement plus efficaces. Cette efficacité a été apportée, notamment, par des langages de programmation plus évolués dont PHP et par l’usage de base de données, dont Mysql.

De plus les langages ont évolué vers de l’objet ce qui les a aidé à devenir plus flexibles et efficaces mais en contrepartie, toutes ces améliorations ont un coût en terme de performances.

Ces complexités et améliorations fonctionnelles additionnées nécessitent donc plus de puissance. Les graphismes et photos plus lourds ont, eux, demandé plus de vélocité à nos connexions.

Il faut également prendre en compte que la qualité du code source généré est inégale. Deux sociétés peuvent réaliser le même site et l’un sera optimisé tandis que l’autre sera lent, c’est une question de capacité technique et d’expérience. De la même façon tous les sites ne sont pas à égalité devant le temps de chargement, de part leur conception ou même leur usage.

Sur un site comme Amazon, 90% du surf se fait depuis  le moteur de recherche et il se doit d’être rapide sur ce point. Sur un autre site ce sera la “vitrine” virtuelle et son agencement qui déclencheront les ventes et ces deux approchent n’ont pas le même coût en terme de temps de chargement.

La technologie également joue énormément et enfin la capacité de l’infogérant à optimiser votre infrastructure et son usage.

La vitesse n’est pas tout

La disponibilité du site et la réactivité de l’infogérant en cas de soucis sont également des facteurs majeurs de succès.

Bien que l’ingénierie informatique et la programmation Web ne soient plus des secrets maîtrisés par un très petit nombre, les sites sont devenus de plus en plus complexes et les accidents peuvent arriver.

Sur un serveur, un disque dur, une barrette mémoire ou un autre élément technique peut céder. Du côté du site web, un élément logiciel peu avoir un défaut ou engendrer une erreur. Dans les deux cas, un internaute peut accepter un court délai d’indisponibilité mais ceci ne doit pas se prolonger.

Une interruption de plusieurs heures pendant les soldes peut être problématique, les ventes de fin d’année ou une animation commerciale. La perte de chiffre d’affaire et d’image de marque peut devenir très sensible.

Un infogérant spécialisé dans le E-commerce et une Web Agency sont des alliés précieux dans l’exploitation d’un site commerçant.

En conclusion

La rapidité de chargement joue donc 3 fois :

  • sur l’expérience utilisateur
  • sur le référencement naturel
  • sur l’efficacité de la SEM (mots clefs sponsorisé dans les moteurs de recherches)
  • sur le chiffre d’affaire généré

Il est donc clair que ce facteur est critique pour un site de E-commerce.

Philippe Humeau, NBS System, hébergement et sécurité du E-commerce.

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: , , , , ,

mar 22

Voici le compte rendu de la réunion du CAB (Community Advisory Board) de ce jour.

Nouvelles sur le Community Advisory Board

En premier lieu, on a plutôt parlé du CAB en lui même. Un portail sera fait pour présenter les membres du CAB, ce qu’ils font pour la communauté et comment les joindre. C’est en cour de création et ce portail devrait sortir d’ici quelques semaines.

Site de Varien

Le site de Varien a été victime d’un Botnet qui a ralentit encore plus les temps de réponse du site qui n’est déjà pas connu pour sa vélocité. Le site déjà seul faisait dans les 300 requêtes SQL pour une connexion, ca a été corrigé et il est en cour d’optimisation. De plus des captcha ont été mis en place sur les formes qui ont été victimes des spams. Bref, sale temps pour le site, ca vient avec la popularité visiblement.

Le site devrait donc être plus rapide prochainement.

Un agrégateur de Blogs et de Forums

Varien (qui s’appelle maintenant Magento Inc, il va falloir s’y faire), Magento Inc donc se prépare à lancer un agrégateur de Blogs. Celui-ci lira les RSS des différents Blogs & Forums pour aider à retrouver l’ensemble des posts au même endroits.

L’idée parait sexy en tout cas et ca fera une belle bade de connaissances.

Des snapshots toutes les semaines

Maintenant, des releases régulières de Magento seront mises à disposition sur le SVN, avec les releases notes !
Ça aide :)

Des évènements communautaires aux US

En fait la France et l’Allemagne sont des pays assez à part dans le monde pour Magento car nous sommes les deux seules communautés à avoir créer un évènement spécial pour Magento.

Varien souhaite faire la même chose aux US pour animer sa communauté locale. En Europe, pour l’Angleterre

Les méritants iront aux US !!!

Les gens qui s’impliquent dans Magento et qui contribuent seront peut être invités aux US pour aller à Los Angeles. Varien a décidé de faire une élection des personnes qui fournissent une aide continue à Magento et les veinards seront invités dans les locaux de Los Angeles.

Community Roadmap

La roadmap de la communauté nous sera dévoilée prochainement par Yoav qui n’a pas pu venir au CAB meeting de ce jour mais qui nous donnera le nécessaire prochainement.

La levé de fond

Magento est maintenant prêt à se lancer à grande échelle avec ses 22,5 M$. Je me suis permis de demandé à Koby les grandes directions qui seraient prises par Magento, les voici :

- SAAS : Le Software As A Service est une direction de fond. Varien étudie sa future architecture et travaille sur le déploiement automatisé et la customization. C’est LE grand pas majeur, ca va être difficile pour ceux qui lançaient cela de leur coté ou qui ont des solutions déjà, comme powerboutique.

- Magento Light Edition : ca se confirme, une solution intermédiaire entre la CE et la EE va voir le jour.

- Magento connect et la communauté : Une partie des fonds ira aussi au développement de Magento Connect et de la communauté, ce qui est le plus important.

- Mobile : Deuxième axe majeur de développement, le E-commerce mobile. C’est une voie majeure et Varien s’y jette en force, avec des moyens.

Roy annoncera un lancement de Produit / Service during Bargento 4 !
Ca sera une grosse nouveauté en tout cas.

Voici le planning des prochaines réunions du CAB

  • 22/03/2010
  • 19/04/2010
  • 17/05/2010
  • 21/06/2010
  • 19/07/2010
  • 23/08/2010
  • 20/09/2010
  • 18/10/2010
  • 22/11/2010
  • 20/12/2010
Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: , ,

mar 02

Les apérogentos, ca prend !!!

L’apérogento, un concept qui fait des  petits. En gros, Bargento, c’est le gros rendez-vous, bi ou tri-annuel, plusieurs centaines de personnes (~500 au prochain), très business mine de rien. Mais il y a de la place en région pour que les acteurs des tissus locaux se rencontre et discutent entre eux.

Apérogento c’est en région, “c’est arrivé prêt de chez vous”, avec des passionnés, en format plus court, plus léger et des petits groupes. Pour stimuler tout cela, Wikigento, Bargento et Fragento se proposent d’aider les bonnes volontés à créer des Apérogento.

Attention cependant, coder du Magento à 2 grammes, ca ne marche pas forcément, il suffit de voir ce dessin sur le “Balmer Peak Effect” de XKCD.

xkcd

Mais dans le principe, c’est bonne ambiance et bon enfant, on commence avec un accroc : Nico !

Nicolas Trossat pour Toulon :) nous dit :

La communauté autour de Magento ne cesse de grandir, et il semble intéressant de pouvoir mettre en place des réunions plus locales et informelles que les Bargento, qui vont croissants mais qui sont Européens et Parisiens.

Je vais donc essayer de mettre en place un format pour réunir les acteurs de Magento en région PACA : e-commerçant, prestataires, freelance, designer, curieux, et accessoirement quelques alcooliques pour mettre un peu d’ambiance…

L’idée de ce billet serait d’abord de définir un format en fonction des motivés et des intérêts des uns et des autres. En fonction du nombre de personne, nous pourrons soit organisé une soirée informelle à Marseille ou Toulon, soit faire des apéro plus petit dans chaque ville (Aix, Marseille, Toulon, Nice) avec l’avantage que c’est proche pour tout le monde.

Je peux proposer également de mettre en place une formule plus complète, à l’image du Cirvad (www.cirvad.com) dont j’ai fait partie un temps (Alain, ca ne te choque pas si je reprends un peu du concept? ) :

L’idée est toujours de voir d’autres personnes et de se faire une bonne bouffe, mais avant, on bosse 2h en atelier! Le but est de partager les expériences des uns et des autres autour d’une thématique défini à l’avance. Ca peut être de partager des retours autour de l’emailing, de l’utilisation d’un module Magento, du 3DS, etc… bref, au lieu de juste boire un verre, on travail 2h ensemble pour mieux se connaitre et améliorer nos connaissances.

Si ce format plait, je propose de l’organiser dans le coin de St maximin/Brignoles. L’avantage est que c’est centrale: Aix->35min, Toulon->45min, Marseille->50min, Nice->1h10min. Ca peut être fait en journée ou le soir selon les préférences… L’autre avantage est que c’est là ou j’habite, et pour une fois, c’est pas moi qui bougerait

Bref, vous pouvez laisser un post ici pour me donner votre avis/disponibilité, ou m’envoyer un mail a nicolas.trossat -a- boutik-circus.fr

Jean François Galano pour Lyon

Si vous avez la volonté d’aider Jean François à organiser un évènement Lyonnais, je tiens à votre disposition les coordonnées de Jean François mais il est motivé pour organiser un apérogento en région Lyonnaise.

Vous pouvez déjà le contacter à : jf.galano[at]muira-conseil.com

Pour Lille, Strasbourg et Nantes et Toulouse ?

You know who you are.

You can do it !

Pour Strasbourg et Lille, Quadra informatique pourrait peut être y aller ? Nantes, Napta ou Altran ? Lille on a Insitaction aussi qui pourrait participer ? Que toutes les bonnes volontés se manifestent, on va vous aider !

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau

fév 23

Alors me voila de retour sur Paris, après une semaine de mauvais temps dans un pays où la dernière fois où il a plu devait être en 1912… Du coup, je me remet en jambes avec quelques news du milieu Magento :

Sortie de la 1.4 CE

Bon, finalement c’est fait, la 1.4 de Magento est sortie. Vous pouvez la trouver ici et un compte rendu complet des nouveautés ici sur Fragento.

Donc après plusieurs mois d’absence, on va enfin pouvoir tester la bête en terme de performances et de sécurité. Je suis en tout cas rassuré que Varien n’ait pas mis de coté la CE plus longtemps car cela devenait politiquement problématique.

Bargento en régions = Apérogento ?

Gabriel et moi travaillons étroitement avec SeL et Varien à l’animation de la communauté Magento en France mais nous n’avons pas le temps de tout suivre ou de tout faire. J’ai appris avec surprise et joie que de nombreux évènements s’organisaient en région, des apérogentos notamment et je trouve cela super.

Vu de Paris, on ne peut pas beaucoup aider à cela me disais-je mais finalement j’ai revu mon jugement. Déjà, apéro ou autres horaires, on peut éventuellement passer faire un bonjour, ca nous fera plaisir, même si ca n’aide en rien les organisateurs :)

Par contre, on peut fournir un peu de logistique aux organisateurs ! De la visibilité en annonçant ca sur Wikigento, Bargento (et probablement Fragento même si je n’en ai pas encore parlé à Gabriel) voir même en faisant poster par Varien un billet avec un espèce d’agenda sur le blog FR.

Ensuite, j’ai des bases de données  assez complète de la sphère Magento en France, ca pourrait permettre de faire un petit mailing pour les organisateurs pour pousser la chose.

Bref, si vous voulez faire un Apérogento en région, comme à Lille, Toulouse et Lyon où on m’en a déjà parlé, je suis tout à fait prêt à donner un coup de main mailing et de la visibilité pour les organisateurs ! Il suffit de me contacter : philippe[at]wikigento.com

Des plugins sympas pour Magento

Déjà Cocorico, un plugin Français pour commencer. La communauté est active, les idées fusent et les modules émergent. La société Xhéos m’informe, par l’entremise de Michaël Thieulin, que l’extension AMF service permet une intégration complète de modules Air/Flex dans le core de Magento.

Le protocole AMF s’invite donc dans le core de Magento et permet également des traitements de plus grands volumes de manière plus efficace. Faire communiquer du Flash sur le front office avec votre Backoffice, c’est partit avec AMF Webservice.

Dans la série on s’y intéresse : les plugins de performances.

L’incontournable Fooman Speedster qui concatènent les JS et les CSS pour réduire leur taille et optimiser le transfert n’est plus seul en piste puisqu’en ce moment plusieurs initiatives visent à optimiser les transferts, les requêtes, les compilations. Où se situe l’avenir ?

Dans mon idée, vous le savez, sur la compilation du PHP.

Un langage interprété ne sera jamais aussi rapide qu’un compilé. En attendant que les initiatives en ce sens (dont une très prometteuse dont je vous reparlerai) voient le jour, des plugins visent à améliorer les temps de chargement.

Bien que je n’ai pas eu encore l’occasion de les essayer, Delorum propose des Magento lignthing hyper megaspeed modules (je vais essayer de benchmarker cela). J’ai vu une autre société proposant des modules similaires à la vente mais l’URL ne me revient pas (EDIT : ah si en fait c’est ici, magento Booster). Si  vous en avez, postez en commentaire, on fera un petit benchmark pour voir qui donne quoi !

Dans les facteurs externes pouvant améliorer les performances de la bête (qui ne cesse de progresser dans son core, reconnaissons le) le moteur de recherche SolR de l’apache consortium vous donnera des recherches de la plus grande rapidité, même dans des catalogues énormes comme dans le c as du Furet du Nord (réalisé par Smile, hébergé et optimisé par NBS System). Toujours dans les “externes” (même si Zend a un unified installer avec Magento), Zend Server améliore les performances avec son Full Page Cache et ses différents mécanismes.

La vitesse comme facteur de ranking Google

Matt Cutts de Google a expliqué en novembre dernier que Google avait une forte pression interne en ce moment, notamment de l’un de ses fondateurs, pour intégrer la vitesse de chargement d’une page comme facteur de ranking.

C’est l’avènement d’une chose que l’on suspectait tous et Google l’officialise quelque part en laissant l’info filtrer publiquement. Le plus étonnant en fait c’est que ce facteur était déjà probablement pris en compte depuis des mois d’après nos tests, sans que Google ne le dise.

La question qui subiste est donc de savoir si pour posséder un bon référencement naturel il faut avoir une page qui se charge vite ou une page qui se charge plus vite que les autres. La deuxième option me parait un peu radicale par contre il y a fort à parier que les sites lents à charger se verront sanctionner dans le référencement naturel puisque, dixit un fondateur du géant, “passer de la recherche au site doit se faire aussi naturellement que tourner une page d’un livre”.

Un Bargento International

Ok on y est, on passe au dessus du gouffre et on verra bien comment ca va se passer… Bargento devient international. En gros, on invite nos copains européens qui n’ont pas la chance d’avoir un évènement local à Paris pour venir échanger avec nous tous.

La décision a été complexe à prendre, le cafouillage de dates vient en partie de là mais Bargento va en ressortir plus grand, plus fort et plus beau. Avec des fournisseurs de solutions et de compétences de tous horizons, des plugins que vous ne soupçonniez même pas, des clients des quatre coins de l’Europe !

Venez donc faire la fête internationale avec nous le 28 mai 2010, plus d’info prochainement sur Bargento.fr

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau

fév 05

La 1.4 de Magento CE va sortir, enfin !

Hier j’ai échangé avec Yoav autour de la sortie de la version 1.4 de la C.E. Ca râle et c’est bien normal. Tout le monde retient son souffle, certain se sentent trahis par la EE qui a eu 2 MAJ et 0 pour la CE.

Lors du CAB meeting de décembre, Yoav nous avait promis la 1.4 pour la première semaine de Janvier 2010…

Le truc c’est que je ne sais pas si la date qu’il m’a donné est très officielle ou même si la cause du retard peut être expliquée ici, mais tant pis, je me lance. Un scoop est un scoop et le retard de la CE, les promesses de Varien, et mon statut de CAB m’impose de vous tenir au courant…

3D secure in the core

J’ai donc eu un mail assez concis m’expliquant que le retard est dûe à l’implémentation de 3D secure dans le code de Magento. Ce dispositif très important pour la sécurité des transactions bancaires est une avancée très très significatives dans le domaine des transactions en lignes, sur le E-commerce comme ailleurs. En gros, la transaction va être sécurisé par la demande d’un identifiant supplémentaire, un OTP (one time password), un mot de passe, une date de naissance etc…

Cette avancée est indispensable à l’économie numérique et l’on ne peut que se réjouir que Varien l’intègre à Magento en CE. Retard donc pour cette raison et parce qu’ils ont réorganiser leur production team également.

Alors la date ?

11 février.

Ce n’est pas officiel. C’est une conversation avec Yoav, pas un communiqué de presse. Donc le plus important pour nous tous : elle arrive dans peu de temps et oui, vous pouvez continuer vos devs sur la Beta 1.4 puisque le changement majeur, c’est l’arrivé de 3D secure donc tant que vous ne customisez pas ces points, no problem.

Bargento 4, décalage de la date


Il a été décidé par Gabriel, Koby (Varien en charge de la communauté) et moi même de décaler la date de Bargento 4 au 28 mai 2010 au lieu du 22 mars 2010 initialement prévu. Pourquoi ce changement de date alors ?

EDIT du 09/02/2010 : il n’aura échappé à personne que le 24 mai précédemment annoncé est le lundi de Pentecôte, que cette année, c’est de nouveau férié, donc la date est bien le vendredi 28 mai, définitivement ;)

- Varien préfère enchainer Paris et frankfort plutot que de faire plusieurs allers/retours, ce qui est compréhensible quand, comme Yoav et Roy, on passe 30% de son temps en dehors de son pays sur une année ;)

- La proximité de la date ne permettait pas à certains speakers importants de se déplacer pour donner leurs conférences, nous aurions donc perdu un peu en qualité, ce qui était inenvisageable.

- La salle était à priori trop petite. En tout cas, ce que nous avions pu réserver n’aurait pas tenu les 500 personnes qui semblent annoncer lors de B4, après une visite, l’espace que nous comptions prendre aurait été un peu limité.

- Bargento 4 a attiré des Espagnoles, des italiens, des Anglais, des Ukrainiens et peut être d’autres américains. Roy m’expliquait lors de Bargento 2 que seul l’Allemagne et la France disposait d’une communauté forte et structuré avec des personnes pour organiser des Meet magento ou Bargento et qu’en Angleterre, les US, l’espagne et l’italie, Varien n’avait pas ce type de support. Un groupe linkedin s’est donc monté pour voir si les personnes qui viendrait d’europe pouvait justifier que Bargento change un peu de forme pour les accueillir et cela semble effectivement pertinent.

Pertinent pour les annonceurs, sponsors et personnes disposant d’un stand puisque le savoir faire Français est reconnu et que ces sociétés pourront s’exporter en europe. Pertinent pour les clients finaux et porteurs de projet puisqu’ils pourront trouver des structures à l’étranger proposant d’autres services et d’autres approches. Pertinent enfin puisque cette internationalisation va permettre d’avoir des conférences pointues !

Que les Français ne parlant pas Anglais se rassure, les conférences seront en majorité données en Français et seul 3/4 conférences sur les 12 seront en anglais, seuls les supports seront en Anglais. Chacun pourra parler dans sa langue natale selon les interlocuteurs avec qui il voudra échanger et nous gagnerons tous à cette ouverture européenne.

Forcément, cette nouveauté complexifie un peu notre organisation mais “it’s worth it”.

Voici donc les raisons de ce décalage de Bargento 4 à la date du 28 mai 2010, nous vous communiquerons le lieu dans les meilleurs délais. (soit l’intégralité de l’espace Saint martin sur 3 étages, soit une autre salle plus grande).

EDIT du 09/02/2010 : il n’aura échappé à personne que le 24 mai précédemment annoncé est le lundi de Pentecôte, que cette année, c’est de nouveau férié, donc la date est bien le vendredi 28 mai, définitivement ;)

Vous trouverez l’information directement sur www.bargento.fr dès que nous aurons les mises à jour, moi je pars en vacances, visiblement je ne fais plus la différence entre un jour férié et un jour de boulot, il est temps. Allez, à dans 12 jours !

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau

fév 04

Résumé des épisodes précédents


- Janvier 2008 : Sun achète Mysql pour 1 Milliard là où Oracle proposait 750 Millions $
- Avril 2009 : Oracle rachète Sun pour plus de 7 milliards …
- Avril 2009 : Tout le monde flippe pour Mysql

La mariée


Sun c’est une société d’ingénierie vénérable qui a été parmi les premières à créer des serveurs. Chez Sun la conception c’est important, l’ingénierie encore plus et on fait tout à la main avec amour. Résultat, souvent précurseur incompris, Sun n’a pas que des réussites à son actif mais quand même de très belles choses, un parc, un savoir faire et des machines de pointes. Ses propres processeurs Ultraparc et Sparc64, ses architectures, ses bus de données, des milliers de brevets.

Sun c’est aussi du logiciel. Solaris et OpenSolaris pour les operating systems (performants et surtout très robustes), Java pour les langages, la suite openoffice pour le bureau. Mine de rien, déjà, ca pèse un peu lourd tout ca.

Et bien sur……. Mysql.

Mysql ne craint rien !


Mysql est la base de données qui a soutenu le développement de l’opensource. La plus répandue et utilisée au monde. Et Oracle, avant tout le métier d’origine… C’est la base de données. Mais…

Larry Ellison a parfois “acheté pour tuer” mais là, il domine complètement le segment de la base de données. De la TPE au très grand compte. Il peut faire migrer les Mysql vers de l’Oracle quand le compte grossit, faire de la pub sur la clientèle de Mysql, bref…

Pourquoi tuer Mysql ? De toute façon, ceux qui l’utilise n’ont pas le budget pour de l’Oracle.

En plus, tuer un soft opensource c’est très dur. En effet, d’autres feront une autre mouture demain et le pari sera perdu. C’est déjà un peu le cas avec MariaDB et Monty mais ca pourrait empirer si Oracle se montre agressif envers Mysql. Au bout de plus de 6 mois, Mysql existe toujours, il est maintenu, rien n’a réellement changé. Mysql est même sur la Home d’Oracle, déclaration sur la page de Mysql dans le site d’Oracle :

“Oracle will continue to develop and enhance MySQL along with Oracle’s other open source database technologies, Oracle Berkeley DB, the leading open source embedded database, and Oracle InnoDB, the most popular transactional storage engine for MySQL.MySQL customers will benefit from Oracle’s world-class support and training services. MySQL developers and partners will find new opportunities as MySQL becomes a certified part of Oracle’s open, complete, and integrated stack of technology—from application to disk.”

Si Elisson ne tient pas sa promesse, il va se mettre à dos le milieu de l’opensource et se faire détester… Pas très malin et Elisson, il est tout sauf idiot.

Conclusion


La raison de la fusion est (presque) expliquée en homepage du site de Sun et sur celui d’Oracle : “Hardware, Software, complete”. Car Oracle, ce n’est pas que la célèbre database, c’est aussi beaucoup d’autres softs critiques (ceux de peoplesoft par exemple) et de services. La chaine d’Elisson est donc maintenant verticale et horizontale, il a renforcé considérablement sa position.

Personnellement je ne m’inquiète pas pour Mysql mais plus pour IBM ou Microsoft. Larry a souvent protéger son pré carré en mettant dehors des concurrents. Là il possède Java, de quoi sérieusement enquiquiner IBM qui a très largement misé dessus et avec Openoffice, il a de quoi concurrencer Micrososft.

Il est hégémonique sur la base de données et en plus, toujours pour en**rd*r IBM, il a du hardware de qualité, du serveur de combat, un OS qui tient la route….. Alors qui c’est qui mange son chapeau ? C’est Steeve Balmer (Microsoft) et Sam Palmisano (IBM) pardi !

Le grand perdant, ce n’est pas Mysql que son statut de base opensource de référence préserve de toute mort subite ou même moyen terme, c’est IBM à mon sens qui va se faire concurrencer énormément par Oracle sur ses marchés de services. Et pour peu que Larry Elisson se fache sur le segment du soft de bureau, Microsoft va reculer sur Office, son chouchou pendant que Google tente de lui tailler les flancs.

Warning : funny things to come !

PS : Merci à Nicolas.T de Toulouse pour l’idée de ce post :)

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: , , , , ,

fév 01

Introduction

Le vocabulaire des hébergeurs et infogérants est parfois déroutant.

Finalement est-ce que 42 Mo de cache level 9 valent mieux que deux troupeaux de gnous encadrés par des pingouins ? Well difficile à dire si l’on ne parle pas des mêmes choses. Déjà la notion d’hébergement et d’infogérance fait débat, alors voici une tentative pour clarifier les choses.

Le but de cet article est donc, avant tout, de parler le même langage et de présenter de manière simples des concepts qui ne sont sommes toutes pas si complexes qu’on voudrait bien nous le faire croire.

Bande passante, tuyau et réseau

Bandwidth, bande passante

La bande passante, c’est la capacité du lien qui arrive aux serveurs. Ainsi, quand un infogérant ou un hébergeur vous propose une connexion, il vous parle de bande passante. Certain parlent de la capacité total de transfert sur un mois, par exemple 100 Go, d’autre d’une vitesse en Mb/s ou Mbps (Megabits par seconde). 8 bits = 1 octet (ou byte en anglais) donc 1 Mb/s font une vitesse de transfert de 128 Ko/s, cela peut paraitre ridicule car chez le particulier, les FAI vendent parfois du 5, du 10 ou du 20 Mbits/seconde.

Plus puissant que la bande passante de votre hébergeur ? Non.

Déjà 1 Mbps qui tourne à plein sur 24h, ca représente une capacité de transfert de ~1,4 Go. Deux films. Donc ca n’est pas ridicule comme unité, de surcroit, la bande passante des hébergeurs et infogérants est “symétrique”. On parle donc de bande passante symétrique quand la capacité d’envoi est la même que la capacité de réception.

En l’occurrence, chez vous, Free, Alice, Wanadoo et leurs copains vous propose de la bande passante de, par exemple 10 Mbps en download (téléchargement) et de 1/n de cette valeur en upload (envoie de données), en général 1/8, donc ~150 Ko/s.

Un hébergeur qui vous met à disposition 4 Mbps vous fournit 4 Mbps en réception comme en envoie et devinez quoi, ca ne coute pas du tout le même prix un lien symétrique, c’est nettement plus cher car c’est la bande passante dite “montante”, celle en envoie, qui coûte cher.

L’un des soucis sur ce point c’est que les offres présentent tantôt du trafic mensuel et tantôt de la bande passante dédiée. Si je vends 4 Mb/s de bande passante, ca fait un peu ridicule comparés au 500 Go/mois que me propose mon concurrent… Et pourant…

4 Mb/s * 3600 (pour le débit horaire) * 24 (pour le débit jour) * 30 (pour le débit mois) / 8 (pour avoir des Méga octets) = 1 296 000 Mo / mois soit ~1,3 To.

Ooops (Oook pour les initiés) une offre à 4 Mb/s est largement plus intéressante qu’une offre à 500 Go /mois et de loin !

Ratio de contention

Le ratio de contention est un indice permettant de savoir avec combien de personne on partage une bande passante donnée. Typiquement, ce ratio est peu utilisé en France (qui dispose d’excellentes infrastructures télécom dans l’ensemble) mais très présente en Angleterre ou aux US. Dans certain contextes comme l’usage d’une connexion satellitaire c’est une limitation indispensable.

L’idée c’est qu’avec un ratio de contention de 20:1 (lire 20 pour 1) on a 1 Mbps (un mégabit par seconde) de vendu à 50 personnes. Comme elles ne l’utilisent pas toute en même temps, l’opérateur prend (et vend) le risque statistique qu’en moyenne, tout le monde ne l’utilise pas en même temps. Le pire cas serait que les 50 personnes aient toutes besoin en même temps du même mégabit de bande passante mais cela n’arrive en pratique jamais.

Ceci étant, on est donc pas garantie de la capacité maximale de son tuyau de connexion, généralement montant puisque la contention s’applique la plupart du temps sur le sens de l’envoi de donnée et rarement sur celui de réception de données.

C’est à ne pas confondre avec une autre notion qu’est l’ADSL vs SDSL. L’Asymetric Digital Suscriber Line contient, par défaut, une notre d’asymétrie dans les débits, généralement de 1 pour 8. On peut télécharger huit fois plus vite que l’on ne peut envoyer des données. Les Symetric Digital Suscriber Line sont elles totalement symétrique en termes de débits, fournissant ainsi la même capacité d’envoi que de réception de données.

Les deux systèmes ont été conçus pour “épargner” la bande passante montante (l’envoi de donnée) à l’époque ou cette ressource était coûteuse, mais ne relève pas exactement des mêmes mécanismes.

95 percentiles

Le percentile est une notion qui s’applique à la bande passante. En effet, les opérateurs ont remarqué que les tuyaux Internet étaient chargés de manière non linéaire. De plus, la capacité des liens augmentant, pourquoi ne pas mettre à disposition la bande passante inutilisée, dans une certaine mesure.

Le 95 percentiles c’est cela. C’est proposer à un client de dépasser son quota, par exemple de 4 Mbps jusqu’à concourrance de la taille maximum de la connexion, par exemple 100 Mbps. Tant que le client ne dépasse pas 95% du temps, les 5% de dépassement, peut importe le dépassement, ne sont pas facturés. Par contre si il dépasse 5,1% du temps, la totalité du dépassement lui est facturé, généralement à un coût légèrement supérieur. J’ai 4 Mbps, je dépasse à 40 Mbps pendant 30 heures dans le mois, je reviens en dessous par la suite, je ne suis facturé que de 4 Mbps. J’ai 4 Mbps, je dépasse à 80 Mbps plus de 5% du temps, ca fait au final, de manière lissée, une consommation moyenne de 7 Mbps, je paye les 4 de base plus 3 en tarif “dépassement”.

Peering

Le peering est un autre point différenciant entre les différents opérateurs et FAI. Le peering c’est la carte des accords interopérateurs en fait. Si j’ai une connexion directe avec Free et une autre avec Orange, mes clients passant par Free ou Orange iront plus vite au but que s’ils doivent passer par un autre (ou plusieurs autres) tiers avant de me joindre. Avoir de bons accords de peering augmente donc l’efficacité de la rapidité des liens.

Avoir de nombreux accords peering avec plusieurs autres opérateurs permet donc d’avoir un échange de paquets plus rapide entre les parties.

Transist

Le Transit IP c’est un terme qui décrit le fait d’avoir une connexion vers l’extérieur. En fait dans un datacenter on peut avoir besoin de relier ses serveurs entres eux et très peu vers Internet ou l’inverse. Le Transit c’est donc la capacité de communication entre le point d’hébergement et Internet. On parle de Transit IP, Transit Internet, Tansit de 20 Mb/s etc… C’est donc la bande passante vers Internet en résumé même si le terme est parfois utilisé pour parler d’un transit d’un point à un autre.

Commit

Le commit c’est l’engagement prit entre un hébergeur et un opérateur.

Avoir un Commit de 50 Mb/s vous donnera accès à une tarification A et avoir un commit de 200 Mb/s un tarif B. Le commit c’est la réservation du tuyau qui vous est faite en réalité, la taille que l’opérateur vous doit. D’ailleurs to commit en Anglais veut dire s’engager.

QoS

Quality of Service.  C’est un terme au sens double puisque l’on peut parler de qualité d’un service ou du principe technique de qualité de service, ce qui est différent. La plupart du temps, quand l’acronyme QoS est utilisé, cela réfère au principe technique.

La QoS permet de régler des valeurs spécifiques dans certains des champs dans paquets qui sont envoyés sur le réseau pour privilégier un comportement ou un autre. Il faut que les éléments actifs (routeurs, siwtchs etc…) sur le chemin accepte de prendre en compte le champ de QoS et sache quoi en faire mais dans le principe les opérateurs utilise la QoS à bon escient.

Les valeurs de QoS peuvent par exemple être : “achemine le plus vite possible”, “achemine avec la latence minimum le premier paquet”, “ne fragmente pas les paquets” ou même d’ordre interne “premier arrivé premier servit”, “fair queuing” etc…

Ces mécanismes sont utilisés pour optimiser les routes et le trafic en fonction de sa sensibilité ou de ses besoins. (Par exemple une conversation VOIP supporte mal la latence mais à besoin de peu de débit).

Routeur/routage/BGP

Le Routage consiste à attribuer un chemin de parcours, une route, à une connexion. Les paquets à destination de telle machine ou réseau passe par un lien, ceux à destination d’un autre endroit par un autre. Le routeur est l’élément qui fait ces arbitrages et oriente les paquets.

Le BGP est un protocol (Border Gateway Protocol) qui permet l’échange de route entre les routeurs, notamment répandu sur Internet chez les opérateurs et entre les routeurs AS. Ce protocole sert aux grands routeurs (AS) à s’échanger des routages de réseaux entiers.

Shaping

Le Shaping c’est littéralement « mettre en forme » le trafic réseau. Il peut s’agir de le limiter la capacité maximale de transfert ou de donner une priorité à un flux ou une machine plutôt qu’à une autre.

On parle souvent de Trafic Shaping, le trafic shaper étant la machine en charge de réaliser cette organisation du trafic. Par extension, les QoS sont souvent appliquée par un shaper.

Load Balancer

Le load balancer est une machine, un serveur ou un boitier, capable de répartir le flux entrant et/ou sortant sur plusieurs liens ou plusieurs machines. C’est un lui qui va, par exemple si vous avez deux serveurs web frontaux, envoyer le premier client sur le premier serveur, le second sur le deuxième, le troisième sur le premier, le quatrième sur le deux etc… C’est du load balancing (balancement de la charge) entre serveurs.

Il existe bien sûr des algorithmes plus évolués pour faire cela et certains Load Balancer (charge parfois assumé par le Rproxy quand il s’agit de load balancing de serveurs) font des tests de charge pour connaitre le taux d’occupation des machines avant de confier la gestion d’un nouvel arrivant à un serveur ou un autre.

Le load balancer peut aussi être spécifiquement dédié aux liaisons, on parle alors de load balancing de connexions et non de serveurs. Il s’agit là d’utiliser deux ou plus connexions au mieux en fonction de leur charge actuelle et de leur disponibilité.

Hébergement, maintenance, architecture & support

Housing

L’Housing consiste, en général, à fournir uniquement l’espace, l’énergie et la climatisation au serveur.

Hosting / hébergement

L’hosting / hébergement consiste, en général, à fournir la même chose plus le serveur et la bande passante ainsi qu’un système de support et un panneau de contrôle basique.

Infogérance / Managed server : L’infogérance consiste à fournir, en plus de l’hébergement, un support niveau 1, un SN2 et un SN3 ainsi que du service autour de l’offre de base. Par exemple l’installation et l’entretient des serveurs, leur backup, la sécurité, le conseil, l’optimisation etc… La grande différence par rapport à l’hébergement est donc la valeur ajoutée humaine, le travail des spécialistes.

Cloud computing / Elastic Computing

Le Cloud computing a été classé par le groupe Gartner comme l’une des révolutions annoncées de cette décennie. Il consiste à exploiter un très grand nombre de ressources informatiques en les allouant à la volée en fonction de la demande. Par exemple Amazon, pour les besoins de son propre site, avait un système très important. Très vite compter en serveurs n’avait plus de sens et il fallait inventer des unités logiques et physiques, multipliables à l’infini et allouable au besoin, ainsi est né le Cloud Computing.

C’est, en résumé, une forme de “super cluster”. On ajoute parfois le terme Elastic ou élastique pour définir la capacité à augmenter ou réduire le nombre d’unités allouées en fonction du besoin réel. On parle alors d’Elastic Computing ou Elastic Cloud Computing. Cette forme de “super mutualisation” permet donc une rationalisation des usages, des méthodes et des dépenses.

SN 1 / SN 2 / SN 3, 24×7 / S.L.A

Le support des serveurs et applications nécessite différents niveaux de compétence. D’une manière générale, le Niveau 1 correspond à l’accueil de toutes les demandes pour orienter par la suite (escalader) vers le niveau supérieur si une réponse ne peut être apportée directement par le SN1 (Support Niveau 1). Le SN1 répond aux problèmes simples ou plus généralement aux FAQ, il doit résoudre ~70% des demandes.

Si ce SN1 ne peut venir à bout d’un souci client, il l’escalade au SN2. Les ingénieurs du SN2 vont étudier le problème plus en détail et faire les tests complémentaires pour apporter une solution au SN1 qui la répercutera au client.

Le SN3, quand il existe, se bat avec les problèmes les plus épineux. Problème de compatibilité entre un soft et un hardware, bug d’un firmware, sous optimisation d’un noyau etc… Normalement, ils n’ont pas de demandes mais quand ils en ont une, ca peut prendre quelques semaines car à ce stade, c’est de la R&D.

Le 24×7 correspond au fait de mener une action ou superviser 24 heures sur 24, 7 jours sur 7. Il faut faire attention à ce que cache cet acronyme car toutes les sociétés y glisse une couverture différente. De la simple supervision (nos sondes surveillent vos serveurs en continue et vous alerte en cas de soucis) au support offshoré (vous tombez au Maroc où quelqu’un qui ne vous connait pas répondra mais ne trouvera pas de solution) jusqu’à la prise en charge global par vos contacts habituels.

Le fait de tout faire, de jour comme de nuit, toute l’année, s’appel de l’astreinte. Cela consiste à faire tourner son staff par semaine ou par jour, pour qu’en permanence quelqu’un ait un téléphone auquel le support soit joignable. En résumer, ca plante, on se lève la nuit, on allume son PC et on regarde le souci. Là encore, il faut faire attention, toutes les entreprises ne prennent pas en charge sans surcout. Souvent vous payez donc le fait que l’ingénieur soit à disposition mais si vous lui demandez quelque chose, il vous facture en supplément, heureusement, ce n’est pas le cas partout.

Le S.L.A, c’est l’engagement de votre fournisseur de service vis-à-vis de vous. Combien de temps de coupure au maximum est il envisageable d’avoir, quel doit être la disponibilité moyenne de la plateforme, selon le type de pannes, en combien de temps il s’engage à vous remettre sur pied. S.L.A est un acronyme anglais qui veut dire Service Level Agreement, l’engagement sur le niveau de service.

MRTG/ Cacti / Oreon / Centreon / Mantis / OTRS

Tous ces outils sont la panoplie classique d’administration des TT (Trouble Ticket, ticket de support) et de supervision de l’activité. Les outils cités sont Opensource et concerne donc majoritairement le monde Linux. Il existe bien évidemment des outils payants et des outils pour Windows. Mantis s’occupe en général des tickets de la partie software (bugs) et OTRS des tickets d’hébergement.

Centréon et Oréon sont des consoles de supervision de l’activité du réseau et des serveurs. Ils permettent d’effectuer des tests de base (icmp) mais également des tests par scripts, plus évolués et se connecter à des services de type SNMP.

MRTG est généralement utiliser pour générer des graphiques et Cacti également présente une console assez agréable à lire.

SAAS / IAAS

S.A.A.S veut dire Software As A Service, IAAS, infrastructure as a service et bien sur, tout le principe du As A Service se développe et s’exporte à un peu tout et n’importe quoi. C’est devenu très marketing tout cela alors on obtient des CAAS (Cloud), et mon radiateur est un CAAS aussi (Chauffage As A service).

Bref, au-delà de la blague, l’idée de fond est d’externaliser le service et de le dimensionner à la volée en fonction du besoin du client.

Services / Démon / Daemon / Serveurs / fonctions

Un service, démon ou daemon est, en infogérance, un programme qui accueil des connexions clientes pour rendre un service. Par exemple, Apache et Mysql sont des services qui tournent sous forme de daemons (démons). PHP lui ne l’est pas car il est appelé au besoin et ne reste pas de manière permanente en mémoire (c’est rare en tout cas et souvent pas forcément bon signe).

Ces services/daemon/démons ont une ou plusieurs fonctions bien précises, par exemple apache sert des pages Web. Ces services tournent sur des serveurs (physiques).

Dns, registrar, Bind

Le DNS signifie Domain Name Service. Le principe c’est que ce service permet de donner une IP à partir d’un nom et un nom à partir d’une IP (l’autre sens). Quand une même IP à plusieurs sites, sur le serveur, ceci se caractérise par une gestion en VHOSTS, tous les noms de domaines arrivent sur la même machine et la même IP mais le contenu de la requête permet au service Web (Apache par exemple) de savoir vers quel contenu (le répertoire) rediriger le visiteur.

Bind, aussi appelé Named parfois, est le service le plus célèbre sous Unix pour gérer les associations nom/ip et réciproquement (reverse DNS).

Le Registrar est lui habiliter à enregistrer des noms de domaines auprès des autorités locales (Afnic pour le .fr par exemple) ou internationales (internic par exemple). Il enregistre donc les données pour le compte de l’utilisateur final. Gandi, OVH et de très nombreux autres s’occupent de ces services.

Rproxy / Squid/ Varnish / CDN / serveur de médias

Un Rproxy fait l’inverse d’un proxy. Au lieu de mettre en cache les requêtes sortantes des utilisateurs vers les serveurs distants, il met en cache les requêtes entrantes des utilisateurs vers les serveurs. En gros au lieu d’être à la sortie du réseau local des utilisateurs, il est en entrée des serveurs que ces utilisateurs contact.

Ces Reverse proxy se chargent de mettre en cache les éléments statiques (images, vidéos, css, ajax, html etc…) afin de ne pas solliciter les serveurs Web pour le faire. Quand la requête arrive, les pages dynamiques sont traitées par les serveurs Web, le reste vient souvent des Rproxy.

Les plus célèbres sont Apache (encore lui), Squid et Varnish. Les trois présentent des caractéristiques différentes mais peuvent remplir peu ou prou la même fonction.

Un CDN (Content Distribution Network) permet de faire la même chose qu’un Rproxy mais à une plus grande échelle car, en général, le contenu est délivré depuis un serveur géographiquement proche de vous. Si un fichier est posé sur un CDN (Akamaï par exemple), il sera servit depuis un serveur à Tokyo pour un Japonais et un serveur à Londres pour un Parisien. Ceci optimise les temps de transfert.

Un serveur de média permet de stocker tout cela sur un serveur dédié, le serveur Web est donc déchargé et le Reverse proxy également.

Nginx / Apache / Zeux / Lighttpd

Les 4 services pré cités sont des serveurs Web. Ils ont tous des performances différentes, des intérêts différents. Apache est le grand père de tous les services Web, il est complet, couvre tous les besoins mais a parfois une tendance à la boulimie de ressources.

Nginx est l’alternative qui monte en termes de performances, il est moins complet mais gère mieux les ressources. Zeus est un serveur Web payant qui affiche des performances très haut de gamme.

Lighttpd et tinyhttpd et leur centaine de copains sont des services Web simplissime et ultra légers, fait pour rendre un service minimal mais avec une consommation de ressources ultra légère.

Terminal / Accès shell / SSH

Les accès en terminal, aussi appelé Shell, sont fait, la plupart du temps, par SSH. SSH fonction à peu prêt comme l’ancien Telnet mais en crypté et il permet en plus de transférer des fichiers.

Cet accès peut avoir plusieurs niveaux, utilisateurs et administrateurs par exemple. Avoir un accès Shell donne accès aux outils d’administration Unix qui sont très puissants et permettent de gagner du temps, quelques posts ont été fait sur ce blog à ce sujet, notamment ici.

Uptime

L’uptime est le temps depuis lequel le serveur tourne sans avoir été éteint ou redémarré. Avoir un uptime élevé signifie que la machine est stable et bien entretenue et que les administrateurs savent s’en occuper sans la redémarrer. Selon les serveurs et leur usage, un reboot peut aussi être nécessaire, par exempe pour mettre à jour un Firmware ou un noyau.

Un de nos serveurs à NBS System, le mailer, à un uptime de 1096 jours, soit 3 ans ce jour !

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: , , , ,

déc 18

Bonjour à toutes & à tous,

Suite à notre réunion du CAB hier soir, voici un rapide compte rendu.

Uservoice & Roadmap de la version CE


Les retours par Uservoice vont être stoppés pour commencer la partie intégration des requêtes les plus fréquentes. Le uservoice sera surement réactivé plus tard mais l’équipe Varien a déjà largement assez de feedbacks pour bosser un an !

Release de la 1.4 en Community Edition


Varien continue sa restructuration interne et c’est la cause principale du retard de la version 1.4 Community Edition. Gabriel & moi avons été très directs pour dire à Varien que c’était une préoccupation majeure de la communauté ce retard mais Yoav nous a expliqué la raison de ce décalage qui est plutôt logique. Le principe c’est que la CE est le socle de la EE donc la majorité du tronc de la 1.6 en EE est ou sera présent dans la CE, notamment les optimisations de codes.

Mais pour des raisons de déménagement de l’équipe de Kiev, Misha et ses collaborateur ont été un peu ralentie dans leur travail. Yoav nous garantie une CE 1.4 finale pour la première semaine de janvier 2010 au plus tard.

Communauté, localisation, arrondis, docs/wiki


Ensuite la conversation à tourné sur les problématique d’arrondie des sommes et de frontaux / back office multilingues (par exemple français / allemand / italien en frontal et allemand en backoffice).

Koby Oz nous a lui parlé de l’effort qui va être fait par Varien pour montrer l’effort communautaire et promouvoir les outils de contribution, qui existe déjà, mais qui sont trop peu visibles. Apparemment, une section complète du site de Varien sera dédiée à ce point prochainement.

Un effort concernant la Doc et les traductions va être mené. Il se concentrera spécifiquement sur les aspects liés au Wiki pour “faire partager ce que vous avez tous dans la tête” à dit Koby aux CAB. Le savoir, les tips & tricks et toutes les formes de partages sont encouragé, Varien souhaite pousser ce Wiki qui “vivotte”.

Magento LE, Light Edition


Une des informations importantes également, c’est que Yoav confirme ce qu’il nous a dit lors de Bargento 3, il y aura une Magento LE, Light Edition. Le but est d’avoir un milieu de gamme entre la CE et la EE, qui soit à même de concurrencer tout autre produit de E-commerce sur ce segment de tarif. “More than the others for a better price”. Cette licence permettrait, peut être, la mutualisation, pour apporter Magento low cost au plus grand nombre et à des coûts très intéressants. Pas de date de release pour cette LE pour le moment puisque Varien continue se restructurer en interne mais une équipe dédiée y travaille déjà.

Koby & Yoav nous ont redit que l’important dans l’immédiat, c’était de permettre aux petites entreprises de passer à Magento puisque le produit à eu mauvaise presse à une époque sur ce segment (ce qui semble maintenant peu justifié vu les progrès de Magento en un an). Varien concentre donc ses efforts dans ce sens à tous les niveaux, optimisation du code, l’Academy pour fournir des développeurs, les fonctionnalités en constante augmentation de la CE et prochainement de la LE, etc…

Il y a eu quelques autres sujets mais je ne me souviens plus de tout et certaines personnes avaient un micro un peu déficient, je n’ai donc pas tout compris lors de leurs interventions.

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: , ,

déc 17

Bonjour à toutes & à tous,

Aujourd’hui, pas de grand article de 3 pages, juste quelques news  :

1°) Une Fan Page sur Facebook

Je vous annonce la création d’une Fan page de Bargento sur Facebook.
Vous pouvez retrouver votre évènementiel préféré sur Facebook à cette adresse.

2°) Deuxième news du jour : un module de gestion des conflits Magento Connect

Cette bonne idée nous vient de maisondulogiciel et s’appelle “Magento Extension Conflict”. Le but de cette extension est justement de vérifier si on part vers un Armaguédon en installant telle et telle extension ou si ca devrait bien se passer. D’après le site de l’éditeur :

“Extension Conflict est conçu pour aider les développeurs Magento à identifier les conflits entre les modules installés sur leur serveur.

Avec Extension Conflicts, les développeurs peuvent également soumettre le fichier config.xml d’une autre extension afin de vérifier qu’aucun conflit avec une autre extension ne se pose et ce, sans avoir à installer le nouveau module.”

Je dois bien avouer que nous ca nous a pas trop traumatisés mais je suppose que de nombreux développeurs vont apprécier la chose :) Rappelons en passant que ceux qui demandaient à corps et à cris une gestion de stocks dans Magento peuvent aussi jeter un œil sur le site du même éditeur qui s’est visiblement intéressé au problème. Attention cependant, la première extension est gratuite, la seconde (stock) est payante.

3°) CAB Meeting de Décembre 2009

Ce soir, on discute au CAB (Community Advisory Board). C’est l’endroit où les personnes impliquée dans la communauté Magento peuvent échanger des points de vu avec l’équipe Varien. On a Roy & Yoav qui viennent assez souvent nous rejoindre mais c’est Koby Oz le porte parole.

En France, Varien à 3 CAB : Gabriel Bouhatous, Fançois Ziserman et moi même Philippe Humeau. Si vous voulez que nous relayons un message, n’hésitez pas à nous en faire part.

Pour information, Gabriel & moi avons planifié de pousser une bonne gueulante sur la sortie ver CE 1.4.0.

On est en béta 1 depuis le 6 octobre 2009 alors que la version EE a déjà fait 2 évolutions. Comme on a défendu haut et fort que la EE avait sa place et n’était pas une menace pour la CE, on défendra ce soir la CE comme il se doit, l’éditeur doit y apporter le même soin, le même suivi, qu’à la EE.

Bien sûr, si on a un peu de news ce soir, je vous publie ca rapidement !

Partager cet article :
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Slashdot
  • Wikio FR
  • email
  • LinkedIn
  • Live
  • MySpace
  • Technorati
  • blogmarks
  • Print
  • RSS
  • Twitter
  • viadeo FR
  • Wikio

écrit par Philippe Humeau \\ tags: ,