Laissez votre iPhone choisir pour vous

Il m’a souvent été utile d’avoir un script pour tirer aléatoirement une valeur parmi plusieurs.
Le pile ou face étant limité à 2 choix, et comme je n’ai pas toujours de dés sur moi, j’ai décidé de développer une application pour mon iPhone, qui me permettrais de faire les choix à ma place.

Le fonctionnement est simple : Il suffit de rentrer les valeurs désirées, puis de cliquer sur le header « Random it! » pour voir apparaitre le résultat.

A quoi ressemble l’application :

Pour se rendre sur l’application, il suffit de naviger à l’adresse suivante depuis le smartphone : http://tools.brunosabot.com/random

La théorie veut que le fonctionnement soit le même sous un autre OS mobile comme Android, mais ce n’est pas testé.

Publicités

Inauguration

Non mis à jour depuis trop longtemps, mon ancien blog était devenu obsolète.

Le web évolue très vite et deux ans sont, à l’échelle du web, une éternité.

Avant de commencer les différents posts, petit récapitulatif de ce que va être ce blog.

Je suis salarié depuis presque 10 mois chez GLOBALIS media system.

Au sein de cette société, j’occupe en premier lieu le post de développeur, mais aussi celui de technicien Front-end.

Ces deux activités m’amènent donc à présenter ici tant la partie optimisation front-end des sites que différentes astuces de codage sur les technologies PHP, MySQL, JavaScript, HTML, CSS ou encore dans l’administration des serveurs.

Pour ce blog, j’ai choisi la plateforme WordPress. Je suis preneur de tout conseil sur différents plugins que vous pourriez me recommander.

Certains billets seront copiés de l’ancien blog ici, il est donc normal de voir apparaitre certains billets avant celui-ci.

VoilaBot attaque les sites !

Depuis quelques temps, le robot de Voila, VoilaBot Beta 1.2, se met à crawler les sites Internet.

Normal me direz-vous… Cependant, la fréquence de crawl est bien trop élevée, on a ainsi une nouvelle connexion au serveur toutes les secondes.
Le nombre de connexions devient vite excessif, et le serveur surchargé prend trop de temps à répondre, voire même ne répond plus.

Les IP concernées par le VoilaBot sont les suivantes :

193.252.149.15
193.252.149.16
81.52.143.15
81.52.143.16

Ces IP sont associées respectivement au noms de domaine suivants : natcrawlbloc03.net.s1.fti.net, natcrawlbloc01.net.s1.fti.net, natcrawlbloc04.net.s1.fti.net, natcrawlbloc02.net.s1.fti.net

Les autres adresses de VoilaBot semblent être inactives depuis un moment.

La première solution censée bloquer les bot des moteurs de recherche est de créer un fichier robots.txt, et d’interdire l’accès au site pour certains moteur. Il faut donc uploader un fichier nommé robots.txt à la racine du site qui contiendrait le code suivant :

User-agent: VoilaBot
Disallow: /

Malheureusement, cette solution semble inutile puisque VoilaBot semble passer à travers et ignore donc les normes définies par l’ensemble des moteurs de recherche.

La solution suivante serait de bloquer l’accès au niveau du fichier .htaccess, de la manière suivante :

deny from 193.252.149.15
deny from 193.252.149.16
deny from 81.52.143.15
deny from 81.52.143.16

Cette solution est maintenant efficace, mais le problème est que le serveur va tout de même recevoir la connexion des IP désignées et donc, il y aura quand même de la surcharge au niveau du serveur.

La dernière solution et la plus efficace est d’utiliser le firewall IPTABLES. Il faut pour cela être sur serveur dédié Linux et avoir les accès root puisque nous allons configurer le firewall.
La documentation pour le télécharger et l’installer est disponible sur netfilter.org

Une fois installé, on rejette les adresses de VoilaBot en entrant les commandes shell suivantes:

iptables -I INPUT -s 193.252.149.15 -j DROP
iptables -I INPUT -s 193.252.149.16 -j DROP
iptables -I INPUT -s 81.52.143.15 -j DROP
iptables -I INPUT -s 81.52.143.16 -j DROP

Cette fois, VoilaBot ne peut plus accèder au serveur, le problème est réglé, et tout à coup, les pages se chargent enfin à une vitesse normale.
On peut aussi créer un fichier de configuration pour exécuter automatiquement ces requêtes au démarrage du serveur qui, dans l’hypothèse de création d’un fichier de configuration /etc/init.d/firewall, peut ressembler à ceci :

#!/bin/sh
# chkconfig: 3 21 91
# description: Firewall
IPT=/sbin/iptables
case "$1" in
start)
$IPT -I INPUT -s 193.252.149.15 -j DROP
$IPT -I INPUT -s 193.252.149.16 -j DROP
$IPT -I INPUT -s 81.52.143.15 -j DROP
$IPT -I INPUT -s 81.52.143.16 -j DROP
echo "Lancement du firewall ... OK"
exit 0
;;
stop)
$IPT -F INPUT
echo "Arrêt du firewall ....... OK"
exit 0
;;
restart)
/etc/init.d/firewall stop
/etc/init.d/firewall start
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop|restart}"
exit 1
;;
esac

Il suffit donc d’exécuter les commandes :
– Pour démarrer le firewall : /etc/init.d/firewall start
– Pour arrêter le firewall : /etc/init.d/firewall stop
– Pour redémarrer le firewall : /etc/init.d/firewall restart

Pour conclure, on peut dire qu’il est dommage qu’un moteur de recherche français nuise ainsi aux sites Internet… Pour rattraper son retard ? Parce qu’il est mal configuré ? Des questions à poser aux développeurs du VoilaBot…

Erreur dans le code PHP : Warning: include_once(1)

Lors de la créations de vos sites Internet, vous avez peut-être un jour obtenu l’erreur suivante :

Warning: include_once(1) [function.include-once]: failed to open stream: No such file or directory in Votre chemin

Cette erreur est due à l’utilisation des fonction die ou exit combinée à include, include_once, require ou require_once dans votre code. Un exemple vaut mieux que de longues explications :

include_once('fichier.php') or die('Impossible d'ouvrir le fichier');

L’exemple ci-dessus est incorrect, préférez-lui donc le code suivant :

if (!include_once('fichier.php')) {
echo 'Impossible d'ouvrir le fichier';
}

La seule explication que j’ai pu trouver de cette erreur est que la fonction include peut s’écrire

include 'fichier.php';

ce qui ne correspond pas à l’appel d’une fonction. Ainsi, PHP interprèterais d’abord ‘fichier.php’ or die(‘Erreur’);, puis ferrait une inclusion de ce résultat (qui vaut toujours le booléen VRAI).