Alcohol Harm Reduction Compared To Harm Reduction For Other Drugs
First Do No Harm - 360|AnDev
-
Upload
annyce-davis -
Category
Technology
-
view
278 -
download
1
Transcript of First Do No Harm - 360|AnDev
@brwngrldev
What’s Involved:• Major in Math/Science
• Take the MCAT
• Go to Medical School
• Take the USMLE Step 1
• Do Rotations
• Take the USMLE Step 2
• Complete Internship
• Do Residency
• Take the USMLE Step 3
• Take the Board Exams
• Do a Fellowship
@brwngrldev
@brwngrldev
@brwngrldev
How can I become
an Android
Developer?@brwngrldev
How can I become a
great Android
Developer?@brwngrldev
@brwngrldev
@brwngrldev
Newsletters
@brwngrldev
Podcasts
@brwngrldev
Online Courses• At your own pace
• All aspects of development
• Different perspectives
@brwngrldev
Online Courses - Udacity
@brwngrldev
Online Courses - Caster.IO
@brwngrldev
“…associate with
eagles, you will learn
how to soar…” - Ojo Michael E.
@brwngrldev
Conferences
• Hear from the Experts
• Grow your Network
• Learn new Techniques
@brwngrldev
Conferences
Open Source
• Countless Examples
• Learn by Doing
• Design Patterns in Action
@brwngrldev
Open Source
@brwngrldev
Open Source
@brwngrldev
Study• Newsletters
• Podcasts
• Online Courses
• Conferences
• Open Source@brwngrldev
@brwngrldev
@brwngrldev
Prevention
• Static Code Analysis
• Code Reviews
• Leak Canary
• Testing
@brwngrldev
Static Code Analysis
Lint
Checkstyle
FindBugs
PMD
@brwngrldev
Static Code Analysis
0
40
80
120
160
Checkstyle FindBugs PMD Error Prone Lint
@brwngrldev
Static Code Analysis - FindBugs
@brwngrldev
Static Code Analysis - FindBugs
@brwngrldev
Code Reviews
@brwngrldev
Code Reviews
@brwngrldev
Code Reviews
@brwngrldev
Code Reviews
Here’s my awesome code!! Cool, looks like line 54 could cause an NPE though.
@brwngrldev
Code Reviews
Here’s my awesome code!
Oh yeah, you’re right. Will fix!
! Cool, looks like line 54 could cause an NPE though.
@brwngrldev
Code Reviews
Here’s my awesome code!
Oh yeah, you’re right. Will fix!
Thanks for not `let`ting me forget that! 😂
! Cool, looks like line 54 could cause an NPE though.
Instead of an `if` here, a `let` would be better.
@brwngrldev
Code Reviews
@brwngrldev
Leak Canary
debugCompile “…:leakcanary-android:$leak” releaseCompile “…:leakcanary-android-no-op:$leak” testCompile “…:leakcanary-android-no-op:$leak”
@brwngrldev
Leak Canary
private BooksAdapter booksAdapter; @Bind(R.id.recyclerView) RecyclerView recyclerView; private static Toolbar toolbar; private BooksPresenter booksPresenter;
@brwngrldev
Leak Canary
@brwngrldev
Architecture
@brwngrldev
Architecture
Foo Foo Bar
Baz
@brwngrldev
MVP + Dagger
@brwngrldev
MVP + Dagger
@brwngrldev
EVENT BUS/RXJAVA
DATABASE
REPOSITORY
REPOSITORY
ACTIVITY
FRAGMENT
PRESENTER
PRESENTER
SERVICE
API Testing
API Testing - Postman
@brwngrldev
API Testing - Postman
1.Send Requests
2.Receive Response
3.Run Test Scripts
@brwngrldev
Sending Requests
@brwngrldev
API Response[ { "userId": 1, "id": 1, "title": "sunt aut facere repellat", "body": "quia et suscipit\nsuscipit recusandae" }, { "userId": 1, "id": 2, "title": "qui est esse", "body": "est rerum tempore vitae\nsequi sint" } ]
https://jsonplaceholder.typicode.com@brwngrldev
Test - Status Code
tests["Status code is 200"] = responseCode.code === 200;
@brwngrldev
Test - Schema
var schema = { "type": [“array”, “null”] };
var jsonData = JSON.parse(responseBody);
tests["Valid Schema"] = tv4.validate(jsonData, schema);
@brwngrldev
IT GETS
BETTER@brwngrldev
Test - Schema
@brwngrldev
{ "userId": 1, "id": 1, "title": "sunt aut facere repellat provident", "body": "quia et suscipit\nsuscipit recusandae" }
Test - Schema
var postSchema = { "type" : "object", "properties" : { "userId": { "type" : "integer" }, "id": { "type" : "integer" }, "title": { "type" : "string" }, "body" : { "type" : "string" } }};
@brwngrldev
API Testing
@brwngrldev
Set Up Monitors
@brwngrldev
Prevention
• Static Code Analysis
• Code Reviews
• Leak Canary
• Testing
@brwngrldev
@brwngrldev
74 year oldstomach pain
34 year oldstomach pain
@brwngrldev
@brwngrldev
@brwngrldev
@brwngrldev
LET’S
SHARE@brwngrldev
Code Outside
InsideEmulator
CODE
@brwngrldev
@Overridepublic void onFailure(Call<Book> call, Throwable t) { bus.post(new BookLoadingErrorEvent(id));
Timber.e(t, "Unable to load the book data from API.");}
Write Logs
@brwngrldev
Logcat/Pidcat
@brwngrldev
@brwngrldev
Log Events
public void trackEvent(String event) { analytics.track(event);
if (Fabric.isInitialized()) { Crashlytics.log(event); }}
@brwngrldev
Crashlytics
@brwngrldev
OUTSIDE
@brwngrldev
Crashlytics
@brwngrldev
Crashlytics
@brwngrldev
Classy Shark
@brwngrldev
Classy Shark
@brwngrldev
Battery Historian
@brwngrldev
Battery Historian
@brwngrldev
Battery Historian
@brwngrldev
@brwngrldev
Systrace
@brwngrldev
Systrace
Alerts Pane
@brwngrldev
Systrace
Alert Detail
@brwngrldev
INSIDE
@brwngrldev
Apk Analyzer
@brwngrldev
Android Profiler
@brwngrldev
Android Profiler: Memory
@brwngrldev
Android Profiler: CPU
@brwngrldev
@brwngrldev
Android Profiler: Network
@brwngrldev
EMULATOR
@brwngrldev
Android Options:
GPU Overdraw
blue -> green -> light red -> dark red
(1x) (4x or more)
@brwngrldev
Android Options:
GPU Overdraw
@brwngrldev
blue -> green -> light red -> dark red
(1x) (4x or more)
Android Options:
Profile GPU Rendering
16 milliseconds
@brwngrldev
Android Options:
Profile GPU Rendering
https://developer.android.com/studio/profile/dev-options-rendering.html@brwngrldev
@brwngrldev
@brwngrldev
Resources• http://www.kotlinweekly.net - Kotlin Weekly
• http://androidweekly.net - Android Weekly
• https://www.androiddevdigest.com - Android Dev Digest
• http://www.adavis.info/2015/07/android-devs-listen-up.html - Podcasts
• https://www.udacity.com - Udacity
• https://caster.io - Caster.IO
• http://androidstudygroup.github.io/conferences - Android Conferences
Resources• http://findbugs.sourceforge.net - FindBugs
• https://github.com/square/leakcanary - Leak Canary
• https://www.getpostman.com - Postman
• https://github.com/JakeWharton/timber - Timber
• https://github.com/JakeWharton/pidcat - Pidcat
• https://fabric.io/kits/android/crashlytics - Crashlytics
• https://www.lynda.com/trial/AnnyceDavis - Lynda.com
Resources
• https://github.com/google/android-classyshark - ClassyShark
• https://github.com/google/battery-historian - Battery Historian
• https://developer.android.com/studio/profile/systrace.html - Systrace
• https://developer.android.com/studio/build/apk-analyzer.html - APK Analyzer
• http://www.adavis.info/2015/03/android-overdraw-what-is-it-and-why.html - Overdraw
• https://developer.android.com/studio/profile/dev-options-rendering.html - GPU Rendering