nyroBlog
Bannière NyroBlog, par Emi
Image par Emi - ?

Tag : Travail


Passage à Netvibes

NetvibesCa y est, je suis passé à Netvibes !

Avant, j'utilisai RSS Xpress qui marche parfaitement, mais qui a l'inconvénient d'être un logiciel. Or, avec tous les changements d'endroits, d'ordinateur, j'avais besoin de ce système. Je n'avais jamais franchi le pas je ne sais pas trop pourquoi.

Mais voilà, c'est fait depuis 2 heures que j'y suis passé, et je ne regrette pas. J'ai pu importer tous mes flux en passant par un fichier OPML, chaque catégorie dans un nouvel onglet.

Un petit tour dans les options de Netvibes, quelques changements de la mise en page (le thème Coriander), l'ajout de modules supplémentaires pour les emails, la météo locale, un flux RSS de podcasts... Bref, j'adore, et je pense que je vais y rester.

Je l'ai préferé à iGoogle pour les paramétrages plus fins et plus adapté. Je n'ai pas véritablement testé WebWag

Reste plus qu'une version mobile complète qui marche sur mon P990i avec Opéra. La version mobile (m.netvibes.com n'affiche que l'onglet général et mobile, s'il existe).

Si vous hésitez encore, n'attendez plus ! L'essayer, c'est l'adopter.

PS, petit bonus : Pour indiquer que tous les flux RSS d'un onglet sont lus, cliquez sur le nombre entre parenthèses ! (Merci Florian pour ce petit truc)

Backup d'une base de donnée MySQL

Quand on veut faire une sauvegarde d'une base de donnée MySQL, il n'y a pas 36 solutions.

Soit on prend son courage à 2 mains et on décide de se faire un script de backup manuellement. C'est long, et on est pas à l'abri d'oublier quelque chose, si on ajoute des tables par la suite.

Soit on se dit qu'une base de données, ce n'est que des fichiers et on décide de sauvegarder dans un tar gzippé le dossier contenant ces fichiers. Pour les remettre, c'est moins évident.

Soit on cherche un peu dans la doc MySQL et dans les commandes Bash commençant par mysql, et on découvre des choses toutes faites, qui, en une ligne, nous permettent de faire la sauvegarde de toute une base, voir de plusieurs.

Vous l'attendez tous, voici la ligne de commande :

mysqldump --user=LOGIN --password=PASSE --add-drop-table NOMBASE

Cette commande vous écrit toutes les requêtes MySQL à exécuter pour retrouver votre base de données. Le --add-drop-table permet d'ajouter les instructions de suppression de tables, si elles existent.

Là, je vous ai donné pour ne sauvegarder qu'une seule base. Pour en sauvegarder plusieurs, il faut remplacer NOMBASE par --databases NOMBASE1 NOMBASE2 NOMBASE3.

Pour sauvegarder toutes les bases de données, il faut remplacer NOMBASE par --all-databases.

Bon avec tout ça, vous allez avoir toutes les requêtes qui vont défiler sur votre écran. Pas très pratique pour restaurer... Un simple pipe vers un fichier pour sauvegarder le tout et le tour est joué :

mysqldump --user=LOGIN --password=PASSE --add-drop-table NOMBASE > FICHIER.sql

Enfin, pour restaurer, vous pouvez utiliser la technique que je vous ai déjà donné pour les grosses requêtes MySQL.

Thunderbird 2 est arrivé

Thunderbird 2La dernière version du logiciel de messagerie de Mozilla est sortie !

A noter (et ce n'est pas préciser tellement c'est évident pour Mozilla) que lors de l'installation de la dernière version, rien ne vous est demandé pour réutiliser les paramètres d'avant. En fait, c'est automatique !

Dans le fonctionnement général, pas de grands changements. On retrouve les mêmes fonctionnalités organisées de la même manière, avec les images des boutons qui ont un peu changé, on ne s'en plaindra pas.

Les changements notoires sont surtout des ajouts de fonctionnalités qui vont plaire à plus d'un (et moi le premier) :

  • Au lieu de ne pouvoir afficher que les dossiers normaux comme avant, on peut maintenant choisir aussi Dossiers non lus, Dossiers préférés (un simple clic droit pour ajouter ou supprimer un dossier de cette catégorie) et Dossiers récents. Seul petit regret, pour passer de l'un à l'autre, on a seulement droit aux boutons suivants/précédents; un clic ouvrant une liste déroulante serait peut-être à peine plus rapide.
  • Possibilité de stocker une recherche comme dossier virtuel : cela vous permettra en 1 clic de retrouver les résultats de cette recherche, bien évidemment mise à jour. Vous faites une recherche, et en bas de la fenêtre, un nouveau bouton est apparu Sauver comme dossier virtuel. Un petit détail : lors de la recherche, vous ne pouvez sélectionner qu'un dossier, mais lorsque vous enregistrer la recherche, vous pourrez sélectionner tous les dossiers en cliquant sur Choisir. Dommage qu'il ne soit pas intégrer directement dans la recherche.
  • Les alertes de messages plus fournies en informations, avec l'expéditeur, le sujet et le début du mail intégrés; ça évitera d'être obligé de retourner voir de quoi il s'agit alors qu'on travaille sur quelque chose et que le mail en question peut attendre. Lorsque vous avez plusieurs emails en même temps, on affiche tout ça pour le premier mail, et pour les suivants, seulement le titre et l'expéditeur.
  • Vous avez maintenant la possibilité de mettre vos propres étiquettes sur les messages (tag), en paramétrant la couleur. Couplez avec le dossier virtuel de recherche, cette fonctionnalité va faire gagner un temps fou ! De plus, on peut tagger à la volée, en mettant en place des filtres lors de l'arrivée des messages.

Voilà pour mes réactions à chaud sur Thunderbird 2.0.0.0.

Validation W3C et JavaScript

Je me prenais la tête pour faire passer la validation W3C en XHTML 1.0 Transitional d'une page contenant un formulaire et ses vérifications javascript.

J'avais des erreurs dans mon javascript, sur cette ligne :

for (var i=0;i

Une simple boucle for en somme. La validation me disait que l'attribut length n'existait pas et que je n'avais pas le droit d'utiliser de ; à cet endroit.

En réfléchissant, j'ai compris qu'il m'interprétait mon comme un début de balise.

Donc, la solution pour pallier à ça est toute simple : il suffit d'inverser le test ! Ma boucle devient donc :

for (var i=0;champ.length>i;i++) {

Super simple, mais tellement pratique !

PHP/MySQL : Faire une pagination sur un tri aléatoire

J'ai été confronté tout à l'heure à un problème simple, mais qui peut poser problème : On vous demande de lister les éléments d'une table MySQL sur une page, et d'en faire une pagination. Tout ce qu'il y a de plus normal. Pour faire ça, vous allez jouer sur les LIMIT de votre requète.

Exemple :

SELECT * FROM utilisateur LIMIT 20,10

Où on afficherai la seconde page des utilisateurs, avec 10 affichages.

Maintenant, imagninez qu'on veuille trier cette requête selon les nom des utilisateurs. Il suffirait de faire :

SELECT * FROM utilisateur LIMIT 20,10 ORDER BY nom ASC

Bon, jusque là, pas de problème particulier.

Maintenant vous ne voulez pas un affichage trié par nom, mais aléatoire. Intuitivement, on ferait simplement :

SELECT * FROM utilisateur LIMIT 20,10 ORDER BY RAND()

Ce qui n'est pas totalement faux. Le problème avec cette solution, c'est que lorsque vous allez changer de page, le tri va changer, et il sera donc impossible aux visiteurs d'afficher tous les noms, ce sera complètement cahotique.

La solution consiste à générer un nombre aléatoire en PHP, à l'enregistrer en session, et à le passer à la requête MySQL, dans les parenthèses du RAND, et le tour est joué. Ainsi le nombre alétoire généré sera toujours le même pour la session en cours, et on se retrouver avec le même tri sur toutes les pages.

Le code pour générer et enregistrer le nombre aléatoire en PHP :

$rand = $_SESSION['rand'];
if (empty($rand)) {
srand((float)microtime()*1000000);
$rand = "0.".rand();
$_SESSION['rand'] = $rand;
}

Bien sûr, il faudra que la session soit démarrer avec session_start() plus haut et qu'aucun header n'ai déjà été envoyé (ou bien utiliser ob_start())

Enfin, la requête MySQL devient :

SELECT * FROM utilisateur LIMIT 20,10 ORDER BY RAND($rand)

Et voilà, vous avez une belle pagination avec un tri aléatoire.

English Version of this post