samedi 30 octobre 2010

Décoration rétro-geek

Au fond d'un carton, j'ai retrouvé une pile de vieilles disquettes. D'une utilité douteuse, elle me faisaient quand même de l'Å“il. Il me reste bien un PC avec le lecteur adéquat mais il faut le rebrancher. Et puis, 1.44Mo, à  l'heure ou la moindre petite clef USB fait 4Go ...

disquettes

Mais tout de même, à  une époque elles ont tenues une grosse place dans mon univers informatique. Que d'heures passées à  faire des copies bercé par le doux son du lecteur. Que de montées d'adrénaline en reconnaissant le bruit caractéristique du secteur illisible ... Ma nostalgie m'empêche de les jeter ! Je leur doit de les recycler.

Et puis elles me sont apparues telle qu'elles sont, des carrés tous identiques, de couleurs variées. Mais bien sur, ce sont des pixels ! Et vu leur taille la résolution ne doit pas être bien élevée. Des gros pixels, une faible résolution, la nostalgie ... elles se sont évadées d'une borne d'arcade ! Mais pas n'importe laquelle : Space Invader !

Une fois la révélation faite, le reste est simple, quelques étiquettes décollées pour leur rendre leur pureté originelle, un peu de double-face et les voila enfin de retour à  leur état naturel.

disquettes

Avouez qu'il a de la gueule mon crabe :)

disquettes


Commentaires du post original

vendredi 22 octobre 2010

De l'utilisation de Sketchup pour l'aménagement intérieur

En voyant l'article de Nicolas sur le planet made-in-fr, je me suis rappelé un article en cours depuis quelques mois. Voici donc l'occasion de le finir :)

Background: notre cuisine est plutôt petite et ouverte sur la pièce de vie principale. Ce qui veut dire, peu de rangements et un besoin d'organisation pour que le bordel ne se voit pas. Pour cela nous avons prévu une petite arrière-cuisine qui se doit d'être aménagée au mieux avec des étagères. Seulement cette pièce est très torturée possède un vélux, deux sous-pentes perpendiculaires et héberge le four. Exit donc les aménagements tout fait ou les étagères Ikea. Nous allons devoir faire du sur-mesure.

Sketchup

Jusqu'à  présent, j'ai toujours commencé par des représentations en 3D à  main levée suivis de plans à  l'échelle, le tout sur papier (par exemple pour la cuisine). Jusqu'à  ce que je découvre Sketchup. Pour ceux qui ne connaissent pas :

Google SketchUp est un logiciel de modélisation 3D, d'animation et de cartographie orienté vers l'architecture. Initialement édité par la société @Last Software (racheté par Google depuis lors), ce logiciel se caractérise par des outils simples (rotation, extrusion, déplacement, etc.), qui en font un logiciel de 3D très différent des modeleurs 3D classiques.
source: Wikipédia

Après une courte phase d'apprentissage[1] on se retrouve très rapidement capable de modéliser des pièces, des meubles à  l'échelle. Vous pouvez positionner facilement les cotes, faire différents essais, voir votre mise en place sous tous les angles, gérer les alignements ...

100 fois sur le métier, remettez votre ouvrage, n'a jamais été aussi facile :)

Une fois la modélisation faite, le maitre d'ouvrage[2], peut étudier la proposition sous tous les angles. on est donc sur que cela conviendra parfaitement aux besoins avant de commencer quoi que ce soit. Et ça n'a pas de prix :)

Un autre énorme avantage dans mon cas : le calcul automatique des cotes. J'ai commencé par modéliser ma pièce biscornue. une fois fait, j'ai positionné chaque étagère à  sa hauteur (en fonction de ce que l'on voulait mettre dessus) sans me préoccuper de leur taille[3]. Enfin il m'a suffit de positionner les cotes pour avoir directement la taille de chaque morceau de bois ! Au final, lors de la découpe, je n'ai pas eu plus d'un cm de décalage par rapport aux plans.

Dernier point, l'optimisation des découpes. C'est toujours la galère de calculer combien de planche de CP il va falloir pour minimiser les pertes. On peut découper à  l'échelle les étagères en papier et les positionner sur d'autres plus grandes. On peut aussi sortir la calculette et attraper un mal de tête. Avec Sketchup, on fait pareil mais plus facilement et sans papier ni aspirine :) Et hop, un plan de découpe !

Réalisation

Malheureusement, je n'ai pas de photos de la construction. Voici quand même quelques détails sur celle-çi.

Les étagères sont en contre-plaqué de 20mm. La portée étant très grande (2.44m au plus) et le poids prévu aussi (conserves, four, bouteilles d'eau), le CP apporte une rigidité bien venue. Pour les plus grandes, j'ai même ajouté une cornière en acier sur l'avant histoire de renforcer encore cela.

Elles reposent, pour toute la longueur, sur des tasseaux fixés au mur. Ces tasseaux sont biseautés[4] pour s'adapter à  l'angle de la sous-pente. Les cotés des étagères sont biseautés de la même manière.

Une série de "poteaux" placés entre chaque étagère limitent la portée sur l'avant. Ainsi l'accès est maximisé et la surface est très peu compartimentée. La tranche de chaque étagère est embellie d'une baguette simplement clouée pour cacher la feuillure du CP et arrondir les angles.

Au final, c'est très logeable et très solide[5] et le maitre d'ouvrage est satisfait.

Notes

[1] les tutos vidéo sont super

[2] comprendre madame

[3] alignement automatique !

[4] merci la scie circulaire sous table

[5] je monte dessus sans que ça bouge


Commentaires du post original

jeudi 27 mai 2010

Un peu de mécanique

tableauPoint de moteurs ou d'arbre à  cames ici, ce qu'on appelle mécanique dans le monde du hardware concerne toutes les pièces qui ne sont pas électroniques. Par exemple les boitiers, la face avant d'une carte, le chà¢ssis ... Et dans notre cas, une baie 19' fait maison.

Quand j'ai fait l'électricité dans notre maison, j'ai décidé de faire en même temps un cà¢blage basse tension complet. Il peut servir à  tout ce que je veux, ethernet bien sur, mais aussi téléphone, capteurs déportés, liaisons séries etc... L'idée était donc de banaliser tout cela en cà¢ble ethernet et prises RJ45, le tout revenant vers la GTL en une armoire de brassage. Celle-ci doit regrouper les platines de brassage, un switch ethernet, le répartiteur téléphonique et les équipements communicants. On peut alors affecter une prise à  une fonction simplement en la brassant vers l'équipement adéquat.

Au vu de la quantité de prises prévues[1] le mieux était de s'orienter vers du matériel professionnel en 19'[2]. Mais une baie 19' prend beaucoup trop de place et coute 1 bras. J'ai donc décidé de faire cela sur mesure.

Le matériau de base se trouve partout : des cornières perforées prévues pour monter des étagères métalliques. On choisira le modèle avec des trous larges permettant de s'adapter facilement à  l'entraxe des équipements 19'. Dans mon cas, deux cornières furent suffisantes. Il suffit alors de découper aux dimensions voulues, ici du 4U : 2 platines 1U, un switch 1U et un dernier U pour des équipements actifs.

Un petit montage à  blanc :

montage à  blanc

et on peut passer à  l'installation. Chaque morceau en contact avec le mur est solidement fixé. Il ne s'agit pas que tout tombe[3] ! Les cornières sont reliées par des boulons et les coins sont renforcés par des équerres métalliques prévues pour. le cadre est bien entendu relié à  la barrette de terre.

Emplacement prévu On fixe bien au mur Ecrous/boulons plus renforts de coin Et hop avec les platines RJ45

Si la construction de la baie n'a durée qu'une nuit, le cà¢blage des platines s'est déroulé sur plusieurs mois au fur et à  mesure des besoins. Sur la photo finish on retrouve tous les composants du schéma ci-dessus :

  • platines de brassage à  gauche
  • switch netgear en bleu
  • répartiteurs téléphone fixe et adsl en haut
  • box adsl[4]
  • le DTI (beige tout en haut)

et scotché sur la porte les plans qui permettent de retrouver toutes les prises :)

pas fini mais déjà  en service état actuel

Voila, et pour le fun, une dernière photo de la GTL avant cà¢blage :)

Notes

[1] 33

[2] pas trop cher sur ebay

[3] et comme tout bon bricoleur du dimanche, je blinde!

[4] je vous laisse deviner le FAI :)


Commentaires du post original

vendredi 14 mai 2010

Liaison série : RS232 vs TTL

Un petit article pour rappeler quelques bases, ça ne fait jamais de mal. Outre les niveaux de voltage tension, il existe une autre différence de taille entre le RS232 et le TTL, la représentation des 0 et des 1 ! Tout le monde le sait[1]. Mais habitués que nous sommes à  utiliser des MAX232 & co[2], quand il s'agit de manipuler les signaux, il arrive qu'on mette du temps à  s'en souvenir[3]. Vous l'aurez compris, cela m'est arrivé récemment :) Donc petit rappel.

La liaison série RS232 utilise pour représenter le 1 un niveau compris entre -3V et -25V et pour le 0 entre +3V et +25V. Généralement en sortie de nos PC on trouve -12V et +12V.

En TTL par contre le 0 est représenté par une tension entre 0 et 0.7V alors que le 1 est entre 2.2V et 5V.

La conversion ne se borne donc pas à  ramener les -12/+12 vers 0V et 5V, il faut aussi inverser les signaux[4] !

Preuve par l'exemple, voici un port série de PC branché sur un MAX3235 le tout relié à  un oscillo.

montage

En rouge, channel 1, une sonde x10 sur le fil 3 de la DB9, Tx du RS232 donc. En bleu, channel 2, une sonde x10 sur la patte 1 du max3235 soit Rx en TTL. Du PC, on envoi 2 caractères C en 9600-8N1. Nous sortons à  l'oscillo la jolie trace suivante : trace

  • En Idle la ligne est à  1, -10V en RS232 et +5V en TTL
  • le bit de start S passe à  0
  • les 8 bits de données pour C, caractère ascii 0x43 soit b01000011, sachant que le LSB est transmit en 1er
  • le bit de stop S' à  1
  • le caractère suivant ...

Voila, voila, du très simple, la base, mais si cela permet à  quelqu'un d'éviter de perdre autant de temps que moi, c'est déjà  cela de gagné :)

Aller et pour essayer de donner un peu de contenu à  cet article, j'ai trouvé des vidéos sur l'utilisation de l'oscilloscope très bien faites. C'est chez BTCinstrumentation.

Notes

[1] ou au moins l'a su

[2] on préfèrera les nouveaux modèles sans capa externes !

[3] surtout la nuit

[4] youhou, coucou la NAND


Commentaires du post original

mardi 9 février 2010

Don de livres

Il y a quelques temps, j'ai récupéré dans une poubelle au boulot des livres techniques (comment peut-on jeter des livres !!!) Malheureusement le besoin de place se fait cruellement sentir sur mes étagères et il faut donc m'en débarrasser :(

Ce sont principalement des manuels de référence hardware pour i386, i486, PowerPC divers ... La liste complète. Voir aussi le thread sur fr.comp.ordinosaures

A prendre en main propre dans le 22, ou par la poste contre FdP. J'ai mis le poids approximatif à  côté de chaque livre pour pouvoir estimer les frais.

Je peux scanner les tables des matières à  la demande.

A vot' bon cœur


Commentaires du post original

Éditer des fichiers XML en ligne de commande : xmlstarlet

Présentation

XML!!!!

De nos jours, nous sommes cernés de fichiers XML. Ils sont présents partout que ce soit pour les préférences des applications (gconf pour Gnome) les fichiers en rapport avec les GPS (GPX, KML), les descriptions d'interface graphiques (Qt UI, GTK Glade, Mozilla XUL), les documents (OpenOffice ODF Microsoft OOXML) etc... La liste serait sans fin.

Je ne rentrerai pas ici dans les considérations polémiques sur le bien fondé de ces choix, mais les faits sont la : nous devons faire avec. Il est relativement facile d'écrire une application capable de travailler avec ces fichiers, les langages de haut niveau proposent tous des API dédiées plus ou moins simples. Même en C la libxml2 rend cela relativement facile.

Mais la complication vient lorsque l'on veux travailler en shell. La ou des fichiers à  plat étaient faciles à  utiliser avec sed/grep/awk et quelques regex bien senties, le XML est une horreur sans nom. Sortir le Python ou le Perl n'est pas toujours possible (disponibilité sur la plateforme, versions datant de Mathusalem ...). Dans ces moments, on se rabat souvent sur bash[1]. Et c'est la que xmlstarlet va vous venir en aide. Il s'agit d'un programme en ligne de commande qui va se charger du parsing XML et vous permettre de lire et modifier facilement[2] vos fichiers.

Installation

xmlstarlet devrait être disponible dans toutes les bonnes crémeries[3].

Par exemple pour ArchLinux, il est dans AUR

yaourt -S xmlstarlet

Ou bien pour debian et dérivées

aptitude install xmlstarlet

Sinon, il est fourni dans une version portable compilée statiquement avec la libxml2 et la libxslt. Téléchargez le rpm xmlstarlet-1.0.1-1.i586.rpm sur SourceForge. Il suffit alors de le décompresser dans un répertoire temporaire avec la commande[4] :

rpm2cpio xmlstarlet-1.0.1-1.i586.rpm | cpio -idmv

et de récupérer le binaire présent dans ./usr/bin/xml

Utilisation

hello

Nous allons nous contenter de lire et de modifier des valeurs et des attributs. Pour une utilisation plus avancée, allez lire la documentation.

Comme exemple, nous allons utiliser un fichier UI de Qt très simple. Une boà®te de dialogue avec un bouton sans layout ni rien.

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QPushButton" name="pushButton">
   <property name="text">
    <string>Hello</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

Lecture

Commençons par regarder la structure :

$ xml el hello.ui
ui
ui/class
ui/widget
ui/widget/property
ui/widget/property/string
ui/widget/widget
ui/widget/widget/property
ui/widget/widget/property/string
ui/resources
ui/connections

Nous retrouvons ici tous les champs de notre fichier XML. Ce sont ces chaines de caractères qui vont nous permettre d'accéder aux valeurs à  lire et modifier.

On peut aussi regarder les paramètres '-a' et '-v' qui donnent plus d'infos sur la structure. (attributs et valeurs). Par exemple pour le bouton :

$ xml el -v hello.ui
...
ui/widget/widget[@class='QPushButton' and @name='pushButton']
ui/widget/widget/property[@name='text']
ui/widget/widget/property/string

Maintenant, si nous voulons voir le texte du bouton, on va utiliser la commande 'sel' :

$ xml sel -t -v "/ui/widget/widget/property/string" hello.ui
Hello
  • sel: pour selectionner un chemin (xpath)
  • -t: requête dans le document
  • -v: on veux la valeur
  • /ui/widget/widget/property/string : c'est le chemin que nous cherchons.

Alors bien sur ici, nous n'avons qu'un seul bouton. Mais il faut pouvoir caractériser plus finement a chaine recherchée. C'est à  dire la property text du widget dont le nom est pushButton. Cela donne donc :

$ xml sel -t -v "/ui/widget/widget[@name='pushButton']/property[@name='text']/string" hello.ui
Hello
  • widget[@name='pushButton'] nous permet de dire que l'on cherche le widget dont l'attribut name est pushButton
  • idem pour property[@name='text']

On peut aussi chercher les valeurs des attributs. Quelle est la classe de ma fenêtre principale ?

$ xml sel -t -v "/ui/widget/@class" hello.ui
QDialog
  • @class: nous cherchons l'attribut class de widget

Modification

Maintenant, nous allons utiliser la commande 'ed' pour modifier notre fichier XML.

$ xml ed -u "/ui/widget/widget[@name='pushButton']/property[@name='text']/string" -v GoodBye hello.ui
...
      <property name="text">
        <string>GoodBye</string>
      </property>
...
  • -u: update
  • -v: nouvelle valeur

De même pour changer un attribut, par exemple, le nom de notre bouton :

$ xml ed -u "/ui/widget/widget[@name='pushButton']/@name" -v btn hello.ui
...
    <widget class="QPushButton" name="btn">

Voyez aussi les options :

  • -i: pour insérer un élément
  • -d: pour effacer un élément
  • ...

Voila, avec ces quelques commandes simple, on peut déjà  sortir quelque chose de ces fichiers XML à  partir d'un petit scrip shell. xmlstarlet permet d'en faire beaucoup plus, je vous renvoi donc une nouvelle fois vers la documentation

Notes

[1] ou pire csh :(

[2] enfin, relativement, on parle quand même d'XML la !

[3] votre gestionnaire de paquet favoris

[4] Sous ArchLinux, il existe un script rpmextract.sh qui fait le boulot


Commentaires du post original