Lecture 1 Introduction

Total Page:16

File Type:pdf, Size:1020Kb

Lecture 1 Introduction Lecture 1 Introduction 1 / 57 What is this course about? Ruby language web development using Ruby on Rails database design, API usage and integration, complex front-end design (UI/UX) popular software architecture patterns how the web works: internet's client-server model version control (Git) amongst other topics 2 / 57 What does this do? 3.times do print 'Hello, world!' end 3 / 57 Why Ruby? Optimized for programmer happiness Used for Ruby on Rails Very popular web framework 4 / 57 Course Policies 5 / 57 Prerequisites Currently taking CIS 120 or have already taken it (or instructor permission) Basic HTML/CSS knowledge Codecademy Mozilla Developer Network W3Schools Good to know: tag, basic syntax, important tags e.g. <h1> Let us know if you do not have the prerequisites or have any other concerns 6 / 57 CIS 196 Course Structure Lecture Topics: 3 weeks on Ruby programming language 6 weeks on Ruby on Rails web framework 3 weeks on miscellaneous topics 9 homework assignments 1 final project For more details, read the course syllabus 7 / 57 CIS 19x Course Schedule 3 shared lectures during semester 1/23: Command Line 1/30: git/github 2/6: HTML/CSS basics 8 / 57 Grading 70% - Homework 25% - Final Project 5% - In-class polls 9 / 57 Homework Due on Wednesdays at noon through GitHub Classroom 2 free late days to use on any assignment After, 20% will be deducted for each day late We give you all our automated tests Unlimited submissions Your latest submission will be used for grading 10 / 57 Homework Grading Correctness (15 pts) Full credit if you pass all our automated tests on Travis CI Style (5 pts) Full credit if you have no Rubocop offenses Best Practices (5 pts) TAs will manually grade your code to ensure the Ruby Way 11 / 57 Final Project Must be a web app built using Ruby on Rails Must be an idea approved by either of us ahead of time Milestones included to keep you on track Demo to both instructors during Reading Days. Project is due the day of the demo 12 / 57 In-class Participation We'll use Poll Everywhere during class Polls will be scattered throughout lecture You will receive 5% of your grade based on completing polls 13 / 57 Poll Everywhere Get started by going to https://pollev.com/cis196776 When asked to provide a screen name, make it your preferred first name followed by your last name 14 / 57 Academic Integrity Don't copy/paste others' code Don't have mid-level discussions High-Level Discussion What is Rails used for? Mid-Level Discussion How did you do Homework 1? Low-Level Discussion What is the syntax for iterators? 15 / 57 Tentative Oce Hours Weekday Time TA Monday 5-7pm Sanjana Monday 7-9pm Desmond Tuesday 7:30-9:30pm Zhilei Wednesday 7-9pm Zena Thursday 8-10pm Edward Sunday 8-9pm Zena Office hour locations will be announced soon. 16 / 57 Piazza sign up Piazza sign up 17 / 57 Course Websites CIS 196 Website - All relevant course info Piazza sign up - All course discussions & communication GitHub - HW repos and submission Travis CI - Results of tests run on submission Note that we will be using travis-ci.com Canvas - Viewing grades 18 / 57 Ruby 19 / 57 What you'll need Text editor (Sublime Text is probably easiest) Command Line If you use Windows, you must use a Linux VM or dual boot Linux We have provided a VM here with Ruby and Rails pre-installed Ruby 20 / 57 Installing Ruby Use the Ruby Version Manager (RVM) to manage and install Ruby versions Use this even if you plan on just using one version In this class, we will be using version 2.5.1 Make sure you download the correct version 21 / 57 Resources Use the Ruby Docs whenever you get stuck Make sure you're looking at the correct version (2.5.1) This class will follow this style guide 10 points of your homework grade come from style and best practices 5 of which come from Rubocop which is our style checker 22 / 57 History of Ruby Ruby was designed in the 90s by a Japenese programmer, Yukihiro "Matz" Matsumoto Influenced by Perl, Ada and other scripting languages (Matz's favorite languages) Achieved mass acceptance in mid-2000's Much of Ruby's success and growth can be attributed to Rails Read about Matz's inspiration for Ruby here 23 / 57 Running Ruby Use a REPL (Read-Execute-Print-Loop) with the irb command in terminal Allows you to write and execute Ruby code from the Command Line This is great for testing Get out of the REPL by entering quit Execute .rb files with the ruby command: ruby file.rb 24 / 57 Types in Ruby Ruby is strongly typed Every object has a fixed type Ruby is dynamically typed Variables do not need to be initialized Compare to Java which is statically typed Almost everything in Ruby is an object 25 / 57 Printing in Ruby You can print a value with three different commands: print, puts, and p print outputs the value and returns nil puts outputs the value with a newline and returns nil p both outputs and returns the value I'll use p in my examples since it formats output better I will denote output with #=> p 'hello world' #=> "hello world" 26 / 57 Numerics There are several types of numbers in Ruby Unlike Java, numbers are also objects in Ruby The main ones you'll be using are instances of the Integer and Float classes This is helpful to know when looking at the Ruby Docs If you see anything about FixNum or BigNum, note that they were deprecated in Ruby 2.4 27 / 57 Local Variables Since Ruby is dynamically typed, you don't need to declare types (like int, String, etc.) Local variables are assigned to bare words foo = 100 p foo #=> 100 28 / 57 Strings Strings can be denoted with either single or double quotes They can be concatenated together with + and appended with << hello = 'Hello' world = 'world!' foo = hello + ', ' + world p foo #=> "Hello, world!" p hello #=> "Hello" hello << '!' p hello #=> "Hello!" Note that concatenation did not change the variable, but appending did 29 / 57 Escaped Characters only work in Double Quotes print 'hello\nworld' #=> hello\nworld print "hello\nworld" #=> hello world 30 / 57 Only Double Quotes support String Interpolation When inserting variables into strings, string interpolation is preferred Put local variable betwen the curly braces in #{} This calls to_s on the variable foo = 5 p "Hello, #{foo}!" #=> "Hello, 5!" # Compare to: p 'Hello, ' + foo.to_s + '!' #=> "Hello, 5!" 31 / 57 When to use Single Quotes vs. Double Quotes Use double quotes if: You're using escaped characters or string interpolation You want to include single quotes in the string In all other cases, use single quotes It makes for more readable code 32 / 57 Symbols Denoted with a colon in front They are immutable For example, you cannot do :a << :b because that would change :a They are unique The equal? method checks for referential equality 'hi'.equal? 'hi' #=> false :hi.equal? :hi #=> true 33 / 57 Boolean States All Ruby objects have boolean states of either true or false In fact, the only two objects in Ruby that are false are nil and false itself nil is an object that represents nothingness Kind of like Java's null 34 / 57 If Statements Conditionals can be used for control flow and to return different values based on the condition Use the elsif keyword for more branching foo = if true 1 elsif false 2 else 3 end p foo #=> 1 35 / 57 Unless Statements Evaluated when the condition is false Equivalent to if not Note that you should never have an unless statement followed by an else Instead, use an if ... else flow unless false p 'hello' end #=> "hello" 36 / 57 Conditional Modiers if and unless can be placed at the end of the line This helps code read more like English These are prefered for one liners p 'hello' if true #=> "hello" p 'bye' unless false #=> "bye" 37 / 57 Ternary Operator When using one line if-else statements, favor the ternary operator p true ? 'hello' : 'goodbye' #=> "hello" p false ? 'hello' : 'goodbye' #=> "goodbye" 38 / 57 Methods Method signature in the form of def method_name(arg1, arg2, ...) followed by end keyword In method calls, parentheses around arguments can be omitted if unambiguous Our Style Guide has a lot to say about methods & parentheses def hi 'hello, there' end def hello(name) puts "hello, #{name}" end puts hi #=> "hello, there" hello('Matz') #=> "hello, Matz" hello 'DHH' #=> "hello, DHH" 39 / 57 Implicit Returns Methods in Ruby always return exactly one thing They will return the return value from the last executed expression This means that you do not have to explicitly type return x at the end of the method Only use the return keyword when you want to exit a method early 40 / 57 Guard Clauses Instead of wrapping an entire method in a conditional, use a guard clause to exit early # bad # good def foo(bar) def foo(bar) if bar return unless bar p 'hello' p 'hello' p 'goodbye' p 'goodbye' end end end 41 / 57 Method Names While not strictly enforced, Ruby has certain conventions with naming methods Methods are written in snake_case If a method ends in: ?, it should return a boolean (e.g. Array#empty?) =, it should write to a variable (e.g. writer methods) !, it should perform an operation inplace on the object it's being called on (e.g.
Recommended publications
  • Github Essentials.Pdf
    [ 1 ] GitHub Essentials Unleash the power of collaborative workflow development using GitHub, one step at a time Achilleas Pipinellis BIRMINGHAM - MUMBAI GitHub Essentials Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: September 2015 Production reference: 1280915 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78355-371-6 www.packtpub.com Credits Author Copy Editor Achilleas Pipinellis Trishya Hajare Reviewer Project Coordinator Umesh Ram Sharma Shweta H Birwatkar Commissioning Editor Proofreader Dipika Gaonkar Safis Editng Acquisition Editor Indexer Nikhil Karkal Hemangini Bari Content Development Editor Production Coordinator Sumeet Sawant Nitesh Thakur Technical Editor Cover Work Saurabh Malhotra Nitesh Thakur About the Author Achilleas Pipinellis is an open source enthusiast and tries to get involved in as many projects as possible.
    [Show full text]
  • Reglas De Congo: Palo Monte Mayombe) a Book by Lydia Cabrera an English Translation from the Spanish
    THE KONGO RULE: THE PALO MONTE MAYOMBE WISDOM SOCIETY (REGLAS DE CONGO: PALO MONTE MAYOMBE) A BOOK BY LYDIA CABRERA AN ENGLISH TRANSLATION FROM THE SPANISH Donato Fhunsu A dissertation submitted to the faculty of the University of North Carolina at Chapel Hill in partial fulfillment of the requirements for the degree of Doctor of Philosophy in the Department of English and Comparative Literature (Comparative Literature). Chapel Hill 2016 Approved by: Inger S. B. Brodey Todd Ramón Ochoa Marsha S. Collins Tanya L. Shields Madeline G. Levine © 2016 Donato Fhunsu ALL RIGHTS RESERVED ii ABSTRACT Donato Fhunsu: The Kongo Rule: The Palo Monte Mayombe Wisdom Society (Reglas de Congo: Palo Monte Mayombe) A Book by Lydia Cabrera An English Translation from the Spanish (Under the direction of Inger S. B. Brodey and Todd Ramón Ochoa) This dissertation is a critical analysis and annotated translation, from Spanish into English, of the book Reglas de Congo: Palo Monte Mayombe, by the Cuban anthropologist, artist, and writer Lydia Cabrera (1899-1991). Cabrera’s text is a hybrid ethnographic book of religion, slave narratives (oral history), and folklore (songs, poetry) that she devoted to a group of Afro-Cubans known as “los Congos de Cuba,” descendants of the Africans who were brought to the Caribbean island of Cuba during the trans-Atlantic Ocean African slave trade from the former Kongo Kingdom, which occupied the present-day southwestern part of Congo-Kinshasa, Congo-Brazzaville, Cabinda, and northern Angola. The Kongo Kingdom had formal contact with Christianity through the Kingdom of Portugal as early as the 1490s.
    [Show full text]
  • Seisio: a Fast, Efficient Geophysical Data Architecture for the Julia
    1 SeisIO: a fast, efficient geophysical data architecture for 2 the Julia language 1∗ 2 2 2 3 Joshua P. Jones , Kurama Okubo , Tim Clements , and Marine A. Denolle 1 4 4509 NE Sumner St., Portland, OR, USA 2 5 Department of Earth and Planetary Sciences, Harvard University, MA, USA ∗ 6 Corresponding author: Joshua P. Jones ([email protected]) 1 7 Abstract 8 SeisIO for the Julia language is a new geophysical data framework that combines the intuitive 9 syntax of a high-level language with performance comparable to FORTRAN or C. Benchmark 10 comparisons with recent versions of popular programs for seismic data download and analysis 11 demonstrate significant improvements in file read speed and orders-of-magnitude improvements 12 in memory overhead. Because the Julia language natively supports parallel computing with an 13 intuitive syntax, we benchmark test parallel download and processing of multi-week segments of 14 contiguous data from two sets of 10 broadband seismic stations, and find that SeisIO outperforms 15 two popular Python-based tools for data downloads. The current capabilities of SeisIO include file 16 read support for several geophysical data formats, online data access using FDSN web services, 17 IRIS web services, and SeisComP SeedLink, with optimized versions of several common data 18 processing operations. Tutorial notebooks and extensive documentation are available to improve 19 the user experience (UX). As an accessible example of performant scientific computing for the 20 next generation of researchers, SeisIO offers ease of use and rapid learning without sacrificing 21 computational performance. 2 22 1 Introduction 23 The dramatic growth in the volume of collected geophysical data has the potential to lead to 24 tremendous advances in the science (https://ds.iris.edu/data/distribution/).
    [Show full text]
  • Empirical Study of Restarted and Flaky Builds on Travis CI
    Empirical Study of Restarted and Flaky Builds on Travis CI Thomas Durieux Claire Le Goues INESC-ID and IST, University of Lisbon, Portugal Carnegie Mellon University [email protected] [email protected] Michael Hilton Rui Abreu Carnegie Mellon University INESC-ID and IST, University of Lisbon, Portugal [email protected] [email protected] ABSTRACT Continuous integration is an automatic process that typically Continuous Integration (CI) is a development practice where devel- executes the test suite, may further analyze code quality using static opers frequently integrate code into a common codebase. After the analyzers, and can automatically deploy new software versions. code is integrated, the CI server runs a test suite and other tools to It is generally triggered for each new software change, or at a produce a set of reports (e.g., the output of linters and tests). If the regular interval, such as daily. When a CI build fails, the developer is result of a CI test run is unexpected, developers have the option notified, and they typically debug the failing build. Once the reason to manually restart the build, re-running the same test suite on for failure is identified, the developer can address the problem, the same code; this can reveal build flakiness, if the restarted build generally by modifying or revoking the code changes that triggered outcome differs from the original build. the CI process in the first place. In this study, we analyze restarted builds, flaky builds, and their However, there are situations in which the CI outcome is unex- impact on the development workflow.
    [Show full text]
  • Avaliação De Performance De Interpretadores Ruby
    Universidade Federal de Santa Catarina Centro Tecnológico Curso de Sistemas de Informação Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Florianópolis 2010 Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Monograa apresentada ao Curso de Sistemas de Informação da UFSC, como requisito para a obten- ção parcial do grau de BACHAREL em Sistemas de Informação. Orientador: Lúcia Helena Martins Pacheco Doutora em Engenharia Florianópolis 2010 Almeida, Wilson Avaliação de Performance de Interpretadores Ruby / Wilson Al- meida - 2010 xx.p 1.Performance 2. Interpretadores.. I.Título. CDU 536.21 Wilson de Almeida Avaliação de Performance de Interpretadores Ruby Monograa apresentada ao Curso de Sistemas de Informação da UFSC, como requisito para a obten- ção parcial do grau de BACHAREL em Sistemas de Informação. Aprovado em 21 de junho de 2010 BANCA EXAMINADORA Lúcia Helena Martins Pacheco Doutora em Engenharia José Eduardo De Lucca Mestre em Ciências da Computação Eduardo Bellani Bacharel em Sistemas de Informação Aos meus pais e meu irmão. Aos familiares e amigos, em especial pra mi- nha eterna amiga Liliana, que está torcendo por mim de onde ela estiver. Agradecimentos Agradeço ao meu amigo, colega de curso, parceiro de trabalhos e orientador Eduardo Bellani, pelo encorajamento, apoio e seus ricos conselhos sobre o melhor direci- onamento deste trabalho. A professora Lúcia Helena Martins Pacheco pela orientação, amizade, e pela paciência, sem a qual este trabalho não se realizaria. Ao professor José Eduardo Delucca, por seus conselhos objetivos e pontuais. Todos os meus amigos que incentivaram e compreenderam a minha ausência nesse período de corrida atrás do objetivo de concluir o curso.
    [Show full text]
  • Michael Johann Mjohann@Rails­Experts.Com
    Steinfurt, Germany Michael Johann mjohann@rails­experts.com http://www.rails­experts.com I am interested in new projects where various modern technologies are combined to build great innovative products. My view is from the full stack developer to architecture and engineering aspects. I am also passionate about being a CTO if the company is trusting my technical experience. I've supported the most known industry standards before thy became mainstream. I've founded JavaSPEKTRUM print magazine in 1996 and RailsWayMagazine (print) in 2009 and have been editor in chief for both magazines. In 2008 I wrote a german book about "JRuby on Rails for Java Enterprise Developers). As a regular speaker at conferences in Europe/USA, I always spread the news about new technologies and how they apply to projects. As a person with multiple interests I combine using technical aspects in development with writing and speaking at conferences. I've been an evangelist for Java and Rails. Technical Skills Like: ruby, on, rails, ios, android, java, jee, html5, css3, javascript, mongodb, torquebox, ansible, docker, rspec, cucumber Dislike: php, typo3, cobol Experience Chief Full Stack Developer – Smaps GmbH December 2013 ­ Current ruby­on­rails­4.1, objective­c, mongodb, android Responsible for product development of backend, frontend and mobile clients Backend consists of MongoDB Frontend is HTML5 with Bootstrap, JQuery, GoogleMaps API iOS Client native with RestKit API communication Android native (Java) Interims CTO – Eco Novum GmbH 2012 ­ November 2013 ios, mongodb, jrubyonrails, html5, css3, javascript, chef, git, jira, json Responsible for all architectural and technological aspects of the products (several mobile payment solutions).
    [Show full text]
  • Theine2 Documentation Release Latest
    theine2 Documentation Release latest Dec 06, 2019 Contents 1 Installing 3 2 Upgrading 5 3 Using 7 4 Configuration 9 4.1 base_port and max_port.........................................9 4.2 min_free_workers............................................9 4.3 spawn_parallel..............................................9 4.4 silent................................................... 10 5 Speed up Theine 11 5.1 Tell Theine to use CRuby for the client................................. 11 6 Using with Foreman 13 7 Using with Docker 15 8 How it works 17 i ii theine2 Documentation, Release latest Theine is a Rails application pre-loader designed to work on JRuby. It is similar to Zeus, Spring and Spork. The problem with Zeus and Spring is that they use fork which doesn’t work on JRuby. An example: time rails runner"puts Rails.env" 48.31s user 1.96s system 242% cpu 20.748 total # normal time theine runner"puts Rails.env" 0.12s user 0.02s system 32% cpu 0.449 total # Theine Contents 1 theine2 Documentation, Release latest 2 Contents CHAPTER 1 Installing You need to install screen on your system. For example on Ubuntu: sudo apt-get install screen Then install the gem. gem install theine2 3 theine2 Documentation, Release latest 4 Chapter 1. Installing CHAPTER 2 Upgrading If you want to use CRuby for the client, you will probably need to re-run theine_set_ruby after upgrading. 5 theine2 Documentation, Release latest 6 Chapter 2. Upgrading CHAPTER 3 Using Start up the theine server in the root of your Rails project: theine_server or theine_start for a detached
    [Show full text]
  • Usage, Costs, and Benefits of Continuous Integration in Open
    Usage, Costs, and Benefits of Continuous Integration in Open-Source Projects Michael Hilton Timothy Tunnell Kai Huang Oregon State University University of Illinois at University of Illinois at [email protected] Urbana-Champaign Urbana-Champaign [email protected] [email protected] Darko Marinov Danny Dig University of Illinois at Oregon State University Urbana-Champaign [email protected] [email protected] ABSTRACT CI using several quality metrics. However, the study does Continuous integration (CI) systems automate the compi- not present any detailed information about the use of CI. lation, building, and testing of software. Despite CI rising In fact, despite some folkloric evidence about the use of CI, as a big success story in automated software engineering, it there is no systematic study about CI systems. has received almost no attention from the research commu- Not only do we lack basic knowledge about the extent nity. For example, how widely is CI used in practice, and to which open-source projects are adopting CI, but also what are some costs and benefits associated with CI? With- we have no answers to many other important questions re- out answering such questions, developers, tool builders, and lated to CI. What are the costs of CI? Does CI deliver researchers make decisions based on folklore instead of data. on the promised benefits, such as releasing more often, or In this paper, we use three complementary methods to helping make changes (e.g., to merge pull requests) faster? study in-depth the usage of CI in open-source projects. To Are developers maximizing the usage of CI? Despite the understand what CI systems developers use, we analyzed widespread popularity of CI, we have very little quantita- 34,544 open-source projects from GitHub.
    [Show full text]
  • Download the 2021 IEEE Thesaurus
    2021 IEEE Thesaurus Version 1.0 Created by The Institute of Electrical and Electronics Engineers (IEEE) 2021 IEEE Thesaurus The IEEE Thesaurus is a controlled The IEEE Thesaurus also provides a vocabulary of almost 10,900 descriptive conceptual map through the use of engineering, technical and scientific terms, semantic relationships such as broader as well as IEEE-specific society terms terms (BT), narrower terms (NT), 'used for' [referred to as “descriptors” or “preferred relationships (USE/UF), and related terms terms”] .* Each descriptor included in the (RT). These semantic relationships identify thesaurus represents a single concept or theoretical connections between terms. unit of thought. The descriptors are Italic text denotes Non-preferred terms. considered the preferred terms for use in Bold text is used for preferred headings. describing IEEE content. The scope of descriptors is based on the material presented in IEEE journals, conference Abbreviations used in the Thesaurus: papers, standards, and/or IEEE organizational material. A controlled BT - Broader term vocabulary is a specific terminology used in NT - Narrower term a consistent and controlled fashion that RT - Related term results in better information searching and USE- Use preferred term retrieval. UF - Used for Thesaurus construction is based on the ANSI/NISO Z39.19-2005(2010) standard, Guidelines for the Construction, Format, and Management of Monolingual Controlled Vocabulary. The Thesaurus vocabulary uses American-based spellings with cross references to British variant spellings. The scope and structure of the IEEE Thesaurus reflects the engineering and scientific disciplines that comprise the Societies, Councils, and Communities of the IEEE in *Refer to ANSI/NISO NISO Z39.19-2005 addition to the technologies IEEE serves.
    [Show full text]
  • Ruby on Rails™ Tutorial: Learn Web Developments with Rails
    ptg8286261 www.it-ebooks.info Praise for Michael Hartl’s Books and Videos on Ruby on RailsTM ‘‘My former company (CD Baby) was one of the first to loudly switch to Ruby on ptg8286261 Rails, and then even more loudly switch back to PHP (Google me to read about the drama). This book by Michael Hartl came so highly recommended that I had to try it, and the Ruby on RailsTM Tutorial is what I used to switch back to Rails again.’’ —From the Foreword by Derek Sivers (sivers.org) Formerly: Founder, CD Baby Currently: Founder, Thoughts Ltd. ‘‘Michael Hartl’s Rails Tutorial book is the #1 (and only, in my opinion) place to start when it comes to books about learning Rails. It’s an amazing piece of work and, unusually, walks you through building a Rails app from start to finish with testing. If you want to read just one book and feel like a Rails master by the end of it, pick the Ruby on RailsTM Tutorial.’’ —Peter Cooper Editor, Ruby Inside www.it-ebooks.info ‘‘Grounded in the real world.’’ —I Programmer (www.i-programmer.info), by Ian Elliot ‘‘The book gives you the theory and practice, while the videos focus on showing you in person how its done. Highly recommended combo.’’ —Antonio Cangiano, Software Engineer, IBM ‘‘The author is clearly an expert at the Ruby language and the Rails framework, but more than that, he is a working software engineer who introduces best practices throughout the text.’’ —Greg Charles, Senior Software Developer, Fairway Technologies ‘‘Overall, these video tutorials should be a great resource for anyone new to Rails.’’ —Michael Morin, ruby.about.com ‘‘Hands-down, I would recommend this book to anyone wanting to get into Ruby on Rails development.’’ —Michael Crump, Microsoft MVP ptg8286261 www.it-ebooks.info RUBY ON RAILSTM TUTORIAL Second Edition ptg8286261 www.it-ebooks.info Visit informit.com/ruby for a complete list of available products.
    [Show full text]
  • Deploying with Jruby Is the Definitive Text on Getting Jruby Applications up and Running
    Early Praise for Deploying JRuby Deploying with JRuby is the definitive text on getting JRuby applications up and running. Joe has pulled together a great collection of deployment knowledge, and the JRuby story is much stronger as a result. ➤ Charles Oliver Nutter JRuby Core team member and coauthor, Using JRuby Deploying with JRuby answers all of the most frequently asked questions regarding real-world use of JRuby that I have seen, including many we were not able to answer in Using JRuby. Whether you’re coming to JRuby from Ruby or Java, Joe fills in all the gaps you’ll need to deploy JRuby with confidence. ➤ Nick Sieger JRuby Core team member and coauthor, Using JRuby This book is an excellent guide to navigating the various JRuby deployment op- tions. Joe is fair in his assessment of these technologies and describes a clear path for getting your Ruby application up and running on the JVM. ➤ Bob McWhirter TorqueBox team lead at Red Hat Essential reading to learn not only how to deploy web applications on JRuby but also why. ➤ David Calavera Creator of Trinidad Deploying with JRuby is a must-read for anyone interested in production JRuby deployments. The book walks through the major deployment strategies by providing easy-to-follow examples that help the reader take full advantage of the JRuby servers while avoiding the common pitfalls of migrating an application to JRuby. ➤ Ben Browning TorqueBox developer at Red Hat Deploying with JRuby is an invaluable resource for anyone planning on using JRuby for web-based development. For those who have never used JRuby, Joe clearly presents its many advantages and few disadvantages in comparison to MRI.
    [Show full text]
  • High Availability Framework for Mix-Cloud Secure Applications
    PETR BELYAEV HIGH AVAILABILITY FRAMEWORK FOR MIX-CLOUD SE- CURE APPLICATIONS Master of Science thesis Examiners: Prof. Jose Luis Martinez Lastra, Dr. Andrei Lobov Examiners and topic approved by the Faculty Council of the Faculty of Automation and Science Engineering on 6th April 2016 i ABSTRACT PETR BELYAEV: High Availability Framework for Mix-Cloud Secure Applications Tampere University of Technology Master of Science thesis, 53 pages, 6 Appendix pages November 2016 Master's Degree Programme in Automation Technology Major: Factory Automation and Industrial Informatics Examiners: Prof. Jose Luis Martinez Lastra, Dr. Andrei Lobov Keywords: High Availability, clustering, cloud Having one of the services, such as web applications, databases or telephony systems, unavailable because of a single server failure is very annoying, yet very common issue, especially if the service is deployed on-premises. The simplest way to address it is to introduce redundancy to the system. But in this case the amount of physical machines needed will raise, while their eciency will drop as most of the services do not use 100% of machine's capabilities. The better way to solve the service availability issue is to logically separate the service from the underlying hardware, balancing the load between instances and migrating them between the physical machines in case of failure. This way is much more eective, but it also contains a number of challenges, such as conguration diculty and inter-service request routing. The High Availability (HA) framework discussed in this thesis was designed to miti- gate those issues. The key goal solved by the HA framework is raising the scalability and reliability of the service while keeping the conguration as simple as possible.
    [Show full text]