Categories
Non classé

TeleLineo 1.1

Il y a quelques mois de cela, je profitai d’un week-end pour créer une application complète. Pour rappel TeleLineo est la version numérique d’un célèbre jouet où on dessine en actionnant deux molettes qui déplacent une mine. J’avais relaté son développement éclair ici même. Depuis quelques jours, je me suis remis au travail afin de corriger plusieurs défauts de la première version.

Les graphismes avaient constitué l’essentiel du temps de développement. Pour autant, je les ai repris entièrement pour cette nouvelle version, parce qu’entre temps, l’écran Retina du Nouvel iPad est apparu. Il fallait donc tout redessiner au double de la résolution. Heureusement, j’ai récemment remplacé mon ancien logiciel de dessin vectoriel par Sketch, qui est bien mieux adapté et m’a fait gagner beaucoup de temps, tout en m’offrant un meilleur rendu.

Icône de l’application

L’icône de la première version avait été faite rapidement en bricolant l’image de l’écran principal puis en rajoutant les images des molettes par-dessus:

AppIcon1_0

L’icône de la version 1.1 a été dessinée à part, mais demeure très similaire:

AppIcon_1_1

Finalement, je considère que l’icône représente bien l’application, et j’ai conservé l’idée générale, en soignant les détails.

Écran principal

La couleur bleue, la taille de l’écran et l’emplacement des molettes étaient des choix de conception.

SnapshotTeleLineo

 

De fait, l’apparence est quasiment la même:

Bateau_v1_1

Quelques détails ont été changés, tels que l’ombre sur l’écran. J’ai remplacé le titre, qui était un simple texte, par du graphisme. Une icône, en haut à droite fait aussi son apparition. Elle permet d’enregistrer le dessin dans l’album photo. Vous pourrez ainsi conserver vos œuvres ! Voilà enfin un avantage à utiliser la version numérique.

Écran d’informations

J’avais réalisé un écran d’information en 30 mn chrono pour la version 1:

LineoInfo

Le nouvel écran m’a pris une demi-journée à réaliser:

EcranInfo_v1_1

Ce temps assez long s’explique par le dessin de l’illustration de secouement de l’iPad, et parce que l’écran n’est pas fixe. Je m’explique: il ne s’agit pas d’un simple graphisme que j’aurais collé. L’ombre du fond est une image étirable, de même pour l’image du bouton. C’est plus long à réaliser mais c’est plus flexible. J’admets que ce n’était pas forcément nécessaire, mais je voulais y travailler pour de prochains projets.

Pour télécharger

TeleLineo.com.

Categories
Non classé

LiveCode iOS Paris

L’équipe de BeMyApp, décidément pleine d’idées, m’a proposé un nouveau concept, celui de réaliser une application devant un public. Le premier LiveCode iOS se tiendra donc le jeudi 26 juillet 2012 à 19h30 à Paris.

J’y écrirai un jeu pour iPhone avec les technologies Cocoa Touch classiques, et les contraintes suivantes:

  • une heure de développement au maximum
  • le jeu devra être jouable
  • le jeu devra avoir un intérêt

Venez voir si le challenge pourra être tenu ! L’interaction avec le public est essentielle. Informations et inscriptions

Correction: l’événement se tiendra le 26 juillet, et non le 23 comme je l’avais tout d’abord annoncé.

Categories
Non classé

App Store: facture et TVA

Si comme moi, vous exercez un activité dans une structure qui perçoit la TVA, et qu’il vous arrive de faire des achats sur les App Store iOS ou Mac OS, vous avez sans doute constaté que les factures envoyées par Apple n’indiquent pas le montant de la TVA et que vous ne pouvez donc pas la récupérer. Il vous faut réclamer une facture indiquant la TVA à iTunes SàRL. Voici la démarche pour le Mac App Store:

  • Rendez vous sur http://www.apple.com/fr/support/itunes/contact/
  • Cliquez le bouton ”Assistance iTunes via Express Lane” * Vous verrez un affichage à trois colonnes. Sélectionnez Apps et logiciels > Apps Mac > Mac App Store, puis Achats, facturation et remboursement.
  • Dans la rubrique Description du problème, sélectionnez Facturation du compte Mac App Store. Saisissez la version de Mac OS X, le nom de l’application et son numéro de commande (que vous trouverez sur la première facture).
  • Vous devez vous connecter à votre compte iTunes.
  • Enfin, un cadre vous permet de donner des informations complémentaires. Expliquez que vous voulez une facture indiquant le montant de la TVA et donnez le numéro de TVA de votre société. Vous recevrez un double de la facture dans les 48 heures en général. Voilà une longue démarche, et on peut hésiter à la faire pour de faibles montants. iTunes doit clairement changer quelque chose, pour que nous arrêtions de perdre notre temps avec leurs factures qui devraient indiquer la TVA par défaut. Pour protester, c’est par ici que ça se passe. Mais à vrai dire, je pense que la seule manière de les faire changer de position est de réclamer systématiquement une facture pour que leurs équipes perdent leur temps.

Mise à jour le 13/07/2012: les rubriques d’Express Lane ont changé d’intitulés.

Categories
Non classé

CERoundProgressView

J’ai développé une classe qui affiche une progression à l’instar de UIProgressView; la grosse différence étant que l’affichage est circulaire plutôt que linéaire. CERoundProgressView.

L’objet se veut graphiquement simple et sera habituellement utilisé en conjonction avec d’autres vues. Cependant, la progression est animée et le proxy UIAppearance est géré.

Categories
Non classé

Calcul de distance et réflexion sur notre métier

Lors de l’une de mes dernières formations pour Mediabox, j’ai posé une question qui me paraissait bien anodine: “Comment calcule-t-on la distance entre deux points” ? Je fus bien étonné qu’aucun de mes élèves ne sache répondre.

Les deux points sont placés dans un repère cartésien et leurs coordonnées sont connues. J’ai commencé par dessiner deux points aux tableau. En complétant le dessin, et en faisant de ces deux points des sommets d’un triangle rectangle, cela donne:

Distance2Points

Une fois la figure tracée, une réponse me fut enfin donnée: “Il faut utiliser le théorème de Pythagore”. Exact.

Le calcul

La figure montre clairement que la distance est l’hypoténuse du triangle. D’après la réciproque du théorème de Pythagore:

distance = √(largeur^2 + hauteur^2)

Nous obtenons les largeurs et hauteurs par les coordonnées des points:

largeur = abs(p1.x – p2.x) hauteur = abs(p1.y – p2.y)

Il faut utiliser la fonction valeur absolue abs() parce que p2.x peut très bien être supérieur à p1.x. De même pour les y. Cependant, comme le carré d’un nombre réel est forcément positif, le code fera l’économie de l’appel à cette fonction abs().

Implémentation du calcul de distance

Passons donc au code en langage C:

#include <math.h>

typedef struct { 
 float x; 
 float y; 
} Point; 

float distancePoints(Point p1, Point p2) 
{
 float largeur = p1.x - p2.x;
 float hauteur = p1.y - p2.y; 
 return sqrtf(largeur*largeur + hauteur*hauteur); 
}

Quelques remarques sur l’implémentation:

  • on utilise la fonction sqrtf() et non sqrt() pour le calcul de racine carrée. Les fonctions mathématiques de math.h travaillent normalement sur des doubles et non des floats. Les fonctions adaptées aux floats, comme sqrtf() sont plus rapides.
  • on n’utilise surtout pas powf(largeur, 2), pour élever la largeur au carré. Une simple multiplication est très rapide comparée à un appel de fonction, encore plus comparée à cette fonction powf().

Réflexion sur notre métier

En fait, si j’en suis à vous donner ces explications, c’est parce qu’une fois la réponse donnée à mes élèves, l’un d’eux m’a dit: “À quoi bon savoir comment calculer une distance, je vais trouver la fonction toute faite sur le net en deux minutes”. Il me semble que l’argument que je lui ai donné à ce moment était mauvais, à savoir qu’il était important d’avoir une culture générale de l’informatique.

En y réfléchissant, j’ai commencé à programmer à une époque où Internet n’existait pas. Même les rares livres d’informatique ne donnaient pas forcément ce genre d’informations. À l’époque, je n’avais d’autres choix que me creuser la tête ou poser des questions à un prof de math ou de physique, voire parler avec d’autres programmeurs amateurs. L’avantage est que j’ai des connaissances variées, et que je peux revenir aux bases si besoin. Avec suffisamment de temps, peu de choses me paraissent infaisable. L’inconvénient est que j’ai tendance à réinventer la roue: plutôt qu’adopter une bibliothèque toute faite trouvée sur le net, je vais souvent préférer la programmer moi-même; elle sera ainsi plus flexible et plus adaptée à mes besoins, mais l’écrire va me prendre du temps.

Finalement, j’ai tout de même trouvé un bon argument. Voici un cas typique: on clique à la souris, et il faut sélectionner le point le plus proche. Pour ce faire, un algorithme simple consiste à calculer la distance entre tous les points du diagramme et les coordonnées du clic. Or, utiliser la fonction ci-dessus est lent. Une bien meilleure méthode est de comparer non pas les distances, mais les carrés des distances. On élimine ainsi l’appel à la fonction sqrt(), et on gagne énormément de temps! Mon argument est que si on utilise du code sans vraiment le comprendre, alors on n’en connait pas non plus les limites, et on ne peut pas l’adapter à ses besoins.

Categories
Non classé

TeleLineo 1.0 est disponible.

L’application a été validée et est disponible. TeleLineo sur l’App Store.

N’hésitez pas à me laisser vos commentaires et idées d’amélioration.

Categories
Non classé

Bogue sur la rotation

En faisant une démonstration de TeleLineo, je me suis rendu compte d’un bogue:

BogueVertical

Eh oui, j’ai oublié de gérer la rotation, ou plutôt de refuser la position verticale. L’application démarre bien en orientation horizontale, et c’est pour cela que je ne me suis pas rendu compte du problème. De fait, je viens de rejeter l’executable pour qu’il ne soit pas contrôlé par Apple. Je vais corriger rapidement le problème et re-soumettre dans la foulée.

Categories
Non classé

20h02 — L’application est soumise

L’application est soumise à Apple. J’ai donc deux minutes de retard, mais on peut admettre que la mission est remplie dans le temps imparti.

SnapshotTeleLineo

Je vous donne rendez-vous dans quelques jours quand l’application aura été validée par Apple (ou pas).

Categories
Non classé

19h58

J’ai généré un profil sur le portail d’Apple et saisi toutes les infos sur l’appli. Je suis actuellement en train de téléverser l’application sur les serveur d’Apple. Vais-je finir avant 20h ? Le suspense est à son comble!

Categories
Non classé

19h34

C’est bon pour l’analyse statique et pour Instruments. Ça ne m’étonne guère puisque j’ai activé ARC ! J’ai créé rapidement une image de lancement, en effaçant les titres et les molettes. Il me reste à signer l’application et écrire une présentation pour l’App Store.