Une application mobile Android / iOS en 1 journée ?

Application mobile Siberian

Depuis quelques années, on voit apparaitre sur le web des générateurs d’applications mobiles. La promesse est la même que pour les cms et les générateurs de sites web : pouvoir bénéficier d’un travail professionnel sans aligner une seule ligne de code…

Et comme pour les cms et autre générateurs de sites web, la réalité est quelque peu nuancée…

Suite à la demande d’un client, je me suis re-penchée sur SiberianCMS, que j’avais déjà testé il y a quelques années sans être convaincue plus que ça.

Le mois de juillet et ses chaleurs aidant, je me suis lancée comme défit de créer une application multiplateforme, avec SiberianCMS, en 1 journée… Voici donc un compte rendu de mes aventures 🙂

Lire la suite

L’application mobile Bring Me Back

Ça ne vous est jamais arrivé de garer votre voiture sur un parking de supermarché ou dans une rue d’une ville inconnue et au moment de repartir, horreur, impossible de la retrouver ?

Et bien moi, cela m’arrive tout le temps :(, et je ne vous parle même pas de la galère quand en plus c’est dans un pays étranger…

Alors je sais, il y a Google Maps… Sauf que voilà, je trouve que rajouter un point de repère nécessite trop de manipulations… et surtout j’avais envie de faire un peu de Flutter 🙂

Donc Bring me Back ne sait faire qu’une chose, mais elle fait simplement : vous ramener à votre point de départ.

En pratique, vous avez juste à mémoriser votre point de départ, et a demander à l’application de vous y ramener quand vous le désirez !

L’intérêt de Flutter, c’est bien sûr le multiplateforme, et la rapidité de développement. Et je n’ai pas été déçue ! Grâce à l’utilisation du package « Flutter_mapbox_navigation« , la partie la plus compliquée se fait très simplement. Un grand merci à l’auteur ! Je pense d’ailleurs que l’usage de ce package fera l’objet tôt ou tard d’un tutoriel !

En attendant que je me décide à mettre l’application sur le Play Store et peut-être l’App Store, vous pouvez déjà télécharger le fichier .apk ici : https://www.dropbox.com/

N’hésitez pas à me faire des retours de bugs, suggestions… !

Deep Learning avec TensorFlow

Ce qu’il y a de bien avec le confinement, c’est que les week-ends semblent durer plus longtemps ! Du coup, cela me laisse le temps de me cultiver !

Le dernier livre en date, « Deep Learning avec TensorFlow », est en fait la suite du livre « Le Machine Learning avec Python », dont je parle ici.

Pour celleux qui ne seraient pas encore trop au clair avec les notions de Machine Learning (ML), Deep Learning, Intelligence Artificielle (AI), voici un petit résumé des épisodes précédents 🙂

Les débuts de l’Intelligence Artificielle remontent assez loin, on cite souvent Alan Turing dans les années 1950. Elle désigne tous les traitements automatisés que l’on retrouve en Industrie (automates) et en informatique (logiciels). Là, je sens que j’ai cassé un mythe…

En fait, dans l’imaginaire collectif, AI désigne surtout une Intelligence Artificielle Forte (AGI), qui serait totalement autonome et auto-apprenante. Hélas (?), cela n’existe pas encore à l’heure où j’écris ces lignes – a priori – 😉

Le Machine Learning, c’est déjà plus glamour, car là, ce sont les machines qui « apprennent par elles-mêmes ». Attention cependant, tout cela est basé sur des mathématiques, des statistiques, il n’y a donc pas d’AGI ni de miracle derrière tout cela, seulement beaucoup d’intelligence humaine. On utilise des modèles de type régression, Naïve Bayes, clustering, arbres de décision, random Forest…

Le deep learning enfin fait partie du ML, mais fait appel à des réseaux de neurones. Elle fonctionne par bio-mimétisme : la machine essaye de reproduire le mécanisme de notre cerveau ! Il est apparu il y a 10 ans environ, notamment dans la reconnaissance d’images ou de langage naturel.

On en vient alors à TensorFlow !

TensorFlow est un outil d’apprentissage automatique développé par Google, il est open source et basé sur Google Brain.

Du coup, on parle de Deep Learning, donc de réseaux de neurones.

Après une courte (ré)-introduction aux concepts de base du ML, ce livre fait donc une introduction aux réseau de neurones artificiels et à leur entrainement.

Il aborde successivement les réseaux de neurones convolutifs, les réseaux de neurones récurrents, les autoencodeurs et enfin l’apprentissage par renforcement.

Perso, plus j’avance dans mon apprentissage du ML, plus j’ai l’impression que l’on se rapproche des méthodes d’apprentissages que l’on utilise avec nos animaux domestiques. L’apprentissage par renforcement, qui utilise les récompenses, en est un exemple. Même si bien sûr nous sommes encore loin, pour le moment, de la complexité d’un cerveau animal. Mais cela à toujours un coté « magique » 🙂 !

En tous cas, je suis de plus en plus captivée par le ML, et si vous aussi vous avez envie d’approfondir le sujet, ce livre est fait pour vous !

En attendant, n’hésitez pas à laisser des remarques / commentaires si vous en avez !

Créer facilement ses classes modèles en Dart à partir d'un JSON

Convertir du json en modele dart facilement

Travaillant actuellement sur un projet en Dart / Flutter, j’ai fait la connaissance du super travail de Javier Lecuona, qu’il trouve ici mon éternelle gratitude 🙂 .

En effet, créer un modèle à partir de fichier JSON est potentiellement source de bugs, surtout lorsque le JSON est un peu complexe. C’est ici qu’intervient l’outil « JSON to Dart » : https://javiercbk.github.io/json_to_dart/

L’usage est simplisme ! Vous récupérez l’intégralité de votre JSON (ici un exemple issu de jsonplaceholder.com) :

Vous le collez dans l’interface de JSON to Dart :

Vous ajoutez le nom que vous désirez donner à votre classe, et il ne reste plus qu’à appuyer sur le bouton « Generate Dart » et à copier / coller le code généré !

Génial je vous dit !

Si vous connaissez la même chose pour Swift, n’hésitez pas à me le faire savoir ! 😉

Flutter development : les ressources utiles

Grâce à une super présentation d’Edouard Marquez lors d’un Meetup organisé par le CDG de Tours, j’ai le plaisir d’être en pleine découverte de Flutter.

Donc, Flutter est un projet Open Source porté par Google, et basé sur le langage Dart. C’est (entre autres…) LE nouveau framework de Google pour la création d’applications mobiles multiplateformes.

Encore un me direz vous… oui mais celui-là est différent (je sais, on nous l’a déjà faite celle-là 🙂 ). Plus sérieusement, le fait qu’il soit porté par Google, avec une communauté de développeur.ses en constante augmentation, donne de très bons augures pour l’avenir de ce framework.

Je ne rentrerai pas ici dans la discussion Flutter vs React Native vs Cordova vs Xamarin… cela n’est pas le propos. Par contre, à titre perso, je peux dire que le langage Dart me plaît bien, et venant de Swift (avec aussi un passé en Java et en C), la courbe d’apprentissage n’est pas trop ardue.

Bref, vous l’aurez compris, je kiffe Flutter 🙂

Et comme je sais à que point c’est parfois compliqué de débuter avec un nouveau framework, j’ai décidé ici de vous partager mes ressources ! (bien entendu, je ferai évoluer cette liste au fur et à mesure de mes avancées dans le domaine…)

Les bases :

https://flutter.dev : le site de base. Plein de tutoriels, d’infos et surtout toujours à jour !

https://dart.dev : le site de référence pour le langage Dart

La communauté :

https://www.edouard-marquez.me/blog/ : plein de news sur l’évolution de Flutter et de sa communauté

Les tutoriels :

http://www.iflutter.in : le site de tutoriels le plus complet que j’ai pu trouver à ce jour

https://kodestat.gitbook.io/flutter/ : de nombreux tutos également

https://hackr.io/tutorials/learn-flutter

https://www.didierboelens.com

http://tphangout.com

https://flutterbyexample.com

Tutoriel Android : Changer la limite d’envoi de sms grâce à ADB

Par défaut, le système Android met une limite au nombre de sms que peut envoyer une application de manière automatique.

Et c’est plutôt normal, car cela évite que des applis se mettent à envoyer du spam sms à l’insu de l’utilisateur.

Cependant, il y a des situations où l’on aimerai bien pouvoir changer ce comportement, de préférence sans avoir à « rooter » le téléphone…

C’est là qu’intervient ADB : Android Debug Bridge.

ADB est un ensemble de commandes en mode texte qui permettent de communiquer avec un device Android. ADB est disponible pour MS Windows, Apple MacOS et GNU Linux.

Attention, cela nécessite que votre device Android soit directement branché à l’ordinateur qui exécute ADB.

Installation d’ADB

Là, je ne vais détailler que la procédure que Mac, car je n’ai pas testé sous Windows et Linux. Installation est d’ailleurs un bien grand mot, puisqu’il suffit de :

Lancer ADB

Branchez votre device (déverrouillé) à votre ordinateur, puis dans le dossier où se trouvent les outils ADB, lancez la commande : « adb device« .

Cette commande lance le daemon adb. Si votre device n’a jamais été utilisé pour faire du développement Android, une fenêtre demandant d’autoriser l’usb debuging va s’ouvrir. C’est normal, dites « ok ».

Si tout s’est bien passé, vous pouvez maintenant lancer un shell sur votre device avec la commande « adb shell » (vous remarquerez que le shell est lancé en root 🙂 ):

Et pour mes sms alors ?

Comme je l’ai dit, depuis sa versions 5 (Lollipop), Android limite le nombre de sms envoyé à des destinataires différents à 30 sms maximum en 30 minutes.

Au delà, une fenêtre de confirmation d’envoi s’ouvre pour chaque nouveau sms.

Mais cela se règle avec 2 lignes de commandes ADB. Par exemple, si mon application doit pouvoir envoyer 50 sms en 15 minutes, je vais changer les clés « sms_outgoing_check_max_count » et « sms_outgoing_check-interval_ms » :

Bon, dans ce cas là, j’aurai pu me passer de changer la limite de temps, mais c’était pour vous montrer comment faire. Attention, le temps est exprimé en millisecondes.

Il faut rebooter le device pour que les paramètres soient pris en compte.

Et pour connaitre les valeurs des clés sur le divise, c’est la commande « settings list global« .

C’est évident mais je précise, il faut taper « exit » pour sortir du shell…

Bien entendu, ce n’est pas la seule chose que l’on peut faire avec ADB ! Pour vous en rendre compte, jetez un oeil ici : https://adbinstaller.com/commands/

Voilà pour cette introduction à ADB, comme quoi il n’y pas que iOS dans la (ma) vie…

Si la mise en page de mes articles vous paraît changeante ces derniers temps, c’est parce qu’il faut que je m’habitue à Gutenberg 😦 …

Et pour toute question / suggestions, comme d’habitude, commentez !

Développement mobile : React Native, je continue mes essais !

Ma première application mobile React Native

Comme je l’avais évoqué ici, je m’intéresse au développement cross platform, et plus particulièrement à la prometteuse technologie React Native.

Et, grâce au super cours d’Open Classroms, (un giga merci à eux), j’ai pu, après beaucoup de transpiré du cerveau, avoir la joie de faire fonctionner ma première application React Native !

Bon, ce n’est pas grand chose, un petit pas dans Javascript, mais un grand pas pour moi !

Lorsque Microsoft à proposé gratuitement Visual Studio et Xamarin, j’avais déjà tenté la programmation cross platform… et n’avais pas été très enthousiasmé : courbe d’apprentissage rude à mon goût, passage en langage natif tôt ou tard incontournable, temps de compilation ++ …

Mais là, j’ai été bluffé ! J’ai eu un coup de foudre technologique 🙂

La technologie est encore jeune, c’est clair, et je ne suis pas prêt de l’utiliser de manière professionnelle, mais c’est vraiment prometteur !

Le plus bluffant est l’absence de la phase de compilation (merci Javascript) : le résultat d’un changement du code est visible immédiatement sur le device ou la MV (merci Expo). Impressionnant.

Pour le debug, pour le moment, je ne suis pas vraiment à l’aise… Comme « IDE », j’utilise « Atom« , et je n’en ai pas encore exploré toutes les possibilités.

Niveau apprentissage, c’est clair que j’ai du boulot ! Je suis pas près d’être aussi performant qu’en Swift ! Mais ce n’est pas le but pour le moment. De toutes façons, je n’ai pas trouvé comment faire d’appli pour l’Apple Watch alors…

Pour les curieux, voici le code source sur FramaGit (soyez tolérants, c’est mon premier programme en JS :

https://framagit.org/VinceBar/MoviesAndMe.git

Et comme d’habitude, si vous avez des questions, suggestions… commentez !

Quant à moi, je sens que je vais passer quelques we à faire du React Native !

Développement mobile : installer React Native sur Mac…

react-native

Pour changer un peu de la programmation iOS, j’ai décidé de jeter un oeil à React-Native

Pour ceux qui ont hiberné ces 2 dernières années, React-Native est un projet initié par Facebook qui est open source, et qui nous fait la promesse de pouvoir enfin développer des application cross-platform aussi efficaces que des applications natives. Dans la même optique, j’avais déjà essayé Xamarin, mais je n’avais pas vraiment été convaincu (à un moment ou un autre, il fallait toujours passé en langage natif).

Voici donc le premier d’une série d’articles concernant React-Native, et pour commencer, nous allons parler de l’installation, qui n’est pas forcément une mince affaire…

Lire la suite