SlideShare a Scribd company logo
1 of 34
Download to read offline
Wulin Kungfu
   Fight for Ruby Enterprise problems
Background
!   FIFA World Cup 2010 in South Africa

!   BSS software managing the Broadcasting of the event
   !   TV and Radio orders
   !   Broadcasting instructions
   !   Temporal booking
   !   Spatial booking
   !   Finance
Problems
!   Extjs (everything is JavaScript)

!   Code duplication
    !   Controllers setup for the JSON
    !   JavaScript setup of the grid and screens

!   Heavy UI - Instability
We hope …
!   Lighter

!   Easier

!   DSL

!   Faster productivity
Birth of WulinMaster
WulinMaster
!   A Ruby on Rails based framework

!   For resolving enterprise problems

!   Developer friendly

!   Extensible
!   Application Interface
Tools and technologies
!   Based on:
    !   Ruby on Rails ( >= 3.1 )
    !   SlickGrid ( https://github.com/mleibman/SlickGrid )
    !   jQuery plugins (jQuery UI, BBQ …)



!   The Wulin plugins are Rails Engines.

!   Use JSON as communication format.
Architecture
                                   Your Application


                                                       WulinOAuth
WulinScreenController           WulinHomeController


WulinScreen        GridAction           GridBehavior   WulinPermit     Other
                                                                       Wulin
WulinGrid          GridColumn           GridRelation   WulinAudit      Plugins


WulinPanel                                GridStates
                   WulinMaster                         WulinExcel



   Ruby on Rails                        SlickGrid           jQuery Plugins
Create Your Guild
Wulin generator
       	

         	

	


                            rails g wulin_master:install	



create app/controllers/homepage_controller.rb   (menu configuration)
create config/initializers/wulin_master.rb
route root :to => 'homepage#index’
Build the menu
# app/controllers/homepage_controller.rb
Wulin Grid
!   Fundamental component

!   Remote data

!   Auto cell types

!   Association columns
Wulin Screen
!   Fundamental container

!   One/more grids/panels

!   Specific configurations for grids in it
Rails MVC                          Wulin MVC


Model                View          Model          grid            grid

                                                         Screen

                     both change


        Controller                         Controller       Auto generated




         Browser                            Browser
Build a screen and a grid
               rails g wulin_master:screen_and_grid blogger 	


                 name:string age:integer country:reference	

	

	

      create    db/migrate/20121115075159_create_bloggers.rb
      create    app/controllers/bloggers_controller.rb
      create    app/screens/blogger_screen.rb
      create    app/grids/blogger_grid.rb
      create    app/models/blogger.rb
      create    app/views/bloggers
      route    resources :bloggers
# app/grids/blogger_grid.rb




# app/screens/blogger_screen.rb
Your first house!
Furnish it
!   Grid Action

!   Grid Behavior

!   Grid Relation
Grid Action
!   A toolbar button

!   Active – respond to a user event

!   Implemented in JavaScript

!   Default actions are: Add, Edit, Delete

!   Plugins might provide default actions such as Export
   Excel, Audit, etc.
Grid Behavior
!   Passive Triggered by grid event

!   Implemented by JavaScript

!   Default behaviors
# app/assets/javascripts/actions/show_info.js
# app/assets/javascripts/behaviors/say_hello.js
Grid Relation
!   One screen, multiple grids

!   Interaction between grids

!   Default relations
# app/screens/bloggers_posts_screen.rb
Level up!
Crafting your own weapon
!   Rails Engine

!   Write your own components

!   Define your own actions / behaviors

!   Equip it
Open source
! http://github.com/ekohe/wulin_demo
! http://github/com/ekohe/wulin_master
!   http://wulin_demo.ekohe.com
Jimmy Huang (jimmy@ekohe.com)

            黄腾

          @pake007

More Related Content

What's hot

jQuery Conference 2012 keynote
jQuery Conference 2012 keynotejQuery Conference 2012 keynote
jQuery Conference 2012 keynote
dmethvin
 
jQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web PerformancejQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web Performance
dmethvin
 
jQuery Foundation Keynote
jQuery Foundation KeynotejQuery Foundation Keynote
jQuery Foundation Keynote
Richard Worth
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkit
Hristo Chakarov
 
Web, Native iOS and Native Android with One Ember.js App
Web, Native iOS and Native Android with One Ember.js AppWeb, Native iOS and Native Android with One Ember.js App
Web, Native iOS and Native Android with One Ember.js App
FITC
 

What's hot (20)

Going Node.js at Netflix
Going Node.js at NetflixGoing Node.js at Netflix
Going Node.js at Netflix
 
jQuery Mobile Overview - Boston
jQuery Mobile  Overview -  BostonjQuery Mobile  Overview -  Boston
jQuery Mobile Overview - Boston
 
The Onion
The OnionThe Onion
The Onion
 
jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010jQuery Keynote - Fall 2010
jQuery Keynote - Fall 2010
 
How to Use WebVR to Enhance the Web Experience
How to Use WebVR to Enhance the Web ExperienceHow to Use WebVR to Enhance the Web Experience
How to Use WebVR to Enhance the Web Experience
 
Smooth Animations for Web & Hybrid
Smooth Animations for Web & HybridSmooth Animations for Web & Hybrid
Smooth Animations for Web & Hybrid
 
JS Framework Comparison - An infographic
JS Framework Comparison - An infographicJS Framework Comparison - An infographic
JS Framework Comparison - An infographic
 
jQuery Conference 2012 keynote
jQuery Conference 2012 keynotejQuery Conference 2012 keynote
jQuery Conference 2012 keynote
 
jQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web PerformancejQuery Conference San Diego 2014 - Web Performance
jQuery Conference San Diego 2014 - Web Performance
 
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneJavascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
Javascript Frameworks Comparison - Angular, Knockout, Ember and Backbone
 
jQuery Foundation Keynote
jQuery Foundation KeynotejQuery Foundation Keynote
jQuery Foundation Keynote
 
Azure functions and container instances
Azure functions and container instancesAzure functions and container instances
Azure functions and container instances
 
Choosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkitChoosing the best JavaScript framework/library/toolkit
Choosing the best JavaScript framework/library/toolkit
 
AngularJS is awesome
AngularJS is awesomeAngularJS is awesome
AngularJS is awesome
 
Web, Native iOS and Native Android with One Ember.js App
Web, Native iOS and Native Android with One Ember.js AppWeb, Native iOS and Native Android with One Ember.js App
Web, Native iOS and Native Android with One Ember.js App
 
Sfk13
Sfk13Sfk13
Sfk13
 
Building Apps with React Native - Lessons Learned
Building Apps with React Native - Lessons LearnedBuilding Apps with React Native - Lessons Learned
Building Apps with React Native - Lessons Learned
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 
Introduction to SPA with AngularJS
Introduction to SPA with AngularJSIntroduction to SPA with AngularJS
Introduction to SPA with AngularJS
 
Node PDX: Intro to Sails.js
Node PDX: Intro to Sails.jsNode PDX: Intro to Sails.js
Node PDX: Intro to Sails.js
 

Similar to Wulin kungfu final

Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
Spike Brehm
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Future
elliando dias
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
Dmitry Buzdin
 
Flu3nt highlights
Flu3nt highlightsFlu3nt highlights
Flu3nt highlights
dswork
 
Why the web won't do
Why the web won't doWhy the web won't do
Why the web won't do
twh
 
Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Mak
mfrancis
 

Similar to Wulin kungfu final (20)

Integrating Browserify with Sprockets
Integrating Browserify with SprocketsIntegrating Browserify with Sprockets
Integrating Browserify with Sprockets
 
Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817Rails-3-app-auto-generator-20100817
Rails-3-app-auto-generator-20100817
 
Play Framework on Google App Engine
Play Framework on Google App EnginePlay Framework on Google App Engine
Play Framework on Google App Engine
 
Rails is Easy*
Rails is Easy*Rails is Easy*
Rails is Easy*
 
TorqueBox
TorqueBoxTorqueBox
TorqueBox
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Web Frameworks of the Future
Web Frameworks of the FutureWeb Frameworks of the Future
Web Frameworks of the Future
 
The Evolution of Airbnb's Frontend
The Evolution of Airbnb's FrontendThe Evolution of Airbnb's Frontend
The Evolution of Airbnb's Frontend
 
Web polyglot programming
Web polyglot programmingWeb polyglot programming
Web polyglot programming
 
Flu3nt highlights
Flu3nt highlightsFlu3nt highlights
Flu3nt highlights
 
Fake it 'til you make it
Fake it 'til you make itFake it 'til you make it
Fake it 'til you make it
 
Why the web won't do
Why the web won't doWhy the web won't do
Why the web won't do
 
Real World Lessons in jQuery Mobile
Real World Lessons in jQuery MobileReal World Lessons in jQuery Mobile
Real World Lessons in jQuery Mobile
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
Getting Started with Rails on GlassFish (Hands-on Lab) - Spark IT 2010
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
JSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic AppsJSConf US 2014: Building Isomorphic Apps
JSConf US 2014: Building Isomorphic Apps
 
Jaoo Michael Neale 09
Jaoo Michael Neale 09Jaoo Michael Neale 09
Jaoo Michael Neale 09
 
Modular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S MakModular JavaScript in an OSGi World - S Mak
Modular JavaScript in an OSGi World - S Mak
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Wulin kungfu final

  • 1. Wulin Kungfu Fight for Ruby Enterprise problems
  • 2. Background !   FIFA World Cup 2010 in South Africa !   BSS software managing the Broadcasting of the event !   TV and Radio orders !   Broadcasting instructions !   Temporal booking !   Spatial booking !   Finance
  • 3.
  • 4. Problems ! Extjs (everything is JavaScript) !   Code duplication !   Controllers setup for the JSON !   JavaScript setup of the grid and screens !   Heavy UI - Instability
  • 5. We hope … !   Lighter !   Easier !   DSL !   Faster productivity
  • 7. WulinMaster !   A Ruby on Rails based framework !   For resolving enterprise problems !   Developer friendly !   Extensible
  • 8. !   Application Interface
  • 9. Tools and technologies !   Based on: !   Ruby on Rails ( >= 3.1 ) ! SlickGrid ( https://github.com/mleibman/SlickGrid ) ! jQuery plugins (jQuery UI, BBQ …) !   The Wulin plugins are Rails Engines. !   Use JSON as communication format.
  • 10. Architecture Your Application WulinOAuth WulinScreenController WulinHomeController WulinScreen GridAction GridBehavior WulinPermit Other Wulin WulinGrid GridColumn GridRelation WulinAudit Plugins WulinPanel GridStates WulinMaster WulinExcel Ruby on Rails SlickGrid jQuery Plugins
  • 12. Wulin generator rails g wulin_master:install create app/controllers/homepage_controller.rb (menu configuration) create config/initializers/wulin_master.rb route root :to => 'homepage#index’
  • 13. Build the menu # app/controllers/homepage_controller.rb
  • 14.
  • 15. Wulin Grid !   Fundamental component !   Remote data !   Auto cell types !   Association columns
  • 16. Wulin Screen !   Fundamental container !   One/more grids/panels !   Specific configurations for grids in it
  • 17. Rails MVC Wulin MVC Model View Model grid grid Screen both change Controller Controller Auto generated Browser Browser
  • 18. Build a screen and a grid rails g wulin_master:screen_and_grid blogger name:string age:integer country:reference create db/migrate/20121115075159_create_bloggers.rb create app/controllers/bloggers_controller.rb create app/screens/blogger_screen.rb create app/grids/blogger_grid.rb create app/models/blogger.rb create app/views/bloggers route resources :bloggers
  • 20.
  • 22. Furnish it !   Grid Action !   Grid Behavior !   Grid Relation
  • 23. Grid Action !   A toolbar button !   Active – respond to a user event !   Implemented in JavaScript !   Default actions are: Add, Edit, Delete !   Plugins might provide default actions such as Export Excel, Audit, etc.
  • 24. Grid Behavior !   Passive Triggered by grid event !   Implemented by JavaScript !   Default behaviors
  • 25.
  • 28. Grid Relation !   One screen, multiple grids !   Interaction between grids !   Default relations
  • 30.
  • 32. Crafting your own weapon !   Rails Engine !   Write your own components !   Define your own actions / behaviors !   Equip it
  • 33. Open source ! http://github.com/ekohe/wulin_demo ! http://github/com/ekohe/wulin_master !   http://wulin_demo.ekohe.com
  • 34. Jimmy Huang (jimmy@ekohe.com) 黄腾 @pake007