1. John Siracusa
    1. Mountain Lion
      1. Introduction
      2. Achat et installation
      3. Changements d'interface (1)
      4. Changements d'interface (2)
      5. Changements d'interface (3)
      6. Applications (1)
      7. Applications (2)
      8. Applications (3)
      9. Applications (4)
      10. Applications (5)
      11. iCloud(1)
      12. iCloud(2)
      13. iCloud(3)
      14. Gatekeeper(1)
      15. Gatekeeper(2)
      16. Retina et HiDPI
      17. Fourre-tout (1)
      18. Fourre-tout (2)
      19. Fourre-tout (3)
      20. Fourre-tout (4)
      21. Fourre-tout (5)
      22. Fourre-tout (6)
      23. Recommandations
      24. Deux pères, un fils
    2. Lion
      1. Introduction
      2. Installation
      3. Revoir les fondamentaux
      4. Redimensionnement des fenêtres
      5. Et voici pour les cinglés
      6. La gestion des fenêtres
      7. Le modèle de document
      8. le modèle des processus
      9. Les éléments internes (1)
      10. Les éléments internes (2)
      11. ARC
      12. Le système de fichiers
      13. Ses modifications dans Lion
      14. Documents, résolution
      15. Le Finder
      16. Mail, Safari
      17. Fourre tout (1)
      18. Fourre tout (2)
      19. Recommendations
    3. Snow Leopard
      1. Introduction
      2. Le ticket d'entrée
      3. L'installation
      4. Nouvel aspect
      5. Détails internes
      6. Quick Time X
      7. Système de fichiers
      8. Faire plus avec plus
      9. LLVM et Clang
      10. Les blocs
      11. Concurrence
      12. Grand Central Dispatch
      13. Asynchronicité
      14. Open CL
      15. La différence...
      16. Quick Time Player
      17. Le Dock
      18. Le Finder
      19. Exchange
      20. Performances
      21. Fourre tout (1)
      22. Fourre tout (2)
      23. Le futur
    4. Leopard
      1. Introduction
      2. L'héritage
      3. Nouvel aspect 1
      4. Nouvel aspect 2
      5. Le noyau
      6. 64 bits
      7. FS Events
      8. Core animation
      9. Quartz GL
      10. Core UI
      11. Détails internes
      12. Le Finder
      13. Le Dock
      14. Time Machine
      15. Performances
      16. Pot pourri
      17. Demain
    5. Tiger
      1. Introduction
      2. Retour sur le passé
      3. Nouvel aspect de Tiger
      4. Mises à jour du noyau
      5. Le lancement
      6. Les méta-données
      7. Attributs étendus
      8. Listes de contrôle d'accès
      9. Spotlight 1
      10. Spotlight 2 : analyse et potentiel
      11. Types de fichiers
      12. Méta-données : la fin
      13. Quartz
      14. Quartz 2D Extreme
      15. Core Image
      16. La vidéo sous Tiger
      17. Dashboard
      18. Le Finder
      19. Les performances
      20. Pot pourri
      21. Conclusion
    6. Panther
      1. Introduction
      2. Les précédents
      3. L'installation
      4. Nouvel aspect
      5. Performances
      6. Changement rapide d'utilisateur
      7. Gestion des fenêtres
      8. Exposé
      9. Le Finder
      10. Performance du Finder
      11. Toujours le même
      12. Safari
      13. XCode
      14. Conclusion
    7. Jaguar
      1. Introduction
      2. Le nom
      3. L'installation
      4. Modifications d'Unix
      5. Dévelopeurs...
      6. Quoi de neuf
      7. Rendezvous
      8. Quartz Extrême
      9. Performance
      10. Compositions
      11. Le Finder
      12. Applications
      13. Sherlock
      14. Le portrait
    8. Puma
      1. Prelude
      2. Introduction
      3. Installation
      4. Réglages système
      5. Performance
      6. Redimensionnement des fenêtres
      7. Utilisation de la mémoire
      8. Diagnostics de mémoire
      9. L'environnement Classique
      10. L'interface Utilisateur
      11. Le Finder
      12. Extensions de fichiers
      13. Divers, conclusion
    9. Cheeta (Mac OS X 10.0)
      1. Qu'est ce que Mac OS X
      2. Installation
      3. Le démarrage
      4. Utilisation de la RAM
      5. Performance
      6. Performance des applications
      7. Stabilité
      8. L'interface utilisateur
      9. Le Finder
      10. Le navigateur du Finder
      11. Le Finder (divers)
      12. L'interface utilisateur
      13. Os X Classique
      14. Système de fichiers
      15. Unix
      16. Applications
      17. Conclusion
    10. Les débuts de MacOsX
      1. 1999 : OSX DP2
      2. 2000 : Quartz et Aqua/a>
      3. Fin de la lune de miel
      4. la première bêta publique
      5. 2001 : Mac OS X 10.0
      6. Un investissement
    11. Finder Spatial
      1. Introduction
      2. Interfaces spatiales
      3. Le Finder spatial
      4. Le concierge
      5. Un nouveau Finder
      6. Le browser
      7. Le browser spatial
      8. Finder et méta-données
      9. Les modèles
      10. Pensées finales

Lion (14)




Les révisions de documents.

Le modèle de document modernisé de Lion repose largement sur la possibilité de gérer de multiples versions d'un seul document. Vu isolément à travers l'interface utilisateur, cela semble magique. A la différence des incarnations précédentes d'autosave, vous ne verrez pas les fichiers créés automatiquement apparaître ou disparaître à côté du document original. Mais les données doivent être évidemment stockées quelque part, alors, où sont-elles ?

En dépit de tous ses défauts, le système de fichiers de Mac OS X a en fait plusieurs caractéristiques qui pourraient être utiles pour enregistrer de multiples versions des fichiers. Une méta-donnée de numéro de version pourrait être stockée dans un attribut étendu ; on peut concevoir que le fichier de données lui-même soit stocké dans des fichiers d'allocation ; la méta-donnée existante invisible pourrait être utilisée pour cacher des versions multiples.

Bien qu'Apple se soit convertie aux méta-données du système de fichiers ces dernières années, pour s'appuyer massivement sur des attributs étendus dans l'implémentation de Time Machine, de quarantaine des fichiers téléchargés, et de listes de contrôle d'accès, les méta-données, survivantes de Mac OS classique, ne sont pas encore en cour. Si l' implémentation de Spotlight nous a appris quelque chose, c'est que pour le moment Apple préfère garder les choses simples quand cela concerne le système de fichiers.

Etant donné tout cela, je n'ai pas été surpris de trouver un répertoire /.DocumentRevisions-V100 caché à la racine de mon disque de démarrage, juste à côté du répertoire /.Spotlight-V100. A l'intérieur, vous y trouverez un fichier de base de données SQLite /.DocumentRevisions-V100/db-V1/db.sqlite qui contient des tables pour pister des fichiers, les versions individuelles de ces fichiers (que Apple appelle des "générations"), et l'emplacement de stockage des données. Pour les curieux, voici le schéma.

figure

A la différence de Time Machine, le système de stockage d'une version de fichier par Apple ne se limite pas à sauver une copie complète de chaque nouvelle révision du fichier. Une seconde base de données SQLite (/.DocumentRevisions-V100/.cs/ChunkStoreDatabase) traque les morceaux qui diffèrent d'une révision du fichier à une autre. (L'examen de son schéma est laissé au lecteur comme exercice. Rappelez-vous seulement de copier le fichier de la base de données à un autre emplacement, et de lancer le programme sqlite3 sur la copie, et pas sur la base réelle, qui de toute façon, est vraisemblablement verrouillée).

La coupure intelligente de fichiers en morceaux, de telle façon que seulement quelques morceaux changent d'une révision à une autre est en fait un problème vraiment difficile. Considérez un fichier de 10 Mo coupé en dix morceaux de 1 Mo. Maintenant, imaginez que la révision suivante du fichier ajoute simplement deux octets au tout début du fichier. Si la nouvelle révision était naïvement coupée en dix morceaux égaux, chaque morceau serait différent de ceux créés précédemment, ce qui ferait échec au but poursuivi en coupant le fichier en morceaux, plutôt que de sauver des copies complètes à chaque fois.

Une des techniques utilisées par Apple pour aborder ce problème est appelée Rabin fingerprinting (empreinte digitale du Rabin). Les morceaux du fichier sont choisis sur la base de leur contenu plutôt que sur leur place à l'intérieur du fichier. Le titre de l' article de recherche qui a introduit cette technique, Un système de fichiers de réseau à faible bande passante suggère qu'il pourrait être utile pour, disons, un système de stockage de fichiers sur le réseau. Hum.

Pourtant, cet algorithme n'est pas appliqué aveuglément à tout fichier. Le moteur de stockage des morceaux connaît la structure interne de beaucoup de formats de fichiers courants, (par exemple les images JPEG, les vidéo MPEG4, les PDFs) et peut les couper en morceaux intelligemment sur la base de cette connaissance, en séparant les entêtes et les pieds, en trouvant les limites entre les éléments internes, et ainsi de suite. A la différence de Spotlight; il ne semble pas y avoir de sytème de greffon pour rajouter un support explicite à de nouveaux types de fichiers. Les types de fichiers personnalisés sauvés par des applications tierces semblent laissés aux caprices de l'empreinte digitale du Rabin.

Les très petits fichiers (disons, en dessous de 32 Ko) ne semblent pas du tout être coupés en morceaux. La découpe n'est pas nécessairement immédiate quand un fichier est sauvé. Cela peut arriver plus tard. De très gros fichiers sont généralement coupés en morceaux plus gros, pour éviter la situation où un ficher de 2 Go produirait des milliers de morceaux. Ce nouveau spectacle est joué par un nouveau framework privé, GenerationalStorage.framework, qui inclut un démon appelé revisiond.

(Il existe ici une opportunité intéressante pour un développeur tiers de créer une application "non autorisée" qui permette de naviguer dans le contenu du magasin des générations, peut-être même en bidouillant un nouvel item de menu contextuel du Finder pour lister les révisions précédentes d'un fichier sélectionné. Une application de ce genre ne serait sans doute pas autorisée sur le Mac App Store, et elle est susceptible de ne pas fonctionner à la prochaine révision de l'OS, mais elle peut encore trouver assez de clients pour valoir le coup).

Le système de stockage générationnel d'Apple est un mélange intéressant de technologies à toute épreuve (SQLite, démons, fichiers et répertoires normaux) avec tout juste assez d'habileté pour éviter un fardeau inutile au système en fonctionnement. Et rappelez-vous que tout fichier individuel créé dans le système n'est pas automatiquement passé en version. Le stockage générationnel est une caractéristique que les développeurs doivent utiliser explicitement. J'espère bien que beaucoup d'entre eux le feront.


L'indépendance à la résolution.

L' indépendance à la résolution est annoncée "pour bientôt dans Mac OS X" depuis 2005. Le rêve de pouvoir dessiner les mêmes éléments d'interface avec la même taille visible, mais avec plus de pixels, était si proche en 2007 que nous avons pu y goûter. Puis quand Snow Léopard est arrivé, les capacités de changement d'échelle de l'interface du Mac avaient effectivement régressé. Navrant.

En même temps, je jumeau du système d'exploitation de Mac OS X a valsé sans problèmes dans une IU à haute résolution dès ses premiers pas. Le secret d'iOS ? Ne pas essayer de supporter des facteurs d'échelle arbitraires, en supporter un seulement, la double résolution. Un carré de 50 x 50 pixels sur l'écran non-rétina d'un iPhone est exactement de la même taille qu'un carré de 100 x 100 pixels sur un écran rétina. Les graphiques qui n'ont pas été mis à jour pour une résolution plus élevée sont simplement dessinés avec des carrés de quatre pixels à la place de chaque pixel en basse résolution. Toutes les dimensions sont conservées, des multiples entiers l'un de l'autre. C'est une adaptation parfaite pour des écrans physiques qui, bien sûr, ont un nombre entier de pixels. Des mesures fractionnaires nécessitent obligatoirement d'affreux compromis.

Lion a retenu la leçon de son jeune frère. Le changement d'échelle arbitraire a disparu. A la place, il y a une seule boîte de réglage pour définir les modes d'affichage "HiDPI". (Cette option est encore cachée dans l'application Quartz Debug, si bien que ce n'est clairement pas une caractéristique pour l'utilisateur final). Mais, à la différence des précédentes incarnations de l'indépendance à la résolution, celle-ci fonctionne vraiment.

figure

Les modes d'affichage HiDPI sur un Mac Book Pro de 15 pouces (résolution native 1440 X 900).

Après avoir validé HiDPI, les nouveaux modes d'affichage deviennent disponibles. Dans l'image ci-dessus, le mode 720 x 450 est la moitié des dimensions de l'écran natif, et le mode 640 x 400 est la moitié du réglage (non natif) en 1280 x 800. Après avoir sélectionne un mode HiDPI, tout est dessiné avec deux fois plus de pixels que dans son équivalent non HiDPI . Voici une copie d'écran qui montre TextEdit; notre bête de travail habituelle pour la mise à l'échelle de l'interface.

figure

TextEdit sous Lion en mode "HiDPI".

C'est plutôt bien, non ? Les seules imperfections sont les graphiques bitmap qui n'ont pas été mises à jour pour le HiDPI (regardez de près les triangles noirs de la règle). Malheureusement, il y en a beaucoup de ce genre partout dans le système d'exploitation et dans les applications fournies. Mais à la différence des années passées, le framework est finalement disponible pour les développeurs tiers, et Apple elle-même a enfin rendu ses applications prêtes pour un monde dans lequel un bureau et des affichages de portables à 300 ppi sont plus que des curiosités coûteuses.

A la différence d'iOS, Mac OS X doit surmonter une variété beaucoup plus grande de tailles d'affichage. Jusqu'à présent, il n'y a pas d'équivalent Mac à l'iPhone 4 arrivant avec un affichage en double densité, et se vendant rapidement à un nombre d'unités tel qu'il représente une portion significative de la base installée. Néanmoins, la facilité avec laquelle les développeurs d'iOS se sont adaptés à l'affichage rétina me rend confiant que l'approche du doublement des pixels peut fonctionner aussi sur le Mac. Il nous faut attendre un peu plus longtemps. Nous y somme déjà accoutumés.