Some times ago,
using Leopard, I got tired of having to open an application, create a
new file, select where I want it to go, and close the application — just
to create a damn new file. I mean, can’t we just have a “New document”
contextual menu, just as in Windows, Gnome, KDE, or any decent
environment ? Mac users say that eventually, the need for it disappears
— just as the need to have “folders first” in the Finder goes off with
time and practice. Well, I must agree I can live without “folder first”.
But a “New document” menu is a requirement for me.
I didn’t find anything on the Web : forum members are quicker to answer
“that’s the way OS X is made, get used to it” than suggesting a
solution. I wasn’t aware of
NuFile at this time, and I
wanted to learn how to create a plugin with CoreFoundation. So I made it
myself.
NewDocumentPlugIn
adds a “New document” contextual menu to the Finder. You can thus create
easily new documents without opening the associated application. It is
meant to be simple yet customizable : you can easily add your own
templates, just drop an empty file of the wanted type in the
“Templates” folder of the plugin. And it is localized in English and
French: you can add localizations for the contextual menu labels and
for the document names if wanted.
The neat
feature that I didn’t see anywhere else is filename highlighting :
when you create a new document, the document name is highlighted, in
order to customize the name without superfluous keystroke (ensure that
AppleScript GUI Scripting is enabled for this).
On the technical side, the plugin is written in C, using the
CoreFoundation API — and some bits of Carbon for file manipulation. I
could have integrated Cocoa code in there (easier to write and to
maintain), but keeping it C-only reduce overheight. Guaranteed without
memory leaks. Oh, and it uses AppleScript and GUI Scripting for the
“filename highlighting” feature : there is some nice code to execute an
AppleScript file from a Carbon program.
The plugin is hosted on Google Code and is Open-Source (MIT Licence).
Please read it, recompile it, fork it, whatever you want.
Download NewDocumentPlugin (Mac OS 10.4 to 10.5, 700
Ko)
See the project page on
GoogleCode
Si certains d’entre vous ont suivi le blog que j’ai tenu pendant mon
volontariat au Togo, vous vous
souvenez sans doute de l’association LIRE, avec laquelle j’ai
beaucoup travaillé, et qui vise à promouvoir la lecture au
Togo. Avec cette association de professeurs
togolais, nous avions mis en place toute sorte d’activité pour inciter
les collégiens à la lecture : les emmener dans les bibliothèques de
Kpalimé, organiser des recherches documentaires et des concours,
apporter les livres de la bibliothèque ambulante dans les collèges trop
éloignés de la ville…
En sept mois, nous avons eu le temps de faire beaucoup de choses, et de
nous rendre compte que le projet est motivant, sérieux, tient la route,
et surtout donne des résultats concrets : les élèves, progressivement,
prennent l’habitude de lire — et croyez moi, il y en a besoin.
Pour continuer toutes ces activités, nous nous sommes dit, en quittant
le Togo, que ces gens là auraient bien besoin d’autres volontaires, qui
pourraient leur donner un coup de main. On en a beaucoup discuté avec
les gens sur place, qui sont très demandeurs — et surtout motivés pour
s’impliquer vraiment dans l’accueil de volontaires étrangers.
Bref, vous qui cherchez un projet de volontariat en
Afrique, nous avons
quelque chose pour vous ! Des gens sympathiques, un hébergement dans
des familles, une belle occasion de découvrir l’Afrique et le Togo et de
donner un coup de main. Et c’est supervisé par nous, volontaires qui en
revenons tout juste, qui avons aidé à monter le projet là bas — enfin
qui savons comment se passent les choses là bas.
Si vous n’êtes pas vraiment dans l’optique de partir en Afrique, là,
comme ça (je sais, ça arrive), vous pouvez tout de même soutenir les
activités de l’association
LIRE, notamment dans
le cadre du projet de
parrainage-lecture :
vous achetez quelques livres pour jeunes enfants (entre 3 et 8 ans) dans
une libraire, et nous les transmettons à des volontaires européens au
Togo qui les liront aux enfants de leur famille d’accueil. Nous avons
déjà expérimenté ce projet dans notre famille-hôte, et c’est vraiment
fantastique : là-bas, personne ne songe à faire la lecture aux enfants —
et pourtant ils adorent ça, en redemandent, se mettent à faire semblant
de lire eux-même… Ce contact avec les livres qui se développe très jeune
leur manque vraiment, parce que ce n’est pas dans les habitudes des
parents ; alors en plus de la joie immédiate des enfants lorsqu’on leur
fait la lecture, c’est un bel investissement pour l’avenir.
N’hésitez pas à parler de cette association autour de vous —
franchement, c’est un beau projet, et je vais travailler dessus encore
un certain temps.
Association LIRE — Promotion de la lecture au
Togo
Qui suis-je ?
Je suis Pierre de La Morinerie, un passionné d’informatique et de
tout un tas d’autres choses. Je travaille en ce moment chez miLibris, où
je m’occupe de développement de liseuses numériques sur les appareils
iOS. Je suis un peu touche-à-tout, et adore expérimenter de nouvelles
technologies.
Que sais-je ?
Du côté logiciel, après avoir fait mes premières armes avec RapidQ
(souvenirs souvenirs), j’ai expérimenté le C++ et le Java, avant de
découvrir C#, avec lequel j’ai pas mal travaillé, et qui reste mon
langage de prédilection. Après mon retour sur Mac, tout en continuant à
développer en .NET (merci les machines virtuelles), j’ai commencé à
faire quelques bricoles en Python et en LISP ; j’ai également passé un
certain temps à tester les fonctionnalités de Cocoa (et à apprendre
l’Objective-C, qui est vraiment un chouette langage). En ce moment, je
m’intéresse à Flex, et développe un logiciel d’apprentissage des langues
anciennes avec une combinaison Flex/AIR.
Côté Web, j’ai fourbi mes armes avec les technologies standard : HTML,
CSS, PHP, MySQL. J’ai passé beaucoup de temps à explorer les Frameworks
PHP, puis à développer le mien — mais c’était avant de découvrir
CakePHP, qui est une vraie merveille. J’ai aussi
développé quelques bricoles en Javascript, en utilisant Prototype et
script.aculo.us pour faire de jolies choses en AJAX. Enfin j’ai eu
l’occasion de développer une grosse application en ASP.NET — mais c’est
une technologie qui ne m’a décidément pas convaincu. Alors que
Cappuccino, ça c’est quelque chose…
Qu’ai-je réalisé ?
Dans les grandes lignes : des formations, quelques gros projets, et
quelques petits utilitaires.
En ce qui concerne les formations, j’ai donné pendant deux ans des
cours internes pour les étudiants de la Junior Entreprise de l’ISEP.
J’ai formé une centaine d’étudiants à
PHP et à
C#,
en leur apprenant les bases et les éléments nécessaires pour qu’ils
puissent aller plus loin seuls. J’ai également réalisé une introduction
à la technologie
Silverlight (qui, pour
archive, a été
filmée).
Dans les gros projets, il y a eu :
- WinOSX : un pack permettant de customiser
Windows XP en Mac OS X, programmé avec NSIS
- PictbaseWeb, pour
Daxium : Un logiciel de Data Asset Managment en ligne, développé en
ASP.NET
- ArghosReader, pour Arghos
Diffusion : Une visionneuse complète de documents PDF, en C# et C++
managé
- Antigone : Un logiciel-support à
l’apprentissage du grec ancien, développé en Flex/AIR
Et du côté des petits utilitaires, dont je ne suis pas moins fier :
- iColorFolder :
permet d’organiser les dossiers de Windows par couleur, et de
changer les icônes des dossiers (en C#, puis C++/MFC)
- SearchBar :
une extension pour Thunderbird réorganisant les barres d’outils
- WallpaperSeasonsSwitcher :
un utilitaire en ligne de commande pour changer une série de fonds
d’écrans en fonction de la saison (en C)
- NewDocumentPlugIn :
un plugin pour Mac OS X qui rajoute un menu “Nouveau document” au
Finder
- CastingStage : une
application de raytracing réalisée avec Cocoa
J’ai aussi contribué sporadiquement à quelques projets Open-Source,
en envoyant des patchs pour CakePHP,
Adium,
Wp-Sentry…
Et aussi…
Comme il n’y a pas que l’informatique dans la vie, voici ce à quoi j’ai
pu également participer :
That’s all folks !
Enfin, c’est tout pour ce que je mets ici — il y a tout le reste,
évidemment… Mais c’est déjà pas mal.
En ce moment, je baigne dans les frameworks. J’ai commencé depuis
quelques semaines à coder Antigone
(souvenez-vous, je vous en avais déjà
parlé) ;
le projet devenant trop complexe, j’ai finalement dû partir à la
recherche d’un framework, et de bonnes techniques d’architecture
logicielle. D’où grande piscine plein de design patterns, de découplage
et de diagrammes.
Bref, je souffre de fièvre
UML. Les cas graves,
quand, en somnolant avant de s’endormir, on se surprend à comater :
« non, je ne dois pas invoquer directement sleep(), il faut que je passe
par mon contrôleur, où est-ce que j’ai mis mon contrôleur, bon sang… Ah,
voilà, controller.sleep(), c’est mieux… »
C’est dur. Quand tout cela sera passé, je songerais à vous parler de
Mate, et du délicieux accent
argentin
de la développeuse qui fait les screencasts. En attendant, renseignez
vous : il paraît que la fièvre UML pandémise parmi les développeurs.
Méfiance.
Bon, aujourd’hui, c’est officiel : j’achète des morceaux sur iTunes.
Maintenant que les DRM à la noix ont (enfin !) disparus, ça commence à
se tenir.
Et puis Graeme Allwright et Pierre Perret sont toujours vivants, quand
même, et on peut espérer que leurs contrats stipulent que tout ne va
pas dans la poche des majors, même pour des chansons vieilles de 30 ou
40 ans. Alors ça se fait d’acheter, plutôt que d’utiliser le bien
pratique discutable Real
Downloader ou l’indétectable
légal contestable Freezer
pour pomper les trucs depuis Deezer.
(En même temps, si même la SACEM dit qu’on
peut…)