Rails Four For you and for me!
|
|
- Jocelyn Berry
- 6 years ago
- Views:
Transcription
1 Realtime Rails Four
2 Rails Four For you and for me!
3 Aaron
4 HI!! :-)
5 AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies.
6 Rails Four For you and me!!!
7 The Web!
8 Ruby Rails Web
9 Thread Safety In Rails
10 Delete config.threadsafe!
11 Why delete?
12 Always be thread safe!
13 My Opinion! Always be thread safe!
14 Simplify
15 Is it safe to remove?
16 What did it do?
17 threadsafe! Preload frameworks (enable) Cache classes (enable) Depency loading (disable) Allow concurrency (enable)
18 Loading Code isn t Thread-safe*
19 ENABLED Preload Frameworks
20 Cache classes ENABLED
21 DISABLED Depency Loading
22 ENABLED Allow Concurrency
23 Rack::Lock Get Lock Read from Socket Process Stuff Write to Socket Release Lock
24 Rack::Lock Thread 2 Get Lock Read from Socket Thread 1 Process Stuff Write to Socket Release Lock
25 Rack::Lock Thread 2 Get Lock Read from Socket Process Stuff Write to Socket Release Lock
26 Rack::Lock Get Lock Read from Socket Process Stuff Write to Socket Thread 2 Release Lock
27 Rack::Lock with Processes
28 Rack::Lock with Threads
29 Best Case: Extra Overhead
30 Worst Case: 1 req at a time
31 IMPACT
32 Boot time increases (in prod)
33 Fewer middleware
34 Multi-Proc servers stay the same
35 Threaded servers Just Work
36 Bug Fixes
37 100% Caching
38 Locking = def = some_calculation
39 check then act Is nil? Calculate Set Return
40 check then act Thread 1 Is nil? Calculate Set Return
41 check then act Is nil? Thread 2 Thread 1 Calculate Set Return
42 check then act Is nil? Calculate Thread 2 Thread 1 Set Return
43 check then act Is nil? Calculate Set Return
44 Fix #1 (eager init) class Foo class << self = fib(34) p Foo.hard_calculation
45 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation
46 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation
47 Fix #2 (locking) class = Mutex.new class << self def = fib(34) p Foo.hard_calculation
48 Move methods to instances
49 Move to object class Foo def = fib(34) def Foo.new.hard_calculation
50 Lazy Object class Foo include Mutex_m def hard_calculation synchronize = fib(34) Foo.new.hard_calculation
51 Maintain API class Foo include Mutex_m def hard_calculation synchronize = fib(34) Instance = new def self.hard_calculation Instance.hard_calculation Foo.hard_calculation
52 Hash.new { } class Foo def = Hash.new { h,k h[k] = [] } def
53 Fix #1 (lock) class Foo include Mutex_m def initialize = Hash.new { h,k h[k] = [] } def some_value(key) synchronize }
54 Fix #2 thread_safe
55 What about the App Level?
56 Thread Safety In Web Apps
57 Avoid shared data
58 Most people don t type Thread.new
59 Look for things that are global.
60 Global Variables $so_global = {} $so_global[:foo] = bar
61 Constants SET_TWICE = 10 SET_TWICE = 10 Warning ALSO_GLOBAL = {} ALSO_GLOBAL[:foo] = bar No Warning
62 Class methods class MyModel def = fib(34)
63 Avoid global data
64 Add locks
65 Streaming
66 Template Rering Today
67 Templates Results are Buffered
68 Clients are blocked while Rails works
69 The entire page must fit in memory
70 Rack Encourages Buffering class MyApplication def call(env) [200, {}, [ my page ]]
71 We can do I/O and CPU in parallel.
72 So why buffer?
73 ActionController::Live
74 Example class BrowserController < ApplicationController include ActionController::Live def index 100.times do response.stream.write "hello!\n" response.stream.close
75 Example class BrowserController < ApplicationController include ActionController::Live Mix in def index 100.times do response.stream.write "hello!\n" response.stream.close Stream
76 response.stream acts like an I/O object
77 Everything Is a File
78 How does it work?
79 Our API def index response.status = 200 response.headers[ X-Whatever ] = <3 response.stream.write hello response.stream.write world response.stream.close
80 Rack API def call(env) return [200, { X-Whatever => <3 }, [ hello world ]]
81 Wrapped Request class Response attr_accessor :status attr_reader :headers, :stream def = = = StringIO.new def call(env) res = Response.new controller.response = res controller.index [res.status, res.headers, res.stream]
82 Threaded action def call(env) res = Response.new controller.response = res Thread.new { controller.index } [res.status, res.headers, res.stream]
83 Block until write def call(env) res = Response.new controller.response = res Thread.new { controller.index } res.stream.await [res.status, res.headers, res.stream]
84 Block until write def call(env) res = Response.new controller.response = res Thread.new { controller.index } res.stream.await Block [res.status, res.headers, res.stream]
85 Blocking Buffer class Buffer def = = Queue.new def await # wait for << str
86 Blocking Buffer class Buffer def = = Queue.new def await # wait for `call` blocks here << str
87 Blocking Buffer class Buffer def = = Queue.new def await # wait for << str `write` unblocks
88 What can we do?
89 Rails Internals
90 Streaming ERB
91 View Source # encoding: utf-8 require 'erb' doc = ERB.new '<%= hello %> world' puts doc.src
92 Source #coding:utf-8 _erbout = ''; _erbout.concat(( hello ).to_s); _erbout.concat " world"; _erbout.force_encoding( ENCODING )
93 Control Output class MyERB < ERB def set_eoutvar(compiler, eoutvar = '_erbout') compiler.put_cmd = "#{eoutvar}.write" compiler.insert_cmd = "#{eoutvar}.write" compiler.pre_cmd = [] compiler.post_cmd = [] doc = MyERB.new '<%= hello %> world', nil, nil, '$stdout' puts doc.src
94 Source #coding:utf-8 $stdout.write(( hello ).to_s); $stdout.write " world"
95 $ ruby test.rb hello world $
96 Web Apps
97 Infinite Streams
98 Server Sent Events
99 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}
100 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}
101 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}
102 SSE Response HTTP/ OK X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff Content-Type: text/event-stream Transfer-Encoding: chunked event: ping data: {"ping":" t21:44:41-07:00"} event: reload data: {"changed":["/users/aaron/git/lolwut/app/views/ users/"]}
103 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });
104 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });
105 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });
106 Client Side jquery(document).ready(function() { settimeout(function() { var source = new EventSource('/control'); // if we get a reload command, reload the page source.addeventlistener('reload', function(e) { window.location.reload(); }); }, 1); });
107 Real-Time Browser Communication
108
109 FS Events Puma FS-Events Browser
110 FS Events Puma FS-Events Browser
111 FS Events Puma FS-Events Browser
112 FS Events Puma FS-Events Browser
113 DB Events DRB Puma Console Browser
114 Socket DB Events DRB Puma Console Browser
115 Other Input Sources Embedded systems (sausage box) Telephony (twilio) Other users (chat systems)
116 Thread Safety Streaming P72N
117 Cores are increasing.
118 We need to utilize the entire machine
119 High latency clients are increasing.
120 Patience is decreasing.
121 Lie. Using cached data
122 Cheat. Updating partial parts of the page
123 Steal. Move computations to client side via JS
124 Lie. Cheat. Steal.
125 Be Good Engineers
126 THANK YOU
127 Questions?
Philadelphia Emerging Technology For The. First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers.
Philadelphia Emerging Technology For The First to welcome you. Claudia gave amazing talk. Online advertising, fib numbers Enterprise Aaron Patterson @tenderlove Rails Core Team Ruby Core Team enterprise
More informationWho makes the best Churrasco?
Who makes the best Churrasco? What country has the best footballers? Argentina! Aaron Patterson @tenderlove Fala viado! wtf?? Fala viado! Ruby core team Rails core team ! WARNING! ZOMG! WE ARE IN BRAZIL!
More informationHOLA
HOLA Aaron Patterson José Yo WWFMD? AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual Property and/or AT&T affiliated companies. Señor Engineer @tenderlove Ruby core team
More informationWednesday, May 18, Before I Begin...
Before I Begin... @jonleighton I José Double Dream Hands: SO INTENSE ZOMG!!! HAPPY RAILS CONF Aaron Patterson @tenderlove AT&T, AT&T logo and all AT&T related marks are trademarks of AT&T Intellectual
More informationBackend Development. SWE 432, Fall Web Application Development
Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy
More informationWorking With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile.
Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Chapter 16 Puma's Thread Pool Implementation Puma 1 is a concurrent
More informationReal Time Rack. Konstantin Haase
Real Time Rack Konstantin Haase La verdadera pregunta es... Quién es el mejor fútbolista? Explora! Por cierto... Come again? streaming server push decide what to s while streaming, not upfront
More informationServer execution of JavaScript: What could possibly go wrong?
Server execution of JavaScript: What could possibly go wrong? Brian Geffon Staff Software Engineer Hello! 2 Outline Introductions Ø Brief History The paradigm shift Problems! Where we are today Closing
More informationMatt Terwilliger. Networking Crash Course
Matt Terwilliger Networking Crash Course Before We Start Client/Server Model Client requests information from server over pre-established protocols. TCP/IP Model Application Layer Transport Layer Internet
More informationModule 6 Node.js and Socket.IO
Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides
More informationThe realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012.
The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond Guillermo Rauch @ QCon. November 2012. Guillermo. CTO and co-founder at LearnBoost. Creator of socket.io and engine.io. @rauchg on twitter http://devthought.com
More informationBackend Development. SWE 432, Fall 2017 Design and Implementation of Software for the Web
Backend Development SWE 432, Fall 2017 Design and Implementation of Software for the Web Real World Example https://qz.com/1073221/the-hackers-who-broke-into-equifax-exploited-a-nine-year-old-security-flaw/
More informationTutorial 8 Build resilient, responsive and scalable web applications with SocketPro
Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o
More informationAnd the Greatest of These Is... Rack Support. Ben Scofield Viget Labs
Welcome 1 And the Greatest of These Is... Rack Support Ben Scofield Viget Labs 2 #?forben 3 4 Application Templates 5 Nested Attribute Assignment flickr: angelrays 6 ActiveRecord::Base#touch flickr: jjjohn
More informationControl for CloudFlare - Installation and Preparations
Control for CloudFlare - Installation and Preparations Installation Backup your web directory and Magento 2 store database; Download Control for CloudFlare installation package; Copy files to /app/firebear/cloudflare/
More informationporcelain Documentation
porcelain Documentation Release August 20, 2014 Contents 1 Overview 3 2 Installation 5 3 Usage 7 3.1 Launching one-off programs....................................... 7 3.2 Passing input and
More informationScaling Rails on App Engine with JRuby and Duby
Scaling Rails on App Engine with JRuby and Duby Run your apps on Google Servers, with access to first-class Java APIs John Woodell David Masover Ryan Brown June 9, 2010 2 Google App Engine 3 Key Features
More informationWorking With Ruby Threads. Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile.
Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and Ora, who make it all worthwhile. Chapter 0 Introduction My story When I joined the Ruby community,
More informationQuick housekeeping Last Two Homeworks Extra Credit for demoing project prototypes Reminder about Project Deadlines/specifics Class on April 12th Resul
CIS192 Python Programming Web Frameworks and Web APIs Harry Smith University of Pennsylvania March 29, 2016 Harry Smith (University of Pennsylvania) CIS 192 March 29, 2016 1 / 25 Quick housekeeping Last
More informationTHE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD.
REDIS THE FLEXIBLE DATA-STRUCTURE SERVER THAT COULD. @_chriswhitten_ REDIS REDIS April 10, 2009; 6 years old Founding Author: Salvatore Sanfilippo Stable release: 3.0.3 / June 4, 2015; 3 months ago Fundamental
More informationFor Bitcoins and Bounties James Kettle
EXPLOITING CORS MISCONFIGURATIONS For Bitcoins and Bounties James Kettle A MORAL STORY WeBuy0day Internal team of security experts Users are all security experts Easily fenced intellectual property Trivial
More informationVulkan: Scaling to Multiple Threads. Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics
Vulkan: Scaling to Multiple Threads Kevin sun Lead Developer Support Engineer, APAC PowerVR Graphics www.imgtec.com Introduction Who am I? Kevin Sun Working at Imagination Technologies Take responsibility
More informationCMSC330 Fall 2010 Final Exam Solutions
CMSC330 Fall 2010 Final Exam Solutions 1. (8 pts) Programming languages a. (4 pts) Give two examples of programming language features that make it easier to write programs, but make it more difficult to
More informationhtmlmin Documentation
htmlmin Documentation Release 0.1 Dave Mankoff Dec 07, 2017 Contents 1 Quickstart 3 1.1 Command Line.............................................. 4 2 Tutorial & Examples 7 3 API Reference 9 3.1 Main
More informationRailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles
RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles http://www.madebymany.co.uk/ server push HTTP
More informationProgress report of "Ruby 3 Concurrency"
Progress report of "Ruby 3 Concurrency" Cookpad Inc. Koichi Sasada Ruby X Elixir Conf Taiwan 2018 (2018/04/28) Today s topic Difficulty of Thread programming New concurrent abstraction
More informationPerformance Case Study
Performance Case Study @Fabian_Frank Yahoo! Search, Engineer Youthmedia.eu, Volunteer A Dynamic Website self-contained App self-contained App self-contained App node v0.4.x multi-core
More informationReactor Pattern & Event-Driven Programming
Reactor Pattern & Event-Driven Programming A scalable concurrent approach, using EventMachine with Thin as an example Lin Jen-Shin, http://godfat.org/ Reactor Pattern & Event-Driven Programming A scalable
More informationJavaScript: the Big Picture
JavaScript had to look like Java only less so be Java's dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened.! JavaScript:
More informationA proposal of new concurrency model for Ruby 3
A proposal of new concurrency model for Ruby 3 Koichi Sasada ko1@heroku.com People love Concurrency Concurrent RubyKaigi (at least, there are two parallel sessions) Why people love (to discuss) Concurrency?
More informationMavrig. a Tcl application construction kit. Jean-Claude Wippler Equi 4 Software, NL. EuroTcl 2008, Strasbourg, FR
Mavrig a Tcl application construction kit Jean-Claude Wippler Equi 4 Software, NL EuroTcl 2008, Strasbourg, FR Let s write an app Tons of packages to build with - Tcllib, etc Choose:! file structure, dev
More informationUA-Tester.... or why Web-Application Penetration Testers are only getting half the story
UA-Tester... or why Web-Application Penetration Testers are only getting half the story UA-Tester... or why Web-Application Penetration Testers are only getting half the story... or time to PIMP your tool!
More informationToday: VM wrap-up Select (if time) Course wrap-up Final Evaluations
Today: VM wrap-up Select (if time) Course wrap-up Final Evaluations Program structure int A[1024][1024] ; Each row is stored in one page Ignore code page in this example One frame allocated Program 1 for
More informationSmashing Node.JS: JavaScript Everywhere
Smashing Node.JS: JavaScript Everywhere Rauch, Guillermo ISBN-13: 9781119962595 Table of Contents PART I: GETTING STARTED: SETUP AND CONCEPTS 5 Chapter 1: The Setup 7 Installing on Windows 8 Installing
More informationRuby on Rails TKK, Otto Hilska
Ruby on Rails intro @ TKK, 25.5.2009 Otto Hilska 1 Today s agenda 1. The Ruby programming language 2. Ruby on Rails framework 3. An example project 2 About me Started Nodeta Oy in 2004 10+ employees always
More informationNode.js. Node.js Overview. CS144: Web Applications
Node.js Node.js Overview JavaScript runtime environment based on Chrome V8 JavaScript engine Allows JavaScript to run on any computer JavaScript everywhere! On browsers and servers! Intended to run directly
More informationBuilding an All Flash Server What s the big deal? Isn t it all just plug and play?
Building an All Flash Server What s the big deal? Isn t it all just plug and play? Doug Rollins Micron Technology Santa Clara, CA 1 What we ll cover Industry Secrets (shhhhh. ) Example Platform Key features
More informationQuick Start Guide WatchGuard Technologies, Inc.
WatchGuard XCS Platform Appliance Models: 970 and 1170 Quick Start Guide WatchGuard Technologies, Inc. WatchGuard XCS Quick Start Guide Registration and Configuration 1 2 Register with LiveSecurity Service
More informationStreams, Pipes and Mega Pipes
Streams, Pipes and Mega Pipes Felix Geisendörfer 11.06.2011 (v1) @felixge Twitter / GitHub / IRC Co-founder transloadit.com Core Developer & Module Author node-mysql node-formidable Streams Image Resizing
More informationCS 856 Latency in Communication Systems
CS 856 Latency in Communication Systems Winter 2010 Latency Challenges CS 856, Winter 2010, Latency Challenges 1 Overview Sources of Latency low-level mechanisms services Application Requirements Latency
More informationRemote Procedure Call
Remote Procedure Call Remote Procedure Call Integrate network communication with programming language Procedure call is well understood implementation use Control transfer Data transfer Goals Easy make
More informationComputer Systems and Networks
University of the Pacific LECTURE 12: PYTHON BYTES, TCP/IP (LAB 08) Computer Systems and Networks Dr. Pallipuram (vpallipuramkrishnamani@pacific.edu) Today s Agenda Python exercises to simulate network
More informationIntroducing Rack. Christian Neukirchen Editor in Chief of Anarchaia
Introducing Rack Christian Neukirchen Editor in Chief of Anarchaia A Google Image Search for ruby rack reveals: Overview What is Rack? Why do we need Rack? The design of Rack The Rack distribution Coset:
More informationHTTP Authentication API
HTTP Authentication API Note: Both GET (URL format) and POST http requests are supported. Note that POST is considered better security as URL data can be cached in the browser. HTTP URL Format http(s)://your_securenvoy_server/secserver?flag=desktop&version=2.0&status=auth&userid=(my_userid)&passcode=(6
More informationThis book is dedicated to Sara, Inara, and the newest little one, who make it all worthwhile.
Working With Ruby Threads Copyright (C) 2013 Jesse Storimer. This book is dedicated to Sara, Inara, and the newest little one, who make it all worthwhile. Chapter 7 How many threads is too many? This question
More informationCreating Ultra-fast Realtime Apps and Microservices with Java. Markus Kett, CEO Jetstream Technologies
Creating Ultra-fast Realtime Apps and Microservices with Java Markus Kett, CEO Jetstream Technologies #NoDBMSApplications #JetstreamDB About me: Markus Kett Living in Regensburg, Germany Working with Java
More informationGraphQL. Concepts & Challenges. - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub
GraphQL Concepts & Challenges - I m Robert Mosolgo - Work from home Ruby developer - From Charlottesville VA - For GitHub Rails API WHY - You have your Rails app, why bother with an API? - You have clients.
More informationFlash: an efficient and portable web server
Flash: an efficient and portable web server High Level Ideas Server performance has several dimensions Lots of different choices on how to express and effect concurrency in a program Paper argues that
More informationREST. Lecture BigData Analytics. Julian M. Kunkel. University of Hamburg / German Climate Computing Center (DKRZ)
REST Lecture BigData Analytics Julian M. Kunkel julian.kunkel@googlemail.com University of Hamburg / German Climate Computing Center (DKRZ) 11-12-2015 Outline 1 REST APIs 2 Julian M. Kunkel Lecture BigData
More informationModule 3 Web Component
Module 3 Component Model Objectives Describe the role of web components in a Java EE application Define the HTTP request-response model Compare Java servlets and JSP components Describe the basic session
More informationKaazing Gateway: An Open Source
Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns
More informationThis is an open book, open notes exam. But no online or in-class chatting.
Principles of Operating Systems Fall 2017 Final 12/13/2017 Time Limit: 8:00am - 10:00am Name (Print): Don t forget to write your name on this exam. This is an open book, open notes exam. But no online
More informationThe Rails Initialization Process
The Rails Initialization Process December 25, 2014 This guide explains the internals of the initialization process in Rails as of Rails 4. It is an extremely in-depth guide and recommed for advanced Rails
More informationIntroduc)on to Computer Networks
Introduc)on to Computer Networks COSC 4377 Lecture 3 Spring 2012 January 25, 2012 Announcements Four HW0 s)ll missing HW1 due this week Start working on HW2 and HW3 Re- assess if you found HW0/HW1 challenging
More informationTM-H6000V. WebConfig API User's Manual. Overview. Web API Specification. Reference. M Rev.A. Describes an overview of WebConfig API.
TM-H6000V WebConfig API User's Manual Overview Describes an overview of WebConfig API. Web API Specification Describes the web API specification. Reference Describes how to refer to and change setting
More information416 Distributed Systems. Networks review; Day 2 of 2 Fate sharing, e2e principle And start of RPC Jan 10, 2018
416 Distributed Systems Networks review; Day 2 of 2 Fate sharing, e2e principle And start of RPC Jan 10, 2018 1 Last Time Modularity, Layering, and Decomposition Example: UDP layered on top of IP to provide
More informationA Joint SLC/RealEyes Production.
A Joint SLC/RealEyes Production www.realeyes.com www.streaminglearningcenter.com Understanding the problem Reducing latency Delivery Player Content Up and Coming Some test results Time to video play Important
More informationIntroduction and first application. Luigi De Russis. Rails 101
Introduction and first application Luigi De Russis 2 About Rails Ruby on Rails 3 Framework for making dynamic web applications created in 2003 Open Source (MIT License) for the Ruby programming language
More informationCSci 4061 Introduction to Operating Systems. (Thread-Basics)
CSci 4061 Introduction to Operating Systems (Thread-Basics) Threads Abstraction: for an executing instruction stream Threads exist within a process and share its resources (i.e. memory) But, thread has
More informationMRI Internals. Koichi Sasada.
MRI Internals Koichi Sasada ko1@heroku.com MRI Internals towards Ruby 3 Koichi Sasada ko1@heroku.com Today s talk Koichi is working on improving Ruby internals Introduce my ideas toward Ruby 3 Koichi Sasada
More informationCS510 Operating System Foundations. Jonathan Walpole
CS510 Operating System Foundations Jonathan Walpole Course Overview Who am I? Jonathan Walpole Professor at PSU since 2004, OGI 1989 2004 Research Interests: Operating System Design, Parallel and Distributed
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Multithreading Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to large compute clusters Can perform multiple
More informationDRb. RMI For Smart People
DRb RMI For Smart People Brian Sletten brian@bosatsu.net David Sletten david@bosatsu.net DRb Distributed Ruby Written by Masatoshi Seki Ruby Objects in one process can easily call Ruby Objects in another
More informationTools. SWE 432, Fall Design and Implementation of Software for the Web
Tools SWE 432, Fall 2016 Design and Implementation of Software for the Web Today Before we can really make anything, there s a bunch of technical stuff to get out of the way Tools make our lives so much
More informationMicroservices with Node.js
Microservices with Node.js Objectives In this module we will discuss: Core Node.js concepts Node Package Manager (NPM) The Express Node.js package The MEAN stack 1.1 What is Node.js? Node.js [ https://nodejs.org/
More informationSeptember 15th, Finagle + Java. A love story (
September 15th, 2016 Finagle + Java A love story ( ) @mnnakamura hi, I m Moses Nakamura Twitter lives on the JVM When Twitter realized we couldn t stay on a Rails monolith and continue to scale at the
More informationMPI on the Cray XC30
MPI on the Cray XC30 Aaron Vose 4/15/2014 Many thanks to Cray s Nick Radcliffe and Nathan Wichmann for slide ideas. Cray MPI. MPI on XC30 - Overview MPI Message Pathways. MPI Environment Variables. Environment
More informationImplementing Microservices Tracing with Spring Cloud and Zipkin
Implementing Microservices Tracing with Spring Cloud and Zipkin Marcin Grzejszczak, @mgrzejszczak 1 2017 Pivotal About me Spring Cloud developer at Pivotal Working mostly on Spring Cloud Sleuth Spring
More informationEmberJS A Fitting Face for a D8 Backend. Taylor Solomon
EmberJS A Fitting Face for a D8 Backend Taylor Solomon taylor.solomon @jtsolomon http://interactivestrategies.com 2 Years Ago 2 Years Ago URL Ember Data assumes a few things. - Your API format is JSON
More informationPython 3000 and You. Guido van Rossum PyCon March 14, 2008
Python 3000 and You Guido van Rossum PyCon March 14, 2008 Why Py3k Open source needs to move or die Matz (creator of Ruby) To fix early, sticky design mistakes e.g. classic classes, int division, print
More informationFrom the event loop to the distributed system. Martyn 3rd November, 2011
From the event loop to the distributed system Martyn Loughran martyn@pusher.com @mloughran 3rd November, 2011 From the event loop to the distributed system From the event loop to the distributed system
More informationGetting Some REST with webmachine. Kevin A. Smith
Getting Some REST with webmachine Kevin A. Smith What is webmachine? Framework Framework Toolkit A toolkit for building RESTful HTTP resources What is REST? Style not a standard Resources == URLs http://localhost:8000/hello_world
More informationCMPSC 311- Introduction to Systems Programming Module: Systems Programming
CMPSC 311- Introduction to Systems Programming Module: Systems Programming Professor Patrick McDaniel Fall 2013 Patrick McDaniel Professor of Computer Science and Engineering Co-head of Security Group
More informationRhino & RingoJS: JavaScript on the JVM
Rhino & RingoJS: JavaScript on the JVM Hannes Wallnöfer http://hns.github.com @hannesw "Overall, JavaScript as a system programming language feels a lot like Lisp must have for the programming generation
More informationWelcome to the Bash Workshop!
Welcome to the Bash Workshop! If you prefer to work on your own, already know programming or are confident in your abilities, please sit in the back. If you prefer guided exercises, are completely new
More informationWeb Applications. Software Engineering 2017 Alessio Gambi - Saarland University
Web Applications Software Engineering 2017 Alessio Gambi - Saarland University Based on the work of Cesare Pautasso, Christoph Dorn, Andrea Arcuri, and others ReCap Software Architecture A software system
More informationOPERATING SYSTEM TRANSACTIONS
OPERATING SYSTEM TRANSACTIONS Donald E. Porter, Owen S. Hofmann, Christopher J. Rossbach, Alexander Benn, and Emmett Witchel The University of Texas at Austin OS APIs don t handle concurrency 2 OS is weak
More informationJS Event Loop, Promises, Async Await etc. Slava Kim
JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????
More informationOverview of the Ruby Language. By Ron Haley
Overview of the Ruby Language By Ron Haley Outline Ruby About Ruby Installation Basics Ruby Conventions Arrays and Hashes Symbols Control Structures Regular Expressions Class vs. Module Blocks, Procs,
More informationBe warned Niklas Gustavsson
1 Niklas Gustavsson niklas.gustavsson@callistaenterprise.se www.callistaenterprise.se Be warned CouchDB, Slide 2 2 Won't replace your relational database You (probably) won't be using it any time soon
More informationDistributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems
Distributed Architectures & Microservices CS 475, Spring 2018 Concurrent & Distributed Systems GFS Architecture GFS Summary Limitations: Master is a huge bottleneck Recovery of master is slow Lots of success
More informationQuick Start Guide. WatchGuard XCS Platform Appliance Models: 170, 370, 570, 770, and 770R. Guide de démarrage rapide Kurzanleitung Guida introduttiva
WatchGuard XCS Platform Appliance Models: 170, 370, 570, 770, and 770R Quick Start Guide Guide de démarrage rapide Kurzanleitung Guida introduttiva Guía Rápida WatchGuard Technologies, Inc. XCS_170_370_570_770_770R_QSG_FINAL_0110110.indd
More informationRudy: a small web server. Johan Montelius. October 2, 2016
Rudy: a small web server Johan Montelius October 2, 2016 Introduction Your task is to implement a small web server in Erlang. The aim of this exercise is that you should be able to: describe the procedures
More informationProcesses and Threads
COS 318: Operating Systems Processes and Threads Kai Li and Andy Bavier Computer Science Department Princeton University http://www.cs.princeton.edu/courses/archive/fall13/cos318 Today s Topics u Concurrency
More information- From Theory to Practice -
- From Theory to Practice - Thomas Balthazar Stella Cotton Corey Donohoe Yannick Schutz What is distributed tracing? Tracing requests across distributed system boundaries A Simple Use Case Web Request
More informationOverview. CMSC 330: Organization of Programming Languages. Concurrency. Multiprocessors. Processes vs. Threads. Computation Abstractions
CMSC 330: Organization of Programming Languages Multithreaded Programming Patterns in Java CMSC 330 2 Multiprocessors Description Multiple processing units (multiprocessor) From single microprocessor to
More informationIntroduction to yada. Malcolm
Introduction to yada Malcolm Sparks @malcolmsparks 304 Not Modified RangeRequests Expires uthorization Weak vs Strong 405 Method Not Allowed Referrer AcceptLanguage Quality Values IfMatch Allow Continue
More informationCopyright by Object Computing, Inc. (OCI). All rights reserved. Strata
Overview npm install [-g] strata var strata = require('strata'); Node.js streaming HTTP server Based on Web Server Gateway Interface (WSGI) - a Python standard at http://wsgi.org Rack - a Ruby Webserver
More informationOS Extensibility: SPIN and Exokernels. Robert Grimm New York University
OS Extensibility: SPIN and Exokernels Robert Grimm New York University The Three Questions What is the problem? What is new or different? What are the contributions and limitations? OS Abstraction Barrier
More informationdjango-baton Documentation
django-baton Documentation Release 1.0.7 abidibo Nov 13, 2017 Contents 1 Features 3 2 Getting started 5 2.1 Installation................................................ 5 2.2 Configuration...............................................
More informationUnder The Hood: Performance Tuning With Tizen. Ravi Sankar Guntur
Under The Hood: Performance Tuning With Tizen Ravi Sankar Guntur How to write a Tizen App Tools already available in IDE v2.3 Dynamic Analyzer Valgrind 2 What s NEXT? Want to optimize my application App
More informationApplication Layer Introduction; HTTP; FTP
Application Layer Introduction; HTTP; FTP Tom Kelliher, CS 325 Feb. 4, 2011 1 Administrivia Announcements Assignment Read 2.4 2.6. From Last Time Packet-switched network characteristics; protocol layers
More informationCS 111. Operating Systems Peter Reiher
Operating System Principles: File Systems Operating Systems Peter Reiher Page 1 Outline File systems: Why do we need them? Why are they challenging? Basic elements of file system design Designing file
More informationToby Crawley. Creative Commons BY-SA 3.0. Charlotte.rb May 2011
Toby Crawley Creative Commons BY-SA 3.0 Charlotte.rb May 2011 whoami @tcrawley C > Java > PHP > Java > Ruby > Java? Red Hat Senior Engineer member of Goal To convert you all to TorqueBox users! TorqueBox
More informationGrand Central Dispatch
A better way to do multicore. (GCD) is a revolutionary approach to multicore computing. Woven throughout the fabric of Mac OS X version 10.6 Snow Leopard, GCD combines an easy-to-use programming model
More informationUnderstanding MPI on Cray XC30
Understanding MPI on Cray XC30 MPICH3 and Cray MPT Cray MPI uses MPICH3 distribution from Argonne Provides a good, robust and feature rich MPI Cray provides enhancements on top of this: low level communication
More informationCSE 413 Programming Languages & Implementation. Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs
CSE 413 Programming Languages & Implementation Hal Perkins Winter 2019 Ruby Containers, Blocks, and Procs CSE413 Winter 2019 1 The Plan Ruby container data structures Blocks and control structures (iterators,
More informationComputer Systems and Networks
University of the Pacific LECTURE 13: TCP RECAP, ENDIANNESS, DNS, WIRESHARK Computer Systems and Networks Dr. Pallipuram (vpallipuramkrishnamani@pacific.edu) Gist of TCP/IP Socket Programming Client Server
More informationWhat is Node.js? Tim Davis Director, The Turtle Partnership Ltd
What is Node.js? Tim Davis Director, The Turtle Partnership Ltd About me Co-founder of The Turtle Partnership Working with Notes and Domino for over 20 years Working with JavaScript technologies and frameworks
More informationA Sense of Time for JavaScript and Node.js
A Sense of Time for JavaScript and Node.js First-Class Timeouts as a Cure for Event Handler Poisoning James C. Davis Eric R. Williamson Dongyoon Lee COMPUTER SCIENCE - 1 - Contributions Attack: Event Handler
More information