Inspiration Geek

Blog de geek sur les technologies web

Aller au contenu | Aller au menu | Aller à la recherche


jeudi, septembre 3 2009

Avoir la fonction Translate dans Mysql

Dans un de mes projet, j'ai eu besoin de transformer des résultats sur une base de données,

le but était de convertir tout les caractères accentués vers leurs équivalents (non accentués) et de remplacer les espaces par des tiret.

Exemple: à vers a, é vers e, ê vers e, ect ..., Facile j'utilise la fonction Translate ...

mysql> SELECT translate('très accentués', 'éèê', 'eee');
ERROR 1305 (42000): FUNCTION maBase.TRANSLATE does NOT exist

Seulement voila cette fonction n'existe pas sous Mysql.

Comme il était hors de question de passer par php pour faire cette transformation, j'ai googler, binger ...

et rien sur le net sauf des fainéants qui n'ont pas voulu se prendre la tête et sont passer par php ou autre language de script.

J'ai donc décider de créer cette fonction très utile que je vous livre ci-dessous et qui va servir a d'autre personnes.

# Modification du caractère de fin d instruction
DELIMITER |
 
# On fait passer le jeux de caractères sur utf8 sinon CHAR_LENGTH('â') = 2 au lieu de 1
SET NAMES utf8;
 
# Création de la function translate
 
CREATE FUNCTION translate(V_string VARCHAR(255), V_from VARCHAR(255), V_to VARCHAR(255))
RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
 
DECLARE i INT;
SET i = CHAR_LENGTH(V_from);
 
WHILE i > 0 DO
 SET V_string = REPLACE(V_string, SUBSTR(V_from, i, 1), SUBSTR(V_to, i, 1));
 SET i = i - 1;
END WHILE;
 
RETURN V_string;
 
END;
|
 
# Très important, Remise du delimiter standard
 
DELIMITER ;

Et maintenant:

mysql> SELECT translate('très accentués', 'éèê', 'eee');
+---------------------------------------------+
| translate('très accentués', 'éèê', 'eee') |
+---------------------------------------------+
| tres accentues                                   |
+---------------------------------------------+
1 row IN SET (0.00 sec)

Un autre exemple plus complet:

# Appel de la function
mysql> SELECT translate('Une très bonne initiative et à bientôt', 'ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝáàâäãåçéèêëíìîïñóòôöõúùûüýÿ', 'AAAAAACEEEEIIIINOOOOOUUUUYaaaaaaceeeeiiiinooooouuuuyy');
+------------------------------------------------------------+
| translate('Une très bonne initiative et à bientôt', ...... |
--------------------------------------------------------------+
| Une tres bonne initiative et a bientot                        |
+------------------------------------------------------------+
1 row IN SET (0.00 sec)

lundi, août 10 2009

Mise a jour de flash Uploader en version 1.1

Pour ceux qui s'impatiente, je met a disposition la dernier version de flash Uploader en version 1.1 corrigé par moi-même.

pour Plus d'information voir le blog de l'auteur jeanphilippe

Téléchargement:

flashUploader-1.1.zip

A Propos de flash Uploader:

FLASH UPLOADER permet d'effectuer des uploads de fichiers en flash via
un script php.

vendredi, juillet 3 2009

Utiliser les DOM Workers dans vos applications web

Les DOM Workers permettent d'exécuter des scripts en tache de fond afin de ne pas bloquer le navigateur avec des traitement lourd.

Pour utiliser les DOM Workers il faut avoir un navigateur dernière génération comme Firefox 3.5.

Vous pouvez facilement exécuter des traitements en parallèle grâce aux DOM Workers.

voici un exemple simple qui permet de compter de 1 à 10 000:

<script type="text/javascript" language="javascript">
var myCountWorker = new Worker('my_count_worker.js');
 
myCountWorker.onmessage = function(event)
{
document.getElementById("worker_result").textContent = event.data;
};
function count()
{
myCountWorker.postMessage(1);
}
function stopWorker()
{
myCountWorker.terminate();
}
</script>

<a href="#" onclick="count();">Compter jusqua 1 000</a> &nbsp;&nbsp;
<a href="#" onclick="stopWorker();">Stop</a><br />

Le fichier my_count_worker.js

onmessage = function(event)
{
var n = parseInt(event.data);
 
for(var i = n; i <= 1000; i++)
{
postMessage(i);
}
};

Demo

Compter jusqua 1 000   
Résultat
 

mercredi, juillet 1 2009

PHP 5.3 enfin disponible en version finale

PHP 5.3 était très attendu par les développeur comme moi.

Plein de choses ont été ajouter pour la POO et de meilleurs performances,

PHP 5.3 apporte de nouvelle fonctionnalités et permet de préparer les développeurs a un passage
sans douleur vers PHP 6 en commençant a laisser tomber les mauvaise habitudes dès maintenant.

voici un récapitulatif des fonctionnalités.

- Les namespaces
- Nouveau mot-clef "use"
- Lien static d'une méthode à une classe
- Les appels static variable
- Un nouveau driver MySQL natif
- Plus de fonctions OpenSSL
- Amélioration du support des paramètres en ligne de commande
- Le Garbage collection (ramasse miettes) pour libérer la mémoire
- Nouvelle classes dans la SPL (SplStack, SplQueue ...)
- Correction de bugs

en attendant un article plus détailler,

Voici le guide de migration pour passer de PHP 5.2.x vers PHP 5.3.x


mercredi, juillet 1 2009

Sortie de firefox 3.5 final

Après une longue attente Firefox 3.5 est sortie hier vers 17h00 précisément.

Firefox 3.5 en détaille.

- Moteur de rendu HTML Gecko 1.9.1 améliorer et plus rapide,
- Analyse spéculative pour un affichage plus rapide du contenu.
- Gère les balises HTML5 <video> et <audio> et lit nativement les fichiers encodé en Ogg Theora
  et les fichiers audio encodé en Vorbis,
- Le Drag and drop HTML 5
- Intègre un mode de navigation privée.
- Moteur JavaScript TraceMonkey pour de meilleures performances
- L'API Géolocalisation
- Gestion native de JSON, et des web worker threads (exécution de script en tache de fond).
- Support CSS pour les polices téléchargeables (@font-face @rule)
- Les sélecteurs de requêtes JavaScript
- Le stockage local HTML5 et le stockage hors-ligne d'application.
- Le texte <canvas>
- Les profils ICC (color correction) et les transformations SVG
- Support CSS2 et CSS3
- Media queries (exemple: "device-aspect-ratio: 16/9" utiliser un css spécifique pour les écrans 16/9 ème)

et voici la réponse de Mozilla a Microsoft concernant le comparatif IE VS Firefox fait par Microsoft montrant que IE et meilleure et plus sure.






Télécharger Firefox sans plus attendre !

mardi, juin 23 2009

HTML5 : Exemple d'utilisation de l'API Geolocalisation dans firefox 3.5

HTML5 apporte le support de l'API Geolocalisation introduite par le W3C qui permet au pages web d'interroger le navigateur sur la position de l'utilisateur.

L'utilisation de cette API est disponible depuis firefox version 3.5 mais également dans Fennec la version de firefox pour mobile, d'où l'intérêt.

voici un code minimaliste pour utiliser cette API

<!DOCTYPE html>
<html>
<head>
<title>api geolocalisation "Ma Position"</title>
<script type="text/javascript">
function getPosition(position)
{
  var infoposition = "Latitude: "+position.coords.latitude+"<br />";
  infoposition += "Longitude: "+position.coords.longitude+"<br />";
  infoposition += "Altitude: "+position.coords.altitude+"<br />";
 
  document.getElementById("myposition").innerHTML = infoposition;
}
 
function myPosition()
{
  navigator.geolocation.getCurrentPosition(getPosition);
}
</script>
</head>
<body>
<a href="#" onClick="myPosition()">Afficher ma position</a>
<div id="myposition"></div>
</body>
</html>

Le résultat

Latitude: 37.41857
Longitude: -122.08769
Altitude: 42

simple non ?

Pour des questions de sécurité, une alerte a la manière du bloqueur de popup vous demande si vous autoriser firefox a communiquer votre position a la page en question.

lundi, juin 22 2009

Une formation google Analytics gratuite ! "Google Analytics Individual Qualification"

Désormais google propose aussi des formations sur Google Analytics et un examen Google Analytics Individual Qualification (IQ).

La formation Individual Qualification s'effectue en ligne et est gratuite,

voici ce que propose la formation en ligne:

1. Acquisition

   * Sitemaps et Optimisation des moteurs de recherche (SEO)
   * Stratégie reposant sur l'évaluation des performances pour le marketing des moteurs de recherche
   * Conseils de ciblage et de suivi AdWords
   * Optimisation de votre retour sur investissement AdWords grâce à Google Analytics
   * Publicité intelligente pour PME

2. Analyse des comportements sur site

   * Cinq conseils pour rédiger des titres Web efficaces
   * Cinq objectifs pour le contenu rédactionnel d'un site Web
   * La segmentation de vos visiteurs
   * Concevoir un site Web pour augmenter votre retour sur investissement
   * Six étapes pour accroître votre taux de conversion

3. Résultats

   * Présentation de l'Optimiseur de Site
   * Conseils d'utilisation de l'Optimiseur de Site
   * Utilisation simultanée de l'Optimiseur de Site et de Google Analytics
   * Temps de consultation comme objectif de conversion
   * Test avec du contenu dynamique

et des vidéos (en anglais).

a l'issu de cette formation, vous pouvez passer l'examen IQ (Individual Qualification), pour obtenir cette examen, il faudra payer 50 dollars américains, répondre a 70 questions en moins de 90 minutes et obtenir 75% de bonnes réponse.

Un vrais challenge.

Pour plus d'information consulter cette page

lundi, juin 22 2009

Migration d'un projet symfony 1.0 vers symfony 1.2

Je présente ici ma méthode pour migrer un projet symfony 1.0 vers symfony 1.2.

En effet, après avoir passer des heures a essayer d'upgrader un projet avec le script fourni en essayant de passer a la version 1.1 puis de 1.1 vers 1.2

l'opération a été un échec, j'ai donc décider de le faire a la main et cela ma pris quelque heures, je vais vous détailler ici la procédure pas à pas.

commençons notre upgrade !

Tout d'abord il faut installer la version de symfony 1.2 que vous trouvez ici,

ensuite créer un nouveau projet

# Exemple:
mkdir ~/projets/monProjet1.2
cd ~/projets/monProjet1.2
symfony generate:project monProjet1.2

Installer les plugins dont dépend votre projet que vous trouvez ici

# Exemple:
symfony plugin:install sfEasyGMapPlugin

ensuite copier votre schema vers le nouveau projet

# Exemple:
cp ~/projets/monProjet1.0/config/schema.yml ~/projets/monProjet1.2/config/schema

n'oublier pas de modifier les paramètres d'accès à la base de données

# Exemple:
nano ~/projets/monProjet1.2/config/propel.ini
nano ~/projets/monProjet1.2/config/databases.yml
# Ou
symfony configure:database mysql:host=localhost;dbname=example root password

créer les applications frontend et backend

symfony generate:app --escaping-strategy=on --csrf-secret=UneClefSecrete frontend
symfony generate:app --csrf-secret=UneClefSecrete backend

arriver ici, copier vos modules, templates, data et modèles vers le nouveau projet

# les modules
cp -r ~/projets/monProjet1.0/app/frontend/modules/* ~/projets/monProjet1.2/app/frontend/modules/
cp -r ~/projets/monProjet1.0/app/backend/modules/* ~/projets/monProjet1.2/app/backend/modules/
# les templates
cp -r ~/projets/monProjet1.0/app/frontend/templates/* ~/projets/monProjet1.2/app/frontend/templates/
cp -r ~/projets/monProjet1.0/app/backend/templates/* ~/projets/monProjet1.2/app/backend/templates/
# les images
cp -r ~/projets/monProjet1.0/web/images/* ~/projets/monProjet1.2/web/images/
# les css
cp -r ~/projets/monProjet1.0/web/css/* ~/projets/monProjet1.2/web/css/
# les javascript
cp -r ~/projets/monProjet1.0/web/js/* ~/projets/monProjet1.2/web/js/
# les data et fixtures si vous en avez
cp -r ~/projets/monProjet1.0/data/* ~/projets/monProjet1.2/data/
# les modèles (ici attention a ne pas recopier les sous répértoire "map" et "om") il faut utilisé "*.php" pour ne copier que les fichiers php
cp ~/projets/monProjet1.0/lib/model/*.php ~/projets/monProjet1.2/lib/model/

pour les autre fichiers je vous conseil de reporter vos modifications a la main avec votre éditeur préférer

nano ~/projets/monProjet1.2/app/frontend/config/app.yml
nano ~/projets/monProjet1.2/app/frontend/config/routing.yml
nano ~/projets/monProjet1.2/app/frontend/config/security.yml
nano ~/projets/monProjet1.2/app/frontend/config/settings.yml
nano ~/projets/monProjet1.2/app/frontend/config/view.yml
# ect ...

et puis pour finir, exécuter les commandes suivante pour compléter votre migration, puis réparer les erreurs que vous pouvez rencontrer.

symfony propel:build-schema
symfony propel:build-sql
symfony propel:insert-sql
symfony propel:build-model

voila c'est fini !

Si vous avez des questions n'hésitez pas.

mardi, juin 16 2009

Firefox 3.5 version RC3 disponible !

La sortie de Firefox 3.5 est très attendu.

Cette version apporte beaucoup d'amélioration concernant les standard du web et des corrections de bug,

comme :
- L'API de glisser/déposer d'HTML5 qui permet de gérer le glisser/déposer d'éléments à l'intérieur et entre des sites web.
- La gestion des polices téléchargeable en css.
- La gestion des workers DOM afin de permettre une gestion multithreadée dans les applications web.
- l'API Geolocation, pour d'obtenir des informations concernant l'emplacement de l'utilisateur.
- Le pré-chargement DNS, qui effectue la résolution de noms de domaine à l'avance pour les liens contenus dans la page afin de gagner du temps.
- Le support natif de JSON
- Le support des balises <video> et <audio>
- Le support des propriétés des CSS 2.1 et 3.0 !

et plein d'autres améliorations.

vous pouvez télécharger la RC3 http://www.mozilla.com/en-US/firefox/all-rc.html

sous Ubuntu
sudo apt-get install firefox-3.5