mardi 31 août 2010

Modifications à chaud d'un serveur #NGINX


Il est possible d'agir à chaud sur un serveur NGINX :

Au niveau de la configuration

Il faut trouver le numéro de PID du process master de nginx. L'information se trouve soit en ouvrant le fichier PID du daemon

# pid of nginx master process
pid /var/run/nginx.pid;

Soit en lançant la commande ps combinée à la commande grep 'master'.

Puis envoyer au processus le signal HUP (kill -HUP num_de_pid )

Au niveau du binaire.

Il est aussi possible de recompiler nginx et de remplacer le binaire en cours d'exécution

Suivre les instructions suivantes:
  1. Copier le nouvel exécutable nginx à la place de l'ancien
  2. Trouver le numéro de PID (voir ci-dessus)
  3. Envoyer un signal USR2 au processus
  4. Envoyer un signal WINCH au processus
  5. Vérifier l'arrêt des processus worker de l'ancien daemon
  6. Envoyer un signal QUIT au processus.

Le service n'aura pas été interrompu

Deux signaux arrêtent le serveur : QUIT et TERM

QUIT arrête le serveur délicatement alors que TERM l'arrête brutalement

lundi 30 août 2010

#Ruby , #Erlang , #Haskell et les autres

J'ai profité de mes vacances pour lire l'ouvrage suivant:



Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. (Lien vers l'editeur ici).

Les langages présentés sont :

IO : (lien ici) io est un langage orienté objet inspiré par smaltalk. Son originalité réside dans l'utilisation comme dans javascript d'objets basés sur les prototypes plutôt que sur des classes.
Un objet io (ou javascript) est un simple tableau associatif. Une clé du tableau peut contenir une donnée , une fonction ou une référence vers une fonction d'un prototype. L'instanciation d'un objet se fait par clonage et non pas à partir d'un modèle (template) comme dans le cas des langages basés sur les classes.

Ruby (le top du top)

Prolog.

Scala : (lien ici ) scala est un langage développé par les ingénieurs de twitter basé sur la JVM. Il permet d'utiliser les librairies Java. L'intérêt de scala est de fournir une ouverture vers les langages fonctionnels avec en plus la possibilité de mettre en place des traitements parallèles (concurrents)

Erlang. (lien ici) c'est le langage qui à mon sens permet de débuter avec les langages fonctionnels.


Clojure. (lien ici ) Ce langage est une implémentation de Lisp destinée à utiliser une JVM. Il se présente comme une évolution possible de java.

Haskell. (lien ici) Haskell est le langage fonctionnel par excellence, qui est le fruit d'un travail collectif d'un groupe de chercheurs et non pas une construction d'une personne isolée. Un bon livre de référence est

La lecture de ce livre est difficile, aussi il est possible de lire cet ouvrage collectivement sur le forum suivant: (lien ici )
Une version gratuite et commentée du livre est disponible ici.




Pour chacun de ces langages, l'auteur propose des points à approfondir sur une semaine. Et il interroge les concepteurs de ces langages sur leurs motivations et les perspectives d'évolutions. C'est un très bon livre.

Pour ceux qui sont passionnés de langage et qui veulent se lancer dans l'écriture d'un nouveau langage : le livre à avoir est :(lien ici)
Create Your Own Programming Language de Marc-André Cournoyer

A system to achieve every programmer’s dream.
Learn how to create a simple programming language in a few days with this easy step-by-step guide.