Ruby & Ruby on Rails for arkitekter. Kim Harding Christensen khc@kimharding.com

Size: px
Start display at page:

Download "Ruby & Ruby on Rails for arkitekter. Kim Harding Christensen khc@kimharding.com"

Transcription

1 Ruby & Ruby on Rails for arkitekter Kim Harding Christensen

2 Aga Intro & problemstilling Introduktion til Ruby DSL er Introduktion til Ruby on Rails Begreber (MVC & REST) Demo

3 Intro

4 Kim er ikke glad!

5 Software udvikling er for svært og tager al for lang tid

6 Problemområde [Distribuerede informationssystemer].net 3.0

7 Infosets + Objects + Tuples = #&$?!

8 hvilket fører til

9

10 When I work in Java, I wouldn't say I feel joy. I don't feel like I'm riding a fast stallion through beautiful wooded hills, the wind in my long, flowing hair. I feel more like I'm struggling to convince a workhorse to pull a plow. Bill Venners

11 Java is the blunt scissors of programming. It s what we give to children to program Dave Thomas

12 Problemområde Sprog Platform

13 Introduktion til Ruby (på 10 slides) I have a lot of trouble writing about Ruby, because I find there's nothing to say. It's why I almost never post to the O'Reilly Ruby blog. Ruby seems so self-explanatory to me. It makes it almost boring; you try to focus on Ruby and you wind up talking about some problem domain instead of the language. I think that's the goal of all programming languages, but so far Ruby's one of the few to succeed at it so well. Steve Yegge

14 Ruby Pure Object-Oriented Language Dynamisk type system Simpel nedarvning + mixins Block, closures, continuations Read-eval-print Meta-programmering, metaklasser, introspection, eval Simpel & konsistent syntaks Regulære udtryk Cross-platform

15 class def instance_method(arg)... def self.class_method(arg)... def foo() # def foo=(value) # = value def state_changing_method!()... def query_method?...

16 class LinkedList class Node def = element def def def = node def add(element)...

17 class LinkedList class Node def = element def class Node attr_reader :element attr_accessor :next def = element def def = node def add(element)...

18 class LinkedList class Node... def add(element) node = Node.new(element) if (@first == = node if (@last!= = = node

19 class LinkedList class Node... def add(element) node = Node.new(element) if (@first == = node if (@last!= = = node class LinkedList class Node... def add(element) node = = = = node

20 Block & Closures a = 7 [1,2,3].each { element puts(element + a)}

21 Block & Closures a = 7 [1,2,3].each { element puts(element + a)} def twice() yield yield twice() { puts Hello }

22 class LinkedList def add(element)... def each() if block_given? node while node do yield node.element node = node.next self > l = LinkedList.new > [1,2,3,4,5].each { e l.add e} > l.each { e puts e} >

23 Nedarvning class Collection def size() count = 0 self.each { e count += 1} count class LinkedList < Collection def add(element)... def each()...

24 Moduler & Mixins module Enumeration def select() result = Array.new this.each { e result << yield(e)} result def detect()... def reject()... def collect()......

25 class Collection include Enumeration def size() count = 0 self.each { e count += 1} count class LinkedList < Collection def add(element)... alias :<< :add def each()...

26 Metode lookup class Object include Kernel class A include M module Kernel module M class B < A b = B.new b.foo

27 Domain Specific Languages

28 DSL Ekstern DSL Intern DSL

29 Rake - Ruby Make Rakefiler er skrevet i standard Ruby - ingen behov for XML filer Tasks med afhængigheder Rule patterns Rake består af en fil: linier Ruby kode

30 file 'main.o' => ["main.c", "greet.h"] do sh "cc -c -o main.o main.c" file 'greet.o' => ['greet.c'] do sh "cc -c -o greet.o greet.c" file "hello" => ["main.o", "greet.o"] do sh "cc -o hello main.o greet.o" > rake hello

31 require 'rake/clean' CLEAN.include('*.o') CLOBBER.include('hello') task :default => ["hello"] SRC = FileList['*.c'] OBJ = SRC.ext('o') rule '.o' => '.c' do t sh "cc -c -o #{t.name} #{t.source}" file "hello" => OBJ do sh "cc -o hello #{OBJ}" # File depencies go here... file 'main.o' => ['main.c', 'greet.h'] file 'greet.o' => ['greet.c']

32 Ruby On Rails

33 Rails Full stack web framework MVC baseret Opinionated Convention over configuration Open Source

34 Model - View - Controller 1 Controller View Model DB

35 Rails MVC Routing Controller View Model DB

36 Rails MVC Routing Controller View Model DB

37 Rails MVC Routing KursusController.index() Controller View Model DB

38 Rails MVC Routing KursusController.index() = Kursus.find(:all) View Model DB

39 Rails MVC Routing KursusController.index() Controller = Kursus.find(:all) View Model DB

40 Rails MVC Routing KursusController.index() Controller = Kursus.find(:all) View <h1>kurser</h1> do kursus %> %></h2> %> <% %> Model DB

41 ActiveRecord The essence of an Active Record is a Domain Model in which the classes match very closely the record structure of an underlying database. Each Active Record is responsible for saving and loading to the database and also for any domain logic that acts on the data... The data structure of the Active Record should exactly match that of the database: one field in the class for each column in the table... Patterns of Enterprise Application Architecture Martin Fowler

42 Analyse model Brand title description logo_url 1 * ProductType title description image_url * Product title price * * Category title children parent

43 DB Design BRANDS id title description logo_url int varchar(80) varchar(512) varchar(256) PRODUCT_TYPES id title description image_url brand_id int varchar(80) varchar(512) varchar(256) int PRODUCTS id title price product_type_id int varchar(80) number(8,2) int CATEGORIES_PRODUCT_TYPES product_types_id category_id int int CATEGORIES id title parent_id int varchar(80) int

44 BRANDS id title description logo_url int varchar(80) varchar(512) varchar(256) PRODUCT_TYPES id title description image_url brand_id int varchar(80) varchar(512) varchar(256) int PRODUCTS id title price product_type_id int varchar(80) number(8,2) int class CreateBrands < ActiveRecord::Migration def self.up create_table CATEGORIES_PRODUCT_TYPES :brands do t t.column :title, product_types_id :string, int :null => false t.column :description, category_id int :text t.column :logo_url, :string def self.down drop_table :brands CATEGORIES id title parent_id int varchar(80) int

45 Brand title description logo_url 1 * ProductType title description image_url class Brand < ActiveRecord::Base has_many :product_types class ProductType < ActiveRecord::Base belongs_to :brand * Product title price * * Category title children parent

46 Brand title description logo_url 1 class ProductType < ActiveRecord::Base belongs_to :brand has_many :products, :depent => true * ProductType title description image_url * Product title price * * Category title children class Product < ActiveRecord::Base belongs_to :product_type parent

47 Brand title description logo_url 1 class ProductType < ActiveRecord::Base belongs_to :brand has_many :products has_and_belongs_to_many :categories * ProductType title description image_url * Product title price * * Category title children class Category < ActiveRecord::Base has_and_belongs_to_many :product_types parent

48 Brand title description logo_url 1 * ProductType title description image_url * Product title price * * Category title parent children class Category < ActiveRecord::Base has_and_belongs_to_many :product_types acts_as_tree :order => "title"

49 REST

50 Hvad er REST? Representational State Transfer is inted to evoke an image of how a well-designed Web application behaves: a network of web pages (a virtual state-machine), where the user progresses through an application by selecting links (state transitions), resulting in the next page (representing the next state of the application) being transferred to the user and rered for their use. Dr. Roy Fielding Architectural Styles and the Design of Network-based Software Architectures

51 Principper Applikationstilstand og funktionalitet realiseres vha. ressourcer Enhver ressource kan adresseres vha. en URI Alle ressourcer benytter samme uniforme interface til at flytte tilstand mellem klient og ressource Veldefineret sæt af operationer Veldefineret sæt af content-typer En protokol som er Client/Server, Stateless & Cacheable

52 REST & HTTP HTTP benyttes ofte som fundament for REST Client/Server, Stateless & Cacheable Ressourcer identificeres af URLs Operationer er GET, PUT, POST, DELETE (TRACE, OPTIONS, HEAD) GET: hent ressource repræsentation PUT: opdater ressource POST: opret ny ressource DELETE: slet ressource

53 Eksempel Customer Order OrderLine Product

54 Eksempel Customer Order OrderLine Product /customers GET: list all customers POST: add new customers /customers/{id} GET: get customer details PUT: update customer DELETE: delete customer

55 Eksempel Customer Order /customers GET: list all customers POST: add new customers OrderLine Product /customers/{id} GET: get customer details PUT: update customer DELETE: delete customer /orders GET: list all orders POST: add new order /customers/{id}/orders GET: get order list /orders/{id} GET: get order details PUT: update order DELETE: cancel order

56 Rails Demo Blog app Baseret på REST RSS feed AJAX til kommentarer

57 Rails Demo Posting * Comment

58 Rails Demo Posting * Comment /postings GET: list all postings {HTML & RSS} POST: add new posting

59 Rails Demo Posting * Comment /postings GET: list all postings {HTML & RSS} POST: add new posting /postings/{id} GET: get post details PUT: update posting DELETE: remove posting

60 Rails Demo Posting * Comment /postings GET: list all postings {HTML & RSS} POST: add new posting /postings/{id}/comments GET: list all comments POST: add new comment /postings/{id} GET: get post details PUT: update posting DELETE: remove posting

61 Rails Demo Posting * Comment /postings GET: list all postings {HTML & RSS} POST: add new posting /postings/{id}/comments GET: list all comments POST: add new comment /postings/{id} GET: get post details PUT: update posting DELETE: remove posting /postings/{id}/comments/{id} GET: get comment details PUT: update comment DELETE: remove comment

62 From what I have seen so far, Rails is a hyper-productive agile environment that EVERYONE should be taking very seriously. It seems to me that a Rails team could leave a Java or.net team in the dust by a factor of five or so. I know the rebuttal to that will be the dreaded "E" word. My response to that is: "It's OK with me if you want to go slow, just get out of the way while the rest of us get stuff done." Bob Martin

63 Ruby & RoR

64 Kim Harding Design Aps Kurser i.net, Java, Ruby, Modellering, Arkitektur Mentoring & Reviews Kontakt: Tlf:

ActiveRecord and Models. Model Associations. Migrations

ActiveRecord and Models. Model Associations. Migrations CS 142 Section October 18, 2010 ActiveRecord and Models Model Associations Migrations ActiveRecord: a Rails library that implements Object Relational Mapping (ORM) What this means: you can easily translate

More information

Introduction to Ruby on Rails

Introduction to Ruby on Rails Introduction to Ruby on Rails Welcome to the puzzle.it s a fun ride! By Steve Keener Terms you will hear Full stack Active Record Object Relational Model (ORM) MVC Gems RHTML Migration SVN What is RoR?

More information

Building and Deploying Web Scale Social Networking Applications Using Ruby on Rails and Oracle. Kuassi Mensah Group Product Manager

Building and Deploying Web Scale Social Networking Applications Using Ruby on Rails and Oracle. Kuassi Mensah Group Product Manager Building and Deploying Web Scale Social Networking Applications Using Ruby on Rails and Oracle Kuassi Mensah Group Product Manager The following is intended to outline our general product direction. It

More information

A Tour of Ruby on Rails

A Tour of Ruby on Rails A Tour of Ruby on Rails By David Keener http://www.keenertech.com But First, Who Am I? David Keener I m a technical architect and writer with over 20 years of experience. Been doing web applications Since

More information

1. Was ist das? II. Wie funktioniert das? III. Wo funktioniert das nicht?

1. Was ist das? II. Wie funktioniert das? III. Wo funktioniert das nicht? RubyOnRails Jens Himmelreich 1. Was ist das? II. Wie funktioniert das? III. Wo funktioniert das nicht? 1. Was ist das? abstrakt RubyOnRails RubyOnRails Ruby Programmiersprache * 24. 2. 1993 geboren Yukihiro

More information

How To Create A Model In Ruby 2.5.2.2 (Orm)

How To Create A Model In Ruby 2.5.2.2 (Orm) Gastvortrag Datenbanksysteme: Nils Haldenwang, B.Sc. 1 Institut für Informatik AG Medieninformatik Models mit ActiveRecord 2 Model: ORM pluralisierter snake_case Tabelle: users Klasse: User id first_name

More information

Building Dynamic Web 2.0 Websites with Ruby on Rails

Building Dynamic Web 2.0 Websites with Ruby on Rails Building Dynamic Web 2.0 Websites with Ruby on Rails Create database-driven dynamic websites with this open-source web application framework A.P. Rajshekhar Chapter 5 "Gathering User Comments" In this

More information

Outline. Lecture 18: Ruby on Rails MVC. Introduction to Rails

Outline. Lecture 18: Ruby on Rails MVC. Introduction to Rails Outline Lecture 18: Ruby on Rails Wendy Liu CSC309F Fall 2007 Introduction to Rails Rails Principles Inside Rails Hello World Rails with Ajax Other Framework 1 2 MVC Introduction to Rails Agile Web Development

More information

Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is

Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is Chris Panayiotou Ruby on Rails is a web application framework written in Ruby, a dynamically typed programming language The amazing productivity claims of Rails is the current buzz in the web development

More information

OIO Dekstop applikation

OIO Dekstop applikation OIO Dekstop applikation 25-09-2009. Version 1.0 Sammendrag af ideer og dialog på møde d. 24-09-2009 mellem ITST, Trifork og Designit Under udarbejdelse Diagram Test applikation Grupper Digitaliser.dk Applikation

More information

Ruby On Rails. CSCI 5449 Submitted by: Bhaskar Vaish

Ruby On Rails. CSCI 5449 Submitted by: Bhaskar Vaish Ruby On Rails CSCI 5449 Submitted by: Bhaskar Vaish What is Ruby on Rails? Ruby on Rails is a web application framework written in Ruby, a dynamic programming language. Ruby on Rails uses the Model-View-Controller

More information

Designing RESTful Web Applications

Designing RESTful Web Applications Ben Ramsey php works About Me: Ben Ramsey Proud father of 7-month-old Sean Organizer of Atlanta PHP user group Founder of PHP Groups Founding principal of PHP Security Consortium Original member of PHPCommunity.org

More information

The Learn-Verified Full Stack Web Development Program

The Learn-Verified Full Stack Web Development Program The Learn-Verified Full Stack Web Development Program Overview This online program will prepare you for a career in web development by providing you with the baseline skills and experience necessary to

More information

Introduktion til distribuerede systemer uge 37 - fil og webserver

Introduktion til distribuerede systemer uge 37 - fil og webserver Introduktion til distribuerede systemer uge 37 - fil og webserver Rune Højsgaard 090678 1. delsstuderende 13. september 2005 1 Kort beskrivelse Implementationen af filserver og webserver virker, men håndterer

More information

Content Management System (Dokument- og Sagsstyringssystem)

Content Management System (Dokument- og Sagsstyringssystem) Content Management System (Dokument- og Sagsstyringssystem) Magloire Segeya Kongens Lyngby 2010 IMM-B.Eng-2010-45 Technical University of Denmark DTU Informatics Building 321,DK-2800 Kongens Lyngby,Denmark

More information

RESTful Rails Development. translated by Florian Görsdorf and Ed Ruder

RESTful Rails Development. translated by Florian Görsdorf and Ed Ruder RESTful Rails Development Ralf Wirdemann ralf.wirdemann@b-simple.de Thomas Baustert thomas.baustert@b-simple.de translated by Florian Görsdorf and Ed Ruder March 26, 2007 Acknowledgments Many thanks go

More information

Deep in the CRUD LEVEL 1

Deep in the CRUD LEVEL 1 Deep in the CRUD LEVEL 1 Prerequisites: TryRuby.org TwitteR for ZOMBIES {tweets Columns (we have 3) DB TABLE Rows { (we have 4) id status zombie Zombie Challenge #1 Retrieve the Tweet object with id =

More information

Oracle Application Express

Oracle Application Express Oracle Application Express Eftermiddagsmøde Oracle/APEX Konsulent Oracle/APEX Konsulent Startede som Oracle udvikler i 1988 (RDBMS Version 5) Startede MBNDATA i 1996 APEX specialisering siden 1997 Agenda

More information

Rake Task Management Essentials

Rake Task Management Essentials Rake Task Management Essentials Andrey Koleshko Chapter No. 8 "Testing Rake Tasks" In this package, you will find: A Biography of the author of the book A preview chapter from the book, Chapter NO.8 "Testing

More information

Agile Development with Groovy and Grails. Christopher M. Judd. President/Consultant Judd Solutions, LLC

Agile Development with Groovy and Grails. Christopher M. Judd. President/Consultant Judd Solutions, LLC Agile Development with Groovy and Grails Christopher M. Judd President/Consultant Judd Solutions, LLC Christopher M. Judd President/Consultant of Judd Solutions Central Ohio Java User Group (COJUG) coordinator

More information

Lecture 3 ActiveRecord Rails persistence layer

Lecture 3 ActiveRecord Rails persistence layer Lecture 3 ActiveRecord Rails persistence layer Elektroniczne Przetwarzanie Informacji 9 maja 2013 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives

More information

RR-79 REST from Scratch

RR-79 REST from Scratch RR-79 REST from Scratch Caelum provides training in software development with its team of highly qualified instructors in Java, Ruby and Rails, Agile and Rest services. Its team is spread in several cities

More information

CS169.1x Lecture 5: SaaS Architecture and Introduction to Rails " Fall 2012"

CS169.1x Lecture 5: SaaS Architecture and Introduction to Rails  Fall 2012 CS169.1x Lecture 5: SaaS Architecture and Introduction to Rails " Fall 2012" 1" Web at 100,000 feet" The web is a client/server architecture" It is fundamentally request/reply oriented" Web browser Internet

More information

Research Topics 2009. MDD & PL 2009 Stefan Tilkov stefan.tilkov@innoq.com

Research Topics 2009. MDD & PL 2009 Stefan Tilkov stefan.tilkov@innoq.com Research Topics 2009 MDD & PL 2009 Stefan Tilkov stefan.tilkov@innoq.com About innoq Technology Consultancy Focus: Efficient software development & Service-oriented architecture Ratingen, Darmstadt, Munich,

More information

2 halvleg. 1 halvleg. Opvarmning. 2 halvleg. 3 halvleg. Advanced & Powerful. Basic PC-based Automation. Diagnose. Online Tools & Add-on s

2 halvleg. 1 halvleg. Opvarmning. 2 halvleg. 3 halvleg. Advanced & Powerful. Basic PC-based Automation. Diagnose. Online Tools & Add-on s Opvarmning 1 halvleg 2 halvleg 3 halvleg Basic PC-based Automation Advanced & Powerful PC-based Automation Online Tools & Add-on s PC-based Automation Diagnose PC-based Automation Mall www.siemens.dk/mall

More information

Accessing Data with ADOBE FLEX 4.6

Accessing Data with ADOBE FLEX 4.6 Accessing Data with ADOBE FLEX 4.6 Legal notices Legal notices For legal notices, see http://help.adobe.com/en_us/legalnotices/index.html. iii Contents Chapter 1: Accessing data services overview Data

More information

Are you sure you want to be here? Me: IBM Software Developer. Rails: The hottest technology.

Are you sure you want to be here? Me: IBM Software Developer. Rails: The hottest technology. Ruby On Rails Are you sure you want to be here? Me: IBM Software Developer. Rails: The hottest technology. You Are you an IBMer? Are you a programmer? MVC? DRY? Agile? Perl experience? J2EE/.NET/PHP experience?

More information

Intruduction to Groovy & Grails programming languages beyond Java

Intruduction to Groovy & Grails programming languages beyond Java Intruduction to Groovy & Grails programming languages beyond Java 1 Groovy, what is it? Groovy is a relatively new agile dynamic language for the Java platform exists since 2004 belongs to the family of

More information

Ruby on Rails. a high-productivity web application framework. blog.curthibbs.us/ http://blog. Curt Hibbs <curt@hibbs.com>

Ruby on Rails. a high-productivity web application framework. blog.curthibbs.us/ http://blog. Curt Hibbs <curt@hibbs.com> Ruby on Rails a high-productivity web application framework http://blog blog.curthibbs.us/ Curt Hibbs Agenda What is Ruby? What is Rails? Live Demonstration (sort of ) Metrics for Production

More information

Ruby on Rails. Object Oriented Analysis & Design CSCI-5448 University of Colorado, Boulder. -Dheeraj Potlapally

Ruby on Rails. Object Oriented Analysis & Design CSCI-5448 University of Colorado, Boulder. -Dheeraj Potlapally Ruby on Rails Object Oriented Analysis & Design CSCI-5448 University of Colorado, Boulder -Dheeraj Potlapally INTRODUCTION Page 1 What is Ruby on Rails Ruby on Rails is a web application framework written

More information

SPDE. Lagring af større datamængder. make connections share ideas be inspired. Henrik Dorf Chefkonsulent SAS Institute A/S

SPDE. Lagring af større datamængder. make connections share ideas be inspired. Henrik Dorf Chefkonsulent SAS Institute A/S make connections share ideas be inspired SPDE Lagring af større datamængder Henrik Dorf Chefkonsulent SAS Institute A/S SPDE Scalable Performance Data Engine I/O delen af SPDServer software Følger med

More information

XQuery Web Apps. for Java Developers

XQuery Web Apps. for Java Developers XQuery Web Apps for Java Developers Common Java Setup Install database (SQLServer, PostgreSQL) Install app container (Tomcat, Websphere) Configure ORB (Hibernate) Configure MVC framework (Spring) Configure

More information

Polyglot Multi-Paradigm. Modeling. MDA in the Real World. Stefan Tilkov stefan.tilkov@innoq.com

Polyglot Multi-Paradigm. Modeling. MDA in the Real World. Stefan Tilkov stefan.tilkov@innoq.com Polyglot Multi-Paradigm Modeling MDA in the Real World Stefan Tilkov stefan.tilkov@innoq.com What I ll Talk About How I define MDA What a typical tool chain looks like Real-world examples How UML/MOD,

More information

Stop being Rails developer

Stop being Rails developer Stop being Rails developer Ivan Nemytchenko 2015 Ivan Nemytchenko I think this book should have been written in 2011. But nobody had written it, and I still see a huge demand for this topic to be covered

More information

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications.

This tutorial has been designed for beginners who would like to use the Ruby framework for developing database-backed web applications. About the Tutorial Ruby on Rails is an extremely productive web application framework written in Ruby by David Heinemeier Hansson. This tutorial gives you a complete understanding on Ruby on Rails. Audience

More information

Stefan Tilkov. http://www.innoq.com. Stefan Tilkov, innoq Deutschland GmbH REST Introduction

Stefan Tilkov. http://www.innoq.com. Stefan Tilkov, innoq Deutschland GmbH REST Introduction Stefan Tilkov, in Deutschland GmbH REST Introduction http://www.innoq.com (c) 2009 in Stefan Tilkov Geschäftsführer und Principal Consultant, in Deutschland GmbH Fokus auf SOA, Web-Services, REST SOA-Editor

More information

What s really under the hood? How I learned to stop worrying and love Magento

What s really under the hood? How I learned to stop worrying and love Magento What s really under the hood? How I learned to stop worrying and love Magento Who am I? Alan Storm http://alanstorm.com Got involved in The Internet/Web 1995 Work in the Agency/Startup Space 10 years php

More information

Rhomobile cross-platfrom

Rhomobile cross-platfrom Rhomobile cross-platfrom Lecturer Dr. Trần Ngọc Minh Students Nguyễn Hảo 51000880 Vũ Đức Hùng 51001360 Nguyễn Văn Hiễn 51001042 Outline What is RhoMobilie? MVC model Demo What is RhoMobilie? What is cross-platform

More information

Join af tabeller med SAS skal det være hurtigt?

Join af tabeller med SAS skal det være hurtigt? Join af tabeller med SAS skal det være hurtigt? Henrik Dorf, chefkonsulent, PS Commercial Join af tabeller Skal det være hurtigt kræver det Valgmuligheder Viden Eksperimenter Historien En af de første

More information

Ruby On Rails. James Reynolds

Ruby On Rails. James Reynolds Ruby On Rails James Reynolds What is a Ruby on Rails Why is it so cool Major Rails features Web framework Code and tools for web development A webapp skeleton Developers plug in their unique code Platforms

More information

Intro to Web Programming. using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000

Intro to Web Programming. using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000 Intro to Web Programming using PHP, HTTP, CSS, and Javascript Layton Smith CSE 4000 Intro Types in PHP Advanced String Manipulation The foreach construct $_REQUEST environmental variable Correction on

More information

Ruby - A Brief History

Ruby - A Brief History Ruby on Rails 4 Web development workshop Rick Pannen, Consulting & Development [ pannen@gmail.com ] The history of Ruby A scripting language like perl or python Developed by Yukihiro Matz Matsumoto in

More information

Evaluation. Chapter 1: An Overview Of Ruby Rails. Copy. 6) Static Pages Within a Rails Application... 1-10

Evaluation. Chapter 1: An Overview Of Ruby Rails. Copy. 6) Static Pages Within a Rails Application... 1-10 Chapter 1: An Overview Of Ruby Rails 1) What is Ruby on Rails?... 1-2 2) Overview of Rails Components... 1-3 3) Installing Rails... 1-5 4) A Simple Rails Application... 1-6 5) Starting the Rails Server...

More information

Review Entity-Relationship Diagrams and the Relational Model. Data Models. Review. Why Study the Relational Model? Steps in Database Design

Review Entity-Relationship Diagrams and the Relational Model. Data Models. Review. Why Study the Relational Model? Steps in Database Design Review Entity-Relationship Diagrams and the Relational Model CS 186, Fall 2007, Lecture 2 R & G, Chaps. 2&3 Why use a DBMS? OS provides RAM and disk A relationship, I think, is like a shark, you know?

More information

Slides from INF3331 lectures - web programming in Python

Slides from INF3331 lectures - web programming in Python Slides from INF3331 lectures - web programming in Python Joakim Sundnes & Hans Petter Langtangen Dept. of Informatics, Univ. of Oslo & Simula Research Laboratory October 2013 Programming web applications

More information

LiveWeb Core Language for Web Applications. CITI Departamento de Informática FCT/UNL

LiveWeb Core Language for Web Applications. CITI Departamento de Informática FCT/UNL LiveWeb Core Language for Web Applications Miguel Domingues João Costa Seco CITI Departamento de Informática FCT/UNL Most Web Application Development is not Type Safe Heterogeneous development environments

More information

Ruby on Rails Tutorial - Bounded Verification of Data Models

Ruby on Rails Tutorial - Bounded Verification of Data Models Bounded Verification of Ruby on Rails Data Models Jaideep Nijjar and Tevfik Bultan University of California, Santa Barbara {jaideepnijjar, bultan@cs.ucsb.edu ABSTRACT The use of scripting languages to

More information

Web-Based Hazus-MH. A Conceptual Approach. Mourad Bouhafs, AVP ATKINS Atlanta mourad.bouhafs@atkinsglobal.com

Web-Based Hazus-MH. A Conceptual Approach. Mourad Bouhafs, AVP ATKINS Atlanta mourad.bouhafs@atkinsglobal.com Web-Based Hazus-MH A Conceptual Approach Mourad Bouhafs, AVP ATKINS Atlanta mourad.bouhafs@atkinsglobal.com 1 Outline Needs Assessment Hazus-MH and the Web Hazus-MH as a Web Service/Web API Introduction

More information

Teaching Tools Research Group: Course Management Software

Teaching Tools Research Group: Course Management Software Teaching Tools Research Group: Course Management Software Prepared For: Dan Lecocq Team Members: Jeff Park, Corey Bell, Tyler Pare, Craig Buche Executive Summary With the emergence of computers and the

More information

5. Using the database in our tests

5. Using the database in our tests 5. Using the database in our tests Getting ready for ActiveRecord In this chapter we will explore how to incorporate database access in our cucumber tests. We will see how to create test data for our application

More information

DRb Distributed Ruby. Johan Sørensen <johan@johansorensen.com>

DRb Distributed Ruby. Johan Sørensen <johan@johansorensen.com> DRb Distributed Ruby Johan Sørensen DRb? Remote Method Invocation ( RMI ) for Ruby Af Masatoshi SEKI Peer to Peer Client, Server Crossplatform (pure ruby) Multiprotocol DRb exempel

More information

Comparing Dynamic and Static Language Approaches to Web Frameworks

Comparing Dynamic and Static Language Approaches to Web Frameworks Comparing Dynamic and Static Language Approaches to Web Frameworks Neil Brown School of Computing University of Kent UK 30 April 2012 2012-05-01 Comparing Dynamic and Static Language Approaches to Web

More information

Web Development with Grails

Web Development with Grails Agile Web Development with Grails spkr.name = 'Venkat Subramaniam' spkr.company = 'Agile Developer, Inc.' spkr.credentials = %w{programmer Trainer Author} spkr.blog = 'agiledeveloper.com/blog' spkr.email

More information

Enterprise Recipes with Ruby and Rails

Enterprise Recipes with Ruby and Rails Extracted from: Enterprise Recipes with Ruby and Rails This PDF file contains pages extracted from Enterprise Recipes with Ruby and Rails, published by the Pragmatic Bookshelf. For more information or

More information

ASP.NET MVC. in Action JEFFREY PALERMO JIMMY BOGARD BEN SCHEIRMAN MANNING. (74 w. long.) WITH MVCCONTRIB, N HIBERNATE, AND MORE.

ASP.NET MVC. in Action JEFFREY PALERMO JIMMY BOGARD BEN SCHEIRMAN MANNING. (74 w. long.) WITH MVCCONTRIB, N HIBERNATE, AND MORE. ASP.NET MVC in Action WITH MVCCONTRIB, N HIBERNATE, AND MORE JEFFREY PALERMO BEN SCHEIRMAN JIMMY BOGARD 11 MANNING Greenwich (74 w. long.) contents foreword, preface xiii xv acknowledgments about this

More information

SRX. SRX Firewalls. Rasmus Elmholt V1.0

SRX. SRX Firewalls. Rasmus Elmholt V1.0 SRX SRX Firewalls Rasmus Elmholt V1.0 Deployment Branch SRX Series SRX100, SRX110, SRX210, SRX220, SRX240, SRX550, SRX650 Fokus for dette kursus Data Center SRX Series SRX1400, SRX3400, SRX3600, SRX5400,

More information

Looking for a job in Denmark?

Looking for a job in Denmark? Looking for a job in Denmark? Upload your CV to www.jobnet.dk. Www.jobnet.dk is the Job Centre s nationwide website for jobseekers and employers in Denmark. Jobnet enables you to search for a job among

More information

A Tour of Silex and Symfony Components. Robert Parker @yamiko_ninja

A Tour of Silex and Symfony Components. Robert Parker @yamiko_ninja A Tour of Silex and Symfony Components Robert Parker @yamiko_ninja Wait Not Drupal? Self Introduction PHP Developer since 2012 HTML and JavaScript Since 2010 Full Stack Developer at Dorey Design Group

More information

02267: Software Development of Web Services

02267: Software Development of Web Services 02267: Software Development of Web Services Week 8 Hubert Baumeister huba@dtu.dk Department of Applied Mathematics and Computer Science Technical University of Denmark Fall 2015 1 Recap I BPEL: I Doing

More information

Avaya Inventory Management System

Avaya Inventory Management System Avaya Inventory Management System June 15, 2015 Jordan Moser Jin Oh Erik Ponder Gokul Natesan Table of Contents 1. Introduction 1 2. Requirements 2-3 3. System Architecture 4 4. Technical Design 5-6 5.

More information

Ruby on Rails is a Web application framework for Ruby. It was first released to the public in July2004.

Ruby on Rails is a Web application framework for Ruby. It was first released to the public in July2004. Ruby on Rails Ruby on Rails is a Web application framework for Ruby. It was first released to the public in July2004. Within months, it was a widely used development environment. Many multinational corporations

More information

Cloud Powered Mobile Apps with Microsoft Azure

Cloud Powered Mobile Apps with Microsoft Azure Cloud Powered Mobile Apps with Microsoft Azure Malte Lantin Technical Evanglist Microsoft Azure Malte Lantin Technical Evangelist, Microsoft Deutschland Fokus auf Microsoft Azure, App-Entwicklung Student

More information

Web [Application] Frameworks

Web [Application] Frameworks Web [Application] Frameworks conventional approach to building a web service write ad hoc client code in HTML, CSS, Javascript,... by hand write ad hoc server code in [whatever] by hand write ad hoc access

More information

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2. Testing Dynamic Web Applications How To You can use XML Path Language (XPath) queries and URL format rules to test web sites or applications that contain dynamic content that changes on a regular basis.

More information

RoR to RubyMotion Writing Your First ios App With RubyMotion. Michael Denomy BostonMotion User Group June 25, 2013

RoR to RubyMotion Writing Your First ios App With RubyMotion. Michael Denomy BostonMotion User Group June 25, 2013 RoR to RubyMotion Writing Your First ios App With RubyMotion Michael Denomy BostonMotion User Group June 25, 2013 About Me Tech Lead at Cyrus Innovation - Agile web consultancy with offices in New York

More information

BDD with Cucumber and RSpec. Marcus Ahnve Valtech AB marcus.ahnve@valtech.se @mahnve

BDD with Cucumber and RSpec. Marcus Ahnve Valtech AB marcus.ahnve@valtech.se @mahnve BDD with Cucumber and RSpec Marcus Ahnve Valtech AB marcus.ahnve@valtech.se @mahnve Software Developer Polyglot Programmer About me Q: How many are using Cucumber Q: How many have heard of Cucumber Q:

More information

Ruby on Rails. Computerlabor

Ruby on Rails. Computerlabor Ruby on Rails Computerlabor Ablauf Einführung in Ruby Einführung in Ruby on Rails ActiveRecord ActionPack ActiveResource Praxis Ruby Stichworte 1995 erschienen, Open Source Entwickelt von Yukihoro Matsumoto

More information

A Model of the Operation of The Model-View- Controller Pattern in a Rails-Based Web Server

A Model of the Operation of The Model-View- Controller Pattern in a Rails-Based Web Server A of the Operation of The -- Pattern in a Rails-Based Web Server January 10, 2011 v 0.4 Responding to a page request 2 A -- user clicks a link to a pattern page in on a web a web application. server January

More information

Web Framework Performance Examples from Django and Rails

Web Framework Performance Examples from Django and Rails Web Framework Performance Examples from Django and Rails QConSF 9th November 2012 www.flickr.com/photos/mugley/5013931959/ Me Gareth Rushgrove Curate devopsweekly.com Blog at morethanseven.net Text Work

More information

A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles

A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles A Comparison of Service-oriented, Resource-oriented, and Object-oriented Architecture Styles Jørgen Thelin Chief Scientist Cape Clear Software Inc. Abstract The three common software architecture styles

More information

The Relational Model. Why Study the Relational Model? Relational Database: Definitions

The Relational Model. Why Study the Relational Model? Relational Database: Definitions The Relational Model Database Management Systems, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Microsoft, Oracle, Sybase, etc. Legacy systems in

More information

Application layer Web 2.0

Application layer Web 2.0 Information Network I Application layer Web 2.0 Youki Kadobayashi NAIST They re revolving around the web, after all Name any Internet-related buzz: Cloud computing Smartphone Social media... You ll end

More information

RESTful web applications with Apache Sling

RESTful web applications with Apache Sling RESTful web applications with Apache Sling Bertrand Delacrétaz Senior Developer, R&D, Day Software, now part of Adobe Apache Software Foundation Member and Director http://grep.codeconsult.ch - twitter:

More information

Agile Web Development with Rails 4

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

More information

Web. Services. Web Technologies. Today. Web. Technologies. Internet WWW. Protocols TCP/IP HTTP. Apache. Next Time. Lecture #3 2008 3 Apache.

Web. Services. Web Technologies. Today. Web. Technologies. Internet WWW. Protocols TCP/IP HTTP. Apache. Next Time. Lecture #3 2008 3 Apache. JSP, and JSP, and JSP, and 1 2 Lecture #3 2008 3 JSP, and JSP, and Markup & presentation (HTML, XHTML, CSS etc) Data storage & access (JDBC, XML etc) Network & application protocols (, etc) Programming

More information

www.novell.com/documentation Policy Guide Access Manager 3.1 SP5 January 2013

www.novell.com/documentation Policy Guide Access Manager 3.1 SP5 January 2013 www.novell.com/documentation Policy Guide Access Manager 3.1 SP5 January 2013 Legal Notices Novell, Inc., makes no representations or warranties with respect to the contents or use of this documentation,

More information

Cross-domain Identity Management System for Cloud Environment

Cross-domain Identity Management System for Cloud Environment Cross-domain Identity Management System for Cloud Environment P R E S E N T E D B Y: N A Z I A A K H TA R A I S H A S A J I D M. S O H A I B FA R O O Q I T E A M L E A D : U M M E - H A B I B A T H E S

More information

Scripts. MIT s Dynamic Web Hosting Service

Scripts. MIT s Dynamic Web Hosting Service Scripts MIT s Dynamic Web Hosting Service Overview Scripts serves web apps from your home directory in AFS (/mit/your- username/web_scripts on Athena)! Autoinstaller does all the hard setting up of a web

More information

THE ROAD TO CODE. ANDROID DEVELOPMENT IMMERSIVE May 31. WEB DEVELOPMENT IMMERSIVE May 31 GENERAL ASSEMBLY

THE ROAD TO CODE. ANDROID DEVELOPMENT IMMERSIVE May 31. WEB DEVELOPMENT IMMERSIVE May 31 GENERAL ASSEMBLY THE ROAD TO CODE WEB DEVELOPMENT IMMERSIVE May 31 ANDROID DEVELOPMENT IMMERSIVE May 31 GENERAL ASSEMBLY GENERAL ASSEMBLY @GA_CHICAGO WWW.FACEBOOK.COM/GENERALASSEMBLYCHI @GA_CHICAGO GENERAL ASSEMBLY GENERAL

More information

Clustering a Grails Application for Scalability and Availability

Clustering a Grails Application for Scalability and Availability Clustering a Grails Application for Scalability and Availability Groovy & Grails exchange 9th December 2009 Burt Beckwith My Background Java Developer for over 10 years Background in Spring, Hibernate,

More information

Distribution and Integration Technologies

Distribution and Integration Technologies Distribution and Integration Technologies RESTful Services REST style for web services REST Representational State Transfer, considers the web as a data resource Services accesses and modifies this data

More information

Customer Bank Account Management System Technical Specification Document

Customer Bank Account Management System Technical Specification Document Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6

More information

Web-services for sensor-based and location-aware products

Web-services for sensor-based and location-aware products Web-services for sensor-based and location-aware products with contributions from Raghid Kawash and Allan Hansen Department of Computer Science, University of Aarhus, Denmark Plan About the project requirements

More information

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof. Web Frameworks web development done right Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.ssa Anna Corazza Outline 2 Web technologies evolution Web frameworks Design Principles

More information

Certified PHP/MySQL Web Developer Course

Certified PHP/MySQL Web Developer Course Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,

More information

Integration the Web 2.0 way. Florian Daniel (daniel@disi.unitn.it) April 28, 2009

Integration the Web 2.0 way. Florian Daniel (daniel@disi.unitn.it) April 28, 2009 Web Mashups Integration the Web 2.0 way Florian Daniel (daniel@disi.unitn.it) April 28, 2009 What are we talking about? Mashup possible defintions...a mashup is a web application that combines data from

More information

Web Development Frameworks. Matthias Korn <mkorn@cs.au.dk>

Web Development Frameworks. Matthias Korn <mkorn@cs.au.dk> Web Development Frameworks Matthias Korn 1 Overview Frameworks Introduction to CakePHP CakePHP in Practice 2 Web application frameworks Web application frameworks help developers build

More information

Master Thesis in software Engineering and Management Model Driven Development with Ruby on Rails Antonios Protopsaltou Göteborg, Sweden 2004

Master Thesis in software Engineering and Management Model Driven Development with Ruby on Rails Antonios Protopsaltou Göteborg, Sweden 2004 Master Thesis in software Engineering and Management Model Driven Development with Ruby on Rails Antonios Protopsaltou Göteborg, Sweden 2004 1 2 REPORT NO. 2007/58 Rapid prototyping of web applications

More information

Ruby on Rails Web Mashup Projects

Ruby on Rails Web Mashup Projects Ruby on Rails Web Mashup Projects A step-by-step tutorial to building web mashups Chang Sau Sheong Chapter No. 2 "'Find closest' mashup plugin" In this package, you will find: A Biography of the author

More information

Bachelor Project System (BEPsys)

Bachelor Project System (BEPsys) Bachelor Project System (BEPsys) by Sarah Bashirieh - 1523259 Nima Rahbari - 1515659 Electrical Engineering, Mathematics and Computer Science Delft University of Technology October 2013 Abstract In this

More information

CHRIS RICHARDSON, CONSULTANT FOCUS

CHRIS RICHARDSON, CONSULTANT FOCUS FOCUS Object-Relational Mapping O/R mapping frameworks for dynamic languages such as Groovy provide a different flavor of ORM that can greatly simplify application code. CHRIS RICHARDSON, CONSULTANT 28

More information

Security Testing For RESTful Applications

Security Testing For RESTful Applications Security Testing For RESTful Applications Ofer Shezaf, HP Enterprise Security Products ofr@hp.com What I do for a living? Product Manager, Security Solutions, HP ArcSight Led security research and product

More information

If you wanted multiple screens, there was no way for data to be accumulated or stored

If you wanted multiple screens, there was no way for data to be accumulated or stored Handling State in Web Applications Jeff Offutt http://www.cs.gmu.edu/~offutt/ SWE 642 Software Engineering for the World Wide Web sources: Professional Java Server Programming, Patzer, Wrox Web Technologies:

More information

Integrating Complementary Tools with PopMedNet TM

Integrating Complementary Tools with PopMedNet TM Integrating Complementary Tools with PopMedNet TM 27 July 2015 Rich Schaaf rschaaf@commoninf.com Introduction Commonwealth Informatics Implements and supports innovative systems for medical product safety

More information

How to Build Successful DSL s. Jos Warmer Leendert Versluijs

How to Build Successful DSL s. Jos Warmer Leendert Versluijs How to Build Successful DSL s Jos Warmer Leendert Versluijs Jos Warmer Expert in Model Driven Development One of the authors of the UML standard Author of books Praktisch UML MDA Explained Object Constraint

More information

How to Build a Model Layout Using Rails

How to Build a Model Layout Using Rails Modular Page Layouts in Ruby on Rails How to use views, partials, and layouts in a modular approach to page assembly Greg Willits Rev 2 Oct 21, 2007 http://gregwillits.wordpress.com/ In this article we

More information

Rails 4 Quickly. Bala Paranj. www.rubyplus.com

Rails 4 Quickly. Bala Paranj. www.rubyplus.com Rails 4 Quickly Bala Paranj 1 About the Author Bala Paranj has a Master s degree in Electrical Engineering from The Wichita State University. He has over 15 years of experience in the software industry.

More information

Brakeman and Jenkins: The Duo Detects Defects in Ruby on Rails Code

Brakeman and Jenkins: The Duo Detects Defects in Ruby on Rails Code Brakeman and Jenkins: The Duo Detects Defects in Ruby on Rails Code Justin Collins Tin Zaw AppSec USA September 23, 2011 About Us Justin Collins - @presidentbeef Tin Zaw - @tzaw Our Philosophy: Light Touch

More information

RUBY (ON RAILS) Content adapted from material by Ryan Tucker and Kelly Dunn University of Washington, CSE 190M, Spring 2009

RUBY (ON RAILS) Content adapted from material by Ryan Tucker and Kelly Dunn University of Washington, CSE 190M, Spring 2009 RUBY (ON RAILS) Content adapted from material by Ryan Tucker and Kelly Dunn University of Washington, CSE 190M, Spring 2009 CSC 210, Spring 2011 Announcements 2 Return Quizes Second Test: Wednesday April

More information

From RPC to Web Apps: Trends in Client-Server Systems

From RPC to Web Apps: Trends in Client-Server Systems From RPC to Web Apps: Trends in Client-Server Systems George Coulouris 1 Overview Motivation - to consider the effect of client-server interaction on the development of interactive apps Style of client-server

More information