SlideShare une entreprise Scribd logo
1  sur  96
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationnomboosow
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfsanyamsingh5019
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991RKavithamani
 
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...RKavithamani
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeThiyagu K
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpinRaunakKeshri1
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxmanuelaromero2013
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 

Dernier (20)

Interactive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communicationInteractive Powerpoint_How to Master effective communication
Interactive Powerpoint_How to Master effective communication
 
Sanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdfSanyam Choudhary Chemistry practical.pdf
Sanyam Choudhary Chemistry practical.pdf
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
Industrial Policy - 1948, 1956, 1973, 1977, 1980, 1991
 
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
Privatization and Disinvestment - Meaning, Objectives, Advantages and Disadva...
 
Measures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and ModeMeasures of Central Tendency: Mean, Median and Mode
Measures of Central Tendency: Mean, Median and Mode
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Student login on Anyboli platform.helpin
Student login on Anyboli platform.helpinStudent login on Anyboli platform.helpin
Student login on Anyboli platform.helpin
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
Mattingly "AI & Prompt Design: Structured Data, Assistants, & RAG"
 
How to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptxHow to Make a Pirate ship Primary Education.pptx
How to Make a Pirate ship Primary Education.pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 

TDC2016SP - Trilha Mobile