Soumettez vos yeux et votre cerveau au test suivant qui présente des tables dessinées par le psychologue et professeur Roger Shepard et dites moi intuitivement laquelle est la plus longue.
Si vous avez répondu celle de gauche, vous êtes dans l'erreur (comme la plupart des gens) car aussi surprenant que cela puisse paraître, les deux tables sont exactement de la même dimension, tant en longueur que par la forme (mesurez les et faites faire la rotation ou regardez simplement la démonstration animée). Cet exemple illustre le principe de l'illusion de Ponzo qui exploite les mécanismes de perceptions visuelles des profondeurs (à ne pas confondre avec Ponzi et les fraudes pyramidales qui sont en quelque sorte une autre forme d'illusion). Tout ça parce que notre cerveau reçoit la mauvaise information sur l'objet.
Si vous me suivez sur Twitter, vous avez peut-être vu passer mes échanges concernant la recherche d'un hébergeur pour un projet personnel de développement web. Comme il ne nécessitera pas beaucoup de ressources et que le but est non-commercial, je fais appel à vous pour me faire des suggestions en considérant les éléments suivants :
- Espace disque de 1 Gb minimum
- Bandwidth illimité (je ne prends pas de chance au cas où)
- Support PHP 5.2 ou plus
- Extensions : CURL, mod_rewrite, GD ou ImageMagick (préféré)
- Base de données PostgreSQL (elle ne sera pas volumineuse)
- Outils de statistiques
- Économique et fiable
000webhost.com
http://www.000webhost.com
- L'avantage est qu'il est tout à fait gratuit. Ça pourrait être un bon point de départ.
- À l'inverse, il ne supporte pas ImageMagick ni Postgres.
- Il est possible de bonifier le service à Premium pour avoir accès à plus options (4,84$ / mois)
- Pour en avoir fait l'essai dans le passé, si le panneau de gestion n'est pas suffisamment accédé souvent, le compte peut être désactivé sans préavis. Selon les termes et conditions, ça semble avoir été changé pour une période d'un an, ce qui ne représente pas un très gros risque.
http://csoft.net
- Le site n'est pas très vendeur du point de vue du look mais il offre une incroyable sélection de fonctionnalités, dont ImageMagick et Postgres.
- Le forfait Économie à 5$ par mois offre 10 Gb et le trafic illimité.
- Je ne connais pas du tout cette compagnie de l'île-de-la-Madeleine.
- Un compte d'essai gratuit de 30 jours est offert.
- Facturation mensuelle.
- Recommandé par @yhugo
http://iweb.com
- Légèrement plus cher que CSoft, on doit prendre un engagement de deux ans pour obtenir le plus bas prix (5,83$ / mois).
- 600 Gb d'espace disque et trafic non mesuré (j'ai bien lu, 600 gigaoctets?!).
- Par deux fois j'ai essayé d'avoir une confirmation sur le support d'ImageMagik. Sans succès. Je suppose qu'ils ne le supportent pas.
- Recommandé par @bencaron
http://www.nixcom.ca
- Le prix grimpe un peu et est probablement au-delà de mes besoins.
- J'attends des détails sur les spécifications techniques.
- Recommandé par @ColoServ
http://www.thrustvps.com
- Une alternative différente intéressante en un serveur virtuel privé.
- Flexible dans sa configuration pour 15$ par mois.
- Recommandé par @FouZ
http://vexxhost.com
- Un des plus bas prix (3,99$ par mois, sur un engagement de 3 ans, sinon 5,59$ /mois)
- Espace disque et trafic illimité
- Énormément de fonctionnalités offertes dont ImageMagick et mod_rewrite
mais ne supporte pas Postgres - Ils ont des bureaux à Ville St-Laurent (Montréal, Québec)
- J'ai eu une meilleure expérience de soutien technique par le chat que chez iWeb
- Recommandé par @jack_dbernier
En PHP, on sait que l'utilisation des apostrophes par rapport aux guillemets améliore la performance lorsqu'on manipule des chaînes de caractères. Ayant été témoin d'argumentaires sans fin entre programmeurs qui défendaient les bonnes pratiques, j'ai décidé de faire une démonstration pour faire parler les chiffres et mieux cibler les opportunités d'optimisation. Après tout, "premature optimization is the root of all evil"!
En utilisant une technique toute simple déjà expliquée pour mesurer le temps d'exécution d'un script (vous pouvez aussi utiliser xdebug), j'ai isolé la portion de code en question dans une itération et j'ai observé les résultats obtenus sur ce court snippet de code. La seule différence entre les deux boucles est dans la façon de concaténer la chaîne.
set_time_limit(90);Les résultats
# avec apostrophes
$startTime = microtime(true);
$iterations = 100000;
$tmp = '';
$concat = 'yz';
for($i=0 ; $i<=$iterations ; $i++){
$tmp = 'x' . $concat;
}
$endTime = microtime(true);
$elapsed = $endTime - $startTime;
echo "$elapsed secondes";
# ou echo $elapsed . ' secondes'; ?
# avec guillemets
$startTime = microtime(true);
$tmp = '';
$concat = 'yz';
for($i=0 ; $i<=$iterations ; $i++){
$tmp = "x $concat";
}
$endTime = microtime(true);
$elapsed = $endTime - $startTime;
echo "$elapsed secondes";
# ou echo $elapsed . ' secondes'; ?
1000 itérations (10 ^ 3)
- Single quotes: 0.0004279613494873 secondes
- Double quotes: 0.00057315826416016 secondes
- Single quotes: 0.0040969848632812 secondes
- Double quotes: 0.0046517848968506 secondes
- Single quotes: 0.03504490852356 secondes
- Double quotes: 0.046297073364258 secondes
- Single quotes: 0.3795599937439 secondes
- Double quotes: 0.48942708969116 secondes
- Single quotes: 3.7059290409088 secondes
- Double quotes: 4.7981967926025 secondes
- Single quotes: 38.336160898209 secondes
- Double quotes: 49.267479896545 secondes
L'argument de départ tient la route mais il faut avouer que dans de nombreux cas, les efforts déployés à essayer de gagner son point demandent beaucoup plus d'énergie par rapport au gain potentiel qu'on obtient en retour. Il reste qu'en règle générale et par souçi de bonnes pratiques, c'est une bonne idée de privilégier l'utilisation des apostrophes autant que possible. À mon humble avis, personne ne mérite de se faire taper sur les doigts s'il n'est pas aussi assidu à le faire dans des parties non-critiques de l'application. Après tout, si un script PHP venait à devoir exécuter plus d'un million de manipulations, peut-être qu'un changement de stratégie serait de mise et qu'une solution compilée serait plus appropriée...
Trouvé sur un emballage de draps santé (fibre de molleton) achetés cet automne (et retrouvé récemment au moment de les ranger dans l'étui de plastique).
Cet échantillon propose au consommateur de le sentir plutôt que de le toucher. Ah oui, ça sent le pouce. Et ce n'est pas tout puisque l'étiquette ajoute que vous pourrez dormir en chaleur et en saveur en énergie à l'année longue (je fais abstraction des nombreuses fautes de français et je me questionne toujours sur le sens de la phrase).
Pourquoi ne se sont-ils pas contenté de traduire l'argument anglais ? On aurait pu y lire: une chaleur agréable vous permet de "baiser" le thermostat...
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne... et personne ne sait pourquoi!
Calculer la distance entre deux points géographiques avec PostgreSQL
Vous voudriez utiliser une fonction Postgres comme earth_distance() pour calculer la distance théorique entre deux points sur la Terre (en assumant qu'elle est parfaitement ronde) sans installer de package ou utiliser PostGIS ?
Voici une fonction écrite en pl/pgsql qui vous permettra d'obtenir une approximation en fournissant la latitude et la longitude de deux coordonnées. Par exemple, la distance en ligne droite (ou à vol d'oiseau) entre l'Auberge du Dragon Rouge et la microbrasserie Dieu-du-Ciel! à Montréal serait de 4,639 km (j'ai obtenu les coordonnées en pointant et cliquant sur la carte Google Maps Distance Calculator).
Assurez-vous d'abord que le langage pl/pgsql est installé. Ensuite, exécutez le code ci-dessous qui créera la fonction :
CREATE FUNCTION evaluate_earth_distance(Vous pourrez ensuite faire l'appel comme ceci par une requête SQL :
"latitude1" numeric,
"longitude1" numeric,
"latitude2" numeric,
"longitude2" numeric
)
RETURNS numeric AS
$body$
DECLARE
degToRad NUMERIC;
radToDeg NUMERIC;
pi NUMERIC;
theta NUMERIC;
distance NUMERIC;
BEGIN
pi := 3.14159265358979323846;
degToRad := pi / 180;
radToDeg := 180 / pi;
theta := longitude2 - longitude1;
distance := sin(latitude1 * degToRad) * sin(latitude2 * degToRad) + cos(latitude1 * degToRad) * cos(latitude2 * degToRad) * cos(theta * degToRad);
distance := acos(distance);
distance := distance * radToDeg;
distance := distance * 60 * 1.1515 * 1.609344;
RETURN distance;
END;
$body$
LANGUAGE 'plpgsql';
SELECT evaluate_earth_distance(45.547291,-73.641446, 45.522651,-73.593373);La distance sera retournée en kilomètres.
-- 4,63949681350483 km
Quand nous avons acheté notre maison il y a quelques mois, l'ancienne propriétaire nous a laissé plusieurs choses et nous n'avons pas encore eu le temps de faire l'inventaire. Je savais qu'on avait un vieux casier dont je n'imaginais pas la raison pourquoi il se trouvait là et quand je suis allé le voir de plus près, j'ai vu qu'il portait le numéro 404, comme dans le code de statut HTTP 404 : not found.
Allez savoir pourquoi, j'ai immédiatement imaginé une école avec des couloirs flanqués de casiers où le numéro 404 manquait. Et tout le monde qui se demande depuis des années ce qu'il en est advenu. Arrêtez de chercher, il est chez moi. Promis qu'il restera là et que je lui trouverai une utilité.