10 mai 2012

Firefox Synch

Comme beaucoup de choses il faut y gouter pour apprécier. La synchronisation du bookmark, des mots de passe et des préférences fait partie de ces ‘bonnes’ choses. Firefox propose cette fonctionnalité mais la manière de l’activer n’est pas toujours évidente car il y a plusieurs chemins pour faire la même chose. Voici une méthode homogène.

(oui j’utilise un Firefox en Anglais …)

1) Créer le compte de synchronisation depuis le premier poste

Menu: Tools > Options > Onglet "Sync".
Cliquez sur le texte "Setup Firefox sync".
Cliquez sur le bouton "Create a new account".

  email              (aucun mail de confirmation n'est envoyé)
  password       (8 caractères minimum)
  accepter les termes d'utilisation
  capcha

  Cliquer sur le bouton en bas à gauche "Sync options"
    - donnez un nom à cette machine et/ou session et/ou profils.
    - choisissez ce que vous voulez synchroniser.
  Enfin, cliquez sur le bouton "next".
 
  Vos données sont encryptées localement et envoyées sur le serveur de Mozilla.
 
2) Préparer la synchronisation avec d’autres postes

Menu: Tools > Options > Onglet "Sync"
Cliquez sur le texte "pair a Device".
Cliquez sur le texte "I don't have the device with me".
La "Recovery key" sera affichée. Notez/Sauvez là, elle sera demandée sur les autres postes à l'étape #3.

3) Sur les autres postes (ou autres sessions, ou autres profils)

Menu: Tools > Options > Onglet "Sync".
Cliquer sur le texte "Setup Firefox sync".
Cliquez sur le boutton "I Have an Account".
Cliquez sur le texte "I don't have the device with me".
Entrez les informations demandées (les mêmes que celles données à la création du compte).
  email
  password
Puis la "recovery key" obtenue à l’étape #2.

Les données sont récupérées encryptées depuis le serveur de Mozilla, puis décryptées localement, et fusionnées avec la configuration locale.


Notes :

* A tout moment, pour forcer la synchronisation, vous pouvez faire:
Menu: Tools > Synch now

* Pour arrêter la synchroniser faire:
Menu: Tools > Options > Onglet "Sync" 
Cliquez sur le texte "Unlink this device"
Les infos sauvées sur ce compte ne sont pas détruites et la config locale (bookmark, mots de passe, préférences) reste inchangée.

12 avril 2012

HG en 7 commandes

Vous avez un projet en cours de développement et vous aimeriez le partager avec d'autres développeurs. Cela implique de le mettre sous contrôle d’un système de contrôle de révision come CVS, SVN ou Mercurial.

Voici comment passer votre projet sous contrôle de Mercurial en utilisant TortoiseHg, la version Windows de Mercurial. (hg étant le nom du programme utilisé en ligne de commande)

Disons que votre projet à passer sous Mercurial est dans workspace/Demo.

1) init
Allez dans le repertoire workspace.
Bouton droit sur « demo » : TortoiseHg > Create Repository Here


Cliquer « Close »
Un message confirme la création.
En fait hg a créé le répertoire Demo/.hg

2) add
Maintenant il faut ajouter les fichiers à ce repository local. En fait il s’agit de dire à Mercurial quels sont les fichiers qu’il doit prendre en charge.

Aller dans votre répertoire workspace\Demo
Sélectionnez les répertoires et fichiers à passer sous contrôle de Mercurial.
Bouton droit sur la selection de fichiers : TortoiseHg > Add Files…



Une fenêtre listant tous les fichiers à ajouter s’ouvre.
En cliquant sur un nom de fichier on peut voir son contenu.
Confirmez en cliquant sur le bouton « Add »

3) commit
Il faut maintenant dire à Mercurial de faire une copie de ces fichiers dans le repository local (en fait le répertoire .hg)
Bouton droit n’importe où dans le repertoire workspace/Demo : TortoiseHg > Commit…

Une fenêtre s’ouvre avec la liste de tous les fichiers de ce répertoire.
La couleur et la lettre qui préfixe chaque fichier indique l’état du fichier :
  A=Ajouté mais pas encore pris en compte, 
  ?=non géré par mercurial
  ect...

Tapez un commentaire dans le champ en haut à droite.
Cliquez sur le bouton « Commit »

La fenêtre est mise à jour. Les fichiers ajoutés n’y figurent  plus.
La fermer en cliquant sur le bouton « Close »

4) clone
Votre repository local est maintenant en place. Il faut mettre en place le repository central, celui qui vous permettra de partager vos fichiers avec les autres développeurs du monde extérieur.

Bouton droit n’importe où dans le directory workspace\Demo : TortoiseHg > Clone…
Donner l’url de votre repository dans le champ destination. (Voir comment configurer ssh + hg)



Et voila !
Votre repository Mercurial est maintenant opérationnel des deux cotés (local et central).
Vous n’aurez plus à utiliser les commandes init et clone.

Pour mémoire voici comment sont organisés les 2 niveaux de repository (Local/Central) de Mercurial


Ceci signifie qu'il n'est pas necessaire d'etre connecté au réseau pour travailler avec le repository local.

Pour valider votre travail en local : commit
Pour envoyer vos fichiers sur le serveur : push
Pour récupérer des fichiers depuis le server : pull
Pour mettre à jour vos fichiers de travail : update

Ne pas oublier de faire un add chaque fois que l’on crée un nouveau fichier.

30 mars 2012

Stop Disable Remove

Je défends l’idée que d’ajouter des couches de sécurité, et donc d’avoir plus de code en mémoire, n’est pas une garantie de plus de sécurité. Je préfère ne faire tourner que le strict minimum, correctement configuré et à jour.

Donc, après une installation de Linux je désactive systématiquement SELinux, iptables, ipv6 et les applications inutiles telles que sendmail.
systemctl stop sendmail
systemctl disable sendmail

systemctl stop iptables
systemctl disable iptables

systemctl stop ip6tables
systemctl disable ip6tables

systemctl stop firewalld
systemctl disable firewalld
Pour désactiver SELinux éditer /etc/selinux/config pour remplacer cette ligne :
SELINUX=enforcing
par celle ci :
SELINUX=disabled
Verifier l'etat avec
sestatus

Après le reboot il doit afficher
SELinux status:                 disabled

Pour désactiver ipv6, ajouter ces 4 lignes au fichier /etc/sysctl.conf
net.ipv6.conf.lo.disable_ipv6=1
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.enp2s0.disable_ipv6
Remplacer enp2s0 par le nom de l'interface sur la quelle vous voulez désactiver ipv6.

Utiliser la commande  find /proc/sys/net/ipv6 -name disable_ipv6 pour trouver tous les flags pouvant être utilisés


Une partie de IPv6 est maintenant intégrée au noyau, la désactivation n'est donc jamais complète.

Je vérifie qu’il n’y que les services nécessaires qui acceptent des connections.
 netstat –nat
Je vérifie de n’avoir sur le disque que des applications utiles
yum list installed
Je supprime celles qui sont inutiles
yum erase sendmail procmail
Je met a jour celles qui restent

yum update
Enfin, pour que les modif dans les fichier de conf soient prises en compte:
shutdown -r now            # -r pour reboot

IMPORTANT:  Ce travail au niveau de Linux doit aussi être fait aussi au niveaux d'applications comme Apache qui, par défaut, chargent trop de modules inutiles.


 


26 mars 2012

Paradoxe de Borda

PREALABLE

Ceci n'est pas une discussion sur la fiabilité des sondages mais sur un paradoxe soulevé par Bordas et repris par Condorcet (les sondages n’existaient pas à leur époque). Le paradoxe présenté ici ne fait que rajouter à la complexité d’interprétation des sondages.

Ce qui suit peut s’appliquer à tous types de choix ; qu’il s’agisse de choisir un président de la république, un sous-traitant, un projet à financer ect…  J’utiliserai le vocabulaire des élections (candidats, électeurs, voix) mais ce n’est pas une exigence.

ETABLIR  LES  PREFERENCES

Posons la question suivante à tous les électeurs et supposons que tous les électeurs répondent honnêtement.
« Parmi ces 3 candidats A, B, C pour lequel voteriez vous ? »
On note la réponse de l’électeur, puis on lui repose la question en éliminant de la liste celui qu’il vient de choisir. Ainsi, pour chaque électeur on obtient un classement des 3 candidats.

Exemple :
Q1) Votre choix entre « A, B, C » ?
R2) B.
Q2) Votre choix entre « A, C » ?
R2) A.
Pour cet électeur le classement est donc : B, A, C (ligne 3 dans les tableaux ci-dessous)

NOTES: Avec 3 candidats il y a 6 combinaisons possibles. De manière générale avec n candidats il y a factorielle(n) combinaisons, ce qui croit très vite : 3 candidats 6 combinaisons, 4 candidats 24 combinaisons … 11 candidats 39 916 800 combinaisons. Pour des raisons de facilité j’en reste à 3 candidats mais avec des programmes on peut simuler sans problèmes des millions de combinaisons. Notez qu’avec 12 candidats il y a plus de combinaisons que d’électeurs en Europe !

Imaginons que les préférences des électeurs établissent le classement suivant :

    combinaisons      voix
1    A    B    C       2 %
2    A    C    B      37 %
3    B    A    C       5 %
4    B    C    A      27 %
5    C    A    B       3 %
6    C    B    A      26 %

ANALYSE

39% des électeurs ont mis A en tête (lignes 1 et 2)
32% des électeurs ont mis B est en tête (lignes 3 et 4)
29% des électeurs ont mis C est en tête (lignes 5 et 6)


Notez que ces trois pourcentages sont exactements les même que dans le paradoxe de Condorcet.

Dans un système à deux tours, comme la présidentielle en France, A et B seraient sélectionnés pour le second tour.

Analysons les préférences en prenant les candidats deux à deux.


  1. A face à B : B l’emporte, paradoxalement, avec 58% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 1, 2, 5. Soit 2% + 37% + 3% = 42%
    Le candidat B recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 3, 4, 6. Soit 5% +27% + 12% = 58% 

     
  2. B face à C : C l’emporte, paradoxalement, avec 66% des voix.
    Le candidat B recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 3, 4. Soit 2% + 5% +27% = 34%
    Le candidat C recevra les voies des combinaisons où il est classé avant B,
    c’est à dire les lignes 2, 5, 6. Soit 37% + 3% + 26% = 66%

     
  3. A face à C : C l’emporte, paradoxalement, avec 56% des voix.
    Le candidat A recevra les voies des combinaisons où il est classé avant C,
    c’est à dire les lignes 1, 2, 3. Soit 2% + 37% + 5% = 44%
    Le candidat C recevra les voies des combinaisons où il est classé avant A,
    c’est à dire les lignes 4, 5, 6. Soit 27% + 3% + 26% = 56%

     

PARADOXE  DE  BORDA

Paradoxalement, le vainqueur du premier tour perd en tête à tête face aux autres candidats. Ici le résultat des tête à tête est l'exact opposé du classement général : C'est le paradoxe de Borda. 

L'ordre, d'aprés les 3 tête à tête, est C, B, A. Contraitement au paradoxe de Condorcet, la transitivite des tête à tête est respectée. Pourtant on ne retrouve pas cette logique dans le classement quand on compares les 3 candidats sur un seul tour.

Le vainqueur de l'ensemble des tête à tête (ici C) est appelé "vainqueur de Condorcet". C'est  celui qui est préféré à tout autre. Mais ce vainqueur n'existe pas toujour : c'est le paradoxe de Condorcet.