rails standalone rails como aplicação desktop por fabio akita - 2007 surgeworks brazil rails...

69
Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager

Upload: internet

Post on 17-Apr-2015

114 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Rails StandaloneRails StandaloneRails como aplicação desktop

por Fabio Akita - 2007Surgeworks Brazil Rails Practice Manager

Rails como aplicação desktop por Fabio Akita - 2007

Surgeworks Brazil Rails Practice Manager

Page 2: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Obs.Obs.

Software inacabado

Discussão de idéias e conceitos

Page 3: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Por quê?Por quê?

Força de Vendas

Suporte e manutenção

Coleta de Dados

Regiões sem cobertura

Quiosques

Page 4: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

RequerimentosRequerimentos

O usuário precisa trabalhar offline

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

Page 5: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Problema 1Offline

Problema 1Offline

Page 6: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Ruby2ExeRuby2Exe

Ruby em Tar

Tar com bootstrap

Page 7: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Ruby2ExeRuby2Exe

Problemas

Descompacta em dir. temporário

Não tem interface de cliente

Suporte genérico a Ruby (não a Rails)

Melhor para apps. menores

Page 8: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

JoyentJoyent

Page 9: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SlingshotSlingshot

Interface de Usuário (Mac e Win)

Encapsulamento de Apps. Ruby

Suporte a Rails (Mongrel)

Agora Open Source

Page 10: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 11: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

EstruturaEstrutura

Page 12: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

AplicaçãoAplicação

Page 13: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

MongrelMongrel

Page 14: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Embedded BrowserEmbedded Browser

Page 15: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

GUIGUI

Page 16: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SlingshotSlingshot

Page 17: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 18: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 19: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Problema 2AtualizaçãoProblema 2Atualização

Page 20: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Open SourceOpen Source

Page 21: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Open SourceOpen Source

Page 22: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SubversionSubversion

Page 23: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 24: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 25: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Problema 3SincronizaçãoProblema 3

Sincronização

Page 26: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age

Usuário 1

ID Name Age

Usuário 2

ID Name Age

Servidor

Page 27: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age

1 David 25

Usuário 1

ID Name Age

Usuário 2

ID Name Age

Servidor

Page 28: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age

1 David 25

Usuário 1

ID Name Age

1 Steve 55

Usuário 2

ID Name Age

Servidor

Page 29: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age

1 David 25

Usuário 1

ID Name Age

1 Steve 55

Usuário 2

ID Name Age

1 David 25

1 Steve 55

Servidor

Page 30: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age

1 David 25

Usuário 1

ID Name Age

1 Steve 55

Usuário 2

ID Name Age

1 David 25

1 Steve 55

Servidor

Page 31: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Google GearsGoogle Gears

Sincronização servidor-cliente

Não é replicação bi-direcional

Melhor para apps. tipo “Readers”

Melhor como “cache” offline

Page 32: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ProblemasProblemas

Primary Keys sequenciais

Rastreamento

Identificação

Comunicação

Transferência de dados

Page 33: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Alex MacCawAlex MacCaw

Page 34: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Acts As SyncableActs As Syncable

Primary Keys sequenciais

Rastreamento

Identificação

Comunicação

Transferência de dados

Page 35: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Primary KeysPrimary Keys

gem install uuidtools

>> UUID.timestamp_create().to_s

=> "7030ef1c-4c60-11dc-861f-0016cbcc6803"

Page 36: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

UUIDUUID

128-bits

1 trilhão de UUIDs / 1 nanoseg. por 10 bilhões de anos

RFC 4122 - (Version 4 - Random Numbers)

Risco de Duplicar: levar um meteorito na cabeça

Page 37: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ID Name Age7030ef1c-4c60-11dc-861f-

0016cbcc6803 David 25

Usuário 1

ID Name Age0886defc-4c61-11dc-861f-

0016cbcc6803 Steve 55

Usuário 2

ID Name Age7030ef1c-4c60-11dc-861f-

0016cbcc6803 David 250886defc-4c61-11dc-861f-

0016cbcc6803 Steve 55

Servidor

Page 38: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

RastreamentoRastreamento

Slingshot

Page 39: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

RastreamentoRastreamento

Page 40: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Polymorphic AssociationPolymorphic Association

Page 41: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Polymorphic AssociationPolymorphic Association

Page 42: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

Post

id post_id Comment

Comments

crud id type deleted_id

Syncs

Page 43: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 New Post

Post

id post_id Comment

Comments

crud id type deleted_id

create 1000 Post

Syncs

Page 44: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 New Post

Post

id post_id Comment

2000 1000 Hello World!

Comments

crud id type deleted_id

create 1000 Post

create 2000 Comment

Syncs

Page 45: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 New Post

Post

id post_id Comment

2000 1000 Hello World!

2010 1000 Hello Again!

Comments

crud id type deleted_id

create 1000 Post

create 2000 Comment

create 2010 Comment

Syncs

Page 46: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 Editing Title

Post

id post_id Comment

2000 1000 Hello World!

2010 1000 Hello Again!

Comments

crud id type deleted_id

create 1000 Post

create 2000 Comment

create 2010 Comment

update 1000 Post

Syncs

Page 47: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 Editing Title

Post

id post_id Comment

2010 1000 Hello Again!

Comments

crud id type deleted_id

create 1000 Post

create 2000 Comment

create 2010 Comment

update 1000 Post

destroy 2000 Comment 2000

Syncs

Page 48: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

id Title

1000 Editing Title

Post

id post_id Comment

2010 1000 Hello!

Comments

crud id type deleted_id

create 1000 Post

create 2000 Comment

create 2010 Comment

update 1000 Post

destroy 2000 Comment 2000

update 2010 Comment

Syncs

Page 49: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

IdentificaçãoIdentificação

Page 50: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

UserStampUserStamp

Page 51: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ComunicaçãoComunicação

Page 52: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ComunicaçãoComunicação

Page 53: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Transferência de Dados

Transferência de Dados

Page 54: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

ProcessoProcesso

Page 55: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

HandshakeHandshake

GET /syncs/handshake.yaml

Page 56: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

Page 57: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

POST /syncs/handshake.yaml?client_id=&challenge_response=

Page 58: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

POST /syncs/handshake.yaml?client_id=&challenge_response=

99/99/9999T99:99:99

Page 59: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

DownloadDownload

GET /syncs/handshake.yaml

session_idchallenge_key

POST /syncs/handshake.yaml?client_id=&challenge_response=

99/99/9999T99:99:99

POST /syncs/down.yaml&for_when=9999-99-99T99:99:99-99:99

Page 60: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

DownloadDownload

GET /syncs/handshake.yaml

session_idchallenge_key

POST /syncs/handshake.yaml?client_id=&challenge_response=

99/99/9999T99:99:99

POST /syncs/down.yaml&for_when=9999-99-99T99:99:99-99:99

<YAML::Object>

Page 61: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

UploadUpload

GET /syncs/handshake.yaml

session_idchallenge_key

POST /syncs/handshake.yaml?client_id=&challenge_response=

99/99/9999T99:99:99

POST /syncs/down.yaml&for_when=9999-99-99T99:99:99-99:99

<YAML::Object>POST /syncs/up.yaml?

syncs=<YAML::Object>

Page 62: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 63: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita
Page 64: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

RequerimentosRequerimentos

O usuário precisa trabalhar offline

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

Page 65: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SoluçãoSolução

O usuário precisa trabalhar offline

Joyent Slingshot

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

Page 66: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SoluçãoSolução

O usuário precisa trabalhar offline

Joyent Slingshot

A aplicação precisa ser atualizada

Subversion Client

Os dados precisam ser sincronizados

Page 67: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

SoluçãoSolução

O usuário precisa trabalhar offline

Joyent Slingshot

A aplicação precisa ser atualizada

Subversion Client

Os dados precisam ser sincronizados

Acts As Replica

Page 68: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Perguntas?Perguntas?www.akitaonrails.comwww.akitaonrails.com

code.google.com/p/actsasreplicacode.google.com/p/actsasreplica

Page 69: Rails Standalone Rails como aplicação desktop por Fabio Akita - 2007 Surgeworks Brazil Rails Practice Manager Rails como aplicação desktop por Fabio Akita

Obrigado!Obrigado!