SlideShare uma empresa Scribd logo
1 de 96
Baixar para ler offline
11
MVVM - IOS, ANDROID, XAMARIN
GUILHERME ENDRES
22
MVVM - IOS, ANDROID, XAMARIN
GUILHERME ENDRES
MVVM
!= !=
MVVM IOS
IOS | MVC
Model View Controller
IOS | MVC
Model View
View
Controller
Massive View Controller
IOS | MVC
M V V M
Model ViewModelView
View
Controller
IOS | MVVM
Model
Nome
Preço
Teor Alcoólico
Marca
IOS | MODEL
Model ViewModelView
View
Controller
IOS | MVVM
ViewModel
BANCO DE DADOS
VALIDAÇÃO DE DADOS
MANIPULAÇÃO DE MODELOS
IOS | VIEW MODEL
Model ViewModelView
View
Controller
IOS | MVVM
ViewModel
View
Controller
4.5%
R$ 5,00
TDCBeer
Pale Ale
Model
swift
var beerView = BeerView( beerViewModel )
var beerView = BeerView( beerViewModel )
var beerViewController = BeerViewController()
beerViewController.beerView = beerView
var beerViewController = BeerViewController( beerViewModel)
Model ViewModelView
View
Controller
IOS | MVVM
ViewModel
View
Controller
beerViewModel.quantity = 5
imageView.image = beerViewModel.image
beerViewModel.quantity = textField.text
beerViewModel.image { image in
imageView.image = image
}
IOS | COMUNICAÇÃO
DELEGATE
KVO
BINDING
THIRD PARTY
beerViewModel.addObserver(self,
forKeyPath: "userImage",
options: .New,
context: &imageContext)
BINDING | KVO
beerViewModel.addObserver(self,
forKeyPath: "userImage",
options: .New,
context: &imageContext)
deinit {
beerViewModel.removeObserver(self, forKeyPath: "userImage")
}
BINDING | KVO
override func observeValueForKeyPath(keyPath: String,
ofObject object: AnyObject,
change: [NSObject: AnyObject],
context: UnsafeMutablePointer<Void>) {
if context == &imageContext {
self.imageView.image= change[NSKeyValueChangeNewKey]
}
}
BINDING | KVO
override func observeValueForKeyPath(keyPath: String,
ofObject object: AnyObject,
change: [NSObject: AnyObject],
context: UnsafeMutablePointer<Void>) {
if context == &imageContext {
self.imageView.image= change[NSKeyValueChangeNewKey]
} else if context == &quantityContext {
self.textField.text = change[NSKeyValueChangeNewKey]
}
}
BINDING | KVO
override func observeValueForKeyPath(keyPath: String,
ofObject object: AnyObject,
change: [NSObject: AnyObject],
context: UnsafeMutablePointer<Void>) {
if context == &imageContext {
self.imageView.image= change[NSKeyValueChangeNewKey]
} else if context == &quantityContext {
self.textField.text = change[NSKeyValueChangeNewKey]
}
}
BINDING | KVO
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
else if context == &context {
self.variable = change[NSKeyValueChangeNewKey]
}
DELEGATE
KVO
BINDING
THIRD PARTY
protocol BeerViewModelDelegate {
func viewModelDidUpdate()
}
BINDING | DELEGATE
protocol BeerViewModelDelegate {
func viewModelDidUpdate()
}
class BeerViewModel {
var delegate: BeerViewModelDelegate?
//Quando atualizar
delegate!.viewModelDidUpdate()
}
BINDING | DELEGATE
class ViewController {
beerViewModel.delegate = self
func viewModelDidUpdate() {
imageView.image = beerViewModel.userImage
}
}
BINDING | DELEGATE
DELEGATE
KVO
BINDING
THIRD PARTY
Swift
ReactiveCocoa4
BINDING | THIRD PARTY
<~<~
errorLabel.rac_text <~ userViewModel.errorMessage
errorLabel.rac_hidden <~ userViewModel.usernameCorrect
UserViewController
errorLabel.rac_text <~ userViewModel.errorMessage
errorLabel.rac_hidden <~ userViewModel.usernameCorrect
enterButton.rac_hidden <~ userViewModel.hiddenButton
UserViewController
imageView.image <~ beerViewModel
.userImage
BeerViewController
UNIT TEST
let userViewModel: UserViewModel = UserViewModel()
IOS | UNIT TEST
let userViewModel: UserViewModel = UserViewModel()
userViewModel.username.value = "Skywalker"
IOS | UNIT TEST
let userViewModel: UserViewModel = UserViewModel()
userViewModel.username.value = "Skywalker"
userViewModel.saveUser().on(
completed: {
// success
}, failed: { error in
// fail
}).start()
IOS | UNIT TEST
userViewModel.saveUser().on(
completed: {
// success
}, failed: { error in
// fail
}).start()
IOS | UNIT TEST
userViewModel.username.value = "Darth Vader"
userViewModel.saveUser().on(
completed: {
// fail
}, failed: { error in
// success
}).start()
IOS | UNIT TEST
MVVM ANDROID
MVVM?
MVVM Data Binding!
MVVM Data Binding!
Android?
MVVM Data Binding!
Android?
SIM!
ANDROID DATA BINDING LIBRARY
ATIVANDO DATA BINDING
android {

....

dataBinding {

enabled = true

}

}
ANTES…
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true" />
EditText beerCountEditText = (EditText)findViewById(R.id.beer_count_edit_text);

beerCountEditText.setText(beerViewModel.getBeerCount());
USANDO DATA BINDING LIBRARY
<data>

<variable

name="beerViewModel"

type="com.arctouch.beerbind.beer.BeerCountViewModel" />

</data>
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true" />
USANDO DATA BINDING LIBRARY
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true"
android:text="@{beerViewModel.beerCountText}" />
<data>

<variable

name="beerViewModel"

type="com.arctouch.beerbind.beer.BeerCountViewModel" />

</data>
TWO-WAY BINDING
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true"
android:text="@{beerViewModel.beerCountText}" />
<data>

<variable

name="beerViewModel"

type="com.arctouch.beerbind.beer.BeerCountViewModel" />

</data>
TWO-WAY BINDING
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true"
android:text="@{beerViewModel.beerCountText}"
app:addTextChangedListener="@{beerViewModel.beerCountTextWatcher}" />
<data>

<variable

name="beerViewModel"

type="com.arctouch.beerbind.beer.BeerCountViewModel" />

</data>
TWO-WAY BINDING
<EditText

android:id="@+id/beer_count_edit_text"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="end"

android:inputType="numberDecimal"

android:singleLine="true"
android:text="@{beerViewModel.beerCountText}"
app:addTextChangedListener="@{beerViewModel.beerCountTextWatcher}" />
public TextWatcher getBeerCountTextWatcher() {

return new TextWatcher() { 

@Override

public void afterTextChanged(Editable s) {

setBeerCount(Integer.parseInt(s.toString()));

}

};

}
ACTIVITY
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

ActivityBeerBinding binding = 

DataBindingUtil.setContentView(this, R.layout.activity_beer);


BeerCountViewModel beerViewModel = 

new BeerCountViewModel(new BeerCountModel());

binding.setBeerViewModel(beerViewModel);

}
ACTIVITY
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

ActivityBeerBinding binding = 

DataBindingUtil.setContentView(this, R.layout.activity_beer);


BeerCountViewModel beerViewModel = 

new BeerCountViewModel(new BeerCountModel());

binding.setBeerViewModel(beerViewModel);

}
FRAGMENT
@Override

public View onCreateView(…){


ActivityBeerBinding binding =

DataBindingUtil.inflate(inflater, R.layout.activity_beer,
container, false);


BeerCountViewModel viewModel =

new BeerCountViewModel(new BeerCountModel());


binding.setBeerViewModel(viewModel);

return binding.getRoot();

}
FRAGMENT
@Override

public View onCreateView(…){


ActivityBeerBinding binding =

DataBindingUtil.inflate(inflater, R.layout.activity_beer,
container, false);


BeerCountViewModel viewModel =

new BeerCountViewModel(new BeerCountModel());


binding.setBeerViewModel(viewModel);

return binding.getRoot();

}
VIEW MODEL
public class BeerCountViewModel extends BaseObservable {



private int beerCount;



@Bindable

public int getBeerCount() {

return beerCount;

}



public void setBeerCount(int beerCount) {

this.beerCountModel.setBeerCount(beerCount);

notifyPropertyChanged(BR.beerCount);

}



}
VIEW MODEL
extends BaseObservable {

t beerCount) {

BeerCount(beerCount);

R.beerCount);

• Classe base
• Implementa a interface
Observable
• Usado pra notificar a
mudanças para a view
VIEW MODEL
public class BeerCountViewModel extends BaseObservable {



private int beerCount;



@Bindable

public int getBeerCount() {

return beerCount;

}



public void setBeerCount(int beerCount) {

this.beerCountModel.setBeerCount(beerCount);

notifyPropertyChanged(BR.beerCount);

}



}
VIEW MODEL
ublic class BeerCountViewModel extends BaseObservable {

private int beerCount;

@Bindable

public int getBeerCount() {

return beerCount;

}

public void setBeerCount(int beerCount) {

this.beerCountModel.setBeerCount(beerCount);

notifyPropertyChanged(BR.beerCount);

}

VIEW MODEL
ublic class BeerCountViewModel extends BaseObservable {

private int beerCount;

@Bindable

public int getBeerCount() {

return beerCount;

}

public void setBeerCount(int beerCount) {

this.beerCountModel.setBeerCount(beerCount);

notifyPropertyChanged(BR.beerCount);

}

CUSTOM SETTER
@BindingAdapter("app:imageUrl")

public static void loadImage(ImageView imageView, String url) {

Glide.with(imageView.getContext())

.load(url)

.into(imageView);
}
<ImageView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginTop="@dimen/default_margin"

app:imageUrl="@{beerViewModel.imageUrl}" />
ANDROID DATA BINDING
• One-way binding:
• Two-way binding:
• Custom setters:
ANDROID DATA BINDING
• One-way binding:
• Two-way binding:
• Custom setters:
ANDROID DATA BINDING
• One-way binding:
• Two-way binding:
• Custom setters:
ANDROID DATA BINDING
• One-way binding:
• Two-way binding:
• Custom setters:
MVVM XAMARIN
No .NET desde 2008
XAMARIN | MVVM
VIEW (XAML)
VIEWMODEL
MODEL
Command BindingContext / Binding
Read/Update
INotifyPropertyChanged
BindableObject
using System;



namespace System.ComponentModel

{

public interface INotifyPropertyChanged

{

//

// Events

//

event PropertyChangedEventHandler PropertyChanged;

}

}
XAMARIN | Data Binding
XAMARIN | Data Binding
public abstract class BaseViewModel : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;



protected void OnPropertyChanged([CallerMemberName] string propertyName = null)

{

PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

}

}

XAMARIN | Data Binding
private string errorMessage;

public string ErrorMessage

{

get { return this.errorMessage; }

set

{

this.errorMessage = value;

OnPropertyChanged();

}

}
XAMARIN | Data Binding - Genérico
protected bool SetPropertyAndNotify<T>(ref T storage, T value,
[CallerMemberName] string propertyName = null)

{

if (Equals(storage, value))

{

return false;

}



storage = value;

OnPropertyChanged(propertyName);

return true;

}

this.myField = value;
XAMARIN | Data Binding
private string errorMessage;

public string ErrorMessage

{

get { return this.errorMessage; }

set

{

this.errorMessage = value;

OnPropertyChanged();

}

}
XAMARIN | Data Binding
private string errorMessage;

public string ErrorMessage

{

get { return this.errorMessage; }

set { SetPropertyAndNotify(ref this.errorMessage, value); }

}

XAMARIN | Data Binding
<Label

Text="{Binding ErrorMessage}"

TextColor="White"

FontSize="17"

HorizontalTextAlignment="Center"

FontFamily="HelveticaNeue-CondensedBold"

HorizontalOptions="Center"

HeightRequest="20"/>
<ContentPage.BindingContext>

<custom:UserViewModel />

</ContentPage.BindingContext>
UserView.xaml
<StackLayout>
<Label Text="{Binding ErrorMessage}” />

<Entry Placeholder="Digite seu nome aqui"

Text="{Binding Username}"/>

<Button Text="ENTER"

Command="{Binding EnterCommand}”
IsVisible="{Binding IsUsernameValid}”/>
</StackLayout>
UserView.xaml
public class UserViewModel : BaseViewModel

public string Username

{

get { return this.username; }

set

{

SetPropertyAndNotify(ref this.username, value);

ValidateUsername();

}

}
UserViewModel
Apenas validação simples!



Sem longos processamentos e/ou
chamadas assíncronas.

Ex:. APIs ou banco de dados
<Slider Maximum=“20" Minimum="0"

Value="{Binding DrankBeersCount, Mode=TwoWay}"/>

BeerView.xaml
public int DrankBeersCount

{

get

{

return this.drankBeersCount;

}

set

{

SetPropertyAndNotify(ref this.drankBeersCount, value);

OnPropertyChanged(nameof(DrunkenPersonImage));

}

}



public string DrunkenPersonImage

{

get { return GetBeerImage(DrankBeersCount); }

}

BeerViewModel
COMPARAÇÃO MVVM
IOS/ANDROID/XAMARIN
Suporte MVVM | Comparação entre plataformas
Anunciado em 2015/Android M +
No .NET desde 2008
Delegate / KVO / ReactiveCocoa
iOS: https://github.com/gfendres/ractdc2016
Android: https://github.com/thiagocechetto/BeerBind
Xamarin: https://github.com/oberdanf/tdc2016mvvm
OBRIGADO.
Big Brains Wanted
Join our team! Go to arctouch.com/brjobs
guilherme.endres@arctouch.com

Mais conteúdo relacionado

Destaque

TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobiletdc-globalcode
 
Xamarin Hack Day - Sydney 2016 - Introduction to Xamarin
Xamarin Hack Day - Sydney 2016 - Introduction to XamarinXamarin Hack Day - Sydney 2016 - Introduction to Xamarin
Xamarin Hack Day - Sydney 2016 - Introduction to XamarinMichael Ridland
 
JXUGC #9 Xamarin.Forms Mvvm Teachathon
JXUGC #9 Xamarin.Forms Mvvm TeachathonJXUGC #9 Xamarin.Forms Mvvm Teachathon
JXUGC #9 Xamarin.Forms Mvvm TeachathonYoshito Tabuchi
 
Mobile development strategies with MVVM
Mobile development strategies with MVVMMobile development strategies with MVVM
Mobile development strategies with MVVMJames Montemagno
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3Dtdc-globalcode
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3Dtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startupstdc-globalcode
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Edlaine Zamora
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLtdc-globalcode
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startupstdc-globalcode
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Jstdc-globalcode
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarialtdc-globalcode
 

Destaque (20)

TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Xamarin Hack Day - Sydney 2016 - Introduction to Xamarin
Xamarin Hack Day - Sydney 2016 - Introduction to XamarinXamarin Hack Day - Sydney 2016 - Introduction to Xamarin
Xamarin Hack Day - Sydney 2016 - Introduction to Xamarin
 
JXUGC #9 Xamarin.Forms Mvvm Teachathon
JXUGC #9 Xamarin.Forms Mvvm TeachathonJXUGC #9 Xamarin.Forms Mvvm Teachathon
JXUGC #9 Xamarin.Forms Mvvm Teachathon
 
Swift
SwiftSwift
Swift
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Mobile development strategies with MVVM
Mobile development strategies with MVVMMobile development strategies with MVVM
Mobile development strategies with MVVM
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3D
 
TDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3DTDC2016SP - Trilha Impressão 3D
TDC2016SP - Trilha Impressão 3D
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
Tomada de Decisão baseada em testes de carga - The Developer`s Conference Sã...
 
TDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQLTDC2016SP - Trilha NoSQL
TDC2016SP - Trilha NoSQL
 
TDC2016SP - Trilha Startups
TDC2016SP - Trilha StartupsTDC2016SP - Trilha Startups
TDC2016SP - Trilha Startups
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
TDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.JsTDC2016SP - Trilha Node.Js
TDC2016SP - Trilha Node.Js
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarial
 

Semelhante a TDC2016SP - Trilha Mobile

Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanITCamp
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsJim Jeffers
 
Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Vladislav Ermolin
 
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!Backbone.js with React Views - Server Rendering, Virtual DOM, and More!
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!Ryan Roemer
 
CTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCCTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCBarry Gervin
 
AngularJS in 60ish Minutes
AngularJS in 60ish MinutesAngularJS in 60ish Minutes
AngularJS in 60ish MinutesDan Wahlin
 
7 Ways to improve your gradle build
7 Ways to improve your gradle build7 Ways to improve your gradle build
7 Ways to improve your gradle buildTania Pinheiro
 
[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM patternNAVER Engineering
 
Use case driven architecture
Use case driven architectureUse case driven architecture
Use case driven architectureBohdan Orlov
 
Mvvm + behaviors
Mvvm + behaviorsMvvm + behaviors
Mvvm + behaviorsbeginor
 
Controllers & actions
Controllers & actionsControllers & actions
Controllers & actionsEyal Vardi
 

Semelhante a TDC2016SP - Trilha Mobile (20)

The Rails Way
The Rails WayThe Rails Way
The Rails Way
 
Valentine with AngularJS
Valentine with AngularJSValentine with AngularJS
Valentine with AngularJS
 
Component Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex MoldovanComponent Based UI Architecture - Alex Moldovan
Component Based UI Architecture - Alex Moldovan
 
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
JavaCro'14 - Vaadin web application integration for Enterprise systems – Pete...
 
Building Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in RailsBuilding Mobile Friendly APIs in Rails
Building Mobile Friendly APIs in Rails
 
Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)Dialogs in Android MVVM (14.11.2019)
Dialogs in Android MVVM (14.11.2019)
 
MVVM Lights
MVVM LightsMVVM Lights
MVVM Lights
 
Intro Angular Ionic
Intro Angular Ionic Intro Angular Ionic
Intro Angular Ionic
 
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!Backbone.js with React Views - Server Rendering, Virtual DOM, and More!
Backbone.js with React Views - Server Rendering, Virtual DOM, and More!
 
MVVM-C vs MVP
MVVM-C vs MVPMVVM-C vs MVP
MVVM-C vs MVP
 
CTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCCTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVC
 
AngularJS in 60ish Minutes
AngularJS in 60ish MinutesAngularJS in 60ish Minutes
AngularJS in 60ish Minutes
 
From mvc to viper
From mvc to viperFrom mvc to viper
From mvc to viper
 
7 Ways to improve your gradle build
7 Ways to improve your gradle build7 Ways to improve your gradle build
7 Ways to improve your gradle build
 
[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern
 
Use case driven architecture
Use case driven architectureUse case driven architecture
Use case driven architecture
 
Mvvm + behaviors
Mvvm + behaviorsMvvm + behaviors
Mvvm + behaviors
 
Controllers & actions
Controllers & actionsControllers & actions
Controllers & actions
 
Web deploy
Web deployWeb deploy
Web deploy
 
Vue.js part1
Vue.js part1Vue.js part1
Vue.js part1
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxleah joy valeriano
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxlancelewisportillo
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Celine George
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxHumphrey A Beña
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxCarlos105
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptxmary850239
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptxmary850239
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Seán Kennedy
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYKayeClaireEstoconing
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management systemChristalin Nelson
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfJemuel Francisco
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...JojoEDelaCruz
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsManeerUddin
 

Último (20)

Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptxMusic 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
Music 9 - 4th quarter - Vocal Music of the Romantic Period.pptx
 
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptxQ4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
Q4-PPT-Music9_Lesson-1-Romantic-Opera.pptx
 
Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17Field Attribute Index Feature in Odoo 17
Field Attribute Index Feature in Odoo 17
 
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptxINTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
INTRODUCTION TO CATHOLIC CHRISTOLOGY.pptx
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptxBarangay Council for the Protection of Children (BCPC) Orientation.pptx
Barangay Council for the Protection of Children (BCPC) Orientation.pptx
 
4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx4.16.24 Poverty and Precarity--Desmond.pptx
4.16.24 Poverty and Precarity--Desmond.pptx
 
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptxFINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
FINALS_OF_LEFT_ON_C'N_EL_DORADO_2024.pptx
 
4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx4.18.24 Movement Legacies, Reflection, and Review.pptx
4.18.24 Movement Legacies, Reflection, and Review.pptx
 
Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...Student Profile Sample - We help schools to connect the data they have, with ...
Student Profile Sample - We help schools to connect the data they have, with ...
 
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptxLEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
LEFT_ON_C'N_ PRELIMS_EL_DORADO_2024.pptx
 
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITYISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
ISYU TUNGKOL SA SEKSWLADIDA (ISSUE ABOUT SEXUALITY
 
Concurrency Control in Database Management system
Concurrency Control in Database Management systemConcurrency Control in Database Management system
Concurrency Control in Database Management system
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdfGrade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
Grade 9 Quarter 4 Dll Grade 9 Quarter 4 DLL.pdf
 
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
ENG 5 Q4 WEEk 1 DAY 1 Restate sentences heard in one’s own words. Use appropr...
 
Food processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture honsFood processing presentation for bsc agriculture hons
Food processing presentation for bsc agriculture hons
 

TDC2016SP - Trilha Mobile