Twitter YouTube SoundCloud LinkedIn

Tiennot blog

Accueil

1 2 3 4 5 6 7 ...
0

Vidéo : la surfusion

Mardi 26 février 2013, 21:48 (par admin)

Depuis quelques temps, je publie des vidéos sur une chaîne YouTube (http://www.youtube.com/tiennotg). Voici la dernière d'entre elles, qui parle d'un phénomène physique un peu curieux : la surfusion.

Dans cette vidéo, j'explique rapidement en quoi consiste le phénomène physique, puis je réalise deux expériences : une première pour déterminer à quel moment du refroidissement de la bouteille se produit la surfusion, et la deuxième pour montrer l'instabilité de l'eau surfondue en précipitant la formation de glace à l'aide d'une perturbation.


Télécharger la vidéo : ogg, mp4.
À retrouver ici sur YouTube

Je ne vais pas détailler plus longtemps le contenu de la vidéo (vous n'avez qu'à la regarder :p), mais je vais en revanche apporter quelques précisions sur le dispositif électronique utilisé pour les mesures au cours de la première expérience.

Pour la mesure de transparence, le fonctionnement est très simple : une photorésistance est placée face à une LED qui l'éclaire. Plus la bouteille contient de glace, plus la luminosité reçue par la photorésistance est faible, d'où une mesure de transparence. Cette dernière est tout simplement montée en série avec une résistance de 30 kOhms (valeur déterminée par essais successifs), de manière à se trouver à environ 4,5 volts pour la mesure maximale. Ceci permet d'exploiter pleinement le convertisseur analogique-numérique qui suit, qui peut supporter des tensions allant jusqu'à 5 volts. La transparence est alors proportionnelle à la tension aux bornes de la résistance de 30 kOhms.

Pour la mesure de température, c'est un LM 35DZ qui est utilisé. Ce capteur peut mesurer des températures allant de -55 °C à +150 °C. Pour l'alimenter, il est nécessaire d'utiliser une alimentation symétrique. Comme je n'en avait pas sous la main, j'ai utilisé une astuce pour la simuler : en utilisant deux résistances de 10 kOhms en diviseur de tension, on peut obtenir une alimentation symétrique -4,5 volts / 4,5 volts à partir d'une non symétrique de 9 volts (voir schéma ci-dessous). Du reste, le fonctionnement du capteur est assez simple ; je vous laisse vous reporter à la documentation du constructeur pour en savoir plus.

image : /images/blog/surfusion_01.png

Enfin, pour pouvoir enregistrer les données sur l'ordinateur, j'ai choisi d'utiliser une carte Arduino Uno. D'une part, ce type de carte est très simple à programmer, d'où un gain de temps conséquent. D'autre part, elle peut se connecter à un ordinateur via un port USB, tout en émulant sur ce dernier un port série. La carte se commande donc comme à travers une liaison série, mais par un port USB, ce qui permet de s'affranchir du problème de la disparition du port série sur les ordinateurs les plus récents (bien que celui de l'expérience en comporte un). Pour enregistrer les données, j'utilise un script écrit en python, qui est extrêmement simple : il demande à l'Arduino de relever les mesures, et les enregistre dans un fichier avec le temps écoulé depuis le début de l'expérience. Les convertisseurs analogique-numérique de l'Atmega 328 sont largement suffisant pour cette application : ils possèdent une résolution de 10 bits.

1

Jingles radio

Lundi 29 octobre 2012, 16:41 (par guilhem)

Certains d'entre vous le savent, je suis animateur/réalisateur d'un talk show sur la radio étudiante EvryOne - il s'agit de Tech&More, les jeudis soirs. Dans ce cadre, je me suis amusé à créer quelques jingles amusants pour ponctuer un peu mon émission. Je vous les propose donc, sous licence Creative Commons, comme spécifié en pied de page. Amusez-vous bien !

Jingle blague pas drôle
Jingle loser aigu
Jingle loser grave
Jingle loser trombone

Les sons sont au format mp3, 256 kbps 48 kHz.

0

Portrait ou paysage ?

Vendredi 13 juillet 2012, 22:04 (par guilhem)

L'arrivée de nouveaux terminaux mobiles s'accompagne de nouvelles résolutions d'affichage, ce qui est d'autant plus perturbant que certains écrans peuvent basculer, comme sur les tablettes. Certes, il est possible de rendre son design adaptatif grâce à des dimensionnements relatifs ou des media queries, mais il peut être parfois intéressant d'optimiser l'espace avec du javascript, ou tout simplement ajouter des effets lors du basculement.

Travaillant actuellement sur une mission de développement web où j'ai à me soucier de ces problématiques, je me suis essayé à la tâche ardue de détecter le basculement et l'orientation du terminal en javascript - en l'occurrence, une tablette. Et la solution n'est pas aussi simple qu'il n'y paraît...

Pour les impatients, le script fonctionnel se trouve à la fin du billet.

window.orientation, c'est pas encore ça...

Pour déclencher une fonction à chaque basculement, il suffit de l'attacher à l'évènement window.onorientationchange. La variable window.orientation nous donne alors l'orientation du terminal par rapport à sa position de référence : 0°, 90°, -90° ou 180°.

/* Ce code ne donne pas le résultat attendu... */

window.onorientationchange = function() {
  var orientation = window.orientation;

  if (orientation == -90 || orientation == 90)
    alert('mode paysage');
  else
    alert('mode portrait.');
}

Mais cela ne marche pas. Pour comprendre pourquoi, prenez un iPad dans une main, une Galaxy Tab dans l'autre. Si vous les placez dans leurs positions normales (bouton en bas pour le premier, logo Samsung en bas pour la seconde), vous remarquerez que l'un est en mode portrait, l'autre en mode paysage. Ainsi, le 0° peut correspondre indifféremment à l'un ou l'autre mode suivant le terminal, et idem pour les autres valeurs !

On y est presque !

Pour s'en sortir, l'idée serait de comparer la largeur et la hauteur de l'écran pour savoir si on est en portrait ou en paysage à 0°. Ainsi, on peut en déduire l'orientation pour les autres valeurs.

/* Ce code ne fonctionne toujours pas... */

/* Appelé quand le device passe en mode portrait. */
function mode_portrait() {
  alert('mode portrait.');
}

/* Appelé quand le device passe en mode paysage. */
function mode_paysage() {
  alert('mode paysage.');
}

window.onorientationchange = function() {
  var orientation = window.orientation;

  if (screen.width > screen.height)
  {
    if (orientation == -90 || orientation == 90)
      mode_portrait();
    else
      mode_paysage();
  }
  else
  {
    if (orientation == 90 || orientation == -90)
      mode_paysage();
    else
      mode_portrait();
  }
}

Ce code fonctionne très bien pour iPad, par exemple. Mais sur la Galaxy Tab, le message affiché sera toujours le même. Pourquoi ? Parce que les valeurs mêmes de screen.width et screen.height changent avec l'orientation sur cette tablette, ce qui n'est pas le cas sur l'iPad. Nous nous retrouvons donc face à un beau casse-tête !

La solution

Voici la solution que je vous propose. Tout d'abord, les hauteur et largeur de l'écran sont relevées au lancement du script. Puis, lors d'un basculement, on compare les valeurs de screen.width et screen.height avec celles enregistrées. Si celles-ci ont changées, on se fie à cette donnée pour déterminer l'orientation. En revanche, si elles restent inchangées, on utilise le script présenté juste avant.

/* La solution !
 * Licence : GNU/GPL 2.
 */

var width = screen.width;
var height = screen.height;

/* Appelé quand le device passe en mode portrait. */
function mode_portrait() {
  alert('mode portrait.');
}


/* Appelé quand le device passe en mode paysage. */
function mode_paysage() {
  alert('mode paysage.');
}

window.onorientationchange = function() {
  var orientation = window.orientation;

  /* Trois cas de figure possible :
   *  - le device a un écran plus large que haut.
   *  - le device a un écran plus haut que large.
   *  - le device trouve intelligent de modifier la largeur
   *    et la hauteur de l'écran en fonction de son orientation...
   * 
   * Du coup, soit la largeur/hauteur de l'écran change, et
   * on en déduit à partir de là l'orientation, sinon il faut
   * se fier à la variable window.orientation, et en déduire
   * d'après le ratio de l'écran l'orientation...
   */

  if (screen.width != width || screen.height != height)
  {
    width = screen.width;
    height = screen.height;

    if (screen.width > screen.height)
      mode_paysage();
    else
      mode_portrait();
  }
  else if (screen.width > screen.height)
  {
    if (orientation == -90 || orientation == 90)
      mode_portrait();
    else
      mode_paysage();
  }
  else
  {
    if (orientation == 90 || orientation == -90)
      mode_paysage();
    else
      mode_portrait();
  }
}

Cette solution n'est peut-être pas la plus élégante (si vous avez mieux, je suis intéressé), mais elle a le mérite de fonctionner correctement.

Ce qu'en dit la norme

La notion d'orientation a été vraisemblablement introduite par Apple avec l'iPhone et l'iPod. À l'époque, seuls ces deux terminaux prenaient en charge l'évènement window.onorientationchange et la variable window.orientation. Actuellement, elle est en passe d'être normalisée par le w3c, ce qui explique pourquoi la plupart des périphériques tactiles la prennent en charge. Cependant, la norme est encore à l'état de brouillon.

Malgré tout, l'orientation n'est pas restreinte aux seuls modes portraits ou paysage, comme on pourrait s'y attendre. Ainsi, le fabricant a toute la liberté de choisir la position de référence qu'il souhaite.

Concernant la largeur et la hauteur de l'écran, je n'ai pas vu qu'il était imposé qu'elles soient fixées. Ce détail est laissé à l'appréciation du constructeur, ce qui explique le comportement de la Galaxy Tab.

Comme vous pouvez le constater, la norme reste encore floue aujourd'hui, d'où des comportements différents suivant les terminaux. On ne peut qu'espérer qu'à l'avenir, tout ceci se clarifie un peu.

0

ACTA est mort

Mercredi 4 juillet 2012, 23:34 (par guilhem)

La nouvelle s'est répandu sur le web comme une traînée de poudre : les députés européens ont aujourd'hui rejeté une fois pour toutes le traité ACTA à 478 voix contre 39. Ce projet de loi constituait une atteinte intolérable aux libertés fondamentales des eurocitoyens, et même aux citoyens du monde entier. Il prévoyait, entre autres, de filtrer l'internet et de censurer les propos des internautes. La liberté d'expression sur le web s'en serait trouvée considérablement atteinte.

image : /images/blog/acta_001.png

Cette victoire pour la démocratie est l'occasion de nous rappeler que nous, citoyens, avons le pouvoir de dire non aux politiques abusives qui nous sont parfois imposées. Même si l'avenir semble assombri par les différents projets de lois liberticides tels que SOPA, PIPA ou Hadopi, nous pouvons encore croire en un monde où la liberté d'expression et le libre échange seront respectés.

Mais ACTA nous montre également qu'il faut rester vigilant. La démocratie n'est pas un acquis ; il est de notre devoir de veiller à ce qu'elle ne nous échappe pas.

Pour en savoir plus sur la neutralité du net : la quadrature du net.

0

Une histoire de thèmes...

Samedi 9 juin 2012, 23:36 (par guilhem)

Une question qui m'a souvent été posée est comment intégrer des applications utilisant GTK+ dans KDE. Vous l'avez peut-être remarqué, certains logiciels comme Firefox sont assez laids sous KDE, et jurent avec le thème par défaut. La première partie de ce billet vous donne la marche à suivre pour résoudre ce problème ; la seconde partie est plus technique, et vous explique ce qui se passe derrière.

Comme souvent sur ce blog, les explications données sont applicables pour Debian - ici, la version stable : Squeeze. Il vous faudra peut-être adapter un peu suivant votre distribution.

Mais c'est moche !?

Par défaut sous KDE, les applications GTK+ ont une apparence assez laide, comme on peut le voir sur l'image ci-dessous.

image : /images/blog/gtk_qt_01.png
Firefox sous KDE

Pour y remédier, il suffit d'installer deux paquets :

# apt-get install gtk-qt-engine kde-config-gtk-style

Ouvrez alors l'éditeur de configuration du système, et cliquez sur l'icône Apparence. Un nouveau choix est apparu tout en bas de la liste. Vous pouvez dès lors appliquer le thème de KDE aux applications GTK+ en choisissant « Appliquer le style de KDE aux applications GTK ».


image : /images/blog/gtk_qt_02.png
Éditeur de configuration du système KDE


image : /images/blog/gtk_qt_03.png
Choix du thème pour GTK+

Cette solution, bien qu'acceptable, souffre cependant d'un certain nombre de bogues, comme les barres de défilement qui s'affichent mal sous Firefox, ou des résultats parfois inesthétiques avec certaines fenêtres GTK+. Pour ne plus avoir à subir ces problèmes, il est possible d'utiliser un thème différent pour les applications GTK+.

image : /images/blog/gtk_qt_04.png
Nouveaux choix possibles

Installez le paquet suivant :

# apt-get install gtk2-engines

Choisissez alors « Utiliser un autre style ». Sélectionnez un thème qui vous convient, et enjoy !

Quelques explications...

L'environnement de bureau KDE est basé sur une bibliothèque graphique nommée Qt (en réalité, c'est bien plus qu'une simple bibliothèque graphique). De nombreuses applications utilisent une autre bibliothèque nommée GTK+ : c'est le cas par exemple des logiciels de Mozilla, et de l'environnement de bureau Gnome.

Le problème trouve son origine dans l'utilisation de ces deux bibliothèques différentes. Chacune possède son propre moteur de thèmes - l'organe interne chargé d'appliquer le thème aux éléments graphiques. Et un thème utilisé pour l'une est incompatible avec l'autre. Ainsi, il est impossible d'appliquer le même thème aux deux bibliothèques.

Sous Gnome, aucun problème : comme celui-ci utilise GTK+, il peut appliquer le même thème à Firefox ou aux autres applications utilisant GTK+. Les logiciels basés sur Qt, comme VLC par exemple, s'affichent avec le thème par défaut de Qt, qui présente une apparence acceptable.

Sous KDE, les applications Qt s'affichent correctement, car l'environnement de bureau est basé sur la même bibliothèque. En revanche, les fenêtres utilisant GTK+ apparaissent avec le thème par défaut nommé Raleigh, qui est - il faut bien le dire - affreusement laid. Pour corriger cela, il est possible d'utiliser un moteur de thème un peu spécifique, puisqu'il permet de convertir un thème Qt vers un thème GTK+ : il s'agit du paquet gtk-qt-engine.

Malheureusement, ce dernier est assez bogué. Pour remédier à cela, je n'ai pas encore trouvé mieux que de forcer GTK+ à utiliser un autre thème. Ainsi, les applications GTK+ offrent une apparence correcte, même si elle est différente du reste du système...

1 2 3 4 5 6 7 ...