dimanche 20 avril 2014

Photos

La photo est une passion de longue date.

Faute de temps et de matériel adéquat, j'ai dû patienter quelques années avant de pouvoir vraiment m'adonner à cette passion.

Actuellement, je m’intéresse à de nombreux domaines : photo nature et sportive, même si les domaines du portrait ou le travail en mini studio me font de l’œil.



Retrouver mes différentes galeries sur mon blog dédié http://haptomai.org/ ou sur DeviantArt.

mardi 15 avril 2014

Optimiser les temps de réponse de MySQL - le DNS

Logo MySQL
Accélérer le temps de réponse de MySQL en désactivant la résolution DNS





Pour traiter des quantités importantes de données (quelques millions de lignes), j'utilise Talend Open Studio for Data Integration.
Toutes mes bases de données MySQL sont hébergées sur une VM (VirtualBox / Debian) en local.

Or, j'ai un petit problème de résolution de nom lié aux règles de sécurité drastiques, ce qui fait que MySQL patauge un peu quand je l’interroge depuis ma machine, que ce soit avec Talend ou autre chose (MySQL WorkBench...) car il veut absolument résoudre mon IP :(

Donc pour contourner ce petit 'problème', il suffit  de désactiver la résolution DNS dans MySQL

Pour cela, ajoutez un ligne dans le fichier de configuration de MySQL (my.cnf) avec l'option suivante :

skip-name-resolve

et redémarrez le serveur MySQL

Et là ! ca marche mieux !

La doc : http://dev.mysql.com/doc/refman/5.1/fr/dns.html

mercredi 6 juin 2012

Piwik error after update from 1.7.1 to 1.8.2

Erreur après la mise à jour de piwik depuis la version 1.7.1 vers 1.8.2


Une petite erreur rencontrée lors de la mise à jour automatique de piwik après la mise à jour de la base de données :

SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user 'piwik'@'localhost' to database 'piwik'
 Go to Piwik
 Login
 Backtrace:

 #0 /var/www/piwik-1.5.1/core/PluginsFunctions/Sql.php(51): Zend_Db_Adapter_Pdo_Abstract->exec('LOCK TABLES pwk...')
 #1 /var/www/piwik-1.5.1/core/PluginsFunctions/Sql.php(205): Piwik_Sql::exec('LOCK TABLES pwk...')
 #2 /var/www/piwik-1.5.1/core/PluginsFunctions/Sql.php(359): Piwik_Sql::lockTables('pwk_archive_num...', 'pwk_archive_num...')
 #3 /var/www/piwik-1.5.1/core/ArchiveProcessing.php(688): Piwik_LockTables('pwk_archive_num...', 'pwk_archive_num...')
 #4 /var/www/piwik-1.5.1/core/ArchiveProcessing.php(533): Piwik_ArchiveProcessing->loadNextIdarchive()
 #5 /var/www/piwik-1.5.1/core/ArchiveProcessing.php(472): Piwik_ArchiveProcessing->initCompute()
 #6 /var/www/piwik-1.5.1/core/Archive/Single.php(226): Piwik_ArchiveProcessing->launchArchiving()
 #7 /var/www/piwik-1.5.1/core/Archive/Array/IndexedBySite.php(192): Piwik_Archive_Single->prepareArchive()
 #8 /var/www/piwik-1.5.1/core/Archive/Array/IndexedBySite.php(131): Piwik_Archive_Array_IndexedBySite->getArchiveIdsAfterLaunching(Array)
 #9 /var/www/piwik-1.5.1/core/Archive/Array/IndexedBySite.php(108): Piwik_Archive_Array_IndexedBySite->loadValuesFromDB(Array)
 #10 /var/www/piwik-1.5.1/core/Archive/Array/IndexedBySite.php(73): Piwik_Archive_Array_IndexedBySite->getValues(Array)
 #11 /var/www/piwik-1.5.1/plugins/MultiSites/API.php(120): Piwik_Archive_Array_IndexedBySite->getDataTableFromNumeric(Array)
 #12 /var/www/piwik-1.5.1/plugins/MultiSites/Controller.php(65): Piwik_MultiSites_API->getAll('day', '2012-06-06', false)
 #13 /var/www/piwik-1.5.1/plugins/MultiSites/Controller.php(37): Piwik_MultiSites_Controller->getSitesInfo(Object(Piwik_View))
 #14 [internal function]: Piwik_MultiSites_Controller->index()
 #15 /var/www/piwik-1.5.1/core/FrontController.php(138): call_user_func_array(Array, Array)
 #16 /var/www/piwik-1.5.1/index.php(53): Piwik_FrontController->dispatch()



La ligne #0 du log indique que l'utilisateur MySQL 'piwik' n'a pas le droit de poser de verrous (privilège '__LOCK TABLES__' ) sur les tables de la base 'piwik'.

Ce qui est normal puisque je ne lui ai pas donné ce droit ;)

Donc, en plus de privilèges existants, à savoir :
* SELECT
* INSERT
* UPDATE
* DELETE
* CREATE
* DROP
* INDEX
* ALTER
* CREATE VIEW
* SHOW VIEW

Il faut ajouter le privilège d'administration  LOCK TABLES  :

REVOKE ALL PRIVILEGES ON `piwik`.* FROM 'piwik'@'localhost';
 GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE VIEW, SHOW VIEW
ON `piwik`.* TO 'piwik'@'localhost';

 
Et on oublie pas de recharger les privilèges, ca ne coute rien !
FLUSH PRIVILEGES ;
 
Et c'est reparti !

En résumé, il s'agit plus d'un problème de droits MySQL (un peu trop stricts) que d'un bug de Piwik. D’ailleurs, la FAQ de Piwik est claire sur ce point :

The Mysql USER should have the permission to SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, LOCK.

Have fun !

mardi 24 avril 2012

Initialiser une base PostgreSQL/PostGIS

 

 

 

 

 

Prérequis

  • Une instance PostGreSQL fonctionnelle
  • Le cartouche PostGIS installé

Préparation de la base

su postgres
createdb mabase
createlang plpgsql mabase
psql -d mabase -f /path/to/postgresql/version/share/contrib/postgis.sql
psql -d mabase -f /path/to/postgresql/version/share/contrib/spatial_ref_sys.sql

Création des tables

psql mabase
CREATE TABLE test (id serial PRIMARY KEY,genre text);

Ajout de la colonne géométrique à la table - AddGeometryColumn()

Pour l'instant notre table est vide, nous allons lui ajouter une troisième colonne où seront stockées nos données géométriques.

Nous aurons recours pour cela à la fonction AddGeometryColumn() de PostGIS dont la synthaxe générale est :

AddGeometryColumn( Table, 
                    Colonne_Geometrique, 
                    SRID, 
                    Type_Geometrie, 
                    Dimension);

  • Table est le nom de la table à laquelle doit être ajoutée la colonne géométrique;
  • Colonne_Geometrique est le nom de la colonne géométrique;
  • Type_Geometrie est le le type de géométrie possible:
  • SRID est l'identifiant spatial de projection selon le système de projection choisi.
    A titre d'exemple pour le Lambert II Carto Etendu, srid=27852;
  • Dimension est la dimension des objets géométriques 2D ou 3D ou 4D;
Dans notre cas, nous saisirons :

SELECT AddGeometryColumn( 'test', 'geom', -1, 'GEOMETRY', 2 );
 
 
Avec cette requête, nous avons ajouté la Colonne géométrique geom à la Table 'test'.

Comme nous n'utilisons ici aucun système de projection référencé, nous restons donc dans le plan 2D orthonormal par défaut, nous précisons juste SRID=-1.

Le type de données géométriques (Type_Geometrie) que nous souhaitons enregistrer peut-être de n'importe quel type. Nous préciserons donc par défaut GEOMETRY.
Enfin, nous sommes en 2 Dimensions.

Note
Il aurait été tout à fait possible de créer la table test en faisant directement

CREATE TABLE test (id serial PRIMARY KEY,genre TEXT,geom GEOMETRY);

Mais il y aurait alors eu un perte concernant les méta-données sur les objets géométriques concernant le type, le srid, la dimension.
Il est donc préférable d'avoir recours à la fonction AddGeometryColumn() pour pouvoir tirer profit de ces métadonnées.

mercredi 16 mars 2011

MySQL - Créer une table de sauvegarde en SQL

Astuce MySQL pour créer rapidement, en SQL, une table de sauvegarde





SET @tableName = concat ('ma_table_bak_',DATE_FORMAT(now(), '%Y_%m_%d_%H_%i'));
SET @sql := CONCAT('CREATE TABLE ', @tableName,' LIKE `ma_table`;');
PREPARE mySt FROM @sql; 
EXECUTE mySt; SET @sql2 := CONCAT('INSERT INTO ', @tableName,' SELECT * FROM `ma_table`'); 
PREPARE mySt2 FROM @sql2;
EXECUTE mySt2;

lundi 20 septembre 2010

Géopipi - Le site qui vous soulage

Vous partez en vacances avec de jeunes enfants, vous visitez une ville en accompagnant une personne handicapée/âgée ou bien tout simplement vous recherchez les wc les plus proches !


 GeoPipi est là pour vous aider et surtout localiser directement et sans attendre les toilettes publiques (gratuites et payantes).

Si ca presse, c'est par là !

jeudi 26 août 2010

Géocodage Automatique d'adresses

Un petit outil sympa, basé sur l'API Google Map©, pour géolocaliser automatiquement une liste d'adresses :
Batch geocodeur

Testé avec un fichier de 3 000 lignes d'adresses environ, l'opération a duré près de 2 heures.
Les points générés sont en degrés décimaux, système de coordonnées WGS84 - EPSG 4326

Taux de réussite :
  • 35,5 % localisé à l'adresse (accuracy = 8)
  • 29% localisé à la rue (accuracy = 6)
  • 35 % localisé à la ville (accuracy = 4)
  • 0,5% non localisé (accuracy = 0)
Intéressant ! Non ?

Merci à mon nouveau collègue pour l'info et les explications.