RACK / SSO. and a little bit about the Bundler. Tuesday, December 1, 2009 hello hello

Size: px
Start display at page:

Download "RACK / SSO. and a little bit about the Bundler. Tuesday, December 1, 2009 hello hello"

Transcription

1 RACK / SSO and a little bit about the Bundler hello hello

2 COREY / atmos@atmos.org i m a software developer and open source participant for a number of years this is me in hawaii last month with a much more awesome beard

3 ENGINE YARD i ve been at engineyard for 2.5 years did support for the first year, now doing internal development we do a lot of microapps

4 HANCOCK will smith was not involved in the creation of this project

5 like your john hancock not for everyone but i m hoping to keep it ongoing as a working example

6 RACK it s what everyone is using now, rails, merb, sinatra, ramaze realizing the power of rack helped me really embrace the simplicity of sinatra

7 SINATRA IS AWESOME 2009 has mainly been sinatra and datamapper for us there s still 2 merb apps we maintain, one of them is our SSO provider

8 GIT://GITHUB.COM/ATMOS/HANCOCK.GIT

9 SINGLE SIGN ON

10 TRADITIONAL OPENID user agent == browser consumer == app using openid to authenticate clients provider == openid provider the consumer talks to

11 TRADITIONAL OPENID no more specifying who you are no more consumer <-> provider identity negotiation no more choosing of profiles on the server

12 HANCOCK NEGOTIATION by cutting those out there s fewer redirects much easier to see what portions of the openid spec are used still conforms to the spec so it should be easily accessible from any language

13 # ~/p/hancock/bin/shotgun -p PORT config.ru require 'hancock' DataMapper.setup(:default, "sqlite3://#{file.dirname( FILE )}/development.rb") DataMapper.auto_migrate! Hancock::Consumer.create(:url => ' :label => 'Rails Dev', :internal => false) Hancock::Consumer.create(:url => ' :label => 'Rack Fans', :internal => false) Hancock::Consumer.create(:url => ' :label => 'Shotgun Fans', :internal => false) class Dragon < Hancock::App get '/' do redirect '/sso/login' unless session['hancock_server_user_id'] erb "<h2>hello <%= session_user.name %><!-- <%= session.inspect %>" run Dragon run Hancock::App example rackup file

14 HANCOCK-CLIENT there s a client middleware for consumers microapps are great for spikes that can expose business value with something like this we can spin up microapps quickly

15 hancock-client-rails require File.join(File.dirname( FILE ), 'boot') Rails::Initializer.run do config config.gem 'hancock', :lib => 'hancock' config.middleware.use Hancock::Client::Middleware do sso sso.sso_url = ' # all your other normal stuff middleware like this works in rails too in versions > 2.3.x you can either use the use keyword or the the generators for rails metal

16 UNDER THE HOOD it s what everyone is using now, rails, merb, sinatra, ramaze realizing the power of rack helped me really embrace the simplicity of sinatra

17

18 specific middleware use invokes initialize method it can take a block use

19 initialize arity for use first parameter is the middleware constant initializing with a block can do cool things. use in Sinatra

20 #!/usr/bin/env rackup use EY::SSO do sso sso.only_staff! use EY::ContactManager

21 use in Rails

22 config.middleware.use require File.join(File.dirname( FILE ), 'boot') Rails::Initializer.run do config config.gem 'hancock', :lib => 'hancock' config.middleware.use Hancock::Client::Middleware do sso sso.sso_url = ' # all your other normal stuff

23 script/generate metal sso # Allow the metal piece to run in isolation require(file.dirname( FILE ) + "/../../config/environment") unless defined?(rails) require 'hancock-client' class Sso < Hancock::Client::Default disable :raise_errors set :sso_url, ' works fine for inheriting from Sinatra::Default so you can write sinatra in rails if you want :)

24 map is a way to mount applications we use it for everyday kinds of things map

25 helpers do def url(path) request.script_name + path

26 #!/usr/bin/env rackup require File.dirname( FILE ) + '/lib/setup' require 'gateway/app' require 'migration/app' use Rack::Static, :urls => ["/css", "/img", "/js"], :root => "public" map "/gateway/" do use EY::SSO run Gateway::App map "/migration/" do use Rack::ShowExceptions if ENV["RACK_ENV"] == "production" use EY::SSO do sso sso.only_staff! run Migration::App map "/" do app = lambda do env [404, {"Content-Type" => "text/plain", "Content-Length" => "9"}, ["Not found"]] run app two separate apps, Migration::App and Gateway::App working fine together on subdir mappings

27 PROBLEMS

28 FRAGILE most fragile point is our integration with our CRM system, salesforce we have datamapper models but keeping things in sync proves to be crazy we use hoptoad and are diligent about resolving any exceptions we receive

29 CONFUSING usability and accessibility can easily be neglected, users get confused not being able to get every system on to something centralized leads to more confusion if you re going to go this route sp a chunk of time on the UX

30 TESTING how does SSO really behave today, will it behave that way tomorrow? providing a decent client API makes it easy to test, provide mocks instead of vice versa make it trivial to test so people actually do, cuts down on support

31 ADAPTERS MAKE IT EASY adapters allow us to pick the back we want to test at any time we don t write tests to do a full integration test, we just flip a switch to turn on a different adapter this allows us to iterate quickly on in memory mocks and run everything when the feature works

32 SECURITY sessions are cookie sessions, so they re difficult to expire on consumers there is https, the consumer whitelist allows and communicates over https :) single sign out sucks because it requires a shared domain cookie

33 YAY, COOKIE SESSIONS

34 THE BUNDLER how to deploy your new baby and ensure it ll play well with others this is how we manage lots of apps depencies in a repeatable manner think merb s bundling that actually works.

35 THE BUNDLER people can and will do crazy shit with rubygems. it s available on github under the wycats user carl lerche has done a tremous job keeping all of the insanity in order

36 gem 'rack_hoptoad', gem 'sinatra', gem 'rest-client', gem 'json' gem 'dm-core' gem 'dm-validations' gem 'do_sqlite3' '>=0.0.3' '~>0.9.4', :require_as => 'sinatra/base' :require_as => 'rest_client' only :test do gem 'rake' gem 'rspec', :require_as => %w(spec) gem 'rcov' gem 'bundler', '>=0.5.0' gem 'cucumber' gem 'webrat', '~>0.5.0' gem 'rack-test', '~>0.5.0', :require_as => 'rack/test' gem 'fakeweb', '>=1.2.5' gem 'ParseTree', '>=3.0.4', :require_as => 'parse_tree' gem 'randexp', '>=0.1.4' disable_system_gems # vim:ft=ruby DEPLOYING AN APP specify the gems you need required at runtime in a global scope all of your normal gem version hacks work as expected awkward requires can be handled easily as an array or single string

37 gem 'sinatra', '~>0.9.0', :require_as => [ ] gem 'haml', '~>2.2.0', :require_as => [ ] gem 'do_sqlite3', '~>0.9.12', :require_as => [ ] gem 'dm-validations', '~>0.9.11', :require_as => [ ] gem 'dm-timestamps', '~>0.9.11', :require_as => [ ] gem 'dm-types', '~>0.9.11', :require_as => [ ] gem 'ruby-openid', '~>2.1.7', :require_as => [ ] gem 'guid', '~>0.1.1', :require_as => [ ] gem 'rack-contrib', '~>0.9.2', :require_as => [ ] gem 'json', :require_as => [ ] only :test do gem 'rack-test', '~>0.5.0', :require_as => 'rack/test' gem 'webrat', '~>0.5.0' gem 'rspec', '~>1.2.9', :require_as => 'spec' gem 'rake' gem 'rcov' gem 'cucumber' gem 'dm-aggregates', '~>0.9.11' gem 'dm-sweatshop', '~>0.9.11' gem 'randexp' gem 'ParseTree', :require_as => 'parse_tree' gem 'bundler', '>=0.6.0' bin_path 'gbin' disable_system_gems BIN_PATH note the bin_path stuff, lots of gems distribute executables in bin, gbin stands for gem bin double check how you re bundling executables in your gems, you could easily overwrite your system rake.

38 gem 'sinatra', '~>0.9.0', :require_as => [ ] gem 'haml', '~>2.2.0', :require_as => [ ] gem 'do_sqlite3', '~>0.9.12', :require_as => [ ] gem 'dm-validations', '~>0.9.11', :require_as => [ ] gem 'dm-timestamps', '~>0.9.11', :require_as => [ ] gem 'dm-types', '~>0.9.11', :require_as => [ ] gem 'ruby-openid', '~>2.1.7', :require_as => [ ] gem 'guid', '~>0.1.1', :require_as => [ ] gem 'rack-contrib', '~>0.9.2', :require_as => [ ] gem 'json', :require_as => [ ] only :test do gem 'rack-test', '~>0.5.0', :require_as => 'rack/test' gem 'webrat', '~>0.5.0' gem 'rspec', '~>1.2.9', :require_as => 'spec' gem 'rake' gem 'rcov' gem 'cucumber' gem 'dm-aggregates', '~>0.9.11' gem 'dm-sweatshop', '~>0.9.11' gem 'randexp' gem 'ParseTree', :require_as => 'parse_tree' gem 'bundler', '>=0.6.0' bin_path 'gbin' disable_system_gems DISABLE_SYSTEM_GEMS turns out to be very useful as there won t be any system gem conflicts keeps each application nice, local and repeatably deployed.

39 Bundler.require_env(:test) require File.join(File.dirname( FILE ), '..', 'lib', 'myapp') require 'pp' DataMapper.setup(:default, 'sqlite3://:memory:') DataMapper.auto_migrate! Spec::Runner.configure do config config.include(rack::test::methods) def app MyApp.app SPEC/SPEC_HELPER.RB explicitly call Bundler.require_env(:test) to include that only block from before require your application and all is well.

40 Bundler.require_env require File.expand_path(File.join(File.dirname( FILE ), 'lib', 'my_app')) DataMapper.setup(:default, 'sqlite3://:memory:') DataMapper.auto_migrate! run MyApp.app CONFIG.RU using Bundler.require_env sets you up perfectly it runs fine under passenger other executables should be used from the bin_path directorytring

41 gem 'sinatra', '~>0.9.0', :require_as => [ ] gem 'haml', '~>2.2.0', :require_as => [ ] gem 'do_sqlite3', '~>0.9.12', :require_as => [ ] gem 'dm-validations', '~>0.9.11', :require_as => [ ] gem 'dm-timestamps', '~>0.9.11', :require_as => [ ] gem 'dm-types', '~>0.9.11', :require_as => [ ] gem 'ruby-openid', '~>2.1.7', :require_as => [ ] gem 'guid', '~>0.1.1', :require_as => [ ] gem 'rack-contrib', '~>0.9.2', :require_as => [ ] gem 'json', :require_as => [ ] only :test do gem 'rack-test', '~>0.5.0', :require_as => 'rack/test' gem 'webrat', '~>0.5.0' gem 'rspec', '~>1.2.9', :require_as => 'spec' gem 'rake' gem 'rcov' gem 'cucumber' gem 'dm-aggregates', '~>0.9.11' gem 'dm-sweatshop', '~>0.9.11' gem 'randexp' gem 'ParseTree', :require_as => 'parse_tree' gem 'bundler', '>=0.6.0' bin_path 'gbin' disable_system_gems DEPLOYING A GEM specify the gems you need required at runtime in a global scope but don t require them your application code should require them and cause bad deployments.

42 require 'rake/gempackagetask' require 'rubygems/specification' require 'date' require 'bundler' spec = Gem::Specification.new do s... manifest = Bundler::Environment.load(File.dirname( FILE ) + '/Gemfile') manifest.depencies.each do d next if d.only && d.only.include?('test') s.add_depency(d.name, d.version) YOUR RAKE FILE you can require the bundler and use your manifest file to gem depencies this way you only maintain it in one spot you could also do development depencies if you d like

43 IDENTITY lots of other realms of identity involved to really get it all right.

44 IDENTITY security + authentication + information

45 IDENTITY a slightly updated version uses oauth, we do a similar thing with the oauth provider. our next wave is to take advantage of

46 THANKS SO MUCH!

47 QUESTIONS? COMMENTS?

Rails Engines. Use Case. The Implementation

Rails Engines. Use Case. The Implementation Rails Engines Rails engines range from simple plugins to powerful micro-applications. The discussions we ve had so far about Railties are closely related to the function of a Rails engine. One interesting

More information

Introduction and first application. Luigi De Russis. Rails 101

Introduction and first application. Luigi De Russis. Rails 101 Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language

More information

Contents in Detail. Foreword by Xavier Noria

Contents in Detail. Foreword by Xavier Noria Contents in Detail Foreword by Xavier Noria Acknowledgments xv xvii Introduction xix Who This Book Is For................................................ xx Overview...xx Installation.... xxi Ruby, Rails,

More information

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub

GraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub GraphQL Concepts & Challenges - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub Rails API WHY - You have your Rails app, why bother with an API? - You have clients.

More information

JRuby and Ioke. On Google AppEngine. Ola Bini

JRuby and Ioke. On Google AppEngine. Ola Bini JRuby and Ioke On Google AppEngine Ola Bini ola.bini@gmail.com http://olabini.com/blog Vanity slide ThoughtWorks consultant/developer/programming language geek JRuby Core Developer From Stockholm, Sweden

More information

Lecture 4. Ruby on Rails 1 / 49

Lecture 4. Ruby on Rails 1 / 49 Lecture 4 Ruby on Rails 1 / 49 Client-Server Model 2 / 49 What is it? A client (e.g. web browser, phone, computer, etc.) sends a request to a server Request is an HTTP request Stands for HyperText Transfer

More information

Keeping Rails on the Tracks

Keeping Rails on the Tracks Keeping Rails on the Tracks Mikel Lindsaar @raasdnil lindsaar.net Working in Rails & Ruby for 5+ Years http://lindsaar.net/ http://stillalive.com/ http://rubyx.com/ On the Rails? What do I mean by on the

More information

Lecture 4. Ruby on Rails 1 / 52

Lecture 4. Ruby on Rails 1 / 52 Lecture 4 Ruby on Rails 1 / 52 Homeworks 2 & 3 Grades were released for homework 2 Homework 3 was due last night Everyone got a style freebie since my default setup ignores spec files and I didn't change

More information

RSpec Core Project: RSpec Core 2.11 Publisher: RSpec. Issues. Open Feedback Dialog. rspec-core provides the structure for RSpec code examples:

RSpec Core Project: RSpec Core 2.11 Publisher: RSpec. Issues. Open Feedback Dialog. rspec-core provides the structure for RSpec code examples: Open Feedback Dialog Project: RSpec Core 2.11 Publisher: RSpec RSpec Core 2.11 rspec-core provides the structure for RSpec code examples: describe Account do it "has a balance of zero when first opened"

More information

RSPec Documentation. 4. Scenario Testing Examples of OAR REST APIs using Rspec

RSPec Documentation. 4. Scenario Testing Examples of OAR REST APIs using Rspec RSPec Documentation Contents: 1. Introduction to Rspec - Installing Rspec Gem (Getting Started) - Terminology used in Rspec 2. Writing Simple Rspec Tests 3. Running Rspec Testfiles 4. Scenario Testing

More information

OSGi on the Server. Martin Lippert (it-agile GmbH)

OSGi on the Server. Martin Lippert (it-agile GmbH) OSGi on the Server Martin Lippert (it-agile GmbH) lippert@acm.org 2009 by Martin Lippert; made available under the EPL v1.0 October 6 th, 2009 Overview OSGi in 5 minutes Apps on the server (today and tomorrow)

More information

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile

ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile ChiliProject - Bug # 529: builder is not part of the bundle. Add it to Gemfile Status: Closed Priority: Normal Author: Enno Grà per Category: Created: 2011-07-17 Assignee: Updated: 2012-06-23 Due date:

More information

Toby Crawley. Creative Commons BY-SA 3.0. Raleigh.rb April 2011

Toby Crawley. Creative Commons BY-SA 3.0. Raleigh.rb April 2011 Toby Crawley Creative Commons BY-SA 3.0 Raleigh.rb April 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To have you all downloading TorqueBox right after

More information

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011

Toby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011 Toby Crawley Creative Commons BY-SA 3.0 Charlotte.rb May 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To convert you all to TorqueBox users! TorqueBox

More information

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies

Ruby on Rails 3. Robert Crida Stuart Corbishley. Clue Technologies Ruby on Rails 3 Robert Crida Stuart Corbishley Clue Technologies Topic Overview What is Rails New in Rails 3 New Project Generators MVC Active Record UJS RVM Bundler Migrations Factory Girl RSpec haml

More information

Introducing Rack. Christian Neukirchen Editor in Chief of Anarchaia

Introducing Rack. Christian Neukirchen Editor in Chief of Anarchaia Introducing Rack Christian Neukirchen Editor in Chief of Anarchaia A Google Image Search for ruby rack reveals: Overview What is Rack? Why do we need Rack? The design of Rack The Rack distribution Coset:

More information

Agile Web Development with Rails 5.1

Agile Web Development with Rails 5.1 Extracted from: Agile Web Development with Rails 5.1 This PDF file contains pages extracted from Agile Web Development with Rails 5.1, published by the Pragmatic Bookshelf. For more information or to purchase

More information

We are assuming you have node installed!

We are assuming you have node installed! Node.js Hosting We are assuming you have node installed! This lesson assumes you've installed and are a bit familiar with JavaScript and node.js. If you do not have node, you can download and install it

More information

Merging. Merb into Rails

Merging. Merb into Rails Merging Merb into Rails Me Yehuda Katz @carlhuda Cloud 12/23 2008 So how'd we do? "Rails will become more modular, starting with a rails-core, and including the ability to opt in or out of specific

More information

Lecture 3. Miscellaneous Ruby and Testing

Lecture 3. Miscellaneous Ruby and Testing Lecture 3 Miscellaneous Ruby and Testing 1 Sublime Text Guide I wrote a quick Sublime Text Guide that will help with Rubocop offenses It ll walk you through: Using spaces instead of tabs by default Using

More information

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs

And the Greatest of These Is... Rack Support. Ben Scofield Viget Labs Welcome 1 And the Greatest of These Is... Rack Support Ben Scofield Viget Labs 2 #?forben 3 4 Application Templates 5 Nested Attribute Assignment flickr: angelrays 6 ActiveRecord::Base#touch flickr: jjjohn

More information

Agile Web Development with Rails 5

Agile Web Development with Rails 5 Extracted from: Agile Web Development with Rails 5 This PDF file contains pages extracted from Agile Web Development with Rails 5, published by the Pragmatic Bookshelf. For more information or to purchase

More information

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul

Quick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul CIS192 Python Programming Web Frameworks and Web APIs Harry Smith University of Pennsylvania March 29, 2016 Harry Smith (University of Pennsylvania) CIS 192 March 29, 2016 1 / 25 Quick housekeeping Last

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Ralf Teusner ralf.teusner@hpi.de Software Engineering II WS 2018/19 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Liferay Security Features Overview. How Liferay Approaches Security

Liferay Security Features Overview. How Liferay Approaches Security Liferay Security Features Overview How Liferay Approaches Security Table of Contents Executive Summary.......................................... 1 Transport Security............................................

More information

Demystifying Rails Plugin Development

Demystifying Rails Plugin Development Demystifying Rails Plugin Development Nick Plante :: Voices That Matter Professional Ruby Conference November 18th, 2008 Obligatory Introduction Plugins are generalized, reusable code libraries Ext or

More information

Scaling Rails on App Engine with JRuby and Duby

Scaling Rails on App Engine with JRuby and Duby Scaling Rails on App Engine with JRuby and Duby Run your apps on Google Servers, with access to first-class Java APIs John Woodell David Masover Ryan Brown June 9, 2010 2 Google App Engine 3 Key Features

More information

Jenkins 2 UX Improvements. Keith Zantow Software Engineer, CloudBees, Inc.

Jenkins 2 UX Improvements. Keith Zantow Software Engineer, CloudBees, Inc. Jenkins 2 UX Improvements Keith Zantow Software Engineer, CloudBees, Inc. User Experience Jenkins 1 UX Useful plugins Example: CVS Configuration experience Aging technologies A few pages to configure the

More information

Episode 298. Getting Started With Spree

Episode 298. Getting Started With Spree Episode 298 Getting Started With Spree Spree 1 is a fully-featured e-commerce solution that can be easily integrated into a Rails application. If you need to turn a Rails app into a store that sells products

More information

Crystal for Rubyists

Crystal for Rubyists Crystal for Rubyists Serdar Dogruyol Contents Preamble 2 Why Crystal? 3 Installing Crystal 5 Binary installers.............................. 5 From Source................................ 5 Future Proofing............................

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Keven Richly keven.richly@hpi.de Software Engineering II WS 2017/18 Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby on

More information

Backend Development. SWE 432, Fall Web Application Development

Backend Development. SWE 432, Fall Web Application Development Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy

More information

CS193X: Web Programming Fundamentals

CS193X: Web Programming Fundamentals CS193X: Web Programming Fundamentals Spring 2017 Victoria Kirst (vrk@stanford.edu) CS193X schedule Today - Middleware and Routes - Single-page web app - More MongoDB examples - Authentication - Victoria

More information

trevor.bramwell.net Documentation

trevor.bramwell.net Documentation trevor.bramwell.net Documentation Release Trevor Bramwell April 20, 2015 Contents 1 About Me 1 2 Posts 3 2.1 Field - extract fields from a file..................................... 3 2.2 Distribute Native

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Software Engineering II WS 2016/17 Arian Treffer arian.treffer@hpi.de Prof. Plattner, Dr. Uflacker Enterprise Platform and Integration Concepts group Introduction to Ruby

More information

Rails: MVC in action

Rails: MVC in action Ruby on Rails Basic Facts 1. Rails is a web application framework built upon, and written in, the Ruby programming language. 2. Open source 3. Easy to learn; difficult to master. 4. Fun (and a time-saver)!

More information

Standards-based Secure Signon for Cloud and Native Mobile Agents

Standards-based Secure Signon for Cloud and Native Mobile Agents Standards-based Secure Signon for Cloud and Native Mobile Agents P. Dingle July 2013 1 Mobile http://www.flickr.com/photos/nataliejohnson/2776045330 2 http://www.flickr.com/photos/soo/5525383948 Mobile

More information

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd

What is Node.js? Tim Davis Director, The Turtle Partnership Ltd What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks

More information

Tools. SWE 432, Fall Design and Implementation of Software for the Web

Tools. SWE 432, Fall Design and Implementation of Software for the Web Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much

More information

Identity management. Tuomas Aura CSE-C3400 Information security. Aalto University, autumn 2014

Identity management. Tuomas Aura CSE-C3400 Information security. Aalto University, autumn 2014 Identity management Tuomas Aura CSE-C3400 Information security Aalto University, autumn 2014 Outline 1. Single sign-on 2. SAML and Shibboleth 3. OpenId 4. OAuth 5. (Corporate IAM) 6. Strong identity 2

More information

This video is part of the Microsoft Virtual Academy.

This video is part of the Microsoft Virtual Academy. This video is part of the Microsoft Virtual Academy. 1 In this session we re going to talk about building for the private cloud using the Microsoft deployment toolkit 2012, my name s Mike Niehaus, I m

More information

BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS BY PATRICK LENZ DOWNLOAD EBOOK : BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS BY PATRICK LENZ PDF

BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS BY PATRICK LENZ DOWNLOAD EBOOK : BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS BY PATRICK LENZ PDF BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS BY PATRICK LENZ DOWNLOAD EBOOK : BUILD YOUR OWN RUBY ON RAILS WEB APPLICATIONS Click link bellow and free register to download ebook: BUILD YOUR OWN RUBY ON

More information

Prework & Module A. Programming Fundamentals Ruby Basics and Object Oriented - Programming Syllabus

Prework & Module A. Programming Fundamentals Ruby Basics and Object Oriented - Programming Syllabus CPSC S1: Introduction to Full-Stack Web Development Prework & Module A Programming Fundamentals Ruby Basics and Object Oriented - Programming Syllabus Unit Learning Objectives Reference Topics Competency

More information

DrupalGovcon July 20th, 2016

DrupalGovcon July 20th, 2016 Agile Drupal 8 Builds: Doing the Most Without PHP DrupalGovcon July 20th, 2016 Matt Cheney & Molly Byrnes 1 Hello to Drupalcon Govcon My name is Matthew Cheney. I work on the magical platform that is Pantheon.

More information

Stanko Tadić

Stanko Tadić State of modern JavaScript development 04.02.2017. Stanko Tadić HELLO, MY NAME IS STANKO TADIĆ and I m a Principal Developer at Work & Co. I love development, music and cartoons. You might say I m a geek.

More information

The Current State of OAuth 2. Aaron Open Source Bridge Portland, June 2011

The Current State of OAuth 2. Aaron Open Source Bridge Portland, June 2011 The Current State of OAuth 2 Aaron Parecki Open Source Bridge Portland, June 2011 A Brief History Before OAuth aka the Dark Ages If a third party wanted access to an account, you d give them your password.

More information

Intermediate Cucumber. CSCI 5828: Foundations of Software Engineering Lecture 17 03/13/2012

Intermediate Cucumber. CSCI 5828: Foundations of Software Engineering Lecture 17 03/13/2012 Intermediate Cucumber CSCI 5828: Foundations of Software Engineering Lecture 17 03/13/2012 1 ReadyTalk Recruiting Event The ACM Student Chapter is hosting a recruiting event by a local Denver start-up

More information

COM401 Software Engineering Laboratory

COM401 Software Engineering Laboratory Computer Engineering Department COM401 Software Engineering Laboratory November 04, 2014 LAB-3: Rails Introduction Time: 2 lab hours Objectives: Practice with Ruby Symbols Routes MVC pattern CRUD operations

More information

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp

Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp Rails + Legacy Databases Brian Hogan - RailsConf 2009 twitter: bphogan IRC: hoganbp So the main thing I want you to take away from this talk is... Please don t do it! Questions? Just kidding. The point

More information

The Rails Initialization Process

The Rails Initialization Process The Rails Initialization Process December 25, 2014 This guide explains the internals of the initialization process in Rails as of Rails 4. It is an extremely in-depth guide and recommed for advanced Rails

More information

Tuesday, January 13, Backend III: Node.js with Databases

Tuesday, January 13, Backend III: Node.js with Databases 6.148 Backend III: Node.js with Databases HELLO AND WELCOME! Your Feels Lecture too fast! Your Feels Lecture too fast! Too many languages Your Feels Lecture too fast! Too many languages Code more in class

More information

Client Side MVC with Backbone & Rails. Tom

Client Side MVC with Backbone & Rails. Tom Client Side MVC with Backbone & Rails Tom Zeng @tomzeng tom@intridea.com Client Side MV* with Backbone & Rails Benefits of Client Side MVC Backbone.js Introduction Client Side MV* Alternatives Backbone

More information

Ruby on Rails Welcome. Using the exercise files

Ruby on Rails Welcome. Using the exercise files Ruby on Rails Welcome Welcome to Ruby on Rails Essential Training. In this course, we're going to learn the popular open source web development framework. We will walk through each part of the framework,

More information

Build Mobile Cloud Apps Effectively Using Oracle Mobile Cloud Services (MCS)

Build Mobile Cloud Apps Effectively Using Oracle Mobile Cloud Services (MCS) Build Mobile Cloud Apps Effectively Using Oracle Mobile Cloud Services (MCS) Presented by: John Jay King Download this paper from: 1 Session Objectives Understand the need for something like Oracle Mobile

More information

Deploying Rails with Kubernetes

Deploying Rails with Kubernetes Deploying Rails with Kubernetes AWS Edition Pablo Acuña This book is for sale at http://leanpub.com/deploying-rails-with-kubernetes This version was published on 2016-05-21 This is a Leanpub book. Leanpub

More information

Chamberlin and Boyce - SEQUEL: A Structured English Query Language

Chamberlin and Boyce - SEQUEL: A Structured English Query Language Programming Languages (CS302 2007S) Chamberlin and Boyce - SEQUEL: A Structured English Query Language Comments on: Chamberlin, D. D. and Boyce, R. F. (1974). SEQUEL: A Structured English Query Language.

More information

Science-as-a-Service

Science-as-a-Service Science-as-a-Service The iplant Foundation Rion Dooley Edwin Skidmore Dan Stanzione Steve Terry Matthew Vaughn Outline Why, why, why! When duct tape isn t enough Building an API for the web Core services

More information

Extend EBS Using Applications Express

Extend EBS Using Applications Express Extend EBS Using Applications Express John Peters JRPJR, Inc. Abstract Few people know about Oracle Applications Express (APEX) an actual free Oracle Tool included with your Oracle DB Licenses. How many

More information

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil

Ruby in the Sky with Diamonds. August, 2014 Sao Paulo, Brazil Ruby in the Sky with Diamonds August, 2014 Sao Paulo, Brazil JELASTIC PLATFORM AS INFRASTRUCTURE Jelastic provides enterprise cloud software that redefines the economics of cloud deployment and management.

More information

Introducing the Harmony Core Open Source Project Presented by Jeff Greene

Introducing the Harmony Core Open Source Project Presented by Jeff Greene Introducing the Harmony Core Open Source Project Presented by Jeff Greene Harmony Core Harmony Core is a framework that consists of libraries, CodeGen templates, and conventions that enable you to expose

More information

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

mismatch between what is maybe possible today and what is going on in many of today's IDEs. What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to

More information

A New Model for Image Distribution

A New Model for Image Distribution A New Model for Image Distribution Stephen Day Distribution, Tech Lead Docker, Inc. stephen@docker.com @stevvooe github.com/stevvooe Overview Why does this matter? History Docker Registry API V2 Implementation

More information

Flask-Cors Documentation

Flask-Cors Documentation Flask-Cors Documentation Release 3.0.4 Cory Dolphin Apr 26, 2018 Contents 1 Installation 3 2 Usage 5 2.1 Simple Usage............................................... 5 3 Documentation 7 4 Troubleshooting

More information

Lecture 3. Miscellaneous Ruby and Testing 1 / 40

Lecture 3. Miscellaneous Ruby and Testing 1 / 40 Lecture 3 Miscellaneous Ruby and Testing 1 / 40 Homework 1 Grades were released! TAs provided feedback on best practices, but did not take off points Keep the comments in mind for future assignments! Any

More information

Amyyon customers can t wait to get their hands on it s new application, developed in Uniface.

Amyyon customers can t wait to get their hands on it s new application, developed in Uniface. customers can t wait to get their hands on it s new application, developed in Uniface. 1 CUSTOMER SECTOR Information Technology COUNTRY Netherlands CHALLENGE Migrate the rich functionality of a client/server

More information

Web Hosting. Important features to consider

Web Hosting. Important features to consider Web Hosting Important features to consider Amount of Storage When choosing your web hosting, one of your primary concerns will obviously be How much data can I store? For most small and medium web sites,

More information

Your First Ruby Script

Your First Ruby Script Learn Ruby in 50 pages Your First Ruby Script Step-By-Step Martin Miliauskas @mmiliauskas 1 Your First Ruby Script, Step-By-Step By Martin Miliauskas Published in 2013 by Martin Miliauskas On the web:

More information

Web API Best Practices

Web API Best Practices Web API Best Practices STEVE SMITH ARDALIS.COM @ARDALIS STEVE@DEVIQ.COM DEVIQ.COM Learn More After Today 1) DevIQ ASP.NET Core Quick Start http://aspnetcorequickstart.com DEVINTFALL17 20% OFF! 2) Microsoft

More information

Best Practices: Authentication & Authorization Infrastructure. Massimo Benini HPCAC - April,

Best Practices: Authentication & Authorization Infrastructure. Massimo Benini HPCAC - April, Best Practices: Authentication & Authorization Infrastructure Massimo Benini HPCAC - April, 03 2019 Agenda - Common Vocabulary - Keycloak Overview - OAUTH2 and OIDC - Microservices Auth/Authz techniques

More information

Case study on PhoneGap / Apache Cordova

Case study on PhoneGap / Apache Cordova Chapter 1 Case study on PhoneGap / Apache Cordova 1.1 Introduction to PhoneGap / Apache Cordova PhoneGap is a free and open source framework that allows you to create mobile applications in a cross platform

More information

Guide - Deploying for Production. apiman Final

Guide - Deploying for Production. apiman Final Guide - Deploying for Production apiman 1.2.9.Final 1. Deployment Tooling for apiman... 1 2. Architecture Summary... 3 3. Database... 5 4. Elasticsearch... 7 5. Keycloak... 9 6. API Gateway... 11 6.1.

More information

Seshat Documentation. Release Joshua P Ashby

Seshat Documentation. Release Joshua P Ashby Seshat Documentation Release 1.0.0 Joshua P Ashby Apr 05, 2017 Contents 1 A Few Minor Warnings 3 2 Quick Start 5 2.1 Contributing............................................... 5 2.2 Doc Contents...............................................

More information

15 Minute Traffic Formula. Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3

15 Minute Traffic Formula. Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3 Contents HOW TO GET MORE TRAFFIC IN 15 MINUTES WITH SEO... 3 HOW TO TURN YOUR OLD, RUSTY BLOG POSTS INTO A PASSIVE TRAFFIC SYSTEM... 4 HOW I USED THE GOOGLE KEYWORD PLANNER TO GET 11,908 NEW READERS TO

More information

SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7

SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7 Hi everyone once again welcome to this lecture we are actually the course is Linux programming and scripting we have been talking about the Perl, Perl

More information

Fast, Sexy, and Svelte: Our Kind of Rails Testing. Dan Manges (ThoughtWorks) zak (unemployed)

Fast, Sexy, and Svelte: Our Kind of Rails Testing. Dan Manges (ThoughtWorks) zak (unemployed) Fast, Sexy, and Svelte: Our Kind of Rails Testing Dan Manges (ThoughtWorks) zak (unemployed) a translation without buzzwords notes short build times maintainable comprehensive coverage this talk: how to

More information

OAuth2 Autoconfig. Copyright

OAuth2 Autoconfig. Copyright Copyright Table of Contents... iii 1. Downloading... 1 1.1. Source... 1 1.2. Maven... 1 1.3. Gradle... 2 2. Authorization Server... 3 3. Resource Server... 4 I. Token Type in User Info... 5 II. Customizing

More information

Gmail Integration for Salesforce and Dynamics 365

Gmail Integration for Salesforce and Dynamics 365 Gmail Integration for Salesforce and Dynamics 365 PRIVACY POLICY LAST MODIFIED: MARCH 12, 2019 2019 Introduction Welcome to Gmail Integration for Salesforce and Dynamics 365, a service provided by Akvelon,

More information

Servers & Developers. Julian Nadeau Production Engineer

Servers & Developers. Julian Nadeau Production Engineer Servers & Developers Julian Nadeau Production Engineer Provisioning & Orchestration of Servers Setting a server up Packer - one server at a time Chef - all servers at once Containerization What are Containers?

More information

7+ GRAPHICS LIBRARIES TO ENHANCE YOUR EMBEDDED ANALYTICS

7+ GRAPHICS LIBRARIES TO ENHANCE YOUR EMBEDDED ANALYTICS 7+ GRAPHICS LIBRARIES TO ENHANCE YOUR EMBEDDED ANALYTICS TABLE OF CONTENTS INTRODUCTION...3 FONT AWESOME...4 GOOGLE WEB FONTS...5 ADOBE COLOR WHEEL...6 WEB LANGUAGES...7 CSS FRAMEWORKS...8 JAVASCRIPT LIBRARIES...9

More information

Stop Cyber Threats With Adaptive Micro-Segmentation. Jeff Francis Regional Systems Engineer

Stop Cyber Threats With Adaptive Micro-Segmentation. Jeff Francis Regional Systems Engineer Stop Cyber Threats With Adaptive Micro-Segmentation Jeff Francis Regional Systems Engineer Who is This Guy, and Why is He Here? Jeff Francis Regional Systems Engineer Northwestern United States Datacenter

More information

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES

LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES LEVERAGING CONVENTION OVER CONFIGURATION FOR STATIC ANALYSIS IN DYNAMIC LANGUAGES David Worth dave@highgroove.com (email) - @highgroovedave (twitter) Or why it s ok to write simple frameworks for complicated

More information

Security Workbook. Version 1: Spring 13. Last updated: February 22, 2013

Security Workbook. Version 1: Spring 13. Last updated: February 22, 2013 Version 1: Spring 13 Security Workbook Last updated: February 22, 2013 Copyright 2000 2013 salesforce.com, inc. All rights reserved. Salesforce.com is a registered trademark of salesforce.com, inc., as

More information

The AffManual by Raimundas M.

The AffManual by Raimundas M. Page 1 METHOD #8 Clickbank and Mobile Apps Page 2 Introduction Mobile app industry is on fire at the moment and I don't see slowing down any time soon. Anyone who use smartphones, also use mobile apps.

More information

Liberty Right Fit for MicroProfile

Liberty Right Fit for MicroProfile IBM _ 1 Liberty Right Fit for MicroProfile Alasdair Nottingham, IBM, STSM, WebSphere Runtime Architect Kevin Sutter, IBM, STSM, Java EE Architect JavaOne Sept 2016 Who Are We? Kevin Sutter WebSphere Java

More information

Testing in AWS. Let s go back to the lambda function(sample-hello) you made before. - AWS Lambda - Select Simple-Hello

Testing in AWS. Let s go back to the lambda function(sample-hello) you made before. - AWS Lambda - Select Simple-Hello Testing in AWS Let s go back to the lambda function(sample-hello) you made before. - AWS Lambda - Select Simple-Hello Testing in AWS Simulate events and have the function react to them. Click the down

More information

Improve Cookiebased. with Decorator Pattern

Improve Cookiebased. with Decorator Pattern Improve Cookiebased Session with Decorator Pattern @ ConFoo Montreal 2018-03-08 by Jian Weihang Improve Cookie-based Session with Decorator Pattern 1 Bonjour! Improve Cookie-based Session with Decorator

More information

Box Connector. Version 2.0. User Guide

Box Connector. Version 2.0. User Guide Box Connector Version 2.0 User Guide 2016 Ping Identity Corporation. All rights reserved. PingFederate Box Connector User Guide Version 2.0 March, 2016 Ping Identity Corporation 1001 17th Street, Suite

More information

Connect with Remedy: SmartIT: Social Event Manager Webinar Q&A

Connect with Remedy: SmartIT: Social Event Manager Webinar Q&A Connect with Remedy: SmartIT: Social Event Manager Webinar Q&A Q: Will Desktop/browser alerts be added to notification capabilities on SmartIT? A: In general we don't provide guidance on future capabilities.

More information

Automation with Meraki Provisioning API

Automation with Meraki Provisioning API DEVNET-2120 Automation with Meraki Provisioning API Courtney M. Batiste, Solutions Architect- Cisco Meraki Cisco Spark How Questions? Use Cisco Spark to communicate with the speaker after the session 1.

More information

Multitenancy with Rails

Multitenancy with Rails Multitenancy with Rails And subscriptions too! Ryan Bigg This book is for sale at http://leanpub.com/multi-tenancy-rails This version was published on 2015-11-24 This is a Leanpub book. Leanpub empowers

More information

Agile Sugar to Google Apps Synchronizer User s Guide. v1.0.25

Agile Sugar to Google Apps Synchronizer User s Guide. v1.0.25 Agile Sugar to Google Apps Synchronizer User s Guide v1.0.25 GrinMark Limited, 2006-2017 http://www.grinmark.com Contents Contents 1 Overview 2 1.1 Terminology..................................... 2 1.2

More information

Developing ASP.NET MVC Web Applications (486)

Developing ASP.NET MVC Web Applications (486) Developing ASP.NET MVC Web Applications (486) Design the application architecture Plan the application layers Plan data access; plan for separation of concerns, appropriate use of models, views, controllers,

More information

3 Continuous Integration 3. Automated system finding bugs is better than people

3 Continuous Integration 3. Automated system finding bugs is better than people This presentation is based upon a 3 day course I took from Jared Richardson. The examples and most of the tools presented are Java-centric, but there are equivalent tools for other languages or you can

More information

Bambu API Documentation

Bambu API Documentation Bambu API Documentation Release 2.0.1 Steadman Sep 27, 2017 Contents 1 About Bambu API 3 2 About Bambu Tools 2.0 5 3 Installation 7 4 Basic usage 9 5 Questions or suggestions? 11 6 Contents 13 6.1 Defining

More information

Where s my DNS? Sara Dickinson IDS 2. Where s my DNS?

Where s my DNS? Sara Dickinson IDS 2. Where s my DNS? Sara Dickinson sara@sinodun.com Stub to recursive The DNS protocol is evolving DoT: DNS-over-TLS DoH: DNS-over-HTTPS (WIP) DoT RFC7858 standard May 2016 Implemented to-date in standard open source DNS

More information

Unit Testing J2EE from JRuby. Evan Light

Unit Testing J2EE from JRuby. Evan Light Unit Testing J2EE from JRuby Evan Light http://evan.tiggerpalace.com Who I am Professional developer since 1996 Java since 1999 J2EE since 2000 Ruby since 2006 Some yutz with Keynote and a remote control

More information

Full Stack boot camp

Full Stack boot camp Name Full Stack boot camp Duration (Hours) JavaScript Programming 56 Git 8 Front End Development Basics 24 Typescript 8 React Basics 40 E2E Testing 8 Build & Setup 8 Advanced JavaScript 48 NodeJS 24 Building

More information

ForgeRock Access Management Customization and APIs

ForgeRock Access Management Customization and APIs training@forgerock.com ForgeRock Access Management Customization and APIs Description AM-421 Course Description Revision B This course provides a hands-on technical introduction to ForgeRock Access Management

More information

Leveraging the Globus Platform in your Web Applications. GlobusWorld April 26, 2018 Greg Nawrocki

Leveraging the Globus Platform in your Web Applications. GlobusWorld April 26, 2018 Greg Nawrocki Leveraging the Globus Platform in your Web Applications GlobusWorld April 26, 2018 Greg Nawrocki greg@globus.org Topics and Goals Platform Overview Why expose the APIs A quick touch of the Globus Auth

More information

Copyright 2013 Avdi Grimm. All rights reserved.

Copyright 2013 Avdi Grimm. All rights reserved. Copyright 2013 Avdi Grimm. All rights reserved. Confident Ruby 4.17 Represent special cases as objects If it's possible to for a variable to be null, you have to remember to surround it with null test

More information