Afficher de l’html généré en Rails 3

Avec Rails 2, pour afficher une variable contenant de l’html (par exemple généré par TinyMCE), rien de plus simple :

Avec Rails 3, c’est un peu plus compliqué. La ligne de code précédente, affichera le texte de la variable brut, sans le style html mais avec les balises en tant que texte. Pour parer à ce problème, deux solutions existent :

Et voilà !

Communication entre Flash, Javascript et l’internaute

Dans une animation flash / swf, intégrée sur une page html, rien de plus simple d’utiliser des fonctions prédéfinies en javascript. Pour cela, il suffit d’écrire en ActionScript :

Plus compliqué, exécuter du code suite à une action de l’internaute dans l’animation flash.

  1. Créer un fichier javascript qui contiendra toutes les fonctions utiles.
  2. Appeler le fichier .js entre les balises <head> du fichier html.
  3. En actionscript, faire appel à la fonction javascript via getURL.

Problème getURL et Internet Explorer

Pour faire appel à du javascript dans flash, on utilise getURL. Parfois, avec Internet Explorer, cette fonction ne marche pas. Pour parer à ce problème, il suffit de remplacer :

par

Bien entendu, il est possible de recommander à nos internautes d’utiliser un véritable navigateur, tel Firefox 😉

Parser une URL avec Ruby

Il est très simple de parser une URL sous Ruby. En parsant l’adresse grâce aux points de séparation, comme pour www.domain.com, l’extension sera le dernier élément du tableau ainsi créé.

Du coup, il devient simple d’affecter une variable de session pour la langue du site en fonction de l’extension du nom de domaine :

Et voilà !

Tri « Sort » avec plusieurs paramètres sur un array en ruby

Ruby permet de réaliser des tris sur les tableaux d’objets de manière simple et rapide :

Mais il peut arriver que ce simple tri ne suffise pas s’il est effectué sur un attribut non unique, par exemple un libellé ou un nom, il faut dans ce cas ajouter un second paramètre pour les cas « d’égalité ».

Ruby permet facilement cela :

Et voilà, votre tableau sera en premier lieu trier par le premier paramètre puis en cas d’égalité l’ordre se fera via le second paramètre.

Boucler sur tous les éléments d’un répertoire en Ruby

La classe Dir en Ruby est très pratique, elle permet d’instancier un objet de type répertoire, et donne ainsi l’accès à plusieurs méthodes (voir la documentation de Ruby).

La méthode foreach qui prend en paramètre d’entrée « le chemin physique du répertoire » permet de boucler sur les éléments présents dans ce dossier :

Maintenant vous savez récupérer des fichiers depuis un répertoire sans sous dossiers.

Si votre répertoire contient aussi d’autres dossiers il faudra pousser un peu votre code en utilisant une fonction récursive permettant de descendre dans les sous dossiers.

Et voilà, il ne reste plus qu’à appeler cette méthode pour lister tous les fichiers de votre dossier.

MySQL import : ERROR 1030 (HY000) at line 88: Got error 139 from storage engine

Lors de l’import d’une base de données MySQL au format sql avec la commande,

L’erreur suivante s’affiche :

Voici un lien intéressant :

http://bugs.mysql.com/bug.php?id=25945ENGINE=MYISAM

Il s’agit d’un bug sur InnoDB, le moteur, car la requêtre est trop long, et il faut la V6 de MySQL…

Du coup dans le script sql, il faut aller sur le CREATE TABLE de en question et remplacer :

ENGINE=InnoDB

Par :

ENGINE=MYISAM

Attention, MYISAM est l’ancien moteur de la base de données.

L’import fonctionne à présent.

mise en place d’un captcha

Nous allons créer un captcha simple basé sur la création d’une image via Image Magick et notamment la possibilité de créer une image contenant une chaîne.

Le principe est simple, nous générons une chaîne aléatoire qui sera stockée dans une variable de session et avec laquelle nous allons créer une image. Puis nous vérifierons que l’internaute ait bien écrit dans son formulaire la chaîne demandée.

Sous Ruby on Rails, dans l’action du contrôleur qui appelle le formulaire sur lequel nous souhaitons placer le captcha :

Dans le formulaire, il suffit d’appeler l’image générée précédemment.

Et dans l’action du contrôleur qui récupère le formulaire, vérifier la valeur du champ :

Et voilà !

Redirections 301 de vos anciennes urls

Votre url ne vous plaisez plus, vous avez décidé de la modifier. Oui mais sans perdre le référencement que celle-ci avait engendrée, c’est pourquoi vous avez choisi la fameuse redirection 301 qui indique aux moteurs (notamment notre cher ami Google) que votre page a définitivement « déménagée ».

Il existe différentes façons de réaliser cette redirection 301 :

  • via le htaccess
  • via le langage de programmation utilisé

Htaccess

Le fichier .htaccess est la solution de base et à mon sens la plus propre car interprétée avant toutes autres choses.

Pour cela vous pouvez réaliser la redirection 301 de 3 manières différentes. Si votre url est de la forme http://www.mon-site.com/mon-ancienne-url, le plus simple est d’utiliser :

RedirectPermanent /mon-ancienne-url http://www.mon-site.com/ma-nouvelle-url

Si votre url est de la forme http://www.mon-site.com/mon-ancienne-url mais que cette dernière sera réécrite pour que le moteur de votre site puisse la comprendre, vous ne pouvez plus utiliser la méthode ci-dessus mais celle-ci :

RewriteRule ^mon-ancienne-url(.*)$ http://www.mon-site.com/ma-nouvelle-url.html$1 [QSA,L,E,R=301]

Enfin si votre url contient des paramètres (indications placées derrière le ? de l’url) déterminants pour la redirection vous pouvez utiliser la méthode qui suit :

RewriteCond  %{QUERY_STRING} ^le-parametre-a-matcher$
RewriteRule ^le-nom-du-fichier-execute\.son-extension$ http://www.mon-site.com/ma-nouvelle-url [L,E,R=301]

Remarque 1 : RedirectPermanent n’utilise pas d’expressions régulières donc pas besoin d’échapper les caractères spéciaux (« . », « ? », …). Cependant RewriteCond et RewriteRule utilisent tous les deux les expressions régulières donc pensez bien à échapper vos caractères spéciaux avec « \ » devant.

Remarque 2 : Suivant où est placé votre site internet et votre configuration de serveur vous devrez peut-être ajouter ces trois lignes :

Options +FollowSymLinks
RewriteEngine On
RewriteBase /sous-dossier-du-site/

Le langage de programmation utilisé

Une seconde solution consiste à laisser « passer » la page aux niveaux du htaccess pour mieux la rediriger lors de votre première instruction du langage que vous utilisez (Ruby on Rails, PHP, …). Nous vous indiquerons ici 2 exemples, en Ruby on Rails et en PHP.

Ruby on Rails

Le framework Ruby on Rails permet, entre bien d’autres choses, de réaliser ces redirections 301. Il suffit pour cela d’indiquer l’ancienne url dans les routes et de l’envoyer vers une action de votre contrôleur qui redirigera la page de façon élégante en 301 (3 manières possibles suivant les cas).

Dans le fichier routes.rb indiquez :

map.connect '/mon-ancienne-url',
:controller => 'mon-controller-s', :action => 'redirector', :id => '/ma-nouvelle-url'

Attention à l’ordre des routes pour que celle-ci soit bien prise en compte.

Puis dans votre contrôleur indiquez l’action redirector :

ou encore :

ou bien :

PHP

Pour le php, le système est légèrement différent pas de routes donc il faut placer le code qui va suivre avant toutes insertions de code HTML, au risque de ne pas pouvoir effectuer la redirection 301.

Pour cela le mieux est de se placer juste après l’ouverture de la balise php et d’insérer dans votre condition (et oui à vous de regarder l’url pour savoir si vous devez la rediriger ou pas et vers quelle nouvelle adresse) :

ou bien :

La deuxième écriture étant plus complète que la première.

Voilà bon courage.

Envoyer un email avec pièce jointe en PHP

Vous voulez envoyer un pdf, une image ou tout autre document en pièce jointe d’un email dans un script PHP. Pour cela nous allons utiliser la classe PHP mailer : class.phpmailer.php .

Tout d’abord, vous devez inclure la classe phpmailer dans votre script puis l’utiliser comme ci-après :

Ceci fonctionne plutôt bien, elle a été trouvée sur developpez.com.