Gestion Favicon sur les navigateurs

Généralement déposer un fichier favicon.ico à la racine de votre site permet à celui-ci de l’utiliser automatiquement comme favicon.

Exception sous IE si le .ico n’est pas créé correctement, dans ce cas le favicon ne s’affiche pas.

Une solution efficace permettant de récupérer un favicon lisible par IE, sur ce site http://www.convertico.com

Après avoir remplacé votre ancien favicon, un petit coup de « vider votre cache » et normalement plus de soucis.

Nouvelles typos sur le Web

Vous en avez assez de Arial, Verdana et Trebuchet sur vos sites web ?  Alors passez à @font-face ! Très simple d’utilisation à l’aide du site www.fontsquirrel.com.

Démonstration :
– Allez sur le site www.fontsquirrel.com/fontface/generator, ajoutez une typo (au format otf) puis générez votre kit .
– Dé-zippez ce dernier et ouvrez le fichier stylesheet.css. Copiez la propriété @font-face dans votre feuille de style habituelle :
@font-face {
font-family: "Typo";
font-style: normal;
font-weight: normal;
src: url("typo.eot?") format("eot"),
url("typo-webfont.woff") format("woff"),
url("typo-webfont.ttf") format("truetype"),
url("typo-webfont.svg#webfontrTwnpuIE") format("svg");
}

– Copiez les fichiers de police fournis dans le zip (formats eot, woff, ttf et svg) dans le même répertoire que votre fichier css.

Et voilà, il n’y a plus qu’à tester !

No more IE 6 en Ruby

Internet Explorer 6 est bien ancien et ne respecte pas énormément de standards du web, il convient donc de ne plus continuer à intégrer son site internet pour ce genre de navigateur. Il est donc possible de proposer à un utilisateur possédant une telle version d’Internet Explorer de changer et mettre à jour vers un navigateur plus récent. Pour cela il suffit de détecter que le navigateur utilisé est bien IE 6. Ruby propose cette détection via le code suivant :

<% if request.user_agent.try(:include?, « MSIE 6.0 ») %>
Votre message et un lien pour mettre à jour le navigateur.
<% end %>

Comme vous pouvez le remarquer le code proposé vous permet donc de détecter le navigateur utilisé par l’internaute, il suffira de changer la chaine à rechercher pour les autres navigateurs. Ensuite, une fois que la détection est vérifiée, il vous suffi d’afficher un joli message invitant l’internaute à modifier la version de son navigateur avec un lien vers cette nouvelle version et le tour est joué.

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 :

&lt;% chaine = "
 
 
 
<div>Bonjour !</div>
 
 
 
 
 
" %&gt;
&lt;%= chaine %&gt;

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 :

1. &lt;%=raw chaine %&gt;
2.&lt;% chaine = "
 
 
 
<div>Bonjour !</div>
 
 
 
 
 
".html_safe %&gt;
  &lt;%= chaine %&gt;

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 :

getURL("javascript:alert('test')");

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.
getURL("javascript:nom_de_la_fonction_javascript();");

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 :

getURL("javascript:nom_fonction();");

par

flash.external.ExternalInterface.call("function(){nom_fonction();}");

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éé.

extension = request.env['HTPP_HOST'].split('.').last

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 :

session[:lang] = request.env['HTPP_HOST'].split('.').last

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 :

nom_du_tableau.sort{|x,y| x.attribut_pour_trier <=> y.attribut_pour_trier}

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 :

nom_du_tableau.sort{|x,y| [x.attribut_pour_trier, x.attribut_pour_trier_cas_egalite] <=> [y.attribut_pour_trier, y.attribut_pour_trier_cas_egalite]}

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 :

Dir.foreach(chemin_physique_du_repertoire) do |fichier|
  fichier
end

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.

def explore_dossier(chemin_physique_du_repertoire, fichier)
   if File.directory?(chemin_physique_du_repertoire + "/" + fichier) &amp;&amp; fichier != "." &amp;&amp; fichier != ".."
      Dir.foreach(chemin_physique_du_repertoire + "/" + fichier) do |fichier|
         explore_dossier(chemin_physique_du_repertoire, fichier)
      end
   else
      fichier
   end
end

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