Forum général.petites-annonces Offre d'emploi : Administrateur Bases de données à Nantes (44) - Ministère des Affaires Etrangères

8
4
oct.
2017

DEFINITION SYNTHETIQUE DU POSTE

Au sein du Bureau de l'Ingénierie et de l'Administration des Systèmes de la DSI du Ministère des Affaires Etrangères, le titulaire participe à la mise en production des applications pour la partie bases de données. Cela est fait en liaison avec les chefs de projets et les équipes de qualification et de pré-production. Il participe également à l'administration, la définition et la mise en oeuvre des outils d'infrastructure (sauvegarde, supervision, métrologie, journaux…)

ACTIVITES PRINCIPALES

  • L'administration courante (...)

Wiki [Tuto/HowTo] [Debian/Ubuntu] Clusteriser vos bases de données MariaDB avec Galera Cluster et HaProxy

0
21
sept.
2017

Sommaire

Présentation

Un Cluster de base de données est un ensemble de serveurs reliés entre eux via réseau afin de créer un ensemble virtuel utilisant la réplication des données pour protéger les bases de données contre une éventuelle panne (machine, réseau).

HaProxy va servir de pont (proxy) entre les clients et les serveurs du cluster de base de données. C'est un répartiteur de charge (load balancer) qui va choisir le serveur le plus facilement accessible (le moins occupés) lorsqu'un client veut effectuer une action sur les BDD. Il n'est pas obligatoire au bon fonctionnement du cluster, juste une belle optimisation.

Galera Cluster quant à lui permet de créer/gérer le cluster mariaDB. Il va aussi s'occuper de la redondance des données (leur multiplication dans la grappe).

Un serveur peut tout à fait cumuler répartiteur de charge HaProxy et serveur de base de données Galera Cluster.

Attention : Si vous devez reboot une machine du cluster, vous devrez probablement lancer cette commande sur un des Noeuds et relancer les autres.

sed -ie '/safe_to/c\safe_to_bootstrap: 1' /var/lib/mysql/grastate.dat
mysqld_safe --wsrep-new-cluster

Limitations

source : MariaDB Galera Cluster : la réplication multi maitres

Mise en place de Galera Cluster + mariadb

Passez en administrateur (root)
  • Sur Ubuntu / Raspbian
sudo su
  • Sur Debian / Ubuntu Minimal
su
Ajoutez clés et dépôts pour la dernière version (10.2.x)
  • Sur Ubuntu 16.xx
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.cu.be/repo/10.2/ubuntu xenial main'
  • Sur Debian 8 (Jessie) / Raspbian Jessie
sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.nucleus.be/repo/10.2/debian jessie main'
  • Sur Debian 9 (stretch)
sudo apt-get install software-properties-common dirmngr
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.mirror.nucleus.be/repo/10.2/debian stretch main'
Installez la dernière version de mariadb-server et galera
apt-get update
apt-get install -y mariadb-server galera-3
Créez /etc/mysql/conf.d/galera.cnf
nano /etc/mysql/conf.d/galera.cnf
  • Ensuite ajoutez dedans
[mysqld]
#mysql settings
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
query_cache_size=0
query_cache_type=0
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=256M
bind-address=10.8.1.42

#Galera settings
wsrep_provider=/usr/lib/libgalera_smm.so
#SSL for Galera
#wsrep_provider_options="socket.ssl_key=/etc/mysql/ssl/server-key.pem;socket.ssl_cert=/etc/mysql/ssl/server-cert.pem;socket.ssl_ca=/etc/mysql/ssl/ca-cert.pem"
wsrep_cluster_name="monSuperCluster"
wsrep_cluster_address="gcomm://10.8.1.42,10.8.1.43,10.8.1.44"
wsrep_sst_method=rsync
wsrep_on=ON
wsrep_node_address="10.8.1.42"
wsrep_node_name="monJoliNom"
  • Ajoutez à wsrep_cluster_address= les hostnames de vos machines séparés par des virgules par exemple
wsrep_cluster_address="hostnameMachine1,hostnameMachine2,hostnameMachine3"

Note : il est déconseillé de spécifier des adresses IP, privilégiez plus tôt des noms de domaines dont vous ferez la correspondance soit dans votre serveur DNS, soit dans vos fichiers /etc/hosts.

  • Vérifiez à default_storage_engine= qu'InnoDB est bien le moteur par défaut (vous pouvez éventuellement le remplacer par un autre moteur tant qu'il est compatible avec galera)
default_storage_engine=InnoDB
  • Spécifiez éventuellement à innodb_buffer_pool_size= combien mémoire (RAM et Swap) InnoDB peut consommer
innodb_buffer_pool_size=256M

Note : la doc conseille de prendre la valeur qu'on utilise sur un serveur lambda et de réduire l'utilisation mémoire de 5% afin de ne pas subir une augmentation dû a l'utilisation du cluster.

  • Le nom du cluster (doit obligatoirement être identique sur chaque Node)
wsrep_cluster_name="monSuperCluster"
  • L'adresse du Node
wsrep_node_address="10.8.1.42"
  • Le nom du Node
wsrep_node_name="monJoliNom"
  • Le provider du Node (paramètre wsrep_provider)
wsrep_provider=/usr/lib/libgalera_smm.so
  • Au choix /usr/lib/libgalera_smm.so ou /usr/lib/galera/libgalera_smm.so
Autoriser dans AppArmor le cluster à utiliser des ports non root (source)
sudo ln -s /etc/apparmor.d/usr /etc/apparmor.d/disable/.sbin.mysqld
sudo service apparmor restart
Sur certaines machines le fichier /etc/mysql/my.cnf n'existe pas. Si c'est le cas, créez le en copiant le contenu suivant
[a vérifier] Si vous partez d'une base de données mysql/mariadb déjà existante, vous devez l'upgrade vers galera (source)
Sur un des nodes (que nous considérerons comme le premier) arrêtez mariadb
service mysql stop
Sur ce même node éditez le fichier /etc/mysql/conf.d/galera.cnf
nano /etc/mysql/conf.d/galera.cnf
Commentez ensuite la ligne concernant la liste de vos nodes "wsrep_cluster_address" puis ajoutez la ligne suivante
wsrep_cluster_address="gcomm://"
Ensuite initialisez le cluster
sudo /usr/bin/galera_new_cluster
Relancez mariadb sur tout les Nodes
service mysql restart
Testez si ça fonctionne
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
Si ça fonctionne, replacez la liste de vos nodes dans /etc/mysql/conf.d/galera.cnf sur votre premier node (celui qui a initialisé le cluster) et supprimez "wsrep_cluster_address="gcomm://""
wsrep_cluster_address="gcomm://hostname1,hostname2"
Si vous avez l'erreur "ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded", sur tout les nodes, resetez les password admin :
service mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot
use mysql;
update user set password=PASSWORD("MY_NEW_PASSWORD_HERE") where User='root';
update user set plugin="mysql_native_password";
quit;
/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start

Installation d'un répartiteur de charge HaProxy pour Galera Cluster

Note : vous pouvez le ou les installer sur des machines dédiés, ou sur un ou plusieurs de vos serveurs de bases de données (dans ce dernier cas, veillez à écouter sur des ports différents si non conflit). Vous pouvez aussi directement l'installer sur un client.

Installez les pré-requis
apt-get update
apt-get install haproxy
Éditez la valeur ENABLED=0 à ENABLED=1 dans les fichiers /etc/default/haproxy et /etc/init.d/haproxy
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/default/haproxy
sed -i "s/ENABLED=0/ENABLED=1/g" /etc/init.d/haproxy
Éditez /etc/haproxy/haproxy.cfg
sudo nano /etc/haproxy/haproxy.cfg
Adaptez puis ajoutez
# Load Balancing for Galera Cluster
listen galera
bind 10.8.0.66:3306
balance leastconn
mode tcp
option tcpka
option mysql-check user haproxy
server hostnameNode1 10.8.1.42:3306 check weight 1
server hostnameNode2 10.8.1.43:3306 check weight 1
server hostnameNode3 10.8.1.44:3306 check weight 1
  • listen galera => Format "listen numUnique". Identifie notre bloc de configuration.
  • bind 10.8.0.66:3306 => adresseIP:port sur quelle adresse le serveur HaProxy doit-il écouter (si vous passez par des tunnels SSH, choisissez 127.0.0.1). Si votre répartiteur est sur la même machine que le cluster de Base De Données, pensez à lui attribuer un port différent. (qu'il faudra mentionner aux clients) Le caractère magique * est autorisé.
  • mode tcp => choisissez tcp
  • balance leastconn => l’algorithme de répartition de charge (load balancing). Accepte : roundrobin , leastconn, source. (informations) option mysql-check user haproxy => on demande a HaProxy de tenter de se connecter à la base de données du cluster
  • stats => configurer la WEBUI pour administrer HaProxy depuis votre navigateur

    • listen stats 127.0.0.1:8080 => adresseIP:port sur quelle adresse le serveur Web doit écouter/répondre pour la WEBUI (si vous passez par tunnels SSH ou Tor Hidden Service indiquez 127.0.0.1 comme IP et prenez un port inutilisé (peu importe lequel tant que vos ne l’oubliez pas)
    • stats enable|disable => activer|désactiver la WEBUI
Commentez option httplog puis sauvez et quittez avec CTRL+X
Sur le cluster Galera, créez l'utilisateur dédié à HaProxy
mysql -u root -p -e "CREATE USER 'haproxy'@'10.8.1.%';"
  • 10.8.1.% => ici on autorise les connexions entrantes depuis les adresses IP allant de 10.8.1.0 à 10.8.1.255, remplacez par une seule adresse si vous le souhaitez (déconseilez si vous souhaitez pouvoir utiliser plusieurs répartiteur de charge)
Démarrez HaProxy
service haproxy restart

Ajouter un serveur à Galera Cluster

Installez votre serveur en suivant la procédure ci-haut.
Sur chacun de vos Nodes éditez le fichier /etc/mysql/conf.d/galera.cnf afin d'ajouter l'hostname de votre nouveau serveur. La valeur à éditer est wsrep_cluster_address (CTRL+W pour chercher), comme suit
wsrep_cluster_address="gcomm://hostnameServer1,hostnameServer2,hostnameServer3"
Sur chacun de vos Nodes éditez le fichier /etc/hosts afin d'ajouter la correspondance entre adresse IP et nom de domaine pour votre nouveau serveur. Par exemple
10.8.0.42 penséeprofonde
10.8.0.43 server1
10.8.0.44 server2
  • Note : A moins d'avoir spécifié "bind 0.0.0.0" (= écoute sur toutes les IP) sur vos différents Noeuds, il est primordiale de joindre les ip que vous avez spécifiez en écoute. Si par exemple sur server1 vous avez spécifiez "bind 10.8.0.43" (= écoute uniquement sur 10.8.0.43) alors il faut obligatoirement joindre ce serveur sur cette adresse (même 127.0.0.1 et localhost ne fonctionneront pas!).

Connecter un client au Cluster Galera

Installez le client mysql/mariadb

apt-get install -y mariadb-client

Si vous souhaitez pouvoir 'l'utiliser depuis php, installez le module php-mysql

apt-get install php-mysql

Pour vous connecter à vos Bases De Données, spécifiez comme host au choix votre Répartiteur de charge HaProxy ou directement un de vos serveurs Galera. N'oubliez pas de bien joindre les IP que vous avez spécifiez en écoute à moins d'avoir choisis "bind 0.0.0.0".

Du point de vue client le cluster va se comporter comme un simple serveur mysql/mariadb. N'oubliez pas néanmoins de toujours utiliser des clés primaires dans vos tables de données.


Quelques commandes

Afficher des infos à propos du cluster (toutes les variables "wsrep_").
mysql -u root -p -e "show status like 'wsrep%';"
Afficher des infos à propos des utilisateurs de vos Base de Données.
mysql -u root -p -e "select host, user, password from mysql.user;"
Créer un utilisateur et sa Base de Données
mysql -u root -p -e "CREATE DATABASE MA_BASE; GRANT ALL PRIVILEGES ON MA_BASE.* TO 'monUSER'@'10.8.1.%' identified by 'monPass'; FLUSH PRIVILEGES;"
  • Traduction : Créer la base de données intitulée MA_BASE. Ensuite donner accès à MA_BASE à l'utilisateur monUSER depuis n'importe quelle adresse du réseau 10.8.1.x et dont le mot de passe est monPass (en claire).
Changer mot de passe utilisateur
mysql -uroot -p -e "UPDATE mysql.user SET Password=PASSWORD('monNouveauPASS') WHERE USER='monUSER';"
Changer Host accepté pour un utilisateur
mysql -uroot -p -e "UPDATE mysql.user SET Host='%.%.%.%' WHERE USER='monUser';"
  • Dans l'exemple ici on autorise toutes les IP sources pour l'utilisateur monUser.
Checker combien de Nœuds sont connecté.
mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
  • Cette commande est très utile pour vérifier qu'une machine est bien connectée au cluster.

screenshot-2017_08_22-Commade_Galera_Cluster_mariadb_Status_Cluster

Supprimer une Base de Données.
mysql -uroot -p -e "DROP DATABASE maBaseDeDonnées;"
Supprimer un utilisateur
mysql -uroot -p -e "DROP USER ‘identifiant’@’serveur’;"

Forum Linux.général [Tuto/HowTo] Protéger ses Bases de Données MySQL/MariaDB contre les pannes matérielles - Partie 1

2
27
avr.
2017

Préambule

  • Sur certains sites (LinuxFR par ex) on reproche souvent aux auto-hébergés d'avoir une faible résistance aux pannes et d'être incapable de créer une infrastructure capable de tenir à travers le temps ni de monter en charge. Ce tuto fais partie d'une série de tutos visant à résoudre cette problématique en apportant des systèmes et méthodologies compréhensible et applicable par des noobs.
  • Au moins 80% de la procédure est applicable via copier-coller.
  • Il va de soit que vous pouvez remplacer (...)

Forum Programmation.python choix pour démarrer en Python

3
3
mar.
2017

Salut,

Je vais faire une petite application, sous Windows, (4 fenêtres principales et 2 annexes) liée à une base de données (Firebird probablement). Je pourrais le faire en 2h avec MS Access … mais je me suis dit que, depuis le temps, que je veux me mettre à Python, c'est le moment.

Du coup, il faut que je choisisse un framework qui me permette de travailler avec une base de données et de gérer des listes et des (...)

Open Beauty Facts : que contiennent vraiment nos produits cosmétiques ?

35
31
juil.
2016
Open Data

Open Beauty Facts est un projet collaboratif en ligne dont le but est de constituer une base de données libre et ouverte sur les produits cosmétiques du monde entier.

Après les aliments, Open Food Facts s’attelle donc à un nouveau chantier : les produits de beauté. Lancé en février 2016, Open Beauty Facts a pour but de réaliser pour les cosmétiques, dentifrices et autres shampooings ce que Open Food Facts a fait pour la nourriture.

Logo Open Beauty Facts

Forum général.cherche-logiciel Appliquer des méta données sur des photos raw en grande quantité ...

Posté par . Licence CC by-sa
6
31
août
2015

Bonsoir,
je me décide - enfin - a lancer une bouée à la mer … je manipule de plus en plus de méta données sur des photos et je cherche à gagner en efficacité. Je vous raconte un peu mon contexte histoire que vous ayez la description du besoin.

Je fais de la photo sous marine. J'essaye d'identifier ce que j'observe. Pour chaque photo j'ai systématiquement au moins deux mots clés liés : le nom de la chose observée en (...)

Journal L'état de Wikidata (Avril 2015) - 3 ans de développement

26
12
avr.
2015

Nalut.

Extrait non exhaustif et choix totalement contingent d'informations sur Wikidata triés par la méthode du vrac:

  • Wikidata a fêté ses 3 ans - (ne le dites à personne, ce projet est un poisson d'Avril)
  • Le fichier VIAF, qui fédère les données des bibliothèques du monde entier et qui fournit des identifiants pour les auteurs des livres qui paraissent, par exemple, approfondi sa collaboration avec Wikimédia en utilisant les identifiants Wikidata à la place des titres d'articles de la (...)

Rencontre #4 du PLUG à Lyon le mercredi 15 avril 2015

Posté par (page perso) . Édité par Benoît Sibaud et palm123. Modéré par Nÿco. Licence CC by-sa
10
16
mar.
2015
Base de données

Le mercredi 15 avril 2015 de 19h à 22h, aura lieu la quatrième rencontre du PLUG (PostgreSQL Lyon User Group), au gîte numérique, 6 rue Saint Georges à Lyon. Ce sera l'occasion de parler de PoWA et les techniques de détection d'indexes non utilisés, présenté par Ronan Dunklau. La présentation cible aussi bien les développeurs que les équipes d'exploitation des données.

Si vous souhaitez proposer une autre conférence, n'hésitez pas à le faire savoir.

Le reste de la soirée donnera lieu à des discussions informelles sur des sujets divers et variés autour de quelques verres que chacun apportera.

Que vous découvriez PostgreSQL ou que vous cherchiez des retours d'expériences sur des utilisations avancées du moteur, vous êtes les bienvenu(e)s.

Pour indiquer votre venue, merci de vous inscrire ou de me faire un retour à cette dépêche.
http://www.meetup.com/PostgreSQL-User-Group-Lyon/events/221188759/

Journal Open Source Rookies of the Year

15
15
mar.
2015

Alors c'est la première fois que je vois ce prix et puisque je n'ai rien vu passer à ce sujet sur LinuxFr.org, je me suis dit que j'allais partager ça.

Le prix est décerné par Black Duck (boite derrière un moteur de recherche de code (suite à un rachat) et OpenHub (ex Ohloh)).

Gagnant:

  • cAdvisor
    Analyse d'utilisation de ressources et performance de conteneurs.

  • CockrochDB
    Base de données répliquée géographiquement. Je ne précise pas plus, je suis en train (...)

Forum général.cherche-logiciel Interface Web d'administration SQL

0
29
jan.
2015

Bonjour,

Je recherche une interface Web d'administration de base de données SQL.
Typiquement un PHPMyAdmin qui sache gérer aussi PGSql, Sybase, Oracle ou autres …
Je sais que ça existe car j'en avais repéré un il y a un moment mais je ne sais pas ce que j'ai fais de mon foutu bookmark :-)

Ainsi soit-libre.
Merci

Meetup : Les bonnes pratiques de MariaDB le 29 janvier 2015 chez Mozilla Paris

Posté par . Édité par Nils Ratusznik. Modéré par Yvan Munoz. Licence CC by-sa
11
22
jan.
2015
Base de données

LeMug.fr (MySQL/MariaDB User Group France), organise un Meetup avec la contribution de MariaDB, à partir de 18h30 dans les locaux de Mozilla, 16 bis boulevard Montmartre, à Paris. Le thème abordé sera « Les bonnes pratiques avec MariaDB ».

Cet événement est ouvert à l'ensemble des développeurs et développeuses de tous les langages (C, PHP, Python, Java, Perl, Ruby, etc…). Ainsi, vous pourrez rencontrer la communauté de MariaDB.

Comme toujours le rendez-vous est gratuit et ouvert à tous, n’hésitez donc pas en parler autour de vous, et comme toujours… le nombre de places est limité. Alors n'hésitez pas à vous inscrire à partir de la page de l'événement !

Le programme de cette soirée :

  • ouverture des portes à 18h30 (début 19h00) ;
  • première présentation : installer et configurer MariaDB, par William Agasvari ;
  • deuxième présentation : les nouvelles fonctions et fonctionnalités de MariaDB, par Christophe Villeneuve et Stéphane Varoqui ;
  • troisième présentation : tour d’horizon des nouveaux moteurs de stockage, par Serge Frezefond ;
  • networking et cocktail sponsorisé par D4 et MariaDB.

Revue de presse de l'April pour la semaine 3 de l'année 2015

Posté par (page perso) . Édité par BAud. Modéré par Nÿco. Licence CC by-sa
23
21
jan.
2015
Internet

La revue de presse de l'April est régulièrement éditée par les membres de l'association. Elle couvre l'actualité de la presse en ligne, liée au logiciel libre. Il s'agit donc d'une sélection d'articles de presse et non de prises de position de l'association de promotion et de défense du logiciel libre.

Sommaire

Journal Mozilla location services: quand il faut choisir entre liberté et vie privée

27
30
oct.
2014

Récemment, Mozilla travaille sur les location services, un service geolocalisation à partir du wifi ou du réseau cellulaire, qui a vocation a être intégré dans Firefox/Firefox OS. C’est un service très utile, à un détail près: il est propriétaire.

Les principaux écosystèmes mobiles ont un service de geolocalisation à partir du wifi: c’est très rapide, et pratique quand on a pas de GPS sur sa tablette. C’est aujourd’hui une fonctionnalité incontournable pour un smartphone. Le principe est simple: on envoie (...)

Exploitez vos SGBD grâce à dbSQWare

Posté par (page perso) . Édité par Nÿco et Xavier Claude. Modéré par Pierre Jarillon. Licence CC by-sa
30
24
mai
2014
Base de données

Une petite précision tout d'abord sur ce qu'est un SGBD ! Voici ce que nous écrit Wikipédia à ce sujet "En informatique un système de gestion de base de données (abr. SGBD) est un logiciel système destiné à stocker et à partager des informations dans une base de données, en garantissant la qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité des opérations."
Il en existe un grand nombre, plus ou moins libres et plus ou moins répandus. Dans les plus connus du monde libre, il y a notamment MySQL, PostgreSQL…

À l'heure actuelle, une grande majorité des applications voulant stocker de l'information le fait dans un SGDB. Par exemple, nombre de sites web sont développés en environnement LAMP dont le "M" vient de MySQL. Vient ensuite une autre précision à donner sur ce qu'est "l'exploitation" de ces SGBD. Cela regroupe en fait les tâches récurrentes (souvent automatisées) faites par les administrateurs de bases de données.

La première qui vient à l'esprit est celle de backup (sauvegarde). En général, quand on stocke de l'information, c'est que l'on ne veut pas la perdre ! Il est donc de bon ton d'avoir un système de backup efficace qui nous permettra de récupérer nos données perdues ou altérées en cas de problème (matériel, logiciel, erreur humaine…).

Viennent ensuite les tâches dédiées à la performance comme l'update statistics ou la réorganisation (là, on est dans le barbare pour certains, mais on tâchera d'écrire un article dessus si cela intéresse du monde).

Et enfin, il est bien de pouvoir avoir une vision globale de son parc de SGBD en terme de type, version, volumétrie… c'est ce que l'on appelle la gestion de la CMDB et du capacity planning.

Un outil a été développé dans ce sens pour regrouper toutes ces tâches (et bien d'autres), il s'agit de dbSQWare.

Jeudi du libre de janvier 2014 à Lyon : Wikidata

Posté par (page perso) . Édité par Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa
17
7
jan.
2014
Communauté

Le premier jeudi du libre de cette nouvelle année sera consacré à Wikidata, base de données libre et dernier né des projets Wikimedia.

Il s'agit d'une base de données libre, collaborative (basée sur un wiki) et multilingue, qui collecte des données structurées destinées à être facilement réutilisables et à alimenter les autres projets Wikimedia.

Cette présentation est destinée à faire connaître ce nouveau projet aux Wikipédiens, et, plus généralement, à tous les contributeurs de wikis.

N'hésitez pas à apporter votre ordinateur pour mieux découvrir ce wiki !

La conférence aura lieu le jeudi 9 janvier 2014 à 19h30, à la Maison pour tous - Salle des Rancy, 249 rue Vendôme, 69003 Lyon (Métro Saxe Gambetta).