Styles

samedi 21 septembre 2013

Blender : mes débuts dans le monde de la 3D

La 3D, pour un informaticien, a toujours quelque chose d'attirant en soi : produire des images virtuelle par la simple entremise de la puissance de calcul d'un ordinateur et des algorithmes de rendu de plus en plus réalistes.

Quand j'étais un gamin, je jouais avec Sculpt4D sur Amiga, et je trouvais vraiment génial de pouvoir produire des images à partir d'une modélisation d'une scène.

Dans le monde de la source ouverte, un logiciel tient la dragée haute à nombre d'autres produits commerciaux. Il s'agit de Blender. Cet outil est magnifique pour créer des modèles en trois dimensions, créer des rendus de toute beauté, et va même jusqu'à permettre de faire de l'animation et du montage vidéo, et ce, avec une qualité digne de tous les autres produits professionnels.

Entrer dans le monde de Blender n'est pas chose aisée. L'interface utilisateur est très riche, et s'organise en fenêtres qui ne se chevauchent pas. De nombreuses touches de raccourcie existent et permettent d'être productif. Blender offre en standard, la capacité d'enregistrer des "screencasts", des enregistrements vidéos de ce que vous faites dans Blender. Grâce à ça, de nombreux tutoriels vidéos existent et sont maintenant la manière privilégiée d'apprendre à utiliser Blender.


Je viens de finir un tutoriel du site suisse kopilot.ch : Faire une pile de DVD avec projection d'ombre sur fond transparent et canal alpha de l'ombrage.

 

Voici le rendu que j'ai réalisé en suivant ce tutoriel :


Blender est un monde à lui tout seul et vaut vraiment le coup qu'on s'y attache.

samedi 6 juillet 2013

Mort de Douglas Engelbart, l’inventeur de la souris d’ordinateur

"Le monde virtuel pleure Doug Engelbart, l’inventeur de la souris d’ordinateur décédé mardi à son domicile de la Silicon Valley. A l’origine, la souris était une boîte en bois avec deux roues de métal. Ce dispositif de pointage pour ordinateur a été amélioré par l’informaticien suisse Jean-Daniel Nicoud de l’École polytechnique fédérale de Lausanne (EPFL)." [...]


La première souris au monde !

CI News


The Mother of all Demos

samedi 8 juin 2013

Rich Hickey, créateur de Clojure : l'orienté objet est très surfait

Écoutons ce que Rich Hickey, créateur du langage Clojure nous dit de l'orienté objet dans un article donnant les raisons qui l'ont poussées à construire Clojure:

L'orienté objet est surfait:
  • né de la simulation : maintenant utilisé pour tout, même quand cela est inapproprié : cela est encouragé par Java/C# dans toutes les situations du à leur manque de support (idiomatic) pour n'importe quoi d'autre
  • Les objets à état mutables sont maintenant les nouveaux codes spaghetti: difficiles à comprendre, tester et à raisonner dessus, un désastre pour gérer la concurrence.
  • L'héritage n'est pas la seule manière de faire du polymorphisme,
  • "C'est mieux d'avoir 100 fonctions autour d'une seule structure de données que 10 fonctions opérant autour de 10 structures de données", Alan J. Perlis
  • Clojure modèle ses structures de données autour d'objets immutables représentés par des interfaces, et pas son propre système de classes
  • Plusieurs fonctions définies sur peu de structures de données (seq, map, vector, set)
  • Ecrivez du Java avec Java, consommez et étendez Java à partir de Clojure.

Pour un besoin de programmation concurrente, clojure a de nombreux atouts, mais combien de programmeurs sont capable de produire du lisp aujourd'hui ? Le Lisp est pourtant une très bonne école pour comprendre l'ensemble des paradigmes de programmation, comme on peut le lire dans le magnifique livre Structure and Interpretation of Computer Programs.

L'emacsien codant déjà avec un dialecte de lisp (Emacs Lisp) ira plus facilement vers clojure. Et puis, ce n'est pas un certain Gosling qui a créé une première version de Emacs, et plus tard un autre language ... appelé Java ? Le monde est petit...

mardi 4 juin 2013

Nous entrons dans une nouvelle ère dont la sécurité sera l'enjeu

Nous entrons définitivement dans une nouvelle ère car des ordinateurs quantiques sont maintenant disponibles à l'achat (pas pour tout le monde quand même, prix d'entrée : 10M$). Cela va rendre complètement obsolète toutes nos technologies de cryptage et sécurité associées que nous utilisons aujourd'hui. Bien que tout cela soit "en cours" de déploiement chez Google et à la Nasa, cela augure de nouvelles menaces et failles de sécurité si nous ne prenons pas pleinement conscience du saut technologique que représente un ordinateur quantique (suite).

La limite de Landauer enfin démontrée

Des scientifiques européens ont montré qu'un principe énoncé il y a 50 ans limitant le futur des processeurs CMOS est vrai : effacer de l'information rend de la chaleur (suite) 

lundi 3 juin 2013

GoboLinux : une nouvelle façon d'organiser les fichiers sous linux

GoboLinux est une distribution Linux modulaire : elle organise les programmes de votre système d'une nouvelle manière logique. Au lieu d'avoir des bouts d'un programme jetés dans /usr/bin, d'autres bouts dans /etc et encore d'autres /usr/share/quelquechose/ou/autrechose, chaque programme possède sa propre arborescence de répertoires, les gardant tous bien séparés et vous permettant de voir tout ce qui est installé sur le système et quels fichiers appartiennent à quels programmes d'une manière simple et évidente. (Suite)

samedi 1 juin 2013

La fin de la souris

Tout est "mobile" aujourd'hui, avec son corollaire, si vous ne l'êtes pas vous êtes statique. Quand changer de bureau avec son ordinateur portable devient régulier, la souris devient un véritable boulet dont vous ne savez que faire à chaque fois que vous portez votre ordinateur sous le bras. Au bout d'un moment, vous vous jurez que plus jamais vous n'utiliserez de souris de votre vie ! J'ai rangé ma souris dans mon sac, plus jamais je ne la ressortirai, le monde est bien plus facile sans fil à la patte !

Quelques jours sans souris et vous regarderez maintenant cette chose comme une relique du passé !

La première souris au monde !
Le mousepad devenu le remplaçant logique de la souris, celui-ci commence à se faire manger par la technologie des écrans tactiles. Certains constructeurs reléguant le mousepad au delà du clavier comme sur le nouveau Acer Aspire R7 :

mardi 14 mai 2013

Niveaux de Gravité d'une Erreur : Peuvent-ils (doivent-ils) être standardisés ?

Traduction d'un article de Conrad Weisert "Error Severity Levels".

Contexte: les conventions du système d'exploitation

Je viens de lire une longue discussion sur Linked-In sur les niveaux de gravité d'erreur dans un programme, et j'ai été frappé par le sentiment d'une redécouverte des techniques que nous utilisions il y a déjà quelques décennies. Je ne connais pas de livre traitant cette question de manière approfondie, alors permettez-moi d'essayer de commencer. D'abord étudions un peu l'histoire:

1959 : Système d'exploitation de second génération (709-7090)
Le système d'exploitation SHARE (SHARE Operating System - SOS) introduit la notion de niveaux de gravité. Une expression de contrôle d'un batch pouvait spécifier :

- GOIF : Execute uniquement si aucune erreur ou avertissement n'a eu lieu,
- GO : Execute si aucune erreur sérieuse a eu lieu,
- GOGOGO1 : Execute quoi qu'il en soit.

Certains programmes SOS n'observèrent pas ces conventions et certaines installations 709-7090 n'utilisaient pas SOS, mais cette convention inspira les fonctionnalités plus générales des systèmes suivant.

SOS etablit aussi la notion d'interception d'évènements anormaux sous le contrôle du programme, ce qui amena à la gestion des conditions de PL/I, qui à son tour inspira le traitement des exceptions des langages de programmation de la famille C d'aujourd'hui.

1965 : Système d'exploitation de troisième génération
OS/360 systématisa la notion de code de condition applicables à des travaux par lot (batch jobs) de plusieurs étape. Des conventions pour des niveaux de gravité numériques étaient observées par tous les processus système et programmes utilisateurs. Chaque étape d'un job fixait un code retour qui des étapes suivantes peuvent tester avec le Job Control Language (JCL):

00 Aucune erreur n'a eu lieu.
04 Une condition de niveau d'avertissement (trivial) a eu lieu, continuez le traitement,
08 Une erreur sérieuse a eu lieu, supprimez les étapes suivantes dans ce job,
12 Une erreur fatale a eu lieu, terminez l'exécution de ce job immédiatement !

Les codes et ces actions étaient, bien sûr, uniquement des conventions. Vous pouviez mettre en place un job pour faire tout ce que vous vouliez pour n'importe quelle valeur de retour, tant que le programme ne faisait pas ABEND.2


Conventions de programmation

Certaines applications ont étendu les conventions OS/360, en particulier dans le cas des programmes de traitement des transactions. Notre propre entreprise et plusieurs de nos clients ont adopté les conventions suivantes et ont développé une sous-routine standard pour émettre des messages d'erreur de diagnostic, d'abord en PL/I, plus tard en COBOL, et finalement, avec les adaptations nécessaires, en C++ et Java:

1. Lorsqu'il rencontre une erreur, le programme fait un
    CALL SYSERR (lvl, msg);
où le texte de msg suivait la convention demandant à commencer par un identifiant3 qui contenait le nom de la routine d'exécution de l'appel, et le code lvl était un équivalent symbolique d'un des codes conventionnels de retour de JCL.

2. À la fin du programme, une routine de sortie fixait le code de retour OS à la valeur la plus élevée rencontrée pendant l'exécution.

3. Une limite, que le programme pouvait outrepasser, définissait le nombre maximum d'erreurs autorisées pendant l'exécution. Lorsque ce nombre est dépassé, le programme prend fin. Cette fonction est utile pour empêcher un programme hors-contrôle de générer des centaines de pages de sortie incohérentes (par exemple si l'on a accidentellement fourni un programme source à un autre programme attendant un fichier de transactions).

Il y avait d'autres fonctionnalités, mais vous voyez l'idée. Les programmeurs appréciaient l'aide de cette routine, et elle est toujours utilisé dans presque tous les programmes développés dans ces organisations.4

D'autres améliorations évidentes étaient nécessaires pour supporter les programmes multi-thread. Quand une sous-tâche devrait être autorisée à terminer la tâche principale et comment?

D'autres idées?


Faites-nous savoir si vous avez développé ou si vous connaissez une meilleure façon de gérer les erreurs découvertes par les programmes, les messages de diagnostic, et les niveaux de gravité. Quels standard, le cas échéant, seriez-vous prêt à utiliser?

 

1—Dave Farber de Bell Telephone Laboratories appelait ce niveau "GO DAMMIT!" a une conférence SHARE.
2-ABnormal END (fin anormale) : l'action la plus radicale quand une continuation du traitement pourrait causer des dégâts considérables. (En fait, les versions suivantes de l'OS supportaient l'exécution conditionnelle d'étape même si une ABEND a eu lieu, mais les programmeurs prudents évitaient ça).
3-Dans certains langages de programmation cet identifiant peut être généré automatiquement, mais dans la plupart des languages, c'était juste une convention que les programmeurs étaient tenus de se conformer. Cela évitait aux utilisateurs la frustration ressentie lorsqu'ils reçoivent un message mystérieux de, disons, Windows®, indiquant que "le programme spécifié ne peux pas ...".
4- Si vous souhaitez une copie nous contacter à cweisert@acm.org et dites nous pour quel langage et environnement vous en avez besoin.

samedi 16 mars 2013

Linux : Jenkins en tant que service lancé au démarrage, stoppé à l'arrêt de la machine

Voici mon script de gestion d'un service Jenkins sous linux (debian) pour maitriser entièrement mon serveur d'intégration local.

Tout d'abord, j'ai créé un utilisateur cijenkins dans un groupe ciserver. Ensuite j'ai créé un répertoire /var/run/jenkins pour recevoir le fichier jenkins.pid contenant le pid du process de jenkins. Ce pid servira au script du service de savoir quel process terminer. Bien sûr, faites un petit chown cijenkins:ciserver /var/run/jenkins

Ensuite j'ai aussi créé le répertoire /var/log/jenkins qui recevra le fichier de log en cours jenkins.log. De même, faites un petit chown cijenkins:ciserver /var/log/jenkins J'ai ensuite créé le fichier /etc/init.d/jenkins (avec un petit chmod 755 dessus) :

#! /bin/sh
# /etc/init.d/jenkins
#

# Some things that run always
touch /var/lock/jenkins

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script jenkins "
    start-stop-daemon -b --start --oknodo --user cijenkins --group ciserver --pidfile /var/run/jenkins/jenkins.pid --chuid cijenkins:ciserver --make-pidfile --exec /bin/bash -- -c "exec /usr/bin/java -jar /opt/jenkins-1.505.war &>> /var/log/jenkins/jenkins.log"
    ;;
  stop)
    echo "Stopping script jenkins"
    start-stop-daemon --stop --oknodo --user cijenkins --group ciserver --name java --pidfile /var/run/jenkins/jenkins.pid --retry=TERM/30/KILL/5
    ;;
  *)
    echo "Usage: /etc/init.d/jenkins {start|stop}"
    exit 1
    ;;
esac

exit 0

Comme on le voit dans ce script on peut démarrer ou arrêter le service jenkins par l'option start ou stop. Le script permet d'écrire la sortie standard vers le fichier de log ainsi que de démarrer le service avec un utilisateur différent (ce script est lancé par root).

Si vous souhaitez lancer ce script au démarrage et à l'arrêt de votre PC il faut créer les liens dans le système d'initialisation de linux : update-rc.d jenkins defaults Plus de détail dans cet article.

Ensuite, vous pouvez vous amuser à configurer votre jenkins pour prendre en charge vos développements, notamment les développements python.

vendredi 15 février 2013

Scene.org Awards, c'est fini...

Un message laconique nous informe de la fin des Scene.org Awards, récompensant les meilleures démos :
The Scene.org Awards project has found its conclusion at Assembly in 2012 and is not continued any further. The past ten years have been an amazing time for the Demoscene, and we sincerely hope that the Scene.org Awards have done their part in recognizing and honoring the unparalleled talent that we have in the community. A big thank you to everyone who's been part of this - keep on demoing!
Scene.org fourni le plus grand répertoire de fichiers de la scène démo. Fondé en 1996, le site héberge environ 600 GB of données liées à la démoscene et est sponsorisé entre autre par Pixar (excusez du peu !). Heureusement toutes ces données restent accessibles en tant qu'archive. Une page se tourne, peut-être que l'époque de la scène démo est définitivement fermée...