Ruby on Rails. für Java Entwickler - Ende der Schmerzen - first, last = :mariano, :kamp = #{first}.#{last}@de.ibm.com
|
|
|
- Ferdinand Weaver
- 10 years ago
- Views:
Transcription
1 Ruby on Rails für Java Entwickler - Ende der Schmerzen - first, last = :mariano, :kamp = #{first.#{[email protected]
2 Ruby on Rails für Java Entwickler - Ende der Schmerzen - first, last = :mariano, :kamp = #{first.#{[email protected]
3 Es war einmal
4 Vor langer Zeit
5 1993
6 In einem fernen Land
7
8 Ein Ritter in schimmernder Rüstung
9
10
11 Yukihiro Matsumoto
12 Yukihiro Matsumoto Matz
13 Suche nach dem Edelstein
14 Ruby!
15 Smalltalk Perl + ~= Ruby
16 Smalltalk Perl objektorientierung + dynamik ~= Ruby
17 Smalltalk Perl objektorientierung dynamik + reguläre ausdrücke string manipulationen ~= Ruby
18 was ist ruby?
19 programmiersprache
20 for first
21 for human beings first
22 then computers Matz
23 objektorientiert
24 objektorientierung kapselung vererbung polymorphie
25 objektorientierung
26 objektorientierung everything is an object
27 objektorientierung ja, ja...
28 objektorientierung nein, diesmal wirklich!
29 objektorientierung >> "ruby".class => String
30 objektorientierung >> "ruby".class IRB-In => String
31 objektorientierung >> "ruby".class => String IRB-Out
32 objektorientierung >> 10.class => Fixnum
33 objektorientierung >> 10.class => Fixnum Java Primitives sind keine Objekte!
34 objektorientierung >> nil.class => NilClass
35 objektorientierung >> nil.class => NilClass Java Schlüsselwort null
36 objektorientierung >> true.class => TrueClass
37 objektorientierung >> true.class => TrueClass Java Schlüsselwort true
38 objektorientierung objekte senden und empfangen nachrichten
39 objektorientierung >> 10.div(2) => 5
40 objektorientierung >> 10.div(2) => 5 Java Nicht für Primitives
41 objektorientierung >> 10.send(:div, 2) => 5
42 objektorientierung >> 10./2 => 5
43 objektorientierung >> 10/2 => 5
44 objektorientierung >> 10/2 => 5 Java Nur für Primitives
45 objektorientierung >> 10.send(:/, 2) => 5
46 objektorientierung >> String.new "ruby" => "ruby"
47 objektorientierung >> String.new "ruby" => "ruby" Java Schlüsselwort new
48 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil
49 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil
50 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil
51 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil Define a setter
52 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil Define a getter
53 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil >> d = Dog.new => #<Dog:0x1d4bac> >> d.name="fluffy" => "Fluffy" >> d.name => "Fluffy"
54 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil >> d = Dog.new => #<Dog:0x1d4bac> >> d.name="fluffy" => "Fluffy" >> d.name => "Fluffy" Dog d = new Dog()
55 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil >> d = Dog.new => #<Dog:0x1d4bac> >> d.name="fluffy" => "Fluffy" >> d.name => "Fluffy" d.setname( Fluffy )
56 objektorientierung >> class Dog >> def name=(new_name) >> end >> def name >> end >> end => nil >> d = Dog.new => #<Dog:0x1d4bac> >> d.name="fluffy" => "Fluffy" >> d.name => "Fluffy" d.getname()
57 dynamisch
58 dynamik
59 dynamik everything is open
60 dynamik sogar die ruby libraries
61 dynamik >> class Fixnum >> def even? >> self % 2 == 0 >> end >> end => nil >> 10.even? => true >> 9.even? => false
62 dynamik >> class Fixnum >> def even? >> self % 2 == 0 >> end >> end => nil >> 10.even? => true >> 9.even? => false Java Subclassing, wenn erlaubt Helper Klassen -> StringUtil
63 dynamik und bereits lebende objekte
64 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
65 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
66 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
67 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
68 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
69 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
70 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end
71 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end >> Player.find(:all).size => 4
72 dynamik class << ActiveRecord::Base.connection alias : old_execute :execute def execute(statement, name) puts "Executing: #{statement" old_execute (statement, name) end end >> Player.find(:all).size Executing: SELECT * FROM players => 4
73 dynamik
74 dynamik weak typing
75 dynamik strong/static typing weak typing
76 dynamik strong/static typing dynamic typing weak typing
77 dynamik dynamic typing >> def sum(a, b) >> a+b >> end => nil
78 dynamik dynamic typing >> def sum(a, b) >> a+b >> end => nil >> sum(1,2) => 3
79 dynamik dynamic typing >> def sum(a, b) >> a+b >> end => nil >> sum("a","z") => "AZ"
80 dynamik dynamic typing >> def sum(a, b) >> a+b >> end => nil >> sum("a",2)
81 dynamik dynamic typing >> def sum(a, b) >> a+b >> end => nil >> sum("a",2) TypeError: can't convert Fixnum into String
82 dynamik :method_missing
83 dynamik >> class Receiver >> def method_missing(action, *args) >> puts "My method #{action was called," >> puts "with parameters: #{args.inspect" >> end >> end
84 dynamik >> class Receiver >> def method_missing(action, *args) >> puts "My method #{action was called," >> puts "with parameters: #{args.inspect" >> end >> end >> r = Receiver.new => #<Receiver:0x33d43c>
85 dynamik >> class Receiver >> def method_missing(action, *args) >> puts "My method #{action was called," >> puts "with parameters: #{args.inspect" >> end >> end >> r = Receiver.new => #<Receiver:0x33d43c> >> r.test My method test was called, with parameters: [] => nil
86 dynamik >> class Receiver >> def method_missing(action, *args) >> puts "My method #{action was called," >> puts "with parameters: #{args.inspect" >> end >> end >> r = Receiver.new => #<Receiver:0x33d43c> >> r.test My method test was called, with parameters: [] => nil >> r.add 1,"b", 2 My method add was called, with parameters: [1, "b", 2] => nil
87 dynamik >> class Receiver >> def method_missing(action, *args) >> puts "My method #{action was called," >> puts "with parameters: #{args.inspect" >> end >> end >> r = Receiver.new => #<Receiver:0x33d43c> >> r.test My method test was called, with parameters: [] => nil >> r.add 1,"b", 2 My method add was called, with parameters: [1, "b", 2] => nil Proxy? Mock? State Machine? CSV Reader? AOP?
88 dynamik meta programmierung
89 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil
90 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil Definiert on the fly : :name, :name=, :age, :age=
91 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil Überschreibt den setter für age.
92 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil >> d = Dog.new => #<Dog:0x318498>
93 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil >> d.name = "Fluffy" => "Fluffy" >> d.age = 2 => 2
94 dynamik >> class Dog >> attr_accessor :name, :age >> def age=(new_age) >> end >> end => nil >> d.age => 14
95 dynamik und vieles mehr...
96 blocks/closures (nur ganz kurz)
97 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end
98 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end
99 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2
100 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2
101 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2
102 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2
103 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2
104 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2 >> log("output"){puts "Chunky Bacon" Now executing Output. Chunky Bacon Done with Output. => nil
105 closures >> def log(name) >> puts "Now executing #{name." >> result = yield >> puts "Done with #{name." >> result >> end >> log("addition"){1+1 Now executing Addition. Done with Addition. => 2 >> log("output"){puts "Chunky Bacon" Now executing Output. Chunky Bacon Done with Output. => nil >> ["chunky","bacon"].each { element puts element chunky bacon
106 demo!
107 2000
108 Dave Thomas
109 Andy Hunt
110 Pragmatic Programmers
111 Pragmatic Programmers
112 Pragmatic Programmers "Learn at least one new [programming] language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut."
113 Pickaxe
114 Google Trends
115 Programming Language Trends
116 Script Kiddies...
117 ... Ritter...
118 Kent Beck
119 Kent Beck
120 Kent Beck
121 Kent Beck
122 Kent Beck I always knew one day Smalltalk would replace Java. I just didn't know it would be called Ruby.
123 Martin Fowler
124 Martin Fowler
125 Martin Fowler
126 Martin Fowler
127 Martin Fowler I like the ruby language for its rich yet uncluttered syntax and the well designed frameworks that come with it.
128 was ist nun Rails?
129 2004
130 der geistige vater
131
132 Google/O Reilly: Best Hacker
133 Google/O Reilly: Best Hacker
134 David Heinemeier Hanson (DHH)
135 rails ist...
136 mvc framwork
137 aus einem guss
138 extrahiert aus laufender anwendung
139 conventions configuration
140 conventions over configuration
141 opinionated software
142 zuckerbrot & peitsche
143 DRY (don t repeat yourself) drücke alles nur einmal aus
144 elegant
145 conventions
146 conventions Klassen- und Tabellen
147 conventions Klassen- und Tabellen Klassennamen sind Singular. Tabellennamen sind Plural.
148 conventions Klassen- und Tabellen Klassennamen sind Singular. Tabellennamen sind Plural. Klassennamen sind CamelCase. Tabellennamen sind Kleinbuchstaben, verbunden durch _.
149 conventions Klassen- und Tabellen Klassennamen sind Singular. Tabellennamen sind Plural. Klassennamen sind CamelCase. Tabellennamen sind Kleinbuchstaben, verbunden durch _. Bsp.: TurnState => turn_states OrderReceipt => order_receipts Person => people
150 conventions Spalten- und Attribute Spaltenname == Attributname Jede Tabelle hat eine id -Spalte
151 conventions Relationen Spaltennamen des foreign keys entspricht dem Namen der Klasse plus _id.
152 conventions Relationen Spaltennamen des foreign keys entspricht dem Namen der Klasse plus _id. Customer id name * Book id name author
153 conventions Relationen Spaltennamen des foreign keys entspricht dem Namen der Klasse plus _id. Customer id name * Book id name author Der Tabelle books wird die Spalte customer_id angefügt.
154 conventions... und mehr...
155 und? bringt s was?
156 JEE vs Rails
157 JEE vs Rails Java Beispielcode von Sebastian Hennebrueder id Customer name * Book id name author
158 /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import java.util.set; JEE vs Rails import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.sequencegenerator; import javax.persistence.table; /** hennebrueder @SequenceGenerator(name="customer_sequence", sequencename="customer_id_seq") public class Customer { private Integer id; private String name; Customer id name private List books =new ArrayList(); public Customer(){ super(); public Customer(Integer id, String name){ super(); this.id=id; fetch = FetchType.EAGER, mappedby="customer", targetentity=book.class) public List getbooks() { return books; public void setbooks(list books) { this.books generator="customer_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = public String tostring() { return "Customer: " + getid() + " Name " + getname();
159 Model [..] public class Customer { Customer id name [..] Rails: class Customer < ActiveRecord::Base end Convention: Class Name = Customer => Table Name = Customers sonst: set_table_name( customer )
160 Primary Key sequencename="customer_id_seq") public class Customer { [..] Customer generator="customer_sequence") public Integer getid() { Rails: Entfällt. Convention: Primary Key => id, sequence
161 fetch = FetchType.EAGER, mappedby="customer", targetentity=book.class) public List getbooks() { return books; Customer id name public void setbooks(list books) { this.books = books; Rails: has_many :books Convention: targetentity = Singular des Entitätennames, sonst, :class_name = Book Getter/Setter dynamisch
162 Attributes private Integer id; private String name; private List books =new ArrayList(); public Customer(){ super(); public Customer(Integer id, String name){ super(); this.id=id; this.name=name; public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; Customer id name Rails: create_table :customers do t # keine id spalte t.column :name, :string end Convention: Name der Spalte = Name des Attributs Getter und Setter dynamisch
163 public String tostring() { return "Customer: "+getid()+" Name "+getname(); Customer id name Rails: Entfällt, Default: Duck", "id"=>"1"> Alternativ: def to_s Customer: #{id Name #{name end => "Customer: 1 Name Donald Duck"
164 CustomerDAO, CustomerDAOImpl save/persist merge findall findbyid findbycustomer (BookDAO...) Customer id name Book id name author Rails: Alle Methoden bereits im Framework generisch enthalten findbyx dynamisch -> findbyname, findbyauthor, findbycustomer, findbytitleandauthor...
165 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
166 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
167 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
168 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
169 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
170 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
171 Migration Customer id name * Book id name author class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end
172 Der Code Customer id name * Book id name author class Customer < ActiveRecord::Base end has_many :books class Book < ActiveRecord::Base end belongs_to :customer
173 Perfection in Design This Wikipedia and Wikimedia Commons image is from the user Chris 73 and is freely available at wiki/image:antoine_de_saint-exup%c3%a9ry_lyon.jpg under the creative commons cc-by-sa 2.5 license.
174 Perfection in Design Antoine de Saint-Exupéry This Wikipedia and Wikimedia Commons image is from the user Chris 73 and is freely available at wiki/image:antoine_de_saint-exup%c3%a9ry_lyon.jpg under the creative commons cc-by-sa 2.5 license.
175 Perfection in Design You know you ve achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away. Antoine de Saint-Exupéry This Wikipedia and Wikimedia Commons image is from the user Chris 73 and is freely available at wiki/image:antoine_de_saint-exup%c3%a9ry_lyon.jpg under the creative commons cc-by-sa 2.5 license.
176 JEE vs Rails Migration Customer Book
177 /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import java.util.set; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.sequencegenerator; import javax.persistence.table; /** hennebrueder @SequenceGenerator(name="customer_sequence", sequencename="customer_id_seq") public class Customer { private Integer id; private String name; private List books =new ArrayList(); public Customer(){ super(); public Customer(Integer id, String name){ super(); this.id=id; fetch = FetchType.EAGER, mappedby="customer", targetentity=book.class) public List getbooks() { return books; public void setbooks(list books) { this.books generator="customer_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = public String tostring() { return "Customer: " + getid() + " Name " + getname(); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.stateless; import javax.persistence.entity; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; /** hennebrueder * public class CustomerDaoImp implements CustomerDao private EntityManager em; public static final String RemoteJNDIName = CustomerDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = CustomerDaoImp.class.getSimpleName() + "/local"; /* (non-javadoc) de.laliluna.example.ejb.customerdao#save(de.laliluna.example.ejb.book) */ public void save(customer customer) { em.persist(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#reattach(de.laliluna.example.ejb.book) */ public void merge(customer customer) { em.merge(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findall() */ public List findall() { return em.createquery("from Customer").getResultList(); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findbyid(java.lang.integer) */ public Customer findbyid(integer id) { Customer customer = em.find(customer.class, id); return customer; /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import javax.ejb.stateful; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import org.apache.log4j.logger; import sun.security.krb5.internal.crypto.bo; /** hennebrueder * public class BookDaoImp implements BookDao private EntityManager em; private Logger log = Logger.getLogger(this.getClass()); /* * (non-javadoc) * de.laliluna.example.ejb.bookdao#save(de.laliluna.example.ejb.book) */ public void save(book book) { log.debug("persist book: " + book); em.persist(book); public void merge(book book) { em.merge(book); public List findall() { log.debug("find All books"); return em.createquery("from Book").getResultList(); public static final String RemoteJNDIName = BookDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = BookDaoImp.class.getSimpleName() + "/local"; public Book findbyid(integer id) { return em.find(book.class, id); public List findbycustomer(customer customer) { log.debug("find by customer"); return em.createquery("from Book b where b.customer = :customer").setparameter("customer", customer).getresultlist(); package de.laliluna.library; import java.util.list; import javax.ejb.local; import public interface BookDao { public void save(book book); public void merge(book book); public List findall(); public List findbycustomer(customer customer); public Book findbyid(integer id); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.local; /** hennebrueder * public interface CustomerDao { public void save(customer customer); public void merge(customer customer); public List findall(); public Customer findbyid(integer id); /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.io.serializable; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.manytoone; import javax.persistence.sequencegenerator; import javax.persistence.table; import org.hibernate.annotations.genericgenerator; /** hennebrueder = = "book_sequence", sequencename = "book_id_seq") public class Book implements Serializable { private Integer id; private String title; private String author; private Customer customer; public Book() { super(); public Book(Integer id, String title, String author) { super(); this.id = id; this.title = title; this.author = "customer_id") public Customer getcustomer() { return customer; public void setcustomer(customer customer) { this.customer = customer; public String getauthor() { return author; public void setauthor(string author) { this.author = GenerationType.SEQUENCE, generator = "book_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String gettitle() { return title; public void settitle(string title) { this.title = public String tostring() { return "Book: " + getid() + " Title " + gettitle() + " Author " + getauthor(); JEE vs Rails Migration Customer Book
178 /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import java.util.set; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.sequencegenerator; import javax.persistence.table; /** hennebrueder @SequenceGenerator(name="customer_sequence", sequencename="customer_id_seq") public class Customer { private Integer id; private String name; private List books =new ArrayList(); public Customer(){ super(); public Customer(Integer id, String name){ super(); this.id=id; fetch = FetchType.EAGER, mappedby="customer", targetentity=book.class) public List getbooks() { return books; public void setbooks(list books) { this.books generator="customer_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = public String tostring() { return "Customer: " + getid() + " Name " + getname(); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.stateless; import javax.persistence.entity; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; /** hennebrueder * public class CustomerDaoImp implements CustomerDao private EntityManager em; public static final String RemoteJNDIName = CustomerDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = CustomerDaoImp.class.getSimpleName() + "/local"; /* (non-javadoc) de.laliluna.example.ejb.customerdao#save(de.laliluna.example.ejb.book) */ public void save(customer customer) { em.persist(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#reattach(de.laliluna.example.ejb.book) */ public void merge(customer customer) { em.merge(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findall() */ public List findall() { return em.createquery("from Customer").getResultList(); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findbyid(java.lang.integer) */ public Customer findbyid(integer id) { Customer customer = em.find(customer.class, id); return customer; /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import javax.ejb.stateful; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import org.apache.log4j.logger; import sun.security.krb5.internal.crypto.bo; /** hennebrueder * public class BookDaoImp implements BookDao private EntityManager em; private Logger log = Logger.getLogger(this.getClass()); /* * (non-javadoc) * de.laliluna.example.ejb.bookdao#save(de.laliluna.example.ejb.book) */ public void save(book book) { log.debug("persist book: " + book); em.persist(book); public void merge(book book) { em.merge(book); public List findall() { log.debug("find All books"); return em.createquery("from Book").getResultList(); public static final String RemoteJNDIName = BookDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = BookDaoImp.class.getSimpleName() + "/local"; public Book findbyid(integer id) { return em.find(book.class, id); public List findbycustomer(customer customer) { log.debug("find by customer"); return em.createquery("from Book b where b.customer = :customer").setparameter("customer", customer).getresultlist(); package de.laliluna.library; import java.util.list; import javax.ejb.local; import public interface BookDao { public void save(book book); public void merge(book book); public List findall(); public List findbycustomer(customer customer); public Book findbyid(integer id); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.local; /** hennebrueder * public interface CustomerDao { public void save(customer customer); public void merge(customer customer); public List findall(); public Customer findbyid(integer id); /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.io.serializable; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.manytoone; import javax.persistence.sequencegenerator; import javax.persistence.table; import org.hibernate.annotations.genericgenerator; /** hennebrueder = = "book_sequence", sequencename = "book_id_seq") public class Book implements Serializable { private Integer id; private String title; private String author; private Customer customer; public Book() { super(); public Book(Integer id, String title, String author) { super(); this.id = id; this.title = title; this.author = "customer_id") public Customer getcustomer() { return customer; public void setcustomer(customer customer) { this.customer = customer; public String getauthor() { return author; public void setauthor(string author) { this.author = GenerationType.SEQUENCE, generator = "book_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String gettitle() { return title; public void settitle(string title) { this.title = public String tostring() { return "Book: " + getid() + " Title " + gettitle() + " Author " + getauthor(); class Customer < ActiveRecord::Base has_many :books end class Book < ActiveRecord::Base belongs_to :customer end class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end JEE vs Rails Migration Customer Book
179 /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import java.util.set; import javax.persistence.cascadetype; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.onetomany; import javax.persistence.sequencegenerator; import javax.persistence.table; /** hennebrueder @SequenceGenerator(name="customer_sequence", sequencename="customer_id_seq") public class Customer { private Integer id; private String name; private List books =new ArrayList(); public Customer(){ super(); public Customer(Integer id, String name){ super(); this.id=id; fetch = FetchType.EAGER, mappedby="customer", targetentity=book.class) public List getbooks() { return books; public void setbooks(list books) { this.books generator="customer_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = public String tostring() { return "Customer: " + getid() + " Name " + getname(); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.stateless; import javax.persistence.entity; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; /** hennebrueder * public class CustomerDaoImp implements CustomerDao private EntityManager em; public static final String RemoteJNDIName = CustomerDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = CustomerDaoImp.class.getSimpleName() + "/local"; /* (non-javadoc) de.laliluna.example.ejb.customerdao#save(de.laliluna.example.ejb.book) */ public void save(customer customer) { em.persist(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#reattach(de.laliluna.example.ejb.book) */ public void merge(customer customer) { em.merge(customer); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findall() */ public List findall() { return em.createquery("from Customer").getResultList(); /* (non-javadoc) de.laliluna.example.ejb.customerdao#findbyid(java.lang.integer) */ public Customer findbyid(integer id) { Customer customer = em.find(customer.class, id); return customer; /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.arraylist; import java.util.list; import javax.ejb.stateful; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; import org.apache.log4j.logger; import sun.security.krb5.internal.crypto.bo; /** hennebrueder * public class BookDaoImp implements BookDao private EntityManager em; private Logger log = Logger.getLogger(this.getClass()); /* * (non-javadoc) * de.laliluna.example.ejb.bookdao#save(de.laliluna.example.ejb.book) */ public void save(book book) { log.debug("persist book: " + book); em.persist(book); public void merge(book book) { em.merge(book); public List findall() { log.debug("find All books"); return em.createquery("from Book").getResultList(); public static final String RemoteJNDIName = BookDaoImp.class.getSimpleName() + "/remote"; public static final String LocalJNDIName = BookDaoImp.class.getSimpleName() + "/local"; public Book findbyid(integer id) { return em.find(book.class, id); public List findbycustomer(customer customer) { log.debug("find by customer"); return em.createquery("from Book b where b.customer = :customer").setparameter("customer", customer).getresultlist(); package de.laliluna.library; import java.util.list; import javax.ejb.local; import public interface BookDao { public void save(book book); public void merge(book book); public List findall(); public List findbycustomer(customer customer); public Book findbyid(integer id); /** * Sebastian Hennebrueder * created Mar 15, 2006 * copyright 2006 by */ package de.laliluna.library; import java.util.list; import javax.ejb.local; /** hennebrueder * public interface CustomerDao { public void save(customer customer); public void merge(customer customer); public List findall(); public Customer findbyid(integer id); /** * Sebastian Hennebrueder * created Feb 27, 2006 * copyright 2006 by */ package de.laliluna.library; import java.io.serializable; import javax.persistence.entity; import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.joincolumn; import javax.persistence.manytoone; import javax.persistence.sequencegenerator; import javax.persistence.table; import org.hibernate.annotations.genericgenerator; /** hennebrueder = = "book_sequence", sequencename = "book_id_seq") public class Book implements Serializable { private Integer id; private String title; private String author; private Customer customer; public Book() { super(); public Book(Integer id, String title, String author) { super(); this.id = id; this.title = title; this.author = "customer_id") public Customer getcustomer() { return customer; public void setcustomer(customer customer) { this.customer = customer; public String getauthor() { return author; public void setauthor(string author) { this.author = GenerationType.SEQUENCE, generator = "book_sequence") public Integer getid() { return id; public void setid(integer id) { this.id = id; public String gettitle() { return title; public void settitle(string title) { this.title = public String tostring() { return "Book: " + getid() + " Title " + gettitle() + " Author " + getauthor(); class Customer < ActiveRecord::Base has_many :books end class Book < ActiveRecord::Base belongs_to :customer end class Initial < ActiveRecord::Migration def self.up create_table :books do t t.column :name, :string t.column :author, :string t.column :customer_id, :integer end create_table :customers do t t.column :name, :string end end def self.down drop_table :books drop_table :customers end end JEE vs Rails Migration Customer Book Conventions at work!
180
181 Signal / Noise
182 Signal / Noise public void testbook() { Book book = new Book(null,"My first bean book", "Sebastian"); em.persist(book); Book book2 = new Book(null,"another book", "Paul"); em.persist(book2); Book book3 = new Book(null,"EJB 3 developer guide","sebastian"); em.persist(book3); [..] def test_book book = Book.create(:name => "My first bean book", :author => "Sebastian") book2 = Book.create(:name => "another book", :author => "Paul") book3 = Book.create(:name => "EJB 3 dev guide", :author => "Sebastian") [..]
183 Signal / Noise public void testbook() { Book book = new Book(null,"My first bean book", "Sebastian"); em.persist(book); Book book2 = new Book(null,"another book", "Paul"); em.persist(book2); Book book3 = new Book(null,"EJB 3 developer guide","sebastian"); em.persist(book3); [..] def test_book book = Book.create(:name => "My first bean book", :author => "Sebastian") book2 = Book.create(:name => "another book", :author => "Paul") book3 = Book.create(:name => "EJB 3 dev guide", :author => "Sebastian") [..]
184 Signal / Noise [..] System.out.println("list some books"); List somebooks = em.createquery("from Book b where b.author=:name").setparameter("name", "Sebastian").getResultList(); for (Iterator iter = somebooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); System.out.println("list all books"); List allbooks = em.createquery("from Book").getResultList(); for (Iterator iter = allbooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); [..] puts "list some books" Book.find_all_by_author("Sebastian").each { book puts book.inspect puts "list all books" Book.find(:all).each { book puts book.inspect
185 Signal / Noise [..] System.out.println("list some books"); List somebooks = em.createquery("from Book b where b.author=:name").setparameter("name", "Sebastian").getResultList(); for (Iterator iter = somebooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); System.out.println("list all books"); List allbooks = em.createquery("from Book").getResultList(); for (Iterator iter = allbooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); [..] puts "list some books" Book.find_all_by_author("Sebastian").each { book puts book.inspect puts "list all books" Book.find(:all).each { book puts book.inspect
186 Signal / Noise [..] System.out.println("list some books"); List somebooks = em.createquery("from Book b where b.author=:name").setparameter("name", "Sebastian").getResultList(); for (Iterator iter = somebooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); JDK 1.5 to the rescue (Generics, foreach) System.out.println("list all books"); List allbooks = em.createquery("from Book").getResultList(); for (Iterator iter = allbooks.iterator(); iter.hasnext();){ Book element = (Book) iter.next(); System.out.println(element); [..] puts "list some books" Book.find_all_by_author("Sebastian").each { book puts book.inspect puts "list all books" Book.find(:all).each { book puts book.inspect
187 Signal / Noise public void testrelation() { [..] Drei Books und zwei Customers angelegt customer1.getbooks().add(book); book.setcustomer(customer1); customer2.getbooks().add(book2); customer2.getbooks().add(book3); [..] Drei Books und zwei Customers angelegt customer1.books << book customer2.books << [book2, book3]
188 Signal / Noise public void testrelation() { [..] Drei Books und zwei Customers angelegt customer1.getbooks().add(book); book.setcustomer(customer1); customer2.getbooks().add(book2); customer2.getbooks().add(book3); [..] Drei Books und zwei Customers angelegt customer1.books << book customer2.books << [book2, book3]
189 Und mehr... class Book < ActiveRecord::Base belongs_to :customer has_many :chapters has_many :sections, :through => :chapters validates_presence_of :author validates_uniqueness_of :name validates_length_of :name, :within => 6..20, :too_long => "pick shorter name", :too_short => "pick longer name" end
190 Batteries included Rails bringt einiges mit: Struktur Build Testunterstützung Entwicklungs-, Test- und Produktionsumgebung Kein eigenes Denken notwendig Skripte und Automatismen verwenden gleiche Lokationen
191 Applikation
192 Applikation
193 Applikation
194 Applikation
195 Applikation
196 Applikation
197 Applikation
198 Applikation
199 Applikation
200 Applikation
201 Umgebung / Konfiguration
202 Umgebung / Konfiguration
203 Umgebung / Konfiguration
204 Umgebung / Konfiguration
205 Umgebung / Konfiguration
206 Umgebung / Konfiguration
207 Umgebung / Konfiguration
208 Umgebung / Konfiguration
209 Umgebung / Konfiguration
210 Umgebung / Konfiguration
211 Static Content / Skripte
212 Static Content / Skripte
213 Static Content / Skripte
214 Static Content / Skripte
215 Static Content / Skripte
216 Static Content / Skripte
217 Static Content / Skripte
218 Static Content / Skripte
219 Test
220 Test
221 Test
222 Test
223 Test
224 Test
225 Test
226 Test
227 wie geht s weiter?
228 Why The Lucky Stiff s: Inklusive Tutorial
229 A language that doesn t affect the way you think about programming is not worth knowing Alan Perlis
230 A language that doesn t affect the way you think about programming is not worth knowing Alan Perlis Jim Weirich s: 10 Things Every Java Programmer Should Now About Ruby Viele Dinge in dieser Präsentation dort geklaut.
231 Pickaxe 2nd edition Umfassend
232 The Ruby Way Umfassend Detailliert Zweites Buch?
233 Ruby for Rails Metaprogrammierung
234 Creating a Weblog in 15 Minutes
235 Agile Web Development with Rails (AWDR) 2nd Edition in Vorbereitung 1st Edition auch in Deutsch erhältlich
236 Rapid Web Development mit Ruby on Rails Deutsch 2nd Edition gerade erschienen
237 Weiterführend
238
239 ... und so lebten sie...
240 ... glücklich...
241 ... bis an s Ende ihrer Tage.
242 Danke! The text of this presentation is licensed under the Creative Commons License, Attribution-ShareAlike 2.5. As I don t have all the rights to the images in this presentation, the images and the Java source code are not covered by this license. I would also like to thank Babie Tanaka and the flickr users letioux and candiedwomanire that granted me the right to use their images. This work is licensed under the Creative Commons Attribution-ShareAlike 2.5 License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
This tutorial explains basics about EJB3 and shows a simple work through to set up a EJB 3 project, create a entity bean and a session bean facade.
First EJB 3 Tutorial This tutorial explains basics about EJB3 and shows a simple work through to set up a EJB 3 project, create a entity bean and a session bean facade. Do you need expert help or consulting?
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
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
Java Server Pages combined with servlets in action. Generals. Java Servlets
Java Server Pages combined with servlets in action We want to create a small web application (library), that illustrates the usage of JavaServer Pages combined with Java Servlets. We use the JavaServer
We are not repeating all the basics here. Have a look at the basic EJB tutorials before you start this tutorial.
Creating Finder for EJB 2 with xdoclet Generals Author: Sascha Wolski http://www.laliluna.de/tutorials.html Tutorials für Struts, JSF, EJB, xdoclet und eclipse. Date: December, 06 th 2004 Software: EJB
Hibernate Language Binding Guide For The Connection Cloud Using Java Persistence API (JAP)
Hibernate Language Binding Guide For The Connection Cloud Using Java Persistence API (JAP) Table Of Contents Overview... 3 Intended Audience... 3 Prerequisites... 3 Term Definitions... 3 Introduction...
Developing an EJB3 Application. on WebSphere 6.1. using RAD 7.5
Developing an EJB3 Application on WebSphere 6.1 using RAD 7.5 Introduction This tutorial introduces how to create a simple EJB 3 application using Rational Application Developver 7.5( RAD7.5 for short
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
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
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
Search Engines Chapter 2 Architecture. 14.4.2011 Felix Naumann
Search Engines Chapter 2 Architecture 14.4.2011 Felix Naumann Overview 2 Basic Building Blocks Indexing Text Acquisition Text Transformation Index Creation Querying User Interaction Ranking Evaluation
6.170 Tutorial 3 - Ruby Basics
6.170 Tutorial 3 - Ruby Basics Prerequisites 1. Have Ruby installed on your computer a. If you use Mac/Linux, Ruby should already be preinstalled on your machine. b. If you have a Windows Machine, you
JAVA PROGRAMMING PATTERN FOR THE PREFERENCES USABILITY MECHANISM
JAVA PROGRAMMING PATTERN FOR THE PREFERENCES USABILITY MECHANISM Drafted by Francy Diomar Rodríguez, Software and Systems PhD Student, Facultad de Informática. Universidad Politécnica de Madrid. ([email protected])
Update to V10. Automic Support: Best Practices Josef Scharl. Please ask your questions here http://innovate.automic.com/q&a Event code 6262
Update to V10 Automic Support: Best Practices Josef Scharl Please ask your questions here http://innovate.automic.com/q&a Event code 6262 Agenda Update to Automation Engine Version 10 Innovations in Version
OTN Developer Day Enterprise Java. Hands on Lab Manual JPA 2.0 and Object Relational Mapping Basics
OTN Developer Day Enterprise Java Hands on Lab Manual JPA 2.0 and Object Relational Mapping Basics I want to improve the performance of my application... Can I copy Java code to an HTML Extension? I coded
Microsoft Certified IT Professional (MCITP) MCTS: Windows 7, Configuration (070-680)
Microsoft Office Specialist Office 2010 Specialist Expert Master Eines dieser Examen/One of these exams: Eines dieser Examen/One of these exams: Pflichtexamen/Compulsory exam: Word Core (Exam 077-881)
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
Author: Sascha Wolski Sebastian Hennebrueder http://www.laliluna.de/tutorials.html Tutorials for Struts, EJB, xdoclet and eclipse.
JUnit Testing JUnit is a simple Java testing framework to write tests for you Java application. This tutorial gives you an overview of the features of JUnit and shows a little example how you can write
ida.com excellence in dependable automation
IEC 61508 Maintenance Status IEC 61508 Maintenance Projekt ist aus dem zulässigen Zeitrahmen gelaufen Viele Baustellen auch durch neue Mitglieder (Frankreich, USA, IEC 61511 Team) Bestehende Anforderungen,
Web Service Caching Using Command Cache
Web Service Caching Using Command Cache Introduction Caching can be done at Server Side or Client Side. This article focuses on server side caching of web services using command cache. This article will
Dynamic website development using the Grails Platform. Joshua Davis Senior Architect Cognizant Technology Solutions joshua.davis@cognizant.
Dynamic website development using the Grails Platform Joshua Davis Senior Architect Cognizant Technology Solutions [email protected] Topics Covered What is Groovy? What is Grails? What are the
Thomas Rümmler AIT GmbH & Co. KG Christian Schlag AIT GmbH & Co. KG. Central Build and Release Management with TFS
Thomas Rümmler AIT GmbH & Co. KG Christian Schlag AIT GmbH & Co. KG Central Build and Release Management with TFS 2 OUR DAILY MOTIVATION It s hard enough for software developers to write code that works
Embedded Software Development and Test in 2011 using a mini- HIL approach
Primoz Alic, isystem, Slovenia Erol Simsek, isystem, Munich Embedded Software Development and Test in 2011 using a mini- HIL approach Kurzfassung Dieser Artikel beschreibt den grundsätzlichen Aufbau des
Is Cloud relevant for SOA? 2014-06-12 - Corsin Decurtins
Is Cloud relevant for SOA? 2014-06-12 - Corsin Decurtins Abstract SOA (Service-Orientierte Architektur) war vor einigen Jahren ein absolutes Hype- Thema in Unternehmen. Mittlerweile ist es aber sehr viel
Kotlin for Android Developers
Kotlin for Android Developers Learn Kotlin in an easy way while developing an Android App Antonio Leiva This book is for sale at http://leanpub.com/kotlin-for-android-developers This version was published
Ruby on Rails. a high-productivity web application framework. blog.curthibbs.us/ http://blog. Curt Hibbs <[email protected]>
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
Not your Father s. Java EE. Lars Röwekamp CIO New Technologies. @mobilelarson @_openknowledge
Not your Father s @mobilelarson @_openknowledge Java EE Lars Röwekamp CIO New Technologies May I submit my billing info to your merchant account via your payment gateway? Wo liegt das Problem... Too many
Web Development Frameworks
COMS E6125 Web-enHanced Information Management (WHIM) Web Development Frameworks Swapneel Sheth [email protected] @swapneel Spring 2012 1 Topic 1 History and Background of Web Application Development
Kapitel 2 Unternehmensarchitektur III
Kapitel 2 Unternehmensarchitektur III Software Architecture, Quality, and Testing FS 2015 Prof. Dr. Jana Köhler [email protected] IT Strategie Entwicklung "Foundation for Execution" "Because experts
How To Manage Build And Release With Tfs 2013
#dwx14 [email protected] #dwx14 Central Build and Release Management with TFS Thomas Rümmler AIT GmbH & Co. KG Christian Schlag AIT GmbH & Co. KG 1 2 OUR DAILY MOTIVATION It s hard enough for
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
Jetzt können Sie den Befehl 'nsradmin' auch für diverse Check-Operationen verwenden!
NetWorker - Allgemein Tip 642, Seite 1/6 Jetzt können Sie den Befehl 'nsradmin' auch für diverse Check-Operationen verwenden! Seit einiger Zeit (NetWorker 8.2.0?) können Sie mit dem Befehl nsradmin -C
Central Release and Build Management with TFS. Christian Schlag
Central Release and Build Management with TFS Christian Schlag OUR DAILY MOTIVATION It s hard enough for software developers to write code that works on their machine. But even when it s done, there s
APPLICATION SETUP DOCUMENT
APPLICATION SETUP DOCUMENT HeiTek Software Development GmbH Add-Ons Oracle Application Change Layout in Receiving Personalisation Example Ref Prepared by HeiTek Software Development GmbH Author: : Georg
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
Dozer v.5.5.1 User's Guide
... Dozer v.5.5.1 User's Guide... Franz Garsombke, Matt Tierney, Dmitry Buzdin 2014-04-22 T a b l e o f C o n t e n t s i Table of Contents... 1. Table of Contents...........................................................
Smalltalk in Enterprise Applications. ESUG Conference 2010 Barcelona
Smalltalk in Enterprise Applications ESUG Conference 2010 Barcelona About NovaTec GmbH German software consulting company Offering full IT services for complex business applications Software engineering,
Open Text Social Media. Actual Status, Strategy and Roadmap
Open Text Social Media Actual Status, Strategy and Roadmap Lars Onasch (Product Marketing) Bernfried Howe (Product Management) Martin Schwanke (Global Service) February 23, 2010 Slide 1 Copyright Open
Ruby on Rails An Agile Developer s Framework
Ruby on Rails An Agile Developer s Framework S. Meenakshi Associate Professor Department of Computer Applications, R.M.K. Engineering College, Kavaraipettai ABSTRACT Agile development framework is a free,
Upgrading Your Skills to MCSA Windows Server 2012 MOC 20417
Upgrading Your Skills to MCSA Windows Server 2012 MOC 20417 In dieser Schulung lernen Sie neue Features und Funktionalitäten in Windows Server 2012 in Bezug auf das Management, die Netzwerkinfrastruktur,
C:\Documents and Settings\Gijs\Desktop\src\client\Client.java dinsdag 3 november 2009 10:50
C:\Documents and Settings\Gijs\Desktop\src\client\Client.java dinsdag 3 november 2009 10:50 package client; import hotel.bookingconstraints; import hotel.bookingexception; import hotel.costumersessionremote;
SPICE auf der Überholspur. Vergleich von ISO (TR) 15504 und Automotive SPICE
SPICE auf der Überholspur Vergleich von ISO (TR) 15504 und Automotive SPICE Historie Software Process Improvement and Capability determination 1994 1995 ISO 15504 Draft SPICE wird als Projekt der ISO zur
Safe Harbor Statement
Logging & Debugging von M(obile)AF Applikationen Jürgen Menge Sales Consultant Oracle Deutschland B.V. & Co. KG Safe Harbor Statement The following is intended to outline our general product direction.
1Copyright 2013, Oracle and/or its affiliates. All rights reserved.
1Copyright 2013, Oracle and/or its affiliates. All rights reserved. The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
LEARNING AGREEMENT FOR STUDIES
LEARNING AGREEMENT FOR STUDIES The Student Last name (s) First name (s) Date of birth Nationality 1 Sex [M/F] Academic year 20../20.. Study cycle EQF level 6 Subject area, Code Phone E-mail 0421 The Sending
Implementing Data Models and Reports with Microsoft SQL Server
Implementing Data Models and Reports with Microsoft SQL Server Dauer: 5 Tage Kursnummer: M20466 Überblick: Business Intelligence (BI) wird für Unternehmen von verschiedenen Größen aufgrund des dadurch
Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios
Agile Leadership Day 2015 Markus Giacomuzzi - Siemens Building Technologies Headquarters Zug Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios structure
Ruby & Ruby on Rails for arkitekter. Kim Harding Christensen [email protected]
Ruby & Ruby on Rails for arkitekter Kim Harding Christensen [email protected] Aga Intro & problemstilling Introduktion til Ruby DSL er Introduktion til Ruby on Rails Begreber (MVC & REST) Demo Intro Kim
Lecture 7: Class design for security
Lecture topics Class design for security Visibility of classes, fields, and methods Implications of using inner classes Mutability Design for sending objects across JVMs (serialization) Visibility modifiers
Information Systems 2
Information Systems 2 Prof. Dr. Dr. L. Schmidt-Thieme MSc. André Busche Übung 9 0. Allerlei 1. Übung 2. Hands on some things 2.1 Saxon 2.2 Corba 28.06.10 2/ 0. Allerlei 1. Übung 2. Hands on some things
JUnit. Introduction to Unit Testing in Java
JUnit Introduction to Unit Testing in Java Testing, 1 2 3 4, Testing What Does a Unit Test Test? The term unit predates the O-O era. Unit natural abstraction unit of an O-O system: class or its instantiated
Masters programmes in Computer Science and Information Systems. Object-Oriented Design and Programming. Sample module entry test xxth December 2013
Masters programmes in Computer Science and Information Systems Object-Oriented Design and Programming Sample module entry test xxth December 2013 This sample paper has more questions than the real paper
CommVault Simpana 7.0 Software Suite. und ORACLE Momentaufnahme. Robert Romanski Channel SE [email protected]
CommVault Simpana 7.0 Software Suite und ORACLE Momentaufnahme Robert Romanski Channel SE [email protected] CommVaults Geschichte 1988 1996 2000 2002 2006 2007 Gegründet als Business Unit von AT&T
Satzgliedstellung. Regel #4: Adverbien: Die Satzgliedstellung verändert sich nicht, wenn eine adverbiale Bestimmung vorausgeht.
Satzgliedstellung Aussagen Die feste Satzgliedstellung im englischen Aussagesatz ist: Subjekt Prädikat Objekt (S P O) Bsp. Meg drinks tea. S P O wird im Hauptsatz auch dann beibehalten, wenn ein Nebensatz
IAC-BOX Network Integration. IAC-BOX Network Integration IACBOX.COM. Version 2.0.1 English 24.07.2014
IAC-BOX Network Integration Version 2.0.1 English 24.07.2014 In this HOWTO the basic network infrastructure of the IAC-BOX is described. IAC-BOX Network Integration TITLE Contents Contents... 1 1. Hints...
Specialized Programme on Web Application Development using Open Source Tools
Specialized Programme on Web Application Development using Open Source Tools Objective: At the end of the course, Students will be able to: Understand various open source tools(programming tools and databases)
Vergleich der Versionen von Kapitel 1 des EU-GMP-Leitfaden (Oktober 2012) 01 July 2008 18 November 2009 31 Januar 2013 Kommentar Maas & Peither
Chapter 1 Quality Management Chapter 1 Quality Management System Chapter 1 Pharmaceutical Quality System Principle The holder of a Manufacturing Authorisation must manufacture medicinal products so as
A: Ein ganz normaler Prozess B: Best Practices in BPMN 1.x. ITAB / IT Architekturbüro Rüdiger Molle März 2009
A: Ein ganz normaler Prozess B: Best Practices in BPMN 1.x ITAB / IT Architekturbüro Rüdiger Molle März 2009 März 2009 I T A B 2 Lessons learned Beschreibung eines GP durch das Business läßt Fragen der
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
STORM. Simulation TOol for Real-time Multiprocessor scheduling. Designer Guide V3.3.1 September 2009
STORM Simulation TOol for Real-time Multiprocessor scheduling Designer Guide V3.3.1 September 2009 Richard Urunuela, Anne-Marie Déplanche, Yvon Trinquet This work is part of the project PHERMA supported
Implementing Rexx Handlers in NetRexx/Java/Rexx
Institut für Betriebswirtschaftslehre und Wirtschaftsinformatik Implementing Rexx Handlers in NetRexx/Java/Rexx The 2012 International Rexx Symposium Rony G. Flatscher Wirtschaftsuniversität Wien Augasse
Language considerations for developing VoiceXML in German
Language considerations for developing VoiceXML in German This section contains information that is specific to German. If you are developing German voice applications, use the information in this section,
Specialized Programme on Web Application Development using Open Source Tools
Specialized Programme on Web Application Development using Open Source Tools A. NAME OF INSTITUTE Centre For Development of Advanced Computing B. NAME/TITLE OF THE COURSE C. COURSE DATES WITH DURATION
Testen mit Produktionsdaten Fluch oder Segen?
Testen mit Produktionsdaten Fluch oder Segen? Thomas Baumann Die Mobiliar ISACA After Hours Seminar Dienstag, 30.Oktober 2012 2 Agenda PART I: Copy from Production to Test Requirements Solutions and experiences
Mit einem Auge auf den mathema/schen Horizont: Was der Lehrer braucht für die Zukun= seiner Schüler
Mit einem Auge auf den mathema/schen Horizont: Was der Lehrer braucht für die Zukun= seiner Schüler Deborah Löwenberg Ball und Hyman Bass University of Michigan U.S.A. 43. Jahrestagung für DidakEk der
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
Coffee Break German. Lesson 09. Study Notes. Coffee Break German: Lesson 09 - Notes page 1 of 17
Coffee Break German Lesson 09 Study Notes Coffee Break German: Lesson 09 - Notes page 1 of 17 LESSON NOTES ICH SPRECHE EIN BISSCHEN DEUTSCH In this lesson you will learn how to deal with language problems
Introduction U41241-J-Z125-1-76 1
Introduction The rapid expansion of the Internet and increasingly mobile and more powerful end devices are the driving force behind development in information and communication technology. This process
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game Directions: In mobile Applications the Control Model View model works to divide the work within an application.
by Jonathan Kohl and Paul Rogers 40 BETTER SOFTWARE APRIL 2005 www.stickyminds.com
Test automation of Web applications can be done more effectively by accessing the plumbing within the user interface. Here is a detailed walk-through of Watir, a tool many are using to check the pipes.
Computer Programming I
Computer Programming I Levels: 10-12 Units of Credit: 1.0 CIP Code: 11.0201 Core Code: 35-02-00-00-030 Prerequisites: Secondary Math I, Keyboarding Proficiency, Computer Literacy requirement (e.g. Exploring
PASS Deutschland e.v. Regionalgruppe Köln/Bonn/Düsseldorf
PASS Deutschland e.v. Regionalgruppe Köln/Bonn/Düsseldorf dbwarden Agenda Vorstellung Überblick Installation Settings Jobs Health Report IT Leiter / zertifizierter IT Projektleiter IT Team mit 7 Mitarbeitern
Canonical Text Service
Canonical Text Service Jochen Tiepmar BigData Competence Center ScaDS Naural Language Processing Leipzig University Survey From 20.06.2015 to 30.08.2015 Anonym, no tracking, skipping allowed Recall 25.06.2015
Tobias Flohre codecentric AG. Ein Standard für die Batch- Entwicklung JSR-352
Tobias Flohre Ein Standard für die Batch- Entwicklung JSR-352 Tobias Flohre Düsseldorf @TobiasFlohre www.github.com/tobiasflohre blog.codecentric.de/en/author/tobias.flohre [email protected]
Exemplar for Internal Assessment Resource German Level 1. Resource title: Planning a School Exchange
Exemplar for internal assessment resource German 1.5A for Achievement Standard 90887! Exemplar for Internal Assessment Resource German Level 1 Resource title: Planning a School Exchange This exemplar supports
O D B C / R O C K E T ( B S 2 0 0 0 / O S D ) V 5. 0 F O R S E S A M / S Q L D A T E : F E B R U A R Y 2 0 0 8 *2 R E L E A S E N O T I C E
O D B C / R O C K E T ( B S 2 0 0 0 / O S D ) V 5. 0 F O R S E S A M / S Q L D A T E : F E B R U A R Y 2 0 0 8 *2 R E L E A S E N O T I C E RELEASE NOTICE ODBC/ROCKET (BS2000/OSD) V 5.0 1 General.......................
Using Filter as JEE LoadBalancer for Enterprise Application Integration(EAI)
Using Filter as JEE LoadBalancer for Enterprise Application Integration(EAI) Traffic Web Protect Plus Overview The JEE LoadBalancer Filter is an pure JEE Web Component for high traffic environments. The
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Die SharePoint-Welt für den erfahrenen.net- Entwickler. Fabian Moritz MVP Office SharePoint Server
Die SharePoint-Welt für den erfahrenen.net- Entwickler Fabian Moritz MVP Office SharePoint Server 1 SharePoint Object Model IFilter Webpart Connections Webparts Web Server Controls Custom Field Types Web
Ruby in the context of scientific computing
Ruby in the context of scientific computing 16 January 2014 1/24 Overview Introduction Characteristics and Features Closures Ruby and Scientific Computing SciRuby Bioruby Conclusion References 2/24 Introduction
SPECTRUM IM. SSA 3.0: Service AND Event/Alert Umbrella DACHSUG 2011
SPECTRUM IM Infrastructure Events and Alerts Overview Event Management and Correlation Event Rules Condition Correlation Event Procedures Event Integration South-Bound-GW Event Notifications SSA 3.0: Service
FOR TEACHERS ONLY The University of the State of New York
FOR TEACHERS ONLY The University of the State of New York REGENTS HIGH SCHOOL EXAMINATION G COMPREHENSIVE EXAMINATION IN GERMAN Friday, June 15, 2007 1:15 to 4:15 p.m., only SCORING KEY Updated information
AnyWeb AG 2008 www.anyweb.ch
HP SiteScope (End-to-End Monitoring, System Availability) Christof Madöry AnyWeb AG ITSM Practice Circle September 2008 Agenda Management Technology Agentless monitoring SiteScope in HP BTO SiteScope look
Usability in SW-Engineering-Prozessen und in CMMI
Workshop USABILITY VDE Prüf- und Zertifizierungsinstitut Strategiekreis i-12 Usability in SW-Engineering-Prozessen und in CMMI Helmut Thoma Schweizer Informatik Gesellschaft Lehrbeauftragter Universität
Exchange Synchronization AX 2012
Exchange Synchronization AX 2012 Autor... Pascal Gubler Dokument... Exchange Synchronization 2012 (EN) Erstellungsdatum... 25. September 2012 Version... 2 / 17.06.2013 Content 1 PRODUKTBESCHREIBUNG...
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
