Blogue

Sim Daltonisme et écrans Retina

Avec l’arrivé des écrans Retina, il devient important pour moi de mettre à jour le code qui capture les pixels à l’écran pour permettre à mon simulateur de daltonisme de fonctionner correctement. J’avais du code supposé être capable de gérer les écrans haute-résolution avant, mais OS X a changé ça façon de négocier la résolution avec les applications avant le lancement des écrans Retina sur Mac. Ceci laisse l’ancienne façon de faire obsolète. Donc les choses que j’ai faites en 2007 en prévision du futur n’auront rien données et ont du être refaites.

En fait c’est une bonne chose que les anciens APIs qui servaient à gérer une mise à l’échelle de l’interface en fonction de la résolution de l’écran n’aient jamais été utilisés. Je réalise maintenant qu’ils étaient plein de défauts. Par exemple, même avec un facteur d’échelle entier, il n’y avait rien pour gérer deux écrans avec des facteurs d’échelle différents. Je suis bien heureux qu’Apple ait révisé les choses.

Sauf que maintenant je doit sortir une nouvelle version. Alors voici : cette nouvelle version est disponible gratuitement sur le Mac App Store. Amusez-vous !


Black Light et Contrôle Gamma sur le Mac App Store

Le temps passe. J’ai publié ma première application pour OS X il y a maintenant douze ans. C’était dans le temps de Mac OS X Public Beta en l’année 2001. À ce moment je n’était pas satisfait des réglages gamma par défaut du système sur mon iBook orange, et ainsi est apparut la première incarnation de Contrôle Gamma.

Après la sortie officielle de OS X, j’ai reçu quelque demandes d’améliorations et de nouvelles fonctionnalités qui ont menées à la version 2 de Contrôle Gamma et à Black Light. J’ai eu du plaisir à faire tout ça, et ça ne prenait pas trop de temps à maintenir.

Pour dire la vérité, je n’ai jamais beaucoup utilisé ni l’une ni l’autre de ces application depuis la venue de OS X 10.0. Malgré tout j’ai pris le temps qu’il fallait pour les garder à jour. C’est toutefois devenu moins vrai ces dernières années. Peut-être que de distribuer ces deux applications gratuitement y est pour quelque chose.

Aujourd’hui je publie la version 3.1 de Contrôle Gamma, qui règle un problème présent depuis longtemps où la correction gamma pouvait être appliquée à certains moments même si désactivé et qui ajoute des cibles de couleur mieux adaptées aux écrans Retina. Je publie aussi Black Light 1.8 qui ajoute une option pour désactiver l’effet quand l’économiser d’écran embarque. Ces deux applications sont maintenant disponible sur le App Store pour 5,99 $.

Les anciennes versions sont toujours gratuites, principalement pour faciliter la vie à ceux utilisant OS X pré-10.6. Je n’ai pas l’intention de les retirer et elles fonctionnent toujours sur la version courante de OS X. Mais si vous utilisez Black Light et Contrôle Gamma, je vous prie de considérer de les acheter. Ça me motivera pour les mettre à jour afin de suivre l’évolution d’OS X, et le Mac App Store vous permettra de rester sur la dernière version sans soucis.


Contrôleur de jeu

Avec tout le battage entourant le nouveau look de iOS 7, est-ce que quelqu’un a remarqué qu’Apple ajoute aussi un API standard pour les contrôleurs de jeu ?

Ça peut sembler banal, mais je serais surpris que ce ne soit pas un prélude au début des applications (et des jeux) sur Apple TV.


MeoTempo

Depuis environ deux ans, je travaille à temps partiel sur un projet iOS avec une petite équipe. L’application a la forme d’un calendrier, mais contrairement aux autres applications de calendrier celle ci permet de prévoir combien de temps il reste, combien de temps a été prévu et a été fait pour différentes choses, et vient avec un outil pour noter ce qu’on fait en temps réel (ce qui vous donne au final un historique de l’utilisation du temps).

Je n’irai pas dans les détails de ce que l’app peut faire. Elle a été publié la semaine dernière, jetez-y un coup d’œil.

Pour cette application j’ai construit un système de synchronisation. Chaque appareil possède sa copie de la base de donnée, et chaque fois qu’il se connecte sur le serveur les bases de données sont fusionnés et les changements propagés aux autres appareils. Le fonctionnement est particulièrement intéressant, je vais donc élaborer un peu.

Notre système de synchronisation est construit d’une façon similaire à un système de contrôle de version distribué (Git, Mercurial, etc.). Ça comprend un étage de dépôt (repository) utilisé pour synchroniser des blocs de données binaire avec d’autre dépôts. Par dessus l’application maintient une base de donnée SQLite correspondant au modèle. Les chanements dans le dépôt local sont gardés synchronisés avec la base de donnée du modèle. Les changement au dépôt local sont aussi poussé sur le serveur, et vice versa. Et ainsi votre iPhone reste synchronisé avec votre iPad.

Ce système a deux propriétés intéressantes en commun avec les SCVD. D’abord, si un dépôt est perdu (que ce soit sur le serveur ou sur un autre appareil), il peut être reconstruit à partir des autres dépôts. Ensuite, en théorie on pourrait faire une sychronisation pair-à-pair sans serveur central même si en pratique gérer des comminications pair-à-pair est plus compliqué et rien n’a encore été fait de de côté.

C’est intéressant de noter que la base de donnée du modèle est essentiellement une cache pour ce qui se trouve dans le dépôt. Si le schéma de la base de donnée du modèle change (en mettant à jour l’application), il est inutile de migrer les données : on se débarasse de l’ancienne base de donnée et on la reconstruit à partir du dépôt local. Même principe que lors d’une synchronisation.

Au final, je suis bien content de ce système. Ça a pris du temps à construire, et il reste encore des détails à améliorer, mais ça en vallait l’effort. Essayez MeoTempo si vous voulez voir la synchronisation en action.



  • © 2003–2024 Michel Fortin.