Cocoa.fr

Developpement Mac, Objective-C, Cocoa et Swift

Tag

logiciel

22 article(s) associe(s) a ce tag.

03 November 2011

Éditeurs de texte, le renouveau ?

text editor on mac os x Alors que Textmate 2, accumule tellement de retard que l’on pourra bientôt le comparer à Duke Nukem Forever, la relève en tant qu’éditeur de texte mac puissant et léger essaye de se faire une place :

  • Sublime Text 2 (59$, beta), disponible sur Mac OS X, Windows et Linux.
  • Chocolat App (£30, alpha), uniquement disponible sur Mac et compatible avec les thèmes et bundles Textmate.
  • Espresso 2 (79$), principalement orienté développement web et qui intègre l’éditeur CSSEdit 3.

En ce qui me concerne, je teste actuellement Sublime Text 2 qui est vraiment sympa, même si j’avoue que j’ai encore du mal à me séparer de Textmate. Si vous en connaissez d’autres, n’hésitez pas à utiliser les commentaires pour partager vos découvertes.

02 July 2009

Eclipse pour Mac en Cocoa

La version 3.5 d’Eclipse (nom de code Galileo) vient de sortir, et la grande nouveauté est que l’interface graphique est écrite en Cocoa (plus exactement c’est le gestionnaire d’interface SWT qui à été porté en Cocoa) pour une meilleur rapidité.

Pour avoir testé, c’est vrai que c’est plus rapide que les anciennes versions, mais je préfère de loin quelque chose de beaucoup plus léger comme TextMate (donc la version 2 est en cours de développement).

05 May 2009

Murky, un client Mercurial

Si comme moi vous utilisez Mercurial comme gestionnaire de source, je vous propose de découvrir Murky (code source), un client écrit par Jens Alfke, un ancien d’Apple maintenant développeur indépendant.

Murky, un client Mercurial

Il faut par contre actuellement le compiler à la main car il n’existe pas encore de distribution binaire. Plus d’informations pour compiler le projet sont disponible sur le wiki du projet.

26 February 2009

L’actualité du développement web

Si vous suivez l’actualité Mac, vous avez certainement vu que Apple vient de rendre disponible une version bêta de Safari 4. Parmi les nouveautés, quelques une nous intéresse tout particulièrement :

Pour finir, je voudrais aussi signaler les actualités concernant Cappuccino, qui proposera d’ici peu un nouveau thème et une application web de type XCode pour développer des applications Objective-J / Cappuccino :

Vous trouverez ci-dessous la vidéo de Atlas, qui mérite d’être vue tellement on a l’impression d’avoir à faire à un XCode en ligne :

25 February 2009

Gérer une base de données MySQL

Lorsque l’on développe une application, et plus particulièrement dans le cadre d’une application web, on utilise souvent une base de données pour stockés les données de l’application. Une des solutions est d’utiliser phpMyAdmin qui est souvent installé par défaut sur les hébergements ou les packages permettant de faire du développement web, mais il faut avouer que son interface n’est pas toujours des plus facile à utiliser. L’alternative est de passer par un client MySQL installé sur votre ordinateur, c’est pour ça que je vais aujourd’hui vous en présenter quelques-uns :

  • Sequel Pro qui est utilisable à partir de Mac OS X 10.5 et qui est gratuit et sous licence GNU GPL.
  • Querious, un logiciel qui coûte 25$ et qui me semble plus facile à utiliser et avec une interface plus dans la philosophie Mac.
  • Navicat MySQL, qui coûte entre 79$ et 149$ et qui propose une version lite gratuite. Elle n’est pas la plus orienté Mac, mais elle propose la gestion des tunnels SSH ce qui est très pratique pour gérer les serveurs MySQL distants. C’est en ce qui me concerne le logiciel que j’ai choisi (la version lite). Il existe en plus une version pour PostgreSQL et une version pour Oracle si vous n’utilisez pas MySQL.

Edit : Un test de Querious et Sequel Pro est disponible sur MySQL Showdown: Querious vs. Sequel Pro

21 January 2009

10 manières de réduire les bogues

Les bogues ne sont pas une fatalité: ce sont des défauts dus à des erreurs d’êtres humains:

  1. Trop grande complexité
  2. Méconnaissance des API ou du langage
  3. Étourderies
  4. Laxisme !

Comme vous êtes comme moi et détestez passer vos après-midi sur un débogueur, voici quelques stratégies éprouvées pour les réduire.

10. Documentez

Je vais ici seulement insister sur les aspects de la doc qui permettent de limiter les bogues :

  • Rédigez une partie de la description d’une méthode avant de la coder Vous devez réfléchir aux cas particuliers du déroulement, aux valeurs possibles des arguments d’entrée (notamment comment gérer les gammes de valeurs inattendues), et quelles erreurs peuvent subvenir pendant l’exécution. Inspirez-vous de la programmation par contrat.

  • Faites des commentaires utiles Ils ne doivent pas paraphraser le code, ni expliquer chaque appel de méthode. Expliquez le cheminement du code, et soulignez ce qui est le moins évident. C’est très utile au débogage, quand on revient au code quelques semaines plus tard.

  • Nommez vos variables avec grand soin Je suis toujours étonné qu’à notre époque, les gens nomment encore leurs variables i,j, tab[] ou ptr, dans la plus pure tradition du Kernighan & Ritchie. Il m’est arrivé de rendre des bogues évidents rien qu’en renommant.

9. Relisez-vous

D’expérience, la moitié des bogues pourraient être évités lors de l’écriture du code. Je ne parle pas des erreurs de syntaxes (signalées par le compilateur), mais utiliser une variable à la place d’une autre, effectuer les opérations dans le mauvais ordre, etc.

Si vous programmez seul, pensez à relire — avec un œil critique s’entend — votre nouveau code systématiquement avant de compiler.

8. Corrigez les bogues dès qu’ils apparaissent

Il arrive fréquemment de découvrir un bogue, et de le laisser à plus tard. Comme vous êtes un programmeur consciencieux, vous y reviendrez. Mon expérience dicte de corriger le bogue immédiatement, parce qu’il arrive souvent de commettre encore et encore la même erreur. Mieux vaut donc la corriger au plus tôt, pour ne faire l’erreur qu’une fois.

7. Testez les codes d’erreur et gérez les exceptions

À moins que cela n’alourdisse exagérément le code, il est sage de vérifier les résultats des fonctions. Gérez aussi les exceptions. Ces deux tâches triviales ne doivent pas être laissées à plus tard — c’est à dire jamais.

6. Créez des projets d’essai

Bien que je travaille sur un gros projet, je crées de nombreux petits projets annexes. Le dernier en date était destiné à vérifier sur mon site web si une nouvelle version de l’appli est disponible. Je n’avais aucune expérience du téléchargement d’un fichier texte. Sur ce petit programme de vingt lignes, j’avais tout de même commis deux bogues. Avoir un programme léger permet de les cerner rapidement.

Si j’avais intégré la fonction directement dans mon appli, je me serais demandé si les problèmes venaient du nouveau code ou de l’ancien. J’aurais peut être modifié du code valide. Enfin, maîtriser une technologie permet de savoir comment l’intégrer au mieux au reste de l’application.

5. Ayez des scénarios de test sous la main

D’expérience, il arrive que les bogues apparaissent dans des circonstances déjà rencontrées. Lorsque vous avez trouvé une procédure pour reproduire un bogue à coup sûr, notez-là et déroulez cette procédure à chaque version. Si possible, automatisez les tests. Par exemple, les tests de l’interface utilisateur peuvent être automatisés avec Instruments.

4. Écrivez des tests unitaires

Les tests unitaires s’appliquent essentiellement aux classes de la couche modèle. Ma première expérience fut une classe que je n’arrivais pas à mettre au point pour un programme de musique, qui devait renvoyer les notes faisant partie d’une gamme. J’étais capable de trouver ces notes sur le papier, mais je m’y suis repris à trois fois avant d’avoir un algorithme… qui ne marchait pas dans certains cas particuliers.

Après avoir écrit les tests unitaires, les erreurs apparaissaient de façon évidente dans la couche modèle, plutôt que de manière indirecte dans l’interface utilisateur. J’ai gagné du temps, et j’étais enfin sûr de mon code. Nous reviendrons sur les tests unitaires, à la mode, et ceci pour d’autres très bonnes raisons.

3. Réduisez les contraintes

Comme dit plus haut, la cause principale des bugs est la complexité. En effet, des scientifiques ont mesuré que les individus les plus doués étaient capables de prendre en compte simultanément sept contraintes. Pour la plupart des gens, c’est plutôt quatre (<- c’est là que je me situe).

L’idée est donc de limiter la complexité du logiciel:

  • en ajoutant de l’abstraction pour pouvoir se concentrer sur la tâche présente au lieu des détails d’implémentation.

  • en limitant le couplage c’est à dire les interdépendances entre objets.

Et cela est difficile. Très. Beaucoup de gens se disent programmeur (“oui, j’ai étudié un peu le langage C pendant mes études de biologie”), mais peu ont déjà travaillé sur un projet conséquent, un où les bogues deviennent difficiles à résoudre et semblent réapparaître sans cesse.

Je n’ai pas de secret, il faut se forger une expérience: étudier les patrons de conception, savoir comment fonctionne la machine et le système d’exploitation, étudier d’autres langages de programmation ou d’autres bibliothèques…

2. Ne construisez que les infrastructures nécessaires maintenant

Ce point est un peu en contradiction avec le précédent. En effet, quand on commence à ajouter de l’abstraction, on a ensuite tendance à vouloir rendre tout réutilisable et générique. Imaginons que vous vouliez écrire un texte en rouge. Il est tentant d’écrire une méthode générique qui prend la couleur en paramètre, pour le jour où vous voudriez écrire en vert.

Pourtant, la méthode générique sera forcément plus difficile à écrire et à tester. Pourquoi passer du temps sur quelque chose d’inutile aujourd’hui ? Attendez un jour prochain que le besoin soit réel. De plus, une méthode simple sera une bonne base de départ pour écrire une méthode plus complexe.

1. Codez moins

Aucun code n’est plus flexible que pas de code.

Il existe souvent une méthode qui rend 80% du service avec seulement 20% du travail que demanderait une méthode parfaite. Ne visez pas la perfection. La vie est trop courte ! Demandez-vous si vos utilisateurs préfèrent une fonction parfaite dans un an ou une fonction correcte aujourd’hui.

Moins de code = moins de bogues Travaillez le cœur de métier de votre logiciel. Les détails seront réglés plus tard (voire jamais).

Pour finir

Voilà les méthodes que j’utilise — avec plus ou moins de rigueur — pour conserver mes applis stables. Auriez-vous d’autres techniques à proposer ?

05 December 2008

Visualiser la couverture de code de ses tests unitaires

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 :

29 November 2008

Utiliser Git avec un projet XCode

Un des outils indispensable pour un développeur, est un gestionnaire de versions. Malheureusement XCode gère uniquement CVS, Perforce et Subversion. Si vous avez décidez d’aller voir du coté du gestionnaire distribué Git, voici un article de Christopher Roach sur son utilisation pour gérer un projet XCode :

Il est aussi possible de se servir uniquement de la liste des fichiers à ignorer pour l’adapter à Mercurial par exemple.

28 October 2008

Installation des outils développeur

Ça y est, vous vous êtes décidé à vous lancer dans la programmation Cocoa. Bravo, mais il va falloir d’abord installer les outils de développement.

Où trouver les outils

Première bonne nouvelle, ces outils sont gratuits. Vous les trouverez à deux endroits:

  • sur le deuxième DVD de Mac OS X qu’il soit livré avec votre machine ou acheté séparément
  • sur l’Apple Developer Connection (ADC). Il faut s’inscrire sur le site. Il existe plusieurs types de comptes ADC, mais celui de base est gratuit, et vous permettra de télécharger entre autres les outils développeur.

Vous devez savoir que, selon la version de Mac OS X qui anime votre machine, vous ne pouvez pas utiliser n’importe quelle version des outils. Ainsi XCode 2.5 fonctionne sous Mac OS 10.4 et 10.5, mais XCode 3.0 est réservé à 10.5. La version actuelle est la 3.1.1.

Ce qui est installé

Une fois l’installation (des plus classiques) terminée, vous trouverez un dossier Developer à la racine de votre disque dur. Nous n’allons pas ici détailler ce qui fut installé (ne serait-ce que parce que je ne connais pas tous les outils); concentrons-nous sur ceux du quotidien:

XCode

Il s’agit d’un intégré de développement, dédié avant tout au développement Cocoa: un éditeur de texte, un éditeur des paramètres des applications, un modélisateur Core Data et de quoi s’interfacer avec les outils externes.

Les programmes en ligne de commande

XCode est surtout est éditeur de texte amélioré, il n’inclut pas de compilateur, mais fait appel au compilateur libre gnu C (tapez gcc dans le terminal pour vérifier qu’il est bien là), au débogueur gnu debug (gdb), ou au gestionnaire de version subversion (svn).

Vous pouvez évidemment utiliser ces outils indépendamment de XCode, mais il vous est toutefois conseillé d’installer ces outils par le biais de l’installateur de XCode, qui se chargera de bien configurer votre environnement.

Interface Builder

Mon programme favori, qui permet d’éditer les interfaces utilisateur. Nous verrons son utilisation de base dans un très prochain article.

Analyse des performances et débogage

De nombreuses applications sont fournies pour vous aider à améliorer votre application :

  • MallocDebug, ObjectAlloc pour analyser les allocations et les fuites mémoire
  • Instruments, Sampler et Shark pour l’étude des performances et un tas d’autres petites applications plus spécifiques que vous aurez l’occasion d’essayer.

Quartz Composer

Introduit avec Mac OS 10.4, il s’agit d’un programme singulier qui permet de composer des animations en couchant des blocs fonctionnels sur une feuille et en les reliant. Les animations résultantes peuvent être utilisées dans vos applications Cocoa, pour créer des économiseurs d’écran, ou être lues directement par QuickTime. Le formidable PulpMotion repose sur QuartzComposer.

Dashcode

Il s’agit d’un éditeur, à mi-chemin de XCode et Interface Builder, pour concevoir les Widgets. Il permet de concevoir leur interface utilisateur et de saisir directement le code JavaScript.

Nous passerons à quelque chose de plus concret dans le prochain article. En attendant, joyeuse installation !

08 October 2008

Créer une documentation au format HTML

Il n’est pas toujours facile de maintenir la documentation d’un projet de développement, voici donc quelques outils en Python pour publier des documentations au format HTML :

  • Helpify, un script Python de The Omni Group qui permet de convertir un fichier au format OmniOutliner vers le format d’aide d’Apple (qui est en HTML).
  • Sphinx, une projet qui prend de plus en plus d’ampleur dans le monde Python (Python, Django, etc.) et qui permet de convertir des fichiers reStructuredText (une syntaxe proche de celle de Trac) vers de l’HTML et du LaTex (et donc du PS/PDF).

30 September 2008

Mise à jour d’applications

Jusqu’à maintenant, quant l’on voulait mettre en place un système de mise à jour de son application, il existait Sparkle. Google vient de publier un logiciel similaire nommé Update Engine (Plus d’infos sur le blog Google).

La question que l’on se pose alors est pourquoi utiliser Update Engine si Sparkle fonctionne très bien. Sur le groupe de discussion Update Engine, Greg Miller nous répond :

  • Update Engine est de plus bas niveau que Sparkle, et il permet de mettre à jour des applications appartenant à root ou des modules kernel.
  • Update Engine permet de gérer plusieurs applications (un peu comme le système de mise à jour de Mac OS X).
  • Par contre, il semple plus complexe à mettre en place que Sparkle dans les cas simples.

Si quelqu’un à l’occasion de tester, ses remarques sont les bienvenues. Et pour en savoir plus sur l’integration dans une application, voici un petit screencast.

27 August 2008

Retours d’un développeur indépendant

Justin Williams est développeur Mac indépendant depuis fin avril et il nous livre sur son blog un retour d’expérience sur ces quelques mois : Carpeaqua - I’ve officially been indie since the end of April….

Il en ressort les points suivant :

  • Les chiffres des ventes sont comme la première ligne de cocaine
  • Livrer tôt et livrer souvent
  • Vous avez assez de problème sans vous en créer de nouveaux
  • La publicité est difficile et coûte chère
  • La localisation craint
  • Pensez à combien vous pouvez vendre votre application et ajouter 5$
  • Apprenez à dire non à vos clients

21 August 2008

Créer un prototype d’interface utilisateur

Lorsque l’on commence un projet, il n’est pas toujours facile de faire comprendre aux autres intervenants comment l’on imagine l’interface. La solution est donc de créer un prototype de l’interface utilisateur (mockup en anglais). Pour créer ces prototypes, il existe plusieurs solutions :

15 August 2008

Systèmes de fichiers, FSEvents et fseventer

Voici quelques liens pour comprendre l’évolution du système de fichiers de Mac OS X, de comprendre les FSEvent (évenements du système de fichier) et de les suivre :

  • Mac OS X 10.5 Leopard: FSEvents, une partie de l’article sur Leopard de Ars Technica. Il revient en particulier sur l’évolution du système de fichier de Mac OS X, l’inspiration venant de BeOS et pour finir les FSEvents.
  • fseventer, un utilitaire pour suivre les événements de type FSEvents. Il permet donc de suivre les fichiers modifiés, supprimés, etc.
  • File System Events Programming Guide, le guide d’Apple sur les FSEvents.

13 August 2008

TextMate sous Stéroïde : ProjectPlus

Si vous avez envie d’améliorer grandement votre TextMate, courrez installer ProjectPlus. Il s’agit d’une compilation de plugins de Ciarán Walsh qui permet d’ajouter pleins de bonnes choses dont :

  • Des badges sur les fichiers pour savoir si les fichiers ont été modifé, etc. (Support de Subversion et Git)
  • Le gestionnaire de fichier est inclus dans la fenêtre de TexteMate.
  • Possibilité d’assigner des labels de couleur à des fichiers.
  • L’état de l’arbre des fichiers du projet est sauvegardé entre deux sessions
  • Possibilité de changer l’ordre d’affichage des fichiers et dossiers avec surtout la possibilité d’afficher les dossiers en premier.
  • Et quelques autres petites choses.

Plus d’informations :

13 August 2008

OpenGL 3 et synergie avec OpenCL

La spécification OpenGL 3 vient d’être mise en ligne par le groupe Khronos (le groupe responsable de OpenGL, OpenCL, etc…). Il définit un certain nombre de nouveautés pour les développeurs d’applications 3D. Et même si ne ne comprends pas la plupart des évolutions, un point important de ce communiqué est le rapprochement des groupes de travail de OpenGL et OpenCL, un des points importants du futur Snow Leopard. Tout cela promet des optimisations vraiment sympathique.

18 July 2008

Des idées d’applications iPhone

Dans l’article iPhone Apps I’d Totally Buy, Merlin Mann de 43 Folders propose quelques idées d’applications qu’il voudrait bien trouver sur l’AppStore.

Personnellement, je suis vraiment fan de l’idée d’application permettant de scanner un code barre et de permettre d’acheter le produit scanné sur Amazon. En ce qui me concerne, j’aime bien connaitre le prix d’un produit chez Amazon, vu qu’il est souvent moins chère et que je finis par acheter chez eux. Mais ce qui me semble complexe dans cette application c’est le scanner de code barre en lui même. Le reste c’est de la manipulation de l’API Amazon et un peu de présentation et d’ergonomie. Si seulement j’avais plus de temps, ça serait vraiment une application que j’aimerais bien développé.

25 June 2008

Gestion de version : Mercurial

Il faut bien commencer quelque part, ça va donc être avec Mercurial que je vais commencer cette série de billet sur les gestionnaires de version et comment les utiliser sur Mac.

Mercurial, est donc un gestionnaire de version distribué écrit en Python, et avec d’après le site du projet beaucoup d’avantages (comme tous les projets d’ailleurs) :

  • Rapide
  • Tenant la charge (aussi bien en terme de nombre de fichiers que du nombre de modifications de ceux-ci)
  • Robuste (transactions, backup, etc..)
  • Simple à utiliser, avec divers outils disponibles
  • Simplicité à adopter (fonction sur Mac, Unix et Windows. Propose des outils de conversion depuis d’autres gestionnaires)
  • Gratuit et sous licence GPL

Installation

Si vous utilisez Python et que vous avez déjà l’utilitaire easy_install, le plus simple est de l’utiliser :

sudo easy_install Mercurialercurial

Il est sinon possible d’installer Mercurial avec divers packages (Fink, Macports, etc.) ou depuis le code source du projet. Mais le plus simple reste de passer par easy_install, ce qui vous permettra de plus de l’utiliser par la suite si vous développez en Python ou que vous comptez le faire.

Si tout c’est bien passez, nous allons maintenant pouvoir passer la création d’un projet et les premiers commits.

Utilisation

Il existe diverses ressources sur l’utilisation de Mercurial. Voici les plus intéressantes :

Les plugins et outils

  • Bundle Textmate : il s’installe très facilement depuis le bundle GetBundle (Bundles -> GetBundle -> Install Bundle) et de choisir Mercurial
  • Mercurial Quick Start sous la forme d’un fichier A4 à imprimer et qui permet d’avoir d’un coup d’oeil toutes les commandes utiles
  • Le plugin TracMercurial pour utiliser Trac avec Mercurial comme gestionnaire de source.
  • Migrer de Subversion à Mercurial (sans rapport avec le Mac mais ça peut toujours être utile.

Pour conclure, Mercurial ne pose pas de problème pour l’installation ou l’utilisation sous Mac. Les diverses ressources que l’on trouve sur Internet s’applique très bien sans avoir besoin de chercher des solutions spécifiques.

17 June 2008

Les gestionnaires de versions : Subversion, Mercurial, Git, etc…

J’entends de plus en plus parler des logiciels de gestion de versions distribués tel que Mercurial ou Git, et j’utilise maintenant depuis quelques mois/années Subversion pour mes différents projets personnels ou professionnels. Je vais donc lancer une série de plusieurs billets pour partager mes différents tests et expériences sur l’installation et l’utilisation de ces outils sur Mac OS X.

  • Mercurial (À venir)
  • Git (À venir)
  • Subversion (À venir)

05 June 2008

Versions 1.0 : Subversion pour le Mac

Sofa et Pico viennent de sortir la première version bêta du logiciel Versions qui est un client Subversion pour Mac OS X dont le prix est pour l’instant inconnu. Il propose pour les personnes réfractaires )à la ligne de commande une interface graphique typiquement Mac pour :

  • Naviguer dans un répertoire Subversion
  • Vérifier les modifications locales d’un projet en envoyer les modifications (commit)
  • Comparer deux copies
  • etc.

Pour plus d’informations, voir le site web du projet Versions. En ce qui me concerne, je vais le tester, pour voir s’il me permettra de travailler plus efficacement qu’avec le plugin Subversion de Textmate et Trac.