18 déc. 2014

shell-debugger.sh: a small shell script debugger

It's been a while since I posted anything here - but that doesn't mean this blog is dead. I continue to read your messages, block spam, think to other articles and so on.

And today, I'd like to present you a small script of mine whose goal is to help the difficult task of debugging a shell script. It leverages the trap ... DEBUG builtin of your not-that-prefered shell (i.e. bash, ash or dash) and allows you to run your script step by step, putting watches or executing additional commands while doing so.

Isn't that fun?

Lire la suite...

19 mar. 2014

ARM SoC : is a revolution on the way?

ARM-s-Next-Gen-64-bit-Processor-Will-Be-Called-Atlas-and-Apollo-2.jpg Yesterday's Linux information was filled with great news for the GPU enthusiasts: NVIDIA finally decided to show some internal documentation to the nouveau developpers. A bit later NVIDIA proposed to commit some support code to existing projects. And today's Linux big information is also GPU related: Broadcom finally decided to publish the datasheet and the source code tha powers their OpenGL stack for the VideoCore IV GPU.

This thread of news is great by itself - yet it's even greater if you try to get a wider picture of the current state of the industry.

Lire la suite...

Références C++ mises à jour

Je profite d'un instant de votre précieux temps pour vous signaler que j'ai mis à jour la page Ouvrages et sites de référence pour le C++, avec plusieurs ajouts concernant C++11.

Bonne lecture !

31 janv. 2014

Rencontres 2014 du C++ User Group Francophone

Guillaume Belz (qui commente régulièrement les articles de ce blog, je l'en remercie) me prévient que le C++ User Group Francophone (a.k.a. le C++ FrUG) prévoit pour ce début 2014 une nouvelle rencontre.

Vous êtes libres de faire vos propositions sur le groupe Google du C++ FrUG. D'après Guillaume, les sujets déjà proposés sont variés : C++11, C++14, C++1y, C++ pour les débutants, C++ pour les jeux... Selon son message :

Les deux conférences l'année dernière se sont relativement bien passées et il y a des demandes pour renouveler des rencontres du C++ French User Group cette année. Il y a déjà des thèmes qui ont été proposés (sur le C++1/14/1y, pour les débutants, sur les jeux), mais il serait intéressant d'avoir des avis ou idées supplémentaires. N'hésitez pas à proposer des thèmes, des conférenciers, des lieux de rencontre.

Pour ma part, mon actualité est trop chargée pour que j'espère pouvoir participer à la première de ces rencontres 2014, mais qui sait - il n'est pas impossible que je me présente à une future occasion.

12 janv. 2014

2013 est fini, bienvenue à 2014 !

Une année se termine, une nouvelle commence. Il est temps de faire l'analyse de ce que 2013 a apporté à ce blog. A peu près.

Lire la suite...

02 sept. 2013

Racine d'un entier 64 bits non signé en C

Ce billet est un peu spécial, dans le sens ou je me contente de poster un morceau de code sans beaucoup de commentaires. J'ai écrit ce code récemment pour résoudre un problème un peu agaçant : calculer une racine carrée sur un nombre entier 64 bits.

Pour ceux qui se disent que le problème est simple (appeler la fonction sqrt() de la librairie C ou std::sqlt() de la librairie standard C++), je répond "oui, presque". Parce qu'un nombre non signé de 64 bits ne peut étre représenté correctement sur un double de 64 bits (sqrt() utilise le co-processeur arithmétique de votre x86). On peut utiliser un long double - mais dans ce cas, les performances sont désastreuses (parce que votre processeur n'a pas de registre générique travaillant en 80 bits).

Tout ça pour dire que la fonction ci-dessous peut aussi vous être utile (même si elle n'est pas parfaite : elle dépends principalement de la réponse à une devinette : quelle est la valeur de la racine carrée que je cherche ? Plus je sais répondre précisément à cette devinette, plus l'exécution est rapide).

Lire la suite...

14 juin 2013

Les nouvelles du front

Logo OUYA

Le rythme de publication sur ce blog s'est singulièrement ralenti pendant les quelques dernières semaines. En cause, de nombreux événements professionnels et personnels qui bloquent une grosse partie de mon temps. Mais sait, cher lecteur, que je ne t'oublie pas : de nouveaux billets sont prévus dans les semaines qui viennent, sur des sujets aussi divers que le C++, Linux ou des plateformes matérielles intéressantes.

Mais ce qui me pousse aujourd'hui à écrire, c'est un mail que j'ai reçu hier. Ce mail est annonciateur d'une bonne et heureuse nouvelle, et voici son titre : #myouyaiscoming.

Lire la suite...

29 mai 2013

Gandi : migration effectuée

gandi.png

Pendant la nuit, ce blog a changé d'emplacement - il est passé d'un serveur mutualisé chez online.net à un serveur virtuel chez Gandi.

J'aurais aimé vous dire que tout s'est passé comme sur des roulettes, mais restons honnête : ce n'a pas vraiment été le cas...

Lire la suite...

25 avr. 2013

The SoC GPU driver interview

glxgears.png

A few weeks ago, I published a status article about a few SoC GPU drivers. SoC GPUs are a very hot topic that deserves a prominent exposition (even more than desktop GPU drivers in my humble opinion).

The current crop of SoC already provide unbelievable power to game developers and GPU lovers - and the versions that are coming are even more powerful[1]. In a few years they will be able to compete with traditional desktop GPUs on the laptop market. As they become more and more powerful there is good chance that they will be able to compete with them in the desktop world as well. In the same time, the traditional AMD or NVIDIA desktop GPUs will have a hard time to remove them from the mobile market as these SoC GPUs are both powerful and energy efficient.

There is a good chance that SoC GPUs will take over the world in the coming years[2]. That's part of the reason why I believe that the new series of open source GPU driver is of the utmost importance. And that's why I contacted several driver/tool maintainers/contributors:

  • Connor Abbot (CA) - Open GPU Tools (Connor works on lima support here)
  • Eric Faye-Lund (EF) - grate (for Tegra GPUs)
  • Herman H. Hermitage (HH) - Videocore (for Broadcom GPUs)
  • Luc Verhaegen (LV) - lima (for MALI GPUs)utter
  • Matthias Gottschlag (MG) - Videocore (for Broadcom GPUs)
  • Rob Clark (RC) - freedreno (for Adreno GPUs)
  • Thierry Reding (TR) - grate (for Tegra GPUs)
  • Scott Mansell (SM) - Videocore (for Broadcom GPUs)
  • Wladimir J. van der Laan (WL) - etna_viv (for Vivante GPUs)

The good news is that they were kind enough to answer my rude and pitiful requests over the course of several weeks (the interview process started on March the 14th and ended on April the 20th). I'd like to thank them all for allowing me to steal their valuable time.

Notes

[1] GreatEmerald: sorry for your valuable eyes

[2] I mean: yeah, probably. Hopefully. Maybe?

Lire la suite...

18 avr. 2013

Beautiful Code : qu'est-ce que du "beau" code ?

Alors que l'année a démarrée en fanfare sur ce blog, avec presque autant d'articles publiés en 3 mois que sur toute l'année dernière, l'activité s'est tassée au mois d'avril. Il y a une raison derrière ça : je suis actuellement pris par trois projets différents, chacun nécessitant nécessitant de ma part une implication assez forte.

Le premier projet viens de se terminer : j'ai donné aujourd'hui même une petite présentation aux élèves de l'école Polytech Marseille (anciennement l'ESIL) - je remercie d'ailleurs les personnes qui ont mis en place ce rendez vous avec les étudiants, et en particulier M. Tisserand et M. Durand.

Le sujet de cette présentation ? La beauté du code.

Lire la suite...

26 mar. 2013

Spam, commentaires, modération à priori

Ca faisait longtemps que je ne vous avait pas entretenu de ce sujet. Je profite d'une courte accalmie pour vous donner un statut sur l'état actuel des choses.

En bref : je n'ai jamais autant été la cible de spammeurs, mais ça reste gérable.

Lire la suite...

24 mar. 2013

Programmation concurrente : appels uniques, verrous, conditions

thread.jpg

L'article précédent a introduit les classes std::thread et std::atomic<> proposées par le standard C++11. La première de ces classes permet la création et la gestion de processus légers ; la seconde est utilisée pour accéder de manière atomique à une donnée particulière, ce qui permet d'implémenter certains algorithmes spécifiques (le spin lock est ainsi donné en exemple).

Ce nouveau billet va maintenant s'intéresser à deux autres primitives de synchronisations très utiles dans le domaine de la programmation concurrente : les verrous d'exclusion mutuelle (mutex) et les variables de condition (condition variables). Ces deux sujets seront traités après l'introduction d'un autre point qui, vous allez voir, va se révéler très, très intéressant.

Lire la suite...

12 mar. 2013

Programmation concurrente : threads et variables atomiques

thread.jpg

Les deux articles précédents sur ce sujet n'ont fait qu'aborder des concepts qui, certes utiles pour la compréhension des articles à venir, n'ont pas encore permis d'approcher les nouveautés de C++11 dans le domaine de la programmation concurrente. Le but de cet article est donc de rentrer enfin dans le vif du sujet, en décrivant les interfaces proposés par la librairie et les mécanismes implémentés dans le langage.

Vu l'énormité des apports à ce niveau, ce billet va se contenter d'une première approche en décrivant principalement deux points importants : les threads et les mécanismes de synchronisation.

Lire la suite...

09 mar. 2013

Linux : suivi du kernel 3.9

La fenêtre de fusion (oh, que c'est barbare en Français) pour la version 3.9 de Linux est maintenant fermée. Cette fermeture indique que, sauf cas exceptionnel, aucune nouvelle fonctionnalité ne sera ajoutée dans le noyau Linux - seuls des corrections de bug seront maintenant acceptées. De fait, on peut dès maintenant tracer le contour de la future version.

Bien entendu, ce n'est ici qu'un aperçu - biaisé qui plus est. Vous y trouverez principalement des informations sur les sujets qui sont d'importance pour moi.

Lire la suite...

04 mar. 2013

Pipeline de production : modélisation et animation 3D

3dsmax-logo.jpg

J'ai déjà abordé il y a quelques mois la notion de pipeline de production de jeux vidéo. Dans ce billet, je souhaite faire un arrêt plus long sur l'un des points déjà traité dans ce billet : la problématique liée à la modélisation 3D. Il y a une bonne raison à cela : le nombre d'artistes dans une équipe professionnelle ne cesse de grandir, et les nouvelles consoles qui vont débarquer d'ici la fin de l'année vont nécessiter des ressources supplémentaires de ce coté.

Avant de continuer, et dans un soucis de transparence, certains des liens présents dans cet article sont sponsorisés[1]. Ces liens sont affichés de cette manière : lien vers le site example.com. Comme vous pourrez vous en apercevoir en lisant ce billet, ça ne me fera pas changer de ton ni devenir dithyrambique.

Note

[1] deux raisons pour cela : d'abord, être contacté par un sponsor pour insérer dans un article des liens qui sont en rapport avec le sujet de l'article lui même, j'appelle ça de la chance. Ensuite, la migration vers mon nouvel hébergeur est un peu coûteuse - c'est donc un moyen efficace de limiter la facture.

Lire la suite...

27 fév. 2013

Migration vers Gandi

Pendant des années (depuis 2004 en fait, date de la création de mon premier site web personnel), j'ai été satisfait des services proposés par mon hébergeur actuel, online.net. Mais depuis quelques mois, les problèmes se multiplient - et ça commence à m'agacer.

J'ai donc décidé de changé d'hébergeur.

Update : c'est à partir de demain que ça se gâte. La procédure de changement de registrar commence officiellement demain. Normalement, les zones DNS devraient rester les même, mais il est quand même possible que ça ne se passe pas comme prévu. Au final, pour cette première étape, rien ne devrait changer (le site sera toujours aussi lent, désolé) mais il n'est pas impossible que tout casse d'un coup... Au cas où, je contacterai qui de droit pour réparer les erreurs qui pourraient s'être produites.

Update 2 : la migration du nom de domaine est terminée, et s'est bien passée. Le site web continue d'être accessible !

Lire la suite...

25 fév. 2013

Programmation concurrente : le modèle de mémoire C++11

thread.jpg

Dans l'article précédent, on a pris contact avec ce qu'est la programmation concurrente, et comment elle était (grosso-modo) mise en oeuvre dans les systèmes d'exploitation récent. On a aussi parlé de primitives de synchronisation et de tout un tas de petites choses qui sont autant de concepts importants, nécessaires à une bonne compréhension du problème. Et dans ce cadre, la relation avec le standard C++11 a été mis de coté de manière explicite.

Cet article revient sur le C++11, mais d'une façon détournée : on va parler du modèle de mémoire mis en place par le standard.

Lire la suite...

21 fév. 2013

PS4 : les infos officielles

ps4-logo-3825068.jpg

Ca y est, on sait enfin de quoi sera fait le futur : Sony a dévoilé officiellement la PS4 hier soir, à minuit (heure française).

Le moins qu'on puisse dire, c'est qu'ils n'ont pas fait dans la demi-mesure - et ça risque de poser problème.

Lire la suite...

20 fév. 2013

La PS4 dévoilée ce soir ?

sony-ps-2013-02-20.png

C'est aujourd'hui le 20 février. Même si je ne suis pas un fan de Sony, force m'est de constater que dans le domaine des consoles de salon, il sont parmi les tout meilleur au monde. Du coup, lorsque Sony annonce qu'aujourd'hui il va faire une annonce retentissante sur le successeur de la PS3, il serait fou de garder ça pour soi.

Lire la suite...

19 fév. 2013

Linux : suivi du kernel 3.8

Logo Linux

Le kernel Linux 3.8 est enfin sorti, après moult -rc et un cycle de release décalé vers le milieu de semaine. Au menu, pas mal de nouveautés qui ont un intérêt fort pour les plateformes embarquées - et principalement ARM.

Lire la suite...

- page 1 de 22