Tuto : transformer un raspberry Pi en serveur web

En règle générale, lorsque j’ai besoin d’un serveur web pour faire du développement, j’utilise Mamp ou une machine virtuelle Linux avec Virtualbox.

Mais là, j’avais besoin de quelque chose de plus pérenne, destiné à fonctionner h24 pour un projet perso.

C’était donc l’occasion de ressortir le Raspberry Pi de son tiroir 🙂 .

Disclaimer : Attention, ce qui est détaillé ici est valable pour un serveur servant à faire du développement, non accessible depuis Internet et sur un réseau sécurisé. En gros, il ne contiendra pas de données importantes non sauvegardées et je suis sa seule utilisatrice. Il est évident que si vous compter y héberger des sites accessibles depuis le web, une grosse partie sécurisation d’Apache n’est pas abordée ici.

Voilà, maintenant on peut rentrer au coeur du sujet. En fait, cet article se veut plus un mémo / wiki qu’un tutoriel, et je serai sans doute la première à m’y référer lorsque j’aurai une autre installation à faire.

Lire la suite

Siberian CMS : place à la pratique !

Il y a quelques temps, je vous entretenais d’une autre façon de développer des applications mobiles : Siberian CMS.

Il s’agit d’une solution libre qui prend la forme d’un CMS, dans lequel il est possible de paramétrer son application mobile. Celle-ci est ensuite générée et il est alors possible de la distribuer sur les stores.

L’avantage de Siberian CMS, outre le fait que cela soit un logiciel libre, c’est qu’il est possible (et même conseillé) que le compte nécessaire à la distribution des apps soit au nom du client final. Cela change tout, notamment pour faciliter l’acceptation de ce type d’application sur l’App Store.

Du coup, j’ai récupéré en début d’année 2021 en gestion pour le compte d’un client 2 applications Siberian et franchement, ces apps sont plutôt sympas !

La première application est celle d’une cave à bières & growlers de Lyon. L’application permet entre autres de bénéficier de :

  • Un shop en ligne
  • Une carte de fidélité
  • Une carte cadeau
  • Des notifications
  • Une visite virtuelle

Elle est disponible pour Android sur le Play Store pour iOS sur l’App Store.

La seconde application à été développée pour une fromagerie, également située à Lyon : l’Art de Choix. Comme pour le Crafterie, l’application permet de :

  • Réaliser ses achats en ligne
  • Bénéficier d’une carte de fidélité
  • Profiter de promotions, de notifications…
  • Réaliser une visite 3D

Et vous pouvez également la retrouver sur le Play Store et sur l’App Store !

Bref vous l’aurez compris, Siberian CMS, ça marche et cela peut représenter une alternative crédible pour les projet d’applications « standards » et avec un budget relativement modeste !

Le guide de la transformation digitale

Couverture du livre de Vincent Ducrey et Emmanuel Vivier "le guide de la transformation digitale"

La crise actuelle aidant, il n’est pas un seul jour sans que nous entendions parler de « transformation digitale ». Mais derrière ce buzz word se cachent des enjeux et des défis colossaux pour les entreprises, et particulièrement les PME.

Selon cet article, 85% des dirigeants de TPE sondés ne seraient pas à l’aise avec le terme et deux tiers des TPE verraient la transformation numérique comme une contrainte.

Pourtant, entre l’accès Internet plus rapide et tout le temps (ATAWAD : Any time, Anywhere, Any Device), la généralisation des connexions via mobile, la collaboration et le social facilités, le machine learning et la fusion du réel et du virtuel (réalité augmentée…), la transformation digitale est une nécessité pour les entreprises.

La meilleure expérience client gagne quasiment toujours, et refuser l’innovation est un combat perdu d’avance.

Mais comment s’y prendre ?

Vous pouvez bien sûr faire appel à mes compétences pour vous aider dans cette période délicate 🙂 , mais aussi lire ce livre extrêmement intéressant, même si datant un peu (2019) et plutôt orienté grandes entreprises, qui est une mine de conseils et la recette d’une transformation digitale réussie !

En 6 grands chantiers :

  • travailler sur le Leadership
  • travailler sur la culture et l’organisation de l’entreprise
  • choisir ses technologies
  • gérer ses données
  • changer l’expérience client
  • mesurer

Vous saurez comment aborder votre transformation numérique, et serez guidé.e par de nombreux exemples et cas d’usages, pour transformer ce que vous pensez être une contrainte en une magnifique opportunité business.

Bref, un must pour qui veut aborder sereinement la digitalisation de son entreprise !

Et n’oubliez pas : « En période de mutation, curiosité et diversité sont des facteurs clé de succès. Le leader de demain doit savoir sortir de sa coquille, et comme à l’heure de la renaissance, s’intéresser à de multiples disciplines et sujets en échangeant qu delà de son cercle familier, sous peine de devenir isolé et aveugle dans une tour d’ivoire« .

Le gestionnaire de mots de passe ultime !

Je ne vous apprendrai rien en vous disant que la gestion des mots de passe liés aux différents comptes que nous créons en ligne peut rapidement devenir un enfer si vous êtes un tantinet désorganisé.e ! Sans parler de la gestion de la sécurité ! Qui n’a pas connu un.e client.e lui disant tranquillement : « j’utilise toujours le même mot de passe, c’est le prénom de … , comme ça je suis sûr.e de m’en souvenir 😦 « .

En ce qui me concerne, si au niveau pro la question ne se pose pas : Keepass obligatoire, mais niveau perso, j’étais encore à la recherche du gestionnaire de mots de passe adapté à mes besoins.

Les contraintes étaient : logiciel de préférence libre, multiplateformes, synchronisation entre mes different devices et installable sur mon propre serveur.

En effet, j’utilise depuis des années Enpass, en version portable. Mais pour moi qui utilise aussi un iPad comme machine pro, la gestion via une clé USB commençait à poser problème.

En fait, j’étais à la recherche d’une solution de type « Dashlane », mais qui serait libre et installable sur ma propre infrastructure.

Et j’ai fini par trouver BitWarden (merci LinuxFr…) !

Copyright @Bitwarden.com

Franchement, ce logiciel est top. Multiplateforme, vous pouvez l’installer sur votre serveur avec une image Docker et, si vous n’avez pas de serveur, BitWarden propose différentes solutions pour vous héberger, dont une gratuite. Il y a en plus des extensions pour les principaux navigateurs !

Avec ça, si vos mots de passe sont encore écrits sur des post-its, c’est désespéré !

Vous pouvez visiter le site et télécharger Bitwarden ici : bitwarden.com

Swift et l’accessibilité : introduction à VoiceOver

Photo by Daniel Ali on Unsplash

Et si on parlait d’accessibilité pour nos applications mobiles ? En 2017, rien qu’en France, 12 millions de personnes seraient touchées par un handicap (source). Alors vous imaginez dans le monde !

J’ai été contactée pour mon application KayakTraker par une personne atteinte de déficience visuelle, qui voulait savoir si l’application était compatible VoiceOver… gros blanc 😦 Du coup, me suis prise au jeu… 🙂

Et bonne nouvelle, sous iOS, il existe beaucoup de fonctions d’accessibilité, dont VoiceOver dont nous allons parler ici. Comme en plus, c’est relativement simple à mettre en oeuvre, alors pourquoi s’en priver ?

Pourtant, encore trop souvent, l’accessibilité pour les concepteurs.rices d’applications mobiles passe loin après le design, les fonctionnalités, les patterns… Et c’est dommage car avec un peu d’empathie et d’efforts, il est possible de faire beaucoup mieux !

En fait, si vous utilisez Xcode, votre application est même probablement déjà compatible en grande partie avec VoiceOver. Apple à fait pour nous une grande partie du travail, et nous donne des outils sympas pour le terminer 🙂

Donc commençons par une petite application de démo : 1 Label, 2 Buttons, 1 TextField. Lorsque l’on clique sur le bouton « Click me ! », on affiche « Hello » dans le TextField, et le bouton « Raz » remet le TextField à 0 :

Pour tester l’application avec VoiceOver, on peut dans un premier temps l’installer sur un device physique. Il faudra ensuite activer Voice Over dans les paramètres : Général > Accessibilité > VoiceOver. Cela permet déjà un premier test et de voir quelles informations manquent.

Mais ce n’est pas très pratique pour développer…

Heureusement, si il n’est pas possible (actuellement) d’activer les options d’accessibilité sur le simulateur, il est possible d’utiliser l’Accessibility Inspector depuis Xcode. Pour cela, rendez-vous dans le menu Xcode > Open Developer Tool > Accessibility Inspector.

On voit bien que le plus gros est fait, mais il reste quelques finitions…

Pour cela Apple à prévu les options d’accessibilité depuis le storyboard. D’une façon générale, chaque élément (Button, TextField…) possède des options d’accessibilité, qu’il suffit d’activer et de compléter :

Pour plus d’infos sur les traits, vous pouvez vous référer à la documentation officielle : https://developer.apple.com/

Voilà, une fois ces étapes accomplies, nous avons une application nettement plus accessible pour les personnes qui en ont besoin ! Ce n’est vraiment pas beaucoup de travail comparé à l’immense service que nous rendons !

Et le plus beau pour la fin : les options d’accessibilités gèrent aussi les traductions, comme toutes les autres éléments de l’interface 🙂

Vous pouvez donc retrouver vos labels et gérer vos traductions dans les fichiers strings dédiés. D’ailleurs, pour le rafraîchissement de ces fichiers, BartyCrouch est votre ami… mais cela fera l’objet d’un autre article.

Voilà pour cette introduction à l’accessibilité pour les applications iOS / Swift via VoiceOver. ce n’est bien sûr qu’une introduction, et VoiceOver ne prend en compte qu’une partie de l’accessibilité.

L’accessibilité se pense en globalité : au niveau du design, au niveau du parcours… J’en parlerai également dans de futurs articles ! En attendant, comme d’habitude, n’hésitez pas à me faire part de vos remarques / suggestions dans les commentaires !

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

Google lance sa pierre de Rosette !

C’est pas forcément flagrant partout, mais c’est l’été ! Donc on s’accorde une petite pause !

Et si vous avez envie de dépaysement, de culture et d’un peu de sable, tout cela sans quitter votre appart, Google à pensé à vous !

Dans la partie consacrée à l’Egypte de sa section Google Art & Culture, l’entreprise nous propose un créateur – traducteur de hiéroglyphes boosté au ML. Et oui, rien que ça !

Google Frabicius

Gràce à cet outil, vous pouvez traduire vos propres hiéroglyphes (bon, là c’est plutôt restreint à une certaine catégorie de professionnels…), mais aussi en créer et les envoyer à vos amis, et pourquoi pas, qui sait, apprendre cette écriture ?

Je n’ai pas les connaissances nécessaires pour vous dire si la traduction est ok, mais vu par qui est réalisé l’outil, et son orientation pro, on peut penser qu’il se débrouille plutôt pas mal !

Bon été à tous.tes, et bon courage à celles et ceux qui bossent !

L’enregistrement NSUserDefaults en Swift

L'enregistrement clé-valeur en swift _ nsuserdefaults

L’enregistrement de données sous forme de clé-valeur en développement mobile à déjà été abordé dans l’article sur les SharedPreferences.

Aujourd’hui, je vous propose de faire la même chose, mais en Swift. C’est beaucoup plus simple, mais nous nous limitons alors aux plateformes Apple (iOS, iPadOS, MacOS, WatchOS).

Comme pour les SharedPreferences, NSUsersDefaults est donc un système simple et rapide qui permet d’enregistrer des valeurs de type Float, Bool, Double, Int, mais aussi des objets (array, dictionary…. ), et des urls. C’est donc une façon de gérer la persistance des données à la fois simple et puissante 🙂 .

Pour cette démo, j’ai créé une petite application très simple dans laquelle l’utilisateur enregistre une phrase, et celle-ci est stockée comme une clé-valeur grâce à UserDefaults :

Afin de vérifier la persistance, n’hésitez pas à relancer l’application, et vous verrez que votre phrase reste mémorisée 🙂

Alors pour utiliser UserDefaults, il faut déjà créer une instance de UserDefaults, et définir ses clés de préférences :

Ensuite, l’enregistrement d’une valeur se fait avec l’instruction « préférences.set » :

Et la lecture d’une valeur avec :

Et c’est tout !

Ce qui fait que notre controller contient juste ce code :

Je pense que c’est la méthode la plus simple en Swift pour sauvegarder des informations ! Mais elle est aussi très puissante, puisqu’il est non seulement possible d’enregistrer des valeurs « simples », comme des entiers, des nombres et de booléens, mais aussi des valeurs plus complexes, comme des tableaux et des dictionnaires. En « bidouillant » un peu, on peut même enregistrer des images !

Bref, pas de raisons de s’en priver !

Comme toujours, le code source est disponible sur mon dépôt Git : https://gitlab.com/camilleBar/swift-nsuserdefaults-ios-demo-project

Et si vous avez des questions / suggestions, n’hésitez pas, commentez !

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 !