SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
#devfestnantes
LA BOÎTE À OUTILS DU
DÉVELOPPEUR
ANDROID DE 2016
(avec le plugin Android)
BUILD VARIANTS
U+2020
https://github.com/JakeWharton/u2020
MENU DE DEBUG
Exemple de Google iosched
ACTIVITÉ DE DEBUG
Inspirée de U+2020
Afficher les informations de build
Changer de serveur à la volée
Afficher les logs
Envoyer des rapports de bugs
etc.
L'APPLICATION DEVFEST NANTES 2016
https://github.com/Nilhcem/devfestnantes-2016
MESURER
ANDROID STUDIO
(onglet Android Monitor)
DÉTECTER LES FUITES MÉMOIRE
LEAK CANARY
https://github.com/square/leakcanary
FRAME RATE
build.gradle :
MyApplication.java :
https://github.com/wasabeef/Takt
compile 'jp.wasabeef:takt:1.0.3'
public class MyApplication extends Application {
@Override public void onCreate() {
super.onCreate();
Takt.stock(this).play();
}
}
HUGO
https://github.com/JakeWharton/hugo
Préfixer les classes / methodes avec :
@DebugLog
Résultat :
DevFestApp V ⇢ onCreate()
V ⇢ initGraph()
V ⇠ initGraph [13ms]
V ⇢ initLogger()
V ⇠ initLogger [1ms]
V ⇠ onCreate [73ms]
PIDCAT
https://github.com/JakeWharton/pidcat
$ pidcat com.nilhcem.devfest
ANDROIDDEVMETRICS
build.gradle :
MyApplication.java :
https://github.com/frogermcs/AndroidDevMetrics
apply plugin: 'com.frogermcs.androiddevmetrics'
public class MyApplication extends Application {
@Override public void onCreate() {
super.onCreate();
AndroidDevMetrics.initWith(this);
}
}
ANALYSE STATIQUE DE CODE
Lint
Error Prone (Google)
Infer (Facebook)
SONARQUBE
Dockerfile :
FROM java:8
MAINTAINER Nilhcem
RUN DEBIAN_FRONTEND=noninteractive apt update
RUN DEBIAN_FRONTEND=noninteractive apt install -y wget unzip
RUN wget -q https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.1.zip
RUN unzip -qq sonarqube-6.1.zip -d /opt/
RUN rm sonarqube-6.1.zip
EXPOSE 9000
CMD ["/opt/sonarqube-6.1/bin/linux-x86-64/sonar.sh", "console"]
Ensuite lancer :
$ docker build -t nilhcem/sonarqube .
$ docker run -p 9000:9000 -d nilhcem/sonarqube
SONARQUBE : CONFIGURATION GRADLE
build.gradle :
apply plugin: 'org.sonarqube'
sonarqube {
properties {
def appProject = project(':app')
def appProjectBuildDir = appProject.buildDir
property 'sonar.projectKey', 'devfestnantes-2016'
property 'sonar.projectName', 'DevFest Nantes 2016'
property 'sonar.projectVersion', appProject.android.defaultConfig.versionName
property 'sonar.host.url', 'http://localhost:9000'
property 'sonar.sources', 'src'
property 'sonar.sourceEncoding', 'UTF-8'
property 'sonar.java.binaries', 'build/intermediates/classes/production/debug'
property 'sonar.java.test.binaries', 'build/intermediates/classes/test/production/debug'
property 'sonar.exclusions', 'src/test/java/**'
property 'sonar.core.codeCoveragePlugin', 'jacoco'
property 'sonar.jacoco.reportPath', "$appProjectBuildDir/jacoco/testProductionDebugUnitTest.exec"
property 'sonar.junit.reportsPath', "$appProjectBuildDir/test-results/testProductionDebugUnitTest/productionDebug"
}
}
Ensuite lancer :
./gradlew :app:assembleProductionDebug :app:testProductionDebugUnitTest :app:sonarqube
TESTER
MOCK SERVER
NODEJS + EXPRESS
/* Setup */
var fs = require('fs');
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 8080);
var port = app.get('port');
/* Liste des speakers */
app.get('/speakers', function(req, res) {
res.type('application/json; charset=utf8');
res.status(200).send(fs.readFileSync('data/speakers.json', 'utf8'));
});
/* Autres services web */
// ...
/* Démarrer le serveur */
app.listen(port, function () {
console.log('Express server listening on port ' + port);
});
NODEJS + EXPRESS
Simuler une réponse lente
sleep(2000);
function sleep(durationMillis) {
var now = new Date().getTime();
while (new Date().getTime() < now + durationMillis) {
// do nothing
}
}
// SVP ne prenez pas ce slide en photo, j’en suis pas fier
EXEMPLE
Ensuite, aller sur :
https://github.com/Nilhcem/devfestnantes-2016
/tree/master/mockserver
$ npm install
$ npm start
http://localhost:8990/
HOSTS EDITOR
https://play.google.com/store/apps/details?id=com.nilhcem.hostseditor
DÉBUGUEUR HTTP
DÉBUGUEURS HTTP
mitmproxy
Fiddler
Charles proxy
CHARLES PROXY
Simuler une connexion lente/instable
Répéter des requêtes
Vérifier les réponses
Ajouter des points d’arrêt pour:
Annuler un appel HTTP(s)
Éditer une requête
Éditer une réponse
ÉDITER UNE RÉPONSE
TESTER LES
RESTAURATIONS
D'ÉTAT
NE PAS CONSERVER LES ACTIVITÉS
FILL RAM
https://play.google.com/store/apps/details?id=com.tspoon.androidtoolbelt
ARRÊT DE PROCESS VIA ANDROID DEVICE MONITOR
ANALYSE
OPTIONS
DÉVELOPPEURS
UIAUTOMATORVIEWER
ANIMATIONS
Options développeurs -> Échelle d'animation
ANIMATIONS
Faire un screencast (API 19+) :
VLC :
$ adb shell screenrecord /sdcard/demo.mp4
$ adb pull /sdcard/demo.mp4
Appuyer sur la touche 'E' du clavier
pour voir les frames une par une
APKTOOL + DEX2JAR + JD-GUI
http://ibotpeaches.github.io/Apktool
https://github.com/pxb1988/dex2jar
http://jd.benow.ca
JADX
https://github.com/skylot/jadx
ANDROID STUDIO
(Build > Analyze APK)
STETHO
STETHO - UI
STETHO - RÉSEAU
STETHO - RESSOURCES
STETHO
DUMPAPP
STETHO - DUMPAPP
STETHO - DUMPAPP
D'AUTRES EXEMPLES AVEC DUMPAPP
$ dumpapp accessToken invalidate
$ dumpapp accessToken show
fce1235425dcdeadbeef8cafebabe42
$ dumpapp clipboard get
Hello
$ dumpapp clipboard set "Text to copy"
$ dumpapp onTrimMemory
$ dumpapp openIntent scheme://open/speaker/3
$ dumpapp gcmToken
uHyMKnEQ:APA91bEHZ6afFLQQMzKgSDjp5y_0397usitPqj_Bp02
$ dumpapp geolocData
Location[fused 22.5430883,114.1043205 acc=21 et=+21m5s492ms]
$ dumpapp runningServices
com.example.LocationService
DUMPAPP - CRÉATION D'UN PLUGIN
http://code.tutsplus.com/tutorials/debugging-android-apps-with-facebooks-stetho--cms-24205
class AppDumperPlugin implements DumperPlugin {
@Override
public String getName() {
return "my_plugin_name";
}
@Override
public void dump(DumperContext dumpContext) throws DumpException {
PrintStream writer = dumperContext.getStdout();
String commandName = (args.isEmpty()) ? "" : args.remove(0);
if (commandName.equals("test")) {
out.println("Hello, World!");
}
}
}
DUMPAPP - CRÉATION D'UN PLUGIN
DUMPAPP - CRÉATION D'UN PLUGIN
(ActivityProvider dans un graph de dépendance en debug)
@Singleton
public class ActivityProvider implements Application.ActivityLifecycleCallbacks {
private Activity currentActivity;
@Inject
public ActivityProvider(Application app) {
app.registerActivityLifecycleCallbacks(this);
}
public Activity getCurrentActivity() {
return currentActivity;
}
@Override
public void onActivityResumed(Activity activity) {
currentActivity = activity;
}
@Override
public void onActivityPaused(Activity activity) {
currentActivity = null;
}
}
DUMPAPP - CRÉATION D'UN PLUGIN
AppDumperPlugin.java
private void displayCurrentSessionData(PrintStream writer) {
Activity activity = activityProvider.getCurrentActivity();
if (activity instanceof SessionDetailsActivity) {
try {
// Un peu de réflection pour accéder au membre privé "session"
Field field = SessionDetailsActivity.class.getDeclaredField("session");
field.setAccessible(true);
Session session = (Session) field.get(activity);
writer.println(new GsonBuilder().setPrettyPrinting().create().toJson(session));
} catch (Exception e) {
writer.println(e.getMessage());
}
}
}
STETHO CONSOLE + RHINO
ET AUSSI
ADB + SHELL
# Ouvrir un deep link
adb shell am start -a android.intent.action.VIEW -d "scheme://app/deep/linking"
# Lister les services qui tournent actuellement sur l'appareil
adb shell dumpsys activity services
# Récupérer le chemin de l’apk d’une application installée
adb shell pm path app.package.name
# Supprimer les données de l'app
adb shell pm clean app.package.name
# Prendre un screenshot
adb shell screencap -p | perl -pe '''s/x0Dx0A/x0A/g''' > screen.png
# Coller le texte du clipboard de son ordi vers son appareil android
pbpaste | sed "s/%/%%/g" | sed "s/ /%s/g" | xargs adb shell input text
POSTMAN
https://www.getpostman.com/
LOCKITO
https://play.google.com/store/apps/details?id=fr.dvilleneuve.lockito
ACCESSIBILITY SCANNER
https://play.google.com/store/apps/details?id=com.google.android.apps.accessibility.auditor
VYSOR
http://www.vysor.io
EN CONCLUSION...
CHOISIR SELON VOS
BESOINS ET
PRÉFÉRENCES
https://twitter.com/Nilhcem
https://github.com/Nilhcem/devfestnantes-2016
http://www.slideshare.net/Nilhcem/the-2016-android-developer-toolbox-nantes
EOF

Weitere ähnliche Inhalte

Was ist angesagt?

Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
Droidcon Berlin
 
Android code puzzlers + tips & tricks
Android code puzzlers + tips & tricksAndroid code puzzlers + tips & tricks
Android code puzzlers + tips & tricks
NLJUG
 

Was ist angesagt? (20)

Matching Game In Java
Matching Game In JavaMatching Game In Java
Matching Game In Java
 
Advanced programming with #nodecopter
Advanced programming with #nodecopterAdvanced programming with #nodecopter
Advanced programming with #nodecopter
 
Drones, Flying robots and Javascript
Drones, Flying robots and JavascriptDrones, Flying robots and Javascript
Drones, Flying robots and Javascript
 
More android code puzzles
More android code puzzlesMore android code puzzles
More android code puzzles
 
package org dev
package org devpackage org dev
package org dev
 
Android programming -_pushing_the_limits
Android programming -_pushing_the_limitsAndroid programming -_pushing_the_limits
Android programming -_pushing_the_limits
 
Android Design Patterns
Android Design PatternsAndroid Design Patterns
Android Design Patterns
 
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
Паразитируем на React-экосистеме (Angular 4+) / Алексей Охрименко (IPONWEB)
 
Enhance your world with ARKit. UA Mobile 2017.
Enhance your world with ARKit. UA Mobile 2017.Enhance your world with ARKit. UA Mobile 2017.
Enhance your world with ARKit. UA Mobile 2017.
 
Android code puzzlers + tips & tricks
Android code puzzlers + tips & tricksAndroid code puzzlers + tips & tricks
Android code puzzlers + tips & tricks
 
Android TDD
Android TDDAndroid TDD
Android TDD
 
Google Fit, Android Wear & Xamarin
Google Fit, Android Wear & XamarinGoogle Fit, Android Wear & Xamarin
Google Fit, Android Wear & Xamarin
 
Android camera2
Android camera2Android camera2
Android camera2
 
303 TANSTAAFL: Using Open Source iPhone UI Code
303 TANSTAAFL: Using Open Source iPhone UI Code303 TANSTAAFL: Using Open Source iPhone UI Code
303 TANSTAAFL: Using Open Source iPhone UI Code
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder Behind
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
mobl
moblmobl
mobl
 
Capture image on eye blink
Capture image on eye blinkCapture image on eye blink
Capture image on eye blink
 
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
Architecture Patterns in Practice with Kotlin. UA Mobile 2017.
 

Andere mochten auch

Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
Mathias Seguy
 
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Mathias Seguy
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Mathias Seguy
 

Andere mochten auch (13)

Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
Animate Me! if you don't do it for me, do it for Chet - DroidconLondon2015
 
Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.Voyage en monde Android. Trucs et astuces tout au long de la route.
Voyage en monde Android. Trucs et astuces tout au long de la route.
 
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
Animate Me, if you don't do it for me do it for chet (DroidCon Paris)
 
Google Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification GoogleGoogle Plus SignIn : l'Authentification Google
Google Plus SignIn : l'Authentification Google
 
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
Eclispe daytoulouse combining the power of eclipse with android_fr_1024_768_s...
 
Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.Mise en place de l'ActionBarCompat dans vos projets Android.
Mise en place de l'ActionBarCompat dans vos projets Android.
 
Android2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projectsAndroid2EE training: Tutorials list of Android projects
Android2EE training: Tutorials list of Android projects
 
Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)Animate me, If you don't do it for me do it for Chet :)
Animate me, If you don't do it for me do it for Chet :)
 
Treatment, Architecture and Threads
Treatment, Architecture and ThreadsTreatment, Architecture and Threads
Treatment, Architecture and Threads
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part1
 
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
Architecture et Bonnes pratiques Android #DevoxxFr2016 Part2
 
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
Conférence "Architecture Android" du 19 Mars 2013 par Mathias Seguy fondateur...
 

Ähnlich wie The 2016 Android Developer Toolbox [NANTES]

Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
Yekmer Simsek
 
Introducing Applitude: Simple Module Management
Introducing Applitude: Simple Module ManagementIntroducing Applitude: Simple Module Management
Introducing Applitude: Simple Module Management
Eric Hamilton
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
Ben Lin
 
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
 	Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W... 	Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
Robert Nyman
 

Ähnlich wie The 2016 Android Developer Toolbox [NANTES] (20)

Arquitecturas de microservicios - Medianet Software
Arquitecturas de microservicios   -  Medianet SoftwareArquitecturas de microservicios   -  Medianet Software
Arquitecturas de microservicios - Medianet Software
 
Android Best Practices
Android Best PracticesAndroid Best Practices
Android Best Practices
 
Dropwizard and Friends
Dropwizard and FriendsDropwizard and Friends
Dropwizard and Friends
 
JCConf 2016 - Dataflow Workshop Labs
JCConf 2016 - Dataflow Workshop LabsJCConf 2016 - Dataflow Workshop Labs
JCConf 2016 - Dataflow Workshop Labs
 
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
DMCA #25: Jenkins - Docker & Android: Comment Docker peu faciliter la créatio...
 
Non Conventional Android Programming (English)
Non Conventional Android Programming (English)Non Conventional Android Programming (English)
Non Conventional Android Programming (English)
 
Non Conventional Android Programming En
Non Conventional Android Programming EnNon Conventional Android Programming En
Non Conventional Android Programming En
 
Rcp by example
Rcp by exampleRcp by example
Rcp by example
 
Introducing Applitude: Simple Module Management
Introducing Applitude: Simple Module ManagementIntroducing Applitude: Simple Module Management
Introducing Applitude: Simple Module Management
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
 
How and why i roll my own node.js framework
How and why i roll my own node.js frameworkHow and why i roll my own node.js framework
How and why i roll my own node.js framework
 
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
Amplify를 통해 클라우드 기반 모바일 앱 개발하기 - 박태성(IDEASAM) :: AWS Community Day 2020
 
How to build rock solid apps & keep 100m+ users happy
How to build rock solid apps & keep 100m+ users happyHow to build rock solid apps & keep 100m+ users happy
How to build rock solid apps & keep 100m+ users happy
 
Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!Async task, threads, pools, and executors oh my!
Async task, threads, pools, and executors oh my!
 
Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2
 
Running Django on Docker: a workflow and code
Running Django on Docker: a workflow and codeRunning Django on Docker: a workflow and code
Running Django on Docker: a workflow and code
 
My way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca editionMy way to clean android - Android day salamanca edition
My way to clean android - Android day salamanca edition
 
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
 	Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W... 	Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
Bringing the open web and APIs to mobile devices with Firefox OS - Whisky W...
 
Build Web Apps using Node.js
Build Web Apps using Node.jsBuild Web Apps using Node.js
Build Web Apps using Node.js
 
Django + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar DjangoDjango + Vue, JavaScript de 3ª generación para modernizar Django
Django + Vue, JavaScript de 3ª generación para modernizar Django
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

The 2016 Android Developer Toolbox [NANTES]