Submit Search
Upload
OneRing @ OSCamp 2010
•
29 likes
•
2,354 views
Q
Qiangning Hong
Follow
在 OpenSourceCamp + CommunityOne Beijing 2010 (http://beijing2010.opensourcecamp.org/) 上的演讲
Read less
Read more
Technology
Report
Share
Report
Share
1 of 36
Download Now
Download to read offline
Recommended
New Design of OneRing
New Design of OneRing
Qiangning Hong
Python在豆瓣的应用
Python在豆瓣的应用
Qiangning Hong
RxSwift to Combine
RxSwift to Combine
Bo-Young Park
RxSwift to Combine
RxSwift to Combine
Bo-Young Park
Python高级编程(二)
Python高级编程(二)
Qiangning Hong
The State of JavaScript (2015)
The State of JavaScript (2015)
Domenic Denicola
Aplicações Assíncronas no Android com Coroutines e Jetpack
Aplicações Assíncronas no Android com Coroutines e Jetpack
Nelson Glauber Leal
Aplicações assíncronas no Android com Coroutines & Jetpack
Aplicações assíncronas no Android com Coroutines & Jetpack
Nelson Glauber Leal
More Related Content
What's hot
Practical PHP 5.3
Practical PHP 5.3
Nate Abele
Mastering Kotlin Standard Library
Mastering Kotlin Standard Library
Nelson Glauber Leal
Ruby meets Go
Ruby meets Go
NTT Communications Technology Development
Node Boot Camp
Node Boot Camp
Troy Miles
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Dmitry Soshnikov
Practical Testing of Ruby Core
Practical Testing of Ruby Core
Hiroshi SHIBATA
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
CocoaHeads France
An Introduction to Celery
An Introduction to Celery
Idan Gazit
Node.js - Best practices
Node.js - Best practices
Felix Geisendörfer
Cutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQuery
William Candillon
XQuery in the Cloud
XQuery in the Cloud
William Candillon
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Tsuyoshi Yamamoto
Django Celery - A distributed task queue
Django Celery - A distributed task queue
Alex Eftimie
Writing native bindings to node.js in C++
Writing native bindings to node.js in C++
nsm.nikhil
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & Celery
Mauro Rocco
Fast C++ Web Servers
Fast C++ Web Servers
Troy Miles
Django Celery
Django Celery
Mat Clayton
C#을 이용한 task 병렬화와 비동기 패턴
C#을 이용한 task 병렬화와 비동기 패턴
명신 김
Celery - A Distributed Task Queue
Celery - A Distributed Task Queue
Duy Do
Benchx: An XQuery benchmarking web application
Benchx: An XQuery benchmarking web application
Andy Bunce
What's hot
(20)
Practical PHP 5.3
Practical PHP 5.3
Mastering Kotlin Standard Library
Mastering Kotlin Standard Library
Ruby meets Go
Ruby meets Go
Node Boot Camp
Node Boot Camp
FalsyValues. Dmitry Soshnikov - ECMAScript 6
FalsyValues. Dmitry Soshnikov - ECMAScript 6
Practical Testing of Ruby Core
Practical Testing of Ruby Core
Talk KVO with rac by Philippe Converset
Talk KVO with rac by Philippe Converset
An Introduction to Celery
An Introduction to Celery
Node.js - Best practices
Node.js - Best practices
Cutting Edge Data Processing with PHP & XQuery
Cutting Edge Data Processing with PHP & XQuery
XQuery in the Cloud
XQuery in the Cloud
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Django Celery - A distributed task queue
Django Celery - A distributed task queue
Writing native bindings to node.js in C++
Writing native bindings to node.js in C++
Europython 2011 - Playing tasks with Django & Celery
Europython 2011 - Playing tasks with Django & Celery
Fast C++ Web Servers
Fast C++ Web Servers
Django Celery
Django Celery
C#을 이용한 task 병렬화와 비동기 패턴
C#을 이용한 task 병렬화와 비동기 패턴
Celery - A Distributed Task Queue
Celery - A Distributed Task Queue
Benchx: An XQuery benchmarking web application
Benchx: An XQuery benchmarking web application
Similar to OneRing @ OSCamp 2010
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
Matt Raible
huhu
huhu
Dung Trương
Hybrid Application Development for Maemo N900 Device using Qt Webkit - Discov...
Hybrid Application Development for Maemo N900 Device using Qt Webkit - Discov...
Raj Lal
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLal
Raj Lal
Cross Domain Web Mashups with JQuery and Google App Engine
Cross Domain Web Mashups with JQuery and Google App Engine
Andy McKay
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Matt Raible
Google Web Toolkit
Google Web Toolkit
Software Park Thailand
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Patrick Meenan
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Antônio Roberto Silva
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
Matt Raible
sMash at May NYPHP UG
sMash at May NYPHP UG
Project Zero
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
Sadaaki HIRAI
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
Shumpei Shiraishi
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Fabio Franzini
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 Apps
Marcos Caceres
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Geoffrey Fox
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Matt Raible
JavaScript on the server - Node.js
JavaScript on the server - Node.js
Rody Middelkoop
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
Christopher Judd
Similar to OneRing @ OSCamp 2010
(20)
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
huhu
huhu
Hybrid Application Development for Maemo N900 Device using Qt Webkit - Discov...
Hybrid Application Development for Maemo N900 Device using Qt Webkit - Discov...
Meego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLal
Cross Domain Web Mashups with JQuery and Google App Engine
Cross Domain Web Mashups with JQuery and Google App Engine
Front End Development for Back End Java Developers - Jfokus 2020
Front End Development for Back End Java Developers - Jfokus 2020
Google Web Toolkit
Google Web Toolkit
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Google I/O 2012 - Protecting your user experience while integrating 3rd party...
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
sMash at May NYPHP UG
sMash at May NYPHP UG
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Beyond HTML: Tools for Building Web 2.0 Apps
Beyond HTML: Tools for Building Web 2.0 Apps
CTS Conference Web 2.0 Tutorial Part 2
CTS Conference Web 2.0 Tutorial Part 2
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
JavaScript on the server - Node.js
JavaScript on the server - Node.js
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
Recently uploaded
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
DianaGray10
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
Precisely
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
Brian Pichman
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IES VE
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
Jamie (Taka) Wang
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
Jamie (Taka) Wang
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
dgelyza
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
D Cloud Solutions
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
UiPathCommunity
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
Christian Posta
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
Udaiappa Ramachandran
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
DianaGray10
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
DianaGray10
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Aijun Zhang
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
David Newbury
201610817 - edge part1
201610817 - edge part1
Jamie (Taka) Wang
20230104 - machine vision
20230104 - machine vision
Jamie (Taka) Wang
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
infogdgmi
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
SkyPlanner
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
shyamraj55
Recently uploaded
(20)
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
201610817 - edge part1
201610817 - edge part1
20230104 - machine vision
20230104 - machine vision
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
OneRing @ OSCamp 2010
1.
Web
OneRing One ring to rule them all, one ring to find them, One ring to bring them all and in the darkness bind them.
2.
OneRing OneRing HTML5+CSS3
Javascript web http://code.google.com/p/onering-desktop/ License: LGPL
3.
AIR / Silverlight
/ XUL Runner?
4.
Yes (
) HTML+CSS+JS
5.
No sandbox
6.
MFC / GTK+
/ Qt / wxWidgets?
7.
Yes Javascript API
8.
No Control Event
HTML+CSS+JS
9.
webOS / Chrome
OS?
10.
No
11.
demo
12.
OneRing? web
13.
Web HT
CSS JS ML HTTP
14.
:1 HT
CSS JS ML HTTP App Launcher
16.
:2
HT CSS JS ML HTTP (IE) App Launcher
17.
IE6 must DIE!
18.
:3
HT CSS JS Web ML Kit HTTP WebKit App Launcher
19.
API
20.
:4
HT CSS JS Web ML Kit HTTP onering.js WebKit App Launcher
21.
annoying
22.
:5
HT CSS JS Web ML Kit call function call back onering.js WebKit callback App Launcher
23.
class init:
def GET(self): web.header('Content-Type', 'application/json') return json.dumps({'width': 400, 'height': 300, 'url': '/'}) class index: def GET(self): web.header('Content-Type', 'text/html') return """<html> <head><script type="text/javascript" src="onering://onering/onering.js"></ script></head> <body> <p>Hello, world!</p> <button onclick="javascript:ONERING.exit()">Exit</button> </body></html>""" app = web.application(urls, globals()) if __name__ == '__main__': onering.register_wsgi_app("demo", app.wsgifunc()) onering.loop("demo")
24.
JavaScript onering.js
ajax/pubsub App OS Backend
25.
C API DLL
26.
C API typedef void
(*onering_app_func_t) ( const char* method, const char* path, const char* body, /*OUT*/ const char** response, int* response_len); int onering_register_app(const char* appname, onering_app_func_t app_func); int onering_loop(const char* appname);
27.
Python Binding register_wsgi_app(appname, wsgiapp) loop(appname)
28.
QtWebKit
29.
Dispatch Url To
App Backend GET onering://myapp/test ↓ (via NetworkAccessManager) app_func = registered_app_funcs.lookup("myapp"); app_func("GET", "/test", NULL, &response, &response_len);
30.
onering.js frame->addToJavaScriptWindowObject("_OneRing", jsapi) ONERING.Window.prototype.hide =
function() { return _OneRing.Window_hide(); }
31.
onering.js Is Served
By An OneRing App onering://onering/onering.js
32.
onering.js Is Served
By An OneRing App onering://onering/onering.js void onering_app(const char* method, const char* path, const char* body, const char **response, int *response_len) { if (strcmp(method, "GET") == 0 && strcmp(path, "/onering.js") == 0) { *response = onering_js.constData(); *response_len = onering_js.size(); } else { // TODO: 404 *response = ""; *response_len = 0; } }
33.
Native GUI
HTML5 Web OS RIA
34.
Native GUI
HTML5 Web OS RIA OneRing
35.
Join US C++ /
Qt / WebKit / Javascript / Python / Documenter / User / Tester / Code Reviewer http://code.google.com/p/onering-desktop/
36.
Thanks & Q
& A http://www.douban.com/people/hongqn/ hongqn@douban.com twitter: @hongqn
Download Now