<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>KrysKool.browse(cr, uid, ids, context)</title><link href="http://blog.kryskool.org" rel="alternate"></link><link href="http://blog.kryskool.org/feeds/all.atom.xml" rel="self"></link><id>http://blog.kryskool.org</id><updated>2012-01-11T21:30:00+01:00</updated><entry><title>OpenLDAP Server sur MacOS X Client</title><link href="http://blog.kryskool.org/openldap-server-sur-macos-x-client-fr.html" rel="alternate"></link><updated>2012-01-11T21:30:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/openldap-server-sur-macos-x-client-fr.html</id><summary type="html">&lt;p&gt;Sous MacOS X Leopard, Snow Leopad, Lion, est installé par défaut &lt;a class="reference external" href="http://www.openldap.org/"&gt;OpenLDAP&lt;/a&gt;, mais celui-ci n'est pas configuré. La configuration de &lt;a class="reference external" href="http://www.openldap.org/"&gt;OpenLDAP&lt;/a&gt; va s'effectuer en quelques étapes&lt;/p&gt;
&lt;p&gt;La première étape sera de générer un mot de passe encodé en SHA1, enfin de le renseigner dans le fichier de configuration, nous allons prendre comme exemple le mot de passe &lt;strong&gt;test&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;slappasswd
New password:
Re-enter new password:
&lt;span class="o"&gt;{&lt;/span&gt;SSHA&lt;span class="o"&gt;}&lt;/span&gt;0SS521ClE/XOg2q+EYnF4+17UQTpYho0
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Maintenant que nous avons notre mot de passe, nous allons éditer le fichier de configuration &lt;strong&gt;/etc/openldap/slpad.conf&lt;/strong&gt;, mais ce fichier n'existe pas par défaut,
il va donc falloir en créer un à partir du modèle &lt;strong&gt;/etc/openldap/slapd.conf.default&lt;/strong&gt;&lt;/p&gt;
&lt;div class="section" id="installation"&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;cp slapd.conf.default slapd.conf
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Passons maintenant à l'édition du fichier &lt;strong&gt;/etc/openldap/slpad.conf&lt;/strong&gt;, et recherchons la ligne commençant par &lt;strong&gt;rootpw&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;#######################################################################
# BDB database definitions
#######################################################################

database        bdb
suffix          &amp;quot;dc=my-domain,dc=com&amp;quot;
rootdn          &amp;quot;cn=Manager,dc=my-domain,dc=com&amp;quot;
# Cleartext passwords, especially for the rootdn, should
# be avoid.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw          secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory       /private/var/db/openldap/openldap-data
# Indices to maintain
index   objectClass     eq
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et remplaçer la ligne par celle-ci.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;rootpw          {SSHA}0SS521ClE/XOg2q+EYnF4+17UQTpYho0
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le mot de passe étant celui générer par la commande &lt;strong&gt;slappasswd&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez également changer les lignes commençant par &lt;strong&gt;suffix&lt;/strong&gt; et &lt;strong&gt;rootdn&lt;/strong&gt; pour y mettre votre domaine, voici le mien qui va se nommer &lt;strong&gt;kryskool.local&lt;/strong&gt;
car celui me servira principalement de test&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;suffix          &amp;quot;dc=kryskool,dc=local&amp;quot;
rootdn          &amp;quot;cn=Manager,dc=kryskool,dc=local&amp;quot;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Testons que le fichier de configuration est correct et non corrompu&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sudo /usr/libexec/slapd -Tt
bdb_db_open: warning - no DB_CONFIG file found in directory /private/var/db/openldap/openldap-data: &lt;span class="o"&gt;(&lt;/span&gt;2&lt;span class="o"&gt;)&lt;/span&gt;.
Expect poor performance &lt;span class="k"&gt;for &lt;/span&gt;suffix &lt;span class="s2"&gt;&amp;quot;dc=kryskool,dc=local&amp;quot;&lt;/span&gt;.
bdb_monitor_db_open: monitoring disabled; configure monitor database to &lt;span class="nb"&gt;enable&lt;/span&gt;
config file testing succeeded
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si vous avez le message &lt;strong&gt;successded&lt;/strong&gt; c'est que votre configuration est correcte.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="execution"&gt;
&lt;h2&gt;Execution&lt;/h2&gt;
&lt;p&gt;Maintenant il nous reste plus qu'a lancer le serveur ldap via la commande &lt;strong&gt;slapd&lt;/strong&gt; en activant le mode debug de plus haut niveau (255)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;sudo slapd -d 255
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si jamais vous obtenez &lt;em&gt;command not found&lt;/em&gt; il va falloir indiquer le chemin complet&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;sudo /usr/libexec/slapd -d 255
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lors du premier lancement, le système va créer tous un tas de paramètre, charger les schémas spécifier dans votre fichier &lt;strong&gt;slapd.conf&lt;/strong&gt;.
Ensuite validons que nous pouvons nous connecter au serveur LDAP&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ldapwhoami -H ldap://localhost:389/ -x -D &lt;span class="s2"&gt;&amp;quot;cn=Manager,dc=kryskool,dc=local&amp;quot;&lt;/span&gt; -W
Enter LDAP Password:
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite saisissez le mot de passe que vous avez générer à la première étape. Si l'authentification a reussi vous devriez avoir&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;dn:cn&lt;span class="o"&gt;=&lt;/span&gt;Manager,dc&lt;span class="o"&gt;=&lt;/span&gt;kryskool,dc&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;local&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;sinon vous aurez ce message, qui indique une erreur d'authentification&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;ldap_bind: Invalid credentials &lt;span class="o"&gt;(&lt;/span&gt;49&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous pouvez également valider un première recherche avec la commande &lt;strong&gt;ldapsearch&lt;/strong&gt;, en remplaçant bien sur le &lt;em&gt;rootdn&lt;/em&gt; par le votre&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ldapsearch -H ldap://localhost:389 -x -D &lt;span class="s2"&gt;&amp;quot;cn=Manager,dc=kryskool,dc=local&amp;quot;&lt;/span&gt; -W -b &lt;span class="s2"&gt;&amp;quot;dc=kryskool,dc=local&amp;quot;&lt;/span&gt; -s base -a always -z 1 &lt;span class="s2"&gt;&amp;quot;(objectClass=*)&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hasSubordinates&amp;quot;&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;objectClass&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="ajout-de-schemas-supplementaires"&gt;
&lt;h2&gt;Ajout de schémas supplémentaires&lt;/h2&gt;
&lt;p&gt;Pour exploiter un minimum votre annuaire LDAP, il va falloir lui rajouter au moins 2 schémas supplémentaires, éditer le fichier &lt;strong&gt;/etc/openldap.slapd.conf&lt;/strong&gt;
et au début du fichier, en juste en dessous du premier include ajouter y les 2 lignes suivantes, puis redémarrer votre service &lt;strong&gt;slapd&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;include         /private/etc/openldap/schema/cosine.schema
include         /private/etc/openldap/schema/inetorgperson.schema
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
</summary><category term="mac macosx openldap ldap"></category></entry><entry><title>Installer Virtualenv sous MacOS X</title><link href="http://blog.kryskool.org/installer-virtualenv-sous-macosx-fr.html" rel="alternate"></link><updated>2012-01-04T20:10:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/installer-virtualenv-sous-macosx-fr.html</id><summary type="html">&lt;p&gt;Pour installer &lt;a class="reference external" href="http://pypi.python.org/pypi/virtualenv"&gt;virtualenv&lt;/a&gt; et &lt;a class="reference external" href="http://www.doughellmann.com/projects/virtualenvwrapper/"&gt;virtualenvwrapper&lt;/a&gt; sous Mac OS X,
il faut au préallable installer &lt;a class="reference external" href="http://developer.apple.com/technologies/tools/"&gt;XCode&lt;/a&gt; , qui se trouve sur le DVD d'installation de Mac OS X ou téléchargeable sur le
site d'Apple&lt;/p&gt;
&lt;div class="section" id="installation-de-virtualenv"&gt;
&lt;h2&gt;Installation de virtualenv&lt;/h2&gt;
&lt;p&gt;L'installation va se faire avec l'utilitaire &lt;a class="reference external" href="http://pypi.python.org/pypi/pip"&gt;pip&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;sudo pip install virtualenv
&lt;span class="nv"&gt;$ &lt;/span&gt;sudo pip install virtualenvwrapper
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut ensuite ajouter le script &lt;strong&gt;virtualenvwrapper.sh&lt;/strong&gt; dans le ~/.bashrc pour qu'il soit charger au démarrage&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;source /usr/local/bin/virtualenvwrapper.sh
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ouvrez un nouveau terminal, ou executer la commande ci-dessus dans votre terminal courant, vous verez apparaître quelques lignes qui correspondent
à l'initialisation de virtualenv.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="creation-de-l-environnement-virtuel"&gt;
&lt;h2&gt;Creation de l'environnement virtuel&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mkvirtualenv env1
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et vous verrez apparaître quelques choses comme ceci&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;mkvirtualenv env1
Installing
distribute..........................................
....................................................
....................................................
...............................done.
virtualenvwrapper.user_scripts Creating /Users/kryskool/Envs/env1/bin/predeactivate
virtualenvwrapper.user_scripts Creating /Users/kryskool/Envs/env1/bin/postdeactivate
virtualenvwrapper.user_scripts Creating /Users/kryskool/Envs/env1/bin/preactivate
virtualenvwrapper.user_scripts Creating /Users/kryskool/Envs/env1/bin/postactivate  New python executable in env1/bin/python
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Par défaut votre prompt va commencer par &lt;strong&gt;(env1)&lt;/strong&gt; pour vous indiquer en permanence que vous êtes sous votre environnement virtuel&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="o"&gt;(&lt;/span&gt;env1&lt;span class="o"&gt;)&lt;/span&gt;kryskool@The-Snow-Leopard~
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite installer vos librairies python avec &lt;a class="reference external" href="http://pypi.python.org/pypi/pip"&gt;pip&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="lister-les-environnements-virtuels-existants"&gt;
&lt;h2&gt;Lister les environnements virtuels existants&lt;/h2&gt;
&lt;p&gt;Dans votre console, executer la commande &lt;strong&gt;lsvirtualenv&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;lsvirtualenv
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous verrez apparaitre la liste de vos environnements virtuels disponibles&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;kryskool@The-Snow-Leopard~:lsvirtualenv
env1
kryskool@The-Snow-Leopard~:
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une ligne par environnement virtuel&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="charger-un-environnement-virtuel-existant"&gt;
&lt;h2&gt;Charger un environnement virtuel existant&lt;/h2&gt;
&lt;p&gt;Pour charger un environnement virtuel existant, il faut utiliser la commande &lt;strong&gt;workon&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;workon env1
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="quitter-l-environnement-virtuel"&gt;
&lt;h2&gt;Quitter l'environnement virtuel&lt;/h2&gt;
&lt;p&gt;Pour quitter l'environnement virtuel, il faut utiliser la commande &lt;strong&gt;deactivate&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;deactivate
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Votre prompt ne sera plus préfixer du nom de l'environnement virtuel entre parenthèses.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="python"></category><category term="virtualenv"></category><category term="macosx"></category></entry><entry><title>Recherche avec lettres accentuées</title><link href="http://blog.kryskool.org/recherche-avec-lettres-accentuees-fr.html" rel="alternate"></link><updated>2012-01-02T15:43:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/recherche-avec-lettres-accentuees-fr.html</id><summary type="html">&lt;p&gt;OpenERP repose entièrement sous PostgreSQL, ainsi nous pouvons utiliser ce que nous offre cette base de données en terme de fonctionnalités.
C'est le cas lorsque des termes français sont insérés avec ou sans accents, par défaut nous sommes contraint de rechercher avec ou sans accent,
l'astuce décrite ci-dessous pourra être détourner pour rechercher les départements à partir du code postal.&lt;/p&gt;
&lt;div class="section" id="recherche-accentues"&gt;
&lt;h2&gt;Recherche accentués&lt;/h2&gt;
&lt;p&gt;Prenons comme exemple la recherche de tous les contacts se prénommant Cédric, vous allez saisir &lt;strong&gt;Cédric&lt;/strong&gt; dans la vue de recherche&lt;/p&gt;
&lt;img alt="Recherche avec accents" src="images/Recherche-par-lettres-manquantes_1.png" /&gt;
&lt;p&gt;Mais nous souhaitons avoir tous les résultats en même temps, que Cédric soit écrit&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Cédric&lt;/li&gt;
&lt;li&gt;Cedric&lt;/li&gt;
&lt;li&gt;CEDRIC&lt;/li&gt;
&lt;li&gt;CÉDRIC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans la vue de recherche, vous allez saisir le nom en remplaçant les lettres accentués par un &lt;strong&gt;_&lt;/strong&gt; (underscore)&lt;/p&gt;
&lt;img alt="Recherche avec les accents remplacer par des _" src="images/Recherche-par-lettres-manquantes_2.png" /&gt;
&lt;/div&gt;
&lt;div class="section" id="recherche-code-postaux"&gt;
&lt;h2&gt;Recherche code postaux&lt;/h2&gt;
&lt;p&gt;La recherche par défaut d'OpenERP axe sa recherche sur &lt;em&gt;contient ce mot&lt;/em&gt;, donc lorsque l'on souhaite recherche un département à partir des 2 premières lettres
on obtient également d'autres résultats que l'on ne souhaite pas, nous allons donc utiliser la même astuce que pour les lettres accentués.&lt;/p&gt;
&lt;p&gt;Les codes postaux français sont composés de 5 lettres dont les 2 premières compose le département, donc le principe va être de rechercher quelques choses de 5 lettres
en mettant le _ pour chaque lettres inconnues (Donc 3 fois à la fin)&lt;/p&gt;
&lt;p&gt;par exemple le code postal de l'Orne est 61 donc pour retrouver tous les partenaires du 61, nous saississons dans le champ &lt;strong&gt;code postal&lt;/strong&gt; 61___&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="standard-openerp"&gt;
&lt;h2&gt;Standard OpenERP&lt;/h2&gt;
&lt;p&gt;Le support de la fonction unaccent dans OpenERP sera natif à partir de la 6.1, à condition que votre version de PostgreSQL soit au moins la version 9.0,
ainsi que vous mettiez ou pas un accent vous ramenera l'ensemble des résultats.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="openerp"></category><category term="openobject"></category><category term="postgresql"></category></entry><entry><title>Connaitre la taille d'un base de données PostgreSQL</title><link href="http://blog.kryskool.org/connaitre-taille-base-postgresql.html" rel="alternate"></link><updated>2011-12-12T12:30:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/connaitre-taille-base-postgresql.html</id><summary type="html">&lt;p&gt;Pour connaitre la taille d'un base de données il faut utiliser la fonction &lt;a class="reference external" href="http://docs.postgresql.fr/9.1/functions-admin.html"&gt;pg_database_size&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;production=# select pg_database_size(&amp;#39;production&amp;#39;);
 pg_database_size
------------------
        513343780
(1 ligne)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Cette taille est donnée en octets, pour avoir une meilleur représentation en Méga ou Giga, il faut utiliser la fonction &lt;a class="reference external" href="http://docs.postgresql.fr/9.1/functions-admin.html"&gt;pg_size_pretty&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;production=# select pg_size_pretty(pg_database_size(&amp;#39;production&amp;#39;));
 pg_size_pretty
----------------
 490 MB
(1 ligne)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite si l'on souhaite connaître la taille d'un table il faut utiliser la fonction &lt;a class="reference external" href="http://docs.postgresql.fr/9.1/functions-admin.html"&gt;pg_relation_size&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;production=# select pg_size_pretty(pg_relation_size(&amp;#39;res_partner&amp;#39;));
 pg_size_pretty
----------------
 152 kB
(1 ligne)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si l'on souhaite également avoir la place prise par les indexes, il faut utiliser la fonction &lt;a class="reference external" href="http://docs.postgresql.fr/9.1/functions-admin.html"&gt;pg_total_relation_size&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;production=# select pg_size_pretty(pg_total_relation_size(&amp;#39;res_partner&amp;#39;));
 pg_size_pretty
----------------
 528 kB
(1 ligne)
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="postgresql"></category><category term="database"></category></entry><entry><title>Compilation nocture d'OpenERP</title><link href="http://blog.kryskool.org/Compilation-nocture-dOpenERP.html" rel="alternate"></link><updated>2011-04-30T10:23:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Compilation-nocture-dOpenERP.html</id><summary type="html">&lt;p&gt;Les compilations nocturnes de la &lt;a class="reference external" href="http://nightly.openerp.com/6.0/"&gt;version 6&lt;/a&gt; sont disponibles, ainsi qu'un aperçu de la &lt;a class="reference external" href="http://nightly.openerp.com/6.1-dev/"&gt;version 6.1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Bien sûr avant de tester tout cela pensez a faire des sauvegardes de votre base de données.&lt;/p&gt;
</summary><category term="linux"></category><category term="openerp"></category><category term="openobject"></category><category term="windows"></category></entry><entry><title>Configurer le clavier d'un macbook avec un linux en console sur Debian/Ubuntu</title><link href="http://blog.kryskool.org/Configurer-le-clavier-dun-macbook-avec-un-linux-en-console-sur-Debian-Ubuntu.html" rel="alternate"></link><updated>2010-02-14T14:42:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Configurer-le-clavier-dun-macbook-avec-un-linux-en-console-sur-Debian-Ubuntu.html</id><summary type="html">&lt;p&gt;Lorsque l'on installe la version serveur d'un linux, celui ne possède que la console, bien sur le mappage clavier d'un Macbook ne sera pas correctement mapper (y compris dans une machine virtuelle)
il faut donc le reconfigurer avec la méthode ci dessous&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;dpkg-reconfigure -p low console-data
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;choisir le menu&lt;/p&gt;
&lt;p&gt;Choisir un codage clavier dans la liste complète&lt;/p&gt;
&lt;p&gt;puis sélectionner&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Mac / Unknown / French / Standard / MacBook
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voila votre clavier de votre macbook correctement mapper&lt;/p&gt;
</summary><category term="debian"></category><category term="linux"></category><category term="macbook"></category><category term="macosx"></category><category term="ubuntu"></category><category term="virtualbox"></category><category term="vmware"></category></entry><entry><title>Debugguer facile un traitement OpenERP</title><link href="http://blog.kryskool.org/Debugguer-facile-un-traitement-OpenERP.html" rel="alternate"></link><updated>2010-01-29T23:10:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Debugguer-facile-un-traitement-OpenERP.html</id><summary type="html">&lt;p&gt;Si vous souhaitez avoir un trace permanente dans un morceau de code OpenERP mais que celui-ci ne s'affiche que lorsque votre serveur est en mode &lt;strong&gt;DEBUG&lt;/strong&gt;, il faut procéder comme suit.&lt;/p&gt;
&lt;p&gt;Ajouter&lt;/p&gt;
&lt;pre class="literal-block"&gt;
from tools.misc import debug
&lt;/pre&gt;
&lt;p&gt;Puis ensuite utiliser la fonction &lt;strong&gt;debug()&lt;/strong&gt; en y mettant la variable que vous souhaitez tracer, comme ceci&lt;/p&gt;
&lt;pre class="literal-block"&gt;
res = {'a': 'ok'}
debug(res)
&lt;/pre&gt;
&lt;p&gt;Vous verrez apparaitre ceci coté serveur si celui ci a été lancer avec &lt;strong&gt;--log--level=debug&lt;/strong&gt; ou que la variable &lt;strong&gt;log_level = debug&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="literal-block"&gt;
[2010-01-29 19:42:06,600] DEBUG:my_function: res = {'a': 'ok'}
&lt;/pre&gt;
&lt;p&gt;ou &lt;em&gt;my_function&lt;/em&gt; est la fonction dans lequel vous avez invoqué &lt;strong&gt;debug()&lt;/strong&gt;&lt;/p&gt;
</summary><category term="openerp"></category><category term="openobject"></category></entry><entry><title>Faille de sécurité dans OpenERP  5.0 et antérieur</title><link href="http://blog.kryskool.org/Faille-de-securite-dans-OpenERP-50-et-anterieur-fr.html" rel="alternate"></link><updated>2009-09-21T10:36:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Faille-de-securite-dans-OpenERP-50-et-anterieur-fr.html</id><summary type="html">&lt;p&gt;Cette faille est de type injection SQL, elle s'applique sur la méthode &lt;em&gt;read&lt;/em&gt; des objets en lui passant un demande mal formé qui permet d'injecter des requêtes
de MAJ des mot de passes utilisateur, et ainsi permettre un connexion future avec ces nouveaux mot de passe.&lt;/p&gt;
&lt;p&gt;La version 5.0.5 sortie la semaine corrige cette vulnérabilité. vous êtes inviter à mettre le plus rapidement possible à jour votre version si celle-ci est accessible
au travers d'internet sans protection (accès directe en XMLRPC ou NETRPC)&lt;/p&gt;
&lt;p&gt;La version est disponible &lt;a class="reference external" href="http://openerp.com/downloads.html"&gt;ici&lt;/a&gt;&lt;/p&gt;
</summary><category term="openerp"></category><category term="openobject"></category><category term="tinyerp"></category></entry><entry><title>Gestion de l'écotaxe ou DEEE</title><link href="http://blog.kryskool.org/Gestion-de-lecotaxe-ou-DEEE-fr.html" rel="alternate"></link><updated>2009-06-14T21:43:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Gestion-de-lecotaxe-ou-DEEE-fr.html</id><summary type="html">&lt;p&gt;Le système de taxes d'OpenERP permet de gérer la TVA entre autre mais aussi d'autres types de taxes qu'elles soient en pourcentage ou montant fixe (HT ou TTC).&lt;/p&gt;
&lt;p&gt;La DEEE est un taxe définit en montant HT, celle-ci se voie donc appliquer de la TVA. Bien sur cette taxe ne peut être remisable,
c'est à dire que si l'on fait 5% de remise sur le produit, cette taxe ne doit pas se voir amputer des 5%.&lt;/p&gt;
&lt;p&gt;La richesse d'OpenERP au niveau des taxes lui permet de gérer très facilement ce type de taxe, sans ajout de code Python.&lt;/p&gt;
</summary><category term="openerp"></category><category term="ecotaxe"></category><category term="deee"></category></entry><entry><title>Packaging du client OpenERP Pour Windows</title><link href="http://blog.kryskool.org/Packaging-du-client-OpenERP-Pour-Windows-fr.html" rel="alternate"></link><updated>2009-05-18T16:02:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Packaging-du-client-OpenERP-Pour-Windows-fr.html</id><summary type="html">&lt;p&gt;Ce packaging comprend les améliorations suivantes.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Timeout définissable&lt;/li&gt;
&lt;li&gt;Amélioration pour un fonctionnement simultannée en TSE/Citriix&lt;/li&gt;
&lt;li&gt;Amélioration de bug divers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous la trouverez disponible a cette &lt;a class="reference external" href="http://www.kryskool.org/tmp/"&gt;adresse&lt;/a&gt;.&lt;/p&gt;
</summary><category term="openerp"></category><category term="openobject"></category><category term="windows"></category></entry><entry><title>Traduction dans OpenERP 5.0</title><link href="http://blog.kryskool.org/Traduction-dans-OpenERP-50-fr.html" rel="alternate"></link><updated>2009-04-28T20:15:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Traduction-dans-OpenERP-50-fr.html</id><summary type="html">&lt;p&gt;En version 5.0 les traductions de chaques modules sont disponibles dans chaque répertoire de module. Dans un répertoire de module,
vous trouverez un répertoire &lt;a class="reference external" href="http://fr.wikipedia.org/wiki/Internationalisation_de_logiciel"&gt;i18n&lt;/a&gt; dans lequel vous trouverez des fichiers &lt;em&gt;.po&lt;/em&gt; et &lt;em&gt;.pot&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Le fichier &lt;em&gt;.pot&lt;/em&gt; est un fichier de modèle qui ne doit pas être traduit. les fichiers .po ont pour nom le pays et la langue tel que défnit par les normes
&lt;a class="reference external" href="http://fr.wikipedia.org/wiki/ISO_639"&gt;ISO 639&lt;/a&gt; et &lt;a class="reference external" href="http://fr.wikipedia.org/wiki/ISO_3166"&gt;ISO 3166&lt;/a&gt;, ce qui donne pour la langue française en France, &lt;em&gt;fr_FR.po&lt;/em&gt;.
pour ouvrir ce fichier PO un simple editeur de texte suffit, ou bien utiliser une interface comme poEdit.&lt;/p&gt;
&lt;p&gt;Lorsque l'on développe, il est fréquent que de nouveau terme à traduire soit ajouter, il faut donc venir mettre à jour nos fichiers PO avec les chaînes supplémentaires
sans perdre ce qui a déjà été traduit. pour celà nous allons exporter un nouveau fichier POT qui viendra remplacer le précédent,
avec l'assistant présent dans le menu &lt;em&gt;Administration&lt;/em&gt;. puis à l'aide du programme &lt;em&gt;msgmerge&lt;/em&gt;,
nous allons mettre à jour tous les fichiers PO présent dans le répertoire &lt;em&gt;i18n&lt;/em&gt; avec la commande ci-dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;msgmerge --update -N fr_FR.po module.pot
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ou &lt;strong&gt;module.pot&lt;/strong&gt; correspond au fichier &lt;em&gt;POT&lt;/em&gt; de notre module, il ne reste plus ensuite qu'a ouvir le fichier &lt;em&gt;fr_FR.po&lt;/em&gt; et de traduire les chaînes supplémentaires.&lt;/p&gt;
</summary><category term="openerp"></category><category term="openobject"></category><category term="iso"></category><category term="traduction"></category><category term="i18n"></category></entry><entry><title>Ajouter des traces de debug dans vos modules.</title><link href="http://blog.kryskool.org/Ajouter-des-trace-de-debug-dans-vos-modules-fr.html" rel="alternate"></link><updated>2009-04-21T22:56:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Ajouter-des-trace-de-debug-dans-vos-modules-fr.html</id><summary type="html">&lt;p&gt;Pour mettre ces commentaires, et conditionner leur affichage en fonction du niveau de détail choisit, il faut procéder comme suit. Ajouter tout d'abord ceci en début de votre fichier python&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;netsvc&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite instancier le logger&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;netsvc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Logger&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite il ne reste plus qu'a utiliser la méthode &lt;em&gt;notifyChannel&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notifyChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;init&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;netsvc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LOG_DEBUG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Mon commentaire de DEBUG&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ce message d'erreur s'affichera lorsque le niveau de trace sera sur &lt;em&gt;DEBUG&lt;/em&gt; au niveau du serveur, avec l'option &lt;em&gt;--log-level=debug&lt;/em&gt;.
voici la liste des niveaux de trace possible&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;LOG_DEBUG_RPC&lt;/li&gt;
&lt;li&gt;LOG_DEBUG&lt;/li&gt;
&lt;li&gt;LOG_INFO&lt;/li&gt;
&lt;li&gt;LOG_WARNING&lt;/li&gt;
&lt;li&gt;LOG_ERROR&lt;/li&gt;
&lt;li&gt;LOG_CRITICAL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;pour une information permanente vous utiliserez LOG_INFO comme ceci&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;notifyChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;init&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;netsvc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LOG_INFO&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Mon information&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="openerp"></category><category term="openobject"></category></entry><entry><title>Utilisation de sudo sans mot de passe sous Ubuntu/Debian</title><link href="http://blog.kryskool.org/Debian-fr.html" rel="alternate"></link><updated>2009-04-16T20:01:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Debian-fr.html</id><summary type="html">&lt;p&gt;Pour commencer il faut modifier la configuration du fichier &lt;strong&gt;/etc/sudoers&lt;/strong&gt; pour cela nous utiliserons l'utilitaire visudo a cet effet&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# visudo&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite il faut ajouter la ligne tout à la fin&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;%sudo ALL=NOPASSWD: ALL
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cette ligne indique que tous les utilisateurs qui appartienne au groupe &lt;em&gt;sudo&lt;/em&gt; n'ont pas besoin d'indiquer de mot de passe pour utiliser la commande.
ensuite ajouter votre utilisateur (ex toto) au groupe &lt;em&gt;sudo&lt;/em&gt; comme ceci&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;adduser toto sudo
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite déconnectez vous et reconnectez vous, puis lancer une commande avec &lt;em&gt;sudo&lt;/em&gt;, celui ci ne vous demandera aucun mot de passe.
Bien sur cette manipulation est à mettre en place dans le cas ou le processus d'authentification est assez sûr et ne surtout pas mettre les utilisateurs
www-data (apache), ftp (wu-ftp) et d'autres sensibles comme ceux ci, comme faisant parti du groupe &lt;em&gt;sudo&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Il est bien sur possible de restreindre la liste des commandes qui peuvent être lancer sans mot de passe, pour voir la configuration man sudoers&lt;/p&gt;
</summary><category term="sudo"></category><category term="linux"></category><category term="debian"></category><category term="ubuntu"></category></entry><entry><title>Documentation d'installation OpenERP 5.0 sous Windows en Français</title><link href="http://blog.kryskool.org/Documentation-dinstallation-OpenERP-50-sous-Windows-en-Francais-fr.html" rel="alternate"></link><updated>2009-03-07T13:00:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Documentation-dinstallation-OpenERP-50-sous-Windows-en-Francais-fr.html</id><summary type="html">&lt;p&gt;Cette documentation d'installation nous l'avions déjà fournit pour l'installation de la version 4.2.
Elle décrit pas à pas toutes la chaine d'installation, Après ses quelques jours d'existences, nous avons eu quelques retours de personnes qui après avoir installer le AllInOne
n'arrivait pas a faire fonctionner correctement l'outils, ils ont suivis la procédure d'installation manuelle, et tout fonctionnait correctement.
Le plus gros soucis pour les personnes ayant installer le AllInOne étaient l'impossibilité de faire des sauvegardes.
Pour les personnes désireuses de l'utiliser en production, il convient d'en effectuer une installation manuelle.&lt;/p&gt;
&lt;p&gt;Un version Anglaise de cette documentation est en cours de rédaction.&lt;/p&gt;
</summary><category term="openerp"></category><category term="python"></category><category term="tinyerp"></category><category term="windows"></category><category term="documentation"></category></entry><entry><title>Vérifier ses fichiers XML lors du développement de module</title><link href="http://blog.kryskool.org/Verifier-ses-fichiers-XML-lors-du-developpement-de-module-fr.html" rel="alternate"></link><updated>2009-02-25T19:00:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Verifier-ses-fichiers-XML-lors-du-developpement-de-module-fr.html</id><summary type="html">&lt;p&gt;Ce message et le reste de la trace ne sont pas explicite. heureusement il est possible de valider notre document via une feuille Relax-NG.
Pour valider notre document XML nous allons utilisé l'outil &lt;a class="reference external" href="http://www.xmlsoft.org/xmllint.html"&gt;xmllint&lt;/a&gt;, voir ci dessous&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;xmllint --relaxng /repertoire/server/bin/import_xml.rng mon_fichier.xml
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;en l'exécutant si vous avec une erreur, il vous indiquera ou elle se trouve, voir exemple ci-dessous&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;mon_fichier.xml.xml:6: namespace error : Failed to parse QName &lt;span class="s1"&gt;&amp;#39;model:&amp;#39;&lt;/span&gt;
        &amp;lt;record model:&lt;span class="s2"&gt;&amp;quot;ir.ui.view&amp;quot;&lt;/span&gt; &lt;span class="nv"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;view_report_mon_fichier_tree&amp;quot;&lt;/span&gt;&amp;gt;
                      ^
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous voyez tout de suite l'erreur sous un angle meilleur, vous faisant gagner un temps précieux.&lt;/p&gt;
&lt;p&gt;Lorsque votre fichier est valide, il est affiché à l'écran et en dernière ligne vous devriez voir ceci&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;mon_fichier.xml validates
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour ne pas afficher le contenu du fichier XML il faut également ajouter &lt;em&gt;--noout&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lorsque qu'une erreur survient, &lt;em&gt;xmllint&lt;/em&gt; retourne le code &lt;em&gt;1&lt;/em&gt;&lt;/p&gt;
</summary><category term="openerp"></category><category term="xml"></category><category term="relax-ng"></category></entry><entry><title>Patchs intégrés dans OpenERP 5.0</title><link href="http://blog.kryskool.org/Patchs-integres-dans-OpenERP-50-fr.html" rel="alternate"></link><updated>2009-01-20T10:24:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Patchs-integres-dans-OpenERP-50-fr.html</id><summary type="html">&lt;div class="section" id="mes-ameliorations"&gt;
&lt;h2&gt;Mes améliorations&lt;/h2&gt;
&lt;div class="section" id="premier-patch"&gt;
&lt;h3&gt;Premier Patch&lt;/h3&gt;
&lt;p&gt;Le premier patch concerne les informations fournit par les log du serveur. J'y ai ajouté en plus de la machine hébergeant la base de données, le port d'écoute ainsi que l'utilisateur connecté.
Ceci est d'autant plus pratique en développement que l'on utilise plusieurs moteur de base de données PostgreSQL, il arrive aussi parfois que l'on utilise plusieurs utilisateurs PostgreSQL
afin de limiter le nombre de base de données dans la liste déroulante ou d'avoir un utilisateur par client qui permet facilement de différentier les bases de chacuns.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="second-patch"&gt;
&lt;h3&gt;Second Patch&lt;/h3&gt;
&lt;p&gt;Le second patch permet 2 petites améliorations:&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Utiliser des chiffres comme premier caractère du nom de la base de données, ainsi il est possble de préfixer sa base par 50 pour identifier la version du soft (ex 50test)&lt;/li&gt;
&lt;li&gt;Tri des base de données par ordre alphabétique.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="amelioration-en-attente"&gt;
&lt;h2&gt;Amélioration en attente&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Gestion des tablespaces (compatible avec les versions 7.4 qui n'en n'ont pas), le tablespace peux être définit a l'ensemble des objets,
mais il est possible d'en spécifier un pour les index uniquement.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="ameliorations-en-vrac"&gt;
&lt;h2&gt;Améliorations en vrac&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;En génération de facture, lorsque l'on a activé l'archivage lors de l'édition du document, celui-ci est stocké dans la gestion documentaire.
Avant cette modification, le document était toujours re-généré. ce qui pose problème si l'adresse du client change ou bien que le logo ou les autres informations de la société change.
Maintenant lorsque que le document est archivé, à la seconde fois ou l'impression est demandé, celui ci est récupéré au lieu d'être re-généré.&lt;/li&gt;
&lt;li&gt;Les traductions sont maintenant par module et charger en même temps que l'installation du module&lt;/li&gt;
&lt;li&gt;Le serveur peut démarrer sans lui spécifier de base de données, et ainsi pouvoir créer la base de données à partir du client&lt;/li&gt;
&lt;li&gt;Un système de cache à été intégré qui accélère notamment les traitements du aux vérifications d'accès.&lt;/li&gt;
&lt;li&gt;Les certificats SSL peuvent être renseigner dans le fichier de config et non plus se trouver dans le répertoire bin et avoir les nom par défaut.&lt;/li&gt;
&lt;li&gt;possibilité de spécifier le port du serveur SMTP&lt;/li&gt;
&lt;li&gt;les erreurs (traceback) sont maintenant complètement intégrés aux système de log&lt;/li&gt;
&lt;li&gt;la verbosité des log est maintenant définissable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</summary><category term="postgresql"></category><category term="openerp"></category><category term="python"></category></entry><entry><title>Marre des tentatives d'intrusion en ssh dans vos log</title><link href="http://blog.kryskool.org/Marre-des-tentatives-dintrusion-en-ssh-dans-vos-log-fr.html" rel="alternate"></link><updated>2008-12-01T23:13:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Marre-des-tentatives-dintrusion-en-ssh-dans-vos-log-fr.html</id><summary type="html">&lt;div class="section" id="definition"&gt;
&lt;h2&gt;Definition&lt;/h2&gt;
&lt;p&gt;Voici la définition Wikipédia du port knocking&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le port-knocking est une méthode permettant de modifier le comportement d'un firewall en temps réel en provoquant l'ouverture de ports permettant la communication,
grâce au lancement préalable d'une suite de connexions sur des ports distincts dans le bon ordre, à l'instar d'un code frappé à une porte.&lt;/p&gt;
&lt;p&gt;Cette technique est notamment utilisée pour protéger l'accès au port 22 dédié au Secure shell (SSH), elle ne nécessite pas beaucoup de ressources et reste facile à mettre en œuvre.
En 2008, cette technique n'est pas encore largement adoptée par la communauté informatique, mais elle a déjà été intégrée dans certains rootkits.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="section" id="cote-serveur"&gt;
&lt;h3&gt;Coté serveur&lt;/h3&gt;
&lt;p&gt;Pour cela il existe une service qui permet de faire du port knocking &lt;a class="reference external" href="http://portknocking.org/"&gt;knockd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;sous Debian et dérivé, faite juste un&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. apt-get install knockd&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;editer le fichier &lt;em&gt;/etc/knockd.conf&lt;/em&gt; et changer la séquence par défaut&lt;/p&gt;
&lt;p&gt;redemarez le service via&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. invoke-rc.d knockd restart&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="cote-client"&gt;
&lt;h3&gt;Coté client&lt;/h3&gt;
&lt;p&gt;Pour vous connectez a votre serveur en ssh direct, cela sera impossible, car knockd veille au grain. il vous faut également installe knockd coté client, puis exécuter la ligne ci dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;knock mon_serveur 7000 8000 900
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous changerez bien sur la séquence de port et mettrez celle que vous avez choisi.
ensuite vous avez un laps de temps définit par la variable &lt;em&gt;cmd_timeout&lt;/em&gt; pour vous connecter avec ssh. passer ce delai les nouvelles connexions ssh seront refusés,
mais celle déjà établit resterons.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</summary><category term="ssh"></category><category term="debian"></category><category term="ubuntu"></category><category term="port knocking"></category><category term="iptables"></category><category term="linux"></category></entry><entry><title>Partager des fichiers rapidement en 1 ligne de code</title><link href="http://blog.kryskool.org/Partager-des-fichiers-rapidement-en-1-ligne-de-code-fr.html" rel="alternate"></link><updated>2008-12-01T22:17:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Partager-des-fichiers-rapidement-en-1-ligne-de-code-fr.html</id><summary type="html">&lt;p&gt;La plupart des solutions ont besoin d'un accès authentifié, ce qui ne facilite pas la chose, il existe pourtant un moyen simple de le faire et ceci en 1 ligne de code en python.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;import CGIHTTPServer; CGIHTTPServer.test()&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;placez vous dans le répertoire ou se trouve vos fichiers a partagés et lancer la commande ci-dessus.
vous aurez ainsi un serveur &lt;strong&gt;HTTP&lt;/strong&gt; sur le port &lt;strong&gt;8000&lt;/strong&gt;. Pour verifier ouvrez votre navigateur préféré, et tapez dans la barre d'adresse &lt;strong&gt;http://localhost:8000/&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Vous verrez la liste des fichiers et des répertoires disponibles.&lt;/p&gt;
</summary><category term="python"></category><category term="http"></category><category term="serveur"></category></entry><entry><title>Evolution de la composition des séquences dans OpenERP 5.0</title><link href="http://blog.kryskool.org/Evolution-de-la-composition-des-sequences-dans-OpenERP-50-fr.html" rel="alternate"></link><updated>2008-11-30T23:50:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Evolution-de-la-composition-des-sequences-dans-OpenERP-50-fr.html</id><summary type="html">&lt;p&gt;En plus de l'année sur 2 chiffres voici la liste de ce que j'ai implémenté.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le jour dans l'année (1 - 365) &lt;em&gt;%(doy)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Le numéro de la semaine dans l'année (0 - 52) &lt;em&gt;%(woy)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Le jour dans la semaine (0 - 7, 0 étant le lundi) &lt;em&gt;%(weekday)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;L'heure de 0 à 24 &lt;em&gt;%(h24)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;L'heure de 0 à 12 &lt;em&gt;%(h12)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Les minutes &lt;em&gt;%(min)s&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Les secondes &lt;em&gt;%(sec)s&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous retrouvez toutes ces informations dans la description de la légende.&lt;/p&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category></entry><entry><title>Gestion de la l'année a 2 chiffres dans OpenERP</title><link href="http://blog.kryskool.org/Gestion-de-la-lannee-a-2-chiffres-dans-OpenERP-fr.html" rel="alternate"></link><updated>2008-11-19T13:10:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Gestion-de-la-lannee-a-2-chiffres-dans-OpenERP-fr.html</id><summary type="html">&lt;p&gt;J'ai donc modifié le code afin de rajouter une nouvelle variable &lt;em&gt;%(y)s&lt;/em&gt; en complément de &lt;em&gt;%(year)s&lt;/em&gt;, un fois les modifications faites et testés
j'ai poussé mes modifications dans une branche et fait une demande de merge (fusion) avec la branche principale de la 4.2, celle ci a été accepté une heure après.&lt;/p&gt;
&lt;p&gt;Les équipes de l'éditeur &lt;a class="reference external" href="http://www.openerp.com/"&gt;Tiny&lt;/a&gt; font un travail formidable, pour nous donner un produit toujours plus riche, plus stable, plus performant, merci encore à eux.&lt;/p&gt;
&lt;p&gt;Je vous invite a regarder la version de OpenERP 5.0 qui sera finaliser prochainement, et qui apportera encore son lots de nouveautés, et qui en fait un des ERP Libre du marché le plus abouti.&lt;/p&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category><category term="python"></category><category term="bazaar"></category></entry><entry><title>Salon IRC Francophone pour OpenERp</title><link href="http://blog.kryskool.org/Salon-IRC-Francophone-pour-OpenERp-fr.html" rel="alternate"></link><updated>2008-11-07T19:08:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Salon-IRC-Francophone-pour-OpenERp-fr.html</id><summary type="html">&lt;p&gt;Après réflexion et en comparaison de ce qui existe pour la communauté Francophone de PostgreSQL et la richesse qu'elle apporte, j'ai créé un salon #openerp-fr sur Freenode.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;server: irc.freenode.net
salon: #openerp-fr
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category><category term="irc"></category></entry><entry><title>Utilisation d'une méthode sur un champ de type sélection dans un module</title><link href="http://blog.kryskool.org/Utilisation-dune-methode-sur-un-champ-de-type-selection-dans-un-module-fr.html" rel="alternate"></link><updated>2008-10-17T21:40:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Utilisation-dune-methode-sur-un-champ-de-type-selection-dans-un-module-fr.html</id><summary type="html">&lt;div class="section" id="definition"&gt;
&lt;h2&gt;Définition&lt;/h2&gt;
&lt;p&gt;Un champ sélection de définit comme ceci dans un module OpenERP&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="s"&gt;&amp;#39;liste&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;selection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;....&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Ma liste&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="remplissage"&gt;
&lt;h2&gt;Remplissage&lt;/h2&gt;
&lt;p&gt;[...] peut être peupler de 2 façons:&lt;/p&gt;
&lt;div class="section" id="statique"&gt;
&lt;h3&gt;Statique&lt;/h3&gt;
&lt;p&gt;La première méthode est la méthode statique elle peut se définir comme ceci.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;brouillon&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Brouilon&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;ouvert&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Ouvrir&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;fermer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;Terminer&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans la fenêtre à l'écran vous verrez apparaître &lt;strong&gt;Brouillon, Ouvrir, Terminer&lt;/strong&gt; tandis que dans la base de données vous verrez &lt;strong&gt;brouillon, ouvert, fermer&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="dynamique"&gt;
&lt;h3&gt;Dynamique&lt;/h3&gt;
&lt;p&gt;La méthode dynamique, peut être soit du code python, ou du SQL.
il suffit de reproduire la même structure que la méthode statique, ce qui donnerait l'exemple ci-dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;_ma_methode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{}):&lt;/span&gt;
     &lt;span class="n"&gt;cr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;SELECT champ1, champ2 FROM ma_table WHERE ....&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;cr&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="s"&gt;&amp;#39;liste&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;fields&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;selection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;_ma_methode&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;Ma liste&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;champ1&lt;/strong&gt; et &lt;strong&gt;champ2&lt;/strong&gt; seront obligatoires des chaines de caractères, si jamais dans champ1 vous récupériez un champ numérique, il faudrait alors le traduire comme ceci:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;to_char&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;9999999999&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;champ1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</summary><category term="openerp"></category><category term="python"></category><category term="programmation"></category><category term="module"></category></entry><entry><title>Premier patch pour TinyERP/OpenERP</title><link href="http://blog.kryskool.org/OpenERP-fr.html" rel="alternate"></link><updated>2008-09-07T22:13:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/OpenERP-fr.html</id><summary type="html">&lt;p&gt;Mes premières modifications ont portés sur la gestion des exceptions lors de la création des port d'écoutes (XMLRPC et NETRPC),
en effet si vous avez lancé 2 fois votre serveur [TinyERP|tag:tinyerp], le second lancement se traduit par l'arret du processus (ce qui est normal)
en indiquant que le port d'écoute est utilisé, or lors du lancement du serveur TinyERP par un script init.d, celui sort avec un code erreur 0,
ce qui indique que tout c'est bien passé, ce qui n'est pas le cas.
Le patch proposé récupère l'exception, puis indique sur la sortie stderr qu'il y'a une erreur et que le port d'écoute est déjà occupé,
puis retourne le code erreur 1 (au lieu de 0). Le patch proposé l'a été pour la version stable 4.2{1} et la version Trunk{2} (développement).&lt;/p&gt;
&lt;p&gt;L'autre patch concerne la comptabilité avec [PostgreSQL|tag:postgresql] 8.3 pour la version 4.2. En effet dans un billet &lt;a class="reference external" href="Installation-TinyERP-42-avec-PostgreSQL-83.html"&gt;précédent&lt;/a&gt; je vous expliquait que la version 4.2 ne fonctionnerait pas avec PostgreSQL 8.3 et qu'il fallait ne pas y toucher. Comme dit le proverbe &amp;quot;Faites ce que je dis, mais faites pas ce que je fais&amp;quot;, j'y ai touché ;) , vous allez me dire &amp;quot;Mais pourquoi donc&amp;quot;, a cela je vous répond.
* PostgreSQL 8.3 fait parti de Ubuntu Hardy Heron (8.04), La 8.2 est marqué obsolète.
* Dans Debian Lenny, seule PostgreSQl 8.3 est dispo, la version 8.2 n'est même pas disponible dans des backports.
* Seul les reporting basés sur des vues PostgreSQL posent problèmes, l'impact sur une éventuelle régression est inexistant.&lt;/p&gt;
&lt;p&gt;Les 2 premiers points ont fait pencher la balance, d'ailleurs au moment ou j'écris ces lignes, les patchs viennent d'être intégré à la version 4.2 :).&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://code.launchpad.net/~syleam/openobject-server/4.2_exit-properly"&gt;https://code.launchpad.net/~syleam/openobject-server/4.2_exit-properly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://code.launchpad.net/~syleam/openobject-server/exit-properly"&gt;https://code.launchpad.net/~syleam/openobject-server/exit-properly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://code.launchpad.net/~syleam/openobject-addons/4.2_postgresql8.3_compat"&gt;https://code.launchpad.net/~syleam/openobject-addons/4.2_postgresql8.3_compat&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</summary><category term="tinyerp"></category><category term="postgresql"></category><category term="python"></category><category term="openerp"></category><category term="launchpad"></category><category term="ubuntu"></category><category term="debian"></category></entry><entry><title>Version TinyERP 4.2.3 disponible</title><link href="http://blog.kryskool.org/Version-TinyERP-423-disponible-fr.html" rel="alternate"></link><updated>2008-08-22T20:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Version-TinyERP-423-disponible-fr.html</id><summary type="html">&lt;p&gt;La version stable de TinyERP veient de sortir en version 4.2.3
voici la liste des changements par rapport à la dernière version&lt;/p&gt;
&lt;div class="section" id="serveur"&gt;
&lt;h2&gt;Serveur&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Add python-xml in the required packages&lt;/li&gt;
&lt;li&gt;Fix truncated string in DB when update server and field are varchar&lt;/li&gt;
&lt;li&gt;Fix bugs on ir.actions.report.xml&lt;/li&gt;
&lt;li&gt;Putting default value 'pdf' for report type field&lt;/li&gt;
&lt;li&gt;Properties uses the company of the user&lt;/li&gt;
&lt;li&gt;Unicode error with accented characters&lt;/li&gt;
&lt;li&gt;Add a new group &amp;quot;No One&amp;quot; this group helps to hide some actions, menuitems&lt;/li&gt;
&lt;li&gt;Bugfix with the rowHeights parameter, don't set the value in a tuple, if there is only one value&lt;/li&gt;
&lt;li&gt;Fix with the python-xml package on Ubuntu Hardy 8.04&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="client-gtk"&gt;
&lt;h2&gt;Client GTK&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Fixed one2many list (readonly problem)&lt;/li&gt;
&lt;li&gt;Fixed one2many dialog (readonly problem)&lt;/li&gt;
&lt;li&gt;Add a new window to manage the extension&lt;/li&gt;
&lt;li&gt;Fix a problem with the locale&lt;/li&gt;
&lt;li&gt;Modify the file widget&lt;/li&gt;
&lt;li&gt;Load Images and Binary only when in form view&lt;/li&gt;
&lt;li&gt;Fix with the filename when you use the Save As dialog&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="client-web"&gt;
&lt;h2&gt;Client Web&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Fixed navigation problem (now remembers the offset of O2M widgets)&lt;/li&gt;
&lt;li&gt;Safari 3.0 issue (possible bug in Safari)
- Safari submits selection fields even if name attribute is missing.
- Better calendar view&lt;/li&gt;
&lt;li&gt;rendering issues (FF3)&lt;/li&gt;
&lt;li&gt;Tangoish colors&lt;/li&gt;
&lt;li&gt;item sorting problem in month view&lt;/li&gt;
&lt;li&gt;Fixed onchange method for many2one.&lt;/li&gt;
&lt;li&gt;Fixed (#767), fails to load the translation catalog if installed as egg.&lt;/li&gt;
&lt;li&gt;Fixed o2m view record problem (bug #757)&lt;/li&gt;
&lt;li&gt;Fixed #696, 'View Log' on User creates error&lt;/li&gt;
&lt;li&gt;fixed sidebar link translation problem&lt;/li&gt;
&lt;li&gt;Fixed &lt;cite&gt;Reference widget&lt;/cite&gt;, now it's an extended &lt;cite&gt;M2O&lt;/cite&gt; (using same JS).&lt;/li&gt;
&lt;li&gt;Form view parser now checks for duplicate fields.&lt;/li&gt;
&lt;li&gt;Fixed &lt;cite&gt;editable list view&lt;/cite&gt; in popup (unable to get values of parent fields)&lt;/li&gt;
&lt;li&gt;Visibility of Manage button in configuration.&lt;/li&gt;
&lt;li&gt;Fixed one2many (default_get_context)&lt;/li&gt;
&lt;li&gt;Improved Cache system&lt;/li&gt;
&lt;li&gt;Cache for i18n catalog to speedup the &lt;cite&gt;gettext&lt;/cite&gt; operations.&lt;/li&gt;
&lt;li&gt;Fixed Import/Export bugs (649, 650)&lt;/li&gt;
&lt;li&gt;Fixed Calendar view (handle server errors)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Depuis le passage à la plateforme de développement &lt;a class="reference external" href="https://launchpad.net/openobject"&gt;Launchpad&lt;/a&gt;, le développement de TinyERP et sa qualité se sont encore améliorés,
la prochaine version est déjà très prometteuse.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category></entry><entry><title>Mapping clavier MacBook sous Debian Lenny</title><link href="http://blog.kryskool.org/Mapping-clavier-MacBook-sous-Debian-Lenny-fr.html" rel="alternate"></link><updated>2008-08-21T23:09:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Mapping-clavier-MacBook-sous-Debian-Lenny-fr.html</id><summary type="html">&lt;p&gt;Editez le fichier /etc/X11/xorg.conf&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Section &amp;quot;InputDevice&amp;quot;
       Identifier      &amp;quot;Generic Keyboard&amp;quot;
       Driver          &amp;quot;kbd&amp;quot;
       Option          &amp;quot;CoreKeyboard&amp;quot;
       Option          &amp;quot;XkbRules&amp;quot;      &amp;quot;xorg&amp;quot;
       Option          &amp;quot;XkbModel&amp;quot;      &amp;quot;pc105&amp;quot;
       Option          &amp;quot;XkbLayout&amp;quot;     &amp;quot;fr&amp;quot;
       Option          &amp;quot;XkbOptions&amp;quot;    &amp;quot;lv3:enter_switch,apple:goodmap,numpad:mac&amp;quot;
EndSection
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite redémmarrer le serveur X&lt;/p&gt;
</summary><category term="mac"></category><category term="macbook"></category><category term="debian"></category><category term="lenny"></category><category term="xorg"></category></entry><entry><title>Mapping clavier MacBook sous Ubuntu 8.04</title><link href="http://blog.kryskool.org/Mapping-clavier-MacBook-sous-Ubuntu-804-fr.html" rel="alternate"></link><updated>2008-08-21T22:59:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Mapping-clavier-MacBook-sous-Ubuntu-804-fr.html</id><summary type="html">&lt;p&gt;dans le fichier&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# vi /etc/X11/xkb/rules/base&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;chercher&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$macbooks = macintosh+macintosh(badmap)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et le remplacer par&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$macbooks = macintosh+macintosh(goodmap)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ainsi que&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$maclaptop = +inet(apple)+level3(enter_switch)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;par&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$maclaptop = +inet(apple)+level3(win_switch)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et dans le fichier &lt;strong&gt;/etc/X11/xorg.conf&lt;/strong&gt; de telle manière que la section &lt;strong&gt;InputDevice&lt;/strong&gt; ressemble a ceci:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Section &amp;quot;InputDevice&amp;quot;
    Identifier      &amp;quot;Generic Keyboard&amp;quot;
    Driver          &amp;quot;kbd&amp;quot;
    Option          &amp;quot;CoreKeyboard&amp;quot;
    Option          &amp;quot;XkbRules&amp;quot;      &amp;quot;xorg&amp;quot;
    Option          &amp;quot;XkbModel&amp;quot;      &amp;quot;macbook79&amp;quot;
    Option          &amp;quot;XkbLayout&amp;quot;     &amp;quot;fr&amp;quot;
EndSection
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite redémarrer le serveur X&lt;/p&gt;
</summary><category term="macosx"></category><category term="macbook"></category><category term="linux"></category><category term="ubuntu"></category><category term="hardy heron"></category><category term="xorg"></category></entry><entry><title>Ouverture d'un fichier ou d'une application depuis un script shell</title><link href="http://blog.kryskool.org/Ouverture-dun-fichier-ou-dune-application-depuis-un-script-shell-fr.html" rel="alternate"></link><updated>2008-08-21T21:15:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Ouverture-dun-fichier-ou-dune-application-depuis-un-script-shell-fr.html</id><summary type="html">&lt;p&gt;Pour ce faire, nous allons utilisé la commande &lt;strong&gt;open&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;open mon_fichier
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cette commande permet d'ouvrir &lt;strong&gt;mon_fichier&lt;/strong&gt; avec l'application associé à son extension.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;open http://blog.kryskool.org/
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lancera le navigateur Web par défaut sur cette adresse.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;open -e mon_fichier.py
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ouvrira le fichier Python, avec TextEdit&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;open -t mon_fichier.py
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ouvrira le fichier Python avec votre éditeur par défaut.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;open -a /Applications/iTunes.app ~/Music/titre.mp3
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;pour plus d'information sur les diverses possibilités&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;man open
&lt;/pre&gt;&lt;/div&gt;
</summary><category term=""></category></entry><entry><title>Augmenter les performances de l'application Mail sous MacOS X</title><link href="http://blog.kryskool.org/Augmenter-les-performances-de-lapplication-Mail-sous-MacOS-X-fr.html" rel="alternate"></link><updated>2008-07-24T19:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Augmenter-les-performances-de-lapplication-Mail-sous-MacOS-X-fr.html</id><summary type="html">&lt;p&gt;Après quelques recherches sur le Net, je me suis aperçu que l'application Mail.app utilisait comme stockage une base SQLite version 3,
celle ci se trouve dans notre Home Directory. Vous la marche a suivre&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Quitter l'application Mail&lt;/li&gt;
&lt;li&gt;Ouvrir un Terminal&lt;/li&gt;
&lt;li&gt;Executer les commandes ci-dessous&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/Library/Mail
&lt;span class="nv"&gt;$ &lt;/span&gt;sqlite3 Envelope&lt;span class="se"&gt;\ &lt;/span&gt;Index
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Au Prompt de SQLite lancer la commande suivante&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;vacuum subjects;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis lorsque le Prompt vous est rendu, faite un Ctrl+D&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Relancer l'application Mail et constater un gain de rapidité.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il est également possible d'automatiser le tout via &lt;em&gt;launchd&lt;/em&gt; a l'aide de ce &lt;a class="reference external" href="http://homepage.mac.com/lscott/Software/VacuumMail.dmg"&gt;script&lt;/a&gt;&lt;/p&gt;
</summary><category term="launchd"></category><category term="leopard"></category><category term="macosx"></category><category term="sqlite"></category></entry><entry><title>Plugin Thunderbird pour OpenERP</title><link href="http://blog.kryskool.org/Plugin-Thunderbird-pour-OpenERP-fr.html" rel="alternate"></link><updated>2008-06-30T11:01:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Plugin-Thunderbird-pour-OpenERP-fr.html</id><summary type="html">&lt;p&gt;Ce module est fournit avec 2 documents d'installation et d'utilisation, ce qui ne devrait pas poser de soucis.&lt;/p&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category><category term="thunderbird"></category></entry><entry><title>Community Day</title><link href="http://blog.kryskool.org/Community-Day-2008-fr.html" rel="alternate"></link><updated>2008-06-26T18:01:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Community-Day-2008-fr.html</id><summary type="html">&lt;p&gt;La première journée a commencer avec un présentation des points abordés pendant ces 2 journées, ensuite un petite présentation des nouvelles fonctionnalités.&lt;/p&gt;
&lt;p&gt;Par la suite les groupes de travail se sont constitués, voici les grandes lignes&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Ergonomie et simplification.&lt;/li&gt;
&lt;li&gt;La verticalisation.&lt;/li&gt;
&lt;li&gt;Performance.&lt;/li&gt;
&lt;li&gt;Contrôle qualité et processus de développement (Community).&lt;/li&gt;
&lt;li&gt;Sécurité.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour ma part j'ai participé au Contrôle qualité et processus de développement. Les grandes réflexions étaient de permettre à beaucoup de contributeur (partenaire entre autre)
d'avoir un accès au commit, évitant ainsi d'avoir une version chez soit avec ses corrections que l'on devaient refaire à chaque fois, et qui a terme aurait conduit à un fork.&lt;/p&gt;
&lt;p&gt;Actuellement, seule la société Tiny possède les droits de commit, ce qui au vu du nombre de contributeur est devenu bloquant.
Notre groupe de travail a donc planché sur un autre mode de fonctionnement.
Plusieurs changements notables, dont le passage de Subversion a Bazaar. La grosse différence est la notion de dépôt communautaire, voir le graphique ci-dessous&lt;/p&gt;
&lt;img alt="Community Schema" src="images/Schema_community.jpg" /&gt;
&lt;p&gt;Le dépôt officiel restera au sein de la société Tiny, la version communautaire permettra de dégrossir le travail et ainsi permettre au
Quality manager d'effectuer un travail d'envoi du dépôt communautaire vers le dépôt officiel.
L'écriture de &lt;a class="reference external" href="http://openerp.com/wiki/index.php/Quality_Insurance:Guidelines"&gt;Guidelines&lt;/a&gt; est aussi nécessaires pour que ce travail se réalise facilement,
et ainsi amélioré la qualité d'écriture du code.&lt;/p&gt;
&lt;p&gt;Tous ceci est en cours de mise en place, et devrait arriver sous peu.&lt;/p&gt;
</summary><category term="openerp"></category><category term="tinyerp"></category></entry><entry><title>Lenteur d'execution d'OpenERP sous Windows Vista/2003</title><link href="http://blog.kryskool.org/lenteur-execution-openerp-windows-vista-2003-fr.html" rel="alternate"></link><updated>2008-05-30T14:42:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/lenteur-execution-openerp-windows-vista-2003-fr.html</id><summary type="html">&lt;p&gt;Tout d'abord au niveau du client il convient de saisir &lt;em&gt;127.0.0.1&lt;/em&gt; au lieu de &lt;em&gt;localhost&lt;/em&gt;.
Dans certain cas juste cette astuce suffit a fluidifié l'interface.
Ensuite vous pouvez encore améliorer la rapidité en choisissant &lt;em&gt;NETRPC&lt;/em&gt; sur le port &lt;em&gt;8070&lt;/em&gt; au lieu de* XMLRPC* sur le port &lt;em&gt;8069&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ensuite si cela ne suffit toujours pas, quelques ajustements de paramètres au niveau &lt;a class="reference external" href="http://www.postgresql.fr"&gt;PostgreSQL&lt;/a&gt; seront nécessaires.&lt;/p&gt;
</summary><category term="postgresql"></category><category term="tinyerp"></category><category term="windows"></category><category term="python"></category><category term="openerp"></category></entry><entry><title>Installation TinyERP 4.2 avec PostgreSQL 8.3</title><link href="http://blog.kryskool.org/Installation-TinyERP-42-avec-PostgreSQL-83-fr.html" rel="alternate"></link><updated>2008-05-25T11:33:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Installation-TinyERP-42-avec-PostgreSQL-83-fr.html</id><summary type="html">&lt;p&gt;Depuis la version 8.3, certain CAST ne sont plus implicites, notamment ceux qui peuvent ramener des résultats inattendus.
Dans la version de TinyERP 4.2 (4.2.2 actuellement) certaines requêtes avec des CAST implicites sur les dates étaient utilisés,
ceux qui avec PostgreSQL 8.3 ramène un message d'erreur à l'utilisation de cette requête. La question que l'on se pose:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Doit on utiliser PostgreSQL 8.3 avec TinyERP 4.2.2 ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La réponse est non, simplement que le version 4.2 de TinyERP est la version stable, il ne faut surtout pas toucher au code.
Le Trunk du SVN fonctionne déjà avec la version 8.3, ainsi la prochaine version de OpenERP fonctionnera avec PostgreSQL 8.3.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Quelle version de PostgreSQL puis je utiliser ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Avec TinyERP 4.2 il est possible d'utiliser PostgreSQL 7.4, 8.0, 8.1 et 8.2 sauf sous Windows ou les versions 8.0 et 8.1 ne sont plus maintenus. Sous Windows seule la version 8.2 est supporté.&lt;/p&gt;
&lt;p&gt;08/09/2008 : Ceci n'est plus tout a fait vrai, voir ce &lt;a class="reference external" href="Premier-patch-pour-TinyERP/OpenERP"&gt;billet&lt;/a&gt; pour les explications&lt;/p&gt;
</summary><category term="postgresql"></category><category term="tinyerp"></category><category term="openerp"></category></entry><entry><title>Ajout automatique de fichier et répertoire au depôt Subversion courant</title><link href="http://blog.kryskool.org/Ajout-automatique-de-fichier-et-repertoire-au-depot-Subversion-courant-fr.html" rel="alternate"></link><updated>2008-05-18T13:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Ajout-automatique-de-fichier-et-repertoire-au-depot-Subversion-courant-fr.html</id><summary type="html">&lt;p&gt;L'astuce consiste à lister tous les fichiers dont le début de ligne commence par un ?, à l'aide de awk recuperer le nom du fichier (ou répertoire) puis ensuite faire un &lt;em&gt;svn add&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;svn stat | grep ^? | awk &lt;span class="s1"&gt;&amp;#39;{ print $2 }&amp;#39;&lt;/span&gt; | xargs svn add
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;pour une utilisation quotidien, il est judicieux de créer un alias&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;alias &lt;/span&gt;&lt;span class="nv"&gt;addsvn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;svn stat | grep ^? | awk &amp;#39;{ print $2 }&amp;#39; | xargs svn add&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="subversion"></category><category term="svn"></category></entry><entry><title>Livre en Francais sur TinyERP/OpenERP paru aux éditions Eyrolles</title><link href="http://blog.kryskool.org/OpenERP-paru-aux-editions-Eyrolles-fr.html" rel="alternate"></link><updated>2008-05-07T21:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/OpenERP-paru-aux-editions-Eyrolles-fr.html</id><summary type="html">&lt;img alt="Livre sur OpenERP" src="images/Livre-9782212122619.gif" /&gt;
&lt;p&gt;Le livre est disponible à cette &lt;a class="reference external" href="http://www.amazon.fr/gp/product/2212122616?ie=UTF8&amp;amp;amp;tag=krys-21&amp;amp;amp;linkCode=as2&amp;amp;amp;camp=1642&amp;amp;amp;creative=6746&amp;amp;amp;creativeASIN=2212122616"&gt;adresse&lt;/a&gt;,
ce livre est très bien expliqué et vous permettra de démarrer facilement (installation et première prise en main) mais également d'avancer pas à pas avec les modules les plus utilisés.&lt;/p&gt;
&lt;p&gt;Je vous le recommande chaudement, car l'ayant eu au début du mois d'avril suite à ma formation chez Tiny, j'ai pu le lire en avant première.&lt;/p&gt;
</summary><category term="tinyerp"></category><category term="openerp"></category><category term="python"></category><category term="postgresql"></category></entry><entry><title>Monter une image ISO sous Mac OS X</title><link href="http://blog.kryskool.org/Monter-une-image-ISO-sous-Mac-OS-X-fr.html" rel="alternate"></link><updated>2008-05-01T21:42:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Monter-une-image-ISO-sous-Mac-OS-X-fr.html</id><summary type="html">&lt;p&gt;Pour monter une image &lt;em&gt;ISO&lt;/em&gt; sous Mac OS X, ouvrez un terminal et exécuter la commande suivante&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;hdiutil mount mon_image.iso
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous pouvez également effectuer cette commande sur un fichier &lt;em&gt;DMG&lt;/em&gt; ou &lt;em&gt;IMG&lt;/em&gt;&lt;/p&gt;
</summary><category term="macosx"></category><category term="iso"></category><category term="tips"></category><category term="leopard"></category><category term="apple"></category></entry><entry><title>Problème DNS sous Mac OS X Léopard</title><link href="http://blog.kryskool.org/Probleme-DNS-sous-Mac-Os-X-Leopard-fr.html" rel="alternate"></link><updated>2008-05-01T21:33:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Probleme-DNS-sous-Mac-Os-X-Leopard-fr.html</id><summary type="html">&lt;p&gt;Pour vider le cache DNS sous Léopard, il faut executer la commande suivante.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;dscacheutil -flushcache
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour la version Tiger, il faut utiliser la commande suivante.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;lookupd -flushcache
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="macosx"></category><category term="leopard"></category><category term="dns"></category></entry><entry><title>Réinstallation PostgreSQL sous Windows XP</title><link href="http://blog.kryskool.org/Reinstallation-PostgreSQL-sous-Windows-XP-fr.html" rel="alternate"></link><updated>2008-03-31T16:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Reinstallation-PostgreSQL-sous-Windows-XP-fr.html</id><summary type="html">&lt;p&gt;Ce message d'erreur vous indique que l'utilisateur système Windows existe déjà, et donc par conséquent que sa création à échoué,
si vous aviez mémorisé le mot de passe attribuer à ce compte, il vous suffit de le saisir, sinon il va falloir supprimer l'utilisateur avec la commande ci-dessous
a lancer dans une fenêtre CMD avec les droits administrateurs.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;net user postgres &lt;span class="n"&gt;/DELETE&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite il vous suffit de relancer l'installation, qui recréera le nouveau compte &lt;strong&gt;postgres&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Si vous avez également réinstallé &lt;strong&gt;PostgreSQL&lt;/strong&gt;, lors de la précédente désinstallation, le répertoire de données
se trouvant dans &amp;quot;Program FilesPostgreSQL8.x&amp;quot; (ou X est le numéro de version mineure) n'est pas supprimé,
ce qui fait également échouer l'installation lors de la création du &lt;em&gt;CLUSTER&lt;/em&gt;.&lt;/p&gt;
</summary><category term="postgresql"></category><category term="windows"></category></entry><entry><title>Base de données de test utilisée pour les articles du site</title><link href="http://blog.kryskool.org/Base-de-donnees-de-test-utilises-pour-les-articles-du-site-fr.html" rel="alternate"></link><updated>2008-03-12T12:30:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Base-de-donnees-de-test-utilises-pour-les-articles-du-site-fr.html</id><summary type="html">&lt;p&gt;La base de test utilisée, se nomme Pagila. Elle fait partie du projet &lt;em&gt;DbSample&lt;/em&gt; sur &lt;em&gt;pgFoundry.org&lt;/em&gt;
vous pouvez la télécharger directement &lt;a class="reference external" href="http://pgfoundry.org/frs/download.php/1556/pagila-0.10.0.zip"&gt;ici&lt;/a&gt;.
La version 0.10 supporte la version 8.3 de PostgreSQL qui intègre nativement Tsearch2 (la recherche FullText native),
les versions antérieurs de pagila nécessitait d'avoir tsearch2 d'activer ce qui n'était pas possible de faire sous Windows sans compilation.&lt;/p&gt;
&lt;p&gt;L'installation de la base pagila se fera en ligne de commande.
Les utilisateurs de windows se réfèrerons a cet &lt;a class="reference external" href="/Utilisation-de-psql-sous-Windows"&gt;article&lt;/a&gt; pour utiliser correctement la méthode en ligne de commande,
les utilisateurs sous Linux utiliserons l'utilisateur système &lt;em&gt;postgres&lt;/em&gt; directement.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;%PSQL%&lt;span class="se"&gt;\c&lt;/span&gt;reatedb -U postgres -E UTF8 -e pagila
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lorsque vous allez valider cette commande, le mot de passe de l'utilisateur &lt;em&gt;postgres&lt;/em&gt; vous sera demandé, et la base &lt;em&gt;pagila&lt;/em&gt; sera crée avec un encodage en UTF8.
La base de données est crée, nous allons pouvoir importer les données.&lt;/p&gt;
&lt;p&gt;Positionnez vous dans le répertoire ou vous avez décompressez l'archive de &lt;em&gt;Pagila&lt;/em&gt;, puis toujours en ligne de commande exécuter la commande suivante :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;%PSQL%&lt;span class="se"&gt;\p&lt;/span&gt;sql -U postgres -d pagila -f pagila-schema.sql
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;une fois la touche entrée validé, le mot de passe de l'utilisateur &lt;em&gt;postgres&lt;/em&gt; peut vous être demander, et ensuite vous verrez apparaître le retour de chaque commande,
vérifier qu'aucun message d'erreur n'apparaît. a cet instant le schéma devant accueillir les données a été inséré dans la base &lt;em&gt;pagila&lt;/em&gt; crée précédemment.&lt;/p&gt;
&lt;p&gt;Nous allons maintenant y inséré les données à l'aide de cette commande.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;%PSQL%&lt;span class="se"&gt;\p&lt;/span&gt;sql -U postgres -d pagila -f pagila-data.sql
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si pas de message d'erreur, notre base de test est prête, nous allons faire une petite requête de vérification dans &lt;em&gt;psql&lt;/em&gt;. une fois connecté, exécuter la requête suivante&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="n"&gt;pagila&lt;/span&gt;&lt;span class="o"&gt;=#&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;film&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;film_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="n"&gt;title&lt;/span&gt;       &lt;span class="o"&gt;|&lt;/span&gt;                                           &lt;span class="n"&gt;description&lt;/span&gt;
&lt;span class="c1"&gt;------------------+--------------------------------------------------------------------------------------------------&lt;/span&gt;
 &lt;span class="n"&gt;ACADEMY&lt;/span&gt; &lt;span class="n"&gt;DINOSAUR&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;A&lt;/span&gt; &lt;span class="n"&gt;Epic&lt;/span&gt; &lt;span class="n"&gt;Drama&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Feminist&lt;/span&gt; &lt;span class="k"&gt;And&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Mad&lt;/span&gt; &lt;span class="n"&gt;Scientist&lt;/span&gt; &lt;span class="n"&gt;who&lt;/span&gt; &lt;span class="n"&gt;must&lt;/span&gt; &lt;span class="n"&gt;Battle&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Teacher&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;Canadian&lt;/span&gt; &lt;span class="n"&gt;Rockies&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;row&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;pagila&lt;/span&gt;&lt;span class="o"&gt;=#&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="postgresql"></category><category term="psql"></category><category term="tsearch2"></category></entry><entry><title>Installation de PostgreSQL 8.3 sous Windows XP</title><link href="http://blog.kryskool.org/Installation-de-PostgreSQL-83-sous-Windows-XP-fr.html" rel="alternate"></link><updated>2008-02-26T14:02:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Installation-de-PostgreSQL-83-sous-Windows-XP-fr.html</id><summary type="html">&lt;div class="section" id="telechargement"&gt;
&lt;h2&gt;Téléchargement&lt;/h2&gt;
&lt;p&gt;Avant l'installation de PostgreSQL 8.3, nous devons au préalable le récupérer, pour cela nous allons le télécharger sur l'un des &lt;a class="reference external" href="http://wwwmaster.postgresql.org/download/mirrors-ftp?file=%2Fbinary%2Fv8.3.0%2Fwin32%2Fpostgresql-8.3.0-1.zip"&gt;miroirs&lt;/a&gt; disponibles.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="lancement"&gt;
&lt;h2&gt;Lancement&lt;/h2&gt;
&lt;p&gt;Un fois le téléchargement terminé, vous obtenez un fichier nommé postgresql-8.3.0-1.zip dans votre répertoire de destination. Décompresser le et vous obtiendrez la liste de fichier ci-dessous.&lt;/p&gt;
&lt;img alt="Listes_fichiers" src="images/InstPg83/liste_fichier.jpg" /&gt;
&lt;p&gt;Puisqu'il s'agit de la première version stable de la version 8.3, il est pas conseiller d'exécuter une mise à jour avec upgrade.bat, à partir des versions RC ou Beta.
Le script upgrade.bat ne peut en aucun cas servir à mettre à jour une 8.2 vers une 8.3. Il servira uniquement à la mise à jour de votre 8.3 lorsque de nouvelle versions correctives sortiront.&lt;/p&gt;
&lt;div class="note"&gt;
&lt;p class="first admonition-title"&gt;Note&lt;/p&gt;
&lt;p class="last"&gt;Afin d'eviter le plantage lors du démarrage du service PostgreSQL une fois installé, il convient de vérifier que le service windows &lt;strong&gt;Connexion secondaire&lt;/strong&gt; est démarré.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Pour commencer l'installation de PostgreSQL 8.3, exécuter indifféremment &lt;strong&gt;SETUP.bat&lt;/strong&gt; ou &lt;strong&gt;postgresql-8.3.msi&lt;/strong&gt; (si votre environnement Windows est correctement installé,
le fichier msi devrait déclencher l'installation.). Un fois lancer vous obtiendrez l'écran suivant.&lt;/p&gt;
&lt;div class="section" id="ecran-d-accueil"&gt;
&lt;h3&gt;Ecran d'accueil&lt;/h3&gt;
&lt;img alt="Choix_Langue" src="images/InstPg83/PostgreSQL--2008-02-12--14-56-00.jpg" /&gt;
&lt;p&gt;Ce premier écran va nous permettre de sélectionner la langue utiliser pour le reste de l'installation, nous allons bien évidement choisir « French / Français ». Nous allons également cocher la case « ''Write detailed installation log to postgresql-8.3.log in the current directory'' », ceci enregistrera des informations utiles pour un éventuel dépannage, si l'installation ne se déroulait pas correctement.&lt;/p&gt;
&lt;p&gt;Pour poursuivre l'installation appuyer sur le bouton « Start ».&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="ecran-bienvenue-en-francais"&gt;
&lt;h3&gt;Ecran bienvenue en Français&lt;/h3&gt;
&lt;img alt="Ecran debut install" src="images/InstPg83/PostgreSQL--2008-02-12--14-56-40.jpg" /&gt;
&lt;p&gt;Sur cette écran, rien de bien compliquer, il suffit de suivre les instructions, et de cliquer sur « Suivant »&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="license"&gt;
&lt;h3&gt;License&lt;/h3&gt;
&lt;img alt="Licence" src="images/InstPg83/PostgreSQL--2008-02-12--14-56-50.jpg" /&gt;
&lt;p&gt;Cette écran détaille toutes les licenses inclus dans cette installation&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="option-d-installation"&gt;
&lt;h3&gt;Option d'installation&lt;/h3&gt;
&lt;img alt="Choix des options" src="images/InstPg83/PostgreSQL--2008-02-12--14-57-23.jpg" /&gt;
&lt;p&gt;Les options par défaut sont suffisantes, pour avoir la gestion de la langue, activé également &lt;strong&gt;Support de la langue&lt;/strong&gt;.
les messages d'erreurs apparaîtrons également traduit, il sera possible au niveau de la session de les obtenir en Anglais,
ce qui vous permettra d'avoir plus de resultat lors de la recherche de message d'erreur similaire dans votre moteur de recherche favori.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-du-service"&gt;
&lt;h3&gt;Configuration du service&lt;/h3&gt;
&lt;img alt="Configuration du service" src="images/InstPg83/PostgreSQL--2008-02-12--14-58-05.jpg" /&gt;
&lt;p&gt;PostgreSQL sous Windows est vu comme un service, celui a besoin d'avoir un compte utilisateur avec le minimum de droit,
par defaut l'utilisateur crée se nomme &lt;strong&gt;postgres&lt;/strong&gt;,
il convient de mémoriser son mot de passe, qui vous permettra par la suite de faire cohabiter plusieurs versions de &lt;strong&gt;PostgreSQL&lt;/strong&gt;,
en utilisant le même utilisateur système pour démarrer les différents services.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="initialisation-du-cluster"&gt;
&lt;h3&gt;Initialisation du cluster&lt;/h3&gt;
&lt;img alt="Initialisation du cluster" src="images/InstPg83/PostgreSQL--2008-02-12--14-58-46.jpg" /&gt;
&lt;p&gt;&lt;strong&gt;psql&lt;/strong&gt; dans une console Windows a besoin d'un encodage WIN1252. dans cette configuration coté serveur faut absolument choisir l'encodage UTF8.
Par défaut un utilisateur &lt;strong&gt;postgres&lt;/strong&gt; est crée dans la base de données, il s'agit du super utilisateur qui possèdent les pleins droits sur le cluster de base de données.
Pour cette raison il faut bien mémoriser le mot de passe que vous lui attribuer, car celui ci servira à établir la première connexion à la base de données,
en vue du crée votre première base, mais également un utilisateur lambda.
Il est bien sur fortement conseiller de mettre un mot de passe différents de celui qui a servit à créer l'utilisateur local de la machine.&lt;/p&gt;
&lt;img alt="Connexions distantes" src="images/InstPg83/Connexions%20distantes--2008-02-12--14-59-07.jpg" /&gt;
&lt;p&gt;Ce message vous indique que vous avez activé la connexion TCP/IP et que votre serveur PostgreSQL est accessible à travers toutes les machines du réseau, pour en restreindre l'usage, consulter cette &lt;a class="reference external" href="http://docs.postgresqlfr.org/8.3/client-authentication.html#auth-pg-hba-conf"&gt;partie&lt;/a&gt; de la documentation.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Dans cette configuration il convient de choisir un mot de passe pour le super-utilisateur &lt;strong&gt;postgres&lt;/strong&gt; qui ne soit pas identique au login.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="langages-proceduraux"&gt;
&lt;h3&gt;Langages procéduraux&lt;/h3&gt;
&lt;img alt="Langages procéduraux" src="images/InstPg83/PostgreSQL--2008-02-12--14-59-17.jpg" /&gt;
&lt;p&gt;Les langages proceduraux (PL) peuvent être installer séparément, pendant l'installation ou ultérieurement. Par défaut PL/pgSQL est activé,
cela signifie qu'il sera installé dans la base &lt;strong&gt;template1&lt;/strong&gt; qui est utilisé comme modèle lors de la création d'une nouvelle base de données.
L'activation des case a coché pour les autres langages dépend si le module d'installation a détecté la présence des interpreteurs pour les différents langages.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="choix-des-contrib"&gt;
&lt;h3&gt;Choix des contrib&lt;/h3&gt;
&lt;img alt="Choix des contribs" src="images/InstPg83/PostgreSQL--2008-02-12--15-00-08.jpg" /&gt;
&lt;p&gt;Par défaut 2 contributions sont installés&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Adminpack&lt;/li&gt;
&lt;li&gt;Debugger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vous cochez d'autres contributions, celles-ci seront installés et activés par défaut, sinon elle seront juste installés dans le répertoire de contrib et
leur activation se fera au travers de leurs scripts d'installation respectif (dans ce même répertoire se trouve également les scripts de désinstallations)&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="progression-de-l-installation"&gt;
&lt;h3&gt;Progression de l'installation&lt;/h3&gt;
&lt;img alt="Debut installation" src="images/InstPg83/PostgreSQL--2008-02-12--15-00-20.jpg" /&gt;
&lt;p&gt;L'installation ne devrait pas poser de soucis, sinon vous obtiendrez un message d'erreur explique, mais également une trace dans le fichier de log.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="fin-d-installation"&gt;
&lt;h3&gt;Fin d'installation&lt;/h3&gt;
&lt;img alt="Ecran final" src="images/InstPg83/PostgreSQL--2008-02-12--15-01-07.jpg" /&gt;
&lt;p&gt;Voila &lt;strong&gt;PostgreSQL&lt;/strong&gt; est fraichement installé sur votre environnement. sur ce dernier écran il vous est conseillé de vous inscrire à la liste &lt;strong&gt;psql-announce&lt;/strong&gt;
pour être informer des nouvelles mises à jour mais également des bugs ou correction de bug.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="premiere-connexion"&gt;
&lt;h2&gt;Première connexion&lt;/h2&gt;
&lt;div class="section" id="avec-psql"&gt;
&lt;h3&gt;Avec psql&lt;/h3&gt;
&lt;p&gt;Pour la première connexion avec psql, faite &lt;strong&gt;Demarrer / Executer&lt;/strong&gt; puis saisissez &lt;strong&gt;cmd&lt;/strong&gt;. Lorsque la console est ouverte saisissez les lignes ci-dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;chcp 1252
set PSQL=&amp;quot;c:\Program Files\PostgreSQL\8.3\bin&amp;quot;
%PSQL%\psql -U postgres
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;vous devriez obtenir l'écran ci-dessous, après avoir saisie le mot de passe de l'utilisateur &lt;strong&gt;postgres&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Password for user postgres:
Welcome to psql 8.3.0, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=#
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="avec-pgadmin-iii"&gt;
&lt;h3&gt;Avec pgAdmin III&lt;/h3&gt;
&lt;p&gt;Pour lancer pgAdmin3, aller sur &lt;strong&gt;Demarrer / Programmes / PostgreSQL 8.3 / pgAdmin3&lt;/strong&gt;&lt;/p&gt;
&lt;img alt="pgAdmin3 Connexion" src="images/InstPg83/pgAdmin_III--2008-03-01--20-58-50.jpg" /&gt;
&lt;p&gt;Choisissez le serveur sur lequel vous souhaitez vous connecter, pour l'instant 1 seul est déclaré et faites un clic droit, puis &lt;strong&gt;Se connecter&lt;/strong&gt;,
vous pouvez maintenant naviguer dans l'arborescence, et commencer par créer un Utilisateur puis une base de données.&lt;/p&gt;
&lt;img alt="pgAdmin3 Arborescence" src="images/InstPg83/pgAdmin_III--2008-03-01--21-23-40.jpg" /&gt;
&lt;/div&gt;
&lt;/div&gt;
</summary><category term="postgresql"></category><category term="windows"></category></entry><entry><title>De vrai URL pour son site web en local</title><link href="http://blog.kryskool.org/De-vrai-URL-pour-son-site-web-en-local-fr.html" rel="alternate"></link><updated>2008-01-25T12:30:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/De-vrai-URL-pour-son-site-web-en-local-fr.html</id><summary type="html">&lt;p&gt;La mise en place de cette méthode est extrêmement simple, premièrement ouvrir le fichier &lt;em&gt;hosts&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Sous linux&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vi /ect/hosts
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sous windows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;C:\WINDOWS\system&lt;span class="m"&gt;32&lt;/span&gt;\drivers\etc\hosts
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis saisissez.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;127.0.0.1 monsite.local
127.0.0.1 www.monsite.local
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite éditer le fichier contenant vos &lt;em&gt;VirtualHost&lt;/em&gt; et renseignez y les informations suivantes.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;VirtualHost&lt;/span&gt; &lt;span class="s"&gt;*:80&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nb"&gt;ServerAdmin&lt;/span&gt; webmaster@localhost
    &lt;span class="nb"&gt;DocumentRoot&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;/var/www/monsite.local/&amp;quot;&lt;/span&gt;
    &lt;span class="nb"&gt;ServerName&lt;/span&gt; www.monsite.local
    &lt;span class="nb"&gt;ServerAlias&lt;/span&gt; monsite.local
&lt;span class="nt"&gt;&amp;lt;/VirtualHost&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Un petit redémarrage du serveur Apache pour qu'il prenne en compte la nouvelle configuration, puis ensuite ouvrez votre navigateur préféré et saisissez l'adresse &lt;a class="reference external" href="http://www.monsite.local/"&gt;http://www.monsite.local/&lt;/a&gt;&lt;/p&gt;
</summary><category term="apache"></category><category term="php"></category></entry><entry><title>Déployer son site avec SVN (Subversion)</title><link href="http://blog.kryskool.org/Deployer-son-site-avec-SVN-Subversion-fr.html" rel="alternate"></link><updated>2008-01-24T22:20:00+01:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Deployer-son-site-avec-SVN-Subversion-fr.html</id><summary type="html">&lt;p&gt;Pour protéger les données sensibles se trouvant dans le répertoire &lt;em&gt;.svn&lt;/em&gt;, présent à tous les niveaux de l'arborescence,
ils existent plusieurs solutions autour sur serveur web &lt;em&gt;Apache&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;La première concerne un redirection avec &lt;em&gt;mod_rewrite&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nb"&gt;RewriteEngine&lt;/span&gt; &lt;span class="k"&gt;On&lt;/span&gt;
&lt;span class="nb"&gt;RedirectMatch&lt;/span&gt; &lt;span class="m"&gt;404&lt;/span&gt; /\.svn(/|$)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ou tout simplement si un fichier ou un répertoire se nomme &lt;em&gt;.svn&lt;/em&gt; celui est interdit d'accès
j'ai répertorié 3 méthodes à vous de choisir celle qui vous convient.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class="s"&gt;~ &amp;quot;\.svn&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;Order&lt;/span&gt; Deny, Allow
  &lt;span class="nb"&gt;Deny&lt;/span&gt; from &lt;span class="k"&gt;all&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ou bien&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;Directory&lt;/span&gt; &lt;span class="s"&gt;~ .*/\.svn.*&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;Order&lt;/span&gt; Deny, Allow
  &lt;span class="nb"&gt;Deny&lt;/span&gt; from &lt;span class="k"&gt;All&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/Directory&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;et pour terminer&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;&amp;lt;DirectoryMatch&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;\.svn&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nb"&gt;Deny&lt;/span&gt; from &lt;span class="k"&gt;all&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/DirectoryMatch&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il en existe surement d'autres, mais déjà avec celles-ci vous êtes plus en sécurité.&lt;/p&gt;
</summary><category term="apache"></category><category term="svn"></category></entry><entry><title>Configuration de PDO pour PostgreSQL</title><link href="http://blog.kryskool.org/Configuration-de-PDO-pour-PostgreSQL-fr.html" rel="alternate"></link><updated>2007-09-17T08:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Configuration-de-PDO-pour-PostgreSQL-fr.html</id><summary type="html">&lt;p&gt;Pour utiliser PDO (PHP Database Object) avec PostgreSQL, il faut que l'extension &lt;em&gt;PDO&lt;/em&gt; et &lt;em&gt;PDO_PGSQL&lt;/em&gt; soit compilé en tant que librairie partagée
(fonctionnement recommander dans la documentation PHP).&lt;/p&gt;
&lt;p&gt;Ensuite éditer le fichier php.ini et rechercher&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;extension=pdo.so (sous Linux/Unix)&lt;/li&gt;
&lt;li&gt;extension=pdo.dll (sous Windows)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;si un &lt;em&gt;;&lt;/em&gt; se trouve devant extension alors le supprimer. Il faut également décommenter&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;extension=php_pdo_pgsql.so&lt;/li&gt;
&lt;li&gt;extension=php_pdo_pgsql.dll&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qui est la bibliothèque PDO pour PostgreSQL&lt;/p&gt;
&lt;p&gt;Nous allons maintenant testé que la connexion à la base de données s'effectue correctement, en recopiant le code ci-dessous dans un fichier que nous nommerons pdo.php&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="nb"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Content-Type: text/plain; charset=ISO-8859-1&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;postgres&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$pass&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;postgres&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$dsn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;pgsql:host=localhost;dbname=template1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nv"&gt;$dbh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;PDO&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dsn&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$pass&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Connecté :)&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nv"&gt;$dbh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;PDOException&lt;/span&gt; &lt;span class="nv"&gt;$e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Erreur ! : &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$e&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getMessage&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;die&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;&lt;span class="x"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous remplacerez bien sur, le mot de passe de l'utilisateur &lt;em&gt;postgres&lt;/em&gt; par celui que vous avez spécifié.&lt;/p&gt;
&lt;p&gt;Si tout se passe bien, vous verrez apparaitre le message connecté sinon un message d'erreur PostgreSQL apparaitra.&lt;/p&gt;
</summary><category term="postgresql"></category><category term="php"></category><category term="apache"></category><category term="pdo"></category><category term="poo"></category></entry><entry><title>Utilisation de psql sous Windows</title><link href="http://blog.kryskool.org/Utilisation-de-psql-sous-Windows-fr.html" rel="alternate"></link><updated>2007-08-27T21:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Utilisation-de-psql-sous-Windows-fr.html</id><summary type="html">&lt;p&gt;Sous Windows l'utilisation de &lt;strong&gt;psql&lt;/strong&gt; n'est pas aussi pratique que sous Linux/BSD.&lt;/p&gt;
&lt;p&gt;Il faut d'abord changer le codepage du terminal en &lt;strong&gt;CP 1252&lt;/strong&gt;, mais également se rendre dans les propriété de la fenêtre
et choisir la police &lt;strong&gt;Lucida Console&lt;/strong&gt; en taille &lt;strong&gt;14&lt;/strong&gt; et enregistrer les changement pour les fenêtres futures.&lt;/p&gt;
&lt;p&gt;En prime un petit script qui fait ça automatiquement, et qui se connecte via un service, détaillé dans un article précédent.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;chcp 1252
rem
rem Script pour lancer PSQL avec le bon codepage
rem et aussi le service qui nous intéresse directement
rem
@echo off
set PSQL=&amp;quot;C:\Program Files\PostgreSQL\8.2\bin&amp;quot;
set PGSERVICE=drupal
cls
echo **************************************************
echo - Nom du service psql actif : %PGSERVICE%
echo **************************************************
echo *
%PSQL%\psql
&lt;/pre&gt;&lt;/div&gt;
</summary><category term="postgresql"></category><category term="psql"></category></entry><entry><title>Utilisation du fichier pg_service.conf pour se connecter à PostgtreSQL</title><link href="http://blog.kryskool.org/Utilisation-du-fichier-pg_serviceconf-pour-se-connecter-a-PostgtreSQL-fr.html" rel="alternate"></link><updated>2007-08-27T17:21:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Utilisation-du-fichier-pg_serviceconf-pour-se-connecter-a-PostgtreSQL-fr.html</id><summary type="html">&lt;p&gt;Depuis la version &lt;strong&gt;8.1&lt;/strong&gt; il existe une nouvelle méthode de connexion des applications qui se base sur la &lt;a class="reference external" href="http://docs.postgresqlfr.org/8.2/libpq.html"&gt;libpq&lt;/a&gt; utilisant un nom de service.&lt;/p&gt;
&lt;p&gt;Auparavant on utilisait une chaine de connexion qui parfois était compilé avec les informations en dur&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;host=localhost user=toto password=tata dbname=drupal port=5432
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;la méthode utilisant la notion de service est beaucoup plus simple, il suffit de remplacer la chaine précédente par :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;service=drupal
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut ensuite renseigner le fichier pg_service.conf avec les valeurs de la chaine précédente, le nom du service est placé entre &lt;strong&gt;[...]&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. Commentaire du service DRUPAL&lt;/span&gt;
&lt;span class="k"&gt;[drupal]&lt;/span&gt;
&lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;localhost&lt;/span&gt;
&lt;span class="na"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;toto&lt;/span&gt;
&lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;tata&lt;/span&gt;
&lt;span class="na"&gt;dbname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;drupal&lt;/span&gt;
&lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;5432&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;si l'un des paramètres venait à changer il est plus simple d'ajuster le fichier pg_service.conf&lt;/p&gt;
&lt;p&gt;il est possible d'indiquer l'emplacement de ce fichier grâce à la variable d'environnement &lt;strong&gt;PGSYSCONFDIR&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;par exemple sous Linux&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ PGSYSCONFDIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/postgresql
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;PGSYSCONFDIR
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ou sous Windows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;set PGSYSCONFDIR=&amp;quot;C:\Program Files\PostgreSQL\8.2&amp;quot;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;J'ai crée dans ce répertoire un sous dossier &lt;strong&gt;etc&lt;/strong&gt; dans lequel j'ai mis le fichier &lt;strong&gt;pg_service.conf&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pour vérifier que cela fonctionne avec psql, faite comme ci dessous&lt;/p&gt;
&lt;p&gt;Sous Linux&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$ PGSERVICE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;drupal
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;export &lt;/span&gt;PGSERVICE
&lt;span class="nv"&gt;$ &lt;/span&gt;psql
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Sous Windows&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;set PGSERVICE=drupal
psql
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;La variable d'environnement &lt;strong&gt;PGSERVICE&lt;/strong&gt; contient le nom du service auquel l'on souhaite se connecter,
comme l'on exécute psql sans aucun paramètre celui regarde si cette variable d'environnement existe et s'y connecte.&lt;/p&gt;
</summary><category term="postgresql"></category><category term="libpq"></category></entry><entry><title>Réalisation du paquet de pgBouncer sous Debian Sarge</title><link href="http://blog.kryskool.org/Installation-de-pgBouncer-sous-Debian-Sarge-fr.html" rel="alternate"></link><updated>2007-08-24T10:21:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Installation-de-pgBouncer-sous-Debian-Sarge-fr.html</id><summary type="html">&lt;p&gt;On récupère tout d'abord les sources (version 1.0.8 lors de la rédaction de l'article)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# wget http://pgfoundry.org/frs/download.php/1399/pgbouncer-1.0.8.tgz&lt;/span&gt;
&lt;span class="c"&gt;# tar zxvf pgbouncer-1.0.8.tgz&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il convient de vérifier que l'on dispose de la librairie libevent de développement&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# apt-get install libevent-dev&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite les instructions standard&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# ./configure&lt;/span&gt;
&lt;span class="c"&gt;# make&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;si vous ne disposez pas des outils de création de paquet lancer&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# apt-get install devscripts yada&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite l'on va réaliser le paquet source&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# make deb&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si vous n'avez aucun message d'erreur vous avez le paquet Debian qui est disponible dans le répertoire précédent, il ne reste plus qu'a l'installer&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# cd ..&lt;/span&gt;
&lt;span class="c"&gt;# dpkg -i pgbouncer_1.0.8-1_i386.deb&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite reporter à cette &lt;a class="reference external" href="http://www.dalibo.org/IMG/html/spooler_connexions.html#pgbouncer"&gt;page&lt;/a&gt; pour l'installation&lt;/p&gt;
&lt;p&gt;Il manque un script &lt;strong&gt;init.d&lt;/strong&gt; pour &lt;strong&gt;pgBouncer&lt;/strong&gt; il faut donc le lancer à la main.&lt;/p&gt;
</summary><category term="debian"></category><category term="pgbouncer"></category><category term="postgresql"></category></entry><entry><title>Faire un copyright dynamique en PHP avec Smarty</title><link href="http://blog.kryskool.org/Faire-un-copyright-dynamique-en-PHP-avec-Smarty-fr.html" rel="alternate"></link><updated>2007-08-18T10:25:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Faire-un-copyright-dynamique-en-PHP-avec-Smarty-fr.html</id><summary type="html">&lt;p&gt;Pour faire dynamiquement changer l'année en cours lorsque l'on affiche des informations de copyright en &lt;a class="reference external" href="http://www.php.net/"&gt;PHP&lt;/a&gt; avec le moteur de template &lt;a class="reference external" href="http://www.smarty.net/"&gt;smarty&lt;/a&gt; il faut utilise une variable interne &lt;em&gt;{$smarty;&lt;/em&gt;}*.&lt;/p&gt;
&lt;p&gt;Pour afficher les informations ci dessous ,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Copyright 2005-2007
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Avec la partie ++2007++ en dynamique et dépendant de l'année en cours,&lt;/p&gt;
&lt;p&gt;Il suffit de procéder comme ceci, avec &lt;a class="reference external" href="http://www.smarty.net/"&gt;smarty&lt;/a&gt;.
dans le fichier template (.tpl) il faut écrire la ligne ci dessus comme suit.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;Copyright 2005-{$smarty.now|date_format:&amp;#39;%Y&amp;#39;}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;la variable &lt;em&gt;$smarty.now&lt;/em&gt; retourne la valeur correspond au nombre de secondes écoulées depuis Epoch (1 Janvier 1970)&lt;/p&gt;
&lt;p&gt;Le modificateur de variable &lt;a class="reference external" href="http://smarty.php.net/manual/fr/language.modifier.date.format.php"&gt;date_format&lt;/a&gt; va convertir et afficher seulement l'année avec le &lt;em&gt;%Y&lt;/em&gt;.&lt;/p&gt;
</summary><category term="php"></category><category term="smarty"></category></entry><entry><title>Pourquoi Microsoft Office OpenXML ne peut pas devenir une norme ISO</title><link href="http://blog.kryskool.org/Pourquoi-Microsoft-Office-OpenXML-ne-peut-pas-devenir-une-norme-ISO-fr.html" rel="alternate"></link><updated>2007-06-23T15:30:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Pourquoi-Microsoft-Office-OpenXML-ne-peut-pas-devenir-une-norme-ISO-fr.html</id><summary type="html">&lt;p&gt;Pourquoi le format Office OpenXML ne peut pas devenir une norme ISO&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;Il y'a déjà une norme ISO pour la bureautique (ISO26300)&lt;/li&gt;
&lt;li&gt;Il n'y a actuellement aucune implémentation du format OOXML, la suite Office 2007 produit une version spécifique de OOXML, et dans un format de fichier que OOXML ne comprend pas.&lt;/li&gt;
&lt;li&gt;Il manque des informations dans leur format de spécification. (voir autoSpaceLikeWord95 et useWord97LineBreakRules).&lt;/li&gt;
&lt;li&gt;Plus de 10% des exemples présents dans leur spécification ne sont pas conforme à la norme XML.&lt;/li&gt;
&lt;li&gt;Il n'y a aucune garantie que l'on peut écrire un programme implémentant partiellement ou totalement la spécification OOXML sans violer un brevet de Microsoft
ou que l'on devra leur payé des dédommagements.&lt;/li&gt;
&lt;li&gt;Leur format proposé est en conflit avec d'autre norme ISO, notamment la norme ISO 8601 concernant le format des dates, ISO 639 concernant les pays
et les langues, ISO/IEC 10118-3 concernant les algorithmes de cryptographie.&lt;/li&gt;
&lt;li&gt;Il y'a un bug dans le format d'enregistrement du fichier du tableur qui empêche de saisir une date inférieur à 1900.
cette anomalie et présente dans la spécification OOXML, Excel 2000, 2003, XP, 2007.&lt;/li&gt;
&lt;li&gt;Le format proposé n'a pas été crée par les expériences et les expertises de toutes les parties intéressées (producteurs, vendeurs, acheteurs, utilisateurs, régulateurs),
mais écrit seulement par Microsoft.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ce n'est qu'une petite liste, il y'a beaucoup plus de détail sur ce [site|http://www.noooxml.org|fr|No Office OpenXML Format],
Je vous invite également a lire ce qu'est une &lt;a class="reference external" href="http://fr.wikipedia.org/wiki/Normes_et_standards_industriels"&gt;Norme ISO&lt;/a&gt; et retenir ceci&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Un standard est ouvert quand le référentiel est diffusé librement.&lt;/li&gt;
&lt;li&gt;Cette définition rend obligatoire l'indépendance des protocoles et des formats de données vis-à-vis des éditeurs, des fabricants et des utilisateurs de logiciels
ou de systèmes d'exploitation ainsi que la mise à disposition de spécifications techniques documentées, non payantes et non soumises à un brevet ou à des royalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ainsi qu'a signé la &lt;a class="reference external" href="http://www.noooxml.org/petition"&gt;pétition&lt;/a&gt; en ligne.&lt;/p&gt;
&lt;p&gt;Toutes les marques cités dans cette article, appartiennent à leurs auteurs respectifs.&lt;/p&gt;
</summary><category term="iso"></category><category term="odf"></category><category term="norme"></category></entry><entry><title>WRT54GL routeur Wifi sous Linux</title><link href="http://blog.kryskool.org/WRT54GL-fr.html" rel="alternate"></link><updated>2007-05-31T11:41:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/WRT54GL-fr.html</id><summary type="html">&lt;p&gt;Y'a quelques temps déjà je me suis interressé au projet &lt;a class="reference external" href="http://dev.wifidog.org/"&gt;Wifidog&lt;/a&gt;. Celui est composé de plusieurs bornes Wifi faisant office de point d'accès
et d'un serveur d'authentification.&lt;/p&gt;
&lt;p&gt;Lorsque l'on se connecte sur une des bornes, on obtient automatique les informations de connexions, puis lorsque l'on ouvre son navigateur Internet
on arrive directement sur le portail (quelques soit l'adresse qui est renseigné dans le navigateur).
Sur cette page on trouve une partie identification, qui permet ensuite de pouvoir naviguer normalement sur Internet,
une carte des points d'accès rattachée au serveur d'identification. ainsi que de l'espace libre pour y afficher ce que l'on veut.&lt;/p&gt;
&lt;p&gt;Pour en revenir a mon petit projet c'est de mettre en place un serveur d'authentification ainsi qu'une première borne en fonctionnement
qui présentera sur le portail d'entrée l'association Ornix dont je suis président. Ensuite pourquoi pas dispositionner d'autres bornes dans la ville à des endroits précis.&lt;/p&gt;
&lt;p&gt;Mais également remettre à plat le schéma de la base de données PostgreSQL car certaines personnes se plaignent de lenteurs, ce qui a première vue me parait plausible.&lt;/p&gt;
&lt;p&gt;Ainsi que d'étendre les fonctionnalités du portail à l'aide de Plugin.&lt;/p&gt;
&lt;p&gt;Suite au prochain épisode.&lt;/p&gt;
</summary><category term="linux"></category><category term="wifidog"></category><category term="postgresql"></category><category term="php"></category><category term="apache"></category></entry><entry><title>Effacer les contenus des tables d'un schéma</title><link href="http://blog.kryskool.org/Effacer-les-contenus-des-tables-dun-schema-fr.html" rel="alternate"></link><updated>2007-05-22T22:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Effacer-les-contenus-des-tables-dun-schema-fr.html</id><summary type="html">&lt;p&gt;Le script ci dessous construit un fichier qui ferra un &lt;a class="reference external" href="http://docs.postgresqlfr.org/8.2/sql-truncate.html"&gt;TRUNCATE&lt;/a&gt; des tables du schéma sélectionné.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;TRUNCATE TABLE &amp;#39;&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;;&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;   &lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;  &lt;span class="n"&gt;table_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;BASE TABLE&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;AND&lt;/span&gt;    &lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;public&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;cela donnera le résultat ci dessous.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;TRUNCATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;enregistrer ce script et rejouer le.&lt;/p&gt;
</summary><category term="postgresql"></category><category term="script"></category></entry><entry><title>Changer les droits des tables pour un utilisateur</title><link href="http://blog.kryskool.org/Changer-les-droits-des-tables-pour-un-utilisateur-fr.html" rel="alternate"></link><updated>2007-05-11T13:00:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Changer-les-droits-des-tables-pour-un-utilisateur-fr.html</id><summary type="html">&lt;p&gt;La requête ci dessous permet de générer un script qui donne les droits SELECT à un utilisateur de la base PostgreSQL.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;GRANT SELECT ON &amp;#39;&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="o"&gt;||&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39; TO mon_user;&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;   &lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt;  &lt;span class="n"&gt;table_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;BASE TABLE&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;AND&lt;/span&gt;    &lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;public&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis enregistrer le contenu retourner dans un fichier, et rejouer le script précédemment enregistrer.&lt;/p&gt;
</summary><category term="postgresql"></category></entry><entry><title>Identification HTTP via son compte Jabber XEP-0070</title><link href="http://blog.kryskool.org/Identification-HTTP-via-son-compte-Jabber-JEP-0070-fr.html" rel="alternate"></link><updated>2006-09-23T13:49:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Identification-HTTP-via-son-compte-Jabber-JEP-0070-fr.html</id><summary type="html">&lt;p&gt;Si comme moi, vous êtes inscrit à de nombreux sites avec des identifiants et mots de passes différents,
il arrive souvent que l'on ne se souviennent plus de son identifiant ou mot de passe pour un site,
c'est également valable lorsque l'on se trouve sur une nouvelle machine ou que l'on a dut effectuer une reinstallation.&lt;/p&gt;
&lt;p&gt;L'idée de cette spécification est d'apporté une identification unique à partir de son compte jabber.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Voici son fonctionnement.&lt;/em&gt;&lt;/p&gt;
&lt;ol class="arabic simple"&gt;
&lt;li&gt;L'utilisateur via son navigateur envoi une demande d'identification.&lt;/li&gt;
&lt;li&gt;Le serveur &lt;strong&gt;HTTP&lt;/strong&gt; nous affiche une fenêtre d'identification&lt;/li&gt;
&lt;li&gt;L'utilisateur saisie son identifiant Jabber (&lt;strong&gt;JID&lt;/strong&gt;) et pas de mot de passe.&lt;/li&gt;
&lt;li&gt;Le serveur &lt;strong&gt;HTTP&lt;/strong&gt; reçois la requête et la transfert au serveur &lt;strong&gt;XMPP&lt;/strong&gt; (Jabber).&lt;/li&gt;
&lt;li&gt;Le serveur &lt;strong&gt;XMPP&lt;/strong&gt; envoi une notification au client Jabber de l'utilisateur.&lt;/li&gt;
&lt;li&gt;L'utilisateur via son client jabber valide cette demande d'identification WEB&lt;/li&gt;
&lt;li&gt;Le serveur &lt;strong&gt;XMPP&lt;/strong&gt; donne confirmation au serveur &lt;strong&gt;HTTP&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Le serveur &lt;strong&gt;HTTP&lt;/strong&gt; donne accès à la partie privé puisqu'il à reçu la confirmation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dans cette configuration, le seul identifiant à retenir est celui de son compte Jabber.
De plus chaque compte utilisateur Jabber possède sa propre vCard (Fiche d'identité) les sites n'ont qu'a se basé sur celle ci pour être à jour (à condition de bien la remplir).&lt;/p&gt;
&lt;p&gt;Pour ceux qui veulent en savoir plus pourront consulter les pages du &lt;a class="reference external" href="http://wiki.jabber.org/index.php/HTTP-Auth_suite"&gt;wiki&lt;/a&gt; de jabber.org , mais également ces liens en vrac&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://jauto.sourceforge.net/subprojects/jautod"&gt;jautod&lt;/a&gt; le module XMPP serveur.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://jauto.sourceforge.net/subprojects/mod_jauto"&gt;mod_jauto&lt;/a&gt; le module Apache de dialogue HTTP vers XMPP et inversement.&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://jauto.sourceforge.net/subprojects/firefox-jauto-ex"&gt;firefox-jauto-ex&lt;/a&gt; Extension FireFox qui envoi la confirmation jabber à votre place.&lt;/li&gt;
&lt;/ul&gt;
</summary><category term="jabber"></category><category term="apache"></category><category term="firefox"></category></entry><entry><title>Sortie de la 1.6 Beta 1 de PgAdmin 3</title><link href="http://blog.kryskool.org/Sortie-de-la-Beta-1-de-PgAdmin-3-fr.html" rel="alternate"></link><updated>2006-09-15T10:12:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Sortie-de-la-Beta-1-de-PgAdmin-3-fr.html</id><summary type="html">&lt;p&gt;&lt;a class="reference external" href="http://pgadmin.org/"&gt;PgAdmin3&lt;/a&gt;, l'outil graphique de gestion de base de données PostgreSQL passe en version 1.6, on en ai qu'au stade de la Beta 1, donc amis testeur à vos claviers.
Au sommaire plusieurs nouveautés dont&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Un bloc note&lt;/li&gt;
&lt;li&gt;Générateur de rapport XHTML ou XML&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici quelques copies d'écran, avec celles bien sûr des nouveautés&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;L'écran principal.&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="PgAdmin 1.6 Beta 1 - Main" src="PgAdmin3_1-6-Main.jpg" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;La fenêtre d'exécution des requêtes&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="PgAdmin 1.6 Beta 1 - Query" src="PgAdmin3_1-6-SQL_Query.jpg" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le générateur de rapport.&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="PgAdmin 1.6 Beta 1 - Rapport" src="PgAdmin3_1-6-Rapport.jpg" /&gt;
</summary><category term="pgadmin"></category><category term="postgresql"></category></entry><entry><title>Raccourci dans OpenOffice Calc</title><link href="http://blog.kryskool.org/Raccourci-dans-OpenOffice-Calc-fr.html" rel="alternate"></link><updated>2006-09-14T16:10:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Raccourci-dans-OpenOffice-Calc-fr.html</id><summary type="html">&lt;p&gt;En m'amusant un peu avec le tableur OOo j'ai découvert 2 petits raccourcis sympatique&lt;/p&gt;
&lt;div class="section" id="redimmensionner-un-cellule"&gt;
&lt;h2&gt;Redimmensionner un cellule&lt;/h2&gt;
&lt;p&gt;Pour redimensionner une cellule, on se positionne dans celle-ci tout et en maintenant la touche &lt;strong&gt;Alt&lt;/strong&gt; enfoncée puis un appuis sur une des flèches de directions&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Fleche gauche : reduction de la largeur de la cellule&lt;/li&gt;
&lt;li&gt;Fleche droite : augmentation de la largeur de cellule&lt;/li&gt;
&lt;li&gt;Fleche haut : diminution de la hauteur de la cellule&lt;/li&gt;
&lt;li&gt;Fleche bas : augmentation de la hauteur de cellule&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="adaptation-automatique-de-la-largeur-et-hauteur-d-une-cellule"&gt;
&lt;h2&gt;Adaptation automatique de la largeur et hauteur d'une cellule&lt;/h2&gt;
&lt;p&gt;Pour adapter automatiquement une cellule à son contenu, il faut maintenant &lt;strong&gt;Shift&lt;/strong&gt; + &lt;strong&gt;Alt&lt;/strong&gt; puis une des flèches de direction.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="openoffice calc"></category></entry><entry><title>PalmSource Installer (Introduction)</title><link href="http://blog.kryskool.org/PalmSource-Installer-Introduction-fr.html" rel="alternate"></link><updated>2006-08-17T23:05:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/PalmSource-Installer-Introduction-fr.html</id><summary type="html">&lt;div class="section" id="presentation-de-l-applicatif"&gt;
&lt;h2&gt;Présentation de l'applicatif&lt;/h2&gt;
&lt;p&gt;L'outil &lt;strong&gt;PalmSource Installer&lt;/strong&gt; est disponible (pour l'instant) uniquement sous Windows. Il est composé de 3 modules&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;PalmSource Package Installer Client&lt;/li&gt;
&lt;li&gt;PalmSource Package Installer Desktop&lt;/li&gt;
&lt;li&gt;Palm OS Package Builder&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="palmsource-package-installer-client"&gt;
&lt;h2&gt;PalmSource Package Installer Client&lt;/h2&gt;
&lt;p&gt;IL s'agit de l'applicatif caché au sein du Palm, il sera chargé en autre de transmettre :&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;le type de la machine&lt;/li&gt;
&lt;li&gt;la version de l'OS&lt;/li&gt;
&lt;li&gt;la langue de l'utilisateur&lt;/li&gt;
&lt;li&gt;la taille de l'écran&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grâce à lui,  il ne sera téléchargé que le strict nécéssaire.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="palmsource-package-installer-desktop"&gt;
&lt;h2&gt;PalmSource Package Installer Desktop&lt;/h2&gt;
&lt;p&gt;L'application &lt;a class="reference external" href="http://euro.palm.com/europe/fr/support/win_desktop414e.html"&gt;Palm Desktop&lt;/a&gt; et HotSync seront chargés d'installer le strict nécéssaire sur votre Palm.
Si vous avez également embarqué un fichier texte, PDF ou autre (License, ReadMe, etc), celui ci s'affichera à l'écran de l'utilisateur.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="palm-os-package-builder"&gt;
&lt;h2&gt;Palm OS Package Builder&lt;/h2&gt;
&lt;p&gt;Cet outil contient le compilateur qui va générer les fichiers PSI. le fichier qui contient les divers paramètres de l'applicatif à packager est au format &lt;strong&gt;XML&lt;/strong&gt;.
Dans ce fichier &lt;strong&gt;XML&lt;/strong&gt; nous pourrons optimiser l'installation de certains fichiers en fonction de la taille de l'écran, la langue de l'utilisateur,
la version de l'OS etc..., il est également possible de réaliser les pages web de présentation qu'il faudra charger sur le serveur web pour faciliter le déploiement
(ces pages web peuvent être générer en interne ou à partir d'un template).&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="installation-du-client-psi-sur-le-palm"&gt;
&lt;h2&gt;Installation du client PSI sur le Palm&lt;/h2&gt;
&lt;p&gt;Il n'a pas lieu de procéder à l'installation seule du client PSI sur le Palm. Cette étape sera faite lors de l'installation du premier applicatif distibué par PSI.
Pour installer un applicatif au format avec PSI, on utilise soit :&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le navigateur du PDA (blazer ou autre)&lt;/li&gt;
&lt;li&gt;Le navigateur de son PC (de préférence celui ou est disponible HotSync)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lors de déploiement d'applicatif avec &lt;strong&gt;PSI&lt;/strong&gt;, si le client PSI n'est pas présent sur le PDA voici la procédure intermédiaire qui se déroulera avant l'installation de l'applicatif.&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le système a détecté que le client PSI n'est pas installé&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Installation de PSI client" src="images/PSI-Ecran1.png" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Le système nous demande ou nous voulons le sauvegarder (en RAM ou Carte)&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Confirmation téléchargement PSI" src="images/PSI-Ecran2.png" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Progression du téléchargement&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Progression téléchargement PSI" src="images/PSI-Ecran3.png" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Fin du téléchargement&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Téléchargement PSI terminé" src="images/PSI-Ecran4.png" /&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Confirmation d'installation de PSI dans les programmes&lt;/li&gt;
&lt;/ul&gt;
&lt;img alt="Confirmation installation PSI" src="images/PSI-Ecran5.png" /&gt;
&lt;p&gt;Dans le prochain article nous allons voir comment créer un fichier XML simple pour déployer une appli Palm.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="palm"></category><category term="palmsource installer"></category><category term="psi"></category></entry><entry><title>Installation de Dotclear 2 sous PostgreSQL</title><link href="http://blog.kryskool.org/Installation-de-Dotclear-2-sous-PostgreSQL-fr.html" rel="alternate"></link><updated>2006-08-17T15:12:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Installation-de-Dotclear-2-sous-PostgreSQL-fr.html</id><summary type="html">&lt;p&gt;&lt;strong&gt;Dotclear 2&lt;/strong&gt; étant sortie en béta 2 fonctionnant sous &lt;a class="reference external" href="http://www.postgresqlfr.org"&gt;PostgreSQL&lt;/a&gt; je me devais de le tester,
l'installation se fait simplement en suivant les recommandations de la documentation.&lt;/p&gt;
</summary><category term="dotclear2 installation"></category><category term="postgresql"></category><category term="linux"></category><category term="debian"></category><category term="apache"></category></entry><entry><title>PalmSource Installer</title><link href="http://blog.kryskool.org/PalmSource-Installer-fr.html" rel="alternate"></link><updated>2005-10-05T15:29:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/PalmSource-Installer-fr.html</id><summary type="html">&lt;p&gt;J'ai découvert cet outil qui permet de synchroniser son Palm très simplement et surtout de permettre des déploiements à très grande échelle.&lt;/p&gt;
&lt;p&gt;Je prévois un petit tutorial d utilisation de ce magnifique outils très bien pensé.&lt;/p&gt;
</summary><category term="palmsource installer"></category><category term="palm"></category><category term="psi"></category></entry><entry><title>Firefox et Citrix</title><link href="http://blog.kryskool.org/Firefox-et-Citrix-fr.html" rel="alternate"></link><updated>2005-09-25T15:30:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Firefox-et-Citrix-fr.html</id><summary type="html">&lt;p&gt;Je suis amené parfois a me connecter chez mes clients via Citrix,
Je viens de tester &amp;quot;Metaframe Presentation Server&amp;quot; dans FireFox et cela fonctionne sans aucun problème,
bien sûr il faut au préalable installer le certificat SSL dans FireFox.&lt;/p&gt;
</summary><category term="citrix metaframe firefox"></category></entry><entry><title>WG511 sur Debian</title><link href="http://blog.kryskool.org/WG511-sur-Debian-fr.html" rel="alternate"></link><updated>2004-08-20T21:15:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/WG511-sur-Debian-fr.html</id><summary type="html">&lt;div class="section" id="introduction"&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Cet article détail la procédure d'installation et de configuration d'une carte Wifi Netgear WG511 PCMCIA sur une Debian Sarge.%%%
Cette carte est équipée d'un chip &lt;a class="reference external" href="www.prism54.org"&gt;Prism&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="pre-requis"&gt;
&lt;h2&gt;Pré-requis&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Debian Sarge ou Sid&lt;/li&gt;
&lt;li&gt;Noyau 2.6.6+ (réalisé avec un 2.6.7)&lt;/li&gt;
&lt;li&gt;Firmware &lt;a class="reference external" href="http://www.prism54.org/firmware/"&gt;site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="installation"&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Le module pour les cartes à base de chipset Prism, est inclus dans la série de Noyau 2.6, il suffit de s'assurer que le module est chargé.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. modprobe prism54&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Si ce n'est pas le cas tapez :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. modconf&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis sélectionner le module Prism54 dans la section &lt;em&gt;Kernel-&amp;gt;Drivers-&amp;gt;Net-&amp;gt;Wireless-&amp;gt;Prism54&lt;/em&gt; (un plus doit apparaître à coté du nom)&lt;/p&gt;
&lt;p&gt;Ensuite recuperer le Firmware puis le copier dans le répertoire &lt;em&gt;/usr/lib/hotplug/firmware/&lt;/em&gt; et le renommer &lt;em&gt;isl3890&lt;/em&gt;
voici un exemple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. wget http://prism54.org/~mcgrof/firmware/1.0.4.3.arm&lt;/span&gt;
&lt;span class="c"&gt;#. cp ./1.0.4.3.arm /usr/lib/hotplug/firmware/isl3890&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;l'installation est terminée, maintenant il faut paramétrer notre carte réseau&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration"&gt;
&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Nous allons renseigner certains paramètres de configuration dans &lt;em&gt;/etc/network/interfaces&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;iface eth1 inet static
    address 192.168.0.5
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1
    wireless_essid Linux_Debian  &amp;lt;- A remplacé par votre ESSID
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite taper la commande suivante&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. ifup eth1&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;puis executer, pour verifier les paramètres&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;#. iwconfig&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A noter qu'il est possible d'utiliser un DHCP pour fournir les informations à la carte.
La configuration est maintenant terminée, a vous la Liberté.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="debian"></category><category term="wifi"></category><category term="linux"></category></entry><entry><title>Module mod_auth_pgsql</title><link href="http://blog.kryskool.org/Module-mod_auth_pgsql-fr.html" rel="alternate"></link><updated>2004-07-06T15:22:00+02:00</updated><author><name>Christophe Chauvet</name></author><id>http://blog.kryskool.org/Module-mod_auth_pgsql-fr.html</id><summary type="html">&lt;div class="section" id="pre-requis"&gt;
&lt;h2&gt;Pré-requis&lt;/h2&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Debian ou autre&lt;/li&gt;
&lt;li&gt;Apache&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;mod_auth_pgsql&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-d-apache"&gt;
&lt;h2&gt;Configuration d'Apache&lt;/h2&gt;
&lt;p&gt;Dans cette partie l'on considère que Apache est déja installé et fonctionnel
Tous d'abord nous installons le module &lt;em&gt;Apache&lt;/em&gt; : Mod-Auth-Pgsql.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# apt-get install libapache-mod-auth-pgsql&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite nous devons utiliser&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# /usr/sbin/modules-config apache&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Pour ajouter le chargement du module dans &lt;em&gt;/etc/apache/modules.conf&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Cette manipulation n'a pas fonctionné correctement chez moi et je vous conseille de rajouter la ligne ci dessous si celle ci n'est pas présente dans votre fichier &lt;em&gt;modules.conf&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nb"&gt;LoadModule&lt;/span&gt; auth_pgsql_module &lt;span class="sx"&gt;/usr/lib/apache/1.3/mod_auth_pgsql.so&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;ensuite un rechargement de la configuration d'Apache pour prendre en compte ce nouveau module.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="c"&gt;# /etc/init.d/apache reload&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="configuration-postgresql"&gt;
&lt;h2&gt;Configuration PostgreSQL&lt;/h2&gt;
&lt;p&gt;Du coté de PostgreSQL, il suffit de créer une table contenant un minimum de 2 champs (login, mot de passe).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
   &lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="nb"&gt;integer&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="n"&gt;login&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="n"&gt;nom&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;prenom&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;mail&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;adresse&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;codpos&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;ville&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;pays&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="n"&gt;gnupg&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
   &lt;span class="n"&gt;passwd&lt;/span&gt; &lt;span class="nb"&gt;character&lt;/span&gt; &lt;span class="nb"&gt;varying&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous pouvez charger cette table via &lt;a class="reference external" href="http://phppgadmin.sourceforge.net/"&gt;PHPPgAdmin&lt;/a&gt; .&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="protection-du-repertoire"&gt;
&lt;h2&gt;Protection du répertoire&lt;/h2&gt;
&lt;p&gt;Pour cela nous utilisons les &lt;em&gt;.htaccess&lt;/em&gt;, voici en détail la configuration que j'utilise.
Dans la base, mon mot de passe est crypter en &lt;strong&gt;MD5&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nb"&gt;AuthName&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Mon Reseau&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;AuthType&lt;/span&gt; Basic
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;host&lt;/span&gt; localhost
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;port&lt;/span&gt; &lt;span class="m"&gt;5432&lt;/span&gt;
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;user&lt;/span&gt; kryskool
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt; xxxxxxxx
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;database&lt;/span&gt; test
&lt;span class="err"&gt;Auth_PG_pwd_&lt;/span&gt;&lt;span class="nb"&gt;table&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;users&amp;quot;&lt;/span&gt;
&lt;span class="err"&gt;Auth_PG_uid_&lt;/span&gt;&lt;span class="nb"&gt;field&lt;/span&gt; login
&lt;span class="err"&gt;Auth_PG_pwd_&lt;/span&gt;&lt;span class="nb"&gt;field&lt;/span&gt; passwd
&lt;span class="err"&gt;Auth_PG_&lt;/span&gt;&lt;span class="nb"&gt;encrypted&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt;
&lt;span class="err"&gt;Auth_PG_hash_&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; MD5
&lt;span class="nt"&gt;&amp;lt;LIMIT&lt;/span&gt; &lt;span class="s"&gt;GET POST&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="nb"&gt;require&lt;/span&gt; valid-user
&lt;span class="nt"&gt;&amp;lt;/LIMIT&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut renseigner les champs suivants avec vos valeurs&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_host&lt;/em&gt; : Nom ou adresse IP du serveur PostgreSQL&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_port&lt;/em&gt; : Port utilisé, par default 5432&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_user&lt;/em&gt; : Nom de l'utilisateur PostGresql&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_pwd&lt;/em&gt; : Mot de passe de l'utilisateur&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_database&lt;/em&gt; : Nom de la base de données&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_pwd_table&lt;/em&gt; : Nom de la table ou sont stockées les utilisateurs&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_uid_field&lt;/em&gt; : Nom du champ qui contient le Login de l'utilisateur&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_pwd_field&lt;/em&gt; : Nom du champ qui contient les mot de passe&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_encrypted&lt;/em&gt; : Si off les mot de passe sont stockés en clair dans la table (déconseillé)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Auth_PG_hash_type&lt;/em&gt; : Soit MD5 ou CRYPT&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;le reste est standard au fichier &lt;em&gt;.htaccess&lt;/em&gt;
A noter qu'il existe le même module pour &lt;em&gt;MySql&lt;/em&gt; et &lt;em&gt;LDAP&lt;/em&gt;.&lt;/p&gt;
&lt;/div&gt;
</summary><category term="postgresql"></category><category term="apache"></category><category term="linux"></category><category term="debian"></category></entry></feed>
