Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
In01 - Programmation Android - Travaux pratiquesYann Caron
Cours CNAM sur la programmation Android, travaux pratiques.
Objectif : réaliser l'application "Pêcheur du Léman" qui mélange de l'IHM, de la base de donnée, GoogleMap, de la géolocalisation, des vues personnalisées des webservices, les senseurs.... et tout se qui germera de notre imagination.
Dernier cours de la série.
Ce chapitre présente un ensemble de techniques avancées (comme les capteurs, les testes unitaires, la concurrence, les vues personnalisées, les fragments...) ainsi qu'une vue d'ensemble des frameworks de jeux vidéos et alternatives multi plate-formes
Bonne lecture
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici la suite du cours que je donnerai au CNAM Léman. Cette présentation porte sur les interface utilisateurs et les design pattern associés. Bonne lecture :)
Cours CNAM sur la programmation Android, partie sur la plateforme Android, l'anatomie d'un projet, les composants, le ccle de vie d'une application, la persistance etc....
Cours CNAM sur la programmation Android, partie 06.
Ce cours porte sur la publication d'une app, sa promotion.
Il présente les différents moyen de monétisation, adMob, l'inApp billing v3 et enfin l'intégration de l'API Google Analytics
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
C'est un cours de Théorie des BD destiné à des étudiants en Master 1 Informatique et Système à L'UFR ST de L'Université Blaise Pascal de Clermont Ferrand.
Swift est désormais open source ! "Google considérerait Swift comme un langage « de première classe » pour Android" pouvait-on lire en avril sur le réseau. Et enfin un portage Android du langage a été "merge" dans la base de code officielle de Swift.
Bon tout ceci est un bon prétexte pour apprendre ce nouveau langage et les possibilités qu'il peut nous apporter en terme de développement. Une comparaison avec Java sera notamment proposée afin de montrer les similitudes et differences entre ces deux langages .
Clairement dans cette version, nous assistons à une volonté de simplification. Plus de lisibilité du code, plus d’outils pour ne plus avoir à perdre de temps sur des opérations simples et courantes, pour au final un code de meilleur qualité et plus accessible. La plupart de ces améliorations se trouvent dans cette présentation.
In01 - Programmation Android - Travaux pratiquesYann Caron
Cours CNAM sur la programmation Android, travaux pratiques.
Objectif : réaliser l'application "Pêcheur du Léman" qui mélange de l'IHM, de la base de donnée, GoogleMap, de la géolocalisation, des vues personnalisées des webservices, les senseurs.... et tout se qui germera de notre imagination.
Dernier cours de la série.
Ce chapitre présente un ensemble de techniques avancées (comme les capteurs, les testes unitaires, la concurrence, les vues personnalisées, les fragments...) ainsi qu'une vue d'ensemble des frameworks de jeux vidéos et alternatives multi plate-formes
Bonne lecture
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
Voici la suite du cours que je donnerai au CNAM Léman. Cette présentation porte sur les interface utilisateurs et les design pattern associés. Bonne lecture :)
Cours CNAM sur la programmation Android, partie sur la plateforme Android, l'anatomie d'un projet, les composants, le ccle de vie d'une application, la persistance etc....
Cours CNAM sur la programmation Android, partie 06.
Ce cours porte sur la publication d'une app, sa promotion.
Il présente les différents moyen de monétisation, adMob, l'inApp billing v3 et enfin l'intégration de l'API Google Analytics
Voici le cours sur android que j'enseigne à l'ENSG
Retrouvez tous le cours et le TP sur GitHub :
https://github.com/YannCaron/Android-ENSG
Si vous avez des besoin en formation, n'hésitez pas à me contacter : CyaNn (at) gmail (dot) com
C'est un cours de Théorie des BD destiné à des étudiants en Master 1 Informatique et Système à L'UFR ST de L'Université Blaise Pascal de Clermont Ferrand.
Swift est désormais open source ! "Google considérerait Swift comme un langage « de première classe » pour Android" pouvait-on lire en avril sur le réseau. Et enfin un portage Android du langage a été "merge" dans la base de code officielle de Swift.
Bon tout ceci est un bon prétexte pour apprendre ce nouveau langage et les possibilités qu'il peut nous apporter en terme de développement. Une comparaison avec Java sera notamment proposée afin de montrer les similitudes et differences entre ces deux langages .
Clairement dans cette version, nous assistons à une volonté de simplification. Plus de lisibilité du code, plus d’outils pour ne plus avoir à perdre de temps sur des opérations simples et courantes, pour au final un code de meilleur qualité et plus accessible. La plupart de ces améliorations se trouvent dans cette présentation.
Tester unitairement une application javaAntoine Rey
Présente les différents types de tests automatisés, les objectifs des tests unitaires, les stratégies de mise en œuvre, les bonnes pratiques, les difficultés, ce qu'est un mock, différents outils (Unitils, Mockito, DbUnit, Spring Test) et des exemples de tests (DAO et contrôleurs Spring MVC), sans oublier le test de code legacy.
ACRA est une librairie open source, légère, facile à mettre en oeuvre et très configurable permettant aux développeurs android de recevoir des rapports d'erreur de leurs applications dans un spreadsheet GoogleDocs.
Fork / Join, Parallel Arrays, Lambdas : la programmation parallèle (trop ?) f...Normandy JUG
Ces nouvelles fonctionnalités introduites à partir de Java 7 nous permettent de parallèliser nos traitements simplement, voire gratuitement. Nous allons donc pouvoir utiliser pleinement nos multicoeurs avec un minimum d'efforts. Quels sont ces nouveaux patterns, quels gains en performance pouvons-nous en attendre, à quels nouveaux bugs serons-nous confrontés ? Une heure pour répondront à chacun de ces points, en introduisant les nouveaux problèmes et leurs solutions. Une heure pour comprendre comment nos habitudes de programmation vont devoir évoluer, et à quoi la programmation parallèle en Java ressemblera-t-elle demain.
Le sujet principal de Java 9 est le support de la modularité mais Java 9 propose aussi de nombreuses autres fonctionnalités. Ce talk a pour but de faire une revue des principales d’entre-elles en attendant la sortie de Java 9 : support de standards, nouvelles API, évolutions dans certaines API, mises à jour des outils du JDK et améliorations de la JVM.
Similaire à Programmation Android - 09 - Web services (20)
Théorie des langages - TP - WellKnownTextYann Caron
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Théorie des langages - 04 Théorie des langagesYann Caron
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Théorie des langages - 03 - Principes et paradigmesYann Caron
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Théorie des langages - 01.1 - Parcours d'arbresYann Caron
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Théorie des langages - 00 - IntroductionYann Caron
Cours de théorie des langages, théorie de la compilation, techniques de compilations et paradigmes de programmation que je dispense aux Ingé 2 et 3 à l’École National des Sciences Géographiques de Paris.
Voici mon cours de programmation de jeux vidéo pour les Kids.
ALGEA est une plateforme innovante d'apprentissage pour les enfants et leurs parents à travers la programmation de jeux vidéos.
Retrouvez tous l'atelier sur mon GitHub :
https://github.com/YannCaron/Devoxx4Kids-algea
Et sur www.algoid.net
Voici mon cours de programmation de jeux vidéo pour les Kids.
ALGEA est une plateforme innovante d'apprentissage pour les enfants et leurs parents à travers la programmation de jeux vidéos.
Retrouvez tous l'atelier sur mon GitHub :
https://github.com/YannCaron/Devoxx4Kids-algea
Et sur www.algoid.net
Voici mon cours de programmation de jeux vidéo pour les Kids.
ALGEA est une plateforme innovante d'apprentissage pour les enfants et leurs parents à travers la programmation de jeux vidéos.
Retrouvez tous l'atelier sur mon GitHub :
https://github.com/YannCaron/Devoxx4Kids-algea
Et sur www.algoid.net
Voici mon cours de programmation de jeux vidéo pour les Kids.
ALGEA est une plateforme innovante d'apprentissage pour les enfants et leurs parents à travers la programmation de jeux vidéos.
Retrouvez tous l'atelier sur mon GitHub :
https://github.com/YannCaron/Devoxx4Kids-algea
Et sur www.algoid.net
Voici mon cours de programmation de jeux vidéo pour les Kids.
ALGEA est une plateforme innovante d'apprentissage pour les enfants et leurs parents à travers la programmation de jeux vidéos.
Retrouvez tous l'atelier sur mon GitHub :
https://github.com/YannCaron/Devoxx4Kids-algea
Et sur www.algoid.net
L'IA connaît une croissance rapide et son intégration dans le domaine éducatif soulève de nombreuses questions. Aujourd'hui, nous explorerons comment les étudiants utilisent l'IA, les perceptions des enseignants à ce sujet, et les mesures possibles pour encadrer ces usages.
Constat Actuel
L'IA est de plus en plus présente dans notre quotidien, y compris dans l'éducation. Certaines universités, comme Science Po en janvier 2023, ont interdit l'utilisation de l'IA, tandis que d'autres, comme l'Université de Prague, la considèrent comme du plagiat. Cette diversité de positions souligne la nécessité urgente d'une réponse institutionnelle pour encadrer ces usages et prévenir les risques de triche et de plagiat.
Enquête Nationale
Pour mieux comprendre ces dynamiques, une enquête nationale intitulée "L'IA dans l'enseignement" a été réalisée. Les auteurs de cette enquête sont Le Sphynx (sondage) et Compilatio (fraude académique). Elle a été diffusée dans les universités de Lyon et d'Aix-Marseille entre le 21 juin et le 15 août 2023, touchant 1242 enseignants et 4443 étudiants. Les questionnaires, conçus pour étudier les usages de l'IA et les représentations de ces usages, abordaient des thèmes comme les craintes, les opportunités et l'acceptabilité.
Résultats de l'Enquête
Les résultats montrent que 55 % des étudiants utilisent l'IA de manière occasionnelle ou fréquente, contre 34 % des enseignants. Cependant, 88 % des enseignants pensent que leurs étudiants utilisent l'IA, ce qui pourrait indiquer une surestimation des usages. Les usages identifiés incluent la recherche d'informations et la rédaction de textes, bien que ces réponses ne puissent pas être cumulées dans les choix proposés.
Analyse Critique
Une analyse plus approfondie révèle que les enseignants peinent à percevoir les bénéfices de l'IA pour l'apprentissage, contrairement aux étudiants. La question de savoir si l'IA améliore les notes sans développer les compétences reste débattue. Est-ce un dopage académique ou une opportunité pour un apprentissage plus efficace ?
Acceptabilité et Éthique
L'enquête révèle que beaucoup d'étudiants jugent acceptable d'utiliser l'IA pour rédiger leurs devoirs, et même un quart des enseignants partagent cet avis. Cela pose des questions éthiques cruciales : copier-coller est-il tricher ? Utiliser l'IA sous supervision ou pour des traductions est-il acceptable ? La réponse n'est pas simple et nécessite un débat ouvert.
Propositions et Solutions
Pour encadrer ces usages, plusieurs solutions sont proposées. Plutôt que d'interdire l'IA, il est suggéré de fixer des règles pour une utilisation responsable. Des innovations pédagogiques peuvent également être explorées, comme la création de situations de concurrence professionnelle ou l'utilisation de détecteurs d'IA.
Conclusion
En conclusion, bien que l'étude présente des limites, elle souligne un besoin urgent de régulation. Une charte institutionnelle pourrait fournir un cadre pour une utilisation éthique.
Ouvrez la porte ou prenez un mur (Agile Tour Genève 2024)Laurent Speyser
(Conférence dessinée)
Vous êtes certainement à l’origine, ou impliqué, dans un changement au sein de votre organisation. Et peut être que cela ne se passe pas aussi bien qu’attendu…
Depuis plusieurs années, je fais régulièrement le constat de l’échec de l’adoption de l’Agilité, et plus globalement de grands changements, dans les organisations. Je vais tenter de vous expliquer pourquoi ils suscitent peu d'adhésion, peu d’engagement, et ils ne tiennent pas dans le temps.
Heureusement, il existe un autre chemin. Pour l'emprunter il s'agira de cultiver l'invitation, l'intelligence collective , la mécanique des jeux, les rites de passages, .... afin que l'agilité prenne racine.
Vous repartirez de cette conférence en ayant pris du recul sur le changement tel qu‘il est généralement opéré aujourd’hui, et en ayant découvert (ou redécouvert) le seul guide valable à suivre, à mon sens, pour un changement authentique, durable, et respectueux des individus! Et en bonus, 2 ou 3 trucs pratiques!
Le Comptoir OCTO - Qu’apporte l’analyse de cycle de vie lors d’un audit d’éco...OCTO Technology
Par Nicolas Bordier (Consultant numérique responsable @OCTO Technology) et Alaric Rougnon-Glasson (Sustainable Tech Consultant @OCTO Technology)
Sur un exemple très concret d’audit d’éco-conception de l’outil de bilan carbone C’Bilan développé par ICDC (Caisse des dépôts et consignations) nous allons expliquer en quoi l’ACV (analyse de cycle de vie) a été déterminante pour identifier les pistes d’actions pour réduire jusqu'à 82% de l’empreinte environnementale du service.
Vidéo Youtube : https://www.youtube.com/watch?v=7R8oL2P_DkU
Compte-rendu :
MongoDB in a scale-up: how to get away from a monolithic hell — MongoDB Paris...Horgix
This is the slide deck of a talk by Alexis "Horgix" Chotard and Laurentiu Capatina presented at the MongoDB Paris User Group in June 2024 about the feedback on how PayFit move away from a monolithic hell of a self-hosted MongoDB cluster to managed alternatives. Pitch below.
March 15, 2023, 6:59 AM: a MongoDB cluster collapses. Tough luck, this cluster contains 95% of user data and is absolutely vital for even minimal operation of our application. To worsen matters, this cluster is 7 years behind on versions, is not scalable, and barely observable. Furthermore, even the data model would quickly raise eyebrows: applications communicating with each other by reading/writing in the same MongoDB documents, documents reaching the maximum limit of 16MiB with hundreds of levels of nesting, and so forth. The incident will last several days and result in the loss of many users. We've seen better scenarios.
Let's explore how PayFit found itself in this hellish situation and, more importantly, how we managed to overcome it!
On the agenda: technical stabilization, untangling data models, breaking apart a Single Point of Failure (SPOF) into several elements with a more restricted blast radius, transitioning to managed services, improving internal accesses, regaining control over risky operations, and ultimately, approaching a technical migration when it impacts all development teams.
4. session fev 2016 Yann Caron (c) 2014 4
Généralités
Assure la connexion et l'échange de données
entre applications hétérogènes distribuées,
généralement via le protocole HTTP
Idée générale : utiliser une technologie
existante, facilement interopérable et ouverte
Deux grands types de WebServices :
➔ WS-*
➔ REST
5. session fev 2016 Yann Caron (c) 2014 5
WS-* / REST
WS-* ou RPC : Remote Procedure Call
➔ Paradigme d'appel de méthodes à distance (accès aux objets
via méthodes)
➔ Transfert de données via accesseurs (Getter / Setter)
➔ Bibliothèques serveur et cliente
REST : Orienté données
➔ Transfert des objets via attributs
➔ Normalisation des URLs
➔ Côté client, sa simplicité permet l'utilisation ou non d'un client
6. session fev 2016 Yann Caron (c) 2014 6
WS-*
Ensemble de standards
➔ SOAP (Simple Object Access Protocol) : échange de
messages
➔ WSDL (Web Service Description Language) :
description du message
➔ UDDI : L'annuaire
Basé sur le modèle SOA (Service Oriented
Architecture)
7. session fev 2016 Yann Caron (c) 2014 7
REST
Representational State Transfer
Formalisé par Roy Fielding en 2000 (lors de sa thèse de
doctorat)
Plutôt un style architectural qui respecte des règles
➔ Client - Serveur
➔ State less (n'entretient pas d'état client côté serveur)
➔ Mise en cache
➔ Interface uniforme (Une URI pour une ressource)
➔ Architecture en couches
➔ Code-on-demand (optionnel)
8. session fev 2016 Yann Caron (c) 2014 8
Architecture REST
HTTP / URI
XML / JSon
9. session fev 2016 Yann Caron (c) 2014 9
XML
Extensible Markup Language
Langage à balises encadrés par des chevrons
<menu id="file" value="File">
<popup>
<menuitem value="New" onclick="CreateNewDoc()" />
<menuitem value="Open" onclick="OpenDoc()" />
<menuitem value="Close" onclick="CloseDoc()" />
</popup>
</menu>
11. session fev 2016 Yann Caron (c) 2014 11
JSON vs XML
Pour JSON :
➔ Moins verbeux, donc moins couteux en ressources
➔ Facile à apprendre
➔ Typage simple et connu
➔ Plus facile à parser
Pour XML :
➔ Plus flexible (Syntax JSON rigide)
➔ Commentaires
➔ Validation (XML Schema, DTD)
12. session fev 2016 Yann Caron (c) 2014 12
Avantages / inconvénients
Avantages :
➔ Interopérabilité et portabilité
➔ Technologie ouverte et connue
➔ Formats textes (XML / JSon) humainement lisibles
➔ Facilement transportable (port 80)
Inconvénients
➔ Format volumineux et peu performant (cas du XML)
14. session fev 2016 Yann Caron (c) 2014 14
Introduction
Choix de l'architecture :: REST
Choix du langage :: JSON
Pourquoi ?
➔ Natif, rien à installer
➔ WebServices RPC nécessiterait des librairies,
comme Ksoap2-android
➔ RPC complexe à mettre en oeuvre
15. session fev 2016 Yann Caron (c) 2014 15
Android
Utilisation des objets URL et
HttpURLConnection
URL url = new URL("http://My URL");
HttpURLConnection urlConnection = (HttpURLConnection)
url.openConnection();
InputStream in = new
BufferedInputStream(urlConnection.getInputStream());
16. session fev 2016 Yann Caron (c) 2014 16
Lire le Stream
Stream String→
BufferedReader reader = new BufferedReader(new
InputStreamReader(in));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
Decorator
17. session fev 2016 Yann Caron (c) 2014 17
FileInputStream et FileOutputStream
Héritent des classes abstraites InputStream et
OutputStream du package java.io
Lecture Ecriture
18. session fev 2016 Yann Caron (c) 2014 18
Java.io
Les classes InputStream gèrent la lecture
Les classes OutputStream gèrent l'écriture
Il faudra gérer les exceptions (IOException)
19. session fev 2016 Yann Caron (c) 2014 19
Java.io
Ajoute des fonctionnalités grâce au pattern Decorator
FileInputStream : données brutes
DataInputStream : données typées
BufferedInputStream : ajoute un tampon (une ligne,
le fichier etc...)
PushbackInputStream : permet de remettre des
données déjà lues dans le flux entrant
LineNumberInputStream : indique le numéro de la
ligne lue
20. session fev 2016 Yann Caron (c) 2014 20
Decorator
On peut les cumuler (système de filtrage
paramétrable)
BufferedInputStream bis = new BufferredInputStream(
new DataInputStream(
new FileInputStream(
new File("toto.txt"))));
22. session fev 2016 Yann Caron (c) 2014 22
Parcours (parsing)
Le SDK Android fournit une bibliothèque de parsing
JSON simple d'utilisation : org.json.JSONObject
Et les méthode de parcours du DOM :
➔ getJSONObject (name) : lit un objet imbriqué
➔ getJSONArray (name) : lit une collection
➔ getBool (name), getDouble (name), getInt
(name), getString (name), lisent des valeurs scalaires
➔ put(name, value) ajoute une paire clé / valeur dans la
structure JSON
25. session fev 2016 Yann Caron (c) 2014 25
Data model
Le paradigme objet, par essence, tente de
représenter toute entité sous forme d'un objet
Les données de l'application seront regroupées
dans un module appelé data model
Better, faster lighter Java (Bruce Tate et Justin
Gehtland)
26. session fev 2016 Yann Caron (c) 2014 26
Data model
class Intersection {
final double lng, lat;
final String street1, street2;
// constructor
public Intersection(double lng, double lat, String
street1, String street2) { … }
// getters
public double getLng() { return lng; }
public double getLat() { return lat; }
public String getStreet1() { return street1; }
public String getStreet2() { return street2; }
}
Final / immutabilité
27. session fev 2016 Yann Caron (c) 2014 27
Data model
Bonne pratique : immutabilité, évite les effets
de bord
Mapping (“maison”) JSON / Object
Problématique récurrente et fastidieuse
Intersection dataIntersection = new Intersection(lng,
lat, street1, street2);
28. session fev 2016 Yann Caron (c) 2014 28
XML ?
L'ADK fournis des bibliothèques de parcours JSON
et XML
Pour XML on peut utiliser 3 types de “parseurs” :
➔ DOM : Document Object Model, orienté objet
➔ SAX : Simple API for XML, mécanisme à base de
callback (startDocument, startElement,
endElement, endDocument)
➔ XmlPullParser : approche impérative (while / if,
elseif), recommandé par Google
30. session fev 2016 Yann Caron (c) 2014 30
AsyncTask
L'appel d'une ressource distante peut avoir un
coût (temps)
Bloque l'interface utilisateur
L'ADK offre un outil pour gérer les tâches
couteuses : la classe abstraite AsyncTask
31. session fev 2016 Yann Caron (c) 2014 31
Principe
Créer une classe concrète qui hérite d'AsyncTask
Une classe (interne), locale et anonyme
Surcharger les méthodes :
➔ onPreExecute : exécuté avant l'exécution
➔ doInBackground : l'appel à la ressource bloquante
➔ onPostExecute : s'exécute après l'opération
Peut aussi gérer l'annulation de l'utilisateur ou la
progression
34. session fev 2016 Yann Caron (c) 2014 34
Jackson
Jackson est une bibliothèque de serialization /
Deserialisation au format JSON
Une extension permet de faire du XML
Utilise des POJOs (Plain Old Java Object); des
objets Java sans artifice
“Under the hood”, utilise l'introspection de Java
Configuration du matching par annotation
37. session fev 2016 Yann Caron (c) 2014 37
Les Pojos correspondants
public class IntersectionContainer {
@JsonProperty("credits")
public double version;
public Intersection intersection;
}
public class Intersection {
public double lng, lat;
public String street1, street2;
}
Ou des accesseurs
Annotation
Attention ! Ce ne sont pas des BEANS
38. session fev 2016 Yann Caron (c) 2014 38
Le parsing
Extrêmement simple !
Déduit le nom ou se sert des annotations:
➔ @JsonProperty (name) : specifie le nom Json
➔ @JsonIgnore () : ignore l'attribut
ObjectMapper mapper = new ObjectMapper();
IntersectionContainer ic = mapper.readValue(JSON_DATA,
IntersectionContainer.class);
39. session fev 2016 Yann Caron (c) 2014 39
Annotation : intrusif
Dans le cas ou l'objet à “mapper” existe déjà
dans une autre librairie
Solution : Utilisation des Mix-In annotations
Une interface qui contient les attributs et qui
leur associe les annotations nécessaires
40. session fev 2016 Yann Caron (c) 2014 40
Mix-In
abstract class MixIn {
@JsonProperty("credits") double version;
}
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.addMixInAnnotations(
IntersectionContainer.class, MixIn.class);
IntersectionContainer ic = mapper.readValue(
JSON_DATA, IntersectionContainer.class);
}
Association
Specification
41. session fev 2016 Yann Caron (c) 2014 41
Conclusion sur Jackson
Ce n'est pas l'unique bibliothèque de “mapping”
XML (XStream)
Avantage : gère à la fois JSon et XML
Performances Android
Le mapping objet devient de plus en plus
présent dans les applications. Standard de
facto.
43. session fev 2016 Yann Caron (c) 2014 43
Sur internet : Geonames
Base de données géographique
Service Météo METAR
Offre une interface complète de WebServices REST
au format XML / JSON, mais aussi, CSV, RSS, KML
Exemples : Trouver l'intersection routière la plus
proche (US) d'une position. Donner les données
météo METAR de l'aéroport le plus proche de la
position etc....
44. session fev 2016 Yann Caron (c) 2014 44
Serveur local : RESTFull
Serveur REST en java (JAX-RS / GlassFish /JEE)
But : Synchroniser les données de l'appareil sur
un serveur mutualisé
Principe, réaliser un “mapping” des tables de la
base de données
http://mbaron.developpez.com/tutoriels/soa/d
eveloppement-services-web-rest-jaxrs-
netbeans/