Billets avec le tag “astuce”

Intégrer vos fichiers javascripts et CSS par vue ou partial dans Rails

Un code HTML valide nécessite d’intégrer les fichiers javascripts et CSS uniquement entre les balises <header> de vos pages. Il arrive pourtant fréquemment que l’on ai besoin d’un fichier CSS ou javascript propre à une vue ou à un partial. Dans ce cas nous serions tenter de simplement intégrer les fichiers javascripts et CSS dans ce fichier. Pourtant il existe des alternatives simples et efficaces afin de s’assurer que ces inclusions soient bien faites entre les balises <header> de votre page.

Vous pouvez par exemple utiliser les plugins Styler et Javascripters qui vous demande de renommer vos fichiers en fonction des nom d’actions ou de contrôleurs ou vous voulez qu’ils soient inclus. Celui-ci présente à mon avis des gros inconvénients puisque si vous souhaitez inclure 2 fichiers CSS spécifiques, vous êtes obligé de les concaténer dans un seul fichier ce qui n’est, vous en conviendrez, pas toujours très “DRY” (Don’t Repeat Yourself - Ne vous répétez pas).

Needy controllers est un autre plugin qui vous permet de spécifier les fichiers javascripts et CSS à inclure directement dans vos contrôleurs. Il gère les propriétés :only et :except pour vous permettre de gérer finement les inclusions. Bien que ce plugin soit très souple, il ne me convient pas puisqu’il lie très fortement les vues (les fichiers CSS et javascript) aux contrôleurs. Il ne respecte donc pas les principes de séparation des couches du modèle MVC.

La solution que j’ai retenu repose sur des méthodes standards de Rails : content_for et yeld. La méthode content_for permet de spécifier un bloc qui sera stocké pour être ensuite affiché par la méthode yeld. Vous comprenez aisément que ces méthodes peuvent être mises en oeuvre pour intégrer vos fichiers javascripts et CSS en respectant les principes DRY et MVC.

Pratiquement, insérons un appel à yeld entre les balises <head> de notre layout :

<head>
	<%= stylesheet_link_tag 'demo' %>
	<%= yield "page_header" %>
</head>

puis dans les vues ou vous avez besoin d’utiliser des fichiers CSS ou javascript spécifiques, il ne vous plus qu’à utiliser le code suivant :

<% content_for("page_header") do %>
	<%= stylesheet_link_tag 'monfichier.css' %>
	<%= javascript_include_tag 'monfichier.js' %>
<% end %>

Cette méthode est bien sûr réutilisable dans beaucoup d’autres situations !

Articles relatifs

Déplacer un blog sous Wordpress vers un nouveau domaine ou dans un nouveau répertoire

Je ne parle pas dans ce billet du détail du transfert des fichiers et de la base de données, ceci est très classique, il s’agit simplement de penser à bien modifier le fichier wp-settings.php à la racine du blog avec les nouveaux paramètres de base de données.

Wordpress stock toutes ces configurations dans la base de données, il s’agit donc principalement d’exécuter les bonnes requêtes afin de faire les mises à jours. La première met à jour la configuration :

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://www.ancien-domaine.com', 'http://www.nouveau-domaine.com') WHERE option_name = 'home' OR option_name = 'siteurl';

On modifiera ensuite les URLs des billets grâce à la requête suivante :

UPDATE wp_posts SET guid = REPLACE(guid, 'http://www.ancien-domaine.com','http://www.nouveau-domaine.com');

Ainsi que les éventuels liens entre billets :

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://www.ancien-domaine.com', 'http://www.nouveau-domaine.com');

Votre blog doit désormais fonctionner à peu près correctement, toutefois si vous utilisez l’URL rewritting vous devez vous rendre dans l’administration de Wordpress et recréer le fichier .htaccess en vous rendant dans "Réglages > Permaliens > Enregistrer les modifications".

Biensûr en faisant ce changement vous ne souhaitez pas perdre votre traffic et vos visiteurs, pour celà rien de plus simple, il vous suffit de placer un fichier .htaccess à la racine de votre ancien domaine avec les lignes suivantes :

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?ancien-domaine\.com
RewriteRule (.*) http://www.nouveau-domaine.com/$1 [R=301,L]

Si vous utilisez un service tel que Feedburner, n’oubliez pas de lui indiquer l’URL de votre nouveau flux !

Si vous ne faites que changer votre blog de répertoire vous pouvez sans problème remplacer ancien-domaine.com et nouveau-domaine.com par domaine.com/ancienrep et domaine.com/nouveaurep tout au long de ce billet ;-)

Articles relatifs

Petits conseils pour faire des économies d’énergie au bureau

A l’heure ou l’écologie et le respect de l’environnement deviennent des thèmes importants de notre société, les économies d’énergies (et donc d’argent) sont de plus en plus mises en avant. Que ce soit au bureau ou à la maison, il est assez simple de faire des économies d’électricité sans modifier son confort. Voici quelques conseils qui me viennent à l’esprit et que je tente d’appliquer le mieux possible (surtout depuis que je vois le prix de l’électricité grimper régulièrement de 2% ou plus !) :

  • utiliser des ampoules à économie d’énergie en lieu et place d’ampoules traditionnelles ou halogènes (les pires !)
  • éteindre la lumière quand elle n’est pas absolument nécessaire (lorsque la luminosité est suffisamment forte ou que l’on est sorti du bureau, même 5 minutes)
  • ne pas utiliser de climatiseur/ventilateur : c’est souvent plus facile à dire qu’à faire mais en s’habillant en fonction de la température extérieure et en buvant beaucoup, on peut en tout cas éviter d’utiliser sa climatisation comme un réfrigérateur
  • éteindre (et non pas mettre en veille) les appareils que l’on utilise pas : inutile d’avoir votre imprimante allumée 24h/24 si vous n’imprimez qu’une page tous les 3 jours !
  • éteindre votre moniteur dès que vous ne l’utilisez pas. C’est un réflexe qui ne coûte rien (il n’y a plus de temps de chauffe sur un moniteur LCD comme on pouvait le constater sur un moniteur à tube) et qui peut vous rapporter gros.
  • avoir un moniteur moderne : un moniteur LCD 20″ consomme environ 45 Watts, un vieux moniteur CRT en consomme en tout cas le triple !
  • éteindre son ordinateur lorsqu’on ne l’utilise pas (le soir en quittant le bureau par exemple).
  • configurer la veille et la veille prolongée afin d’économiser également de l’énergie lors d’absences durant la journée
  • préférer dans la mesure du possible un ordinateur portable à une machine de bureau : un ordinateur portable consomme environ 100 Watt sur secteur tandis que la plupart des ordinateurs de bureau consomment entre 200 et 400 Watt suivant les modèles !

Articles relatifs

Comment bien nettoyer son clavier et son écran

Quelques lignes sur un sujet qui ne touche pas que les barbus et les télétravailleurs mais toutes les personnes qui utilisent plus ou moins régulièrement un ordinateur : comment bien nettoyer son écran et son clavier !

Avant de tenter de bien nettoyer, commençons par essayer de les garder propre. Pour cela rien de plus simple : avoir les mains propres lorsque l’on utilise son clavier (une tasse de café ne salit pas les mains !) et ne pas toucher son écran avec les doigts (j’ai horreur de ça !!).

Malgré ces petites précautions, votre clavier deviendra inévitablement poussiéreux et “gras” sur les touches les plus utilisées, en revanche votre écran peut rester propre très longtemps.

Voici toutefois mes conseils pour nettoyer ces deux périphériques :

  • le clavier : une bombe comprimé de gaz (8 € environ) pour expulser tous les trucs ignobles qui auraient pu se glisser sous vos touches et un coup de “OneClean Keyboard cleaner” de Am-Denmark (20 € - avec une mousse réservible pour les claviers normaux et les claviers d’ordinateurs portables - touches courtes). Grâce à ce duo mon clavier Apple blanc est toujours … blanc même après 3 ans d’utilisation intensive !
  • l’écran : une lingette “Swiffer” (toujours à portée de main) pour la poussière et le “OneClean Screen cleaner” toujours chez Am-Denmark (20€).

Les produits Am-Denmark sont design (aluminium brossé) et bien finis, ils peuvent donc sans problème rester sur votre bureau comme éléments de décoration.

Articles relatifs

Les routes Rails et les URL contenant des points

Qui n’a jamais été confronté à une URL contenant un point en paramètre ? Un exemple très courant est notamment l’utilisation d’un tag comme ID pour une recherche :

http://www.monsite.com/tag/asp.net

RubyOnRails intègre une route par défaut qui traite le point passé en paramètre afin de repérer le format de réponse souhaité :

map.connect ':controller/:action/:id.:format'

C’est cette route qui permet ensuite dans un contrôleur d’adapter le format de la réponse en fonction de la demande avec la méthode suivante :

respond_to do |format|
	format.html
	format.xml { render :xml => @item.to_xml }
end

Cette méthode est très pratique et très souvent utilisée (pour développer une API XML en plus d’un site Internet classique par exemple) en revanche, elle empêche totalement de traiter une requête du type :

http://www.monsite.com/tag/asp.net

puisque “net” est traité par la route par défaut de Rails comme étant le format de réponse attendu ! Dans ce cas précis il est donc intéressant de pouvoir empêcher ce comportement en ajoutant une route qui sera utilisée lorsque l’URL contient un point qui ne doit pas être considéré comme un format. On utilise pour cela la propriété :requirements qui permet de spécifier une expression régulière qui sera utilisée pour détecter l’id :

map.connect 'tag/:id', :controller => :tag, :action => :index, :requirements => { :id => /.*/}

Cette méthode évite de modifier le fonctionnement général des URLs contenant des points afin de pouvoir continuer à utiliser cette fonctionnalité des routes.

Articles relatifs

Surfer dans les lieux publics comme au bureau grâce au wifi-desk

A l’heure du wifi, de plus en plus de gens sont tentés de surfer dans les lieux publics, notamment les parcs publics. Comme l’a souligné récemment Babozor, ce n’est pas toujours facile notamment à cause de la position de travail et des reflets sur l’écran.

Un designer lausannois, diplômé de l’ECAL, a donc conçu le wifi-desk. Un pue-pitre d’extérieur permettant de poser son ordinateur portable qui se retrouve ainsi protégé des rayons du soleil (et des regards indiscrets). Le wifi-desk existe en deux version, une avec siège et l’autre sans. Quatre wifi-desk équipés de sièges sont disponibles dans le quartier du Flon à Lausanne.

Wifi-desk

Source : 20 minutes - Crédit photo : 20 minutes et Milo Keller)

Articles relatifs

Utiliser la connexion Internet locale en étant connecté en VPN

Lorsque l’on se connecte à un réseau distant en VPN grâce aux connexions réseau de Windows, soit Internet n’est plus disponible (si le réseau distant n’est pas connecté à Internet ou qu’une règle de firewall empêche les utilisateurs de VPN d’y accéder), soit tout ce que vous faites sur Internet passe par le réseau distant. Ceci induit généralement une lenteur importante et vous empêche donc de travailler convenablement puisque vous avez sûrement besoin d’être connecté à Internet en plus d’être connecté au VPN.

Ceci est uniquement lié aux règles de routage par défaut de Windows et aux propriétés de votre connexion VPN Windows. En effet, par défaut, Windows tente d’utiliser la passerelle du réseau distant. Résultat, tout le trafic réseau de votre poste passe par la passerelle distante, y compris votre trafic Internet !

Afin d’éviter ce désagrément, il suffit d’aller voir dans les propriétés TCP/IP de votre connexion VPN puis dans la partie “Avancée” et de décocher la case “Utiliser la passerelle par défaut pour le réseau distant”. Ainsi, Windows ne routera vers le réseau distant que les requêtes qui sont explicitement destinées à ce réseau distant et continuera d’acheminer (notamment) votre trafic Internet par votre réseau local .

Articles relatifs

SourceGuardian pour protéger un code PHP propriétaire

SourceGuardian permet d’encoder vos fichiers PHP afin de les rendre illisibles (et donc non modifiables). Cet outil, concurrent de Zend Guard ou de ionCube PHP Encoder, est très utile si vous souhaitez distribuer une application propriétaire écrite en PHP.

Les trois encodeurs cités ont un fonctionnement similaire, ils disposent d’un outil destiné à encoder des fichiers choisis et d’une extension PHP à charger sur le serveur (pour Zend Encoder il s’agit d’un produit - gratuit- séparé : Zend Optimizer).

Lors d’une utilisation classique, il n’y a aucune adaptation à apporter à votre code et les performances de l’application restent sensiblement identiques (elles sont parfois même un peu meilleures puisque les scripts PHP sont pré-compilés en bytecode). Seule l’utilisation de fonctions d’obfuscation avancée du bytecode nécessite l’utilisation de listes d’exclusions afin de garantir le parfait fonctionnement de l’application.

SourceGuardian permet l’utilisation de fichiers de licences externes et offre également des fonctionnalités de limitations d’utilisation des fichiers encodés (sur une adresse IP donnée, sur un nom de domaine donné, pendant un nombre de jour donné notamment).

Note : attention lors d’utilisation d’un framework PHP tel que Symfony ! L’autoloader de classes utilise une expression régulière pour détecter les classes dans les fichiers et ne peut donc pas trouver les classes dans des fichiers encodés. Il faut pour cela apporter une modification à l’autoloader en utilisant notamment la fonction sg_load_file qui permet de récupérer le contenu d’un fichier encodé.

Articles relatifs

Sauvegarde par batch sous Windows, conseils et outils indispensables !

L’utilisation de logiciels de sauvegarde est parfois problématique, la mise en place est souvent lourde et la maîtrise absolue de l’outil est nécessaire afin d’être sûr que l’on sauvegarde exactement ce que l’on souhaite quand on le souhaite comme on le souhaite.

Dans certains cas je privilégie donc l’utilisation de scripts “batch” qui m’assurent un contrôle total du processus de sauvegarde et surtout, la possibilité d’ajouter/supprimer rapidement des fichiers à sauvegarder. Je vous livre donc ici quelques conseils et outils indispensables pour effectuer correctement des sauvegardes.

Découper les batchs

Si vous souhaitez pouvoir étendre ou modifier facilement votre processus de sauvegarde, je vous conseille vivement de créer plusieurs batchs pour chaque composant du système de sauvegarde. Un batch pour la compression, un batch pour l’envoi de fichiers sur le FTP etc… Ainsi lorsque vous souhaitez ajouter un fichier à sauvegarder, vous n’avez qu’à modifier le batch “compression.bat” par exemple !

Ensuite pour exécuter tous les batchs dans un batch plus général, il suffit de faire un appel sous la forme :

call monbatch.bat

Compresser les fichiers

Lorsque vous sauvegardez des documents ou des codes sources, une bonne compression peut vous faire gagner beaucoup de place, surtout lorsqu’elle exclut des fichiers inutiles (les .exe, lors de la sauvegarde de code source par exemple). Pour cela j’utilise 7zip en ligne de commande. Le commutateur :

-x@exclude_source.txt

vous permet de spécifier un fichier (exclude_source.txt) qui contient les fichiers à exclure (ou des ensembles de fichier, *.exe, par exemple).

Envoyer les fichiers sur un FTP

Les hébergeurs Internet vous proposent bien souvent, en plus d’un espace disque déjà pharaonique pour votre site, un espace de sauvegarde (si ce n’est pas le cas, vous pouvez utiliser l’espace disque dédié à votre site). Vous pouvez donc sans problème y stocker des sauvegardes de vos fichiers.

Windows inclut un client FTP en ligne de commande assez efficace pour nos opérations de sauvegarde. Afin de pouvoir l’exécuter en mode “batch”, nous lui passons un fichier de commandes FTP à exécuter :

ftp -s:mescommandes.txt

Ce fichier contient par exemple :

open monserveurftp.com
utilisateur
motdepasse
prompt
binary
cd MonDossierSauvegarde
mput *.7z<br>quit

La commande prompt annonce au FTP qu’il ne doit pas poser de question lors de l’utilisation des fonctions mdelete, mput et mget. La commande binary permet de forcer le transfert des fichiers en mode binaire. Ceci est primordial afin d’éviter que les fichiers compressés soient corrompus lors de l’envoi ! La commande :

mput *.7z

envoie tous les fichiers du répertoire local dont l’extension est .7z sur le FTP. Vous pouvez naviguer sur le FTP avec la même commande que sous dos (cd).

Pour vider un dossier sur le FTP vous pouvez utiliser la commande :

mdelete *.*

après vous être placé dans le répertoire à vider !

Recevoir le résultat de l’exécution par courriel

J’utilise pour cela l’application mailsend.exe en ligne de commande. En une seule commande vous pouvez ainsi envoyer un courriel contenant le résultat de la sortie des commandes de votre batch. Pour écrire la sortie des commandes de votre batch dans un fichier texte vous devez faire suivre chaque commande de :

&gt;&gt;masortie.txt

Par exemple :

call monbatch.bat&gt;&gt;masortie.txt
erase Semaine\*.*&gt;&gt;masortie.txt

L’utilisation de >> au lieu de > assure que tout est écrit à la suite du même fichier. Vous pouvez ensuite facilement envoyer un courriel avec la commande :

MAILSEND -d mondomaine.com -smtp smtp.monfai.com -t <a href="mailto:monadresse@masociete.com">monadresse@masociete.com</a> -f <a href="mailto:monadresse@masociete.com">monadresse@masociete.com</a> -sub "Rapport de sauvegarde" +bc +cc -a sortie.txt,text/plain,i

Pour plus de détails, tous les commutateurs de la commande mailsend.exe sont détaillés sur la page de téléchargement.

Chemins

Attention à utiliser le plus souvent possible des chemins complets (C:\MesFichiers\mescommandesftp.txt) afin d’éviter de vous perdre dans des chemins relatifs (qui sont donc relatifs à qui exécute le script et aux déplacements dans l’arborescence que vous faites durant l’exécution du script).

Exécution programmée et rotation

Une fois vos batchs écrits (et testés !) vous pouvez planifier leur exécution grâce aux “Tâches planifiées” de Windows (Accessoires > Outils Systèmes). Vous pouvez configurer un système de rotation avancé en effectuant des suppressions sur le FTP au moment opportun.

Vous avez désormais toutes les clés en main pour créer vos scripts de sauvegarde. Désormais, à vous de jouer !

Articles relatifs

Schémas de vos modèles et contrôleurs Rails

Lorsque vous travaillez sur un projet Rails à plusieurs ou que vous devez fournir une documentation d’une application Rails, vous souhaitez certainement fournir un schéma de vos modèles et/ou vos contrôleurs.

L’excellent plugins rav n’étant plus maintenu, son auteur conseille de s’orienter vers railroad qui fourni des fonctionnalités similaires. Même si ce nouveau plugin génère des graphiques un peu moins lisible, il n’en reste pas moins un outil indispensable pour documenter facilement un projet sans forcément utiliser StarUML et exporter son schéma selon les conseils de ce blog.

Articles relatifs


Creative Commons License