jeudi 18 décembre 2014

5 raisons pour lesquelles vous ne devez JAMAIS faire du développement mobile (Android en particulier)





Bienvenu cher amis anti-mobile ici on déteste le mobile. Allez y prenez place car aujourd'hui nous allons vous dire pourquoi vous ne devez JAMAIS je dis bien JAMAIS apprendre le développement mobile surtout ce satané Android.
Vous êtes développeur? Web? Desktop (logiciels, jeux PC etc) ? Système (OS, pilotes etc...) ? Et vous vous dites je fais déjà du développement web pourquoi encore perdre mon temps avec le mobile? Et bien oui vous avez raison en effet vous savez pourquoi?
    1. Parce que vous êtes contre l'évolution et le développement: De nombreux experts disent que le futur c'est le mobile et que le développement technologique de l'Afrique et des autres pays émergents passera par le mobile. Mais vous non, le progrès et le développement tout ça vous dégoutte. Franchement, les sociétés Africaines ont déjà pas mal de problèmes et de besoins comme ça pourquoi encore leur créer des applications mobiles accessibles à tous qui vont répondre à leurs besoins? Non ça n'a pas de sens.
    2. Parce que vous êtes aigri vis a vis d'Android: Aujourd'hui Android domine le marché du smartphone surtout en Afrique. Et vous, ça vous met en rogne. Et si par malheur il vous arrivait (le bon Dieu vous en préserve Ah safroulaye!) de faire du développement mobile, vous préférez de loin faire du Windows Phone qui a très peu d'utilisateurs en Afrique et qui n'a environ que 4% du marché mondial alors que Android en a environ 80% selon ce rapport.
    3. Parce que vous êtes borné et vous adorez la préhistoire: Non seulement la dominance actuelle d'Android vous énerve, mais vous semblez aussi avoir un gros problème avec les smartphones actuels et leurs systèmes d'exploitation débiles. Vous, vous préférez développer sur Symbian OS parce que vous aimez vivre dans le passé ou encore mieux vous vous obstiner à faire encore et encore du JME (Java mobile edition pour les feature phones) et hors de question de changer ça. Vous êtes un genre d'archéologue du numérique et vous êtes bien avec vos fossiles.
    4. Parce que vous détestez l'idée de vous faire plus d'argent: L'industrie des applications mobiles génère aujourd'hui des milliards de dollars. Des applis jeux stupides comme Angry Birds, par exemple, rapportent environ 200 million de dollars de revenus annuels. Mais vous, vous êtes coriace vous ne trembler pas devant des sommes pareils, cela vous laisse totalement indifférent. Vous avez un site web et vous préférez ne pas accroître sa visibilité en créant  une app mobile et par la même occasion augmenter vos revenus. Non Monsieur, qu'ils gardent leur argent vous n'en voulez pas.
    5. Parce que vous êtes convaincu qu'il n'y a aucune innovation dans le mobile: Ils parlent de mobile payment (permettre à des gens de payer à partir de leur téléphone), certains sont aujourd'hui capables de gérer l'électronique de leur maison via leur téléphone etc. Non mais quelle arnaque? Un bon vieux site web tout banal fait avec Wordpress ou Prestashop qui donne la possibilité de payer via Paypal (tant pis pour ceux qui n'ont pas de compte en banque) ça c'est innovant! (Applaudissements).
Mes chers amis la liste est longue mais nous nous arrêterons là pour ne pas frustrer tous ces abrutis qui aiment le mobile.

Vous l'aurez compris, derrière ces "conseils" et ces propos ironiques et surtout sarcastiques se cache l'idée que le mobile n'est plus vraiment une question de choix pour les développeurs et les entreprises mais presque une obligation. Le mobile est innovant, prometteur et abominablement rentable. L'idéal serait que l'on ait autant de développeur mobile que de développeurs web. Et oui bien sûre il nous faut des dev mobile pour toute les plateformes. Des développeurs iOs et windows phone nous en avons besoin ça c'est sûre et certain. Mais avant de vous lancer sur un projet, il serait peut être mieux de faire une bonne étude de marché et voir quel plateforme convient le mieux à votre contexte. Si vous avez une appli locale iOs ou Windows phone cool et que vous êtes en Afrique, alors vous devriez peut être penser a faire une version Android. Si vous ne pouvez pas le faire vous même trouvez un développeur Android pour vous aider histoire de gagner plus d'utilisateurs et faire profiter votre innovation à plus de monde. Aujourd'hui un bon site web va de paire avec une belle petite appli mobile. Bien sûre tous les sites web n'ont pas forcément besoin d'être accompagné d'une app mais ne restez tout de même pas borné.

Voila les amis si vous n'êtes toujours pas convaincu de la nécessité de faire du mobile, alors c'est une bonne chose faites donc de ces 5 points vos règles d'or et tous ceux qui parlent de mobile peuvent aller se le m******* non!?

jeudi 11 décembre 2014

Android Studio 1.0 first issue: Gradle DSL method not found: 'runProguard()'

Hello friends! Alors vous avez migré vers Android Studio 1.0? J'espère bien que oui sinon s'il vous plait allez vite le télécharger ici ou alors dégagez de mon blog... no i'm just kidding vous pouvez rester :)
Moi j'ai déjà commencé à l'utiliser et je suis entrain de migrer tous mes projets. Cependant dès que vous migrez systématiquement d'une version antérieur vers la 1.0, d'après ce que j'ai pu comprendre, il est presque impossible que vous n'ayez pas cette erreur: Gradle DSL method not found: 'runProguard()' 


Message d'erreur détaillé dû au runProguard().


Donc si vous avez cette erreur les amis please ne perdez pas votre temps à cliquer sur "Gradle settings" ou "Apply Gradle plugin". Le premier ne vous aidera pas vraiment et le second risque d’entraîner un autre problème si vous vous y prenez mal.
Bref oubliez ces options. Le problème c'est runProguard comme vous pouvez le constater. En fait runProguard a été remplacé par minifyEnabled dans la version 1.0. Donc  il vous suffit de le remplacer dans votre build.gradle et le tour est joué! 


Si vous voulez en savoir plus sur les problèmes de migration vers la 1.0, une page entière y est consacrée ici . Et si par hasard vous me lisez avec un regard idiot  bizarre parce que vous n'avez 
aucune idée de ce que c'est que ce proguard alors please relax posez le couteau avec le quel vous avez l'intention de m'égorger et suivez ce lien  vous en saurez plus.

OK! Je continu à explorer cette version 1.0 même si à première vue il n'y a pas vraiment grand chose de changé à part le nouveau logo dont je ne comprend toujours pas le sens malgré tous mes efforts pour le décrypter déchiffrer (le mot crypter n'existe pas réellement on dit chiffrer et non crypter par contre la cryptographie et la cryptologie existent bel et bien. Ceux qui font sécurité informatique vous en dirons plus... ok je suis hors sujet là :D). 

Alors voila! That's all folks! 

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.