Développement Web
ETL Kettle – Découverte de l’outil d’ETL de Pentaho Data Integration
by Rom's on 24 août 2010, under Architecture, Astuces, Développement Web
Kettle est un outil d’ETL (Extract, Transform, Load) de la suite BI de Pentaho Data Integration. Son principal intérêt est de récupérer diverses sources dans divers formats, de les traiter, de les transformer, et de former un résultat puis d’exporter dans le format souhaité vers une destination souhaitée.
Tout ceci se fait de façon visuelle en créant des étapes et en éditant le détail de chaque étape. (je sais, ça dépasse.. mais comme ça on peut tout voir
)
Il est possible de faire des scripts personnalisés sous forme de script java (javascript)
Exemples de sources et exports possibles :
- Bases de données (37 bases de données disponibles dont MySQL, Oracle, SQLite, PostgreSQL, MS Access, MS SQL Server, Sybase, Firebird SQL, AS/400,…)
- Fichiers (XML, TXT, CSV, PSV, TSV ou autres séparateurs, instructions SQL dans fichier,
- Flux SOAP, REST
- Récupération ou envoi depuis ou vers des FTP/SFTP/FTPS/over SSH2
- Possibilité de dézipper ou zipper des fichiers en entrée ou en sortie
- Envoi / récupération depuis ou vers des e-mails / courriels (suivant sensibilité)
Comme les exemples sont souvent plus parlants, je vais vous donner quelques exemples bien pratiques de choses que l’on peut faire avec un ETL :
- récupérer un fichier XML à 10 niveaux de données depuis un FTP, l’aplatir sous forme de tableau, mettre à jour les données dans une table MySQL puis l’exporter sous forme de fichier CSV et l’envoyer par e-mail
- joindre trois fichiers excel (format XLS) et les entrées en base de données en comparant les sources, en dédoublonnant, et en faisant un fichier par type d’erreur possible
- prendre tout simplement un fichier, renommer des colonnes, en rajouter, normaliser la longueur des champs et le nombre de décimales, enlever les espaces vides et réexporter le tout dans un format souhaité
Les scripts réalisés visuellement sont exportables et installables comme tâches planifiées sur un serveur.
Bon, pour tout ça, je vous conseille de télécharger la version Pentaho Data Integration Spoon 3.2 (http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=spoon+3.2) même si la version 4.0 est sortie il n’y a pas longtemps, justement parce qu’elle est sortie il n’y a pas longtemps (la version windows en téléchargement contient la version linux..)
Je vous mets ici bientôt quelques exemples de scripts que vous puissiez jouer avec.
PHP : Distance en KM grâce à Google Maps API Directions
by Rom's on 21 août 2010, under Développement Web
Petite fonction pour calculer la distance entre un point A et un point B grâce à l’API de Google Maps qui a été récemment ouverte pour les itinéraires (Google Maps API Directions).
Vous pouvez ainsi récupérer la distance d’un trajet, sa durée (temps de trajet), les étapes et l’adresse convertie de départ et d’arrivée (permet de récupérer une adresse postale par rapport à des coordonnées)
Vous avez ainsi la distance réelle en kilomètres par la route et non à vol d’oiseau !
function getDistance($adresse1,$adresse2) {
$url='http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false';
$xml=file_get_contents($url);
$root = simplexml_load_string($xml);
$distance=$root->route->leg->distance->value;
$duree=$root->route->leg->duration->value;
$etapes=$root->route->leg->step;
return array(
'distanceEnMetres'=>$distance,
'dureeEnSecondes'=>$duree,
'etapes'=>$etapes,
'adresseDepart'=>$root->route->leg->start_address,
'adresseArrivee'=>$root->route->leg->end_address
);
}
ATTENTION : GOOGLE ACCEPTE UN NOMBRE LIMITE DE REQUETES (sous peine d’un status : OVER_QUERY_LIMIT). Si vous souhaitez récupérer plusieurs résultats à la suite, Il faut donc soit temporiser les requêtes et en faire une toutes les 100ms (100 millisecondes soit 100000 microsecondes, source : un script exemple de google utilise ce délai), soit suivre une méthode que je vous proposer bientôt ici même (mise en cache). Il est important de le faire dès le départ, j’en ai fait l’amère expérience, mon IP personnelle est blacklistée de façon permanente apparemment.. (suite à deux fois une dizaine de requêtes simultanées, il ne faut pas grand chose…)
Itinéraire et Distance via HTTP (PHP par ex) : l’API de Google Maps a évolué !
by Rom's on 20 mai 2010, under Architecture, DSI, Développement Web
L’exemple en PHP est ici : PHP : distance en kilomètres, durée et étapes du trajet grâce à Google Maps API Directions
Il était amusant de voir que cette fonctionnalité était possible mais qu’elle était juste refusée au niveau de la requête par Google : si vous lisiez via le navigateur le flux JSON, vous y voyiez des informations intéressantes telles que la distance et l’itinéraire pour aller d’un point A à un point B, qu’on aurait tout à fait pu parser. Mais Google le refusait.
Cette annonce n’a l’air de rien : http://googlegeodevelopers.blogspot.com/2010/05/directions-web-service-arrives-at.html mais c’est une révolution pour ceux qui souhaitent intégrer des calculs de distance, ou faire des PDF avec des itinéraires ou ce genre de choses.
Concrètement, le flux que vous recevez ressemble à ceci :
{
« status »: « OK »,
« routes »: [ {
« summary »: « Massachusetts Ave, Massachusetts 2A W et Lexington Rd »,
« legs »: [ {
« steps »: [ {
« travel_mode »: « DRIVING »,
« start_location »: {
« lat »: 42.3585300,
« lng »: -71.0600700
},
« end_location »: {
« lat »: 42.3580200,
« lng »: -71.0604300
},
« polyline »: {
« points »: « ycpaGl|upLdBfA »,
« levels »: « BB »
},
« duration »: {
« value »: 4,
« text »: « 1 minute »
},
(…)
Source : https://mail.google.com/mail/?hl=fr&shva=1#inbox/128b3a8d28ec3fd6
Autres API qui viennent de sortir : http://www.zorgloob.com/2010-05/google-fait-le-plein-dapi/
L’exemple en PHP est ici : PHP : distance en kilomètres, durée et étapes du trajet grâce à Google Maps API Directions
50 conseils e-commerce
by Rom's on 18 mar 2010, under Développement Web
50 conseils e-commerce à (re)découvrir sur ce post
# Présentez vos produits dès la homepage
# Rassurer vos internautes sur toutes les pages
# Votre numéro de téléphone doit être bien visible
# …
Sharding : Partitionner vos données les rend plus rapides d’accès
by Rom's on 27 jan 2010, under Développement Web
Le principe est simple : pour une montée linéaire du nombre de requêtes sur une table, le temps de réponse monte exponentiellement…
A partir de ce simple constat, vous avez compris qu’il est préférable de partitionner vos données soit en faisant plusieurs bases de données, soit en faisant plusieurs tables.
Tous les poids lourds des données utilisent cette méthode : le sharding.
Après cette petite introduction, voici quelques liens :
http://decrypt.ysance.com/2009/05/sharding-partitionnement-optimisation-acces-aux-donnees/
http://www.codefutures.com/database-sharding/
http://highscalability.com/unorthodox-approach-database-design-coming-shard
http://www.pythian.com/news/500/database-sharding-and-the-end-of-raid/
Streaming PHP, lire une vidéo à la volée
by Rom's on 03 nov 2009, under Développement Web
Philflash propose un outil permettant de lire une vidéo en streaming via une application PHP réalisée par Jeroen Wijering et proposé sous licence Creative Commons License (20€ pour usage commercial).
Dernière mise à jour en mai 2008 : http://www.inwayvideo.com/phpflvplayer/src/PHPStreamingSource135.zip
http://www.inwayvideo.com/phpflvplayer/index.html
Tout est paramétrable comme le montre l’exemple :
<head>
<script type= »text/javascript » src= »swfobject.js »></script>
<script type= »text/javascript »>
var attributes = {};var params = {};
// for fullscreen
params.allowfullscreen = « true »;var flashvars = {};
// the video file or the playlist file
flashvars.file = « myvideo.flv »;// the PHP script (1.5 is a recommended value for PHP Streaming for bufferlength)
flashvars.streamscript = « flvprovider.php »;
flashvars.bufferlength = « 1.5″;// width and height of the player (h is height of the video + 20 for controlbar)
// required for IE7
flashvars.width = « 320″;
flashvars.height = « 260″;
// width and height of the video
flashvars.displaywidth = « 320″;
flashvars.displayheight = « 240″;
flashvars.autostart = « true »;
flashvars.showdigits = « true »;// for fullscreen
flashvars.showfsbutton = « true »;// 9 for Flash Player 9 (for ON2 Codec and FullScreen)
swfobject.embedSWF(« phpsflvplayer.swf », « flashcontent », « 320″, « 260″, « 9.0.0″, « playerProductInstall.swf », flashvars, params, attributes);
</script>
</head>
<body>
<div id= »flashcontent »>
</div>
…
</body>
Temps Unix en base MySQL
by Rom's on 30 oct 2009, under Développement Web
Fonction de MySQL injustement ignorée, FROM_UNIXTIME nous permet d’insérer en base un temps UNIX, et permet une sortie de date au format souhaité :
Source : http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
FROM_UNIXTIME(unix_timestamp)
Retourne une représentation de l’argument unix_timestamp sous la forme ‘YYYY-MM-DD HH:MM:SS’ ou YYYYMMDDHHMMSS, suivant si la fonction est utilisé dans un contexte numérique ou de chaîne.
mysql> SELECT FROM_UNIXTIME(875996580);
-> ’1997-10-04 22:23:00′
mysql> SELECT FROM_UNIXTIME(875996580) + 0;
-> 19971004222300Si format est donné, le résultat est formaté en fonction de la chaîne format. format peut contenir les mêmes options de format que celles utilisées par DATE_FORMAT() :
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
-> ‘%Y %D %M %h:%i:%s %x’);
-> ’2003 6th August 06:22:58 2003′
PHP – Suppression des accents en UTF-8
by Rom's on 19 oct 2009, under Développement Web
Si vous voulez remplacer les accents par les lettres équivalentes sans accents, le tout dans un fichier encodé en UTF-8, voici la méthode qu’il faut utiliser.
Explication : l’encodage UTF-8 implique pour chaque caractère parfois plusieurs octets. La fonction strtr regardant la longueur de la chaîne pour dire que telle lettre de la ligne $a correspond à telle lettre de la ligne $b, et « a » étant plus léger que « à » en UTF-8, il convient de passer en ISO le temps de cette transformation pour que les positions correspondent bien.
$a = ‘àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ’;
$b = ‘aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY’;$chaine = utf8_encode(strtr(utf8_decode($chaine), utf8_decode($a), utf8_decode($b)));
Tester un JavaScript sur tous les navigateurs
by Rom's on 26 mai 2009, under Développement Web
Tout est là : http://googletesting.blogspot.com/2009/05/yet-another-javascript-testing.html
Un outil qui teste vos JS sur tous les navigateurs, magnifique
Tableau en Jquery : Tri et Pagination grâce à ce plug-in
by Rom's on 21 avr 2009, under Astuces, Développement Web
Article remis à jour le 26 août 2010
—- NOUVELLE VERSION DE L’ARTICLE —-
Table Sorter 2.0 est une version qui a bien vieilli par rapport à celui de Dator
Il permet de faire des tris directement dans l’interface (au niveau du navigateur client) si les données sont correctes
La démo est sur le site : Table Sorter 2.0
—- ANCIENNE VERSION DE L’ARTICLE —-

A voir, un plug-in Jquery permettant un tri et une pagination dynamique. Je trouve ça énorme.
A diffuser !
Le lien : http://www.sprymedia.co.uk/dataTables-1.4/media/js/jquery.dataTables.js
Doc & démo : http://www.sprymedia.co.uk/dataTables-1.4/example_zero_config.html
La source : http://www.dator.fr/une-datagrid-avec-jquery-gerant-le-trie-et-la-pagination/


