Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Desarrollando aplicaciones con Ubuntu One
Search
Roberto Alsina
June 04, 2012
Programming
2.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Desarrollando aplicaciones con Ubuntu One
Charla dada en UbuconLA el 3/6/2012
Roberto Alsina
June 04, 2012
More Decks by Roberto Alsina
See All by Roberto Alsina
Python en el browser
ralsina
0
110
Python 2 debe morir
ralsina
0
540
Programando Cross-Platform
ralsina
1
2.4k
Haciendo trampa: Trucos para programar menos
ralsina
1
2.3k
Hacer una cosa, pero hacerla bien
ralsina
1
1.4k
libreto.pdf
ralsina
0
110
Other Decks in Programming
See All in Programming
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.7k
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
450
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
Performance Optimization With LLMs
xleitix
0
200
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
190
HTML-in-Canvasで作る未来のWeb UI表現
clockmaker
5
5.3k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
460
phperだってパンチカードでコーディングしたい
o0h
PRO
0
400
ChromeでローカルLLM
ryu1013
0
160
Simple Storage Service(S3) is not simple
iwatsukayura
0
320
AI-Powered Domain-Driven Design
ziobrando
0
290
Featured
See All Featured
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
530
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
The Language of Interfaces
destraynor
162
27k
Into the Great Unknown - MozCon
thekraken
41
2.8k
ラッコキーワード サービス紹介資料
rakko
4
5.4M
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
First, design no harm
axbom
PRO
2
1.3k
Typedesign – Prime Four
hannesfritz
42
3.2k
How to train your dragon (web standard)
notwaldorf
96
6.9k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
460
Transcript
Desarrollando Aplicaciones con Ubuntu One Les Habla: Roberto Alsina Cualquier
cosa, interrumpan, no hay problema. 1
Qué es Ubuntu One • Servicio de storage online •
File sync • Music Store / Music Streaming • U1DB 2
Sync Client 3
APIs • Accounts • Files API • Music Streaming •
U1DB 4
Accounts • Ubuntu Desktop • Websites • Windows • Hagalo
usted mismo 5
Autorización en Ubuntu Usando ubuntuone.platform.credentials: @defer.inlineCallbacks def get_credentials(): tool =
CredentialsManagementTool() creds = yield tool.register() oauth_consumer = oauth2.Consumer( creds['consumer_key'], creds['consumer_secret']) oauth_token = oauth2.Token( creds['token'], creds['token_secret']) 6
Autorización en Django OAuth 1.0a. Usando django_oauth_client: @oauth_token_required('ubuntuone') def create_volume(request):
client = get_client(request.user, 'ubuntuone') response, content = client.request( 'https://one.ubuntu.com/api/file_storage/v1/volumes/~/Shoreham', 'PUT') return redirect('/accounts/profile/') 7
Hágalo Usted Mismo Bueno, es OAuth, fijáte. 8
Files • Volúmenes • Listar/Bajar/Subir/Borrar archivos • Publicar archivos •
Interacción con Sync 9
En Websites @oauth_token_required('ubuntuone') def create_volume(request): client = get_client(request.user, 'ubuntuone') response,
content = client.request( 'https://one.ubuntu.com/api/file_storage/v1/volumes/~/Shoreham', 'PUT') return redirect('/accounts/profile/') 10
En Ubuntu Es Via DBus: /folders method com.ubuntuone.SyncDaemon.Folders.create(path:s) 11
U1DB • Datos estructurados • Sincronizada • Distribuída • Online
y Offline 12
Plataformas • Ubuntu/Windows/OS X - Python - SQLite • Ubuntu
- Vala - SQLite • Ubuntu/Windows/OS X - C - SQLite • Web - javascript - localStorage • Android - Java - SQLite • iOS - Objective-C - SQLite 13
Documentos • create_doc • put_doc • revisiones • delete_doc •
get_doc / get_docs 14
Índices Es un poco más denso, vean el manual? OK!
15
Crear Índices {"firstname": "John", "surname", "Barnes", "position": "left wing"} ID
jb {"firstname": "Jan", "surname", "Molby", "position": "midfield"} ID jm {"firstname": "Alan", "surname", "Hansen", "position": "defence"} ID ah {"firstname": "John", "surname", "Wayne", "position": "filmstar"} ID jw create_index("by-firstname", ["firstname"]) 16
Usar el Índice get_from_index( "by-firstname", [("John", )]) Devuelve una lista
de IDs. 17
Más Ejemplos get_from_index("by_firstname", [("J*")]) get_from_index("by_firstname", [("Jan"), ("Alan")]) 18
Ejemplo import json, u1db db = u1db.open(":memory:", create=True) doc1 =
db.create_doc(json.dumps({"key": "value"}), doc_id="testdoc1") doc2 = db.create_doc(json.dumps({"key": "value"}), doc_id="testdoc2") for doc in db.get_docs(["testdoc2","testdoc1"]): print doc.doc_id Resultado: testdoc1 testdoc2 19
Syncing • API REST • Cliente / Servidor • Conflictos
20
Conflictos • Obtenés un ConflictedDoc • Pensás • Llamás a
resolve_doc 21
Imaginación 22
Preguntas y (Ojalá) Respuestas email:
[email protected]
twitter: @ralsina 23