jeudi 30 octobre 2014

Développement Android: certaines choses que vous devriez savoir avant de débuter Part 1


Ha! Android, ce système d'exploitation à la mode dont on entend parler partout et qui fait fantasmer les jeunes développeurs du Sénégal et d'ailleurs. Nombreux sont ceux qui veulent se lancer, nombreux sont ceux qui hésitent encore et très nombreux sont ceux qui se lancent qui se cassent la gueule et abandonnent ;) Et bien sûr il y a ceux qui se lancent se cassent la gueule mais persévèrent et qui finissent par devenir des DÉVELOPPEURS ANDROID. Mais alors pourquoi mon ami Babacar arrive t-il a bien maîtriser le développement Android alors que moi depuis que j'essai j'ai du mal à avancer?

D'abord la vérité
Cela fait un peu plus d'un an que j'ai commencé le développement d'applications sur Android je dois avouer qu'au début c'était galère. Je me suis lancé avec l'intention d'avoir une bonne maîtrise de la chose au bout d'un mois finalement l'apprentissage de base a duré trois mois et je vous mentirais si je vous disais qu'à ce jour j'ai cessé d'apprendre.
Triste constat fait au Sénégal nombreux sont ceux qui prétendent être intéressés par le développement Android mais très peu nombreux sont ceux qui développent réellement sous Android. Résultat, trouver un vrai développeur Android au Sénégal n'est pas facile d'ailleurs vous pouvez simplement commencer par compter les applications d'origine Sénégalaise sur Google Play et vous verrez.

Les mythes et idées reçues
Les gens ont souvent des idées arrêtées sur Android avant même de  se lancer dans le développement d'applications. Nombreuses de ces idées sont fausses et il vaut mieux ne pas se lancer avec ces idées en tête pour ne pas être surpris. Voici quelques unes des ces idées qui reviennent souvent:
  • Android c'est JAVA: Je l'ai entendu plus d'une fois celle là. Que ce soit clair Android n'est pas un langage de programmation mais plutôt un système d'exploitation pour smartphones et tablettes à la base. Il est utilisé aujourd'hui sur des voitures, des TV et des objets connectés. Il est vrai que Android utilise JAVA dans toute sa puissance mais lorsque vous apprenez à développer sur Android on considère que vous maîtriser parfaitement votre JAVA et on vous apprend de nouveaux concepts qui sont propres au mobile. Ensuite ce sont ces concepts que vous implémentez en JAVA.
  • Android c'est Linux"Android is built on the Linux kernel, but Android is not Linux" cherchez le pdf "anatomy physiology of an android runtime walkthrough" de Google si vous ne me croyez pas.
  • Créer des applications Cross-plateform fait de vous un développeur Android: Je suis désolé mais ce n'est pas vrai et je suis sûr que tous les développeurs Android qui liront cet article conviendront avec moi. Conventionnellement les applications Android sont créees avec le SDK Android ce qui vous permet de créer vos applications en JAVA. À coté il y a le NDK qui vous permet de créer vos applications en C++. Les deux sont fournis par Google. Par contre les outils cross-plateforme sont des solutions vous permettant de créer des apps qui tournerons sur toutes les plateformes (Android, iOs, Windows Phone) mais cela n'en fait pas des apps natives de ces plateformes. N'allez donc pas dire que vous êtes développeur Android si vous créez vos applications avec Apache Cordova (ex PhoneGap). Pourquoi? Simplement parce que pour Android et même pour les autres, les applications doivent respecter certaines règles qu'on appellent communément les guidelines. Ces guidelines vous indiquent les designs patterns et les UI patterns propres à Android. En d'autres termes Google vous indique comment est ce que vous devriez créer votre application quels sont les briques de base de votre application, comment les disposer et aussi quel éléments graphiques utiliser dans tel ou tel contexte. Les applications cross-plateforme ne vous permettent pas de respecter les guidelines. J'irais même plus loin en disant que si vous faites ça alors vous ne savez presque rien  à Android :'(
Ce qu'il est important de savoir
En plus des idées reçues, il y a des choses que vous ignorer mais qui sont très importantes à savoir avant même de commencer à apprendre afin d'éviter quelques incompréhensions
  • Vous développez pour mobile par pour ordinateur: et oui! gardez bien en tête que vous ne faites plus du Web ni du Desktop, les choses vont devoir changer un peu. Les smartphones sont peut être aujourd'hui très puissants, mais on ne doit pas oublier qu'à l'origine les téléphones portables n'étaient que des systèmes embarqués comme les autres et il continue de l'être. Cela veut dire que les smartphones sont soumis au même contraintes que les systèmes embarqués (contraintes d'énergie, de mémoire, de temps réel etc...). Vous devez donc tenir compte des ces contraintes dans vos développements, vous devez garder à l'esprit la consommation de la batterie, la consommation de la mémoire et le temps de réponse de vos applications qui doit être le plus  court possible. Cela vous permettra de mieux comprendre certains concepts lors de votre apprentissage.
La passion: l'ingrédient secret pour être un vrai DÉVELOPPEUR ANDROID

Cela va vous paraître un peu cliché mais je vais quand même vous le dire et vous allez comprendre pourquoi. Vous ne serez jamais un développeur Android digne de ce nom si vous n'êtes pas un passionné. Attention ici je ne vous parle pas d'être un passionné de technologie mais plutot d'être passionné par Android. Je vais déjà commencer par dire que si vous avez le choix et que vous préférez de loin achetez   l'iPhone 6 plutôt que le Nexus 6 alors il serait peut être mieux pour vous de faire du développement iOs au lieu de faire du développement Android. Vous comprenez? Non? Ce que je veux dire c'est qu'un développeur Android est avant tout un irréversible amoureux de la plateforme Android et de tout ce qui va avec. Il connait l'histoire d'Android, il est capable de citer toutes les versions d'Android de Cupkake ( version 1.5) à Lollipop (version 5.0) en passant par Froyo (version 2.2) et les autres. Il est informé des dernières nouveautés dans le monde Android  et c'est  comme ça qu'il sait par exemple qu’à partir de la version 4.4 la nouvelle machine virtuelle d'Android nommée ART a été proposé en remplacement de l'ancienne nommée Dalvik. Bon ok je m'égare un peu mais vous avez saisi l'idée.




Il ne suffit pas de pas de savoir écrire du code ça tout le monde peut le faire, mais connaitre la plateforme comme si elle était faite pour vous, en parler avec une lueur dans les yeux, la défendre de toutes vos forces au point d'égorger le premier qui osera la profaner ça ce n'est pas tout le monde qui peut le faire (Bon OK vous pouvez oublier la partie égorgement 3:) ).

Mon conseil le plus capital pour ceux qui débutent c'est de s'informer. Consulter les sites dédiés à Android comme phonadroid.comfrandroid.com, ou androidcentral.com (en Anglais). Likez leur pages sur Facebook, suivez les sur Google+ et Twitter. En plus suivez les bonnes personnes, si vous faites une bonne petite recherche sur Android dans le milieu francophone, vous tomberez à coup sûr sur certains noms célèbres comme Cyril Mottier et beh suivez le sur Google Plus ou sur Twitter et faites en de même avec les autres. Abonnez vous à des chaînes Youtube qui parlent d'Android du genre Android Central (In English of corse) etc.

Euh... et au Sénégal?
Croyez moi au pays de la Téranga aussi on trouve d'excellents développeurs Android. Ils ne sont peut être pas très nombreux mais ils sont excellents. Je ne vais pas les citer dans cet article mais je vais vous demander de vous abonner au Google Developer Group de Dakar sur Google plus et de garder un oeil sur son blog. Ah oui j'allais oublier la page meetup de Mobile Innovation Dakar. De cette manière, vous saurez quels sont les personnes les plus actives dans le domaine Android à Dakar et de la même manière vous restez informé de tous les événements, événements aux quels je vous conseille vivement de participer.

Voilà! ce fut long mais ainsi se termine cette première partie des choses à savoir avant de se lancer. Dans la partie 2 nous parlerons code ;) , des concepts qui peuvent déranger. Je vous parlerais de quelques outils cool et je vous fournirais un nombre (in)calculables de liens qui vous sauveront la vie dans votre quotidien de développeur Android. Stay tuned guys!

mardi 21 octobre 2014

#Android: Le cauchemar de la page blanche avec Google Maps V2

Google Maps V2 sur Android est un sérieux casse tête pour plus d'un en tout cas pour moi ça l'a été plus d'une fois avec cette fameuse page blanche qui s'affiche sans carte alors que vous êtes sûr d'avoir suivi toutes les étapes pour la création de votre MapsActivity mais rien est fait vous avez toujours cette maudite page blanche qui s'affiche et pas une jolie carte à la Google Maps.
Je vais vous dire pour moi ce qui a toujours été mon erreur et qui peut être bien aussi la votre.

Quelques conseils fisrt:

De préference utilisez Android Studio. Créer une Maps Acitvity n'a jamais été plus simple. Il vous suffit de créer une nouvelle activité ensuite vous sélectionner MapsActivity et Android Studio va se charger de tout générer pour vous.
Bon je vais vous demander de suivre ce lien (in English) il vous explique comment créer une activité GMpas V2 sous Android Studio.

En résumé pour créer une Activité avec GMaps vous avez besoin de renseigner une clé qu'on appelle souvent la API_KEY de GMaps sans cette clé votre activité ne fonctionnera pas. Vous devez renseigner cette clé dans les deux dossiers debug et release qui ont été générés par Android Studio sous le répertoire src. Vous devez aussi renseigner cette clé dans le manifest comme suit



Ce qui est hachuré en rouge c'est ma API_KEY pour utiliser GMaps. Comme vous le voyez elle commence toujours par AIza..... TOUJOURS!!! 

Ok si vous êtes toujours là c'est que vous voulez toujours savoir comment régler le problème de la page blanche. Alors je vais vous le dire. Si vous avez suivis toute la procédure correctement tout devrais fonctionner à merveille mais l'erreur que moi j'ai souvent commise est au niveau du nom de package.
En effet lors de la génération de la API_KEY on vous demande de renseigner le nom du package mais ne vous trompez pas il ne s'agit pas du package ou sous-package dans le quel se trouve votre MapsActivity mais plutôt de votre package de base celui de votre projet, celui là même qui vous servira pour Google Play Store.

Ainsi si vous ne vous trompez pas avec ce fameux package name et que vous faites tout dans les règles comme dans les tutos, vous devriez avoir une magnifique GMaps dans votre activité du style:


Bonus: Explication d'un ami à moi, Souleymane Sidibé (développeur Android)

Chaque app est identifié par son packagaName et quelques autres infos et Google Maps fait un binding entre ce packageName et la API_KEY que vous générez. S'il n'y a pas correspondance ça ne marchera pas.
En général le package name de l'app est identique au package de base de votre application mais ce n'est pas toujours le cas.
Avec gradle vous pouvez avoir un package name différent en fonction que vous soyez en mode de debug ou en mode release c'est d'ailleurs ce qui est conseillé.


lundi 7 juillet 2014

Quelques bugs rencontrés avec symfony2



Hello world!! Je vous présente dans cet article une liste de bugs que j'ai rencontré en travaillant sur symfony2. Bien sûr c'est une liste de bugs avec leur corrections sinon à quoi ça sert? :P

Attention!

Je Tiens à préciser que je travaille sur une machine linux Ubuntu 14.04LTS, j'utilise symfony 2.4.5,  PHP 5.5.9 et j'utilise Lamp au lieu de Xampp. En fonction donc de votre configuration vous pouvez ne pas avoir les mêmes bugs ou la même manière de les corriger.

Let's go

  • Edit the composer.json file and register the bundle namespace in the "autoload" section
Correction: il s'agit d'un problème dans la destination de votre bundle. Par defaut le terminal vous propose certainement quelque chose comme ceci: Target directory [/var/www/Symfony/app/cache/dev/../src]. Vous devez donc le modifier en mettant:  /var/www/Symfony/src

  • Il possible d'avoir une erreur du style: "page non trouvée" lorsque vous essayer d'accerder à localhost:8000/ ou localhost/Symfony/app_dev/, etc..
Correction: pour regler ce problème et obtenir la page d'accueil de symfony2 vous devez taper la commande: php app/console server:run.
En considérant évidement que vous vous êtes au préalable déplacé dans le dossier /var/www/Symfony/
En fait cette commande permet de lancer le demon (service) symfony2.

  • The target-entity Apps\RctBundle\Entity\Rct_ingr cannot be found in 'Apps\RctBundle\Entity\Recette#rctingrs
Correction:  Si vous remaquer bien le nom de mon entité, vous vous rendrez vite compte que celle ci est du style ...\Rct_ingr . C'est donc là le problème car les underscores (_) dans le nom d'une entité sont interprétée comme des répertoires par le Class loader de Symfon2. La solution est donc de renommer l'entité Rct_ingr en Rctingr. Et le tour est joué :)



Au cas où vous aurez quelques petits problèmes, vous pouvez toujours laisser un petit commentaire.


lundi 28 avril 2014

L'internet des objets: l'internet de demain


Internet des objets kezako?

L'internet des objets ou internet of things (IoT) dans la langue de Shakespeare est de plus en plus décrit comme une évolution d'internet. En effet, de nombreux experts la considèrent comme une innovation très prometteuse au même titre qu'internet.

C'est quoi un objet?

Avant de définir l'internet des objets, il est primordial de savoir ce qu'est un objet. Les objets sont tout simplement tous les objets du quotidien (lunettes, montres, vêtements, chaussure, etc) avec lesquels nous sommes en contact. Ces objets sont généralement des appareils électroniques (le cas des montres), des appareils électriques (comme les appareils électroménagers), des capteurs (détecteurs d'incendies etc).

Tu va nous le dire à la fin?

L'internet des objet est encore une notion complexe à définir, il n'existe pas une définition standard à proprement dite car certains la définissent en se basant sur ses fonctionnalités et son usage dans le quotidien tant dis que d'autres se concentrent sur ses aspect techniques. Selon Wikipedia, "L'Internet des objets représente l'extension d'Internet à des choses et à des lieux du monde physique".
Néanmoins  ce que l'on peut retenir de ce terme barbare c'est que l'internet des objets représente l'ensemble des dispositifs (objets) du monde réels connectés aux réseaux internet.

Les enjeux et domaines concernés

L'internet des objets pourra révolutionner considérablement internet selon certains experts qui pensent que cela changera radicalement notre mode de vie car ces derniers lui associent des enjeux sociaux, économiques, et même politiques. Cependant d'autres préfèrent y émettre des incertitudes.

L'internet des objets va jouer un rôle important dans différents secteurs de notre environnement:
  • Dans les entreprises: logistique cycle de vie des objets;
  • Dans les transports: suivi des acheminements;
  • Dans les espaces urbains: surveillance, circulation;
  • Dans services publics: communications, énergie, santé;
  • Dans les domiciles: confort, économies d’Énergie, domotique.

Application actuelles de l'internet des objets

Voici quelques applications que l'on peut associer à l'IoT:
  • suivi de l'acheminement des objets (courriers postaux, transport routiers, maritimes et aériens)
  • connaissance de la composition des produits, en particulier des produits sensibles (pharmaceutiques);
  • suivi de l'utilisation et de l'état des objets après leur acquisition par le client;
  • sécurité des transfusions sanguines (contrôle de compatibilité).

En Conclusion

L'internet des objets représente un potentiel énorme qui est encore à ce jour à peine exploité sans doute parce que cette technologie n'en ai encore qu'à ses balbutiements. Mais compte tenu de la vitesse à laquelle évoluent les nouvelles technologies, on peut donc se poser la question si ce "changement radical de notre mode de vie" n'est pas pour bientôt voir même pour très bientôt.