DRb Distributed Ruby. Johan Sørensen
|
|
|
- Tamsin Briggs
- 9 years ago
- Views:
Transcription
1 DRb Distributed Ruby Johan Sørensen
2 DRb? Remote Method Invocation ( RMI ) for Ruby Af Masatoshi SEKI Peer to Peer Client, Server Crossplatform (pure ruby) Multiprotocol
3 DRb exempel Object?? Object
4 DRb exempel # Server require "drb" obj = [1, 2, 3, "four", "Five"] uri = "druby:// :6666" DRb.start_service(uri, obj) DRb.thread.join # Client require "drb" DRb.start_service uri = "druby:// :6666" obj = DRbObject.new_with_uri(uri) obj.size #=> 5 obj.last #=> "Five" obj.map{ v v+v } #=> [2, 4, 6, "fourfour", "FiveFive"] Object?? Object
5 DRb Exempel # Server require "drb" # DRb biblioteket obj = [1, 2, 3, "four", "Five"] # Objektet vi kommer att dela över DRb uri = "druby:// :6666" # URI n servern ska lyssna på DRb.start_service(uri, obj) # Start server som lyssnar på +uri+, med +obj+ DRb.thread.join # Vent tills DRb er klar
6 DRb Exempel # Client require "drb" DRb.start_service uri = "druby:// :6666" # Vår server uri obj = DRbObject.new_with_uri(uri) # obj ska vara ett DRbObject ifrån uri obj.size #=> 5 # Vi kan kalla metoder på det andra objektet! obj.last #=> "Five" obj.map{ v v+v } #=> [2, 4, 6, "fourfour", "FiveFive"]
7 DRb? magic??
8 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1676) [ call] with_friend DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1101) [ call] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1755) [ return] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1757) [ call] open DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1152) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) [ call] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:110) [ return] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:111) [ return] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:133) [ call] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1187) [ call] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1683) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1687) [ call] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:728) [ call] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:822) [ call] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:807) [ return] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:817) [ call] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:883) [ call] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:549) [ return] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:550) [ call] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:961) [ return] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:962) [ return] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:884) [ return] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:823) [ return] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:729) [ return] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1188) [ call] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1193) [ call] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:905) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) >> obj = DRbObject.new_with_uri(uri)
9 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1676) [ call] with_friend DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1101) [ call] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1755) [ return] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1757) [ call] open DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1152) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) [ call] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:110) [ return] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:111) [ return] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:133) [ call] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1187) [ call] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1683) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1687) [ call] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:728) [ call] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:822) [ call] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:807) [ return] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:817) [ call] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:883) [ call] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:549) [ return] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:550) [ call] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:961) [ return] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:962) [ return] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:884) [ return] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:823) [ return] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:729) [ return] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1188) [ call] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1193) [ call] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:905) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) >> obj = DRbObject.new_with_uri(uri)
10 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1676) [ call] with_friend DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1101) [ call] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1755) [ return] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1757) [ call] open DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1152) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) [ call] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:110) [ return] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:111) [ return] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:133) [ call] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1187) [ call] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1683) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1687) [ call] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:728) [ call] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:822) [ call] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:807) [ return] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:817) [ call] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:883) [ call] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:549) [ return] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:550) [ call] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:961) [ return] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:962) [ return] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:884) [ return] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:823) [ return] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:729) [ return] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1188) [ call] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1193) [ call] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:905) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) >> obj = DRbObject.new_with_uri(uri)
11 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1676) [ call] with_friend DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1101) [ call] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1755) [ return] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1757) [ call] open DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1152) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) [ call] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:110) [ return] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:111) [ return] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:133) [ call] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1187) [ call] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1683) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1687) [ call] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:728) [ call] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:822) [ call] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:807) [ return] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:817) [ call] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:883) [ call] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:549) [ return] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:550) [ call] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:961) [ return] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:962) [ return] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:884) [ return] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:823) [ return] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:729) [ return] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1188) [ call] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1193) [ call] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:905) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) >> obj = DRbObject.new_with_uri(uri)
12 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1676) [ call] with_friend DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1101) [ call] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1755) [ return] fetch_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1757) [ call] open DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1152) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) [ call] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:110) [ return] unlock Mutex (/opt/local/lib/ruby/1.8/thread.rb:111) [ return] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:133) [ call] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1187) [ call] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1683) [ call] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1647) [ return] current_server DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1648) [ return] config DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1687) [ call] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:728) [ call] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:822) [ call] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:807) [ return] parse_uri DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:817) [ call] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:883) [ call] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:549) [ return] initialize DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:550) [ call] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:961) [ return] set_sockopt DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:962) [ return] initialize DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:884) [ return] open DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:823) [ return] open DRb::DRbProtocol (/opt/local/lib/ruby/1.8/drb/drb.rb:729) [ return] initialize DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1188) [ call] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1193) [ call] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:905) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) >> obj = DRbObject.new_with_uri(uri)
13 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ call] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:597) [ call] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1058) [ return] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1060) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ return] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:609) [ return] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:907) [ call] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:920) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ call] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:631) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ return] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:632) [ return] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:922) [ return] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1194) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) >> obj = DRbObject.new_with_uri(uri)
14 DRb? >> obj = DRbObject.new_with_uri(uri) >> enable_trace # set_trace_func{...} class DRbMessage Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ def dump(obj) [ return] enable_trace Object (/Users/johan/.irbrc:67) obj = DRbObject.new(obj) if obj.kind_of? DRbUndumped => nil begin >> obj.size str = Marshal::dump(obj) [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) rescue [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) str = Marshal::dump(DRbObject.new(obj)) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # end [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [str.size].pack('n') + str [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) end [ call] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:597) [ call] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1058) [ return] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1060) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ return] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:609) [ return] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:907) [ call] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:920) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ call] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:631) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ return] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:632) [ return] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:922) [ return] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1194) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98)
15 (Marshal crash course) >> class Foo; def = x; end; end => nil >> f = Foo.new("a value") => value"> >> dump = Marshal::dump(f) => "\004\bo:\bFoo\006:\a@x\"\fa value" >> f = nil => nil >> g = Marshal::load(dump) => value"> >> g => value">
16 DRb? >> enable_trace # set_trace_func{...} Enabling method tracing with event regex /^(call return)/ and class exclusion regex /IRB Wirble RubyLex RubyToken/ [ return] enable_trace Object (/Users/johan/.irbrc:67) => nil >> obj.size [ call] method_missing DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1077) [ call] here? DRb (/opt/local/lib/ruby/1.8/drb/drb.rb:1674) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ call] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:597) [ call] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1058) [ return] drbref DRb::DRbObject (/opt/local/lib/ruby/1.8/drb/drb.rb:1060) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ call] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:554) [ return] dump DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:555) [ return] send_request DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:609) [ return] send_request DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:907) [ call] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:920) [ call] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ return] stream DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:902) [ call] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:631) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ call] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:564) [ call] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:29) [ return] exclusive Thread (/opt/local/lib/ruby/1.8/thread.rb:30) [ return] load DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:565) [ return] recv_reply DRb::DRbMessage (/opt/local/lib/ruby/1.8/drb/drb.rb:632) [ return] recv_reply DRb::DRbTCPSocket (/opt/local/lib/ruby/1.8/drb/drb.rb:922) [ return] send_message DRb::DRbConn (/opt/local/lib/ruby/1.8/drb/drb.rb:1194) [ call] synchronize Mutex (/opt/local/lib/ruby/1.8/thread.rb:132) [ call] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:97) [ return] lock Mutex (/opt/local/lib/ruby/1.8/thread.rb:98) >> obj = DRbObject.new_with_uri(uri)
17 DRb Exempel Redux # Client require "drb" #... DRb.start_service # Initiera DRb uri = "druby:// :6666" # Server URI att connecta till obj = DRbObject.new_with_uri(uri) # Nytt DRbObject ifrån uri obj.size #=> 5 # Vår Array finns tillgänglig över DRb! obj.last #=> "Five" obj.map{ v v+v } #=> [2, 4, 6, "fourfour", "FiveFive"]
18 Remote Method Invocation Client Marshal method arguments Send message to server Reference, method name, arguments Server Receive message Unmarshal arguments Find local object from reference Invoke method with arguments
19 DRbUndumped Utan DRbUndumped Pass by value Måste dela kod Med DRbUndumped included Pass by reference (ingen Marshalling) Måste inte dela kod require "drb" class Foo include DRbUndumped #... end obj = [1,2,3] obj.extend DRb::DRbUndumped
20 Varför bruke DRbUndumped? Stora objekt Singleton objekt kan brukes Mindre/ tunna klienter Inget behov av att hålla klassar i synk
21 Sockets TCP Sockets ( druby:// :6661 ) Unix socket ( drbunix:///tmp/foo.sock ) SSL socket ( drbssl:// : pem cert)
22 DRb sikkerhet Går ikke helt ACL Ruby s $SAFE level default_load_limit SSL Firewall, user permissions
23 ACL Exempel require "drb" require "drb/acl" acl = ACL.new %w[ deny all allow ] DRb.install_acl(acl) DRb.start_service # blabla..
24 DRb med Rails Enkelt! Bra att få tunga ting ut ifrån Rails Backgroundrb
25 Backgroundrb BackgrounDRb is a ruby job server and scheduler. It main intent is to be used with Ruby on Rails applications for offloading long running tasks. Since a rails application blocks while servicing a request it is best to move long running tasks off into a background process that is divorced from the http request/ response cycle. Rails plugin, queue+workers baserat SomeWorkerClass#do_work
26 Bingo! Disk in the sky
27 Bingo! En frontend app ( X antal bingo nodes (diskservrar), tex johan.bingodisk.com, som kontaktas via DRb
28 Bingo! # Pseudo code* # The rails = class Server < ActiveRecord::Base def setup_customer! node_system = Bingo::Node.new(Conf.node_config) node_system.setup_on_node(self, self.customer) end end # node daemon (a DRb server) class Bingo::Node def initialize(config) # Hook up DRbconnection etc # from config values end def setup_on_node(server, customer) # create ZFS filesystem # config something #... end end [* actual production code is quite different, but follows the same overall concept]
29 Bingo! Deux Varje node måste parsa en stor loggfil ca. 150 gångar om dagen Ruby fint* * Men treegt Green threads, inte äkta threads Distribuera workload med DRb!
30 Bingo! Deux Node Hey, do this job whenever Master Job Queue
31 Bingo! Deux Node Hey, do this job whenever Master Job Queue Worker Worker Worker Worker Worker Worker Worker Worker
32 Bingo! Deux Node Hey, do this job whenever Master Job Queue OK, whatever dude, one of these guys can do it Worker Worker Worker Worker Worker Worker Worker Worker
33 Bingo! Deux Med Ruby s Threads Ruby Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} Thread.new{Worker} CPU1 *zzzz* *zzzz* *zzzz* CPU2 CPU3 CPU4
34 Bingo! Deux Master Job Queue DRb Worker Worker Worker Worker Worker Worker Worker Worker CPU1 CPU2 CPU3 CPU4
35 Bingo! Deux Worker Worker Worker Worker Worker Worker Worker Worker SERVER1 SERVER2 SERVER3 SERVER4
36 Bingo! Deux from future import yagni DATACENTER 1 DATACENTER 2 Worker Worker Worker Worker Worker Worker Worker Worker SERVER1 SERVER2 SERVER3 SERVER4
37 ... Heeeey! Distributed programming (med ruby!)
38 Rinda Ruby s Linda TupleSpace (delat object space) RingServer (zeroconf/bonjour for ruby)
39 Rinda Tuplespaces & RingServer Distribuerat whiteboard En tjänst lägger sig till på whiteboardet, säger vad den har, och whiteboardet vet om dens IP etc En klient frågar efter en tjänst på whiteboardet och får tillbaka dens IP+port klienten blir automagiskt kopplat till tjänsten
40 Rinda::TupleSpace En klient läggar till sina objekt på ett whiteboard och läsa/skriva/ta dom Tuple: [:name, class, (DRb)Object, note ] Brukar === Matchar tuples med Regexp, Class===Class, #value === value ts#read(tmpl), ts#read_all(tmpl), ts#write(), ts#take(tmpl)
41 Rinda::TupleSpace # server.rb require "drb" require "rinda/tuplespace" ts = Rinda::TupleSpace.new # share the ts over DRb DRb.start_service("druby:// :6661", ts) DRb.thread.join # client.rb # adds to the tuplespace require "drb" require "rinda/tuplespace" require "pp" # connect to the tuplespace DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) tuplespace.write([0, "Note", "first ts entry"]) tuplespace.write([1, "Note", "second ts entry"]) tuplespace.write([2, "Note", "third ts entry"]) #client_reader.rb # reads from the tuplespace require "drb" require "rinda/tuplespace" DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) # grab all the notes, matching them against the Range while note = tuplespace.take([nil, nil, /^[^READ]/]) puts note.inspect # write it back into the tuplespace tuplespace.write([note.first, note[1], "READ -- #{note.last}"]) end
42 Rinda::TupleSpace # server.rb require "drb" require "rinda/tuplespace" ts = Rinda::TupleSpace.new # share the ts over DRb DRb.start_service("druby:// :6661", ts) DRb.thread.join # client.rb # adds to the tuplespace require "drb" require "rinda/tuplespace" require "pp" # connect to the tuplespace DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) tuplespace.write([0, "Note", "first ts entry"]) tuplespace.write([1, "Note", "second ts entry"]) tuplespace.write([2, "Note", "third ts entry"]) #client_reader.rb # reads from the tuplespace require "drb" require "rinda/tuplespace" DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) # grab all the notes, matching them against the Range while note = tuplespace.take([nil, nil, /^[^READ]/]) puts note.inspect # write it back into the tuplespace tuplespace.write([note.first, note[1], "READ -- #{note.last}"]) end
43 Rinda::TupleSpace # server.rb require "drb" require "rinda/tuplespace" ts = Rinda::TupleSpace.new # share the ts over DRb DRb.start_service("druby:// :6661", ts) DRb.thread.join # client.rb # adds to the tuplespace require "drb" require "rinda/tuplespace" require "pp" # connect to the tuplespace DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) tuplespace.write([0, "Note", "first ts entry"]) tuplespace.write([1, "Note", "second ts entry"]) tuplespace.write([2, "Note", "third ts entry"]) #client_reader.rb # reads from the tuplespace require "drb" require "rinda/tuplespace" DRb.start_service tuplespace = Rinda::TupleSpaceProxy.new( DRbObject.new_with_uri("druby:// :6661") ) $ ruby client_reader.rb [0, "Note", "first ts entry"] [1, "Note", "second ts entry"] [2, "Note", "third ts entry"] # grab all the notes, matching them against the Range while note = tuplespace.take([nil, nil, /^[^READ]/]) puts note.inspect # write it back into the tuplespace tuplespace.write([note.first, note[1], "READ -- #{note.last}"]) end
44 Rinda::RingServer # rinda_server.rb require "rinda/ring" require "rinda/tuplespace" DRb.start_service # Ett TupleSpace som innehåller namngivna tjänster Rinda::RingServer.new(Rinda::TupleSpace.new) DRb.thread.join # sharing_a_tuplespace.rb require "rinda/ring" require "rinda/tuplespace" DRb.start_service ring_server = Rinda::RingFinger.primary # finds our "primary" RingServer # Dela ut vårat tuplespace # SimpleRenewer är en enkel Renewer some anger hur ofta den ska cheka om tjänsten ever ring_server.write([:name, :TupleSpace, Rinda::TupleSpace.new], 'Tuple Space', Rinda::SimpleRenewer.new) # using_the_tuplespace.rb require "rinda/ring" require "rinda/tuplespace" DRb.start_service ring_server = Rinda::RingFinger.primary # Ask the RingServer for our TupleSpace ts_service = rinda_server.read[:name, :TupleSpace, nil, nil][2] # [2] är vårt DRbObject ts = Rinda::TupleSpaceProxy.new(ts_service) ts.write([:data, rand(100)]) puts "data is #{ts.read([:data,nil].last)}" # => data is 62
45 Starfish gem install starfish MapReduce for Ruby folk dvs. nok till att få jobben gjort
46 Starfish User.find(:all, :conditions => opt_out=0 ).each{ user user.calculate_solution_to_life }
47 Starfish User.find(:all, :conditions => opt_out=0 ).each{ user user.calculate_solution_to_life } # user_solution.rb require 'config/environment' require 'user' server do map_reduce map_reduce.type = User map_reduce.conditions = "opt_out = 0" end client do user user.calculate_solution_to_life end
48 Starfish User.find(:all, :conditions => opt_out=0 ).each{ user user.calculate_solution_to_life } # user_solution.rb require 'config/environment' require 'user' server do map_reduce map_reduce.type = User map_reduce.conditions = "opt_out = 0" end client do user user.calculate_solution_to_life end my_computer$ starfish user_solution.rb my_computer$ starfish user_solution.rb my_computer$ starfish user_solution.rb my_computer$ starfish user_solution.rb bobs_computer$ starfish user_solution.rb moms_old_scrapyard$ starfish user_solution.rb the_mainframe_at_work$ starfish user_solution.rb
49 The End Ruby tarball: drb/samples/
WINDOWS PRESENTATION FOUNDATION LEKTION 3
WINDOWS PRESENTATION FOUNDATION LEKTION 3 Mahmud Al Hakim [email protected] www.alhakim.se COPYRIGHT 2015 MAHMUD AL HAKIM WWW.WEBACADEMY.SE 1 AGENDA Introduktion till Databindning (Data Binding) Element
Interface Programmera mot interface Johan Eliasson Johan Eliasson Interface kan bryta beroendekedjor Skriv generell kod «Type» Class2 Interface
Interface Snabba att implementera Programmera mot interface Bryter beroenden Gör det enklare att samarbeta Gör det enkelt att i ett senare skede byta ut implementationer mot effektivare Interface kan bryta
Projektet Computer: Specifikation. Objektorienterad modellering och diskreta strukturer / design. Projektet Computer: Data. Projektet Computer: Test
Projektet Computer: Specifikation Objektorienterad modellering och diskreta strukturer / design Designmönster Lennart Andersson Reviderad 2010 09 04 public class Computer { public Computer(Memory memory)
Category work in courtroom talk about domestic violence: Gender as an interactional accomplishment in child custody disputes
Category work in courtroom talk about domestic violence: Gender as an interactional accomplishment in child custody disputes Henrik Ingrids Department of Child and Youth Studies Stockholm University Appendix:
Car Customer Service. SFK Väst, January 2016, Måns Falk, mfalk, Security Class; Proprietary 2016-01-21
Car Customer Service SFK Väst, January 2016, Måns Falk, mfalk, Security Class; Proprietary 2016-01-21 1 Lean SERVICE En upptäcktsresa Måns Falk Volvo Car Customer Service Customer Service Lean Knowledge
International Council on Systems Engineering. ISO/IEC/IEEE 15288 SEminar Linköping 16 november 2015
International Council on Systems Engineering ISO/IEC/IEEE 15288 SEminar Linköping 16 november 2015 WHY there is a need for SE and INCOSE Need to manage increasing complexity Technology trends Systems of
OIO Dekstop applikation
OIO Dekstop applikation 25-09-2009. Version 1.0 Sammendrag af ideer og dialog på møde d. 24-09-2009 mellem ITST, Trifork og Designit Under udarbejdelse Diagram Test applikation Grupper Digitaliser.dk Applikation
Tanden Care Provider Interfaces Submit Claim v3
Tanden Care Provider Interfaces Submit Claim v3 Integrationskrav ICC 2 (32) Table of contents 1 2 3 4 5 INTRODUCTION... 3 INTEGRATIONS... 3 INTEGRATION 1... 6 3.1 SUBMITCLAIM REQUEST... 6 3.1.1 Message
Workshop 1: Can CM find common ground for HW & SW development?
Workshop 1: Can CM find common ground for HW & SW development? Configuration Management practices must be adapted to the chosen development model: Waterfall, Vee, Spiral, Incremental, Agile etc. But for
Jag valde att använda Net-EPP_client.php från centralnic för att komma igång.
EPP och PHP Det finns flera olika klienter där ute för att hantera epp. Net_EPP_client.php phpsrs Hanterar bara EPP kommunikationen. Enkel http://labs.centralnic.com/net_epp_client.php Mer komplett Klarar
Ange om en aktivitet har medfört att en tjänsteresa har utförts med flyg under 2013, och i sådana fall antal gånger.
Institutionen för lingvistik - Survey of travel at SU for 2013 Answer Count: 16 Ange om en aktivitet har medfört att en tjänsteresa har utförts med flyg under 2013, och i sådana fall antal gånger. Specify
Lab 2 review PHP intro. MVC (Model View controller)
Lab 2 review PHP intro MVC (Model View controller) What is PHP? Är ett allmänt open source server-side skriptspråk som ursprungligen utformats för webbutveckling Syfte att producera dynamiska webbsidor
Tanden Care Provider Interfaces Reverse Claim v1
Integrationskrav.dot PB3 Tanden Care Provider Interfaces Integrationskrav ICC 2 (18) Attachment- and reference list Number Title, document ID, search path 1 ZT_I_028_ZSubmit.doc PA3 2 TandenTypes.xsd 20080328
Microsoft SQL Server 2012: Designing Buisness Intelligence Solutions
Microsoft SQL Server 2012: Designing Buisness Intelligence s Längd: 5 Days Kurskod: M20467 Version: A Sammanfattning: Denna 5-dagarskurs lär dig hur du designar och implementerar en BI-Infrastruktur. Kursen
Investigating the Possibility of an Active/Active Highly Available Jenkins
Investigating the Possibility of an Active/Active Highly Available Jenkins Daniel Olausson Master of Science Thesis Stockholm, Sweden 2013 TRITA-ICT-EX-2013:119 Investigating the Possibility for an Active/Active
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
TRA Q2 2013 - NORDIC RELEASE - JULY 2013
TRA Q2 2013 - NORDIC RELEASE - JULY 2013 TRAVEL INDUSTRY EXPECTANCY INDEX January 2012 - Nordic Introduction Travel Industry Expectancy Index is an independent temperature gauge on Nordic travel companies
SAS Data Integration SAS Business Intelligence
Kursöversikt 2010 SAS Education Providing knowledge through global training and certification SAS Data Integration SAS Business Intelligence Specialkurser SAS Forum 2010 Kontaktinformation Stora Frösunda
Hearing med Thomas Feldthus, CFO och Nils Brünner, vd WntResearch AB
Hearing med Thomas Feldthus, CFO och Nils Brünner, vd WntResearch AB Nils and Thomas: Welcome to this web-hearing. I am Thomas Feldthus. Together with me this morning I have Nils Brünner, CEO of WntResearch.
Marknadsföring som en del av intäktsprocessen.
Marknadsföring som en del av intäktsprocessen. Jonas Ander Mathias Jonsson Agenda: Nya köpbeteenden förändrar marknadsorganisationen Buzzword Bingo: MA, Content, Social, Inbound, Outbound, Predictive
Design Suggestions for Danske Bank SE
2013 10 14 Version 1.0 Instigated and approved by: Compiled by: Karin Haskå (KHAS) Ian Baden (IAB) Jim Persson (JIMP) Design Suggestions for Danske Bank SE Collected design suggestions from the swedish
Configuring and Administering Hyper-V in Windows Server 2012
Configuring and Administering Hyper-V in Windows Server 2012 Längd: 2 Days Kurskod: M55021 Sammanfattning: Denna kurs lär dig hur du konfigurerar och administrerar Hyper-V i Windows Server 2012. Efter
Introduktion till SAS 9 Plattformen Helikopterkursen
Introduktion till SAS 9 Plattformen Helikopterkursen Kursens mål: Denna kurs/workshop ger dig en samlad överblick över den nye SAS 9 Intelligenta Plattformen. Denna dag är en bra start för att förstå SAS
SAS Education Providing knowledge through global training and certification. SAS Foundation. Kursöversikt 2010
Kursöversikt 2010 SAS Education Providing knowledge through global training and certification SAS Foundation SAS Forum 2010 och specialkurser SAS Master Class Kontaktinformation Stora Frösunda Gård Box
Defining Distributed Systems. Distribuerade system. Exemples of DS: Intranet. Exemples of DS: Internet. Exemples of DS: Mobile Computing
Defining Distributed Systems Distribuerade system C-kurs 5 poäng HT-02 A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing
INTERNATIONELLA BANKÖVERFÖRINGAR
Market.com s kunder kan sätta in pengar på sina konton genom Wire Transfer och ett flertal banker världen över. Här nedan mer detaljer om Wire Transfer: INTERNATIONELLA BANKÖVERFÖRINGAR ROYAL BANK OF SCOTLAND
Microsoft + SOA = Sant? Joakim Linghall Principal System Engineer SOA and Business Process [email protected]
Microsoft + SOA = Sant? Joakim Linghall Principal System Engineer SOA and Business Process [email protected] Agenda Real World SOA En plattform för SOA ESB SOA Governance Exempel Lite om framtiden
Readme10_054.doc page 1 of 7
Readme10_054.doc page 1 of 7 Date of production: 2007-12-03 News in 10_054 Hardware 1) New thyristor module DASD 145, 600 V - 500 A 2) Improved speed control with incremental encoder at very low speed
3gamma Från traditionell IT-leverans till modern, processtyrd tjänsteleverans i en multi-sourcing miljö. Peter Wahlgren, September 2013
3gamma Från traditionell IT-leverans till modern, processtyrd tjänsteleverans i en multi-sourcing miljö Peter Wahlgren, September 2013 Vem är Peter Wahlgren? VD & Konsult på 3gamma sedan 2008 AstraZeneca
Bachelor thesis Software Engineering and Management How can code reuse help a Software Company
Bachelor thesis Software Engineering and Management How can code reuse help a Software Company David Berglund & Gabriel Englund Spring 2008 Project Coordinator: Björn Olsson Supervisor: Björn Olsson Table
Git as introduction to configuration management for students
Git as introduction to configuration management for students Adam Nilsson and Marie Versland 2013-02-19 Contents 1 Introduction 2 2 Git 2 3 EGit 6 4 Github 7 5 Git versus SVN 7 6 Course Project 8 6.1 Course
Elektronikavfall. Thomas Lindhqvist IIIEE Lund University. 18 February 2009
Elektronikavfall Thomas Lindhqvist IIIEE Lund University 18 February 2009 Elektronik och miljö Problem? Livscykeltänkande Elektronikavfall kopplat till livscykeln W hat is e- w aste ( W EEE)? Varför elektronikavfall?
Rek. 1995:- Technical specifications SB12V3200E-AC SB12V3200E-AC. Recharges much faster. Longer service life. Only 1/3 of the size.
lithium batteries SB12V3200E-AC This newly developed Lithium battery is designed to replace the much heavier 5 to 7 Ah lead/acid battery. Safety super B batteries are based on Lithium Iron Phosphate technology
Stora studentgrupper och god pedagogik. Går det att kombinera?
Stora studentgrupper och god pedagogik. Går det att kombinera? Johan Thorbiörnson, PhD [email protected] KTH Mathematics Online Royal Institute of Technology, Stockholm http://www.math.kth.se/online/ Kris,
How To Get Healthy With A Game Called Angel Hour
Angel Hour The healthiest game ever made Angel Hour 50% reduction risk for cancer 75% reduction risk for stroke 75% reduction risk for heart attack 5-8 extra of (healthy) live 30 min of pulse controlled
Coop Policy Sustainable Business: Impact on Coop private brand
Coop Policy Sustainable Business: Impact on Coop private brand Coop Policy En god affär Sustainable Business Central idea of the Coop Policy our customers interests are our interests Economic benefits
Vocabulary in A1 level second language writing
Vocabulary in A1 level second language writing Katja Mäntylä, Sinikka Lahtinen, Åsa Palviainen and Maisa Martin Background - Topling TOPLING: Paths in Second Language Acquisition Department of Languages
BankID Relying Party Guidelines
BankID Page 1(25) 2015-09-23 BankID Relying Party Guidelines Version: 2.9 2015-09-23 BankID Page 2(25) 1 Introduction... 4 1.1 Versions... 4 1.2 Terms and definition... 5 1.3 How it Works... 5 1.4 Client
Demo Gotland (Smart Customer Gotland)
Demo Gotland (Smart Customer Gotland) Monica Löf, Research & Development, Vattenfall Smart Grid Gotland Agenda Vattenfall at a glance Project overview and setup Customer analysis Vattenfall, at a glance
SWAMID Identity Assurance Level 1 Profile
SWAMID Identity Assurance Level 1 Profile SWAMID Identity Assurance Level SWAMID Identity Assurance Level 1 Profile är SWAMIDs nya obligatoriska basprofil SWAMID BoT har beslutat att SWAMID AL1 ersätter
Hvis personallisten ikke er ført slik reglene sier, kan Skatteetaten ilegge overtredelsesgebyr.
Denne boken er utgitt av Skatteetaten og sendes gratis til alle som er pålagt å føre personalliste fra 1. januar 2014. Det vil si bransjene servering, frisør, skjønnhetspleie, bilpleie og bilverksted.
Tanden Care Provider Interfaces PreAssessmentSTB v3
Tanden Care Provider Interfaces Integrationskrav ICC 2 (21) Table of contents 1 INTRODUCTION... 3 2 INTEGRATIONS... 4 3 INTEGRATION 1... 6 3.1 PREASSESSMENTSTB REQUEST... 6 3.1.1 Message and translation...
Martin Holmgren Vice President Fleet Management Cramo Group +46706276860
Martin Holmgren Vice President Fleet Management Cramo Group +46706276860 Utskifting hvor langt kan man strekke seg? - når k-punktet er passert bakkerekord eller knall og fall? Utskifting hvor langt kan
HAProxy. Free, Fast High Availability and Load Balancing. Adam Thornton 10 September 2014
HAProxy Free, Fast High Availability and Load Balancing Adam Thornton 10 September 2014 What? HAProxy is a proxy for Layer 4 (TCP) or Layer 7 (HTTP) traffic GPLv2 http://www.haproxy.org Disclaimer: I don't
Computer animations in physical chemistry. Kim Bolton School of Engineering, University College of Borås, SE-501 90, Borås
Computer animations in physical chemistry Kim Bolton School of Engineering, University College of Borås, SE-501 90, Borås Introduction The immense increase in computational power, variety of computer-based
MAXimize the benefits of Mobility Management
MAXimize the benefits of Mobility Management New tools for more sustainable transport systems Christer Ljungberg, Trivector Traffic Årets Bild 2010: Henrik Montgomery, Scanpix Max project in short December
CONFLICT OF INTEREST AT THE WHO
OFFICIAL PRESS RELEASE 23 rd May 2011 FROM MONA NILSSON: Leading expert Anders Ahlbom linked to the Telecom Industry. CONFLICT OF INTEREST AT THE WHO Professor Ahlbom, who is appointed to chair the expert
Child allowance [Barnbidrag] and large family supplement [flerbarnstillägg] [Barnbidrag och flerbarnstillägg]
Child allowance [Barnbidrag] and large family supplement [flerbarnstillägg] [Barnbidrag och flerbarnstillägg] Child allowance is paid until the child attains the age of 16. After that, children who continue
SSLSmart Smart SSL Cipher Enumeration
Author: Gursev Singh Kalra Managing Consultant Foundstone Professional Services Table of Contents SSLSmart Smart SSL Cipher Enumeration... 1 Table of Contents... 2 Introduction... 3 SSLSmart Features...
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
Viktigaste uppgift: Web Browser SSO
Federation SAML Shibboleth programvara Jboss Java-system Namn: Uid: Organisation: inetorgperson Shibboleth programvara Unikt namn:... Roll: Funktioner som kan anropas:... Så här når du funktionerna:...
Web-based address book
School of Innovation, Design and Engineering Web-based address book - Your contacts, on Your website Course: Student: Supervisor: Examiner: CDT307 - Computer Science, Basic Level (15 hp) Innovation, Design
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
How To Boot A Cisco Ip Phone From A Cnet Vlan To A Vlan On A Cpower Box On A Ip Phone On A Network With A Network Vlan (Cisco) On A Powerline (Ip Phone) On An
IP Telefoni DHCP Options VLANs Understanding the Cisco IP Phone Boot Process The Cisco IP Phone connects to an Ethernet switchport. If the IP phone and switch support PoE, the IP phone receives power through
Student evaluation form
Student evaluation form Back Number of respondents: 17 1. Multiple choice question Percentage Name of course: [Insert name of course here!] Course Objectives: [Insert course objectives (målbeskrivelse)
Scrum Kandidatprojekt datateknik - TDDD83
14-23- 1 Agenda Scrum Kandidatprojekt datateknik - TDDD83 Vad är scrum? Hur fungerar det? Hur ska scrum användas i kursen? Aseel Berglund IDA Agile Approaches - Agile Alliance Lightweight approaches to
COM 440 Distributed Systems Project List Summary
COM 440 Distributed Systems Project List Summary This list represents a fairly close approximation of the projects that we will be working on. However, these projects are subject to change as the course
Perlbal: Reverse Proxy & Webserver
Perlbal: Reverse Proxy & Webserver Brad Fitzpatrick [email protected] Danga Interactive Open Source company Services Tools LiveJournal.com PicPix.com (soon) / pics.livejournal.com DBI::Role memcached mogilefs
Cloud-Based dwaf A Real World Deployment Case Study. OWASP 5. April 2012. The OWASP Foundation http://www.owasp.org
Cloud-Based dwaf A Real World Deployment Case Study Alexander Meisel Riverbed Technology alex AT meisel DOT cc 5. April 2012 Copyright The Foundation Permission is granted to copy, distribute and/or modify
StreamServe Persuasion SP4 Service Broker
StreamServe Persuasion SP4 Service Broker User Guide Rev A StreamServe Persuasion SP4 Service Broker User Guide Rev A 2001-2009 STREAMSERVE, INC. ALL RIGHTS RESERVED United States patent #7,127,520 No
openbim FM solutions and projects in Sweden Oslo, 11 September 2014 Client BIM requirements BIM in the State
Agenda Client BIM requirements BIM in the State BIP fi2 messages Energy declarations Locking systems Demo from Tyréns, Per Bjälnes Viewer application Client BIM requirements BIM in the State BIM A tool
Martin Edqvist Johan Odell
Martin Edqvist Johan Odell 1 2 Martin Edqvist Johan Odell 3 Storage Operations Challanges Application complexity Wasted storage Uncertain recoverability Opaque costs SLA failures Performance problems Wasted
Hierarchical and Linear Constraints on Structure
Hierarchical and Linear Constraints on Structure Peter Sells Sandbjerg Ph.D. course June 14 16, 2006 Part III 1 P structure (1) a. IP I Pro Adv PP b. IP I Pro Adv P PP (2) a. IP I Pro Adv b. IP I Adv P
MME TECHNICAL SERVICE NEWSLETTER GROUP 16 ALTERNATOR LOOSE PULLEY _ 4N13 DATE 12 06-2012 SERVICE CAMPAIGN (REF. MMC: SSI-12-023)
MME TECHNICAL SERVICE NEWSLETTER NEWSLETTER MODEL ENL-12-018-SC ASX (GA6W) GROUP 16 SUBJECT ALTERNATOR LOOSE PULLEY _ 4N13 DATE 12 06-2012 SERVICE CAMPAIGN (REF. MMC: SSI-12-023) På grund av felaktig åtdragning
How to configure HTTPS proxying in Zorp 5
How to configure HTTPS proxying in Zorp 5 June 24, 2014 This tutorial describes how to configure Zorp to proxy HTTPS traffic Copyright 1996-2014 BalaBit IT Security Ltd. Table of Contents 1. Preface...
Diagnostisera problem med utskriftskvaliteten
Diagnostisera problem med utskriftskvaliteten Phaser 4400 laserskrivare En stor mängd information finns samlad i skrivaren som utskrivbara sidor. På följande sidor visas den utskrivbara sidan Diagnostisera
Juniper Networks Secure Access. Initial Configuration User Records Synchronization
Juniper Networks Secure Access Initial Configuration User Records Synchronization 1 This document explain how to setup User records Synchronization between different clusters or stand alone units. Active/
COMMMUNICATING COOPERATING PROCESSES
COMMMUNICATING COOPERATING PROCESSES The producer-consumer paradigm A buffer of items can be filled by the producer and emptied by the consumer. The producer and the consumer must be synchronized: the
Configuring Security Features of Session Recording
Configuring Security Features of Session Recording Summary This article provides information about the security features of Citrix Session Recording and outlines the process of configuring Session Recording
Vi har dessutom 1000-tals andra viner på Winefinder.se
Valle Anakena Enco Syrah Rosé 2012 750 ml x 6 109 SEK Maipo Antiyal Alvaro Espinosa Antiyal Kuyen Valle del Maipo, Alvaro Espinosa 2010 750 ml x 12 229 SEK Maipo Antiyal Alvaro Espinosa Antiyal Carmenère
Swedish model for Gender Mainstreaming in ESF projects
Swedish model for Gender Mainstreaming in ESF projects ESF Jämt ESF Jämt is the Swedish name of the County Administrative Boards joint investment. It aims at equality, gender equality and Gender Mainstreaming.
DECISION/BESLUT 2003-09-30
DECISION/BESLUT 2003-09-30 Ärendenr. 23. Sökande/Complainant IT Butikken A/S, Danmark Motpart/Respondent Shoppingsajterna Svenska AB, 556577-2547, Önsvala Gård, 245 93 Staffanstorp Saken/The Matter Alternativt
BACHELOR THESIS. Marketing a healthcare product to different industries
BACHELOR THESIS 2008:245 Marketing a healthcare product to different industries Niklas Apelqvist Olle Persson Luleå University of Technology Bachelor thesis Marketing Department of Business Administration
Hvordan sikrer du ditt virtuelle datasenter?
Hvordan sikrer du ditt virtuelle datasenter? Espen S. Lillejord Sales Manager Cedric Jucker Advisory Technology Consultant EMC Backup-, Recovery and Archiving Solutions (BuRA) 1 Agenda Hva er deduplisering,
WELCOME TO. Information Integration
WELCOME TO Information Integration Enfo Pointer Sweden s leading full service Business Intelligence consultancy, founded in 2000. Projects focus on delivering superior business value, using agile methods,
COACH BOT Modular e-course with virtual coach tool support
COACH BOT Modular e-course with virtual coach tool support LIFELONG LEARNING PROGRAM LEONARDO da VINCI Aarhus Social and Health Care College TRAINING FOR HEALTHCARE PROFESSIONALS AND HOME CARE PROVIDERS
IBM Quality Management Strategy. En proces. Vi laver kun 3 ting. IT Operational Service. Solution Deployment. Solution Development.
Quality IBM Quality Strategy 1 Quality En proces Policies Objectives Directions Requirements Legislation Input Output People Equipment Finances Facilities Buildings Etc. Resources 2 Quality Vi laver kun
