HomeProductsDownloadOrderSupportSearch
  
 
 Myriad Blog 1.3.0 Wednesday, Nov 6th, 2024 at 10:09pm 

Technical Tuesday, Jan 29th, 2013 at 05:10pm
Dénormalisation

 
 
Les ordinateurs calculent en binaire. Leurs calculs préférés sont donc des calculs en nombre entiers, addition, soustraction, multiplication ou division. Depuis maintenant quelques décennies, ils savent travailler en "virgule flottante", c'est-à-dire que sur un nombre défini de bits (généralement 32 ou 64), ils peuvent stocker des nombres à virgule très grands, très petits ou très proches de zéro, avec un ratio d'erreur constant.
 
Pour cela, le stockage du nombre a été divisé en trois parties : le signe, l'exposant et la mantisse.
Un bit est réservé au signe (le nombre est positif ou négatif), plusieurs bits à l'exposant (lui-même positif ou négatif), et le reste à la mantisse.
 
Pour transformer un nombre ainsi code en "vrai" nombre réel, en gros :
- On prend la mantisse sous forme de nombre entier  
- On la multiplie ou divise par 2 (selon le signe de l'exposant) autant de fois qu'indiqué par la valeur absolue de l'exposant
- On prend l'opposé du résultat si le bit de signe est positionné
 
Tout va donc pour le mieux. Le processeur sait calculer sur ce type de nombres, et le résultat est suffisamment précis pour la plupart des opérations mathématiques courantes.
 
Pour prendre en compte le résultat d'opérations impossibles (divisions par zéro, dépassement des bornes possibles de l'exposant, fonctions non définies pour certaines valeurs ) des valeurs particulières ont été introduites. On les note, par convention:
+INF infini positif
-INF infini négatif
NAN not a number
 
Lorsqu'une variable contient une de ces valeurs, et qu'on demande un calcul, le programme ne plante pas. Le processeur prend juste beaucoup plus de temps pour réaliser l'opération, mais donne tout de même une valeur  (est-ce parce que le système tente d'appeler une routine de traitement des exceptions mathématiques, ou est-ce inhérent à la méthode de calcul du processeur ? Mystère).
 
par exemple, +INF * 2 donne +INF, NAN/3 donne NAN, etc
 
Dans le calcul des instruments virtuels, nous avons remarqué que lorsque des cordes se taisaient après avoir joué, le temps pris par le calcul augmentait massivement. Après investigation, nous nous sommes rendus compte que les données de vibration de la corde avaient toutes la valeur spéciale DEN. Et les opérations sur cette valeur spéciale prennent beaucoup plus de temps que des calculs normaux.
 
De quoi s'agit-il ? D'une valeur "dénormalisée", c'est-à-dire un exposant négatif qui a dépassé les bornes admises.
Cela se produit, par exemple, si vous prenez un nombre quelconque et le divisez par 10. Vous récupérez le résultat et le divisez encore par 10, et ainsi de suite.
Au bout d'un moment, le nombre va être plus petit que 1E-10, puis 1E-11, etc. jusqu'à ce que le nombre soit si proche de zéro qu'on ne puisse plus noter son exposant.
Et là, au lieu de le considérer comme valant 0, le processeur lui donne la valeur spéciale DEN, qui dégrade fortement les performances du programme.
 
Eviter cela n'est pas chose facile, et pose problème à tous ceux qui font notamment des calculs audio, où les lignes à décalage (une partie de ce qui sort est réinjecté dans l'entrée à l'infini) ne manquent pas de s'atténuer au bout d'un moment si on ne les sollicite pas.
 
Des méthodes ont été publiées pour tenter de parer à cet inconvénient.
La meilleure semble d'être, après chaque opération pouvant produire un DEN, d'ajouter puis de retrancher un *tout petit* nombre au résultat !  
 
A<- A+EPSILON
A<- A-EPSILON
 
En effet, un nombre quelconque A pas trop proche de zéro auquel on ajoute un très petit EPSILON vaut toujours A (en vertu de l'imprécision des nombres à virgule flottante). Si on lui soustrait ensuite EPSILON, il reste encore égal à A. L'opération n'a donc pas eu d'effet.
 
Par contre, DEN+EPSILON = EPSILON, et EPSILON-EPSILON=0. Nous l'avons essayé et ça fonctionne. Mais nous ne savons pas si un compilateur évolué ne va pas supprimer cette opération lors de la compilation : si on ne saisit pas l'astuce, ajouter puis retrancher le même nombre semble en effet totalement inutile.
by Olivier Guillion

Technical Wednesday, Jan 9th, 2013 at 05:01pm
À TOR ou à raison

 
 
 
La navigation sur Internet est tout sauf anonyme. Chaque accès à une page Web, chaque envoi ou réception de courrier, chaque connexion laisse une trace quelque part dans un fichier-journal, et cette trace est marquée par un numéro unique, qui permet de vous identifier : votre adresse IP.
 
Ainsi, si votre adresse IP reste fixe, nous devrions être capable, si nous en avions le temps et la volonté, de savoir exactement quel jour et à quelle heure vous vous êtes connectés sur notre site, quelles pages vous avez consulté, quels fichiers vous avez téléchargé, etc. Nous pouvons également savoir quel était le navigateur que vous utilisiez, en quelle version et sur quelle version du système d'exploitation.
 

 
Bon, vous aurez noté que, même si nous faisions cela, nous ne serions pas plus avancés, car il y a de fortes chances que vous nous répondiez "Ben oui, et alors ?" lorsque nous vous présenterons le dossier de 200 pages contenant les preuves de vos visites sur notre site.
 
Mais les choses seraient différentes si vous viviez dans un pays moins à cheval sur la liberté d'expression, où poster sur Internet simple texte, une photo ou une vidéo sur les événements dont vous avez été témoin peut vous envoyer en prison ou pire...
 
C'est pourquoi TOR a été conçu. Il s'agit d'un système collaboratif de routeur "en oignon". Voila comment cela fonctionne :
 
 Lorsque vous êtes connectés à TOR et que vous désirez visualiser une page Web, vous envoyez la demande un "noeud" interne de Tor choisi au hasard. Ce noeud n'est autre que la machine d'un autre utilisateur de TOR. Vous lui transmettez le nom de la page Web que vous désirez voir, mais cette demande est cryptée, et le noeud (qui voit votre adresse IP) ne peut pas savoir ce que vous demandez.
Cette demande est relayée vers plusieurs autres noeuds internes, histoire de brouiller les pistes, avant d'aboutir à un "noeud de sortie". Ce noeud a les moyens de décrypter la demande, et sait donc quelle est la page Web à lire, mais il ne connait que l'adresse IP du noeud précédent, pas la vôtre. Il lit la page et renvoie le résultat (crypté) qui fait tout le chemin inverse avant de vous parvenir. Vous seul avez le moyen de décrypter et de visualiser le contenu que vous aviez demandé tout à l'heure.
 
Le serveur Web interrogé, lui, n'a pu repérer qu'un accès provenant du noeud de sortie. Il ne peut pas savoir à qui est réellement destinée la page.
 

 
Ce n'est pas super rapide, mais cela fonctionne, et donne un bon niveau de sécurité dans l'anonymisation des accès au Web. Il devient assez compliqué de "tracer" quelqu'un, sa demande transitant par des machines prises au hasard, qui ne gardent pas de journal des transactions.
 
Tout aurait été parfait dans un monde du même nom. Mais c'était sans compter sur la propension humaine à gâcher toutes les bonnes idées lorsqu'elles peuvent vous apporter un intérêt personnel direct.
 
Les opprimés politiques ne sont pas les seuls à rechercher l'anonymat sur Internet. Les spammeurs de forum (ou de blog) également. Afin d'éviter d'être repérés par leur IP, ils utilisent soit des proxys anonymes, soit des réseaux de PC "zombies", soit... Tor. Et leur activité est importante, le site StopForumSpam recence à lui seul 4 500 000 signalements de spam par mois sur les forums et blogs participants.
 

Les zones foncées montrent les pays émettant le plus de spam

 
Ainsi les noeuds de sortie de Tor vont tous finir par envoyer du spam sur les forums et les blogs. Et devant cette avalanche, nombreux sont les administrateurs (nous en faisons partie) qui filtrent déjà les IP ayant été signalées comme envoyant du spam. On peut s'attendre à ce que certains réseaux sociaux fassent de même un jour.
 
Donc, on va probablement arriver à ce paradoxe : les opposants politiques qui désirent s'exprimer en contournant leur censure nationale n'auront qu'un accès partiel à Internet, l'accès aux zones d'expression publiques leur étant alors interdit par les mesures anti-spam ...
by Olivier Guillion
 1 comment.

Technical Monday, Jan 7th, 2013 at 05:24pm
Remontée vers la source

 
On se demande parfois comment les moteurs de recherche font pour indexer autant de pages Web, même les plus obscures.
Intuitivement, on se dit que, même s'il y a beaucoup de pages avec beaucoup de liens dans chaque page, il doit y avoir des pans entier du Web qui ne sont pas connectés entre eux.
 
Par exemple, la page A a des liens vers B et C, B a un lien vers C, C a un lien vers A, D a un liens vers E et E a un lien vers D.
On voit que les groupes de pages ABC et DE sont indépendants. Si le moteur de recherche sait que la page A existe, il indexera B et C mais n'aura jamais connaissance de D et E.
 
C'est pourquoi, aux débuts des moteurs de recherche, un lien "Ajouter un site" était présent en évidence sur la page de recherche. Il permettait d'avertir le moteur qu'un site existait, et ainsi le faire prendre en compte dans les recherches. Il a depuis disparu, la base de données étant maintenant assez vaste pour ne plus oublier grand-chose.
 
Mais comment font les moteurs de recherche pour avoir connaissance de pages peu ou pas liées, et ainsi fournir des résultats de recherche plus complets que leurs concurrents ?
 
Pour Bing (Microsoft), c'est simple. Il semblerait qu'il ignore délibérément les directives des webmasters demandant aux moteurs de ne pas indexer certaines parties de leur site (robots.txt). Cela permet à Bing d'avoir connaissance de pages que Google, qui respecte ces directives, ne connaîtra pas.
 
Quelle est la contre-offensive de Google ? Leurs algorithmes sont assez opaques, mais une petite aventure qui nous est arrivée aujourd'hui peut donner quelques pistes.
 
Nous possédions une page secrète sur notre site. Cette page n'est liée par aucune autre page. Nous connaissons simplement son nom (qui est introuvable par essai et erreur), ce nom n'étant stocké que dans les onglets de nos navigateurs personnels.  
 
Or cette page vient de se retrouver listée dans les résultats de recherches Google. Comment Google a-t-il connu ce nom de page secret ? Nous avons vérifié, aucun hacker n'a posté ce nom dans une autre page Web connue de Google. Nous-même, nous ne l'avons pas envoyé sur notre compte gmail et ne l'avons à notre connaissance pas copié/collé dans la barre de recherche Google.
 
Seules solutions possibles, d'après nous :
 
1-  Nous avons accédé à cette page en entrant son adresse dans la barre d'adresse de Safari, Firefox et Chrome. L'un de ces produits peut-il envoyer l'adresse de la requète à Google pour compléter sa base de données ?
 
ou
 
2- Lors de l'installation des navigateurs, nous avons transféré nos onglets de l'un à l'autre. Les onglets sont-ils envoyés à un moment ou à un autre à Google pour analyse?
 
Dans les deux cas, il nous semble qu'il y a violation manifeste de la sphère privée.  
Pour s'en assurer, il faudrait mettre en place un "pot à miel" : créer un ensemble de pages au nom compliqué, non liées de l'extérieur.
 
- Entrer l'URL de la première dans la barre de recherche Google
- Mettre la seconde dans les onglets de Chrome, Firefox & Safari
- Taper l'URL de la 3e dans la barre d'adresse des 3 navigateurs
- Renouveler l'opération régulièrement, jusqu'à ce que l'une des trois se retrouve référencée sur Google...
by Olivier Guillion
 4 comments.


Full view
Reduced view
Most recent first
Oldest first
All
Didier Guillion
Olivier Guillion
Sylvie Ricard
All
Myriad Life
To be seen
Memories
Mood
Dev News
Technical
30 previous days
Apr 2006
May 2006
Jun 2006
Jul 2006
Aug 2006
Sep 2006
Oct 2006
Nov 2006
Dec 2006
Jan 2007
Feb 2007
Mar 2007
Apr 2007
May 2007
Jun 2007
Jul 2007
Aug 2007
Sep 2007
Oct 2007
Nov 2007
Dec 2007
Jan 2008
Feb 2008
Mar 2008
Apr 2008
May 2008
Jun 2008
Jul 2008
Aug 2008
Sep 2008
Oct 2008
Nov 2008
Dec 2008
Jan 2009
Feb 2009
Mar 2009
Apr 2009
May 2009
Jun 2009
Jul 2009
Aug 2009
Sep 2009
Oct 2009
Nov 2009
Dec 2009
Jan 2010
Feb 2010
Mar 2010
Apr 2010
May 2010
Jun 2010
Jul 2010
Aug 2010
Sep 2010
Oct 2010
Nov 2010
Dec 2010
Jan 2011
Feb 2011
Mar 2011
Apr 2011
May 2011
Jun 2011
Jul 2011
Aug 2011
Sep 2011
Oct 2011
Nov 2011
Dec 2011
Jan 2012
Feb 2012
Mar 2012
Apr 2012
May 2012
Jun 2012
Jul 2012
Aug 2012
Sep 2012
Oct 2012
Nov 2012
Dec 2012
Jan 2013
Feb 2013
Mar 2013
Apr 2013
May 2013
Jun 2013
Jul 2013
Aug 2013
Sep 2013
Oct 2013
Nov 2013
Dec 2013
Jan 2014
Feb 2014
Mar 2014
Apr 2014
May 2014
Jun 2014
Jul 2014
Aug 2014
Sep 2014
Oct 2014
Nov 2014
Dec 2014
Jan 2015
Feb 2015
Mar 2015
Apr 2015
May 2015
Jun 2015
Jul 2015
Aug 2015
Sep 2015
Oct 2015
Nov 2015
Dec 2015
Jan 2016
Feb 2016
Mar 2016
Apr 2016
May 2016
Jun 2016
Jul 2016
Aug 2016
Sep 2016
Oct 2016
Nov 2016
Dec 2016
Jan 2017
Feb 2017
Mar 2017
Apr 2017
May 2017
Jun 2017
Jul 2017
Aug 2017
Sep 2017
Oct 2017
Nov 2017
Dec 2017
Jan 2018
Feb 2018
Mar 2018
Apr 2018
May 2018
Jun 2018
Jul 2018
Aug 2018
Sep 2018
Oct 2018
Nov 2018
Dec 2018
Jan 2019
Feb 2019
Mar 2019
Apr 2019
May 2019
Jun 2019
Jul 2019
Aug 2019
Sep 2019
Oct 2019
Nov 2019
Dec 2019
Jan 2020
Feb 2020
Mar 2020
Apr 2020
May 2020
Jun 2020
Jul 2020
Aug 2020
Sep 2020
Oct 2020
Nov 2020
Dec 2020
Jan 2021
Feb 2021
Mar 2021
Apr 2021
May 2021
Jun 2021
Jul 2021
Aug 2021
Sep 2021
Oct 2021
Nov 2021
Dec 2021
Jan 2022
Feb 2022
Mar 2022
Apr 2022
May 2022
Jun 2022
Jul 2022
Aug 2022
Sep 2022
Oct 2022
Nov 2022
Dec 2022
Jan 2023
Feb 2023
Mar 2023
Apr 2023
May 2023
Jun 2023
Jul 2023
Aug 2023
Sep 2023
Oct 2023
Nov 2023
Dec 2023
Jan 2024
Feb 2024
Mar 2024
Apr 2024
May 2024
Jun 2024
Jul 2024
Aug 2024
Sep 2024
Oct 2024
Nov 2024
Nov 6th, 2024 at 06:34pm 
Article from Olivier Guillion
Harmony Assistant 9.9.9 beta étape 42
Nov 6th, 2024 at 06:26pm 
Comment from Antoine Bautista
Bouton sup....
Nov 6th, 2024 at 06:26pm 
Comment from Antoine Bautista
Bouton sup....
Nov 6th, 2024 at 06:26pm 
Comment from Antoine Bautista
Bouton sup....
Nov 6th, 2024 at 06:26pm 
Comment from Antoine Bautista
Bouton sup....
Nov 5th, 2024 at 09:44am 
Comment from Olivier Guillion
Utilité
Nov 4th, 2024 at 09:37pm 
Comment from CRI-CRI
Gommage sélectif
Nov 4th, 2024 at 05:42pm 
Article from Olivier Guillion
Harmony Assistant 9.9.9 beta étape 41
Nov 4th, 2024 at 05:42pm 
Article from Olivier Guillion
Harmony Assistant 9.9.9 beta étape 41
Nov 4th, 2024 at 05:42pm 
Article from Olivier Guillion
Harmony Assistant 9.9.9 beta étape 41

Top of page
Legal information Cookies Last update:  (c) Myriad