Avatar of Goulu

by Goulu

Internet et les images, c’est l’acrobatie

13 juin 2013 in Microclub

Internet, c’est tellement facile : on voit une image qui nous plait pour illustrer un article, hop, on copie le lien vers l’image dans son propre blog :

Et voilà. L’auteur de cette magnifique photo, que je salue au passage, pourrait légitimement prétendre que je lui ai volé cette photo sans autorisation, à quoi je pourrais lui répondre que non ( si j’étais de mauvaise foi ) puisqu’elle est toujours sur son serveur  : je ne l’ai pas copiée, j’ai juste mis <img src= »"http://www.d-aprilli.net/www.d-aprilli.net/GalerieAvions/content/images/large/dAprilli_Avion002.jpg »> dans le texte HTML de cet article…

Mais il pourrait également considérer que ce « hotlink » lui vole de la bande passante : chaque visite sur ma page va générer du trafic sur son serveur pour  télécharger 1180 Ko, et son hébergeur doit payer le matos et la connexion en conséquence, dont il répercute le coût sur ses clients, donc mon lien ci-dessus engendre des coûts pour lui.

Avant de voir comment éviter ceci, voyons comment le détecter. Le moyen le plus simple est d’utiliser la recherche d’images Google en mettant comme chaîne de recherche « inurl:monsite.com -site:monsite.com », ce qui signifie « montre les images qui ont monsite.com dans leur URL, mais qui ne sont pas sur monsite.com ».

Par exemple pour drgoulu.com ça donne ça : des images sont « hotlinkées » vers mon site surtout depuis des forums, des pages Google+ qui ont repris le flux RSS de mon site qui contient évidemment des liens vers les images et des sites « amis » comme cafe-sciences.org , kidiscience, et microclub.ch.

Quand c’est à petite échelle comme ça c’est tolérable, mais pour un site comme nationalgeographic.com par exemple, le hotlinking peut coûte cher …

Comment empêcher le hotlinking

La méthode la plus simple pour l’empêcher est de modifier le fichier .htaccess pour qu’il renvoie aux serveurs extérieurs une autre image que celle demandée, par exemple celle ci-contre ou une pire. Cette image apparaîtra subitement à la place de l’image originale sur tous les sites ayant fait des hotlinks…

MAIS il faut bien faire attention à Google, qui indexe les images de votre site et qui, ne voyant que votre image anti-hotlink, risque de se dire que si toutes vos images sont les mêmes, votre site est sans intérêt et baisser votre pagerank.

De plus, et peut être plus important encore, de plus en plus d’internautes utilisent la recherche d’images. En une année, la recherche « normale » sur Google a amené 110’000 visiteurs sur drgoulu.com, la recherche d’images 35’000 de plus : ce n’est dont pas négligeable du tout, et encore mon site n’est pas spécialisé dans la photo.

Il faut donc permettre à Google et peut être à d’autres sites de recherche d’images comme TinEye (dont je cause plus bas) d’accéder aux images de votre site pour les indexer. Tout ceci et comment procéder est très bien décrit ici.

Empêcher la copie, c’est mission impossible  …

Si un site empêche le hotlinking, il va encourager la copie : pour intégrer une image sur un article je sauve l’image sur mon bureau, je l’uploade sur mon site et voilà.

Et il est impossible d’empêcher ceci : à partir du moment où vous voyez une image sur votre browser, vous pouvez la copier. En fait elle a déjà été copiée sur votre ordinateur par le browser. Comme webmaster, vous pouvez tout au plus utiliser certains petits trucs pour rendre la copie de l’image plus difficile pour un visiteur néophyte, mais c’est impossible contre quelqu’un qui sait lire du code source HTML et dans tous les cas il reste la possibilité de la capture d’écran…

L’astuce de base pour les photos, c’est de publier une version « watermarkée » et/ou basse résolution des images sur les pages web, et de garder la version haute résolution un peu cachée par des liens pour ceux qui ont le droit, éventuellement payant, d’y accéder.

En faisant des copies de ces images, le lien avec le site d’origine est rompu. Si les rédacteurs n’ont pas la courtoisie d’indiquer la source de l’image avec un lien vers la page d’origine comme je l’ai fait pour la photo de D’aprilli, les visiteurs n’ont quasi aucun moyen de retrouver le photographe pour le féliciter.

Les seuls moyens que je connaisse sont TinEye et Google Images (encore), mais il faut lire le mode d’emploi. Ces étonnants services de « recherche inversée » d’images renvoient renvoie une liste de documents web où une image figure, même déformée, recadrée, recolorée ou passablement altérée. Je les utilise parfois pour retrouver l’original d’une image de mauvaise qualité sur le web, ou qui a piqué mes images…

D’après ma maigre expérience, Google trouve plus d’images car il indexe plus de sites, mais TinEye retrouve des images plus fortement modifiées.

En passant, comme je m’étais intéressé à l’algorithme de Shazam je me suis évidemment aussi posé la question pour la recherche d’images. Sur leur forum, les gens de TinEye ne sont pas plus bavards que ceux de Google sur l’algorithme utilisé, et cette discussion sur stackoverflow ne permet que d’esquisser quelques pistes, parmi lesquelles:

Le problème avec Google…

c’est qu’ils sont assez riches pour copier tout internet chez eux, y compris les images, et que parfois ils prennent des décisions toutes bêtes qui ont un gros impacts sur les plus petits qu’eux.

Depuis le 25 janvier 2013, Google copie même les images en pleine résolution qui ne sont pas directement visibles sur les sites indexés, et affiche ces images en pleine résolution sur les résultats de recherche, sans s’occuper de droits d’auteurs éventuels …

Il y a des sites commerciaux de photos et de fonds d’écrans qui râlent sec, et il y a de quoi quand on voit par exemple la chute du trafic enregistrée chez pixabay.com à ce moment :

trafic chez pixabay.com au moment du changement chez Google…

Le choix est cornélien : comment bénéficier du service d’indexation des images de Google tout en conservant es droits auquel tout créateur a droit ?

Un excellent article de pixabay énumère plusieurs solutions possibles et celle choisie par pixabay : un système anti-hotlink s’appliquant à tout le monde même à Google, mais fournissant les images d’origine « watermarkées », ce qui leur a permis de récupérer une bonne part de leur audience.

En pratique, pour WordPress

Quand j’écris un article, le hotlinking est tellement simple que je ne peux pas m’empêcher de l’utiliser pour insérer des images, et j’ai procédé ainsi pour toutes les images de cet article . copier l’adresse de l’image désirée, cliquer sur « Ajouter un média » dans WordPress et coller dans « insérer à partir d’une adresse web ».

Mais le hotlinking c’est mal et ça peut être gênant, comme je m’en suis aperçu il y a quelque années. Alors j’ai installé un plugin WordPress qui s’appelle hot-linked-image-cacher qui télécharge les images hotlinkées sur drgoulu.com et remplace mon hotlink par un link local, tout ça tout seul. Il est vieux mais marche très bien, je le recommande vivement. S’il ajoutait les images proprement à la galerie de WP, il serait parfait.

J’utilise aussi imsanity, qui s’occupe de faire automatiquement des versions basse résolution de mes grosses images, ce qui est rend le surf plus rapide et me permet de garder la version haute résolution pour moi…

Finalement, si j’étais photographe je regarderais de très près le WP-PicShield recommandé par pixabay, qui me semble proposer toutes les fonctionnalités et compromis actuellement possibles dans ce délicat exercice d’équilibre entre référencement et pillage des images sur internet.

(article aussi publié sur drgoulu.com)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Emulation en JavaScript

1 juin 2013 in Microclub

Poursuivant ma quête de pages web capables de faire tourner des programmes antédiluviens ou de petites créations vite faites sur le gaz, je suis tombé sur repl.it . Ce site permet d’exécuter du code dans le bon vieux mode « Read Eval Print Loop« , mais ce qui a titillé ma curiosité, c’est le nombre et la variété des langages supportés. Outre différents dialectes de JavaScript, il y a mon cher Python, mais aussi Ruby, Lua, Scheme (un LISP moderne) et ces bons vieux Forth et QBasic !

Or tout ceci ne tourne pas sur le serveur, mais bien sur votre machine, dans une page web. Comment font-ils ? la réponse figure dans http://repl.it/help : ils utilisent un truc qui s’appelle « emscripten ».

Et emscripten, c’est de la tuerie. Cette chose traduit en javsacript du code LLVM, un code intermédiaire entre le « haut niveau » et l’assembleur, généré par certains compilateurs comme clang par exemple.

En gros, avec emscripten on peut exécuter sur une page web du code C/C++ compilé, donc on peut exécuter CPython ou les autres interpréteurs.

Pour QBasic c’est un peu différent : repl.it utilise qb.js un interpréteur écrit directement en JavaScript par Steve Hanov. Sur sa page on trouve une version complète de son émulateur QBasic qui gère même les « graphiques » en couleur utilisant les bons vieux caractères de l’IBM PC, mais surtout des infos sur la manière dont est fait son interpréteur, avec une remarque intéressante: Javascript est très efficace pour ce genre de choses.

emscripten permet aussi de porter en technologie web des applications conçues initialement pour d’autres plateformes, donc de les rendre multiplateforme de-facto. Il y a par exemple déjà

  • des outils comme SQlite, LaTEX, gnuplot ou graphviz, prêt à être intégrés dans des applications web
  • la plateforme Qt. Avec ça, plein d’applications écrites pour des OS variés peuvent tourner dans des pages web
  • des jeux allant de ce petit jeu sympa et désuet à Epic Citadel, un jeu très pro construit sur le moteur graphique Unreal 3, porté en 4 jours en Javascript, ce qui lui permet de tourner sur Firefox
  • des émulateurs de hardware obsolète comme MAME ou MESS :

Pour ma part je tire plusieurs leçons de ce qui est en train de se passer:

  1. le hardware devient obsolète plus vite que le soft, qui peut survivre grâce à l’émulation du hardware
  2. la frontière entre système d’exploitation et applications et entre compilation et interprétation disparaît complètement
  3. quand le browser sera la seule et unique fenêtre ouverte sur un PC, pourquoi faudra-t-il encore des fenêtres ? et un PC ?
C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Lunar Lander : le retour (sans commentaires)

17 mai 2013 in Microclub

En écrivant pourquoi j’aime la science, je me suis souvenu d’un de mes premiers programmes en BASIC : un simulateur d’alunissage. « Simulateur » parait un peu prétentieux aujourd’hui pour un programme qui fonctionnait en mode texte et pas en temps réel, mais j’en étais très fier.

Au point d’avoir envie de le résusciter, mais comme je n’ai plus de PET 2001 capable de relire une cassette d’époque que je n’ai plus, je me suis rabattu sur un plan B:

  1. retrouver le livre « Basic Computer Games » de David H. Ahl
  2. retrouver le listing du simulateur d’alunissage qui y était. La page est là, scannée en piètre qualité
  3. avant de retaper le programme, essayer ABBYY Online, un service d’OCR en ligne que j’avais déjà utilisé et qui donne des résultats très largement meilleurs que les autres. Ca marche ! le résultat a très peu besoin d’être édité et voilà:
    10 PRINT TAB(33);"LUNAR"
    20 PRINT TAB(13);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
    25 PRINT:PRINT:PRINT
    30 PRINT "THIS IS A COMPUTER SIMULATION OF AN APOLLO LUNAR"
    40 PRINT "LANDING CAPSULE.": PRINT: PRINT
    30 PRINT "THE ON-BOARD COMPUTER HAS FAILED (IT WAS MADE BY"
    60 PRINT "XEROX) SO YOU HAVE TO LAND THE CAPSULE MANUALLY."
    70 PRINT: PRINT "SET BURN RATE OF RETRO RQCKEIS TO ANY VALUE BETWEEN"
    80 PRINT "0 (FREE FALL) AMD 200 (MAXIMUM BURN) POUNDS PER SECOND."
    90 PRINT "SET NEW BURN RATE EVERY 10 SECONDS.": PRINT
    100 PRINT "CAPSULE WEIGHI 32,500 LBS; FUEL WEIGHT 16,500 LBS."
    110 PRINT: PRINT: PRINT: PRINT "GOOD LUCK"
    120 L=0
    130 PRINT: PRINT "SEC","HI FT","MPH","LB FUEL","BURN RATE":PRINT
    140 A=120:V=1:M=33000:N=16500:G=1E-03:Z=1.8
    150 PRINT L,INT(A);INT(5280*(A-INT(A))),3606*V,H-M:INPUT K:T=10
    160 IF M-N<1E-03 THEN 240
    170 IF T<1E-03 THEN 150
    180 S=T: IF M>=N+S*K THEN 200
    190 S=(M-N)/K
    200 GOSUB 420: IF I<=0 THEN 340
    210 IF V<=0 THEN 230
    220 IF J<0 THEN 370
    230 GOSUB 330: GOTO 150
    240 PRINT "FUEL OUT AT";L;"SECONDS":S=(-V*SQR(V*V+2*A*G))/G
    250 V=V+G*S: L=L-S
    260 W=3600*V: PRINT "ON MOON AT";L;"SECONDS - IMPACT VELOCITY";W;"MPH"
    270 IF W<=1.2 THEN PRINT "PERFECT LANDING!": GOTO 440
    280 IF W<=10 THEN PRINT "GOOD LANDING (COULD BE BETTER)":GOTO 440
    282 IF W>60 THEN 300
    284 PRINT "CRAFT DAMAGE... YOU'RE STRANDED HERF. UNTIL A RESCUE"
    286 PRINT "PARIY ARRIVES. HOPE YOU HAVE ENOUGH OXYGEN!"
    288 GOTO 440
    300 PRINT "SORRY THERE ARE NO SURVIVORS. YOU BLEU IT!"
    310 PRINT "IN FACT, YOU BLASTED A NEW LUNAR CRATER";W*.277;"FEET DEEP !"
    320 GOTO 440
    330 L=L+S: T=T-S: M=M-S*K: A=I: V=J:RETURN
    340 IF S<5E-03 THEN 260
    350 D=V+SQR(V*V+2*A*(G-Z*K/M)):S=2*A/D
    360 GOSUB 420: GOSUB 330: GOTO 340
    370 W=(1-M*G/(Z*K))/2: S=M*V/(Z*K*(W+SQR(W*W+V/Z)))+.05:GOSUB 420
    380 IF I<=0 THEN 340
    390 GOSUB 330: IF J>0 THEN 160
    400 IF V>0 THEN 370
    410 GOTO 160
    420 R=S*K/M: J=V+G*S+Z*(-R-Q*Q/2-Q^3/3-Q^4/4-Q^5/5)
    430 I=A-G*S*S/2-V*S+Z*S*(R/2+Q^2/6+Q^3/12+Q^4/20+Q^5/30):RETURN
    440 PRINT:PRINT:PRINT:PRINT "TRY AGAIN??":GOTO 70
  4. il ne reste plus qu’à trouver un interpréteur BASIC d’époque… Heureusement, internet regorge de geeks nostalgiques, donc on trouve plusieurs interpréteurs BASIC écrits en Javascript, donc permettant d’exécuter ce genre de vieux programmes dans une page web. Après en avoir essayé plusieurs, le meilleur me semble être « Applesoft BASIC in Javascript » de Joshua Bell.
    Un petit cut&paste, on clique sur RUN et la machine à remonter le temps fonctionne !
    Capture

Bon, en fait elle ne fonctionne pas tant bien que ça. Il doit y avoir un bug soit dans l’interpréteur BASIC en Javascript, soit dans le programme BASIC, ce qui ne serait pas étonnant vu l’OCR.

Et c’est là qu’on s’aperçoit que la lisibilité des programmes a quand même fait des progrès en 35 ans, parce que ce listing est une véritable horreur ! Dire que non seulement on osait publier ça, mais que c’était même un best seller avec lequel une génération de programmeurs a appris la programmation… Des variables d’une seule lettre, d’horribles formules mêlant des constantes parachutées, le tout sans le moindre commentaire.

Pourtant il existait déjà une instruction REM pour ça en BASIC, mais ça n’était pas dans les moeurs. Un programme devait être lisible par les machines, pas pour les humains…

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Découvrir le Raspberry Pi

11 mai 2013 in Microclub

Introduction

Lors du dernier festival de robotique à l’EPLF (https://festivalrobotique.epfl.ch/ ) , comme un leitmotiv résonnait les mots « Raspberry Pi » Ainsi que plusieurs amis du MICROCLUB, nous nous décidons d’acquérir un de ces modules, qui a les caractéristiques suivantes (http://www.raspberrypi.org/ ):

board

  • Prix $35 (avec alimentations, câbles boîtier, carte SD, ça revient à CHF 60.-)

  • Taille du print: carte de crédit, 85.6 x 54 mm (avec boîtier… compter un peu plus!!)

  • Alimentation 5V, via USB, mais 700 mA (3.5 W)

  • CPU ARM à 700 MHz (hackable à 1 Ghz…)

  • Mémoire RAM 512 Mb

  • Mémoire FLASH par SD Card, minimum 2 Go (j’ai mis 8 Go)

  • Graphique : 1920×1200, capable de décoder du MP4 (H264); sorties HDMI et PAL/NTSC

  • Audio: jack 3.5 mm et HDMI

  • LAN: 10/100 MB, RJ45

  • Ports: 3 x USB2

La puissance de cette carte est comparable à celle d’un petit portable. Les systèmes d’exploitation possibles sont aussi nombreux; mais les « tunés » sont un Debian (Raspbian), un Arch Debian et un RISC OS. J’ai choisi le Raspbian.

Lancement

Après avoir téléchargé l’image et initialisé la carte SD par l’excellent tool, le module est connecté sur la TV via le câble HDMI du lecteur DVD. Le chargeur de mobile USB sera l’alimentation; il est plus musclé qu’un port de PC. Sur le site de Raspberry, on y retrouve cette recommandation à de multiples reprises. La plupart des modules prétendus défectueux n’ont pas été alimentés correctement; ou les périphériques ont mis à genoux l’alimentation qui, d’un port de PC, est limitée à 500 mA. J’y adjoint clavier et souris USB. A l’écran de config (qui apparait en mode texte), je choisis d’enclencher le SSH, d’étendre l’espace mémoire « root » sur le restant de la carte SD ainsi que de démarrer le graphique par « startx ». L’utilisateur par défaut et « pi »; on lui donne un mot de passe. Pas trop compliqué, vu que le clavier est resté en « QWERTY ». Okay…

L’interface passe en graphique haute résolution, affiche une belle framboise. La souris est reconnue.

Configurer Raspberry

Tout cela est bien joli; mais je ne peux pas continûment squatter la TV – qui ne me sert d’écran que pour passer des DVD – et laisser trainer ces câbles ainsi. Il me faut une connexion réseau, que je n’ai bien sûr pas dans cette pièce; et une prise à distance du module pour éviter de devoir utiliser un écran. Même si un câble HDMI – DVI est à disposition pour 20.- chez Distrelec, n° 847355. Pris d’une inspiration en voyant l’icône « Wifi config », je tente de connecter sur l’USB libre une antenne Wifi de marque Netopia, venue avec l’ancien modem/routeur de Swisscom. Bingo! Elle est reconnue. Suit l’introduction de la clef WPA, et la liaison est établie. Via le terminal, il est possible de lire l’adresse IP prise en DHCP.

Pour être sûr que la connexion soit fiable, je retire l’antenne de l’USB, puis je la reconnecte. La liaison se rétablit sans autre. Parfait.

Comment configurer le module ? Après quelques recherches sur l’Internet, un site en français répond à plein de questions, avec des exemples pratiques :

http://www.tropfacile.net/doku.php/raspberry-pi/

Dès que le Raspberry est sur le réseau, je peux l’atteindre avec deux outils indispensables via mes PCs Windows:

  • Putty, un terminal SSH

  • WinSCP, un explorateur 2 panneaux à la TotalCommander

Ecran à distance par VNC

Or donc, si je veux éviter de poser un second écran et sa panoplie de câbles sur mon bureau, il me faut atteindre Raspberry via le LAN par mes portables. C’est bien sûr déjà fait en ce qui concerne la console, par Putty via une connexion SSH, ainsi que pour manipuler les fichiers par WinSCP. Ajouter VNC? La manip est décrite ici:

http://reviews.cnet.co.uk/desktops/how-to-make-a-raspberry-pi-solar-powered-ftp-server-50009923/

En fait, je n’ai pas l’intention de le transformer en serveur FTP solaire, quoique… pour afficher automatiquement des images de mon nid en WiFi, l’idée est à creuser. L’auteur précide justement comment installer un serveur TightVNC. Depuis la console (en root, pas besoin du préfixe « sudo »)

sudo apt-get update
sudo apt-get install vnc-server
vncserver

Et là, on indique le password de connexion VNC désiré. Ça devrait déjà fonctionner.

Cependant, si on veut un automatisme au démarrage, il faut ajouter le script suivant dans /etc/init.d :

#!/bin/sh
# /etc/init.d/tightvncserver
# Positionne la variable VNCUSER pour démarrer tightvncserver avec
VNCUSER=’pi’
case « $1″ in
start)
su $VNCUSER -c ‘/usr/bin/tightvncserver :1′
echo « Démarre TightVNC server pour $VNCUSER  »
;;
stop)
pkill Xtightvnc
echo « Tightvncserver stoppé »
;;
*)
echo « Usage: /etc/init.d/tightvncserver {start|stop} »
exit 1
;;
esac
exit 0

Afin qu’il soit éxécutable, il faut encore lui changer ses bits ‘x’, soit par WinSCP, soit via la console, par:

sudo chmod 755 /etc/init.d/tightvncserver

Ce n’est pas tout. Si on lance ce script, on peut en effet démarrer et arrêter le service VNC. Afin qu’il soit lancé au démarrage, il faut l’inscrire dans les services à démarrer, par la commande:

update-rc.d tightvncserver defaults

Il reste a vérifier le résultat. La commande de VNC reader, depuis un PC Windows, est un peu originale.

VNC_param

Normalement, on y indique l’IP du poste sur lequel on veut se connecter (ou son nom NetBios s’il est propagé). Ici, il faut aussi préciser l’écran, par le le ‘:1′ après l’adresse:

Si tout se passe bien, on accède à Raspberry. Sinon, vérifier que le service démarre, par la commande « top ».

VNC_view

Adresse LAN fixe (static in english)

Comme je souhaite que le module soit connecté via le câble -ET- qu’il conserve une adresse fixe, car même si le DHCP de mon modem DSL garde la même adresse pour un périphérique donnée, pas sûr que ce soit reproductible sur le long terme. Il distribue les adresses au dessus de 192.168.1. 32. J’ai fixé les adresses de mes imprimantes et du NAS en dessous. L’adresse réservée pour Raspberry, sera la 192.168.1.11.

auto lo

iface lo inet loopback

iface eth0 inet static

address 192.168.1.11

netmask 255.255.255.0

gateway 192.168.1.1

network 192.168.1.0

broadcast 192.168.1.255

allow-hotplug wlan0

iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

La solution est d’éditer le fichier /etc/network/interfaces, ce que je fais grâce à WinSCP. Le fichier est complété comme suit, pour l’interface eth0, soit le câble (le Wifi, wlan0, reste en dynamique):

Puis je passe au retrait du WiFI, connecte le Raspberry avec un câble réseau au modem/routeur, redémarre le module… Quelques ping et reconfiguration des outils plus tard, c’est tout bon. J’en profite pour retirer le bloc alimentation du mobile; le câble est branché au NAS, qui possède des USB avec alimentation musclée de 1.3 Ampères.

La config est prête, il s’agit de trouver une application. Pour ce faire, le site de Korben propose pas moins de 50 liens sur des solutions à base de Raspberry: http://korben.info/idees-raspberry-pi.html

Yves Masur (5/2013)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Le mystère de l’image pomme-poire

28 avril 2013 in Microclub

pomme ? ou poire ?

Vu sur superuser une question étrange : pourquoi l’image ci-contre apparaît-elle comme une poire si vous utilisez Chrome ou Firefox, et comme une pomme si vous utilisez Internet Explorer, Safari ou si vous sauvez l’image sur votre bureau ?

Promis juré, il n’y a pas de script caché qui sélectionne une image ou une autre selon les circonstances, c’est bien le même fichier .png qui est rendu soit comme une pomme soit comme une poire par des logiciels différents. En plus si vous scrollez cette page légèrement, vous apercevrez peut-être l’autre fruit fugitivement dans le clignotement de l’image.

Qu’est-ce donc encore que cette diablerie informatique ?

En fait, le petit malin qui a créé cette image a intercalé entre les pixels d’une image de pomme normale ceux d’une poire éclaircie à la limite du visible :

De plus, il a incorporé au fichier une information de correction gamma de l’image prévue par la norme PNG [1], mais pas implantée par tous les browsers :

  • Sur Internet Explorer, Safari ou votre bureau, la correction gamma n’est pas effectuée, et vous voyez la pomme tramée par des pixels quasiment blancs.
  • Sur Chrome ou Firefox, la correction gamma est effectuée. La valeur de 0.02 stockée dans le « gAMA chunck » assombrit l’image d’un facteur 50 : la poire devient « normale », tramée par les pixels de l’image de la pomme devenus tous noirs :

Intéressant de voir comme un standard destiné à satisfaire les photographes les plus exigeants [2] peut être détourné pour faire de curieuses choses…

Références:

  1. Portable Network Graphics (PNG) Specification (Second Edition) : gAMA chunck, W3C

  2. « The PNG Gamma Dilemma« , Trevor Morris Photographics

 

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Idée reçue : Comparer la puissance de deux ordinateurs, c’est facile !

22 avril 2013 in Microclub

Vu cet article intéressant sur interstices.info

Il y a une quinzaine d’années, quand on achetait un nouvel ordinateur, on avait une idée assez précise de sa puissance. De nos jours, c’est beaucoup plus difficile !

Lire la suite

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

GitHub mania

16 avril 2013 in Non classé

See on Scoop.itAlgos

GitHub est une plateforme qui héberge du code sur la base d’un système de collaboration, git, qui a fait ses preuves en servant à coordonner le travail des 40 000 collaborateurs au noyau de Linux.

See on politbistro.hypotheses.org

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Une chaine HiFi Spotify à base de Raspberry Pi | Korben

4 avril 2013 in Non classé

See on Scoop.itAlgos

Voici un petit tuto rapide qui reprends les quelques étapes qui m’ont permis de transformer mon Raspberry Pi en radio Spotify. L’idée étant de coller une

Goulu‘s insight:

Je veux CA !

See on korben.info

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Avatar of Goulu

by Goulu

Bitcoin pour les nuls

20 mars 2013 in Non classé

See on Scoop.itDr. Goulu

Vous entendez peut-être parler, surtout sur ce blog, du Bitcoin. Mais qu’est-ce donc ? Et bien, il s’agit d’une monnaie. Rien de moins, rien de plus.
Mais au fond, qu’est-ce qui caractérise une monnaie ?

See on ploum.net

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Conférence Microclub du 08.03.2013

10 mars 2013 in Microclub

 

Si vous désirez revoir la présentation de la conférence sur

Windows 8

clique z sur ce lien :  Présentation Microclub du 08.03.2013

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email