Developing a Software Engineer's Energy-Optimization Decision

Total Page:16

File Type:pdf, Size:1020Kb

Developing a Software Engineer's Energy-Optimization Decision DEVELOPING A SOFTWARE ENGINEER'S ENERGY-OPTIMIZATION DECISION SUPPORT FRAMEWORK by Irene Manotas Guti´errez A dissertation submitted to the Faculty of the University of Delaware in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science Fall 2017 c 2017 Irene Manotas Guti´errez All Rights Reserved DEVELOPING A SOFTWARE ENGINEER'S ENERGY-OPTIMIZATION DECISION SUPPORT FRAMEWORK by Irene Manotas Guti´errez Approved: Kathleen F. McCoy, Ph.D. Chair of the Department of Computer and Information Sciences Approved: Babatunde A. Ogunnaike, Ph.D. Dean of the College of Engineering Approved: Ann L. Ardis, Ph.D. Senior Vice Provost for Graduate and Professional Education I certify that I have read this dissertation and that in my opinion it meets the academic and professional standard required by the University as a dissertation for the degree of Doctor of Philosophy. Signed: Lori Pollock, Ph.D. Professor in charge of dissertation I certify that I have read this dissertation and that in my opinion it meets the academic and professional standard required by the University as a dissertation for the degree of Doctor of Philosophy. Signed: James Clause, Ph.D. Member of dissertation committee I certify that I have read this dissertation and that in my opinion it meets the academic and professional standard required by the University as a dissertation for the degree of Doctor of Philosophy. Signed: Benjamin A. Carterette, Ph.D. Member of dissertation committee I certify that I have read this dissertation and that in my opinion it meets the academic and professional standard required by the University as a dissertation for the degree of Doctor of Philosophy. Signed: William G.J. Halfond, Ph.D. Member of dissertation committee TABLE OF CONTENTS LIST OF TABLES :::::::::::::::::::::::::::::::: viii LIST OF FIGURES ::::::::::::::::::::::::::::::: ix ABSTRACT ::::::::::::::::::::::::::::::::::: xi Chapter 1 INTRODUCTION :::::::::::::::::::::::::::::: 1 2 BACKGROUND AND STATE OF THE ART :::::::::::: 5 2.1 Measuring Energy Consumption ::::::::::::::::::::: 6 2.2 Strategies for Systems Energy Efficiency :::::::::::::::: 7 2.2.1 Hardware Approaches :::::::::::::::::::::: 7 2.2.2 Compiler Approaches ::::::::::::::::::::::: 8 2.2.3 Operating System Approaches :::::::::::::::::: 8 2.3 Software Engineering and Energy Efficiency :::::::::::::: 8 2.3.1 Exploring Impacts of Software Engineering Decisions ::::: 9 2.3.2 Analyzing, Detecting, and Improving the Energy Usage of Software :::::::::::::::::::::::::::::: 11 3 UNDERSTANDING SOFTWARE DEVELOPERS' CHALLENGES AND NEEDS THROUGH STUDIES ::::::: 14 3.1 A Case Study: Impacts of Web Servers on Web Applications Energy Usage ::::::::::::::::::::::::::::::::::: 14 3.1.1 Methodology ::::::::::::::::::::::::::: 15 3.1.1.1 Experimental Variables :::::::::::::::: 15 3.1.1.2 Controlling for Changes in the Web Application's Code 15 iv 3.1.1.3 Controlling for Inconsistencies in Driving the Web Application ::::::::::::::::::::::: 17 3.1.1.4 Controlling the Web Browser ::::::::::::: 18 3.1.1.5 Considered Subjects :::::::::::::::::: 19 3.1.1.6 Data Collection ::::::::::::::::::::: 22 3.1.2 Threats to Validity :::::::::::::::::::::::: 23 3.1.3 Evaluation ::::::::::::::::::::::::::::: 24 3.1.4 Summary of Results ::::::::::::::::::::::: 29 3.1.5 Implications :::::::::::::::::::::::::::: 30 3.2 Investigating Practitioners' Perspectives on Green Software Engineering 30 3.2.1 Methodology ::::::::::::::::::::::::::: 31 3.2.1.1 Interviews :::::::::::::::::::::::: 32 3.2.1.2 Survey :::::::::::::::::::::::::: 34 3.2.1.3 Threats to Validity ::::::::::::::::::: 36 3.2.2 Findings :::::::::::::::::::::::::::::: 37 3.2.2.1 Where is Energy Usage a Concern? :::::::::: 38 3.2.2.2 Perspectives on Requirements ::::::::::::: 41 3.2.2.3 Perspectives on Design ::::::::::::::::: 44 3.2.2.4 Perspectives on Construction ::::::::::::: 47 3.2.2.5 Perspectives on Finding and Fixing Issues :::::: 49 3.2.2.6 Perspectives on Maintenance ::::::::::::: 51 3.2.3 Implications :::::::::::::::::::::::::::: 52 3.2.3.1 Implications for Requirements ::::::::::::: 52 3.2.3.2 Implications for Design ::::::::::::::::: 53 3.2.3.3 Implications for Construction ::::::::::::: 54 3.2.3.4 Implications for Finding and Fixing Issues :::::: 55 3.2.3.5 Implications for Maintenance ::::::::::::: 56 3.2.4 Related Work ::::::::::::::::::::::::::: 56 3.2.5 Summary ::::::::::::::::::::::::::::: 57 4 THE SOFTWARE ENGINEER'S ENERGY DECISION v SUPPORT FRAMEWORK (SEEDS) :::::::::::::::::: 59 4.1 Overview of SEEDS :::::::::::::::::::::::::::: 59 4.1.1 Example Usage Scenario ::::::::::::::::::::: 60 4.1.2 SEEDS Components ::::::::::::::::::::::: 63 4.1.2.1 SEEDS Inputs ::::::::::::::::::::: 63 4.1.2.2 SEEDS Outputs :::::::::::::::::::: 66 4.1.2.3 Application-Specific Search Space in SEEDS ::::: 67 4.1.2.4 SEEDS Search ::::::::::::::::::::: 69 4.1.2.4.1 Exhaustive Approaches :::::::::: 71 4.1.2.4.2 Metaheuristic-based Search :::::::: 72 4.2 Instantiating SEEDS for Software Engineers' Decisions :::::::: 74 4.2.1 Support for the Selection of Energy Efficient Design Patterns : 74 4.2.2 Support for the Selection of Energy Efficient Refactorings for Mobile Applications ::::::::::::::::::::::: 76 4.2.3 Support for the Selection of Energy Efficient Library Implementations ::::::::::::::::::::::::: 78 4.3 Case Study: SEEDSapi Instantiation and Implementation :::::: 79 4.3.1 Observational Study of Collections API Impact on Energy :: 79 4.3.2 SEEDSapi Components :::::::::::::::::::::: 81 4.3.2.1 SEEDSapi Inputs :::::::::::::::::::: 82 4.3.2.2 SEEDSapi Outputs ::::::::::::::::::: 84 4.3.2.3 SEEDSapi Application-specific Search Space ::::: 85 4.3.2.4 SEEDSapi Search :::::::::::::::::::: 86 4.3.2.4.1 Limited Exhaustive Search :::::::: 86 4.3.2.4.2 Metaheuristic-based Search :::::::: 87 4.3.2.5 SEEDSapi Transform and Profile ::::::::::: 89 4.4 Empirical Evaluation ::::::::::::::::::::::::::: 92 4.4.1 Experimental Subjects :::::::::::::::::::::: 92 4.4.2 RQ1: Effectiveness :::::::::::::::::::::::: 94 4.4.3 RQ2: Exploration Capability :::::::::::::::::: 96 vi 4.4.4 RQ3: Cost Using the Limited Exhaustive Search :::::::: 100 4.4.5 RQ4: Search Space Reduction :::::::::::::::::: 101 4.4.6 RQ5: Metaheuristic-based Search Strategy ::::::::::: 106 4.4.7 RQ6: Proxy Measure ::::::::::::::::::::::: 115 4.4.8 Threats to Validity :::::::::::::::::::::::: 116 4.5 Related Work ::::::::::::::::::::::::::::::: 117 4.6 Summary ::::::::::::::::::::::::::::::::: 119 5 CONCLUSIONS AND FUTURE WORK ::::::::::::::: 120 5.1 Future Work :::::::::::::::::::::::::::::::: 121 5.1.1 Extensions ::::::::::::::::::::::::::::: 121 5.1.2 New Directions :::::::::::::::::::::::::: 122 Appendix INTERVIEW AND SURVEY QUESTIONS :::::::::::::: 145 A.1 Interview Questions :::::::::::::::::::::::::::: 145 A.2 Developer Energy Survey ::::::::::::::::::::::::: 149 vii LIST OF TABLES 3.1 Metrics for Tracks ::::::::::::::::::::::::::: 20 3.2 Integration test cases :::::::::::::::::::::::::: 20 3.3 Server Configuration Parameters ::::::::::::::::::: 23 3.4 Energy consumption of Tracks when using each web server. ::::: 25 3.5 Percentage change of energy consumption from the mean. ::::: 27 4.1 Potential Improvement or Degradation in Energy Usage from Switching Collection Implementations. :::::::::::::::: 80 4.2 Subject Applications. :::::::::::::::::::::::::: 93 4.3 the SEEDS API Implementation Selector (SEEDSapi) Effectiveness in Improving Energy Usage With Limited Exhaustive Search Strategy. 95 4.4 Cost to Automatically Improve an Application Using the Limited Exhaustive Search. ::::::::::::::::::::::::::: 99 4.5 SEEDSapi effectiveness comparison using the LEAP and RAPL energy profiling systems. :::::::::::::::::::::::: 107 4.6 Comparison between Limited Exhaustive Search and Metaheuristic-based search strategies (gGa, NSGA-II) :::::::: 110 4.7 Costs for Limited Exhaustive Search and Metaheuristic-based search strategies (gGa, NSGA-II) ::::::::::::::::::::::: 112 4.8 Correlation between Energy Usage and Execution Time for Subject Applications ::::::::::::::::::::::::::::::: 115 viii LIST OF FIGURES 3.1 Example of a Rack application. :::::::::::::::::::: 17 3.2 Example of a Cucumber integration test. ::::::::::::::: 19 3.3 Energy usage per test and per web server for the Calendar, Context edit, and Search integration tests. ::::::::::::::::::: 28 3.4 The applied research methodology. :::::::::::::::::: 31 3.5 Responses to Statement S1 from all respondents and respondents who indicated that they are experienced in each domain. ::::::::: 38 3.6 Requirements-related statement and responses from experienced practitioners. :::::::::::::::::::::::::::::: 43 3.7 Design-related statements and responses from experienced practitioners. :::::::::::::::::::::::::::::: 43 3.8 Construction-related statements and responses from experienced practitioners. :::::::::::::::::::::::::::::: 46 3.9 Finding and fixing issues-related statements and responses from experienced practitioners. ::::::::::::::::::::::: 48 3.10 Maintenance-related statements and responses from experienced practitioners. :::::::::::::::::::::::::::::: 52 4.1 Place where a Set Implementation is instantiated and can be switched with another Set implementations. :::::::::::::::::: 61 4.2 Overview of the Software Engineer's Energy-optimization Decision Support framework (SEEDS). :::::::::::::::::::: 62 4.3 SEEDS Framework Class Diagram. :::::::::::::::::: 66 ix 4.4 Application versions belonging to the application-specific search space. :::::::::::::::::::::::::::::::::: 68
Recommended publications
  • Automating Configuration N49(PDF)
    Automating Network Configuration Brent Chapman Netomata, Inc. [email protected] www.netomata.com NANOG 49 — 13 June 2010 Copyright © 2010, Netomata, Inc. All Rights Reserved. Introduction Who I am What I'm here to talk about 2 Copyright © 2010, Netomata, Inc. All Rights Reserved. Why automate network configuration? Because automated networks are More reliable Easier to maintain Easier to scale 3 Copyright © 2010, Netomata, Inc. All Rights Reserved. For example... Imagine you're managing a moderately complex web site Multiple real and virtual hosts Several "environments" (production, testing, development, etc.) Separate VLAN for each environment 4 Copyright © 2010, Netomata, Inc. All Rights Reserved. For example... What networking devices & services need to be managed? Routers Switches Load Balancers Firewalls Real-time status monitoring (i.e., Nagios) Long-term usage monitoring (i.e., MRTG) 5 Copyright © 2010, Netomata, Inc. All Rights Reserved. For example... How to add new virtual host to existing load balancer pool? Set up host itself, using Puppet or cfengine or whatever Add host to VLAN defs on switches Add host to ACLs on routers Add host to pool on load balancers Add host to NAT and ACLs on firewalls Add host to real-time monitoring (i.e., Nagios) Add host to usage monitoring (i.e., MRTG) 6 Copyright © 2010, Netomata, Inc. All Rights Reserved. For example... What's the problem with doing all that by hand? You have to remember how to manage all those very different devices (and you probably don't do it very often) It takes a lot of time Every step is a chance to make a mistake You might get distracted, and never finish Over time, these small mistakes add up, leading to inconsistent networks that are unreliable and difficult to troubleshoot 7 Copyright © 2010, Netomata, Inc.
    [Show full text]
  • Puppet Dashboard 1.2 Manual
    Puppet Dashboard Manual (Generated on July 01, 2013, from git revision 46784ac1656bd7b57fcfb51d0865ec7ff65533d9) Puppet Dashboard 1.2 Manual This is the manual for Puppet Dashboard 1.2. Overview Puppet Dashboard is a web interface for Puppet. It can view and analyze Puppet reports, assign Puppet classes and parameters to nodes, and view inventory data and backed-up file contents. Chapters Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Installing Puppet Dashboard This is a chapter of the Puppet Dashboard 1.2 manual. NAVIGATION Installing Dashboard Upgrading Dashboard Configuring Dashboard Maintaining Dashboard Using Dashboard Rake API Overview Puppet Dashboard is a Ruby on Rails web app that interfaces with Puppet. It will run on most modern Unix-like OSes (including Mac OS X and most Linux distributions), requires a certain amount of supporting infrastructure, and can be deployed and served in a variety of ways. Dashboardʼs web interface supports the following browsers: Chrome (current versions) Firefox 3.5 and higher Puppet Dashboard Manual • Puppet Dashboard 1.2 Manual 2/27 Safari 4 and higher Internet Explorer 8 and higher Installing, in Summary In outline, the steps to get Dashboard running are: Installing the external dependencies Installing the Dashboard code Configuring Dashboard Creating and configuring a MySQL database Testing that Dashboard is working Configuring Puppet Starting the delayed job worker processes Running Dashboard in a production-quality server After completing these tasks, Dashboardʼs main functionality will be on-line and working smoothly. You can then configure Dashboard further and enable optional features If you are trying to upgrade Puppet Dashboard instead of installing it from scratch, see the chapter of this manual on upgrading instead of reading further in this chapter.
    [Show full text]
  • Third-Party Software for Engage Products APPLICATIONS Red Hat
    Third-Party Software for Engage Products APPLICATIONS Red Hat Enterprise Linux General Information Source Code Status Not modified by Vocera URL https://www.redhat.com/en/about/licenses-us Supplemental END USER LICENSE AGREEMENT (November 2010) License Text RED HAT® ENTERPRISE LINUX® AND RED HAT APPLICATIONS PLEASE READ THIS END USER LICENSE AGREEMENT CAREFULLY BEFORE USING SOFTWARE FROM RED HAT. BY USING RED HAT SOFTWARE, YOU SIGNIFY YOUR ASSENT TO AND ACCEPTANCE OF THIS END USER LICENSE AGREEMENT AND ACKNOWLEDGE YOU HAVE READ AND UNDERSTAND THE TERMS. AN INDIVIDUAL ACTING ON BEHALF OF AN ENTITY REPRESENTS THAT HE OR SHE HAS THE AUTHORITY TO ENTER INTO THIS END USER LICENSE AGREEMENT ON BEHALF OF THAT ENTITY. IF YOU DO NOT ACCEPT THE TERMS OF THIS AGREEMENT, THEN YOU MUST NOT USE THE RED HAT SOFTWARE. THIS END USER LICENSE AGREEMENT DOES NOT PROVIDE ANY RIGHTS TO RED HAT SERVICES SUCH AS SOFTWARE MAINTENANCE, UPGRADES OR SUPPORT. PLEASE REVIEW YOUR SERVICE OR SUBSCRIPTION AGREEMENT(S) THAT YOU MAY HAVE WITH RED HAT OR OTHER AUTHORIZED RED HAT SERVICE PROVIDERS REGARDING SERVICES AND ASSOCIATED PAYMENTS. This end user license agreement (“EULA”) governs the use of any of the versions of Red Hat Enterprise Linux, certain other Red Hat software applications that include or refer to this license, and any related updates, source code, appearance, structure and organization (the “Programs”), regardless of the delivery mechanism. 1. License Grant. Subject to the following terms, Red Hat, Inc. (“Red Hat”) grants to you a perpetual, worldwide license to the Programs (most of which include multiple software components) pursuant to the GNU General Public License v.2.
    [Show full text]
  • Interfacing Apache HTTP Server 2.4 with External Applications
    Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick November 6, 2012 Who am I? Interfacing Apache HTTP Server 2.4 with External Applications Met Unix (in the form of Xenix) in 1985 Jeff Trawick Joined IBM in 1990 to work on network software for mainframes Moved to a different organization in 2000 to work on Apache httpd Later spent about 4 years at Sun/Oracle Got tired of being tired of being an employee of too-huge corporation so formed my own too-small company Currently working part-time, coding on other projects, and taking classes Overview Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Huge problem space, so simplify Perspective: \General purpose" web servers, not minimal application containers which implement HTTP \Applications:" Code that runs dynamically on the server during request processing to process input and generate output Possible web server interactions Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Native code plugin modules (uhh, assuming server is native code) Non-native code + language interpreter inside server (Lua, Perl, etc.) Arbitrary processes on the other side of a standard wire protocol like HTTP (proxy), CGI, FastCGI, etc. (Java and \all of the above") or private protocol Some hybrid such as mod fcgid mod fcgid as example hybrid Interfacing Apache HTTP Server 2.4 with External Applications Jeff Trawick Supports applications which implement a standard wire protocol, no restriction on implementation mechanism Has extensive support for managing the application[+interpreter] processes so that the management of the application processes is well-integrated with the web server Contrast with mod proxy fcgi (pure FastCGI, no process management) or mod php (no processes/threads other than those of web server).
    [Show full text]
  • Puppet Offers a Free, Reliable and Cross Flavor Option for Remote Enterprise Computer Management
    This material is based on work supported by the National Science Foundation under Grant No. 0802551 Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author (s) and do not necessarily reflect the views of the National Science Foundation C4L8S1 System administrators are constantly challenged when managing large enterprise systems using Linux-based operating systems. Administrators need to know a variety of command line differentiations, dependency variations, and support options to support the various computers systems in use. Puppet offers a free, reliable and cross flavor option for remote enterprise computer management. This lesson will introduce you to the Puppet AdministrativeU the tool and provide you with a basic overview on how to use Puppet. Lab activities will provide you with hands-on experience with the Puppet application and assignments and discussion activities will increase your learning on this subject. Understanding Puppet is important because of its ability to manage enterprise systems. Students hoping to become Linux Administrators must gain mastery of enterprise management tools like Puppet to improve efficiency and productivity. C4L8S2 You should know what will be expected of you when you complete this lesson. These expectations are presented as objectives. Objectives are short statements of expectations that tell you what you must be able to do, perform, learn, or adjust after reviewing the lesson. Lesson Objective: U the Given five computers that need to be configured,
    [Show full text]
  • Rubyperf.Pdf
    Ruby Performance. Tips, Tricks & Hacks Who am I? • Ezra Zygmuntowicz (zig-mun-tuv-itch) • Rubyist for 4 years • Engine Yard Founder and Architect • Blog: http://brainspl.at Ruby is Slow Ruby is Slow?!? Well, yes and no. The Ruby Performance Dichotomy Framework Code VS Application Code Benchmarking: The only way to really know performance characteristics Profiling: Measure don’t guess. ruby-prof What is all this good for in real life? Merb Merb Like most useful code it started as a hack, Merb == Mongrel + Erb • No cgi.rb !! • Clean room implementation of ActionPack • Thread Safe with configurable Mutex Locks • Rails compatible REST routing • No Magic( well less anyway ;) • Did I mention no cgi.rb? • Fast! On average 2-4 times faster than rails Design Goals • Small core framework for the VC in MVC • ORM agnostic, use ActiveRecord, Sequel, DataMapper or roll your own db access. • Prefer simple code over magic code • Keep the stack traces short( I’m looking at you alias_method_chain) • Thread safe, reentrant code Merb Hello World No code is faster then no code • Simplicity and clarity trumps magic every time. • When in doubt leave it out. • Core framework to stay small and simple and easy to extend without gross hacks • Prefer plugins for non core functionality • Plugins can be gems Key Differences • No auto-render. The return value of your controller actions is what gets returned to client • Merb’s render method just returns a string, allowing for multiple renders and more flexibility • PartController’s allow for encapsualted applets without big performance cost Why not work on Rails instead of making a new framework? • Originally I was trying to optimize Rails and make it more thread safe.
    [Show full text]
  • Next Generation Web Scanning Presentation
    Next generation web scanning New Zealand: A case study First presented at KIWICON III 2009 By Andrew Horton aka urbanadventurer NZ Web Recon Goal: To scan all of New Zealand's web-space to see what's there. Requirements: – Targets – Scanning – Analysis Sounds easy, right? urbanadventurer (Andrew Horton) www.morningstarsecurity.com Targets urbanadventurer (Andrew Horton) www.morningstarsecurity.com Targets What does 'NZ web-space' mean? It could mean: •Geographically within NZ regardless of the TLD •The .nz TLD hosted anywhere •All of the above For this scan it means, IPs geographically within NZ urbanadventurer (Andrew Horton) www.morningstarsecurity.com Finding Targets We need creative methods to find targets urbanadventurer (Andrew Horton) www.morningstarsecurity.com DNS Zone Transfer urbanadventurer (Andrew Horton) www.morningstarsecurity.com Find IP addresses on IRC and by resolving lots of NZ websites 58.*.*.* 60.*.*.* 65.*.*.* 91.*.*.* 110.*.*.* 111.*.*.* 113.*.*.* 114.*.*.* 115.*.*.* 116.*.*.* 117.*.*.* 118.*.*.* 119.*.*.* 120.*.*.* 121.*.*.* 122.*.*.* 123.*.*.* 124.*.*.* 125.*.*.* 130.*.*.* 131.*.*.* 132.*.*.* 138.*.*.* 139.*.*.* 143.*.*.* 144.*.*.* 146.*.*.* 150.*.*.* 153.*.*.* 156.*.*.* 161.*.*.* 162.*.*.* 163.*.*.* 165.*.*.* 166.*.*.* 167.*.*.* 192.*.*.* 198.*.*.* 202.*.*.* 203.*.*.* 210.*.*.* 218.*.*.* 219.*.*.* 222.*.*.* 729,580,500 IPs. More than we want to try. urbanadventurer (Andrew Horton) www.morningstarsecurity.com IP address blocks in the IANA IPv4 Address Space Registry Prefix Designation Date Whois Status [1] -----
    [Show full text]
  • Questions for Mongrel
    www.YoYoBrain.com - Accelerators for Memory and Learning Questions for Mongrel Category: Introduction - (16 questions) Mongrel is described in what way in the "A web application container for Ruby on Mongrel pdf available from O Reilly Rails" Mongrel is compared with what web servers production performance: Fast CGI or SCGI in the Rails world in terms of production performance and development Development: WEBrick simplicity/speed Creator of Mongrel Zed A Shawwww.zedshaw.com Mongrel is developed on what mixture of Ruby and C programming/scripting languages Documentation for Mongrel mongrel.rubyforge.org/docs/index.html The creators of Mongrel describe it how? a fast HTTP library and server for Ruby that is intended for hosting Ruby web applications of any kind using plain HTTP rather than FastCGI or SCGI. It is framework agnostic Three key technologies that are used for A custom HTTP 1.1 parser (based on RFC Mongrel's internals standard, written using Ragel in C and Java as a Rby extension) Simple server that uses the parser and URIClassifier to process requests, find the right handlers, then pass the results to the handler for processing Handlers are responsible for using HttpRequet and HttpResponse objects to "do their thing and then return results" Component of Mongrel responsible for Handlers dealing with HttpRequest and HttpResponse How does Mongrel support threading one thread per request, but it will start closing connections when it gets "overloaded"while Mongrel is processing HTTP requests and sending responses it uses Ruby's threading system What platforms that already work with Camping and Og+Nitro Mongrel are throught to be "thread-safe" Have not been heavily tested Is Ruby on Rails thread safe? no How does Mongrel handle Rails" " Ruby on Rails is not thread safe so there is a synchronized block around the calls to Dispatcher.dispatch.
    [Show full text]
  • Ruby on Rails Matt Dees All Trademarks Used Herein Are the Sole Property of Their Respective Owners
    Ruby on Rails Matt Dees All trademarks used herein are the sole property of their respective owners. Introduction How Ruby on Rails Works cPanel's interaction with Ruby on Rails Administrating Ruby on Rails Troubleshooting Ruby on Rails What is Ruby on Rails? A Web Application Framework aimed towards the rapid development and deployment of Dynamic Web 2.0 Applications Interpreted Programming Language Web Applications are done through either Rails or as a straight CGI application Every part of the Ruby on Rails system is dependent on ruby working correctly Gems Gems are Ruby modules Either compiled or interpreted Ruby code Gems can be full applications or libraries for Ruby programs Managed by the “gem” command Rails Rails is a framework for creating Ruby applications and provides several different pieces of functionality Rails exists for multiple programming languages Is a gem Consists of several gems used for handling different functions Different versions of this exist, each application requires a specific version Rails Continued Action Record – Rapid development library for building daemon independent database queries Action Pack – An implementation of Model View Controller for Ruby. Action Mailer – An Email Handler Webserver – Usually webrick, however we use mongrel Mongrel Mongrel is the Web Server used for serving Ruby on Rails applications One instance per Ruby application Other daemons exist, but mongrel has the best security and performance record Is a gem Runs applications on port 12001 and up on cPanel Uses a significant amount
    [Show full text]
  • Messageway Web Client Installation and Configuration
    Version 6.0.0 MessageWay Web Client Installation and Configuration Document History Part Number Product Name Date MW600-590 MessageWay Web Client Installation and Configuration 04/2013 MW600-MR01 MessageWay Web Client Installation and Configuration 06/26/15 MW600-MR02 MessageWay Web Client Installation and Configuration 10/14/16 MW600-MR03 MessageWay Web Client Installation and Configuration 03/16/18 MW600-MR04 MessageWay Web Client Installation and Configuration 03/13/20 Copyright ©1991-2020 Ipswitch, Inc. All rights reserved. This document, as well as the software described in it, is furnished under license and may be used or copied only in accordance with the terms of such license. Except as permitted by such license, no part of this publication may be reproduced, photocopied, stored on a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, recording, or otherwise, without the express prior written consent of Ipswitch, Inc. The content of this document is furnished for informational use only, is subject to change without notice, and should not be construed as a commitment by Ipswitch, Inc. While every effort has been made to assure the accuracy of the information contained herein, Ipswitch, Inc. assumes no responsibility for errors or omissions. Ipswitch, Inc. also assumes no liability for damages resulting from the use of the information contained in this document. WS_FTP, the WS_FTP logos, Ipswitch, and the Ipswitch logo, MOVEit and the MOVEit logo, MessageWay and the MessageWay logo are trademarks of Ipswitch, Inc. Other products and their brands or company names, are or may be trademarks or registered trademarks, and are the property of their respective companies.
    [Show full text]
  • Symbols & Numbers A
    ruby_02.book Page 267 Thursday, May 10, 2007 4:12 PM INDEX Symbols & Numbers \ (backslash), in regular expression, for literal characters, 144 %Q for instantiating Strings, 23, \W, in regular expression, for 108–109, 215–216, 219, 239, whitespace, 66 245, 248–250 { } (braces) %w for instantiating Arrays, 47, for blocks, 28 113, 115 for declaring Hash, 42 & (ampersand), for expressing blocks {x}, in regular expression, 79 and Procs, 105–106 - method (Hash), 93 ! (exclamation point), for destructive ||= operator, 77–78, 127 methods, 20, 22–23 | (pipe) character, in regular || (or) operator, 17 expression, 56 # character + method of Integers and Strings, 3–4 for comments, 14 + (plus sign), in regular for instance method, 234 expression, 62 #{} for wrapping expression to be = (equal sign), for assigning value to interpolated, 23 variable, 9 #! (shebang), 47 == operator, for equality testing, 14 $ (dollar sign), for bash prompt, 19 =begin rdoc, 22 * (asterisk), in irb prompt, 8 =end, 22 ** (asterisk doubled), for “to the <=> method (Comparable), 145, power of,” 72 150–151 /\d+/ in regular expression, for digits <% and %> tags, 211 only, 79 <%= tag, for printing expression, 214 :needs_data Symbol key, 116 99bottles.rb script, 20–25 :nitems Symbol key, 116 :unless0th Symbol key, 116 ? (question mark) A in predicate method names, 22 actionpack, warnings related to, 226 in regular expression, for optional Active Record, Rails dependence expressions, 144 on, 227 @ sign, for instance variable, 21–22 Agile Web Development with Rails @@ sign, for class
    [Show full text]
  • Enterprise Integration with Ruby a Pragmatic Guide
    Enterprise Integration with Ruby A Pragmatic Guide Maik Schmidt The Pragmatic Bookshelf Raleigh, North Carolina Dallas, Texas P r a g m a t i c B o o k s h e l f Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and The Pragmatic Programmers, LLC was aware of a trademark claim, the designations have been printed in initial capital letters or in all capitals. The Pragmatic Starter Kit, The Pragmatic Programmer, Pragmatic Programming, Pragmatic Bookshelf and the linking g device are trademarks of The Pragmatic Programmers, LLC. Every precaution was taken in the preparation of this book. However, the publisher assumes no responsibility for errors or omissions, or for damages that may result from the use of information (including program listings) contained herein. Our Pragmatic courses, workshops, and other products can help you and your team create better software and have more fun. For more information, as well as the latest Pragmatic titles, please visit us at http://www.pragmaticprogrammer.com Copyright © 2006 The Pragmatic Programmers LLC. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmit- ted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Printed in the United States of America. ISBN 0-9766940-6-9 Printed on acid-free paper with 85% recycled, 30% post-consumer content. First printing, March 2006 Version: 2006-5-4 Für meine Eltern.
    [Show full text]