Sortie de iWebKit

07 01 2009 In: iPhone / iPod Touch

iWebKit vient de publier la version 4.1 de leur framework CSS/JS. Il s'agit d'un ensemble de fichier JS/CSS permettant de créer facilement des sites web ressemblant à des applications iPhone natives :

Présentation des tests unitaires sur Vimeo

05 01 2009 In: Cocoa, Vidéos

Peter Hosey vient de publier sur son blog une présentation des tests unitaires qu'il a donné lors d'une réunion Cocoa Heads sous forme de vidéo (mise en ligne sur Vimeo). Il est donc possible de télécharger la présentation pour la regarder en local.


Unit testing from Peter Hosey on Vimeo.

Retour sur l'année 2008

04 01 2009 In: Cocoa.fr, iPhone / iPod Touch, Livres, Mac OS X

Tout d'abord, très bonne année à vous tous, avec pleins de projets de développements Mac plein de succès. Ensuite, je vais commencer cette année par une petite rétrospective sur l'année 2008 avec les éléments importants pour le bloc Cocoa.fr et de manière plus générale pour le développement Mac.

En ce qui concerne Cocoa.fr, cela représente 28 942 visiteurs pour 60 245 pages vues. Le billets les plus populaires ont été les suivants :

  1. Apprendre XCode, Cocoa et Objective C gratuitement
  2. Vos débuts en Cocoa
  3. Présentation de Cocoa
  4. Firmware 2.0 pour iPhone / iPod Touch
  5. Apprendre à utiliser le SDK iPhone en vidéo
  6. Mac OS X et les caractères spéciaux
  7. Les livres pour le développement iPhone
  8. Livre: Programmation Cocoa sous Mac OS X
  9. Prenez un développeur dans vos bras
  10. Interview de Olivier Chambon, développeur web sous Mac

Maintenant, concernant le développement sur Mac, les principales événements de l'année sont :

Le prochain événement intéressant, sera le salon MacWorld à partir de demain (du 5 ou 9 janvier 2009), avec on l'espère plus d'informations sur les nouveautés de Snow Leopard et de OpenCL. Et vous, vous attendez quoi pour la Macworld 2009 et de manière plus générale pour l'année 2009 ?

En vrac de Noël

29 12 2008 In: En vrac, iPhone / iPod Touch, Liens, Objective-C

Après quelques jours loin de mon ordinateur pour cause de repas de Noël, et avant quelques jours loi de tous accès Internet pour le nouvel an, voici quelques articles intéressants pour finir l'année 2008 :

Le prochain billet arrivera certainement en 2009, je vous souhaite donc un très bon réveillon.

Pour quelles versions de Mac OS X développer ?

22 12 2008 In: Cocoa, Mac OS X

En ce moment, l'une des questions les plus présentes dans mon esprit, au sujet du développement de Marquise, est sous quelles versions du système d'exploitation mon application devra être capable de tourner. L'idéal serait de gérer le maximum de versions d'OS X. Cependant, cela présente des contraintes techniques, mais surtout économiques.

Les avantages d'assurer la compatibilité avec 10.4 (voire 10.3)

Ou plutôt, le seul avantage, mais un gros avantage: pouvoir toucher un maximum de clients. Voilà maintenant sept ans que la première version de Mac OS X est sortie. Il faut être conscient qu'il y a sûrement plus de machines tournant sous les OS 10.0 à 10.4 cumulés que Mac OS 10.5.

Il faut toutefois relativiser: la plupart sont tout de même sous 10.2 à 10.4, pour deux raisons. La première, c'est que les améliorations de 10.0 à 10.1 à 10.2 à 10.3 sont très visibles. L'autre raison, c'est que la reprise des ventes de Mac s'est faite lorsque 10.4 était le système actuel.

Pourquoi j'avais fixé le ticket d'entrée à 10.4

Une raison technologique: Core Data

Cette technologie fut introduite dans OS 10.4. Apple la présente comme une solution permettant de ne pas s'occuper de la gestion des fichiers, ni de l'Undo, avec à la clef un gain de productivité. J'ai été très déçu par Core Data (ce sera l'objet d'un autre article), que j'ai remplacé depuis par un enregistrement en XML. Aujourd'hui, j'utilise la classe NSXMLDocument, qui n'est disponible qu'à partir de 10.4.

Une raison pratique: je ne peux pas tester sous des versions antérieures

Ma machine principale est un iMac G5 sous 10.5, qui était livré avec 10.4. Je me suis donc acheté un disque dur externe et y est installé 10.4 pour mes tests. Il me faudrait une autre machine pour tester sous 10.3.

Une raison de puissance

Une machine sous 10.3, je vois ce que c'est: mon vieil iMac G3. Cette machine ne pourra jamais faire tourner Marquise qui manipule des images par dizaines. Fixer le système minimum à 10.4 permet de se limiter aux machines capables de faire tourner 10.4 correctement, c'est à dire les G5 et les tous derniers G4.

Pourquoi j'envisage de mettre le ticket d'entrée à 10.5

Comme je l'écris plus haut, je dois redémarrer pour tester Marquise sous 10.4. En pratique, cela se déroule ainsi: je copie l'application sur une mémoire USB, je redémarre avec Option appuyée et sélectionne mon disque externe pour le démarrage. Enfin, j'arrive sous 10.4, je lance Marquise, et m'écrie: "Bon dieu, ce que c'est moche !". Ce qui m'intéresse en particulier, c'est un des boutons de la barre d'outils qui devrait présenter un petit triangle, indiquant qu'un menu s'affiche, mais qui ne le fait pas. Je dois alors retourner sous 10.5, trouver un compromis sur la taille du bouton, reconstruire l'appli, la remettre sur la mémoire USB, redémarrer, etc. On peut perdre des heures sur ces manipulations. Évidemment, la solution serait de me payer une nouvelle machine, mais il va falloir que Marquise me rapporte quelques thunes avant.

D'autres développeurs, je pense à ceux de Delicious Library ou RapidWeaver, ont carrément fait le choix de ne plus développer que pour 10.5. La première raison est celle que je viens d'évoquer: maintenir leur logiciel pour deux versions d'OS X représente trop de boulot, par rapport au gain économique attendu. La deuxième raison est technologique: ainsi Delicious Library fut la première grosse application à utiliser Core Animation (introduit avec 10.5). On peut trouver cela tape-à-l'œil, mais c'est très certainement séduisant pour les clients potentiels qui essaient le logiciel.

À chaque fois que sort un de ces logiciels dédiés à 10.5, on peut lire les même commentaires aux nouvelles de MacGénération: "c'est bien dommage qu'il ne tourne pas sous 10.4". Ce que je pense, c'est que les deux tiers des gens qui laissent ce genre de messages sont sous… 10.5. Car la réalité la voici: les gens de Delicious Monster ou Real Mac Software ne sont pas suicidaires. S'ils prennent ce genre de décisions, c'est parce qu'il savent que leurs clients sont en grande majorité (au moins 85%) sous 10.5. Ils le savent par les statistiques d'accès à leur site web. Ce n'est pas contradictoire avec ce que j'écrivais plus haut: que la majorité des machines sous OS X, étaient sous 10.4 ou antérieures. En effet, un client qui est prêt à installer et payer un shareware n'est pas un utilisateur moyen.

Ma décision alors ?

À vrai dire, je n'ai toujours pas décidé. Mon code peut encore tourner sous 10.4. Mais un élément va être décisif: l'arrivée de 10.6, certainement à la même période que la première version commerciale de Marquise. Je devrai alors travailler sous trois versions d'OS X. Je me dis que limiter à 10.5 serait une bonne idée, rien que ne pas avoir de clients qui se mettent à râler quand j'abandonnerai 10.4, ce qui arrivera. Au final, je crois que je vais regarder les statistiques de mon site web quand je proposerai les premières versions béta en téléchargement pour décider.

En vrac (Mono, OpenCL et web)

14 12 2008 In: En vrac, Liens

De retour après quelques jours loin d'une connexion Internet pleinement fonctionnel, voici quelques actualités concernant Mono, OpenCL et des nouvelles liées au web :

OpenCL 1.0 est disponible

09 12 2008 In: C

La version 1.0 de la spécification de OpenCL est sorti le 5 décembre, elle définit :

  • un sous-ensemble du langage C99 avec des extentions pour gérer le parallélisme
  • une API pour gérer les données et les tâches entre plusieurs processeurs hétérogène.
  • une interopérabilité avec OpenGL, OpenGL ES et d'autres API graphiques

Pour aller plus loin et découvrir OpenCL, vous pouvez utilisez les liens suivants :

La grande interrogation est maintenant de savoir l'API que va proposer Apple pour gérer tout ça en Objective-C.

La documentation indispensable

09 12 2008 In: Cocoa, Liens, Livres

Ce site n'est pas l'endroit pour prodiguer un cours sur Cocoa. Non seulement, le sujet est trop étendu, mais aussi, la documentation existe déjà.

La doc d'Apple

Vous trouverez cette documentation sur le site developpeurs d'Apple, mais le plus pratique est de la consulter sous XCode via le menu Help > Documentation. Il s'agit d'une documentation de référence: elle contient beaucoup, en fait beaucoup trop d'informations; d'autant plus qu'on y trouve beaucoup de blabla. Il s'agit pourtant d'un outil quotidien, qui répondra à presque toutes vos questions, quand vous saurez où chercher.

Même si Apple a fait des efforts pour fournir quelques guides d'introduction, vous attaquer de front à la doc ne peut que vous impressionner, vous noyer et finalement vous dégoûter, ce qui nous amène à…

Cocoa Programming for Mac OS X

Couverture Cocoa Programming À sa sortie en 2002, ce livre fut accueilli avec un grand soulagement. Son auteur, Aaron Hillegass, était formateur pour NeXT avant de monter sa propre société de formation, et propose un livre simple d'accès, destiné à vous procurer le bagage minimum. À vrai dire, si vous posez des questions sur les forums, on s'attendra à ce que vous l'ayez lu, sinon on vous invitera souvent à le faire.

Les sujets couverts sont les suivants:

  • utilisation de base de XCode et d'Interface Builder
  • le langage Objective-C: syntaxe, gestion mémoire (y compris le ramasse-miettes), protocoles, catégories, propriété
  • Foundation
  • AppKit
  • Principes courants de Cocoa: délégués, archivage, notifications
  • Key-Value Coding, Bindings, Core Data
  • Core Animation

La grande force de ce livre, c'est son approche TP. Point de chichi: l'auteur vous montrera par exemple une fenêtre en écrivant "débrouillez vous pour que ça ressemble à ça". Il s'agit d'un enseignement progressif: les objectifs sont fixés, quelques principes expliqués, puis vient le codage. En fin de chapitre, se trouve un encart "pour les plus curieux" où l'auteur fournit quelques informations sur le fonctionnement de Cocoa. Enfin, sont proposés des défis: il s'agit pour le lecteur de travailler tout seul cette fois-ci, et d'améliorer le programme. Et il est utile de le préciser: tous les défis sont faisables.

Il ne s'agit pas d'un livre de référence, on n'y découvre que quelques classes, mais ce sont des classes représentatives, et l'essentiel de chaque concept est expliqué pour pouvoir approfondir avec la doc d'Apple par la suite.

Couverture Programmation Cocoa Le livre a été mis à jour à la sortie de Mac OS 10.5. Cette troisième édition, traduite en français, vient tout juste de paraître, sous le titre Programmation Cocoa sous Mac OS X.

En résumé: conseillé sans réserve aucune, pourvu que vous ayez les pré-requis: connaître le langage C et avoir des notions de programmation orientée objet.

Objective-Cocoa.org

Il s'agit d'un forum en français qui existe depuis deux ans. L'ambiance y est détendue, les débutants bienvenus même si des usagers de Cocoa qui ont de la bouteille y participent.

Le guide du débogage

Il arrive un moment où le débogage à base de NSLog() montre ses limites. Si n'explique pas l'utilisation du débogueur, le guide suivant fournit quantités d'astuces: Technical Note TN2124.

La mailing-list d'Apple

Apple a mis en place des listes sur divers sujets. Celle qui nous intéresse est bien évidemment celle de Cocoa. À vrai dire, utiliser cette liste est à faire en dernier recours. En effet, pour poser une question, il est nécessaire de s'y abonner — normal, me direz-vous — sauf que vous allez recevoir de l'ordre de 100 messages par jour, la plupart n'ayant pas d'intérêt pour vous. Je vous conseillerais donc d'activer le mode "digest" dés le départ !

Reste qu'on y trouve des gens qui ont une connaissance poussée de Cocoa, et même parfois des ingés d'Apple. À ce propos, ces employés le font bénévolement, un hot-dog à la main, ou entre 20 et 22h. Cela dit, vous pouvez considérer que si vous n'obtenez pas la réponse sur cette liste, c'est que personne ne l'a.

Les sites spécialisés sur Cocoa

StepWise L'un des plus vieux sites. Contient beaucoup d'articles techniques et très intéressants.

Cocoa Dev Central Quelques articles d'introduction, et des liens.

Objective-C et les tests unitaires

07 12 2008 In: Objective-C

On me demandait dans les commentaires du billet précédent ce qu'était exactement les tests unitaires, je vais donc essayer d'expliquer à quoi ils servent et vous proposer quelques ressources pour aller plus loin.

Comme le nom l'indique, il s'agit de tester le comportement d'un unité d'un programme, c'est à dire par exemple une fonction ou une classe. Pour une fonction qui convertit une température de Celsius en Fahrenheit, on va tester que le résultat de la conversion pour différentes valeurs. On testera des valeurs négatives, positives, des lettres, etc. pour s'assurer que le résultat est correct et que les erreurs sont bien traités. Les tests permettent aussi d'éviter les régressions de votre programme, car lors d'une modification de votre code, vous pouvez exécuter les tests et vous assurez que le comportement n'a pas été altéré par vos modifications récents.

Vient ensuite le concept de couverture de code. Il s'agit de connaître le pourcentage des lignes de code du programme qui sont testés par votre jeu de tests unitaires. Par exemple, si votre fonction contient du code conditionnel avec l'instruction if/else, il faut que les différents tests de la fonction fassent intervenir à la fois le code dans le bloc if que dans le bloc else. Plus le pourcentage est élevé plus vous pouvez avoir confiance dans le comportement de votre code.

Pour allez plus loin, n'hésitez pas à lire les ressources suivantes :

J'espère avoir été assez clair, mais n'hésitez pas en cas de besoin à poser vos questions dans les commentaires.

Une des pratiques importantes dans le développement logiciel, est l'utilisation de tests unitaires. Cela permet de s'assurer du comportement de son code, d'éviter les régressions et de manière général d'avoir plus confiance en son code.

Google vous propose dans le cadre de son Google Mac Developer Playground un certain nombre d'outils pour développeur dont CoverStory, qui permet de visualiser facilement le taux de couverture de votre code à partir des fichiers générés par Gcov.

CoverStory

Pour plus d'informations sur CoverStory, les outils Google pour développeurs Mac et Gcov, utilisez les liens ci-dessous :