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

Post on 17-Apr-2015

114 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Obs.Obs.

Software inacabado

Discussão de idéias e conceitos

Por quê?Por quê?

Força de Vendas

Suporte e manutenção

Coleta de Dados

Regiões sem cobertura

Quiosques

RequerimentosRequerimentos

O usuário precisa trabalhar offline

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

Problema 1Offline

Problema 1Offline

Ruby2ExeRuby2Exe

Ruby em Tar

Tar com bootstrap

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

JoyentJoyent

SlingshotSlingshot

Interface de Usuário (Mac e Win)

Encapsulamento de Apps. Ruby

Suporte a Rails (Mongrel)

Agora Open Source

EstruturaEstrutura

AplicaçãoAplicação

MongrelMongrel

Embedded BrowserEmbedded Browser

GUIGUI

SlingshotSlingshot

Problema 2AtualizaçãoProblema 2Atualização

Open SourceOpen Source

Open SourceOpen Source

SubversionSubversion

Problema 3SincronizaçãoProblema 3

Sincronização

ID Name Age

Usuário 1

ID Name Age

Usuário 2

ID Name Age

Servidor

ID Name Age

1 David 25

Usuário 1

ID Name Age

Usuário 2

ID Name Age

Servidor

ID Name Age

1 David 25

Usuário 1

ID Name Age

1 Steve 55

Usuário 2

ID Name Age

Servidor

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

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

Google GearsGoogle Gears

Sincronização servidor-cliente

Não é replicação bi-direcional

Melhor para apps. tipo “Readers”

Melhor como “cache” offline

ProblemasProblemas

Primary Keys sequenciais

Rastreamento

Identificação

Comunicação

Transferência de dados

Alex MacCawAlex MacCaw

Acts As SyncableActs As Syncable

Primary Keys sequenciais

Rastreamento

Identificação

Comunicação

Transferência de dados

Primary KeysPrimary Keys

gem install uuidtools

>> UUID.timestamp_create().to_s

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

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

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

RastreamentoRastreamento

Slingshot

RastreamentoRastreamento

Polymorphic AssociationPolymorphic Association

Polymorphic AssociationPolymorphic Association

id Title

Post

id post_id Comment

Comments

crud id type deleted_id

Syncs

id Title

1000 New Post

Post

id post_id Comment

Comments

crud id type deleted_id

create 1000 Post

Syncs

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

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

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

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

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

IdentificaçãoIdentificação

UserStampUserStamp

ComunicaçãoComunicação

ComunicaçãoComunicação

Transferência de Dados

Transferência de Dados

ProcessoProcesso

HandshakeHandshake

GET /syncs/handshake.yaml

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

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

HandshakeHandshake

GET /syncs/handshake.yaml

session_idchallenge_key

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

99/99/9999T99:99:99

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

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>

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>

RequerimentosRequerimentos

O usuário precisa trabalhar offline

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

SoluçãoSolução

O usuário precisa trabalhar offline

Joyent Slingshot

A aplicação precisa ser atualizada

Os dados precisam ser sincronizados

SoluçãoSolução

O usuário precisa trabalhar offline

Joyent Slingshot

A aplicação precisa ser atualizada

Subversion Client

Os dados precisam ser sincronizados

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

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

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

Obrigado!Obrigado!

top related