SlideShare a Scribd company logo
Introducing Waves
A Ruby Framework
For Resource-Oriented Architecture
dan yoder
               director.hacking
                                                    AT&T Interactive
     dan@zeraweb.com                                 strategic research
                                                     and development
http://twitter.com/dyoder                         web • mobile • IPTV •  hci

  We’re so totally hiring.                   rest / roa • virtualization • mashups 
                                           search • map-reduce • grid computing




     AutoCode • Functor • Filebase • Waves • Pages • Hoshi • DateJS
This Isn’t MVC
So Why Do We Use It So Often For Web Apps?
Get Your Head In The Clouds
The Cloud Is Increasingly About ROA

Recommended for you

Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing

This document discusses breaking and penetration testing Ruby on Rails applications. It covers fingerprinting the Rails framework, testing the attack surface through routes, session security issues, authentication vulnerabilities, authorization testing, CSRF protection bypass, model attribute assignment and SQL injection issues, view rendering exploits, and insecure defaults. Recommended tools for analysis include Brakeman, grep searches, and the Ruby Mechanize and Nokogiri libraries. The document provides references for further Rails security best practices.

rubypenetration-testingsecurity
Constructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDBConstructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDB

Slides for my talk at Ruby Ireland on 10 May 11. Showing some of the capabilities of mongoDB, using it from a Sinatra applications and deploying it to Heroku and Cloud Foundry

mongodbcloudfoundryapi
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails

This document provides a fast-paced introduction to Ruby, Rails, and additional technologies. It begins with an overview of Ruby basics, syntax, and uses beyond scripts. It then covers Rails fundamentals including MVC architecture, scaffolding, models, views, controllers, and routes. Additional topics discussed include gems, Git, and deploying to Heroku. The document concludes by outlining a sample project to build a marketplace for buying and selling robot spare parts.

railsherokugit
But Why?
Web Sites (M)

160




120



         Scalability?
 80

       The Web Has It.
 40




  0
      2005   2006           2007    2008
HTML
      JSON
        CSS
Open? M I M E
      Yep. Mostly, anyway.
       XML
        RSS
       RDF
Reuse? Just A Bit.
Over 1,000 Public APIs And Counting.

Recommended for you

Introduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman OrtegaIntroduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman Ortega

This document provides an introduction to Ruby on Rails presented by Arman Ortega. It outlines what will be covered including an overview of Ruby and Rails, the concept of convention over configuration in Rails, and performing CRUD (create, read, update, delete) operations. It then demonstrates creating a sample blog application in Rails and provides links for additional learning resources.

rubyactiverecordpython
Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting

This document provides an overview of Ruby on Rails, Apache httpd, and Oracle. It discusses why Ruby on Rails is useful for rapid prototyping, and how it can be integrated with Apache and Oracle. The document demonstrates Rails generators, routing, testing with RSpec, and security features. It also outlines how to configure Apache and link Rails to an Oracle database. The presenter provides cheat sheets for creating a sample Rails application integrated with Devise, ActiveAdmin, and a database, with minimal code required. The key takeaway is that learning is fun through experimenting with different technologies.

Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution

Sling is a RESTful web application framework that uses JCR repositories like Apache Jackrabbit as its data store. Sling maps HTTP requests to content resources in the repository and uses the resource type to locate the appropriate rendering script. The request URL is decomposed into the resource path, selectors, extension, and suffix path. Sling searches for a node matching the resource path and then locates a script based on the resource type and any selectors. Sling scripts cannot be called directly and must be resolved through the resource to follow REST principles. This document discusses how Sling maps URLs to content resources and scripts to process requests.

Existing Infrastructure?
Firewalls, Edge Caches, Proxy Servers, Etc.
Resource-Oriented
Things With URIs. Self-Describing Messages.
Uniform Interfaces And Standard Protocols.
Linked Hypermedia And Content Negotiation.
Well-Known Media Types. Stateless.
Let’s Take A Look At HTTP.
What Is HTTP, Really?
A protocol that calls a method on a resource.

Recommended for you

Picking gem ruby for penetration testers
Picking gem ruby for penetration testersPicking gem ruby for penetration testers
Picking gem ruby for penetration testers

The document discusses various techniques for penetration testing and attacking web applications using Ruby tools and libraries. It provides examples of using tools like Anemone for crawling sites, Casper for observing browser requests, Enchant for directory brute forcing, and Ciphersurfer for evaluating SSL configurations. The document encourages attackers to change their mindset and look for vulnerabilities from the perspective of an attacker rather than a developer.

securityapplication securityruby
Spring Web Services
Spring Web ServicesSpring Web Services
Spring Web Services

The document describes contract-first and contract-last approaches to developing web services using Spring. It provides details on defining the service contract, creating message endpoints, mapping messages to endpoints, configuring marshaling and exceptions, and serving WSDL files. The key aspects are defining the XML schema first in contract-first, while contract-last derives the schema from the code. It also discusses using JDOM or marshalling endpoints to process messages.

emprovisespring
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe

a simple introduction to Cloud Foundry from the perspective of building applications using Cloud Foundry

cloudfoundrybootcampspringone
Sounds Like Ruby To Me!
class Dog

  attr_accessor :request

  def initialize( request )
    @request = request
  end

  def get
    “Fido” if request.path == ‘/name’
  end

end
Sadly, It’s
Not That
Simple
HTTP Requests - er,
method signatures,
are more than just
pretty URIs.
HTTP Requests:
Method Signatures?
Example: GET
get( URI: Content-Type, Params: Query-String ) : Accept

Recommended for you

Server Side Technologies
Server Side TechnologiesServer Side Technologies
Server Side Technologies

The document discusses server side technologies, including server hardware, operating systems, and application software. It defines servers as more powerful hardware that processes requests from client devices. Common server hardware includes tower, rack mount, and blade servers, which have features like redundancy, virtualization support, and remote monitoring. Popular operating systems are Windows Server and Unix derivatives like Linux that provide security, remote administration, and support for various hardware platforms. Application servers and databases like Tomcat, Oracle, and SQL Server are used to service client requests and require persistence through databases.

tawi commercial services ltd nairobi kenya
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post

This document provides an overview of server-side web programming and different technologies used to create dynamic web pages, including Common Gateway Interface (CGI), servlets, and JavaServer Pages (JSP). CGI allows building dynamic web sites by running programs on the server that can generate HTML responses. Servlets provide a Java-based alternative to CGI with improved performance, portability, and security. Servlets use a request-response model and are executed by a servlet container. JSP is a technology that simplifies web page programming by mixing static elements like HTML with scripting code.

Server-side Technologies in Java
Server-side Technologies in JavaServer-side Technologies in Java
Server-side Technologies in Java

Covers a wide variety of technologies and solutions available to develop effective Java based server side HTTP applications.

webappjavaservlets
Functor To
The Rescue
Functor gives us
argument pattern
matching in Ruby.
A Quick Intro To Functor
fib = Functor.new do
  given( 0 ) { 1 }
  given( 1 ) { 1 }
  given( Integer ) do |n|
    self.call( n - 1 ) + self.call( n - 2 )
  end
end

fib.call( 7 ) # => 21
Functor Methods
class Dog
  attr_accessor :request

  def initialize( request )
    @request = request
  end
  functor( :get, “/name” ) { “Fido” }
  functor( :get, “/breed” ) { “Mutt” }
end
Request Functor
Functors defined on a Resource class to match
a given Request pattern.

Recommended for you

MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails

Examines the MVC design pattern and how Rails adheres to this powerful design pattern. Good introduction to Ruby on Rails framework.

2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire

A workshop held in StartIT as part of Catena Media learning sessions. We aim to dispel the notion that large PHP applications tend to be sluggish, resource-intensive and slow compared to what the likes of Python, Erlang or even Node can do. The issue is not with optimising PHP internals - it's the lack of proper introspection tools and getting them into our every day workflow that counts! In this workshop we will talk about our struggles with whipping PHP Applications into shape, as well as work together on some of the more interesting examples of CPU or IO drain.

phpblackfiresymfony
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards

The way JavaScript is standardized and improved is changing this year. Learning how will help you understand why transpilers have become so popular, and why we will likely be using them for a long time. Ember itself will need to adapt to changes in JavaScript, and we will take a look at how the existing object model might be migrated to a pure EcmaScript solution.

web developmentes2015es6
Request DSL
A DSL Used In Resources To Define Request
Functors. Can Match On Any Attribute.
Simple Example


class Dog
  include Waves::Resources::Mixin
  on( :get, [ ‘name’ ] ) { “Fido” }
end
Matching Query & Accept


 on( :get, [ ‘location’ ],
   :query => { :lat => /d{4}/, :long => /d{4}/ },
   :accept => [ :json, :xml ] )
Waves Request DSL
Match and capture components. Named path
generators. Match wild-cards and regular
expressions. Match accept, scheme, domain,
content-type, most any attribute of a request.

Recommended for you

Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach

It will describes SOAP/REST differences and SOAP web services in detail with practical approach. it shows usage of SOAP, XML, JAVA, WSDL, XSD and RPC with examples.

rpcxsdsoap
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration

The Camel project from Apache(camel.apache.org), is a very popular, light weight, open source integration framework. This presentation shows some interesting features of Camel and the unique advantages that Camel brings to your integration projects. Some business use cases are shown to explain how Camel makes open source integration a cakewalk. Table of contents: 1. An overview of Apache Camel 2. Integration architecture explained 3. Using Camel in different integration architectures 3.a. In the Securities domain 3.b. In the Travel domain 4. High Availability and Load Balancing with Camel

enterprise integration patternsapache camelopen source
Icare class
Icare classIcare class
Icare class

The document discusses quality in health and healthcare institutions. It defines quality as the degree to which delivered health services meet established standards and minimize risk and untoward outcomes. Quality has three dimensions: the quality of input resources, the quality process of service delivery, and the quality of outcomes from service use. Implementing quality requires approaches like total quality management, continuous quality improvement, Six Sigma, and benchmarking to measure quality through methods like control charts, cause-effect diagrams, and collecting data from focus groups and surveys. The outcomes of quality include improved patient safety, staff and patient satisfaction, and cost containment.

But It’s Still Just Ruby


pages $ waves console

Pages::Resources::Story.instance_methods &
  %w( get put post delete )

# => [quot;deletequot;, quot;postquot;, quot;putquot;, quot;getquot;]
Resource Delegation
                           Article
               Delegates
                           Image
Request     Map

                            Blog
          Inspects
          Request
                           Gallery
Some Implications
Or: Why Are Resource Classes Better Than Routes?
Resource Classes

Inheritance. I can now just inherit from a base class to
provide common REST features.
Modularity. Request-handling is broken down into
logically discrete chunks, just like normal classes.
Performance. I don’t have to go through each
possible match - just those for the matching resource.

Recommended for you

The FIRST Slide Deck
The FIRST Slide DeckThe FIRST Slide Deck
The FIRST Slide Deck

The document outlines a strategy to artificially induce panic in the startup market in order to lower valuations and reduce competition. It argues that generating an alarmist doomsday presentation comparing the current situation to the dot-com bust and aggressively leaking it could spread panic among startups and investors. This would downward pressure on valuations through panic in the short term. It may also reduce hedge fund money and competition in the market as public returns drop. However, there is a risk it could further close the exit window and lower valuations when exits eventually recover.

presentationsequoia
Computer Security Awareness Training
Computer Security Awareness TrainingComputer Security Awareness Training
Computer Security Awareness Training

Computer Security Awareness Training

constientizareromanatraining
Proj3
Proj3Proj3
Proj3

Public schools aim to educate children from diverse backgrounds. The document discusses the fact of evolution, which is that organisms change over generations, versus the theory of evolution, which proposes that organisms today evolved from earlier forms. It also discusses the theory of intelligent design, which argues that some features are best explained by an intelligent cause rather than natural selection alone.

A Word
About
Architecture
Waves Supports
Layered Architecture
Through Foundations
And Layers.
The One File Waves App

module HelloWorld

  include Waves::Foundations::Compact

  module Resources
    class Map
      on( :get, [] ) { quot;Hello #{query.name}quot;   }
    end
  end

end
Resources decouple your application from the
 HTTP request processing.

                               Application
        Resource
                                 Layers
          HTTP
                               Foundation

Layers mix-in features (like MVC support) to
help build your application.

A Foundation is a Layer that provides at least the
minimal features required for a Waves application.
Layered Architecture
module Classic
  def self.included( app )
    require 'autocode'
    require 'layers/mvc'
    require 'layers/inflect/english'
    require 'helpers/extended'
    require 'layers/renderers/hoshi'

    app.module_eval do
      include Waves::Layers::Inflect::English
      include Waves::Layers::MVC
      include Waves::Renderers::Hoshi
    end
  end
end

Recommended for you

Paper Prototyping
Paper PrototypingPaper Prototyping
Paper Prototyping

Paper prototyping involves creating rough sketches of user interfaces on paper to test design ideas early in the development process. It allows representing screens and flows without coding to get quick feedback. Paper prototypes are effective for brainstorming, usability testing, and design exploration before committing to an implementation. While rough, paper prototypes provide a low-fidelity, low-cost way to evaluate designs and iterate before full development.

userexperiencedesign
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...

This document discusses achieving business agility through cloud technologies like APIs, cloud-aware applications, and cloud DevOps platforms. It covers several topics related to cloud computing including cloud drivers, cloud-oriented delivery domains, cloud architecture best practices, cloud application patterns, and shifting to cloud-aware application programming models. It also provides explanations of key concepts in platform as a service (PaaS) architectures like tenants, containers, and partitions for isolating and allocating resources for different users.

paasenterprise devops paascloud-native
How To Hire A PR Firm
How To Hire A PR FirmHow To Hire A PR Firm
How To Hire A PR Firm

The document outlines a 5-step process for hiring a public relations firm: 1) assessing needs, 2) searching firms, 3) presentations and evaluations, 4) proposals, and 5) selection. It provides guidance on determining budget, objectives, services needed, and evaluating firm strategies, resources, media expertise, account teams, and intangibles like proactivity and chemistry. The goal is to choose a firm that can best help achieve marketing goals through PR services and build a long-term, profitable relationship.

Some Other Features
Inheritable Pure Ruby Configurations. Small
Footprint, Pay Only For What You Use. No ORM
Requirement, Sequel Support. Rack Compliant.
Runs On JRuby. Complete MVC Layer Provided.
Just-In-Time Class Creation / Loading. Leverages
Existing Ruby Constructs Wherever Possible.
We’re Just
Getting
Warmed Up
Seeking Contributors
Roadmap
# TODO: this is a hack ...
Subject To Change
Waves 0.8.2 Dec-08 •        Waves 0.8.4 Feb-09 •
Rack::Cache • Rinda-Based   Improved Configurations •
Management • Improved       HTTP Authentication •
Accept handling             ORM-Neutral Schema
Waves 0.8.3 Jan-09 •        Waves 0.8.5 Apr-09 • Just-
Hoshi • Cssy • Functor      in-time views • Diff-based
Memoization • Improved      ORM-Neutral Migrations
Request DSL • Non-HTTP
Schemes

Recommended for you

Gender & Violence Presentation
Gender & Violence PresentationGender & Violence Presentation
Gender & Violence Presentation

Masculinity is often depicted in violent drawings by adolescent boys as a struggle for power and intimacy. These drawings were analyzed to understand how boys portray masculinity and relationships through violent imagery. The drawings seem to reflect boys grappling with developing their masculine identity and finding connection with others.

Please aim
Please aimPlease aim
Please aim

The document repeatedly states that all images have been collected from Google search and are owned by their respective rightful owners.

qr codestoryaim
Benefits Of Usability
Benefits Of UsabilityBenefits Of Usability
Benefits Of Usability

Usability leads to business benefits through increased conversion rates, loyalty rates, and transactions. Usability improvements can provide high returns through reduced costs, increased sales and customer retention. For example, fixing usability problems early in design saves 10-100 times the cost of fixing them later. Easy navigation and sufficient product information can increase sales up to 225%. Over 83% of users will leave a site if it takes too many clicks to find what they want. Quantifying user experience helps measure success rates, conversion rates, form completion, navigation paths, and error rates to improve a site's performance.

usabilitywebdesigning
Waves::Vitals
 Initial 0.7.0 release Feb 08
 Release 0.8.1 Available Now!

 Of course, we’re on git.
 http://github.com/dyoder/waves

 Join Us On Google Groups.
 rubywaves

 irc:freenode.net#waves

 And, lest we forget, a Web site.
 http://rubywaves.com/
Waves: Ruby ROA
Shout out: leetspete, kaykay, automatthew,
nanorails, copawaves, ab5tract, and many others.
Thanks!
Photo credits: All photos from Flickr.com under Creative Commons License.
http://www.flickr.com/photos/look4u/279668622/sizes/l/
http://www.flickr.com/photos/redteam/2885482695/
http://www.flickr.com/photos/ethanhein/2738164183/sizes/o/
http://www.flickr.com/photos/neilharvey/343068501/sizes/l/
http://www.flickr.com/photos/baldiri/496892841/sizes/o/
http://www.flickr.com/photos/walkingthedeepfield/2281168070/sizes/l/
http://www.flickr.com/photos/kanaka/1798470406/sizes/l/
http://www.flickr.com/photos/fuseman/262082281/sizes/o/
http://www.flickr.com/photos/xiaming/484440654/sizes/l/
http://www.flickr.com/photos/smithco/118770617/sizes/l/
http://www.flickr.com/photos/brainfarts/97676505/sizes/l/
http://www.flickr.com/photos/xfp/2830064227/sizes/o/

More Related Content

What's hot

Getting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent EventsGetting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent Events
Arun Gupta
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsBuilding Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
Srdjan Strbanovic
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
Ivano Malavolta
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
3S Labs
 
Constructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDBConstructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDB
Oisin Hurley
 
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails
Jean-Baptiste Feldis
 
Introduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman OrtegaIntroduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman Ortega
arman o
 
Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting
Dan Davis
 
Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution
DEEPAK KHETAWAT
 
Picking gem ruby for penetration testers
Picking gem ruby for penetration testersPicking gem ruby for penetration testers
Picking gem ruby for penetration testers
Paolo Perego
 
Spring Web Services
Spring Web ServicesSpring Web Services
Spring Web Services
Emprovise
 
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
Joshua Long
 
Server Side Technologies
Server Side TechnologiesServer Side Technologies
Server Side Technologies
tawi123
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
vamsi krishna
 
Server-side Technologies in Java
Server-side Technologies in JavaServer-side Technologies in Java
Server-side Technologies in Java
Anirban Majumdar
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails
codeinmotion
 
2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire
Marko Mitranić
 
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards
Matthew Beale
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
Madhaiyan Muthu
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration
prajods
 

What's hot (20)

Getting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent EventsGetting Started with WebSockets and Server-Sent Events
Getting Started with WebSockets and Server-Sent Events
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsBuilding Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
 
Constructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDBConstructing Web APIs with Rack, Sinatra and MongoDB
Constructing Web APIs with Rack, Sinatra and MongoDB
 
Supa fast Ruby + Rails
Supa fast Ruby + RailsSupa fast Ruby + Rails
Supa fast Ruby + Rails
 
Introduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman OrtegaIntroduction to Rails - presented by Arman Ortega
Introduction to Rails - presented by Arman Ortega
 
Ruby on Rails All Hands Meeting
Ruby on Rails All Hands MeetingRuby on Rails All Hands Meeting
Ruby on Rails All Hands Meeting
 
Rest and Sling Resolution
Rest and Sling ResolutionRest and Sling Resolution
Rest and Sling Resolution
 
Picking gem ruby for penetration testers
Picking gem ruby for penetration testersPicking gem ruby for penetration testers
Picking gem ruby for penetration testers
 
Spring Web Services
Spring Web ServicesSpring Web Services
Spring Web Services
 
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
 
Server Side Technologies
Server Side TechnologiesServer Side Technologies
Server Side Technologies
 
Servletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,postServletarchitecture,lifecycle,get,post
Servletarchitecture,lifecycle,get,post
 
Server-side Technologies in Java
Server-side Technologies in JavaServer-side Technologies in Java
Server-side Technologies in Java
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails
 
2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire2019 StartIT - Boosting your performance with Blackfire
2019 StartIT - Boosting your performance with Blackfire
 
Aligning Ember.js with Web Standards
Aligning Ember.js with Web StandardsAligning Ember.js with Web Standards
Aligning Ember.js with Web Standards
 
Web services - A Practical Approach
Web services - A Practical ApproachWeb services - A Practical Approach
Web services - A Practical Approach
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration
 

Viewers also liked

Icare class
Icare classIcare class
Icare class
Denny John
 
The FIRST Slide Deck
The FIRST Slide DeckThe FIRST Slide Deck
The FIRST Slide Deck
guestd4985a31
 
Computer Security Awareness Training
Computer Security Awareness TrainingComputer Security Awareness Training
Computer Security Awareness Training
Cristian Mihai
 
Proj3
Proj3Proj3
Paper Prototyping
Paper PrototypingPaper Prototyping
Paper Prototyping
Devesh Jagatram
 
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Chris Haddad
 
How To Hire A PR Firm
How To Hire A PR FirmHow To Hire A PR Firm
How To Hire A PR Firm
Jeffrey Swartz
 
Gender & Violence Presentation
Gender & Violence PresentationGender & Violence Presentation
Gender & Violence Presentation
aileenwilson
 
Please aim
Please aimPlease aim
Please aim
🎩🎖 Roy Fang
 
Benefits Of Usability
Benefits Of UsabilityBenefits Of Usability
Benefits Of Usability
OMcareers Community
 
Visualizing Research Design, NAEA Presentation 2009
Visualizing Research Design, NAEA Presentation 2009Visualizing Research Design, NAEA Presentation 2009
Visualizing Research Design, NAEA Presentation 2009
aileenwilson
 
The Globe And Facebook
The Globe And FacebookThe Globe And Facebook
The Globe And Facebook
Mathew Ingram
 
Raju Narisetti's Freewall presentation at Newsfoo
Raju Narisetti's Freewall presentation at Newsfoo Raju Narisetti's Freewall presentation at Newsfoo
Raju Narisetti's Freewall presentation at Newsfoo
Mathew Ingram
 
Web 2.0 presentation
Web 2.0  presentationWeb 2.0  presentation
Web 2.0 presentation
c2charro
 
A vida de jesus
A vida de jesusA vida de jesus
A vida de jesus
Workman
 
Future Macroeconomic Environment and Its Expected Impact on Management Practi...
Future Macroeconomic Environment and Its Expected Impact on Management Practi...Future Macroeconomic Environment and Its Expected Impact on Management Practi...
Future Macroeconomic Environment and Its Expected Impact on Management Practi...
Marcin Senderski
 
Group 4 - Digital Trends
Group 4 - Digital TrendsGroup 4 - Digital Trends
Group 4 - Digital Trends
Anthony Roman
 
Group 4 - Digital Trends
Group 4 - Digital TrendsGroup 4 - Digital Trends
Group 4 - Digital Trends
Anthony Roman
 
We Are Tangram
We Are TangramWe Are Tangram
We Are Tangram
annantonucci
 
2009_2010_Presentazione_Primaria
2009_2010_Presentazione_Primaria2009_2010_Presentazione_Primaria
2009_2010_Presentazione_Primaria
janaem
 

Viewers also liked (20)

Icare class
Icare classIcare class
Icare class
 
The FIRST Slide Deck
The FIRST Slide DeckThe FIRST Slide Deck
The FIRST Slide Deck
 
Computer Security Awareness Training
Computer Security Awareness TrainingComputer Security Awareness Training
Computer Security Awareness Training
 
Proj3
Proj3Proj3
Proj3
 
Paper Prototyping
Paper PrototypingPaper Prototyping
Paper Prototyping
 
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
Achieve business agility with Cloud APIs, Cloud-aware Apps, and Cloud DevOps ...
 
How To Hire A PR Firm
How To Hire A PR FirmHow To Hire A PR Firm
How To Hire A PR Firm
 
Gender & Violence Presentation
Gender & Violence PresentationGender & Violence Presentation
Gender & Violence Presentation
 
Please aim
Please aimPlease aim
Please aim
 
Benefits Of Usability
Benefits Of UsabilityBenefits Of Usability
Benefits Of Usability
 
Visualizing Research Design, NAEA Presentation 2009
Visualizing Research Design, NAEA Presentation 2009Visualizing Research Design, NAEA Presentation 2009
Visualizing Research Design, NAEA Presentation 2009
 
The Globe And Facebook
The Globe And FacebookThe Globe And Facebook
The Globe And Facebook
 
Raju Narisetti's Freewall presentation at Newsfoo
Raju Narisetti's Freewall presentation at Newsfoo Raju Narisetti's Freewall presentation at Newsfoo
Raju Narisetti's Freewall presentation at Newsfoo
 
Web 2.0 presentation
Web 2.0  presentationWeb 2.0  presentation
Web 2.0 presentation
 
A vida de jesus
A vida de jesusA vida de jesus
A vida de jesus
 
Future Macroeconomic Environment and Its Expected Impact on Management Practi...
Future Macroeconomic Environment and Its Expected Impact on Management Practi...Future Macroeconomic Environment and Its Expected Impact on Management Practi...
Future Macroeconomic Environment and Its Expected Impact on Management Practi...
 
Group 4 - Digital Trends
Group 4 - Digital TrendsGroup 4 - Digital Trends
Group 4 - Digital Trends
 
Group 4 - Digital Trends
Group 4 - Digital TrendsGroup 4 - Digital Trends
Group 4 - Digital Trends
 
We Are Tangram
We Are TangramWe Are Tangram
We Are Tangram
 
2009_2010_Presentazione_Primaria
2009_2010_Presentazione_Primaria2009_2010_Presentazione_Primaria
2009_2010_Presentazione_Primaria
 

Similar to Ruby Conf Preso

LA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented ArchitectureLA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented Architecture
Dan Yoder
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
Gautam Rege
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
Viridians
 
Soap and Rest
Soap and RestSoap and Rest
Soap and Rest
Edison Lascano
 
Intro to Rails and MVC
Intro to Rails and MVCIntro to Rails and MVC
Intro to Rails and MVC
Sarah Allen
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
george.james
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
drupalcampest
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
Santosh Wadghule
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
Nick Sieger
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
arif44
 
Sinatra
SinatraSinatra
Sinatra
kevinreiss
 
ReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... YawnReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... Yawn
ozten
 
Rack
RackRack
Rack
shen liu
 
Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
Kalyan Vijay Kumar Pasumarthi
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScript
martinlippert
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScript
martinlippert
 
Node js
Node jsNode js
Node js
Chirag Parmar
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
Shaer Hassan
 
WebSocket For Web Rubyists
WebSocket For Web RubyistsWebSocket For Web Rubyists
WebSocket For Web Rubyists
Mu-Fan Teng
 

Similar to Ruby Conf Preso (20)

LA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented ArchitectureLA RubyConf 2009 Waves And Resource-Oriented Architecture
LA RubyConf 2009 Waves And Resource-Oriented Architecture
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Soap and Rest
Soap and RestSoap and Rest
Soap and Rest
 
Intro to Rails and MVC
Intro to Rails and MVCIntro to Rails and MVC
Intro to Rails and MVC
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS Developing realtime apps with Drupal and NodeJS
Developing realtime apps with Drupal and NodeJS
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
 
Connecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRubyConnecting the Worlds of Java and Ruby with JRuby
Connecting the Worlds of Java and Ruby with JRuby
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Sinatra
SinatraSinatra
Sinatra
 
ReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... YawnReST Vs SOA(P) ... Yawn
ReST Vs SOA(P) ... Yawn
 
Rack
RackRack
Rack
 
Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289Rest Vs Soap Yawn2289
Rest Vs Soap Yawn2289
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScript
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScript
 
Node js
Node jsNode js
Node js
 
Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09Ror Seminar With agilebd.org on 23 Jan09
Ror Seminar With agilebd.org on 23 Jan09
 
WebSocket For Web Rubyists
WebSocket For Web RubyistsWebSocket For Web Rubyists
WebSocket For Web Rubyists
 

Recently uploaded

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
BookNet Canada
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 

Recently uploaded (20)

Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024Details of description part II: Describing images in practice - Tech Forum 2024
Details of description part II: Describing images in practice - Tech Forum 2024
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 

Ruby Conf Preso

  • 1. Introducing Waves A Ruby Framework For Resource-Oriented Architecture
  • 2. dan yoder director.hacking AT&T Interactive dan@zeraweb.com strategic research and development http://twitter.com/dyoder web • mobile • IPTV •  hci We’re so totally hiring. rest / roa • virtualization • mashups  search • map-reduce • grid computing AutoCode • Functor • Filebase • Waves • Pages • Hoshi • DateJS
  • 3. This Isn’t MVC So Why Do We Use It So Often For Web Apps?
  • 4. Get Your Head In The Clouds The Cloud Is Increasingly About ROA
  • 6. Web Sites (M) 160 120 Scalability? 80 The Web Has It. 40 0 2005 2006 2007 2008
  • 7. HTML JSON CSS Open? M I M E Yep. Mostly, anyway. XML RSS RDF
  • 8. Reuse? Just A Bit. Over 1,000 Public APIs And Counting.
  • 9. Existing Infrastructure? Firewalls, Edge Caches, Proxy Servers, Etc.
  • 10. Resource-Oriented Things With URIs. Self-Describing Messages. Uniform Interfaces And Standard Protocols. Linked Hypermedia And Content Negotiation. Well-Known Media Types. Stateless.
  • 11. Let’s Take A Look At HTTP.
  • 12. What Is HTTP, Really? A protocol that calls a method on a resource.
  • 14. class Dog attr_accessor :request def initialize( request ) @request = request end def get “Fido” if request.path == ‘/name’ end end
  • 15. Sadly, It’s Not That Simple HTTP Requests - er, method signatures, are more than just pretty URIs.
  • 16. HTTP Requests: Method Signatures? Example: GET get( URI: Content-Type, Params: Query-String ) : Accept
  • 17. Functor To The Rescue Functor gives us argument pattern matching in Ruby.
  • 18. A Quick Intro To Functor fib = Functor.new do given( 0 ) { 1 } given( 1 ) { 1 } given( Integer ) do |n| self.call( n - 1 ) + self.call( n - 2 ) end end fib.call( 7 ) # => 21
  • 19. Functor Methods class Dog attr_accessor :request def initialize( request ) @request = request end functor( :get, “/name” ) { “Fido” } functor( :get, “/breed” ) { “Mutt” } end
  • 20. Request Functor Functors defined on a Resource class to match a given Request pattern.
  • 21. Request DSL A DSL Used In Resources To Define Request Functors. Can Match On Any Attribute.
  • 22. Simple Example class Dog include Waves::Resources::Mixin on( :get, [ ‘name’ ] ) { “Fido” } end
  • 23. Matching Query & Accept on( :get, [ ‘location’ ], :query => { :lat => /d{4}/, :long => /d{4}/ }, :accept => [ :json, :xml ] )
  • 24. Waves Request DSL Match and capture components. Named path generators. Match wild-cards and regular expressions. Match accept, scheme, domain, content-type, most any attribute of a request.
  • 25. But It’s Still Just Ruby pages $ waves console Pages::Resources::Story.instance_methods & %w( get put post delete ) # => [quot;deletequot;, quot;postquot;, quot;putquot;, quot;getquot;]
  • 26. Resource Delegation Article Delegates Image Request Map Blog Inspects Request Gallery
  • 27. Some Implications Or: Why Are Resource Classes Better Than Routes?
  • 28. Resource Classes Inheritance. I can now just inherit from a base class to provide common REST features. Modularity. Request-handling is broken down into logically discrete chunks, just like normal classes. Performance. I don’t have to go through each possible match - just those for the matching resource.
  • 29. A Word About Architecture Waves Supports Layered Architecture Through Foundations And Layers.
  • 30. The One File Waves App module HelloWorld include Waves::Foundations::Compact module Resources class Map on( :get, [] ) { quot;Hello #{query.name}quot; } end end end
  • 31. Resources decouple your application from the HTTP request processing. Application Resource Layers HTTP Foundation Layers mix-in features (like MVC support) to help build your application. A Foundation is a Layer that provides at least the minimal features required for a Waves application.
  • 32. Layered Architecture module Classic def self.included( app ) require 'autocode' require 'layers/mvc' require 'layers/inflect/english' require 'helpers/extended' require 'layers/renderers/hoshi' app.module_eval do include Waves::Layers::Inflect::English include Waves::Layers::MVC include Waves::Renderers::Hoshi end end end
  • 33. Some Other Features Inheritable Pure Ruby Configurations. Small Footprint, Pay Only For What You Use. No ORM Requirement, Sequel Support. Rack Compliant. Runs On JRuby. Complete MVC Layer Provided. Just-In-Time Class Creation / Loading. Leverages Existing Ruby Constructs Wherever Possible.
  • 35. Roadmap # TODO: this is a hack ...
  • 36. Subject To Change Waves 0.8.2 Dec-08 • Waves 0.8.4 Feb-09 • Rack::Cache • Rinda-Based Improved Configurations • Management • Improved HTTP Authentication • Accept handling ORM-Neutral Schema Waves 0.8.3 Jan-09 • Waves 0.8.5 Apr-09 • Just- Hoshi • Cssy • Functor in-time views • Diff-based Memoization • Improved ORM-Neutral Migrations Request DSL • Non-HTTP Schemes
  • 37. Waves::Vitals Initial 0.7.0 release Feb 08 Release 0.8.1 Available Now! Of course, we’re on git. http://github.com/dyoder/waves Join Us On Google Groups. rubywaves irc:freenode.net#waves And, lest we forget, a Web site. http://rubywaves.com/
  • 38. Waves: Ruby ROA Shout out: leetspete, kaykay, automatthew, nanorails, copawaves, ab5tract, and many others.
  • 39. Thanks! Photo credits: All photos from Flickr.com under Creative Commons License. http://www.flickr.com/photos/look4u/279668622/sizes/l/ http://www.flickr.com/photos/redteam/2885482695/ http://www.flickr.com/photos/ethanhein/2738164183/sizes/o/ http://www.flickr.com/photos/neilharvey/343068501/sizes/l/ http://www.flickr.com/photos/baldiri/496892841/sizes/o/ http://www.flickr.com/photos/walkingthedeepfield/2281168070/sizes/l/ http://www.flickr.com/photos/kanaka/1798470406/sizes/l/ http://www.flickr.com/photos/fuseman/262082281/sizes/o/ http://www.flickr.com/photos/xiaming/484440654/sizes/l/ http://www.flickr.com/photos/smithco/118770617/sizes/l/ http://www.flickr.com/photos/brainfarts/97676505/sizes/l/ http://www.flickr.com/photos/xfp/2830064227/sizes/o/