SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Native code in Android
applications
My projects using NDK
Yumm
Low memory overhead for image decoding
Hudriks Math
cocos2d-x; cross-platform: iOS and Android
Secure Video Player
Critical DRM code; cross-platform code (iOS/Android/Linux/OS X/Windows);
high-performance
Overview
Your Java Application
Java code

/libs/armeabi/

Android Runtime
Core Libraries (Java)
JVM (Dalvik)

Libraries
OpenSL ES

SQLite

OpenGL

Linux Platform

Media
Android NDK

•

Documentation

•

Toolchain - ndk-build, gcc/clang, gdbserver, …

•

NDK framework headers

•

Build system
NDK frameworks
android-4 (1.6)
•

dl, zlib, math, log

•

OpenGL ES 1.x

android-14 (4.0)
android-5 (2.0)
•

OpenMAX

OpenGL ES 2.0

android-8 (2.2)
•

•

JNI Graphics - java Bitmaps on low level

android-9 (2.3)
•

EGL

•

OpenSL ES - audio library

•

Native Applications - native activity, etc

android-18 (4.3)
•

OpenGL ES 3.0
Compilation process
source

.c/.c++
.o
.o

objects
compiler

.o
.o
.o

shared library
linker

.so

static library
.a (archive)

.so
.o
.o
.o
Application structure
•

jni/ (source code)
•

Android.mk

•

[Application.mk]

•

module1/
•

•

Android.mk

libs/armeabi/libnative.so - compiled shared library
CPU specific
•

Application Binary Interface (ABI):
• armeabi - at least ARMv5TE
• armeabi-v7a - Thumb-2; VFP hardware FPU; NEON
• x86
• mips

•

Application.mk:
• APP_ABI := all
• APP_ABI := armeabi armeabi-v7a
Java Native Interface
JNI in C and C++
#include <jni.h>

C
struct JNINativeInterface {	
	 jclass
(*FindClass)(JNIEnv*, const char*);	
}	
typedef const struct JNINativeInterface* JNIEnv;	
!

JNIEnv* env;	
(*env)->FindClass(env, “classname”);
JNI in C and C++
C++
struct _JNIEnv {	
jclass FindClass(const char* name)	
{ return functions->FindClass(this, name); }	
}	

!

JNIEnv* env;	
env->FindClass(“classname”);
Mapping native functions
libnative.so

Java.class

- function_1()

- function_1()

- function_2()

- function_2()

- function_3()

- function_3()

- function_4()

- function_4()

- function_5()

- function_5()
Mapping native functions
.java
public native static int testNative(int a, int b);

.c
jint Java_com_example_jnibasics_NativeDemo_testNative(JNIEnv *env, jclass obj, jint a, jint b)

package name

javah
> javah com.example.jnibasics.NativeDemo
Mapping native functions
jint RegisterNatives(JNIEnv *env, jclass clazz, const
JNINativeMethod *methods, jint nMethods);
typedef struct {
char *name;
char *signature;
void *fnPtr;
} JNINativeMethod;

jint addVals(JNIEnv *env, jclass obj, jint a, jint b) {…}
Mapping native functions
static JNINativeMethod sMethods[] = {	
{"testNative", "(II)I", (void*)addVals}	
};

jint JNI_OnLoad(JavaVM* vm, void* reserved) {	
JNIEnv *env = NULL;	
jclass klass;	
	
if((*vm)->GetEnv(vm, (void**)&env, JNI_VERSION_1_6) != JNI_OK)	
return -1;	

!

klass = (*env)->FindClass(env, “com/example/jnibasics/NativeDemo”);	
 	
(*env)->RegisterNatives(env, klass, gMethods, 1);	

	

!

	

return JNI_VERSION_1_6;	
}
Loading .so from Java
	
	
	
	
	
	
	

static {	
static {	
	
System.loadLibrary("Dependency");	
	
System.loadLibrary("JNIBasics");	
	
System.loadLibrary("JNIBasics");	
}
}

JNIBasics

Dependency
Demo
References
jobject gObject = NULL;	
!
void function(JNIEnv* jobject obj) {	
	 gObject = (*env)->NewGlobalRef(env, obj);	
}	
!
void finish(JNIEnv* env) {	
	 (*env)->DeleteGlobalRef(env, gObject);	
}
Calling Java methods from
native
jclass clz = (*env)->FindClass(env, “com/example/jnibasics/NativeDemo");	

!
jmethodID method = (*env)->GetMethodID(env, clz, 	
	 	 "methodName", “(II)Ljava/lang/String;");	

!
jstring result = (*env)->CallObjectMethod(env, obj, method, 5, 6);
Accessing java strings
jstring jstr;	
const char* str;	
!

str = (*env)->GetStringUTFChars(env, jstr, NULL);	
!

...	
!

(*env)->ReleaseStringUTFChars(env, jstr, str);
Further reading
•

Attaching Java threads

•

Creating new Java objects from native code

•

Distinguish between virtual and non virtual methods

•

Exception handling

•

Accessing Java arrays
Using native code
Performance
•

Most applications don’t need native code!

•

Only for extensive calculations: games, rich media

•

Take advantage of NEON CPU instructions

•

Avoiding Java Garbage Collection
Cross-platform architecture
platform dependant
libraries
(network, UI, etc)

Application
(Java/UIKit)
platform independent
code
(no JNI)

external interface
(JNI/Objective-C)
Cross-platform examples

VLC
Security
1.
2.
3.
4.

Register as a developer (£60 per year)
Add device UUID to dev account
Generate Provisioning Profile
Sign APK with developer’s certificate

!

or Submit to Apple Store
or Jailbreak device

Binary is encrypted
Decryption is on OS level

Self-signed APK
or not-signed at all

Decompiled Objective C:

Decompiled Java:

class structures
assembly code

readable code
Demo

DISCLAIMER: For educational purposes only;
I’m not encouraging to hack somebody else’s applications;
Summary
•

Always obfuscate Java code!

•

Never save passwords, use session key or hash
instead

•

Never keep encryption keys in clear data in memory

•

Keep all critical code in native
Further protection

•

Hide non-public symbols from .so files

•

Strip debug information into separate files

•

Expose only high-level APIs to Java
Tips
•

Debugging native code is tricky
•
•

•

Linux or OSX as dev platform
Use ARM DS-5 Community Edition in Eclipse

Android fragmentation
•

separate .so files for different version
Questions?

Dmitry Matyukhin
dmitry@fancygames.net

Más contenido relacionado

La actualidad más candente

HexRaysCodeXplorer: make object-oriented RE easier
HexRaysCodeXplorer: make object-oriented RE easierHexRaysCodeXplorer: make object-oriented RE easier
HexRaysCodeXplorer: make object-oriented RE easierAlex Matrosov
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?Andrey Karpov
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
NDK Primer (Wearable DevCon 2014)
NDK Primer (Wearable DevCon 2014)NDK Primer (Wearable DevCon 2014)
NDK Primer (Wearable DevCon 2014)Ron Munitz
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Johnny Sung
 
Java Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassJava Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassCODE WHITE GmbH
 
C++ programming with jni
C++ programming with jniC++ programming with jni
C++ programming with jniPeter Hagemeyer
 
Tips and tricks for building high performance android apps using native code
Tips and tricks for building high performance android apps using native codeTips and tricks for building high performance android apps using native code
Tips and tricks for building high performance android apps using native codeKenneth Geisshirt
 
Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Kenneth Geisshirt
 
Understanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolUnderstanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolGabor Paller
 
The definitive guide to java agents
The definitive guide to java agentsThe definitive guide to java agents
The definitive guide to java agentsRafael Winterhalter
 
Inc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis TechniqueInc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis Technique남준 김
 
Building a java tracer
Building a java tracerBuilding a java tracer
Building a java tracerrahulrevo
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?Doug Hawkins
 

La actualidad más candente (20)

HexRaysCodeXplorer: make object-oriented RE easier
HexRaysCodeXplorer: make object-oriented RE easierHexRaysCodeXplorer: make object-oriented RE easier
HexRaysCodeXplorer: make object-oriented RE easier
 
Static code analysis: what? how? why?
Static code analysis: what? how? why?Static code analysis: what? how? why?
Static code analysis: what? how? why?
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
NDK Primer (Wearable DevCon 2014)
NDK Primer (Wearable DevCon 2014)NDK Primer (Wearable DevCon 2014)
NDK Primer (Wearable DevCon 2014)
 
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
Flutter 是什麼?用 Flutter 會省到時間嗎? @ GDG Devfest2020
 
core java
core javacore java
core java
 
Java 10, Java 11 and beyond
Java 10, Java 11 and beyondJava 10, Java 11 and beyond
Java 10, Java 11 and beyond
 
Java Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug ClassJava Deserialization Vulnerabilities - The Forgotten Bug Class
Java Deserialization Vulnerabilities - The Forgotten Bug Class
 
C++ programming with jni
C++ programming with jniC++ programming with jni
C++ programming with jni
 
Tips and tricks for building high performance android apps using native code
Tips and tricks for building high performance android apps using native codeTips and tricks for building high performance android apps using native code
Tips and tricks for building high performance android apps using native code
 
Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++Building High Performance Android Applications in Java and C++
Building High Performance Android Applications in Java and C++
 
Understanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer toolUnderstanding the Dalvik bytecode with the Dedexer tool
Understanding the Dalvik bytecode with the Dedexer tool
 
Fixing the Java Serialization Mess
Fixing the Java Serialization Mess Fixing the Java Serialization Mess
Fixing the Java Serialization Mess
 
The definitive guide to java agents
The definitive guide to java agentsThe definitive guide to java agents
The definitive guide to java agents
 
Inc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis TechniqueInc0gnito 2015 Android DEX Analysis Technique
Inc0gnito 2015 Android DEX Analysis Technique
 
Building a java tracer
Building a java tracerBuilding a java tracer
Building a java tracer
 
JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?JVM Mechanics: When Does the JVM JIT & Deoptimize?
JVM Mechanics: When Does the JVM JIT & Deoptimize?
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 
Java concurrency
Java concurrencyJava concurrency
Java concurrency
 
C++ Advanced Features
C++ Advanced FeaturesC++ Advanced Features
C++ Advanced Features
 

Destacado

Solidos cristalinos hcsc
Solidos cristalinos hcscSolidos cristalinos hcsc
Solidos cristalinos hcscTOMYRYAM2014
 
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...Academia de Ingeniería de México
 
Spsbe 18-04-15 - should i move my network folders to office 365
Spsbe   18-04-15 - should i move my network folders to office 365Spsbe   18-04-15 - should i move my network folders to office 365
Spsbe 18-04-15 - should i move my network folders to office 365BIWUG
 
1.1 memahami gelombang (b)
1.1 memahami gelombang (b)1.1 memahami gelombang (b)
1.1 memahami gelombang (b)Amb Jerome
 
Competencia Imperfecta
Competencia ImperfectaCompetencia Imperfecta
Competencia ImperfectaMiguel Altuve
 
Oracle - Simplificación y Administración de TI
Oracle - Simplificación y Administración de TIOracle - Simplificación y Administración de TI
Oracle - Simplificación y Administración de TIRefundation
 
Parish Leadership 2014: Insurance and Risk Management
Parish Leadership 2014: Insurance and Risk ManagementParish Leadership 2014: Insurance and Risk Management
Parish Leadership 2014: Insurance and Risk ManagementAnglican Diocese of Toronto
 
The 9 Criteria for Brand Essence (TM)
The 9 Criteria for Brand Essence (TM)The 9 Criteria for Brand Essence (TM)
The 9 Criteria for Brand Essence (TM)Kirk Phillips
 
Contrato ventas Marelli
Contrato ventas MarelliContrato ventas Marelli
Contrato ventas MarelliAmalia Pando
 
07-02-2013 eraikune-boma
07-02-2013 eraikune-boma07-02-2013 eraikune-boma
07-02-2013 eraikune-bomaEraikune
 
06 salida 23_03_2013
06 salida 23_03_201306 salida 23_03_2013
06 salida 23_03_2013chouffe
 
Rapport: Utprøving av iPad i alternative opplæringarenaer
Rapport: Utprøving av iPad i alternative opplæringarenaerRapport: Utprøving av iPad i alternative opplæringarenaer
Rapport: Utprøving av iPad i alternative opplæringarenaerFrode Kyrkjebø
 
The JOBS Act Implementation Update
The JOBS Act Implementation UpdateThe JOBS Act Implementation Update
The JOBS Act Implementation UpdateMarketNexus Media
 
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipment
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden EquipmentNew Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipment
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipmentindiamartsupplier
 

Destacado (20)

Madeleine H Vedel CV 2015
Madeleine H Vedel CV 2015Madeleine H Vedel CV 2015
Madeleine H Vedel CV 2015
 
Solidos cristalinos hcsc
Solidos cristalinos hcscSolidos cristalinos hcsc
Solidos cristalinos hcsc
 
SOLOPRENEUR
SOLOPRENEURSOLOPRENEUR
SOLOPRENEUR
 
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...
Industria Petroquímica Mexicana. Problemática, Diagnóstico y Propuestas de So...
 
Eso1128
Eso1128Eso1128
Eso1128
 
Spsbe 18-04-15 - should i move my network folders to office 365
Spsbe   18-04-15 - should i move my network folders to office 365Spsbe   18-04-15 - should i move my network folders to office 365
Spsbe 18-04-15 - should i move my network folders to office 365
 
1.1 memahami gelombang (b)
1.1 memahami gelombang (b)1.1 memahami gelombang (b)
1.1 memahami gelombang (b)
 
Competencia Imperfecta
Competencia ImperfectaCompetencia Imperfecta
Competencia Imperfecta
 
Oracle - Simplificación y Administración de TI
Oracle - Simplificación y Administración de TIOracle - Simplificación y Administración de TI
Oracle - Simplificación y Administración de TI
 
Parish Leadership 2014: Insurance and Risk Management
Parish Leadership 2014: Insurance and Risk ManagementParish Leadership 2014: Insurance and Risk Management
Parish Leadership 2014: Insurance and Risk Management
 
The 9 Criteria for Brand Essence (TM)
The 9 Criteria for Brand Essence (TM)The 9 Criteria for Brand Essence (TM)
The 9 Criteria for Brand Essence (TM)
 
Tca
TcaTca
Tca
 
Contrato ventas Marelli
Contrato ventas MarelliContrato ventas Marelli
Contrato ventas Marelli
 
07-02-2013 eraikune-boma
07-02-2013 eraikune-boma07-02-2013 eraikune-boma
07-02-2013 eraikune-boma
 
06 salida 23_03_2013
06 salida 23_03_201306 salida 23_03_2013
06 salida 23_03_2013
 
N20
N20N20
N20
 
Rapport: Utprøving av iPad i alternative opplæringarenaer
Rapport: Utprøving av iPad i alternative opplæringarenaerRapport: Utprøving av iPad i alternative opplæringarenaer
Rapport: Utprøving av iPad i alternative opplæringarenaer
 
The JOBS Act Implementation Update
The JOBS Act Implementation UpdateThe JOBS Act Implementation Update
The JOBS Act Implementation Update
 
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipment
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden EquipmentNew Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipment
New Age Cleaning Solutions, Kolkata, Cleaning Machine and Garden Equipment
 
Gramática del Curso 1 Inglés
Gramática del Curso 1 InglésGramática del Curso 1 Inglés
Gramática del Curso 1 Inglés
 

Similar a Native code in Android applications

Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)DroidConTLV
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Paris Android User Group
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Xavier Hallade
 
GOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter SlidesGOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter SlidesAlexandra Masterson
 
Visage Android Hands-on Lab (OSCON)
Visage Android Hands-on Lab (OSCON)Visage Android Hands-on Lab (OSCON)
Visage Android Hands-on Lab (OSCON)Stephen Chin
 
Introduction to the Android NDK
Introduction to the Android NDKIntroduction to the Android NDK
Introduction to the Android NDKBeMyApp
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Rittercatherinewall
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
Android OpenGL ES Game ImageGrabber Final Report
Android OpenGL ES Game ImageGrabber Final ReportAndroid OpenGL ES Game ImageGrabber Final Report
Android OpenGL ES Game ImageGrabber Final ReportJungsoo Nam
 
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugketan_patel25
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS偉格 高
 

Similar a Native code in Android applications (20)

Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014Using the android ndk - DroidCon Paris 2014
Using the android ndk - DroidCon Paris 2014
 
Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)Using the Android Native Development Kit (NDK)
Using the Android Native Development Kit (NDK)
 
GOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter SlidesGOTO Night with Charles Nutter Slides
GOTO Night with Charles Nutter Slides
 
Nodejs Intro Part One
Nodejs Intro Part OneNodejs Intro Part One
Nodejs Intro Part One
 
Visage Android Hands-on Lab (OSCON)
Visage Android Hands-on Lab (OSCON)Visage Android Hands-on Lab (OSCON)
Visage Android Hands-on Lab (OSCON)
 
Js tacktalk team dev js testing performance
Js tacktalk team dev js testing performanceJs tacktalk team dev js testing performance
Js tacktalk team dev js testing performance
 
Introduction to the Android NDK
Introduction to the Android NDKIntroduction to the Android NDK
Introduction to the Android NDK
 
Gradle
GradleGradle
Gradle
 
Java Future S Ritter
Java Future S RitterJava Future S Ritter
Java Future S Ritter
 
Nodejs
NodejsNodejs
Nodejs
 
NodeJS
NodeJSNodeJS
NodeJS
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Android OpenGL ES Game ImageGrabber Final Report
Android OpenGL ES Game ImageGrabber Final ReportAndroid OpenGL ES Game ImageGrabber Final Report
Android OpenGL ES Game ImageGrabber Final Report
 
Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3Nodejs - A-quick-tour-v3
Nodejs - A-quick-tour-v3
 
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtugVk.amberfog.com gtug part1_introduction2_javaandroid_gtug
Vk.amberfog.com gtug part1_introduction2_javaandroid_gtug
 
Getting Native with NDK
Getting Native with NDKGetting Native with NDK
Getting Native with NDK
 
Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)Nodejs - A quick tour (v6)
Nodejs - A quick tour (v6)
 
Future of NodeJS
Future of NodeJSFuture of NodeJS
Future of NodeJS
 
Module, AMD, RequireJS
Module, AMD, RequireJSModule, AMD, RequireJS
Module, AMD, RequireJS
 

Último

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Último (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Native code in Android applications