Renomer une liste de fichiers avec des espaces

Lorsque l’on souhaite renommer un ensemble de fichiers contenant des caractères espace, l’utilisation d’une boucle de type :

for i in `find . -name “*” ; do

done

n’est par vraiement envisageable, en effet, les espaces identifiés comme des séparateurs de mots font que i prend pour valeur des sous ensembles du nom.

Pour résoudre ce problème, une solution consiste à modifier la variable IFS dont le rôle est de définir les séparateur de mots dans le shell bash.
La solution peut être la suivante :

export IFS=$’\n’
for i in `find . -name “*” ; do

done

i prend alors successivement les noms des fichiers, espaces inclus.

Changer l’encodage des caractères avec Apache2

Lors du passage de ce site sur Apache2, j’ai été confronté à des problèmes d’affichage des caractères, Mozilla n’affichait d’ailleurs même pas tous les caratères.
Ce problème vient de l’encodage par défaut des caractère qui est en UTF-8. Ce format ne semble pas totalement supporté par les borwsers ou alors mes documents sources n’utilisent pas ce format.

La solution consiste donc à modifier le format par défaut pour revenir à quelque chose de standard. Pour celà, il faut éditer /etc/apache2/mod_mime-default.conf et changer l’option AddDefaultCharset … pour AddDefaultCharset ISO-8859-1 par exemple.

Dans le cas de l’utilisation d’apache1, la solution est la même hors mis que le fichier doit être /etc/httpd/httpd.conf.

Notez que cet encodage est plutot obsolete et ne gère entre autre pas l’euro, ISO-8859-15 serait peut être plus adapté.

Complément : A noter que j’ai aussi rencontré des problèmes avec les accents lorsque je faisais des include de pages html depuis une jsp. Je ne saurais vraiment en expliquer la cause mais la solution simple et rapide que j’ai utilisé a été de renomer mes fichiers .html en .jsp ! depuis ça fonctionne vraiement mieux.

Inclusion de page html coté serveur

Les inclusions coté serveur ou SSI (Server Side Includes) sont très utiles pour inclure dans une page html une autre page html.

Ce site utilise par exemple ce système pour les entêtes et pieds de page de tous les documents interne, comme ça, il n’est pas nécessaire d’écrire ce code partout et sa mise à jour est centralisée en un seul et unique point.

La configuration se fait en chargeant dans apache le module mod_include, puis en le configurant :
Dans le fichier http.conf, dans la description du repertoire dans lequel on souhaite réaliser des include, on doit ajouter l’option +Includes, ce qui donne :

<Directory /src/www/htdocs>
Options […] +Includes
</Directory>

Il faut aussi ajouter l’activation dans la partie globale :

<IfModule mod_include.c>
xBitHack on
</IfModule>

Enfin, le fichier qui réalise l’inclusion doit avoir des droits d’execution et contenir une inclusion qui peut être de la forme suivante :
<!–#include virtual=”/model/fichier.html” –>

Utiliser Vim en multifenetres

Créer une nouvelle fenetre sous Vim peut se faire à l’aide des commandes :split et :vsplit qui peuvent être suivies par un nom de fichier à ouvrir dans la nouvelle fenêtre.
Il est aussi possible de creer un nouveau fichier à l’aide des commandes :new et :vnew
La navigation entre les fenêtres se fait à l’aide des combinaisons de touches suivantes :

  • CTRL+w suivi de h
  • CTRL+w suivi de j
  • CTRL+w suivi de k
  • CTRL+w suivi de l

Charger une page Web avant de l’afficher

Il est souvent préférable de terminer le chargement d’une page et entre autre de ses images avant son affichage, de sorte à éviter que la disposition des éléments soit instable durant ce temps.
Pour ce faire, un petit java Script peut vous venir en aide :

Dans la partie HEAD :
<SCRIPT>
<!–
function show() {
document.getElementById(“hidDiv”).style.visibility = “visible”
}
</script>
–>
Dans la partie BODY :
<BODY onLoad=”show()”>

Partie Affichée durant le chargement

<div id=”hidDiv” style=”visibility:hidden”>

Partie Affichée une fois la page chargée

</div>
</body>

Forward de ports avec SSH

SSH peut être utilisé pour forwarder des ports, il est ainsi possible d’accéder à un port distant dont l’accès serait restraint au réseau local puisque SSH permet de simuler un accès local à distance.

On peut souhaiter, par exemple acceder, au travers d’un port local 2000 au port 80 d’une machine distante. La commande est alors la suivante :

ssh -N -l root -L 2000:ip_host_distant:80 host

L’option -N indique que l’on ne souhaite pas de Shell.
L’option -R peut être utilisé pour l’inverse à savoir mapper sur la machine distante un port qui sera en fait local (visible depuis le client).

Note : le terme local correspond au client ssh. Le termer distant correspond au réseau du serveur sshd.

JAVA et DNS Dynamiques

Par sécurité, Java, lorsqu’il connait une association nom de domaine-IP, la mémorise de façon infinie. De cette sorte, on évite les attaques de DNS, ou simplement la surcharge inutile des serveurs. Cette philosophie serait interressante si l’on n’était pas confronté certaine fois à des DNS dynamiques, dont l’adresse change régulièrement.

J’ai pour ma part rencontré ce problème sur ce site lorsque j’interrogais mon adresse IP pour ne pas comptabiliser les requetes locales.

Il est alors nécessaire de modifier les règles de sécurité de Java pour autoriser la mise à jour de son cache. Plus précisement, il s’agit de donner une durée de vie au entrées du cache DNS de la machine virtuelle.

Pour ce faire, il faut éditer le fichier présent dans le répertoire du JRE dont le chemin est ../lib/security/java.security et de modifier la ligne networkaddress.cache.ttl pour lui donner une valeur de 180(secondes) par exemple.

Alors, le serveur DNS sera à nouveau interrogé si la précédente requete a plus de 3 minutes.

Les processus JAVA doivent être relancés pour que les modifications soient prises en compte.

Extraire un mot pour en faire un paramètre

Ceci est utile lorsque vous souhaitez passer en paramètre d’un script le ième item retourné par une commande. Ce peut être le cas lorsque vous voulez extraire la taille d’un fichier à partir de la commande ls.

Pour faire celà, une solution simple est de passer par la commande awk comme indiqué ci-dessous :

taille=`ls -l fichier | awk ‘{print $5}’`

Le 5ème argument retourné par la commande ls sera mémorisé dans la variable taille.