De nouvelles traductions pour i2c

Après l’ajout de nouvelles fonctions à l’interface SOAP d’i2c, voici 4 nouvelles traductions disponible pour les fonctions donnant le nom réel des pays et des continents:

  • es_ES – Spanish
  • nl_NL – Dutch
  • de_DE – German
  • pt_PT – Portuguese

La page du projet i2c à été mise en jour en conséquence, ce qui porte donc à 6 le nombre de langues supportées par les fonctions de traduction d’i2c.

PHP PDO: Récupérer les notes du serveur de bases de données

Certaines bases de données comme Oracle et PostgreSQL – MySQL le fait partiellement – renvoient des notes (notices en anglais) concernant une requête ALTER, UPDATE ou DELETE. Il est même possible de renvoyer des notes sous PostgreSQL et Oracle en faisant respectivement RAISE NOTICE et DMBS_OUTPUT.PUT_LINE. Ces informations peuvent parfois être retournée depuis les drivers de base de la base de données mais pas avec PDO.

Note: Ces patchs sont créés et testés pour PHP 5.3 uniquement.

Accèder à la page du projet PDO – Notices

Continue reading

Une base de données d’IPv6 telles que les IPv4 d’ip-to-country

Vous connaissez peut-être différents services comme i2c permettant d’obtenir le pays d’un visiteur en fonction de son adresse IP, et bien il existe d’autres services, comme ip-to-country qui proposent des base de données à télécharger, qui contienent des groupes (blocs) d’adresses IPv4 associés à leurs pays. Néanmoins, je n’ai pas encore vu une chose pareil pour les IPv6, c’est ce que je suis en train de faire ! :-)

Le système est en place, la récolte des différents blocs et de ses pays est en cours, avec i2c. Si vous effectuez des requêtes pour des adresses IPv6 avec i2c, le bloc auquel il appartient sera automatiquement ajouter à une liste de la sorte. Petit à petit, ça va se remplir et je vais probablement pouvoir le proposer en téléchargement !

Note: Peut-être que d’ici peu de temps je vais créer un petit robot qui va partir à l’exploration de différents blocs, on va voir ! ;-)

Pl/PgSQL: Noms de variables dynamiques

Si dans un trigger vous voulez récupérer un champ qui change à chaque fois (nom dynamique), ou plus généralement si vous voulez récupérer la valeur d’un champ xxxxxx d’un RECORD, il faut utiliser EXECUTE. Soient:

  • NEW, la nouvelle ligne (automatiquement créé avec les triggers sur INSERT et UPDATE)
    Note: C’est une variable de type RECORD. Ainsi, vous pouvez la remplacer par n’importe quel autre RECORD.
  • v_critere, le nom du champ à récupérer
  • v_value, la variable dans laquelle on veut mettre la valeur
  • monschema.matable, le nom de la table qui correspond au RECORD.
EXECUTE 'SELECT (' || quote_literal(NEW) || '::monschema.matable).' || v_critere INTO v_value;

Ainsi, si v_critere = id_somethink, alors la valeur du champ “id_somethink” du RECORD sera placée dans la variable v_value. “Tout simplement” :-)

Merci beaucoup à Dimitri et Guillaume de la liste PostgreSQL pour m’avoir aider à trouver cette solution qui n’est pas implantée malgré le patch proposé.

Copies d’écrans et miniatures de sites : Print-Site

Développé par D-Sites, Print-Site est un service qui vous propose de transformer un site en une image de différentes tailles (taille réelle, miniature de 100×100 à 500×500) de manière instantanée et illimitée.

Il repose sur Webkit, le moteur de rendu le plus respectueux des standards (100% à tous les Acid Test !).

Pour plus d’informations, visitez la page dédiée au projet Print-Site.

Créer des copies d’écran de sites avec votre serveur

Générer des miniatures (ou copies d’écran) de n’importe quel site pour en faire une page de présentation ou pour aider les visiteurs à mieux se repérer dans votre index est quelque chose de plutôt fastidieux si l’on doit le faire soit-même à la main. C’est pourquoi, il existe des solutions pour faire ceci depuis votre ordinateur personnel (sous Debian et ses dérivées – Ubuntu, Xubuntu, etc…) avec (ou sans, avec xvfb) serveur X (graphique).

Information: D-Sites a créer un service nommé Print-Site qui vous permet de créer ces images de sites gratuitement sans aucune installation. Les serveurs de D-Sites s’occupent de tout ! Visitez l’annonce ou la page du projet Print-Site. Continue reading

Passez à l’IPv6 avec votre serveur OVH

Le nouveau protocol d’adressage IP, l’IPv6 n’est pas [encore] mis en place par défaut sur les serveurs loués par OVH. Nous allons donc voir comment installer l’IPv6 sur un serveur ou un RPS.

Le noyau

Pour activer l’IPv6 sur un RPS OVH, il faut avoir un noyau comprenant l’IPv6. C’est-à-dire que si
vous utilisez votre propre noyau, il va falloir le compiler avec le support ipv6, sinon, si vous utilisez
la fonction très puissante de netboot d’OVH, choisissez un noyeau avec « & IPv6 ».

Votre adresse IPv6

OVH offre 264 adresses ip IPv6 par serveur; soit plus que le nombre d’IPv4 possibles ! Pour
connaître la plage IP vous étant accordée, il faut aller dans le manager, puis dans « Récapitulatif »
une fois que vous avez choisi votre serveur. Continue reading

i2c: Pays depuis l’adresse IP (v4 ou v6)

Bonjour à tous,

Voici un système très simple d’utilisation pour connaître le pays d’une adresse IP (quelque soit la version). Pour cela, il vous suffit d’envoyer une requête HTTP à cette adresse :

http://i2c.mes-stats.fr/get?ip={adresse ip}

Où vous remplacez “{adresse ip}” par l’adresse IP réelle.

Pour en savoir plus, je vous invite à visiter la page de description de i2c.

Toutes vos suggestions / remarques sont les bienvenues.

Triggers et clés étrangères

Sous PostgreSQL, il y a plusieurs langages de procédures comme plpgsql pour éxécuter des commandes (surtout SQL) au sein de la base ou pgplsh pour créer des fonctions écrites en shell.

Avec ces langages, on peut écrire des fonctions qui seront appellées via des SELECT ou PERFORM dans le cas d’une éxécution depuis une autre fonction. Cependant, elles ont un autre avantages : elle peuvent être appellées par des triggers. Ce sont, en français, des déclencheurs, c’est-à-dire que c’est fonctions sont appelée avant ou après chaque ajout, modification ou suppression de ligne ou bien avant ou après chaque instruction (qui peuvent contenir plusieurs opérations de modification de ligne).

Les triggers peuvent modifier les données dans le cas d’une modification ou d’une insertion mais peuvent aussi empècher l’éxécution de l’opération dans tous les cas (à condition que le trigger soit paramétré pour être éxécuté avant l’opération sur la ligne). Les triggers après-insertion sont plus utiles qu’ils peuvent en avoir l’air car il permettent de répliquer des informations par exemple, ou de complèter des tables de backups par exemple. De plus, ces triggers AFTER ont connaissance des informations de séquences (clés primaires auto-complètées par exemple). Continue reading