Human Factors of XR: Using Human Factors to Design XR Systems
PRDC-ror-trilogy-part1
1. AMIR
BARYLKO
THE ROR
TRILOGY I
A NEW DEV
HOPE
Amir Barylko RoR Trilogy Part I: A New Dev Hope
2. WHO AM I?
• Software quality expert
• Architect
• Developer
• Mentor
• Great cook
• The one who’s entertaining you for the next hour!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
3. RESOURCES
• Email & Twitter: amir@barylko.com, @abarylko
• Slides & Source: http://www.orthocoders.com/presentations
• Company Site: http://www.maventhought.com
• Try Ruby online: http://tryruby.org/
• Learn RoR online: http://railsforzombies.org/
• Learn Ruby with Koans: http://rubykoans.com/
Amir Barylko RoR Trilogy Part I: A New Dev Hope
4. RUBY INTRO
Dynamic languages
Features
Support
Classes
Mixins
Amir Barylko RoR Trilogy Part I: A New Dev Hope
5. DYNAMIC LANGUAGES
• High level
• Dynamically typed
• Runtime over compile time
• Closures
• Reflection
• Platform independent
Amir Barylko RoR Trilogy Part I: A New Dev Hope
6. WELCOME TO RUBY
• Created in mid-90s by • Automatic
memory
“Matz” Matsumoto in Japan management
• Smalltalk, Perl influences • Several
implementations:
MRI, YARB, JRuby
• Dynamic typing
• Totally free!!
• Object Oriented
Amir Barylko RoR Trilogy Part I: A New Dev Hope
7. RUBY FEATURES
• Everything is an expression
• Metaprogramming
• Closures
• Garbage collection
• Exceptions
• Operator overloading, flexible syntax
Amir Barylko RoR Trilogy Part I: A New Dev Hope
8. RUBY SUPPORT
• Hundreds of books
• User conferences all over the world
• Active community (you can create a conference in your own
city and top Ruby coders will go there to teach others, invite
them and see)
• Lots of great web sites: basecamp, twitter, 43 things, hulu,
scribd, slideshare, Justin.tv
Amir Barylko RoR Trilogy Part I: A New Dev Hope
9. CLASSES & OBJECTS
• Initializer and instance variables
class Movie
def initialize(name)
@name = name
end
def play
puts %Q{Playing “#{@name}”. Enjoy!}
end
end
m = Movie.new(“Pulp fiction”)
m.play
=> Playing “Pulp fiction”. Enjoy!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
10. CLASSES & OBJECTS II
• Attributes
class Movie
# attr reader and writer
attr_accesor :name
def initialize(name)
@name = name
end
end
m = Movie.new('Brazil')
m.name = “Pulp fiction”
Amir Barylko RoR Trilogy Part I: A New Dev Hope
11. MIXINS
• One of the greatest Ruby features!
• You can define functions in Modules, and get them added to
your classes.
• Great code reuse,
• Multiple inheritance alternative.
• Code organization
Amir Barylko RoR Trilogy Part I: A New Dev Hope
12. ENUMERABLE MIXIN
• Quote from the standard library documentation:
...The Enumerable mixin provides
collection classes with several
traversal and searching methods, and
with the ability to sort.
The class must provide a method
each, which yields successive
members of the collection...
Amir Barylko RoR Trilogy Part I: A New Dev Hope
13. ENUMERABLE II
• It provides useful methods such as:
• map
• to_a
• take_while
• count
• inject
Amir Barylko RoR Trilogy Part I: A New Dev Hope
14. MIXIN EXAMPLE
class MovieLibrary
include Enumerable
def each(&block)
contents.each(&block)
end
end
Amir Barylko RoR Trilogy Part I: A New Dev Hope
15. ROR
What is it?
Convention over configuration
Model View Controller
Code generation
Dependency Management
HTML 5 & UJS
Amir Barylko RoR Trilogy Part I: A New Dev Hope
16. WHAT IS ROR?
• Web application development framework
• Created by David Heinemeier Hansson
• With Rails, you would be done by now!
• Open Source & Multi platform
• Very easy to learn
• Comes with everything out of the box!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
17. CONVENTION OVER
CONFIGURATION
• All applications share the same structure
• The application is generated by the rails command
• All the config files are ruby code
Amir Barylko RoR Trilogy Part I: A New Dev Hope
18. DEPENDENCY MANAGEMENT
• Gems are Ruby libraries
• Dependencies are managed with tool gem
• To install a gem just run: gem install xxxxxx
• Bundler is a gem to manage dependencies
• Just create a Gemfile and bundler will install all of them
Amir Barylko RoR Trilogy Part I: A New Dev Hope
19. MODEL VIEW CONTROLLER
• Model: represents the data
• Controllers: Manipulate the data and prepare it to be shown
• View: Shows the data with a particular view engine
Amir Barylko RoR Trilogy Part I: A New Dev Hope
20. CODE GENERATION
• Using rails command:
• Bootstrap: Generates basic structure
• Models: Generated models and tests
• Controllers: Generates controllers, views and tests
• Scaffolds: Generates models, controllers, views, routes,
etc...
Amir Barylko RoR Trilogy Part I: A New Dev Hope
21. HTML 5 & UNOBTRUSIVE JS
• Supports HTML 5 standards
• data-remote, data-method, data-config, etc...
• Supports many JS frameworks
• JS code associated to models to handle events, animations, etc
• Coffeescript!
Amir Barylko RoR Trilogy Part I: A New Dev Hope
22. ROR GOODNESS
Common Structure
Automation
Scaffolding
Migrations
ActiveRecord
Testing
Amir Barylko RoR Trilogy Part I: A New Dev Hope
23. COMMON STRUCTURE
• app
• assets: Stylesheets, javascript, images
• controllers: Prepare the data for the views
• helpers: Helper methods to render views
• models: Represent our domain
• views: Templates to be rendered
• each controller has a folder with one
template per method
• layouts:Base templates to surround the views
Amir Barylko RoR Trilogy Part I: A New Dev Hope
24. AUTOMATION
• Rake is a build tool (similar to ant, msbuild, maven)
• Has tasks that can be configured
• Out of the box has common tasks for database, testing, etc..
• List all the tasks: rake -T
• Very useful to automate tasks and to use in CI servers
Amir Barylko RoR Trilogy Part I: A New Dev Hope
25. SCAFFOLDING
• Generated automatically for CRUD operations
• Controllers
• Views
• Tests
• The template used can be replaced of modified
Amir Barylko RoR Trilogy Part I: A New Dev Hope
26. MIGRATIONS
• Track the database changes using code
• No need to use SQL
• Upgrades are easy
• Versioning is kept in the database
• Generated automatically when creating models
Amir Barylko RoR Trilogy Part I: A New Dev Hope
27. ACTIVE RECORD
• Relations (ActiveModel)
• Supports multiple databases
• Each table is a class
• All attributes are created dynamically
• Associations are declared by convention
• Each class has CRUD and query operations by default
Amir Barylko RoR Trilogy Part I: A New Dev Hope
28. TESTING OUT OF THE BOX
• Many testing frameworks available
• No additional effort to generate them
• Running them is part of the Rakefile (automation)
• Keep high quality all the way
Amir Barylko RoR Trilogy Part I: A New Dev Hope
29. MOVIE LIBRARY
Demo
Amir Barylko RoR Trilogy Part I: A New Dev Hope
30. TOPICS
• Rails application structure
• Database Migrations
• Using scaffolds
• Model - View - Controllers
• Routing
• Ajax
Amir Barylko RoR Trilogy Part I: A New Dev Hope
31. MORE GOODNESS!
Helpers
Partials
Sass
Routing
Amir Barylko RoR Trilogy Part I: A New Dev Hope
32. HELPERS
• Methods to assist in the view generation
• Reusable
• Associated to each controller
• Testable
Amir Barylko RoR Trilogy Part I: A New Dev Hope
33. PARTIALS
• Templates that can be shared
• Start with underscore “_”
• Can be rendered from views or controllers
Amir Barylko RoR Trilogy Part I: A New Dev Hope
34. SASS
• Quote from sass-lang.com:
Sass is an extension of CSS3, adding
nested rules, variables,
mixins,selector inheritance, and
more.
It’s translated to well-formatted,
standard CSS using the command line
tool or a web-framework plugin.
Amir Barylko RoR Trilogy Part I: A New Dev Hope
35. ROUTING
• Easy to configure using routes.rb
• Supports REST out of the box
• Easy to restrict actions
• Easy to alias routes
• Allows optional parameters in the routes
Amir Barylko RoR Trilogy Part I: A New Dev Hope