Swift Map Filter Reduce mémo

Lorsque l’on pense opérations sur des types Array ou Dictionary en Swift, on a souvent le réflexe for-in loop… Mais Swift propose d’autres méthodes comme map, filter, reduce… potentiellement plus efficaces. Voici donc un petit mémo à ce sujet 🙂

Map

Map sert à parcourir une collection er à appliquer la même opération à chaque élément de cette collection. La fonction map retourne un array contenant le résultat. Dans l’exemple suivant, la fonction map est utilisée pour retourner le carré de chaque item d’un tableau :

Le type de retour de la fonction map n’est pas limité au type des éléments d’origine :

Et enfin, la fonction map peut être utilisée sur tout type de collection :

Filter

La fonction filter parcourt un array ou une collection et retourne un array contenant les éléments correspondant à la condition demandée. Ex: recherche des entiers divisibles par 2:

Reduce

Reduce sert à combiner tous les éléments d’une collection pour créer une nouvelle valeur. Dis comme cela, ce n’est pas très parlant, mais voici quelques exemples :

  • Ajouter toutes les valeurs d’un array à une valeur initiale de 15 :
  • Fusionner des chaînes :

flatMap et compactMap

  • flatMap :
  • compactMap :

En résumé :

  • map permet de retourner un array contenant le résultat d’une transformation appliquée à chaque item.
  • filter retourne un array contenant seulement les éléments correspondant à une condition donnée.
  • reduce retourne une seule valeur calculée en combinant chaque item avec une valeur initiale.

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

L’application mobile iOS « Kayak Tracker »

Un carnet de bord pour toutes vos activités nautiques : kayak, canoë, rafting, sup… Grâce à l’application Kayak Tracker, vous pouvez suivre votre sortie en temps réel, l’enregistrer et la commenter, et même suivre vos données cardiologiques (grâce à l’Apple Watch) !


Kayak Tracker est une application destinée à tous les fans de kayak, canoë, rafting, windsurf, kitesurf, stanup padle voile, yatchning… Bref, tous les accros aux sports d’eau.

Transformez votre iPhone en véritable carnet de bord pour vos sorties en kayak, canoe, rafting…

Avec cette application jolie et simple d’usage, vous pouvez :

  • Savoir à tous moment où vous vous trouvez, la distance que vous avez parcourue et le temps écoulé.
  • Pour chaque parcours, vous retrouvez la distance parcourue, la durée totale de trajet, la vitesse maximale et la vitesse moyenne ainsi que le dénivelé.
  • Vous pouvez personnaliser vos sorties ne ajoutant des photos (jusqu’à 3) et des commentaires.
  • L’application vous communique également les conditions météo du lieu où vous vous trouvez, et celle de l’endroit où vous comptez aller.
  • Grâce à votre Apple Watch, vous retrouverez également vos données cardiologiques dans vos parcours (courbe cardio, bpm max, min et moy).
  • Toujours grâce à votre Apple Watch, vous commandez toutes les fonctions utiles de l’ampli (start, stop sauvegarde, position…) sans sortir votre iPhone ! Plutôt pratique pour éviter de lui faire prendre un bain 🙂

Cerise sur le gâteau, pas besoin de compte, toutes vos données sont stockées dans votre téléphone, pour le plus grand respect de votre vie privée !

Kayak tracker est conçue pour fonctionner en arrière plan sur votre téléphone lorsque vous enregistrez un parcours, et est optimisée pour une gestion de l’énergie optimale (testée sur des randonnées de 6 heures sans problème). Vous la lancez au début de votre randonnée, et vous l’oubliez jusqu’à la fin de la promenade !

Attention, les sports d’eau sont potentiellement dangereux pour votre matériel, et rappelez-vous que vous les faites pour votre entière responsabilité. Soyez prudent.es ! Le développeur de cette application ne saurait être tenu pour responsable d’aucun dommage pouvant arriver à votre Apple Watch ou votre iPhone. Utilisez une Apple Watch série 2 au minimum (modèles étanches) et mettez toujours votre téléphone dans un sac étanche !

Application à télécharger sur l’App Store :

Bonnes navigations !


Initier enfants et ados à la programmation informatique…

learn-2706897_1920

Alors noël et le nouvel an sont passés, les cadeaux sont oubliés (cassés – rangés – revendus… rayer la mention inutile 🙂 ), mais les vacances ne sont pas terminées… En clair, ça commence un peu à tourner en rond à la maison…

 

Alors pourquoi ne pas profiter de ce moment privilégié pour se challenger un peu et essayer d’apprendre des rudiments (ou plus) de programmation informatique à sa progéniture ?

Toujours serviable 🙂 je vous ai trouvé quelques ressources en ligne intéressantes…

Lire la suite

Tutoriel Swift : Initiation aux tests unitaires

skills-3371153_1920

« Tester, c’est douter ! », oui mais souvent, douter évite de grosses boulettes !!

C’est pour cela que j’ai décidé de publier une série de tutoriels sur les tests unitaires en programmation Swift.

Mais voyons en premier ce qu’est un test unitaire et quel est son but !

Lire la suite

Tutoriel Swift : Geocoding et Reverse Geocoding en Swift

Geocoding

Comment obtenir une adresse à partir de coordonnées géographiques ? Et comment obtenir les coordonnées géographiques à partir d’une adresse ?

Voici (un des) problèmes auxquels je me suis frotté pour la réalisation de l’application KayakTracker…

Et cela se nomme le géocodage et le géodécodage (geocoding et reverse geocoding). Une recherche Google montre que cela est réalisable entre autres grâce à leur API Maps…

Mais Apple à également pensé à nous, et c’est cette méthode que je vais vous présenter.

Comme d’habitude, je m’appuie sur une petite application « POC » qui, une fois terminée, donnera cela :

Motivés ? C’est parti !

Lire la suite

Développement mobile : Soulageons la planète, programmons mieux !

Plaidoyer pour de meilleurs logiciels

Cette semaine, pas d’article technique (quoi que…), mais plutôt un partage : l’excellent article de Nikita trouvé sur son blog tonsky.me à propos de l’obésité informatique : http://tonsky.me/blog/disenchantment/

Ne vous êtes jamais demandé pourquoi il fallait toujours plus de puissance à nos ordinateurs pour effectuer grosso-modo les mêmes tâches?

Windows 95 était à l’aise avec 30 Mo de Ram, Windows 10 veut 4 GO… quasiment 133 fois plus… Est-il pour autant 133 fois meilleur ?

Comment se fait-il qu’il faille 15 mn pour l’installer sur une machine, et 30 mn pour qu’il se mette à jour sur la même machine ?

L’affichage d’une page web nécessite de plus en plus de puissance… mais avons nous vraiment gagné en ergonomie et en confort pour autant ? Quand on voit ce qu’est devenu Facebook, on peut légitimement se poser la question.

La moindre application iOS ou Android crée des centaines de fichiers avant même que nous ayons écrits la première ligne de code !

Peut être que le temps du programmeur coûte plus cher que le temps machine… en Euros ou en Dollars. Mais a-t-on pensé au coût écologique de milliards de machines gaspillant des ressources ?

Je pense qu’il est de notre devoir en tant que développeur de créer du code non seulement ré-utilisable et facilement débogable, mais aussi et surtout efficace et optimisé !

Bref, du code écologiquement responsable !

Tutoriel Swift : l’API Charts

Swift Charts Tutoriel

Je reprend la petite application utilisée pour le tutoriel sur HealhtKit afin de vous donner un aperçu des innombrables possibilités de l’API Charts.

L’API Charts à été développée par Daniel Gindi et peut être téléchargée sur Github. L’idée est de faciliter la vie des développeurs iOS / Swift pour la création de graphiques. Grâce à Charts, vous pouvez facilement créer des diagrammes, des courbes, des graphiques en barres, et plein d’autres types de graphiques pour représenter de manière visuelle des données.

C’est un peu un Excel pour développeurs. Par contre, tout comme celui-ci, l’utilisation nécessite un certain apprentissage, mais vous verrez, cela en vaut la peine !

Voici à quoi nous allons arriver :

HeartStatisticsWithChars.jpeg

Prêts ? C’est parti…

Lire la suite

Tutoriel Swift : HealthKit ou comment récupérer des données cardiologiques en Swift grâce à l’iPhone

Düsseldorf graphic Design Institute(1)

Cela faisait un petit moment que je n’avais pas publié de nouveaux tutoriel. Celui que je vous propose aujourd’hui est à la fois un tuto et une POC, qui va nous permettre d’aborder un gros morceau : HealthKit

Voici à quoi ressemblera notre appli terminée :

heartStatisitcs

HealthKit : Késako ?

Lire la suite

Programmation: La Cathédrale et le Bazar

cathedral_bazaar

Je profite du relâchement (relatif) du mois d’août pour me remettre un peu à la lecture… de livres ayant trait à l’informatique vous vous doutez bien 😉

Premier de la liste : La Cathédrale et le Bazar, d’E.Raymond.

C’est impressionnant comme un essai paru en 1999 peut être par beaucoup de cotés à la fois précurseur et d’actualité !

Voici le résumé tiré du site verbiage.fr :

 »

Eric Steven Raymond est un informaticien américain oeuvrant dans le monde du logiciel libre à qui l’on attribue la création du terme « open source ». En 1999, il diffuse un essai devenu depuis une référence dans le monde du logiciel libre « The Cathedral and the Bazaar » (La cathédrale et le bazar).

Eric Raymond y oppose les modèles de développement des logiciels libres à ceux appliqués aux logiciels propriétaires.

Rédigé par un informaticien, évoquant le développement d’outils informatique, il n’est que peu souvent cité comme ouvrage de référence de Management. Pourtant, Eric Raymond développe sans prétention une analyse mettant en évidence la supériorité d’un modèle d’organisation basé sur la transparence et la collaboration.

C’est ici qu’apparaît, à mon sens, le principal point commun avec l’ouvrage de Vineet Nayar. Ils posent tous les deux les principes d’une organisation déstructurée favorisant l’initiative, l’efficacité et la créativité.

Par opposition aux organisations managériales traditionnelles dits de « type cathédrale » marquées par une hiérarchie, une structure forte, Eric Raymond présente le modèle du logiciel libre basé sur le collaboratif, le volontariat, la transparence. Tout est ouvert, tout est accessible, tout est transparent, une organisation à la fois horizontale et verticale : un bazar. Ici le responsable se fait davantage coordonnateur.

Contrairement aux apparences le modèle bazar n’est pas l’anarchie. Il est au contraire structuré par ses propres règles de fonctionnement, basées sur la souplesse, la rapidité et les échanges permanents entre contributeurs.

Au delà de l’éloge d’un type de management différent, que l’on pourrait juger plus où moins adapté à tel ou tel type d’entreprise, sont évoqués ici les thèmes essentiels dans la gestion de projet et dans la gestion des hommes que sont la motivation et la créativité.

L’organisation doit permettre de ne pas perdre de vue l’objectif visé, de mettre en cohérence les travaux de chacun, sans être un carcan limitant l’initiative et la créativité.

Les axe essentiels sont la motivation « tout bon logiciel commence par gratter un développeur là où ça le démange », la compétence (ici des développeurs), la transparence, mais aussi enfin et surtout une relation permanente avec les utilisateurs « traiter vos utilisateurs en tant que co-développeurs est le chemin le moins semé d’embûches vers une amélioration rapide … ».

Une démarche itérative de correction des bugs orientée client qui, en définitive, donne au bazar la charpente nécessaire à sa réussite, son but ultime : satisfaire l’utilisateur final.

Les succès de Linux, Wikipedia, la fondation Mozilla et son célèbre navigateur Firefox, l’émergence de start up devenues depuis des multinationales (Google…), sont les signes qu’un management différent est en train de s’imposer. De plus en plus d’entreprises « cathédrales » se laissent en effet peu à peu tenter par l’esprit « bazar ».

 »

A lire ou à relire, sur la plage ou ailleurs…

Ayant eu quelques difficultés à trouver la version epub pour ma liseuse, je vous mets en téléchargement les fichiers pdf et epub :

cathedrale-bazar.pdf

cathedrale-bazar.epub

Bonne lecture à tous, et si vous avez des suggestions pour le blog, n’hésitez pas à les mettre en commentaires !