Windows Universal App – Premier pas avec Windows 10

Après quelques essais sur les plateformes mobile (Windows Phone 8.0 Silverlight, Windows Phone 8.1) il était naturel de plancher sur la dernière génération d’application universel de Microsoft. Pour cela j’ai attendu l’arrivé de Windows 10 et de Visual Studio 2015 avec impatience. Ça y est, j’ai tout installé ! Bon qu’est ce qu’il change ? A première vu pas grand chose. Si ce n’est que nous développeur devrions passer moins de temps à développer 15 applis suivant l’OS. Normalement le but est d’en développer qu’une seule pour n’importe quelle support, du moment qu’il tourne sur Windows 10 ou plus. L’ennuis c’est que j’ai eu du mal a switcher entre windows phone silverlight et 8.1 et que maintenant on a encore une nouvelle couche. Et je trouve très mal faite la MSDN. Je dois constament me poser la question de savoir si la doc est destiné pour quel environnement. Et franchement c’est pas clair ! Pour partir sur de bonnes bases, Microsoft met à disposition un bon paquet de code source bien ficelé pour pas mal de cas bien isolé. Voici le repo Git : https://github.com/Microsoft/Windows-universal-samples Et voici la liste des exemples : faites vos choix : App settings App package information Application data Audio, video, and camera Adaptive streaming Advanced casting Audio categories Audio graphs Background audio Basic camera app Basic face detection Basic face tracking Basic media casting Camera face detection Camera preview frame Camera profiles Camera resolution DASH streaming Direct2D photo adjustment High dynamic range Media editing Media transport controls MIDI Playlists Simple imaging Spatial audio System media transport controls Transcoding media Video playback Video stabilization Windows audio session (WASAPI) Windows media import Communications Bluetooth RFCOMM chat Communication blocking and filtering Phone call Real-time communication SMS send and receive Voice over IP (VoIP) Contacts and calendar Appointment calendar Contact cards Contact picker UserDataAccountManager Controls, layout, and text AutoSuggestBox migration Clipboard Commanding Context menu Context menu (XAML) Disabling selection Display orientation Downloadable fonts (DirectWrite) Downloadable fonts (XAML) Drag and drop Focus visuals Full screen mode Line spacing (DirectWrite) ListView and GridView Lock screen apps Message dialog Multiple views OCR Printing Pull-to-refresh Responsiveness techniques Scaling according to DPI Splash screen State triggers Tailored multiple views Title bar UI basics (XAML) User interaction mode WebView control (HTML) Window resizing Custom user interactions Basic input Complex inking Inking Low latency input Simple inking Data Blobs Compression Content indexer Form validation (HTML) IndexedDB Logging Serializing and deserializing data x:Bind x:DeferLoadStrategy XML DOM XmlLite Deep links and app-to-app communication App services Sharing content source app Sharing content target app Devices and sensors Accelerometer Activity detection sensor AllJoyn consumer experiences AllJoyn producer experiences Altimeter Background sensors Barcode scanner Barometer Bluetooth advertisement Cash drawer Compass Custom HID device Custom sensors Custom serial device Custom USB device Device enumeration General Purpose Input/Output (GPIO) Gyrometer Inclinometer Inter-Integrated Circuit (I2C) Lamp device Light sensor Magnetic stripe reader Near field communication (NFC) NFC enterprise provisioner Orientation sensor Pedometer POS printer Proximity sensor Relative inclinometer Relative orientation sensor Serial Arduino Serial Peripheral Interface (SPI) Simple orientation sensor Files, folders, and libraries File access File and folder thumbnail File picker File picker provider File search Folder enumeration HomeGroup Library management Semantic text query Gaming Direct3D game DirectX and XAML game Globalization and localization Application resources and localization Calendar Date and time formatting Globalization preferences Japanese phonetic analysis Language font mapping Linguistic services Number formatting and parsing Text segmentation Text suggestions Unicode string processing Graphics and animation Animated GIF playback (XAML) Animation library (HTML) Animation metrics Composition visual without framework Direct2D custom image effects Direct2D gradient mesh Efficient animations (HTML) Transform3D animations Transform3D parallax Identity, security, and encryption Credential locker Credential picker Disabling screen capture Enterprise data protection KeyCredentialManager Lock screen personalization Smart cards User information UserConsentVerifier Web account management WebAuthenticationBroker Launching and background tasks Association launching Background task Maps and location Geolocation Geotag MapControl Navigation Back Button Master/detail Navigation menu (XAML) Pivot Projection XHR, handling navigation errors, and URL schemes Networking and web services Background transfer DatagramSocket Exchange Active Sync (EAS) HttpClient JSON Mobile broadband Radios RSS reader end-to-end (JavaScript) Socket activity trigger stream socket StreamSocket Syndication USSD protocol WebSocket Wi-Fi Direct Wi-Fi Direct services Wi-Fi scanning Platform architecture In-process component authoring In-process component authoring Out-of-process component authoring Speech and Cortana Cortana voice command Speech recognition and synthesis Threading JavaScript Web Workers app multithreading Tiles, toasts, and notifications Notifications Secondary tiles Yeah ! Bon code !

Green House 2000

« Parce que l’an 2000 c’est le futur – Nabilla 2015 » Green House 2000 est le nom du projet qui concerne l’automatisation de ma serre. J’ai pris un peu de retard car la saison des tomates est plus qu’avancée… (certainement terminée quand j’aurais fini cet article). Mais bon, j’ai eu le temps de construire une serre (3m par 5m) avec du matos de récup. Et mes tomates poussent déjà super bien en mode « manuel ». J’ai un petit netduino 2 plus d’apprentissage que je souhaite utiliser à bon escient. Ce modèle est un « dérivé » d’Arduino. Il est spécialement concu pour permettre au développeur Microsoft .net C sharp que je suis de pouvoir utiliser son langage préféré grâce au Micro Framework embarqué sur la carte. C’est mon premier achat « IoT ». Si je me souvient bien c’est parce qu’il avait un connecteur Ethernet, ce qui n’était pas commun à l’époque. Il dispose en plus d’une carte mini SD. Sinon pour le reste, on a quasiment un Arduino classique. Spec ici : http://www.netduino.com/netduinoplus2/specs.htm Donc voila, l’idée est d’utiliser le netduino comme centrale pour surveiller ma serre (température, humidité, luminosité, débit eau) et pouvoir piloter un arrosage automatique (voir contrôlé à distance). Pour cela j’ai acheté 2 capteurs :- DHT22 Sensor :  capteur de température et d’humidité en 1 seul composant- un capteur de luminosité. J’ai aussi acheté un écran LCD 4 lignes.  Pour afficher en live mes données. Dans un premier temps je me suis concentrer sur l’acquisition de données. Après quelques recherches et test sur un board de prototypage, j’ai enfin pu enregistrer quelques données et les afficher sur mon écran LCD. Ensuite dans un second temps j’ai travaillé sur l’envoi de ces données sur le net. Pour cela j’ai utilisé un web service spécialisé dans l’IoT ; thingspeak. En deux trois mouvements, j’ai configuré un compte et grâce à une simple clé et quelques ligne de code, j’ai pu envoyé mes données sur le net. Et hop des courbes : https://thingspeak.com/channels/47907 Troisième étape, consolider mon code et pouvoir debuger. J’ai constaté que mon code plantait (pendant mes vacances) et qu’il était pas simple de savoir ce qu’il se passait sur le netduino, surtout déconnecté (et donc pas en mode debug). J’ai donc pensé à un système de log en deux parties:- log local, enregistré sur la SD Card. Donc c’est peu pratique car il faut prendre la mini SD et la lire sur un PC puis la remettre.- log distant, j’ai utilisé logentries qui est pas mal Donc je peux suivre à distance mes courbes de température/humidité/luminosité. Si je constate un plantage, je peux regarder online les logs. Si jamais ces logs ne m’informe pas assez, je vais voir sur la carte SD. Normalement on est bon la… Phase 2 : le contrôle d’une électrovanne : l’arrosage automatique. Prochainement….   Le code source sur GITHub : https://github.com/couscousbzh/GreenHouse2000 

Android : que faire en cas de perte de certificat Key store ou un oubli de mot de passe ?

Si vous développez sur android et publiez sur Google Play, on vous prévient souvent de ne pas oublier sa key store (certificat). En effet, on se dit « c’est bon je verrai plus tard’ on note rien, on oublie le password ou pire on perd carrément cette clé. Cette clé représente la signature numérique de l’auteur de l’application. Si vous la perdez, vous allez en régénérer une qui pour google représentera un nouvel auteur. Pour l’utilisateur qui veut mettre a jour une application, ceci se traduira par une erreur d’installation tant que l’ancienne appli ne sera pas désinstallé. –> pas bon Pour éviter cela, il y a une parade qui consiste à changer le manifest package name. Dans mon cas par exemple, le nom de mon package est fr.reactor.trackus. En le renommant c’est comme si je créé une nouvelle application disctinct. L’utilisateur aura donc 2 applis. Mais on repart sur une nouvelle app. Un conseil, redisigner un peu le logo de votre bouton d’app, histoire de faire comme si c’était « plus neuf » pour l’utilisateur… Pour aller plus loin, sachez qu’il ya des choses à ne pas faire avec Android, tout est dis dans cet article :http://android-developers.blogspot.fr/2011/06/things-that-cannot-change.html

Android – Google Play permet à nos applications une version alpha et bêta

Ok l’info n’est sans doute pas récente, mais en tout cas c’est une bonne nouvelle. Google play met à disposition sa console Google Play pour développeur deux nouveaux onglets « Tests Bêta » et « Tests Alpha ». A priori pour les tests alpha une simple compilation APK faite par Android Studio sans ZipAlign suffit. Donc c’est rapide. L’application est sur le store mais inaccessible au publique. Il vous faudra crée une liste de testeurs. Vous avez deux choix :- Créer un Group Google- Créer une communauté Google + J’ai choisi la deuxième solution en créant la communauté « Reactor Tester » https://plus.google.com/communities/110996989689045449334 Quand votre page de communauté est prête, revenez sur la gestion de votre fichier APK sur la console Google Play for developpers. Cliquez sur « Gérer la listes des testeurs, vous obtiendrez l’écran suivant : Copiez-Collez l’url de votre communauté et faites ajouter. Attention, vous pouvez avoir ce genre de format https://plus.google.com/u/0/b/116358088260865022946/communities/110996989689045449334 Google attend ce genre d’url : https://plus.google.com/communities/110996989689045449334 Donc pensez a recopier l’id à la fin et c’est tout bon ! Cette page vous renseigne sur l’url ou se trouve en test votre application, ici : https://play.google.com/apps/testing/fr.reactor.trackusSi vous cliquez sur ce lien, une page d’erreur s’affichera pour vos testeurs. Normal, si il n’appartiennent pas au groupe ou à la communauté précédement renseigné. Si par contre ils ont rejoins votre communauté, voici ce qu’ils verront :   Et voila !

Maker Faire Saint Malo

Ce week end se tenait la Maker Faire de Saint Malo. La quoi ?  La Maker Faire ! C’est une foire au bricolo, pour bricolo (ou pas) par les bricolos, orienté plutôt geek mais je pense que cela n’est que temporaire, d’ailleurs on y voit quelques artistes et personnage loufoque qui n’ont rien de geek.  Bon quand même on y va parce qu’on est geek et qu’on aime ça, et à la maker faire, il y a plein de gens comme nous ! Plusieurs stands qui exposent leurs geekerie comme par exemple un mini sous-marin filo-guidé (en compétition sur plusieurs fablab dont celui de Vannes), deux boites aux lettres avertisseur de courrier, un bac à sable éclairé par une image diffusé par un projecteur, où quand l’on modifie le relief du sable,  l’image se modifie en fonction des creux et des bosses pour afficher un lac et des collines verdoyantes…. Bref plein de stand en tout genre, des gens super sympas et des objets fascinant ! http://www.makerfairesaintmalo.com

Fun Time @ Disneyland Paris dépasse les 500 téléchargements en moins de 3 semaines

  Excellent départ pour notre première application sur le store de Windows Phone, l’application FunTime at Disneyland Paris dépasse les 500 téléchargements en quelques semaines. Qui a dit qu’il n’y avait personne sur Windows Phone ? Vous pouvez retrouver le détail de notre application sur notre site à cette adresse : https://reactor.fr/project/fun-time-disneyland-paris/  

MangoPay – Une API de gestion de paiement sur internet.

MangoPay est une solution de gestion de paiement sur internet, l’équivalent de son homologue US Paypal mais, cocorico, cette solution est Française. Enfin presque, car la société est basée à Luxembourg… En même temps pour une « pseudo » banque, cela reste logique. En effet MangoPay est une banque qui n’en est pas une. C’est plutôt un intermédiaire qui facilite les paiements et s’assure (avec les vraies banques) que les paiements soient effectués. En anglais on appelle cela un « Escrow » (sans déconner !). Un opérateur tiers.    Donc un « Escrow » ne se traduit pas par « escroc » (escrow vient du vieux français escroue, qui signifiait « bout de parchemin ») mais plutôt par « dépôt », « compte bloqué ». Il faut le voir comme un intermédiaire entre les clients de votre site e-commerce et les banques de ces clients. MangoPay permet à de jeune startup de créer un porte-monnaie virtuel en marque blanche. Bien évidement une commission est prélevée (1.8% + 0.18€ –> détail)   MangoPay se veut être une plateforme de paiement en ligne pour les Marketplaces, les plateformes collaboratives et les sites de crowdfunding. Bien évidement les workflows ne sont pas les mêmes suivant ces cas. En ce qui me concerne, je vais m’intérresser aux modèles des sites e-commerces. Ma problématique est de mettre en relation client et acheteur, tout en garantissant que l’acte d’achat se déroule proprement. Ceci implique de gérer le suivis des livraisons et des retours, voir même les échanges physiques réel.   Pour cela je vais utiliser l’API de MangoPay. Comme je vais devoir manipuler de l’argent, des cartes de crédits, des porte-monnaies, MangoPay met en place deux environnements, la production classique et le mode sandbox. C’est sur ce dernier que je vais tester mon application. En plus d’être « fictif » il permet de tester des cartes bancaires factice et donc d’ajouter de l’argent sur les portes-monnaies virtuels de mes utilisateurs, en ne déboursant pas un rond !   Mises en place de l’API – Inscription   https://docs.mangopay.com   Vous devez créer deux comptes, un pour la prod (pour plus tard, quand vous serez prêt) et un pour la sandbox. Je vous conseil de faire les deux tout de suite, comme ça c’est fait, et vous allez conserver ses informations dans votre coffre-fort.    Rendez vous sur cette page https://docs.mangopay.com/api-references/start-in-production/ pour l’inscription en prod, et sur cette page https://docs.mangopay.com/api-references/sandbox-credentials/ pour l’inscription en mode sandbox.   On vous demandera de créer un clientId, de donner le nom de votre société et un email (choisir aussi la monnaie Euro). L’important c’est d’avoir un email valide (pro de préférence) et un clientId que vous allez utiliser par la suite dans l’API. Vous allez ensuite valider votre inscription et recevoir un mot de passe (passphrase). NOTEZ ces informations et conservez les !   Ça y est, vous avez créé vos accès à l’API, maintenant passons à la doc.   Les bases de l’API :   Bien sur il faut se référer avant tout à la doc online. Plutôt bien faite, du moins il y a bcp d’info, mais pas forcément affiché dans le bon ordre selon moi. Ce n’est que mon avis, mais je vous propose de regarder ces pages dans cet ordre (cas e-commerce) :   https://docs.mangopay.com/marketplace-workflow/ (workflow pour les sites e-commerce) https://docs.mangopay.com/api-references/ (vous donne l’ensemble des requêtes possible) https://docs.mangopay.com/mangopay-dashboard/ (accès au dashboard)   Et arrêtez-vous la pour l’instant. Créez vous un accès sur le dashboard Sandbox et familiarisez vous avec quelques minutes. Il est vide à ce stade donc pas grand chose à voir.    L’important ici est de comprendre à quoi sert MangoPay et ce que vous voulez en faire. Ou trouvez l’information, les ressources et savoir utiliser les outils disponibles (dashboard).    Le code C#   L’Api fonctionne avec l’architecture REST. Les avantages : simple, sans état : indépendance client-serveur, pas de session, représentation compréhensible sous forme d’URI. Les inconvénients : le client doit conserver certaines données, augmentation du nombre de requêtes.    Une des pages de la doc conseille de commencer par créer un utilisateur (user), puis de lui associer un porte-monnaie (wallet). C’est ce que je vais vous montrer, mais en créant plutôt deux utilisateurs : John et Julie.    Tout d’abord, vous devez télécharger le SDK de votre langage de programmation préféré. Le SDK MangoPay est disponible sur GitHub en PHP, Python, Ruby, Java, .Net et JavaScript. Je vais continuer l’article en m’appuyant sur le SDK .net, mais sachez les noms des méthodes sont les mêmes dans toutes les versions (attention, j’ai pas tout vérifié), et parfois avec les mêmes fautes d’orthographe ! (ceci ma permit d’en conclure qu’effectivement le code est fortement similaire)     https://github.com/MangoPay   Note: j’ai commencé par utiliser la version compilé du package SDK .net dans une solution WebForm Asp.net. J’ai eu des soucis lors de l’exécution sur les libs Common.Logging.Core.dll et Common.Logging.dll. J’ai pas compris pourquoi alors j’ai téléchargé le code source de MangoPay.SDK et j’ai ajouté/créé un projet web directement dans leur solution. Ça compile et ça s’exécute correctement. Mais mieux, dans la solution fournit par le SDK on a un projet de Test, c’est une mine d’or pour comprendre comment fonctionne l’API. Je vous conseille fortement d’aller y faire un tour. J’ai autant appris avec les tests qu’avec la doc sur internet.    Il faut pour cela instancier l’API et lui passer les paramètres suivant :   MangoPayApi api = new MangoPayApi (); api.Config.ClientId = « myClientId » ; api.Config.ClientPassword = « XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX » ;   L’objet ‘api’ dispose d’une autre propriété importante : api.Config.BaseUrl. Par défaut c’est l’url de la SandBox. Donc si vous ne la spécifiez pas, vous serez par défaut sur le serveur de test.    Pour créer un utilisateur, voici les quelques lignes de code :   UserNaturalPostDTO user = new UserNaturalPostDTO (« john.doe@sample.org » , « John » , « Doe » , new DateTime (1975, 12, 21, 0, 0, 0), CountryIso.FR, CountryIso .FR); user.Occupation = « programmer » ; user.IncomeRange = 3; user.Address = « Some Address » ;   UserNaturalDTO john = api.Users.Create(user);   Remarque : MangoPay distingue deux types d’utlisateur, les UserNatural et les UserLegal. Pour faire simple, UserNatural est un utilisateur lambda, le client de base et UserLegal une personne morale, représentant une société. Ceci m’amène à vous parler du KYC Concept de MangoPay. KYC signifie « Know Your Customer », « Connais ton client ». Bon tout ça découle certainement de directive Européenne et est en lien étroit avec la lutte contre la fraude, le blanchiment d’argent et le financement du terrorisme (rien contre l’évasion fiscale ? étonnant…) Du coup MangoPay distingue…