Lecture 3 ActiveRecord Rails persistence layer
|
|
|
- Myra Ferguson
- 9 years ago
- Views:
Transcription
1 Lecture 3 ActiveRecord Rails persistence layer Elektroniczne Przetwarzanie Informacji 9 maja 2013
2 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
3 Class and migration class Book < ActiveRecord::Base class CreateBooks < ActiveRecord::Migration def change create_table :books do t t.string :title t.references :author # same as # t.integer :author_id t.timestamps
4 CRUD create book = Book.new(:title => 'Ruby') book.save # or Book.create(:title => 'Ruby') # In the controller context if Book.create(params[:book]) # success else # failure # params[:book] looks like { :title => 'Ruby' }
5 CRUD read # find by id book = Book.find(1) book.title #=> 'Ruby' # or book = Book.find_by_id(1) # find by title book = Book.find_by_title('Ruby') # or book = Book.where(:title => 'Ruby')
6 CRUD update book = Book.find(1) book.title = 'Ruby for beginners' book.save # or Book.update_attributes(:title => 'Ruby for beginners') # In the controller context if Book.update_attributes(params[:book]) # success else # failure # params[:book] looks like { :title => 'Ruby for beginners' }
7 CRUD destroy book = Book.find(1) book.destroy book.title = 'Ruby for beginners' #=> error Book.find(1) #=> error Book.find_by_id(1) #=> nil
8 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
9 Primary key (id) # find by primary key: Book.find(1) # => book1 # as above (safe version): Book.find_by_id(1) # => book1 # find many by primary key: Book.find(1,3,4) # => [ book1, book3, book4 ] # first record Book.first # => book1 # last record Book.last # => book4 Aleksander # all Smywiński-Pohl records Lecture Book.all 3: ActiveRecord id title year 1 Ruby Ruby Python Ruby 2010
10 Find by # Find ALL Book.find_all_by_title('Ruby') # => [ book1, book2, book4 ] Book.find_all_by_title('Perl') # => [] # Find ONE Book.find_by_title('Ruby') # => book1 Book.find_by_title('Perl') # => nil id title year 1 Ruby Ruby Python Ruby 2010 # Find with two attributes Book.find_by_title_and_year('Ruby',2009) # => book2
11 Query language where defines the query condition(s) order defines the query order select defines the fields that will be returned (all by default) limit defines the maximal number of results offset defines the results offset includes eagerly loads associations group groups results by given attribute having defines the query condition(s) in case the results are grouped
12 where Book.where("title = #{params[:title]}") # - doesn't perform a query (is lazy evaluated) # - is a security risk - SQL-injection! Book.where("title =?", params[:title]) # - is automatically escaped - no SQL-injection Book.where("title =? AND year =?", 'Ruby', 2009).all # [book2] Book.where("title = :title", :title => 'Ruby').first # book1 id title year 1 Ruby Ruby Python Ruby 2010 Book.where(:title => 'Ruby').first # book1 Book.where(:year => ( )).all # [book2, book4]
13 order Book.order("year").all # [ book1, book2, book3, book4 ] Book.order("id DESC").all # [ book4, book3, book2, book1 ] Book.order("id").reverse_order.all # [ book4, book3, book2, book1 ] Book.order("title DESC, year ASC").first # book1 id title year 1 Ruby Ruby Python Ruby 2010
14 select book = Book.select('title').first book.title # => 'Ruby' book.year # ActiveModel::MissingAttributeError: # missing attribute: 'year' book.title = 'Ruby for beginners' book.save # ActiveRecord::ReadOnlyRecord books = Book.select('title').uniq books.size # => 2 books[0].title # 'Ruby' books[1].title # 'Python' id title year 1 Ruby Ruby Python Ruby 2010
15 limit, offset Book.limit(2).all # [ book1, book2 ] Book.offset(1).all # [ book2, book3, book4 ] Book.offset(0).all # [ book1, book2, book3, book4 ] Book.limit(2).offset(1).all # [ book2, book3 ] id title year 1 Ruby Ruby Python Ruby 2010 Book.limit(2).offset(1).reverse_order.all # [ book3, book2 ]
16 Pagination gem kaminari Book.page(2) # fetch the second page Book.page(2).per(50) # fetch the second page of 50 items (25 by default) gem will_paginate Book.paginate(:page => 2) # or Book.page(2) # fetch the second page Book.paginate(:page => 2, :per_page => 50) # fetch the second page of 50 items (30 by default)
17 includes n+1 query problem assuming there is an association between two classes, if we query for a collection of n objects, we will have to issue n queries for the associated objects (thus n + 1 queries will be issued). This is very slow. We can resolve this problem, using includes.
18 includes Book.all.each do book book.author.name # This will require 5 sql queries: # select * from books # select * from authors where author_id = 1 # select * from authors where author_id = 2 #... Book.includes(:author).all.each do book book.author.name # This will require only 2 sql queries: # select * from books # select * from authors where id in (1, 2, 3) id title year author_id 1 Ruby Ruby Python Ruby
19 group, having books = Book.select("title, count(*)").group("title").all books[0].title # => 'Ruby' books[0].count # => 3 books[1].title # => 'Python' books[1].count # => 1 Book.select("title, count(*)").group("title"). having("count(*) > 1").all # => 'Ruby', 3 Book.select("title, count(*)").group("title"). where("year > 2008").all # => 'Ruby', 2 # => 'Python', 1 id title year 1 Ruby Ruby Python Ruby 2010
20 Scoping Some finder methods are more popular than others. We can make them more readable by providing scopes for them: class Author scope :living, where(:death_date => nil) scope :polish, where(:nationality => "Polish") # now we can write Author.living.polish.order("last_name, first_name") # instead of Author.where(:death_date => nil). where(:nationality => "Polish").order("last_name, first_name")
21 Default scope The same way we can define the default scope: class Book default_scope where("year > 1980") # Issuing any query will attach this condition Book.all # in fact Book.where("year > 1980").all # To skip the scoping, we write Book.unscoped.all
22 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
23 Types of associations has_many belongs_to has_one has_and_belongs_to_many has_many :through belongs_to :polymorphic
24 Conceptual model vs. object model class Person < ActiveRecord::Base class Author < Person has_many :books class Book < ActiveRecord::Base belongs_to :author has_and_belongs_to_many :categories class Category < ActiveRecord::Base has_and_belongs_to_many :books
25 belnogs_to class Book < ActiveRecord::Base belongs_to :author book.author book.author=(author) book.author?(some_author) book.author.nil? book.build_author(...) book.create_author(...)
26 has_many class Author < Person has_many :books author.books author.books<<(book) author.books.delete(book) author.books=[book1,book2,...] author.book_ids author.book_ids=[id1,id2,...] author.books.clear author.books.empty? author.books.size author.books.find(...) author.books.exists?(...) author.books.build(...) author.books.create(...)
27 has_and_belongs_to_many class Category < ActiveRecord::Base has_and_belongs_to_many :books category.books category.books<<(book) category.books.delete(book) category.books=[book1,book2,...] category.book_ids category.book_ids=[id1,id2,...] category.books.clear category.books.empty? category.books.size category.books.find(...) category.books.exists?(...) category.books.build(...) category.books.create(...)
28 has_many :through class Developer < ActiveRecord::Base has_many :projects has_many :tasks, :through => :projects class Project < ActiveRecord::Base belongs_to :developer has_many :tasks class Task < ActiveRecord::Base belongs_to :project Note: through association is read-only.
29 has_many :polymorphic class Comment < ActiveRecord::Base belongs_to :item, :polymorphic => true class Post < ActiveRecord::Base has_many :comments, :as => :item class Image < ActiveRecord::Base has_many :comments, :as => :item post = Post.new post.comments << Comment.new image = Image.new image.comments << Comment.new
30 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
31 Predefined validations presence presence of an attribute acceptance acceptance of a condition confirmation confirmation (equality with confirmation field) of an attribute exclusion exclusion of the value of an attribute inclusion inclusion of the value of an attribute format match with a pattern length length (of text) numericality numericality (the feature of being a number) of an attribute uniqueness uniqueness of an attribute (better served on the DB level with appropriate field option) associated validation of an associated object
32 presence class Book < ActiveRecord::Base validate :title, :presence => true book = Book.new book.save # => false book.title = 'Ruby' book.save # => true
33 acceptance class Order < ActiveRecord::Base validate :terms_of_service, :acceptance => true order = Order.new order.save # => false order.terms_of_service = true order.save # => true
34 confirmation class Account < ActiveRecord::Base validate :password, :confirmation => true account = Account.new account.password = '123456' account.save # => false account.password_confirmation = '123' account.save # => false account.password_confirmation = '123456' account.save # => true
35 exclusion class Language < ActiveRecord::Base validate :name, :exclusion => { :in => ['PHP'] } language = Language.new(:name => 'PHP') language.save # => false language.name = 'Ruby' language.save # => true
36 inclusion class Person < ActiveRecord::Base validate :ger, :inclusion => { :in => %w{male female} } person = Person.new(:ger => "child") person.save # => false person.ger = 'female' person.save # => true
37 format class Book < ActiveRecord::Base validate :title, :format => { :with => /\A[A-Z](\w \s)+\z/ } book = Book.new(:title => "bad title") book.save # => false book.title = 'Ruby' book.save # => true
38 length class Person < ActiveRecord::Base validate :name, :length => { :in => } person = Person.new(:name => "Jo") person.save # => false person.name = 'Jolomolodonton' person.save # => false person.name = 'Jolomolo' person.save # => true in minimum maximum is
39 numericality class Person < ActiveRecord::Base validate :age, :numericality => { :only_integer => true } validate :shoe_size, :numericality => true person = Person.new(:age => 10.1, :shoe_size => "a") person.save # => false person.age = 10 person.shoe_size = 5.5 person.save # => true
40 uniqueness class Person < ActiveRecord::Base validate : person = Person.new(: => "[email protected]") person.save # => true person = Person.new(: => "[email protected]") person.save # => false scope
41 associated class Person < ActiveRecord::Base has_many :orders validates_associated :orders Calls valid? on each associated object.
42 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
43 Creating an object before_validation after_validation before_save around_save before_create around_create after_create after_save
44 Updating an object before_validation after_validation before_save around_save before_update around_update after_update after_save
45 Destroying an object before_destroy around_destroy after_destroy
46 Callback example class Post < ActiveRecord::Base validate :title, :format => {:with => /\A\w+\z/} before_validation { post post.title.strip! } # same as before_validation :strip_title protected def strip_title self.title.strip! Do not use callbacks to implement sophisticated business logic. Use service objects instead.
47 Service object class UserCreator def initialize(factory=user,social_network=socialnetwork, = = = social_network def create(params) user user.save user user = UserCreator.new.create(params)
48 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
49 User input and SQL SQL-injection passing SQL commands as SQL query fragments to perform uninted queries attribute mass-assignment problem passing attribute values that are not expected by the developer
50 SQL-injection User.where("name = '#{params[:name]}'") params[:name] = "some name'; DROP TABLE users; --" "SELECT * from users where name = 'some name'; DROP TABLE users; --'" # This is a valid SQL query (two in fact). The code after -- is omitted. # Safe: User.where("name =?", params[:name]) User.where(:name => params[:name])
51 Mass assignment User.update_attributes(params[:user]) # Rails by default converts the passed key-value pairs into a hash. # An attacker can easily provide the following data: params[:user] = { :admin => true,... } # In older Rails we have to protect individual attributes # (black-list approach) class User < ActiveRecord::Base attr_protected :admin # In current Rails we have to specify all accessible attributes # (white-list approach): class User < ActiveRecord::Base attr_accessible :name, :surname
52 Mass assignment class AccessRulesController def grant_administrator_rights user = User.find(params[:id]) user.admin = true user.save In the next version of Rails the problem will be solved on the controller level with strong parameters.
53 Strong parameters class BooksController < ActionController::Base def = Book.create(params[:book]) # raises exception def = private def book_params params.require(:book).permit(:title, :author_id)
54 ActiveRecord interface where, order, select,... there are many methods that are added to the class if it inherits from AR it is very hard to write isolated tests by stubbing these methods AR defines infinite protocol for the classes
55 How to overcome these problems do not call AR methods in the cooperating classes provide domain-specific methods which hide the AR calls separate unit tests that don t touch the database from integration tests that need access to the persistence layer when running the unit tests use NullDB use FigLeaf to make most of the AR methods private
56 NullDB # Avdi Grimm "Objects on Rails" module SpecHelpers def setup_nulldb schema_path = File.expand_path('../db/schema.rb', File.dirname( FILE )) NullDB.nullify(schema: schema_path) def teardown_nulldb NullDB.restore
57 FigLeaf # Avdi Grimm "Objects on Rails" class TodoList < ActiveRecord::Base include FigLeaf hide ActiveRecord::Base, ancestors: true, except: [Object, :init_with, :new_record?, :errors, :valid?, :save] hide_singletons ActiveRecord::Calculations, ActiveRecord::FinderMethods, ActiveRecord::Relation #... def self.with_name(name) where(:name => name) TodoList.where(:name => "Some name") # error: call to private method 'where' TodoList.with_name("Some name") # OK
58 Aga ActiveRecord basics Query language Associations Validations Callbacks ActiveRecord problems Alternatives
59 DataMapper variety of data-stores legacy database schemas composite primary keys auto-migrations support for DB-level data integrity strategic eager loading querying by associations identity map lazy properties object-oriented comparison of fields
60 Legacy DB support class Post include DataMapper::Resource # set the storage name for the :legacy repository storage_names[:legacy] = 'tblpost' # use the datastore's 'pid' field for the id property. property :id, Serial, :field => :pid # use a property called 'uid' as the child key (the foreign key) belongs_to :user, :child_key => [ :uid ]
61 Composite keys class LineItem include DataMapper::Resource property :order_id, Integer, :key => true property :item_number, Integer, :key => true order_id, item_number = 1, 1 LineItem.get(order_id, item_number) #
62 Auto-migrate class Person include DataMapper::Resource property :id, Serial property :name, String, :required => true DataMapper.auto_migrate!
63 Auto-upgrade class Person include DataMapper::Resource property :id, Serial property :name, String, :required => true # new property property :hobby, String DataMapper.auto_upgrade!
64 Data integrity DB level class Person include DataMapper::Resource property :id, Serial has n, :tasks, :constraint => :destroy class Task include DataMapper::Resource property :id, Serial belongs_to :person
65 Lazy properties class Animal include DataMapper::Resource property :id, Serial property :name, String property :notes, Text # lazy-loads by default
66 Field comparison Zoo.first(:name => 'Galveston') # 'gt' means greater-than. 'lt' is less-than. Person.all(:age.gt => 30) # 'gte' means greather-than-or-equal-to. 'lte' is also available Person.all(:age.gte => 30) Person.all(:name.not => 'bob') # If the value of a pair is an Array, we do an IN-clause for you. Person.all(:name.like => 'S%', :id => [ 1, 2, 3, 4, 5 ]) # Does a NOT IN () clause for you. Person.all(:name.not => [ 'bob', 'rick', 'steve' ]) # Ordering Person.all(:order => [ :age.desc ]) #.asc is the default
67 Sequel concise DSL for constructing SQL queries and table schemas optimized for speed thread safety connection pooling prepared statements bound variables stored procedures savepoints two-phase commit transaction isolation master/slave configurations database sharding
68 Short example DB.create_table :items do primary_key :id String :name Float :price items = DB[:items] # Create a dataset # Populate the table items.insert(:name => 'abc', :price => rand * 100) items.insert(:name => 'def', :price => rand * 100) items.insert(:name => 'ghi', :price => rand * 100) # Print out the number of records puts "Item count: #{items.count}" # Print out the average price puts "The average price is: #{items.avg(:price)}"
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
Topics. Query Repo Model Changeset
Ecto @emjii Topics Query Repo Model Changeset Query Query Based on LINQ Enabled by macros Database queries only LINQ Language Integrated Query Released 2007 Supported in C#, F# and VB.net LINQ from p in
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
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
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
Object Oriented Databases. OOAD Fall 2012 Arjun Gopalakrishna Bhavya Udayashankar
Object Oriented Databases OOAD Fall 2012 Arjun Gopalakrishna Bhavya Udayashankar Executive Summary The presentation on Object Oriented Databases gives a basic introduction to the concepts governing OODBs
Relational Databases. Christopher Simpkins [email protected]
Relational Databases Christopher Simpkins [email protected] Relational Databases A relational database is a collection of data stored in one or more tables A relational database management system
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
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
SQL Injection. SQL Injection. CSCI 4971 Secure Software Principles. Rensselaer Polytechnic Institute. Spring 2010 ...
SQL Injection CSCI 4971 Secure Software Principles Rensselaer Polytechnic Institute Spring 2010 A Beginner s Example A hypothetical web application $result = mysql_query(
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 =
Scaling Rails with memcached
Scaling Rails with memcached One Rubyist s Guide to Hazardous Hits memcached is your best fri and your worst enemy. 1 Who is this kid? CNET Networks PHP Developer GameSpot TV.com Rails Developer Chowhound
Apache Thrift and Ruby
Apache Thrift and Ruby By Randy Abernethy In this article, excerpted from The Programmer s Guide to Apache Thrift, we will install Apache Thrift support for Ruby and build a simple Ruby RPC client and
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
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
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
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
PIC 10A. Lecture 7: Graphics II and intro to the if statement
PIC 10A Lecture 7: Graphics II and intro to the if statement Setting up a coordinate system By default the viewing window has a coordinate system already set up for you 10-10 10-10 The origin is in the
What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World
COSC 304 Introduction to Systems Introduction Dr. Ramon Lawrence University of British Columbia Okanagan [email protected] What is a database? A database is a collection of logically related data for
Lag Sucks! R.J. Lorimer Director of Platform Engineering Electrotank, Inc. Robert Greene Vice President of Technology Versant Corporation
Lag Sucks! Making Online Gaming Faster with NoSQL (and without Breaking the Bank) R.J. Lorimer Director of Platform Engineering Electrotank, Inc. Robert Greene Vice President of Technology Versant Corporation
Table of contents. Reverse-engineers a database to Grails domain classes.
Table of contents Reverse-engineers a database to Grails domain classes. 1 Database Reverse Engineering Plugin - Reference Documentation Authors: Burt Beckwith Version: 0.5.1 Table of Contents 1 Introduction
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?
Gleb Arshinov, Alexander Dymo PGCon 2010 PostgreSQL as a secret weapon for high-performance Ruby on Rails applications
Gleb Arshinov, Alexander Dymo PGCon 2010 PostgreSQL as a secret weapon for high-performance Ruby on Rails applications www.acunote.com About Gleb Arshinov, CEO, [email protected] Alexander Dymo, Director
Polyglot Multi-Paradigm. Modeling. MDA in the Real World. Stefan Tilkov [email protected]
Polyglot Multi-Paradigm Modeling MDA in the Real World Stefan Tilkov [email protected] What I ll Talk About How I define MDA What a typical tool chain looks like Real-world examples How UML/MOD,
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
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
A Brief Introduction to MySQL
A Brief Introduction to MySQL by Derek Schuurman Introduction to Databases A database is a structured collection of logically related data. One common type of database is the relational database, a term
Zend Framework Database Access
Zend Framework Database Access Bill Karwin Copyright 2007, Zend Technologies Inc. Introduction What s in the Zend_Db component? Examples of using each class Using Zend_Db in MVC applications Zend Framework
COURSE NAME: Database Management. TOPIC: Database Design LECTURE 3. The Database System Life Cycle (DBLC) The database life cycle contains six phases;
COURSE NAME: Database Management TOPIC: Database Design LECTURE 3 The Database System Life Cycle (DBLC) The database life cycle contains six phases; 1 Database initial study. Analyze the company situation.
Contents. 2 Alfresco API Version 1.0
The Alfresco API Contents The Alfresco API... 3 How does an application do work on behalf of a user?... 4 Registering your application... 4 Authorization... 4 Refreshing an access token...7 Alfresco CMIS
1. What is SQL Injection?
SQL Injection 1. What is SQL Injection?...2 2. Forms of vulnerability...3 2.1. Incorrectly filtered escape characters...3 2.2. Incorrect type handling...3 2.3. Vulnerabilities inside the database server...4
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, [email protected] ABSTRACT The use of scripting languages to
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
Ruby on Rails Secure Coding Recommendations
Introduction Altius IT s list of Ruby on Rails Secure Coding Recommendations is based upon security best practices. This list may not be complete and Altius IT recommends this list be augmented with additional
Database Query 1: SQL Basics
Database Query 1: SQL Basics CIS 3730 Designing and Managing Data J.G. Zheng Fall 2010 1 Overview Using Structured Query Language (SQL) to get the data you want from relational databases Learning basic
SQL Injection Attack Lab Using Collabtive
Laboratory for Computer Security Education 1 SQL Injection Attack Lab Using Collabtive (Web Application: Collabtive) Copyright c 2006-2011 Wenliang Du, Syracuse University. The development of this document
database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia [email protected]
Lukas Smith database abstraction layers in PHP BackendMedia 1 Overview Introduction Motivation PDO extension PEAR::MDB2 Client API SQL syntax SQL concepts Result sets Error handling High level features
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
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
A Beginner's Guide to Security with Ruby on Rails in BSD. Corey Benninger
A Beginner's Guide to Security with Ruby on Rails in BSD Corey Benninger What's on Tap? Ruby on Rails BSD Security What's on Tap? Better able to securely develop, harden, and maintain Rails based applications.
The Relational Model. Why Study the Relational Model? Relational Database: Definitions. Chapter 3
The Relational Model Chapter 3 Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Why Study the Relational Model? Most widely used model. Vendors: IBM, Informix, Microsoft, Oracle, Sybase,
Static Typing for Ruby on Rails
Static Typing for Ruby on Rails Jong-hoon (David) An [email protected] Avik Chaudhuri [email protected] Jeffrey S. Foster [email protected] Abstract Ruby on Rails (or just Rails ) is a popular web application
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
An Integrated Data Model Verifier with Property Templates
An Integrated Data Model Verifier with Property Templates Jaideep Nijjar Ivan Bocic Tevfik Bultan University of California, Santa Barbara {jaideepnijjar, bo, bultan}@cs.ucsb.edu Abstract Most modern web
PostgreSQL Functions By Example
Postgre [email protected] credativ Group January 20, 2012 What are Functions? Introduction Uses Varieties Languages Full fledged SQL objects Many other database objects are implemented with them
Using the SQL Server Linked Server Capability
Using the SQL Server Linked Server Capability SQL Server s Linked Server feature enables fast and easy integration of SQL Server data and non SQL Server data, directly in the SQL Server engine itself.
CSCC09F Programming on the Web. Mongo DB
CSCC09F Programming on the Web Mongo DB A document-oriented Database, mongoose for Node.js, DB operations 52 MongoDB CSCC09 Programming on the Web 1 CSCC09 Programming on the Web 1 What s Different in
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
Automating SQL Injection Exploits
Automating SQL Injection Exploits Mike Shema IT Underground, Berlin 2006 Overview SQL injection vulnerabilities are pretty easy to detect. The true impact of a vulnerability is measured
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
Submit: An Online Submission Platform for Computer Science Courses
Submit: An Online Submission Platform for Computer Science Courses Nolan Burfield Hardy Thrower Brandon Worl Sergiu M. Dascalu Frederick C. Harris, Jr. Department of Computer Science University of Nevada,
SQL Simple Queries. Chapter 3.1 V3.0. Copyright @ Napier University Dr Gordon Russell
SQL Simple Queries Chapter 3.1 V3.0 Copyright @ Napier University Dr Gordon Russell Introduction SQL is the Structured Query Language It is used to interact with the DBMS SQL can Create Schemas in the
Introduction to Python
1 Daniel Lucio March 2016 Creator of Python https://en.wikipedia.org/wiki/guido_van_rossum 2 Python Timeline Implementation Started v1.0 v1.6 v2.1 v2.3 v2.5 v3.0 v3.1 v3.2 v3.4 1980 1991 1997 2004 2010
Facebook Twitter YouTube Google Plus Website Email
PHP MySQL COURSE WITH OOP COURSE COVERS: PHP MySQL OBJECT ORIENTED PROGRAMMING WITH PHP SYLLABUS PHP 1. Writing PHP scripts- Writing PHP scripts, learn about PHP code structure, how to write and execute
Perl & NoSQL Focus on MongoDB. Jean-Marie Gouarné http://jean.marie.gouarne.online.fr [email protected]
Perl & NoSQL Focus on MongoDB Jean-Marie Gouarné http://jean.marie.gouarne.online.fr [email protected] AGENDA A NoIntroduction to NoSQL The document store data model MongoDB at a glance MongoDB Perl API
Web Development using PHP (WD_PHP) Duration 1.5 months
Duration 1.5 months Our program is a practical knowledge oriented program aimed at learning the techniques of web development using PHP, HTML, CSS & JavaScript. It has some unique features which are as
A basic create statement for a simple student table would look like the following.
Creating Tables A basic create statement for a simple student table would look like the following. create table Student (SID varchar(10), FirstName varchar(30), LastName varchar(30), EmailAddress varchar(30));
SQL Injection January 23, 2013
Web-based Attack: SQL Injection SQL Injection January 23, 2013 Authored By: Stephanie Reetz, SOC Analyst Contents Introduction Introduction...1 Web applications are everywhere on the Internet. Almost Overview...2
DIPLOMA IN WEBDEVELOPMENT
DIPLOMA IN WEBDEVELOPMENT Prerequisite skills Basic programming knowledge on C Language or Core Java is must. # Module 1 Basics and introduction to HTML Basic HTML training. Different HTML elements, tags
MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example
MapReduce MapReduce and SQL Injections CS 3200 Final Lecture Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04: Sixth Symposium on Operating System Design
Webapps Vulnerability Report
Tuesday, May 1, 2012 Webapps Vulnerability Report Introduction This report provides detailed information of every vulnerability that was found and successfully exploited by CORE Impact Professional during
Spark ΕΡΓΑΣΤΗΡΙΟ 10. Prepared by George Nikolaides 4/19/2015 1
Spark ΕΡΓΑΣΤΗΡΙΟ 10 Prepared by George Nikolaides 4/19/2015 1 Introduction to Apache Spark Another cluster computing framework Developed in the AMPLab at UC Berkeley Started in 2009 Open-sourced in 2010
SQL Injection Vulnerabilities in Desktop Applications
Vulnerabilities in Desktop Applications Derek Ditch (lead) Dylan McDonald Justin Miller Missouri University of Science & Technology Computer Science Department April 29, 2008 Vulnerabilities in Desktop
Full Text Search with Sphinx
OSCON 2009 Peter Zaitsev, Percona Inc Andrew Aksyonoff, Sphinx Technologies Inc. Sphinx in a nutshell Free, open-source full-text search engine Fast indexing and searching Scales well Lots of other (unique)
The NetBeans TM Ruby IDE: You Thought Rails Development Was Fun Before
The NetBeans TM Ruby IDE: You Thought Rails Development Was Fun Before Tor Norbye and Brian Leonard Sr. Software Engineers Sun Microsystems TS-5249 Learn how to jump-start your Ruby and Rails development
Scaling up = getting a better machine. Scaling out = use another server and add it to your cluster.
MongoDB 1. Introduction MongoDB is a document-oriented database, not a relation one. It replaces the concept of a row with a document. This makes it possible to represent complex hierarchical relationships
extensible record stores document stores key-value stores Rick Cattel s clustering from Scalable SQL and NoSQL Data Stores SIGMOD Record, 2010
System/ Scale to Primary Secondary Joins/ Integrity Language/ Data Year Paper 1000s Index Indexes Transactions Analytics Constraints Views Algebra model my label 1971 RDBMS O tables sql-like 2003 memcached
Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!
Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)
BM482E Introduction to Computer Security
BM482E Introduction to Computer Security Lecture 7 Database and Operating System Security Mehmet Demirci 1 Summary of Lecture 6 User Authentication Passwords Password storage Password selection Token-based
Authoring for System Center 2012 Operations Manager
Authoring for System Center 2012 Operations Manager Microsoft Corporation Published: November 1, 2013 Authors Byron Ricks Applies To System Center 2012 Operations Manager System Center 2012 Service Pack
Guides.rubyonrails.org
More at rubyonrails.org: Overview Download Deploy Code Screencasts Documentation Ecosystem Community Blog Guides.rubyonrails.org Ruby on Rails Guides (v3.2.2) These are the new guides for Rails 3.2 based
SERVICE-ORIENTED DESIGN WITH RUBY AND RAILS
SERVICE-ORIENTED DESIGN WITH RUBY AND RAILS SERVICE-ORIENTED DESIGN WITH RUBY AND RAILS Paul Dix Upper Saddle River, NJ Boston Indianapolis San Francisco New York Toronto Montreal London Munich Paris Madrid
Beginning ASP.NET 4.5
Beginning ASP.NET 4.5 Databases i nwo t'loroon Sandeep Chanda Damien Foggon Apress- Contents About the Author About the Technical Reviewer Acknowledgments Introduction xv xvii xix xxi Chapter 1: ASP.NET
SQL - QUICK GUIDE. Allows users to access data in relational database management systems.
http://www.tutorialspoint.com/sql/sql-quick-guide.htm SQL - QUICK GUIDE Copyright tutorialspoint.com What is SQL? SQL is Structured Query Language, which is a computer language for storing, manipulating
SQL: Programming. Introduction to Databases CompSci 316 Fall 2014
SQL: Programming Introduction to Databases CompSci 316 Fall 2014 2 Announcements (Tue., Oct. 7) Homework #2 due today midnight Sample solution to be posted by tomorrow evening Midterm in class this Thursday
Writing Scripts with PHP s PEAR DB Module
Writing Scripts with PHP s PEAR DB Module Paul DuBois [email protected] Document revision: 1.02 Last update: 2005-12-30 As a web programming language, one of PHP s strengths traditionally has been to make
Data Modeling. Database Systems: The Complete Book Ch. 4.1-4.5, 7.1-7.4
Data Modeling Database Systems: The Complete Book Ch. 4.1-4.5, 7.1-7.4 Data Modeling Schema: The structure of the data Structured Data: Relational, XML-DTD, etc Unstructured Data: CSV, JSON But where does
SnapLogic Salesforce Snap Reference
SnapLogic Salesforce Snap Reference Document Release: October 2012 SnapLogic, Inc. 71 East Third Avenue San Mateo, California 94401 U.S.A. www.snaplogic.com Copyright Information 2012 SnapLogic, Inc. All
Rails Cookbook. Rob Orsini. O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo
Rails Cookbook Rob Orsini O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Table of Contents Foreword : ; xi Preface ; ;... xiii 1. Getting Started 1 1.1 Joining the Rails Community
Databases and BigData
Eduardo Cunha de Almeida [email protected] Outline of the course Introduction Database Systems (E. Almeida) Distributed Hash Tables and P2P (C. Cassagnes) NewSQL (D. Kim and J. Meira) NoSQL (D. Kim)
1. Building Testing Environment
The Practice of Web Application Penetration Testing 1. Building Testing Environment Intrusion of websites is illegal in many countries, so you cannot take other s web sites as your testing target. First,
L7_L10. MongoDB. Big Data and Analytics by Seema Acharya and Subhashini Chellappan Copyright 2015, WILEY INDIA PVT. LTD.
L7_L10 MongoDB Agenda What is MongoDB? Why MongoDB? Using JSON Creating or Generating a Unique Key Support for Dynamic Queries Storing Binary Data Replication Sharding Terms used in RDBMS and MongoDB Data
Embedded SQL. Unit 5.1. Dr Gordon Russell, Copyright @ Napier University
Embedded SQL Unit 5.1 Unit 5.1 - Embedde SQL - V2.0 1 Interactive SQL So far in the module we have considered only the SQL queries which you can type in at the SQL prompt. We refer to this as interactive
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...
Package uptimerobot. October 22, 2015
Type Package Version 1.0.0 Title Access the UptimeRobot Ping API Package uptimerobot October 22, 2015 Provide a set of wrappers to call all the endpoints of UptimeRobot API which includes various kind
Real SQL Programming. Persistent Stored Modules (PSM) PL/SQL Embedded SQL
Real SQL Programming Persistent Stored Modules (PSM) PL/SQL Embedded SQL 1 SQL in Real Programs We have seen only how SQL is used at the generic query interface --- an environment where we sit at a terminal
Resco CRM Server Guide. How to integrate Resco CRM with other back-end systems using web services
Resco CRM Server Guide How to integrate Resco CRM with other back-end systems using web services Integrating Resco CRM with other back-end systems using web services (Data, Metadata) This document consists
Pete Helgren [email protected]. Ruby On Rails on i
Pete Helgren [email protected] Ruby On Rails on i Value Added Software, Inc 801.581.1154 18027 Cougar Bluff San Antonio, TX 78258 www.valadd.com www.petesworkshop.com (c) copyright 2014 1 Agenda Primer on
Web Application Security
Web Application Security John Zaharopoulos ITS - Security 10/9/2012 1 Web App Security Trends Web 2.0 Dynamic Webpages Growth of Ajax / Client side Javascript Hardening of OSes Secure by default Auto-patching
