Informatique

binstats : Basic statistics on binary code

Monday, 21 April 2014
|
Écrit par
Grégory Soutadé

As you may know, my work consists in developing software for embedded devices. We usually says that an embedded device is a peace of hardware with low resources (memory, CPU, flash...) taking in example phones. Nowaday, smartphones have only core software that is really embedded, the rest is sometimes more powerful than the computer I wrote this post. But, don't care, I don't work in telephony. Here (at Neotion), we do really embedded software, with chipsets clocked from 100Mhz to 200Mhz, with available RAM from 1MB to 32MB, and flash up to 8MB.

After years of developments, we can have one or more software that became too big to fit in its allocated flash partition. So, to find the guilty functions, I wrote a simple PERL script (~130 lines) that will count number of instructions for each function from objdump's output (with -ld switch) and displays statistics per function and per file (it doesn't focus on .data or .bss section). To correctly use the script, you have to compile your program with -ggdb option (to have line numbers and file paths), but you can also set optimisations (-OX).

Example with main.c

#include <stdio.h> int function1(int a, int b) { return a*b+4; } int function2(int a, int b, char* c) { printf("Result %d*%d+4 = %s\n", a, b, c); return 0; } int main(int argc, char** argv) { char buf[32]; sprintf(buf, "%d", function1(5, 4)); function2(5, 4, buf); }
> gcc main.c -ggdb -o test > objdump -ld test > test.txt > ./binstats.pl --in test.txt Total instructions 63 63 (100.00%) /home/soutade/main.c 38 main 16 function2 9 function1

There are also options to filter small files, small functions and paths that helps to focus on big ones. Have fun !

gPass v0.4

Monday, 14 April 2014
|
Écrit par
Grégory Soutadé

Logo gPass

L'intégration dans la liste des addons officiels de Firefox a été longue et difficile, et après deux versions (depuis la 0.2), gPass a enfin été accepté ! Le tag vient un peu tard puisque cela fait presque un mois qu'il n'y a plus de restrictions sur le site de Mozilla, mais il y a eu quelques petites améliorations concernant le client web. Désormais tout semble stable.

Cette intégration donne une bonne visibilité à l'addon avec une trentaine d'utilisateurs quotidiens (je ne suis pas inclus dans ces statistiques). Si cela peut paraître dérisoire, il n'en reste pas moins mon projet le plus largement déployé ! Bien sûr, c'est un peu frustrant de ne pas savoir où sont les serveurs hôtes et leurs nombres, mais c'est le but ! Ma grande satisfaction est que gPass est utilisé "partout" dans le monde.

À priori il n'y aura pas d'évolutions hors demandes particulières (pas de retours pour le moment) ou compatibilité avec Firefox, car le projet est "fini", c'est à dire qu'il fait ce qu'on lui demande (et il le fait plutôt bien).

Les joies du code

Monday, 31 March 2014
|
Écrit par
Grégory Soutadé

quand je découvre un force close juste apres ma soumission sur le play store // android

Nouvelle section sur le blog : Les joies du code. Pour ceux qui ne connaissent pas, les joies du code (ljdc) est une page Tumblr sur laquelle les gens proposent quotidiennement un gif animé humoristique et une petite phrase en rapport avec les métiers de l'informatique (développeur la plupart du temps).

Nicolas Lecointre (l'auteur) a aussi créé l'équivalent anglais The coding love. Kevin Bironneau, quant à lui, a essayé de lancer Les joies de la fac sur le même modèle, mais avec moins de succès...

Sur mon blog, je ne propose qu'un "Best of" de ce qu'on trouve sur Tumblr. Les phrases ne sont là que pour indication, car le seul critère est que le gif soit drôle ! Ça m'a aussi permis de faire évoluer Dynastie avec l'ajout d'un nouveau générateur (le code est assez simple au final, mais, même pour moi, le manque de doc et de clarté n'est pas évident à gérer... Vive le typage dynamique !!). Bref, vous pouvez visiter mon best of à l'occasion (il n'apparaîtra pas dans les flux RSS et Atom).

Premier jour de production de l'appli

Au détour d'un gif, ljdc m'a permis de découvrir "Police squad!", une vieille micro série (6 épisodes de 24 minutes) des années 80 absolument délirante. Elle est disponible intégralement sur YouTube (en anglais seulement).

PS : Au passage, le code généré pour chaque gif (en grande partie par Tumblr), en plus d'être irrégulier est absolument IMMONDE !

Google est ton ami

Monday, 17 March 2014
|
Écrit par
Grégory Soutadé

Google

Bart on the board : I will use Google before asking dumb questions

Google est ton ami. C'est comme cela que l'on désigne le moteur de recherche le plus populaire en France et, par extension... internet tout entier. La force de Google ? Sobriété, efficacité, gratuité. Si le dernier point est à nuancer, les deux premiers ont fait le succès du géant de Mountain View (Californie) face aux portails web ultra chargés de l'époque.

Google est tellement magique que, quand on ne trouve pas la réponse après la première page, on arrête la recherche. Cette "magie" est pourtant conditionnée. D'une part par le sujet de notre recherche, et d'autre part par notre historique de recherche. Si la tendance est d'accepter les recherches naturelles du style "quelle heure est-il ?", voici quelques astuces pour augmenter la pertinence des résultats (pas forcément spécifique à Google):

  • Les mots les plus importants doivent être placés au début
  • Pour faire une recherche sur un terme exact, il faut l'encadrer de guillemets (exemple : "un jour")
  • Il faut utiliser le tiret ("-") pour supprimer un mot que l'on ne souhaite pas obtenir dans les résultats (exemple : bateau -"bato")

Il existe d'autres fonctionnalités moins connues, mais tout aussi sympathiques :

  • Page en cache : quand un site n'est plus accessible, on peut essayer de voir s'il n'est pas dans le cache du moteur de recherche en cliquant sur la petite flèche à côté de l'adresse en vert
  • Rechercher la provenance d'une image ou une image similaire : tout le monde connaît la possibilité de rechercher une image, mais on peut aussi envoyer une image et trouver d'où elle vient en cliquant sur l'appareil photo dans l'onglet "Images"
  • Rechercher sur un site en particulier, exemple : Google site:blog.soutade.fr
  • Conversions de tous types : 4 dollars en euros, 9cm en pouces...

Tout a un prix

Le vieil adage dit que "Si c'est gratuit, c'est l'utilisateur le produit". Aujourd'huiActuellement, le meilleur moyen de revenu d'un site internet est la publicité, directe ou indirecte. Soit directe en affichant des pages de pub sur le site, soit indirecte en revendant les données des utilisateurs (ce qu'ils aiment, ce qu'ils recherchent, leurs âge...) ... à des annonceurs, ce qui permettra à leurs tour d'avoir des profils et ainsi de proposer des publicités ciblées. La perversité du système vient du fait qu'il faut d'une part tracer l'utilisateur pour lui proposer les meilleurs résultats lors d'une recherche, mais aussi les publicités les plus adéquats à son profil ! C'est le fond de commerce de Google, Yahoo, Facebook... Que les utilisateurs fournissent des informations via des services sympa et, en apparence, gratuits (Google, Google Maps, Youtube, Android...) afin de leurs revendre de la publicité.

Pour réaliser cela, la plupart des sites web incluent dans leur JavaScript un appel vers des outils d'analyse ou de tracage tels que Google Analytics, ce qui permet de manière globale suivre un utilisateur quel que soit l'endroit où il va, quand il y va et pourquoi il y va (grâce à la présence de cookies). Et encore plus quand il est connecté à son compte (Google, Yahoo...) pendant la navigation ! Firefox propose une option "Ne pas me tracer" (Don't track me), mais c'est à la discrétion du site web visité de la prendre en compte ou pas.

Il faut le préciser, mais sur aucune des pages de soutade.fr et tous ses sous-domaines (blog, indefero...), il n'y a de publicité ni d'outils d'analyse dynamique ! En effet, j'ai tout simplement horreur de la publicité et tout ce que je met en ligne est réellement gratuit ! Au delà de l'argument philosophique qui m'est cher, limiter au maximum les ressources à charger (textes, images, javascript), permet d'accélérer le téléchargement des pages, ce qui n'est que plus agréable pour le visiteur.

DuckDuckGo

Logo DuckDuckGo

DuckDuckGo est un meta moteur de recherche, c'est à dire qu'il va aggréger les résultats de différents moteurs pour les présenter à l'utilisateur. Mais DuckDuckGo a surtout deux avantages : Les recherches des utilisateurs ne sont pas traçables (on passe par un intermédiaire) et il intègre le système de !bang. Un peu à la manière de ce que j'ai présenté dans mon dernier article, un !bang permet de faire une recherche sur un site en particulier ou en limitant le périmètre. Par exemple, si je tape "!yt The Inspector Cluzo", DuckDuckGo va chercher "The Inspector Cluzo" sur YouTube. La liste des !bang est impressionnante (il y en a même un peu trop...).

Wayback machine

Logo Wayback Machine

La Wayback machine, ou machine à remonter le temps, est un robot qui indexe les sites internet depuis 1996 ! Cela permet de voir un site tel qu'il était il y a plusieurs années, c'est parfois pratique pour retrouver des infos d'un site fermé ! Bien sûr, il ne peut indexer que le contenu statique.

Barre d'adresse et de recherche de Firefox

Monday, 10 March 2014
|
Écrit par
Grégory Soutadé

Dans un lointain passé, nos chers navigateurs (Netscape ???) ne possédaient qu'une barre d'adresse où il fallait indiquer l'adresse exacte du site internet que nous souhaitions atteindre. Plus tard, on a introduit une barre de recherche spécifique (elle se situe à droite de la barre d'adresse dans Firefox). Elle permet de faire des recherches directement sur des sites web (Google, Yahoo, Youtube, Wikipedia...) sans passer par la page d'accueil dudit site. Puis vint Google Chrome qui, par soucis d'ergonomie, et surtout pour passer systématiquement par leur moteur de recherche, a fusionné la barre d'adresse et la barre de recherche. En suiveur, cette fonctionnalité a été implémenté dans Firefox.

Barre d'adresse et de recherche de Firefox

Jusqu'à présent, les deux barres (adresse et recherche) sont conservées, mais depuis peu, Mozilla a décidé de les lier pour éviter les confusions. Donc, si on sélectionne un moteur dans la barre de recherche et qu'on tape sa recherche dans la barre d'adresse, il va utiliser le moteur nouvellement sélectionné et non celui par défaut. Personnellement, je n'apprécie pas du tout ce changement (sélectionner le moteur actuel dans une autre barre dédiée, illogique ??). Bref, il existe un addon pour revenir au comportement précédent, mais sans aller jusqu'à l'installer, Firefox intègre une fonctionnalité de confort : Les mots clés de la barre de recherche. Ainsi, si on assigne le mot clé "y:" au moteur de Youtube et qu'on tape dans la barre d'adresse "y: The Inspector Cluzo", il va directement aller sur Youtube, même si le moteur actuel est Google ! Ça reste un contournement, mais c'est mieux que rien...

Astuce : ne pas affecter de mot clé pour le moteur de recherche par défaut, sinon Firefox ne résoudra pas la requête

Dans les prochaines version de Firefox, il est question de fusionner ces deux barres qui, pour le coup, ont vraiment la même fonctionnalité. Cette astuce (trouvée sur le net) sera donc encore plus utile.