SlideShare ist ein Scribd-Unternehmen logo
1 von 55
Downloaden Sie, um offline zu lesen
Project
https://github.com/awonwon/gdgk-
databinding-sample
DataBinding
@GDG Kaohsiung
我是誰?
awonwon
25sprout Android
HITCON GIRLS
Android Studio 2.0 ^^?
What is Data Binding?
TextView
String show = "Hello"
DataBinding
Layout Activity
What is Data Binding?
Hello
TextView
String show = "Hello"
binding.set (show);
DataBinding
Layout Activity
What is Data Binding?
GGWP
TextView
Show="GGWP";
DataBinding
Layout Activity
Layout Activity
Binding With POJO
Name
TextView
DataBinding
Tel
TextView
Tel
TextView
User user = new User();
binding.set (user);
Clean Code
Zero Reflection
Official Library
MMVM
YEAH
main_layout
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/
android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
LinearLayout
{id}
{name}
{level}
{exp}
MainActivity
LinearLayout
{id}
{name}
{level}
{exp}
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5",
"2000");
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
MainActivity
LinearLayout
8591
LV.5
2000
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5","2000"
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
DataBinding
Build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.sprout.give"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
dataBinding {
enabled = true
}
}
DataBinding
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{id}
{name}
{level}
{exp}
Root View <Layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{id}
{name}
{level}
{exp}
& Import Class
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/view_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.id}"/>
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.name}"/>
< TextView …
</LinearLayout>
</layout>
main_layout
LinearLayout
{user.id}
{user.name}
{user.level}
{user.exp}
binding @{value}
MainActivity
LinearLayout
{user.id}
{user.name}
{user.level}
{user.exp}
public class MainAcivity extends AppCompatActivity{
private TextView idView, nameView, levelView, expView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
findViews();
User user = new User("8591", " ", "5", "2000");
idView.setText(user.id);
nameView.setText(user.name);
levelView.setText("LV." + user.level);
expView.setText(user.exp);
}
private void findViews(){
idView = (TextView) findViewById(R.id.view_id);
nameView = (TextView) findViewById(R.id.view_name);
levelView = (TextView) findViewById(R.id.view_level);
expView = (TextView) findViewById(R.id.view_exp);
}
}
LinearLayout
8591
LV.5
2000
MainActivity public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding =
DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
BindingClass & Value
findView
。:.゚ (*´∀`)ノ゚.:。
Layout
View
DataBinding
Class
Layout
Data Binding
BindingClass
BindinClass
tag
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{"Lv."+user.level}"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{"Lv."+user.level}"/>
"Lv." + user.level
=> LV.5
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
android:tag="binding_1"/>
DataBinding Class
intermediatesclassesdebug[package_name]databinding
Binding Layout
intermediatesdata-binding-layout-outdebuglayout
buildintermediates
<layout
xmlns:android="http://schemas.android.com/apk/res/android">
<data class="MainActivityDataBinding">
<import type="com.awonwon.User"/>
<variable
name="user"
type="user"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@{user.id}"/>
< …
</LinearLayout>
</layout>
Initialize variable
Set value
Layout
1. Initialize Variable
<data class="com.awonwon.MainActivityBinding">
<import type="com.awonwon.model.User" />
<import type="android.view.View" alias="v" />
<variable name="user" type="User" />
<variable name="datetime" type="String" />
<variable name="position" type="int" />
</data>
MainActivityBinding …
private com.awonwon.model.User mUser;
private String mDatetime;
private int mPotision;
private com.awonwon.model.User getUser();
private void setUser(com.awonwon.model.User user);
private String getDatetTime();
private void setDateTime(String datetime);
private int getPosition();
private void setPosition(int position);
2. Set Value Example
android:text="@{user.lastName}"
android:text="@{MyStringUtils.capitalize(user.firstName)}"
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"
android:padding="@{large? @dimen/largePadding :
(int)@dimen/smallPadding}"
Null Coalescing
android:text="@{user.displayName ?? user.lastName}"
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
• + - / * %
• +
• && || & | ^
• + - ! ~
• >> >>> <<
• == > < >= <=
• instanceof
• ()
• null
• Cast
•
• List Array Map
• ?:
※ XML encode : & = &amp;
<TextView android:text='@users.age > 18 ?
user.name.substring(0,1).toUpperCase() + "." +
user.lastName : @string/redacted'/>
BindAdapter
layout attribute
<ImageView
...
app:imageUrl="@{user.avatarUrl}
...
/>
BindAdapter
src field
@BindingAdapter(value = {"app:imageUrl"}, requireAll = true)
public static void loadImgUrl(ImageView view, String path){
Picasso.with(view.getContext())
.load(path)
.fit()
.centerCrop()
.into(view);
}
ID?
• static final MainActivityDataBinding
<TextView
android:id="@+id/view_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
public final TextView view_name;
JAVA Class
public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
}
DataBinding
public class MainAcivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
User user = new User("8591", " ", "5", "2000");
binding.setUser(user);
}
}
Create DataBinding Class
Set Variable Value
1. Create DataBinding Class
MainActivityDataBinding binding = DataBindingUtil.setContentView(
this, R.layout.main_layout);
ItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(c),
R.layout.item, parent, false);
2. Set Variable Value
binding.setUser(user);
binding.setVariable(BR.user, user);
…
Object Value
Observable Binding
1. BaseObservable & set method notifyPropertyChanged
public class User extends BaseObservable {
private String name;
@Bindable
public String getName() {
return name;
}
public void setLastName(String name) {
this.name = name;
notifyPropertyChanged(BR.name);
}
Observable Binding
2. ObservableField<T>
public final ObservableField<ItemAdapter> mItemAdapter = new ObservableField<>();
mItemAdapter.get().updateData(items);
mItemAdapter.set(adapter);
RecyclerAdapter
public class ItemViewHolder extends RecyclerView.ViewHolder {
private ItemBinding binding;
public ItemViewHolder(View itemView) {
super(itemView);
binding = DataBindingUtil.bind(itemView);
}
public ItemBinding getBinding(){
return binding;
}
public void setBinding(ItemBinding binding){
this.binding = binding;
}
}
RecyclerAdapter
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
GalleryItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(c),
R.layout.item_gallery, parent, false);
ItemViewHolder holder = new ItemViewHolder(binding.getRoot());
holder.setBinding(binding);
return holder;
}
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
holder.binding.setItem(mItems.get(position));
holder.binding.setPosition(position);
if (getItemViewType(position)==TYPE_SELECTED) {
holder.binding.setSelected(true);
}
holder.binding.executePendingBindings();
}
EditText
Two-Way Binding
Two-Way Binding
•Android Studio 2.1 Preview 3
<EditText android:text="@={user.name}" .../>
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0-alpha3'
}
https://halfthought.wordpress.com/2016/03/23/2-way-data-binding-on-android/
DataBinding
Clean Code
Zero Reflection
Official Library
MMVM
Clean Code
Zero Reflection
Official Library
MMVM
Performance
• findViewById V.S. DataBinding
• findViewById
View
• DataBinding
Compiler Timer
View
RootView
LinearLayout
ImageView
RelativeLayout
TextView
LinearLayout
TextView
ImageView
Q&A
DataBinding Google I/O
https://realm.io/news/data-binding-android-boyar-mount/

Weitere ähnliche Inhalte

Was ist angesagt?

Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
Spike Brehm
 

Was ist angesagt? (20)

Android in practice
Android in practiceAndroid in practice
Android in practice
 
AngularJS
AngularJSAngularJS
AngularJS
 
Angular js PPT
Angular js PPTAngular js PPT
Angular js PPT
 
Vaadin 7 CN
Vaadin 7 CNVaadin 7 CN
Vaadin 7 CN
 
Android best practices
Android best practicesAndroid best practices
Android best practices
 
Hastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San DiegoHastening React SSR - Web Performance San Diego
Hastening React SSR - Web Performance San Diego
 
Angular Project Report
 Angular Project Report Angular Project Report
Angular Project Report
 
Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
 
AspNetWhitePaper
AspNetWhitePaperAspNetWhitePaper
AspNetWhitePaper
 
Angular js
Angular jsAngular js
Angular js
 
Angular js 1.3 presentation for fed nov 2014
Angular js 1.3 presentation for fed   nov 2014Angular js 1.3 presentation for fed   nov 2014
Angular js 1.3 presentation for fed nov 2014
 
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle StudiosAngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
AngularJs Superheroic JavaScript MVW Framework Services by Miracle Studios
 
One Weekend With AngularJS
One Weekend With AngularJSOne Weekend With AngularJS
One Weekend With AngularJS
 
Introduction to AngularJS Framework
Introduction to AngularJS FrameworkIntroduction to AngularJS Framework
Introduction to AngularJS Framework
 
Android N Highligts
Android N HighligtsAndroid N Highligts
Android N Highligts
 
Getting your app ready for android n
Getting your app ready for android nGetting your app ready for android n
Getting your app ready for android n
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
06. Android Basic Widget and Container
06. Android Basic Widget and Container06. Android Basic Widget and Container
06. Android Basic Widget and Container
 
I/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in AndroidI/O Rewind 215: What's new in Android
I/O Rewind 215: What's new in Android
 

Andere mochten auch

7th pre alg -l69--april 30
7th pre alg -l69--april 307th pre alg -l69--april 30
7th pre alg -l69--april 30
jdurst65
 
8th alg -l6.1
8th alg -l6.18th alg -l6.1
8th alg -l6.1
jdurst65
 
Pinstripe Media Content Marketing
Pinstripe Media Content MarketingPinstripe Media Content Marketing
Pinstripe Media Content Marketing
Paul Gilbert
 
8th alg -l6.5
8th alg -l6.58th alg -l6.5
8th alg -l6.5
jdurst65
 
7th math c2 -l66
7th math c2 -l667th math c2 -l66
7th math c2 -l66
jdurst65
 
Nonverbal Learning Disability
Nonverbal Learning Disability Nonverbal Learning Disability
Nonverbal Learning Disability
4mirnikan
 

Andere mochten auch (17)

Latest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas stormsLatest news in usa - dozens dead in us christmas storms
Latest news in usa - dozens dead in us christmas storms
 
Villena1
Villena1Villena1
Villena1
 
7th pre alg -l69--april 30
7th pre alg -l69--april 307th pre alg -l69--april 30
7th pre alg -l69--april 30
 
8th alg -l6.1
8th alg -l6.18th alg -l6.1
8th alg -l6.1
 
Pinstripe Media Content Marketing
Pinstripe Media Content MarketingPinstripe Media Content Marketing
Pinstripe Media Content Marketing
 
8th alg -l6.5
8th alg -l6.58th alg -l6.5
8th alg -l6.5
 
7th math c2 -l66
7th math c2 -l667th math c2 -l66
7th math c2 -l66
 
Mouse tutorial
Mouse tutorialMouse tutorial
Mouse tutorial
 
PIXNET Page Views 1st solution
PIXNET Page Views 1st solutionPIXNET Page Views 1st solution
PIXNET Page Views 1st solution
 
Save the Date
Save the DateSave the Date
Save the Date
 
KAMERA 2nd solution
KAMERA 2nd solutionKAMERA 2nd solution
KAMERA 2nd solution
 
Nonverbal Learning Disability
Nonverbal Learning Disability Nonverbal Learning Disability
Nonverbal Learning Disability
 
Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education Leadership and implementing the Cloud in education
Leadership and implementing the Cloud in education
 
Story behind Successful Implementation of LAPA in Nepal
Story behind Successful Implementation of LAPA in NepalStory behind Successful Implementation of LAPA in Nepal
Story behind Successful Implementation of LAPA in Nepal
 
Good to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class BarGood to Great: How To Open a World Class Bar
Good to Great: How To Open a World Class Bar
 
Europe & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done ReviewEurope & Israel 3Q16 Deals Done Review
Europe & Israel 3Q16 Deals Done Review
 
Europe & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done ReviewEurope & Israel 4Q15 Deals Done Review
Europe & Israel 4Q15 Deals Done Review
 

Ähnlich wie Data binding 入門淺談

Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
Anton Narusberg
 
android layouts
android layoutsandroid layouts
android layouts
Deepa Rani
 

Ähnlich wie Data binding 入門淺談 (20)

How to use data binding in android
How to use data binding in androidHow to use data binding in android
How to use data binding in android
 
Fragments: Why, How, What For?
Fragments: Why, How, What For?Fragments: Why, How, What For?
Fragments: Why, How, What For?
 
Data Binding - Android by Harin Trivedi
Data Binding - Android by Harin TrivediData Binding - Android by Harin Trivedi
Data Binding - Android by Harin Trivedi
 
Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015 Android por onde começar? Mini Curso Erbase 2015
Android por onde começar? Mini Curso Erbase 2015
 
Chapter 5 - Layouts
Chapter 5 - LayoutsChapter 5 - Layouts
Chapter 5 - Layouts
 
Layouts in android
Layouts in androidLayouts in android
Layouts in android
 
Android app development basics
Android app development basicsAndroid app development basics
Android app development basics
 
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROIDMaterial Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
Material Design (The Technical Essentials) by Mohammad Aljobairi @AMMxDROID
 
Android Materials Design
Android Materials Design Android Materials Design
Android Materials Design
 
Infinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino KovacInfinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
Infinum Android Talks #16 - How to shoot your self in the foot by Dino Kovac
 
Layout
LayoutLayout
Layout
 
android layouts
android layoutsandroid layouts
android layouts
 
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...SE2016 Android Mikle Anokhin "Speed up application development with data bind...
SE2016 Android Mikle Anokhin "Speed up application development with data bind...
 
Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics Angular server side rendering - Strategies & Technics
Angular server side rendering - Strategies & Technics
 
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
Infinum Android Talks #14 - Data binding to the rescue... or not (?) by Krist...
 
Beginning Native Android Apps
Beginning Native Android AppsBeginning Native Android Apps
Beginning Native Android Apps
 
MVVM & Data Binding Library
MVVM & Data Binding Library MVVM & Data Binding Library
MVVM & Data Binding Library
 
Android Workshop
Android WorkshopAndroid Workshop
Android Workshop
 
1. shared pref
1. shared pref1. shared pref
1. shared pref
 
Support Design Library
Support Design LibrarySupport Design Library
Support Design Library
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Data binding 入門淺談