Programmation en Go/Goroutines
Définition.
Une goroutine est un fil d'exécution tournant en parallèle avec d'autres goroutines à l'intérieur du même espace d'adressage (le processus).
Les goroutines permettent de paralléliser des tâches en les répartissant sur plusieurs cœurs ou processeurs.
Le mot clé go permet de lancer un appel de fonction en une goroutine, et de ne pas attendre le résultat:
 go list.Sort() // trie une liste en parallèle
Il est courant d'utiliser une fonction littérale pour appeler une goroutine:
 go func(arguments, ...) {
 commandes...
 } (paramètres, ...)
Les canaux (de communication).
Un canal est un type de base de Go, et se déclare en plaçant chan (comme channel ou canal en anglais) avant le type de ses éléments.
On peut créer un canal avec make:
 c := make(chan int)
Ensuite on peut envoyer et recevoir des données du type précisé, et la première donnée reçue est la première donnée envoyée. ("First In First Out")
On dit qu'on envoie une donnée à travers un canal avec canal<-valeur et qu'on reçoit une donnée d'un canal avec = <-canal.
Dans cet exemple, on lance une goroutine et on attend sa fin en recevant le signal qu'elle va envoyer:
 go func() {
 list.Sort()
 c <- 1 // Envoie un signal, la valeur importe peu
 blahBlahPendantUnMoment()
 <-c // Attend la fin du tri de la liste à la réception du signal
Canaux avec tampon.
On peut créer un canal avec un tampon en fournissant la taille du tampon en argument de make().
Lorsque le canal n'a pas de tampon, la goroutine qui enfile une valeur doit attendre qu'une autre goroutine dépile cette valeur. En revanche, avec un tampon, la goroutine qui enfile une donnée attend seulement que le tampon dispose d'une case vide pour y mettre la donnée.
Dans l'exemple suivant, MaxTaches tâches peuvent se dérouler en parallèle:
 var sem = make(chan int, MaxTaches)
 func handle(r *Requete) {
 sem <- 1 // attend que sem soit disponible
 process(r) // cela peut prendre un certain temps.
 <-sem // cela permet à la prochaine tâche de démarrer

func Serve(file chan *Requete) {
 for {
 requete := <-file
 go handle(requete) // lance la goroutine
La syntaxe suivante permet de savoir si une case est disponible dans le canal:
 v,ok = <- canal
Select.
Select est une structure de contrôle similaire à switch. Elle permet de gérer une multitude d'envois et de réceptions à travers des canaux différents.
Voici sa syntaxe:
 select {
 case canal <- valeur: commandes...
 case var = <-canal: ...
 case var := <-canal: ...
 default: ...
Les différentes alternatives sont évaluées dans l'ordre de leur écriture, la première réception ou émission dans un canal déclenche l'exécution des commandes correspondant à l'alternative. Si aucune de ces opérations ne réussit, le cas par défaut est exécuté, sinon l'opération bloque jusqu'à la réception ou l'envoi d'une donnée.
Le choix entre les différentes alternatives est basé sur un processus pseudo-aléatoire.
Enfin, une structure select sans aucune alternative bloque éternellement.
Définir le nombre de processeurs.
En définissant la variable d'environnement GOMAXPROCS comme étant égale au moins au nombre de processeurs, ou en appelant runtime.GOMAXPROCS() avec ce nombre, on peut répartir les goroutines sur les différents cœurs ou processeurs sur un ordinateur particulier.

Pôles d'éco-citoyenneté/Les principaux Pôles d'éco-citoyenneté dans le Nord-Pas-de-Calais/Les Parcs Naturels Régionaux

En France, un Parc Naturel Régional (PNR) est un territoire classé par l’État qui possède un intérêt patrimonial remarquable, à la fois pour la région et au niveau national ou international. Les PNR sont des lieux privilégiés pour une découverte respectueuse du patrimoine naturel et des habitants. Ils n'ont pas de frontières visibles, ils sont accessibles en toute saison et ouverts à tout public.
Création d'un Parc.
Un Parc est créé par un ensemble de communes contiguës qui souhaitent mettre en place un projet de conservation de leur patrimoine naturel, historique ou culturel.
L'objectif principal est la protection et la mise en valeur de grands espaces ruraux habités.
Pour créer un Parc, il faut avant tout disposer d'un territoire remarquable.
Le processus de création, complexe et long (10 ans pour le PNR de l'Avesnois), commence suite à une décision de la Région.
Après une étude de faisabilité, une association de préfiguration constituée de techniciens et de bureaux d'étude se forme.
Elle a pour but d'étudier le périmètre du territoire et les communes à y inclure.
Ensuite, les communes doivent donner leur accord, la décision étant prise par les élus.
Une fois le périmètre arrêté, un projet de territoire est élaboré par les élus, les maisons du Parc, les associations et les riverains, qui sont consultés sous forme d'enquêtes. Le projet décrit l'état actuel du territoire, ses enjeux spécifiques, et il fixe les orientations futures du Parc.
Enfin, le projet doit être adopté par les communes, les structures intercommunales, le Département, la Région puis l’État.
Un "Parc Naturel Régional" est en effet un label de l'État décerné par le Ministre chargé de l'Environnement pour une durée de 12 ans.
Pour être labellisé, un territoire doit satisfaire plusieurs critères :
Objectifs d'un Parc.
Les activités d'un Parc doivent répondre à cinq objectifs fixés par décret :
Dans chaque Parc, une Charte doit être élaborée pour définir les mesures de mise en œuvre permettant d'atteindre ces cinq objectifs.
La Charte précise les orientations de protection, de mise en valeur et de développement du Parc.
Les règles de gestion du Parc figurent également dans cette Charte.
Pour faire respecter les objectifs de sa Charte et protéger la nature, un Parc aura prioritairement des actions d'information, d'animation et de sensibilisation à la richesse patrimoniale de son territoire.
Toutes les actions entreprises sont réalisées par les équipes techniques du Parc.
Par ce biais, le Parc cherche à modifier le comportement des personnes y vivant, y travaillant, s'y implantant ou y passant simplement.
Voici quelques exemples d'actions menées par les Parcs :
État des lieux en France.
En 2010, on dénombre 46 Parcs Naturels Régionaux en France, qui représentent 13% du territoire français, soit 7 millions d’hectares, plus de 3900 communes et plus de 3 millions d’habitants.
Sur l'ensemble des Parcs, la forêt recouvre 37% de la surface totale, les surfaces agricoles 40% et les zones construites 1,9%.
Dans le Nord-Pas de Calais, il y a trois Parcs :
Ces trois Parcs représentent 24% du territoire du Nord-Pas de Calais, 21% des communes, 12.5% de la population et 80% de la biodiversité régionale.

Pôles d'éco-citoyenneté/Les principaux Pôles d'éco-citoyenneté dans le Nord-Pas-de-Calais/Les Parcs Naturels Régionaux/Le PNR Scarpe-Escaut