SaaS Book Errata
 Share
The version of the browser you are using is no longer supported. Please upgrade to a supported browser.Dismiss

 
View only
 
 
ABCDEFGIJKLMNOPQ
1
Timestamp Section Page # (print edition)Version (≥ 0.8.6)Location # (kindle edition)Original TextProposed ChangeReasonType of errorFixed in versionTimestamp
2
5/3/2014 4:04:0611.0.1403Prominent examples are Waterfall, Spiral, and the Rational unified process (RUP) lifecycles.Change URL link to "http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process"The link "Rational unified process" and link (RUP) lead to a nonexistent article on wikipedia.Bad URL1.1.18/3/2014 14:45:25
3
5/3/2014 4:06:3911.0.1403Prominent examples are Waterfall, Spiral, and the Rational unified process (RUP) lifecycles.Prominent examples are Waterfall, Spiral, and the Rational Unified Process (RUP) lifecycles.All "parts" of the RUP should begin with a capital letter.Spelling, grammar, orthographic error1.1.18/3/2014 14:45:25
4
5/3/2014 4:15:4811.0.1403In contrast, the Agile lifecycle relies on incrementally developed prototypes that involve continuous feedback from the customer on each iteration, each of which takes one or two weeks.In contrast, the Agile lifecycle relies on incrementally developed prototypes that involve continuous feedback from the customer on each iteration, each of which takes between one to four weeks.You can work with iterations longer than 2 weeks.Error of fact1.1.18/3/2014 14:45:25
5
5/3/2014 4:23:0711.0.1426Legacy code evolution is vital in the real world, yet often ignored in software engineering books and courses. Agile practices enhancing code each iteration, so the skills gained also apply to legacy code.Change the underlined word "Legacy" to also include "code"."Legacy code" should be one entity.Formatting problem1.1.18/3/2014 14:45:25
6
5/3/2014 4:24:5511.0.1426Legacy code evolution is vital in the real world, yet often ignored in software engineering books and courses. Agile practices enhancing code each iteration, so the skills gained also apply to legacy code.Change URL link to "http://en.wikipedia.org/wiki/Legacy_code".The link "Legacy" leads to a irrelevant article on wikipedia.Bad URL1.1.18/3/2014 14:45:25
7
4/9/2014 9:25:211.11.0.1575there should one representationthere should be one representationgrammatical errorSpelling, grammar, orthographic error1.1.18/3/2014 14:45:25
8
4/9/2014 9:29:521.11.0.1640Why is that companies like Amazon.com can build software that serve a much large customer base so much better?Why is it that companies like Amazon.com can build software that serves a much larger customer base so much better?grammatical errorSpelling, grammar, orthographic error1.1.18/3/2014 14:45:25
9
5/3/2014 4:45:481.11.0.1467Note that availability for ACA does not include time for “scheduled maintenance,” which Amazon does include (Zients 2013).Note that availability for ACA does not include time for “scheduled maintenance”, which Amazon does include (Zients 2013).Wrong position of comma.Spelling, grammar, orthographic errorwon't fix
10
5/3/2014 5:05:491.11.0.1467A "lonely period" after figure 1.1.Remove the unnecessary period.The period below figure 1.1 fulfills no purpose.Formatting problem1.1.18/3/2014 14:45:25
11
11/2/2013 12:11:211.130.10.21182Highly productive frameworks like Rails let you can understand this valuable technology by doing in a remarkably short time.Highly productive frameworks like Rails let you understand this valuable technology by doing in a remarkably short time.grammatical errorSpelling, grammar, orthographic error1.0.1
12
1/13/2014 14:52:541.130.10.21168Highly productive frameworks like Rails let you can understand...Highly productive frameworks like Rails let you understand...The word "can" is not necessary here.Spelling, grammar, orthographic error1.0.1
13
5/21/2014 18:15:411.130.10.11287We keep iterations short so that the customer seems the next version of the...We keep iterations short so that the customer sees the next version of the...Spelling error. Seems should be seesSpelling, grammar, orthographic error1.1.18/4/2014 15:41:14
14
5/3/2014 4:50:521.141.0.11396J. Zients. HealthCare.gov progress and performance report. Technical report, Health and Human Services, December 1, 2013. URL http://www.hhs.gov/digitalstrategy/sites/digitalstrategy/files/pdf/healthcare.gov-progress-report.pdf.Change URL link to "http://www.hhs.gov/digitalstrategy/sites/digitalstrategy/files/pdf/healthcare.gov-progress-report.pdf" (remove the period).The link "http://www.hhs.gov/digitalstrategy/sites/digitalstrategy/files/pdf/healthcare.gov-progress-report.pdf" leads to a nonexistent homepage.Bad URL1.1.18/4/2014 15:41:14
15
5/3/2014 5:02:091.141.0.11351E. Harrington. Hearing: Security flaws in Obamacare website endanger AmericansHealthCare.gov. Washington Free Beacon, 2013. URL http://freebeacon.com/hearing-security-flaws-in-obamacare-website-endanger-americans/.Change URL link to "http://freebeacon.com/issues/hearing-security-flaws-in-obamacare-website-endanger-americans/".The link "http://freebeacon.com/hearing-security-flaws-in-obamacare-website-endanger-americans/" leads to a nonexistent homepage.Bad URL1.1.18/4/2014 15:41:14
16
5/4/2014 4:21:031.141.0.11333J. Bidgood. Massachusetts appoints official and hires firm to fix exchange problems. New York Times, February 7, 2014. URL http://www.nytimes.com/ news/ affordable-care-act/.J. Bidgood. Massachusetts appoints official and hires firm to fix exchange problems. New York Times, February 7, 2014. URL http://www.nytimes.com/ news/affordable-care-act/.Remove space before "news/ "in URL-text.Spelling, grammar, orthographic error
17
5/4/2014 5:18:431.141.0.11339R. Charettte. Why software fails. IEEE Spectrum, 42(9): 42– 49, September 2005.Charette to Charette.The name is misspelled.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
18
5/4/2014 5:46:321.141.0.11318ACM IEEE-Computer Society Joint Task Force. Computer science curricula 2013, Ironman Draft (version 1.0). Technical report, February 2013. URL http: //ai.stanford.edu/users/sahami/CS2013/.Change URL-text to http://ai.stanford.edu/users/sahami/CS2013/Remove the space after "http:// "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
19
5/4/2014 5:48:561.141.0.11318L. A. Barroso and U. Hoelzle. The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines (Synthesis Lectures on Computer Architecture). Morgan and Claypool Publishers, 2009. ISBN 159829556X. URL http://www.morganclaypool.com/doi/ pdf/10.2200/S00193ED1V01Y200905CAC006.Change URL-text to http://www.morganclaypool.com/doi/pdf/10.2200/S00193ED1V01Y200905CAC006Remove the blankspace before "/ pdf/ "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
20
5/4/2014 5:51:161.141.0.11349M. Fowler. The New Methodology. martinfowler.com, 2005. URL http: //www.martinfowler.com/articles/newMethodology.html.Change URL-text to http://www.martinfowler.com/articles/newMethodology.htmlRemove the blankspace after "http: "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
21
5/4/2014 5:57:171.141.0.11349S. Horsley. Enrollment jumps at HealthCare.gov, though totals still lag. NPR.org, December 12, 2013. URL http://www.npr.org/blogs/health/2013/12/11/ 250023704/enrollment-jumps-at-healthcare-gov-though-totals-still-lag.Change URL-text to http://www.npr.org/blogs/health/2013/12/11/250023704/enrollment-jumps-at-healthcare-gov-though-totals-still-lagRemove the blankspace before "/ 250023704/ "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
22
5/4/2014 5:59:371.141.0.11382M. Swaine. Back to the future: Was Bill Gates a good programmer? What does Prolog have to do with the semantic web? And what did Kent Beck have for lunch? Dr. Dobb’s The World of Software Development, 2001. URL http: //www.drdobbs.com/back-to-the-future/184404733.Change URL-text to http://www.drdobbs.com/back-to-the-future/184404733Remove the blankspace after "http: "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
23
5/4/2014 6:01:151.141.0.11382A. Taylor. IT projects sink or swim. BCS Review, Jan. 2000. URL http: //archive.bcs.org/bulletin/jan00/article1.htm.Change URL-text to http://archive.bcs.org/bulletin/jan00/article1.htmRemove the blankspace after "http: "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
24
5/4/2014 6:02:431.141.0.11382F. Thorp. ‘Stress tests’ show HealthCare.gov was overloaded. NBC News, November 18, 2013. URL http://www.nbcnews.com/politics/politics-news/ stress-tests-show-healthcare-gov-was-overloaded-v21337298.Change URL-text to http://www.nbcnews.com/politics/politics-news/stress-tests-show-healthcare-gov-was-overloaded-v21337298Remove the blankspace before "/ stress-tests-show-healthcare-gov-was-overloaded-v21337298 "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
25
5/4/2014 6:04:561.141.0.11382J. Zients. HealthCare.gov progress and performance report. Technical report, Health and Human Services, December 1, 2013. URL http://www.hhs.gov/digitalstrategy/sites/digitalstrategy/ files/pdf/healthcare.gov-progress-report.pdf.Change URL-text to http://www.hhs.gov/digitalstrategy/sites/digitalstrategy/files/pdf/healthcare.gov-progress-report.pdf.Remove the blankspace before "/ files/ "in URL-text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
26
5/4/2014 4:34:161.21.0.1571Given the importance of software development, many variations of Plan-and-Document methodologies were proposed beyond these two. A recent one is called the Rational unified process (RUP) (Kruchten 2003),Change URL link to "http://en.wikipedia.org/wiki/IBM_Rational_Unified_Process"The link "Rational unified process" and link (RUP) lead to a nonexistent article on wikipedia.Bad URL1.1.18/3/2014 14:45:25
27
5/4/2014 4:35:271.21.0.1571Given the importance of software development, many variations of Plan-and-Document methodologies were proposed beyond these two. A recent one is called the Rational unified process (RUP) (Kruchten 2003),Given the importance of software development, many variations of Plan-and-Document methodologies were proposed beyond these two. A recent one is called the Rational Unified Process (RUP) (Kruchten 2003),All "parts" of the RUP should begin with a capital letter.Spelling, grammar, orthographic error1.1.18/3/2014 14:45:25
28
5/4/2014 5:17:001.31.0.1640One article even listed a “Software Wall of Shame” with dozens of highly-visible software projects that collectively were responsible for losses of $ 17B, with the majority of these projects abandoned (Charettte 2005).Change (Charettte 2005) to (Charette 2005).The name is misspelled.Spelling, grammar, orthographic error1.1.18/3/2014 14:45:25
29
4/17/2014 22:36:041.50.10.3850Common Language RuntimeC#, VB.NETIn the .NET framework the Common Language Runtime is the virtual machine that executes the Common Intermediate Language (CIL). CIL is generated from compiling .NET programming languages such as C#, or VB.NET.Error of fact1.1.18/4/2014 15:41:14
30
4/17/2014 22:46:431.50.10.3890based on the Microsoft CLR and ASP.NET instead of Ruby and Rails.
based on Microsoft's .NET Framework and ASP.NET instead of Ruby and Rails.In this context CLR stands for Common Language Runtime which is the virtual machine component of the .NET Framework that executes .NET code.Error of fact1.1.18/4/2014 15:41:14
31
5/4/2014 0:59:011.51.0.1832SaaS: Innovate or Die? Lest you think the perceived need to improve a successful service is just software engineering paranoia, the most popular search engine used to be Alta Vista and the most popular social networking site used to be MySpace.SaaS: Innovate or Die? Lest you think the perceived need to improve a successful service is just software engineering paranoia, the most popular search engine used to be AltaVista and the most popular social networking site used to be MySpace."Alta Vista" is one combined word, in other words "AltaVista".Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
32
5/4/2014 1:05:291.51.0.1849SaaS companies compete regularly on bringing out new features to help ensure that their customers do not abandon them for a competitor who offers a better service.
6.Since only developers have a copy of the software, they can upgrade the software and underlying hardware frequently as long as they don’t violate the external application program interfaces (API). Moreover, developers don’t need to annoy users with the seemingly endless requests for permission to upgrade their applications.
6.SaaS companies compete regularly on bringing out new features to help ensure that their customers do not abandon them for a competitor who offers a better service.
7.Since only developers have a copy of the software, they can upgrade the software and underlying hardware frequently as long as they don’t violate the external application program interfaces (API). Moreover, developers don’t need to annoy users with the seemingly endless requests for permission to upgrade their applications.
The sixth argument has no number.Formatting problem1.1.18/4/2014 15:41:14
33
2/28/2014 18:12:551.6Indexing 2/28page 14 print ed.The main approaches to verification and validation is testingThe main approach to verification and validation is testingSpelling, grammar, orthographic error1.0.1
34
4/19/2014 13:18:241.61.0.1927<<<<< HEAD As Internet datacenters grew, As Internet data centers grew,The "<<<< HEAD" is not needed and it seems to have remained after resolving a merge conflict earlier.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
35
5/4/2014 2:17:091.61.0.1933The result is called public cloud services or utility computing, which offers computing, storage, and communication at pennies per hour (see ( Armbrust et al. 2010).The result is called public cloud services or utility computing, which offers computing, storage, and communication at pennies per hour (Armbrust et al. 2010).Remove unnecessary parenthesis and text.Spelling, grammar, orthographic error1.1.18/4/2014 15:41:14
36
5/4/2014 2:46:471.81.0.11003For software , quality means both satisfying the customer’s needs— easy to use, gets correct answers, does not crash, and so on— and being easy for the developer to debug and enhance. Quality Assurance (QA) also comes from manufacturing, and refers to processes and standards that lead to manufacture of high-quality products and to the introduction of manufacturing processes that improve quality.Change "(QA)" URL link to "http://en.wikipedia.org/wiki/Quality_Assurance".The "(QA)" URL link is incorrect.Bad URL1.1.18/4/2014 15:41:14
37
1/13/2014 14:32:221.90.10.2937The an estimated annual cost...The estimated annual cost...The word "an" makes no sense in this sentence.Spelling, grammar, orthographic error1.0.1
38
5/4/2014 3:46:241.91.0.11113A core value of computer engineers is finding ways to replace tedious manual tasks with tools to save time, improve accuracy, or both.A core value of computer engineering is finding ways to replace tedious manual tasks with tools to save time, improve accuracy, or both.

engineers => engineering
grammatical errorSpelling, grammar, orthographic error1.1.18/4/2014 15:41:14
39
8/8/2014 15:28:172.11.1.01477Screencast 2.1.1 shows using the rottenpotatoes app pre-installed on the VM, however it is not on the latest VMensure screencast and VM are in sync - maybe use https://github.com/saasbook/rails-introconfusing for people trying to follow screencast if RP not on VMOther
40
5/19/2014 12:46:193.81.0.12905The idea of making iteration a first-class language feature first appeared in the CLU language invented by Barbara Liskov.Add URL (http://en.wikipedia.org/wiki/CLU_(programming_language)) link to 'CLU'.CLU language missing URL.Other1.1.18/10/2014 22:54:10
41
2/19/2014 19:11:494.10.10.2Kindle Locations 3082-3085call MagazinesController#buy params[]: {:vol=>3, :num=>5, :newuser=>’true’, :discount=>’2’
call MagazinesController#buy params[]: {:vol=>3, :num=>5, :newuser=>’true’, :discount=>’2’}In the book it's in row 4 and column 2 of Figure 4.2
The final curly brace is missing
Error in code example1.1.18/10/2014 22:54:10
42
5/20/2014 3:43:094.11.0.1 apr 4, 20143234Be sure to place both Gemfile and Gemfile.lock under version control! Appendix A explains the basics if you haven’t done this before.

Fox, Armando; Patterson, David (2014-01-03). Engineering Software as a Service: An Agile Approach Using Cloud Computing (Kindle Locations 3244-3245). Strawberry Canyon LLC. Kindle Edition.
Link under <Appendix A> does go to the start of Appendix A, but that is an article about Using the Bookware, and shows an bio about Frances Allen. I think you want to point to the git section in A5.obviousBad URL1.1.18/10/2014 22:54:10
43
2/16/2014 15:33:414.110.10.23882PeepCode publishes high-quality screencasts covering almost every tool and technique in the Rails ecosystem for a very reasonable price (in the authors’ opinion). The two-part Meet Rails 3 screencast is a particularly good complement to the information in this chapter.Pluralsight publishes high-quality screencasts covering almost every tool and technique in the Rails ecosystem for a very reasonable price (in the authors’ opinion). The two-part Meet Rails 3 screencast is a particularly good complement to the information in this chapter.Peepcode has been acquired by Pluralsight and has been merged into their website.
Bad URL1.1.18/11/2014 18:05:01
44
2/16/2014 15:46:404.120.10.23897Project 4.1. Modify the app’s routes so that visiting http://localhost:3000 takes you to the list of movies, rather than the generic Rails welcome page. (Hint: consult the ActionDispatch::Routing documentation.)
Project 4.1 is completed by following the instructions in the chapter. Line 3 in code snippet at location 3044 is where this is implemented.Other1.1.18/11/2014 18:05:01
45
2/19/2014 19:18:004.30.10.2Kindle Location 3172 1 class Movie < ActiveRecord::Base
 2    end
 1 class Movie < ActiveRecord::Base
 2 end
end shouldn't be indented (BTW, pastebin example is correct)Error in code example1.0.1
46
10/22/2013 13:22:054.60.10.2[figure 4.11, line 9]: Movie.all_ratings['G','PG','PG-13','R','NC-17']Movie.all_ratings isn't defined/introduced in the text until sec 5.1 fig 5.3. The accompanying screencast has working code w/ the list expanded in place.Error in code example1.0.1
47
10/24/2013 21:15:494.60.10.23574In figure 4.11:

9   = select :movie, :rating, Movie.all_ratings
9   = select :movie, :rating, ['G', 'PG', 'PG-13', 'R', 'NC-17']Calling Movie.all_ratings raises a NameError exception - uninitialized constant ActionView::CompiledTemplates::Movies.

It appears to be a simple violation of the intended timeline for code construction. Movie.all_ratings doesn't appear to be defined until after this point, at location 4008 figure 5.3.

The screencast referenced in 4.6.1 includes code as shown in the proposed change, using an array instead of calling the as-yet undefined method.

I observed this as I worked through chapter 4; as such, I may have missed some preceding instructions, and I have not read beyond this location except to search for where the method might be defined. I did, however, test the proposed code and it works.
Error in code example1.0.1
48
2/16/2014 14:46:314.80.10.23738http://pastebin.com/EhB98ctc
http://pastebin.com/EhB98ctc

%h2 Edit Movie

= form_tag movie_path(@movie), :method => :put do

= label :movie, :title, 'Title'
= text_field :movie, 'title'

= label :movie, :rating, 'Rating'
= select :movie, :rating, Movie.all_ratings

= label :movie, :release_date, 'Released On'
= date_select :movie, :release_date

= submit_tag 'Save Changes'
The figure 4.14 code sample is missing.Other1.1.18/11/2014 18:05:01
49
11/16/2013 4:51:545.10.10.24009 class Movie < ActiveRecord::Base
def self.all_ratings ; %w[G PG PG-13 R NC-17] ; end # shortcut: array of strings
validates :title, :presence => true
validates :release_date, :presence => true
validate :released_1930_or_later # uses custom validator below
validates :rating, :inclusion => {:in => Movie.all_ratings},
:unless => :grandfathered?
def released_1930_or_later
errors.add(:release_date, 'must be 1930 or later') if
self.release_date < Date.parse('1 Jan 1930')
end
@@grandfathered_date = Date.parse('1 Nov 1968')
# ----------------------------------------------------------------------------------------------------------------------------------------
def grandfathered? ; self.release_date >= @@grandfathered_date ; end
# ----------------------------------------------------------------------------------------------------------------------------------------
end
# try in console:
m = Movie.new(:title => '', :rating => 'RG', :release_date => '1929-01-01')
# force validation checks to be performed:
m.valid? # => false
m.errors[:title] # => ["can't be blank"]
m.errors[:rating] # => ["is not included in the list"]
m.errors[:release_date] # => ["must be 1930 or later"]
m.errors.full_messages # => ["Title can't be blank", "Rating is not
included in the list", "Release date must be 1930 or later"]

def grandfathered? ; self.release_date < @@grandfathered_date ; endWe should not validate the rating of the movie if it was released before 1 Nov 1968. Current code does opposite, it will validate rating if movie was release before 1 Nov 1968 and it will ignore rating if movie was release after 1 Nov 1968.
i.e.
2.0.0-p247 :028 > new_mov = Movie.new(:title => 'Fake', :rating => 'Z', :release_date => '1990-01-01')
2.0.0-p247 :029 > new_mov.valid?
=> true
2.0.0-p247 :028 > old_mov = Movie.new(:title => 'Fake', :rating => 'Z', :release_date => '1950-01-01')
2.0.0-p247 :029 > old_mov.valid?
=> false
Error in code example1.1.18/12/2014 20:41:23
50
5/15/2014 11:53:445.11.0.14342this Rails Guide http://guides.rubyonrails.org/active_record_validations_callbacks.htmlthis Rails Guide http://guides.rubyonrails.org/v3.2.13/active_record_validations_callbacks.htmlcorrect urlBad URL1.1.18/12/2014 20:41:23
51
6/11/2014 15:56:375.114254can be replaced with the single line render :partial=> 'movie', :collection=>@moviescan be replaced with the single line = render :partial=>'movie', :collection=>@moviesThe = in front of render was necessary to have the render command interpretedError in code example1.1.18/12/2014 20:41:23
52
6/15/2014 3:23:545.20.10.1#login
- if @current_user
%p.welcome Welcome, #{@current_user.name}!
= link_to 'Log Out', logout_path
- else
%p.login= link_to 'Log in with your Twitter account', login_path
#login
- if @current_user
%p.welcome Welcome, #{@current_user.name}!
= link_to 'Log Out', logout_path
- else
%p.login= link_to 'Log in with your Twitter account', /auth/twitter
Hi. The example in this section seems to be wrong. At least, it does not work for me. After reading Omniauth docs, the most obvious problem is that in order to be redirected to Twitter login page, the 'login with Twitter' link should point to '/auth/twitter'. There must not exists a route to this path in routes.rb, nor a method in the sessions controller. It is automagically managed by Rack, the middleware between rails and the http server. There must be more errors, but I can't look for them at this moment.

Best regards.

Best regards
Error in code example1.1.18/26/2014 2:17:41
53
12/15/2013 8:55:096.20.10.24882mad, mad world'.slice(3,4)==", mad"mad, mad world'.slice(3,8)==", mad"The second param of slice is the position (up to, but not including) where to end the extraction.Error in code example1.1.18/26/2014 23:36:06
54
12/16/2013 12:29:036.20.10.24837’mad’.replace(/(\w)$/,’$1$1er’)==”madder”’mad’.replace(/(\w)$/,’$1$2$3er’)==”madder”Example as provided results in "mmer"...?Error in code examplenot correct8/26/2014 23:36:06
55
6/17/2014 12:00:296.41.0.15446Figure 6.7the last row (h1, table,a) should be under div, not under h1.
In fact the a should be removed
Other
56
2/26/2014 8:52:486.50.10.2Figure 6.10 is showing up in the middle of the preceding enumerated list.Formatting problem1.1.18/26/2014 23:36:06
57
9/11/2013 11:52:236.50.10.15227if (! /^G|PG$/i.test(rating) {if (! /^G|PG$/i.test(rating)) {missing closing parenthesis on if statementError in code example1.1.18/26/2014 23:36:06
58
9/11/2013 13:50:086.50.10.15227var rating = this.find('td:nth-child(2)').text();
if (! /^G|PG$/i.test(rating) {
this.hide();
var rating = $(this).find('td:nth-child(2)').text();
if (! /^G|PG$/i.test(rating) {
$(this).hide();
Need to put 'this' inside $() to call findError in code example1.1.18/26/2014 23:36:06
59
4/7/2014 9:13:216.61.0.1Screencast 6.6.1: Interactively single-stepping through AJAX.
http://vimeo.com/47064979
AJAX debugging requires a combination of a JavaScript debugger such as Firebug and a
server-side debugger such as ruby-debug, which you met in Chapter 4. Be aware that
Firefox’s “Information” views (such as we used in Screencast 2.3.2 work by modifying
the DOM itself to show the popups and tooltips, so if you’re “testing things out” using the
JavaScript console, you may get unexpected results if these features are active. Note: The
JavaScript code in the screencast uses the name RP rather than MoviePopup to name the
global variable that stores the JavaScript functions related to this example, but other than that
difference, the code is the same.
Screencast 6.6.1: Interactively single-stepping through AJAX.
http://vimeo.com/47064979
AJAX debugging requires a combination of a JavaScript debugger such as Firebug and a
server-side debugger such you met in Chapter 4. Be aware that
Firefox’s “Information” views (such as we used in Screencast 2.3.2 work by modifying
the DOM itself to show the popups and tooltips, so if you’re “testing things out” using the
JavaScript console, you may get unexpected results if these features are active. Note: The
JavaScript code in the screencast uses the name RP rather than MoviePopup to name the
global variable that stores the JavaScript functions related to this example, but other than that
difference, the code is the same.
debugger not ruby-debugOther1.1.18/26/2014 23:36:06
60
12/12/2013 1:54:006.70.10.25787setFixtures(sandbox({class: myTestClass}));setFixtures(sandbox({class: 'myTestClass'}));myTestClass is not found as a CSS class if you do not quote it.Error in code example1.1.18/26/2014 23:36:06
61
8/28/2014 0:48:166.71.1.06133spyOn().andCallFakespyOn().and.callFake()adjust figure 6.23 to use new Jasmine 2.0 syntaxOther
62
12/12/2013 2:09:096.80.10.25886 $('#movieInfo').
css({'left': oneFourth, 'width': 2*oneFourth, 'top': 250}).
append($('<p>' + jsonData.description + '</p>'),
$('<a id="closeLink" href="#"></a>')).
show();
$('#movieInfo p').remove();
$('#movieInfo a').remove();
$('#movieInfo').
css({'left': oneFourth, 'width': 2*oneFourth, 'top': 250}).
append($('<p>' + jsonData.description + '</p>'),
$(' <a id="closeLink" href="#">Close</a>')).
show();
The "closeLink" link was not displayed.

When you click several times on the "More Info" link, then content of the popup was added rather then replaced. The content of the piopup needs to be cleared each time.
Error in code example1.1.18/26/2014 23:36:06
63
2/26/2014 11:55:037.70.10.2in New England when the seasons change, typein New England when the seasons change, type cucumber features/AddMovie.featurebad formattingFormatting problem?
64
6/16/2014 2:02:397.7Book version 1.0.16931group :test, :development do ... group :test do ...



Please modify group to suppress warning
See here : http://stackoverflow.com/questions/9781456/cucumber-rails-required-outside-of-env-rb-the-rest-of-loading-is-being-defered

Or add an explanation to tell readers why development environment is added or a short introduction about the various environments.
Other1.1.18/28/2014 1:00:37
65
6/16/2014 2:09:127.7Book version 1.0.16955It fails because there is no path in paths.rb that matches “the RottenPotatoes home page”, as the Cucumber error message explains. The message even suggests how to fix the failure by adding such a path to paths.rb.
Add a link to pasteBin for the suggested modificationThe first line of the file to be modified (features/support/paths.rb) is YOU SHOULD DELETE THIS FILE
It's confusing and deserves an explanation before we modify it as suggested in the book
Other1.1.18/28/2014 1:00:37
66
6/16/2014 2:14:257.8Book version 1.0.17117on what is being done— yet in this poorly -written scenario, only line 18 mentions the behavior of interest!on what is being done— yet in this poorly -written scenario, only lines 18 and 19 mentions the behavior of interest!
Both lines 18 and 19 are of interestOther1.1.18/28/2014 1:00:37
67
6/16/2014 2:16:247.8Book version 1.0.17118http://en.wikipedia.org/wiki/Domain-specific_languagehttp://en.wikipedia.org/wiki/Domain-specific_Language
Bad URL1.1.18/28/2014 1:00:37
68
6/7/2014 5:38:578.21.0.07660gem 'rspec-rails'gem 'rspec-rails', "2.14" (or some version < 3.0)This isn't a real fix or a real error - the issue is that RSpec came out with a new version on June 2, 2014 which breaks the book examples. Using the older version got me through Section 8.2 at least.Error in code example1.1.18/29/2014 0:48:34
69
6/15/2014 6:13:318.41st Edition7862the object a returned by the response methodthe object returned by the response methodit reads better (don't have to do a double take to check if you read it right)Spelling, grammar, orthographic error1.1.18/29/2014 0:48:34
70
8/27/2014 3:49:559.61.0.19176if (d >= 366)if (d >= 365)
# advance year
else
break
end
See this discussion: http://edx-cs169-1x.stackexchange.com/q/2699/973Error in code example
71
11/2/2013 8:57:2810.10.10.29136The days of the hero programmer our now past.The days of the hero programmer are now past.grammatical error. current sentence doesn't make sense.Spelling, grammar, orthographic error1.0.1
72
2/26/2014 3:23:2110.20.10.2-index\index{Observer pattern!pair programming}\index{Observer!pair programming}The Observer design pattern is not mentioned in Ch10, I think this may be an error in indexing.Other
73
12/13/2013 23:28:4712.40.10.210923 Moviegoer.all.each do |m|
m.update_attributes(:first => $1, :last => $2) if
m.name =~ /^(.*)\s+(.*)$/
end
Moviegoer.all.each do |m|
m.update_attributes(:first_name => $1, :last_name => $2) if
m.name =~ /^(.*)\s+(.*)$/
end
For consistency of the model with the column names in the DB.Error in code example
74
1/13/2014 14:36:051.9 & 90.10.2945 & 8306Plan-and-DevelopmentPlan-and-DocumentAlthough it's clear that both terms refer to the same, the term "Plan-and-Document" is used throughout the book but those two times it changes to Plan-and-DevelopmentSpelling, grammar, orthographic error
75
2/20/2014 11:51:016.0 (sidebar)0.10.2\w[Backus-Naur_Form]{Backus-Naur form} (named for Turing award
winner Jim Backus and his colleague Peter Naur).
\w[Backus-Naur_Form]{Backus-Naur form} (named for Turing award
winner John Backus and his colleague Peter Naur).
The Turing Award winner's name is John, not Jim.Error of fact
76
3/7/2014 13:42:247.?screen castI went thru the screen cast: http://vimeo.com/34754747
And I had to make a change to the scenario from: http://pastebin.com/CSCVp9M3 to get all my tests to pass -- I had to remove the dash from PG-13
Other
77
5/3/2014 1:08:03A.41.0.112484Heres a collection of links to tutorials and screencasts that cover this popular editorHeres a collection of links to tutorials and screencasts that cover this popular editorNo need to change the wording. The link "collection of links" leads to a 404 article not found page.Bad URL1.1.18/5/2014 13:45:59
78
5/13/2014 9:14:33A.41.0.112484collection of linkshttp://code.tutsplus.com/articles/25-vim-tutorials-screencasts-and-resources--net-14631The current link is deadBad URL1.1.18/5/2014 13:45:59
79
5/3/2014 1:57:01A.61.0.1125873. Follow only steps 4 and 5 of Github's instructions for adding your public key...Change URL from "https://help.github.com/articles/set-up-git" to "https://help.github.com/articles/generating-ssh-keys#step-3-add-your-ssh-key-to-github"The URL link is incorrectBad URL1.1.18/5/2014 13:45:59
80
5/3/2014 2:18:23A.61.0.1126001 git remote add origin git@github.com:myusername/myreponame.git
2 git push origin master
3
1 git remote add origin git@github.com:myusername/myreponame.git
2 git push origin master
Unnecessary rowFormatting problem1.1.18/5/2014 13:45:59
81
5/3/2014 2:19:40A.61.0.1126111 git remote add origin https://github.com/myusername/myreponame.git
2
1 git remote add origin https://github.com/myusername/myreponame.gitUnnecessary rowFormatting problem1.1.18/5/2014 13:45:59
82
5/3/2014 2:23:08A.61.0.1125871 git config --global user.name 'Andy Yao'
2 git config --global user.email 'yao@acm.org'
3
1 git config --global user.name 'Andy Yao'
2 git config --global user.email 'yao@acm.org'
Unnecessary rowFormatting problem1.1.18/5/2014 13:45:59
83
11/6/2013 2:13:41all0.10.2452n/aIt shows all numbered content using three numbers, and does not have any info on the first two. This happens across the entire book (on the Kindle Cloud Reader). Also, this does not happen on the iPhone version of the Kindle app.

1.
1.
1. Since customers ...

2.
2.
2. The data associated ...
Looks like an error in formatting and rendering on the Kindle Cloud reader.Formatting problem
84
3/3/2014 9:12:45Figure 4.80.10.2N/AIn the print edition, any pastebin URLs that contain upper case o's and zeroes are misleading. For example, in Figure 4.8: http://pastebin.com/0RU47cUy. When manually typing this into my browser, I couldn't tell if it began with an upper case O or a zero.I see two ways of fixing it:
- re-generate the pastbin URLs to avoid O's & 0's
- update the font to make the differences between 0's and O's clearer (such as a slash in zeroes).
Bad URL
85
3/21/2014 10:07:02Heroku Appendix 7, p 4531.0.0http://pastebin.com/ZHRRVA2z

# in config/environments/production.rb:
# BEFORE - what 'rails new' generates for production.rb (l.18):
config.assets.compile = false
# AFTER - this is what you should change it to:
config.assets.compile = true
walkthrough of ch4, in Heroku Appendix, compile assets information may not be needed, should be in sync with asset precomilation issue addressed https://github.com/saasbook/hw/pull/16asset precomile may make the appendix change about asset compilation unneccesaryOther1.1.18/5/2014 13:45:59
86
7/15/2014 17:29:03History of this Book1.1.0338 of 12930We've ended up writing some sections each other's chapters, so it's a little more mixed than we expected.We've ended up writing some sections of each other's chapters, so it's a little more mixed than we expected.GrammarSpelling, grammar, orthographic error1.1.18/2/2014 14:50:41
87
2/19/2014 18:46:37Preface0.10.2Kindle Locations 204-205The first half explains of Software as a Service (SaaS), which is revolutionizing the software industry.

The first half explains Software as a Service (SaaS), which is revolutionizing the software industryThe word 'of' doesn't belongSpelling, grammar, orthographic error1.0.1
88
5/3/2014 3:05:22Preface1.0.1233...developers proposed the The Agile Manifesto in 2001...Change URL link to "http://en.wikipedia.org/wiki/Agile_Manifesto#The_Agile_Manifesto", alternatively "http://agilemanifesto.org/"The link "The Agile Manifesto" leads to a nonexistent article on wikipedia.Bad URL1.1.18/2/2014 14:50:41
89
5/3/2014 3:31:09Preface1.0.1285...free Massive Online Open Course (MOOC), now available at saas-class.org...

Thus, you can take an online course free while reading this book. To learn more, see saas-class.org.
Either remove the nonexistent URLs or change them to something relevant.The links "saas-class.org" leads to a nonexistent homepage.Bad URL1.1.18/2/2014 14:50:41
90
5/3/2014 3:38:24Preface1.0.1317Instructor Support
--------------------------

Go to saas-class.org to learn...
Either remove the nonexistent URL or change it to something relevant.The link "saas-class.org" leads to a nonexistent homepage.Bad URL1.1.18/2/2014 14:50:41
91
5/3/2014 3:48:17Preface1.0.1332The next step was to offer the Beta version of the textbook in the Fall semester 2012, which was used other colleges and universities in addition to Berkeley in Fall 2012 and Spring 2013.The next step was to offer the Beta version of the textbook in the Fall semester 2012, which was used by other colleges and universities in addition to Berkeley in Fall 2012 and Spring 2013.Missing the preposition "by" in sentence.Spelling, grammar, orthographic error1.1.18/2/2014 14:50:41
92
6/7/2014 7:11:57Table of ContentsLatestWhen clicking upper left button that pops up the table of content menu on an ipad and then clicking on chapter 6 or 8 for example, these links take us to the wrong section of the book. The change I am proposing is to fix this problem.Have to binary search chaptersFormatting problemdon't support
93
8/29/2014 1:30:578.31.1.17873@movies = Movie.find_in_tmdb(params[:search_terms])Movie.find_in_tmdb(params[:search_terms])Setting @movies here is doing more than is necessary to pass the test. @movies should be assigned after the test for it is writtenOther
94
8/29/2014 1:32:318.31.1.17811fake_results = [mock('movie1'), mock('movie2')]fake_results = [double('movie1'), double('movie2')]even in rspec 2.14 it appears that mock is deprecated in favour of double:

"DEPRECATION: mock is deprecated. Use double instead"
Other
95
8/29/2014 2:44:468.61.1.18169This spec fails for the right reason, that is, because we
haven't added code to find_in_tmdb to check for an exception in the gem.
This spec currently fails because we haven't defined the Movie::InvalidKeyError. If we define that, then the test fails for the right reason, that is, because we
haven't added code to find_in_tmdb to check for an exception in the gem.
the description failing for the right reason here seems incorrect when we are failing due to an uninitialized constantOther
96
8/29/2014 5:35:318.60.10.18127Should add the process of getting the cucumber tests to pass once the rspec unit tests have all gone green, and show the working app with data from the tmdb remote service displayed in a web pagethis is the critical closing of the acceptance test unit test loop. In the absence of explicitly showing the jump back from TDD to BDD the reader is potentially left confused about what specifically happens once all the unit tests have gone green. Also, showing the tmdb functionality working in the actual app as well as all unit and acceptance tests green is an important lightbulb moment that justifies all the various efforts undertaken with code over the previous chapter on BDD and this chapter on TDD --> I guess this is left to project 8.3 at the end of the chapter - which is not unreasonable, but we might want to highlight that at the end of section 8.6 for those readers that don't look through the projects - at the very least we should point out the next step in the cycleOther
97
9/10/2014 10:28:259.51.1.1Figure 9.10 found in Section 9.5 of text. Graph is incorrectsee https://dl.dropboxusercontent.com/u/13196858/cyclomaticCorrected.pdf.gif and
https://dl.dropboxusercontent.com/u/13196858/cyclomaticCorrections.pdf.gif
Rose Williams indicated that this was a problemOther
98
10/16/2014 5:38:488.3First Edition, 1.1.17836Movie.should_receive(:find_in_tmdb).with('hardware').
and_return(fake_results)
For me this rspec test was failing - the error was saying that "find_in_tmdb" was not present. This was true, there was no such method in Moview, however, it was assumed (as stated in the description for the test code) that rspec would create a stub method. Adding an empty method to class Movie would have been incorrect as it would have violated the Independent principle of the test.
I could overcome the error by disabling the partial doubles verification, by adding this piece of code to my *_spec.rb file (not sure if this is 100% correct solution):
RSpec.configure do |config|
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = false
end
end
Error in code example
99
10/28/2014 14:42:18Saas Framework: Advanced Rails1.1.14477Graphic of SSO using Twitter as the example. Showing a Twitter bird icon that uses Iconfactory's Twiterrific icon and logotype.Graphic of SSO using Twitter as the example. Showing a Twitter bird icon that uses Twitter's _actual_ icon and logotype. Iconfactory was the first to use a bird graphic for Twitter and their icon, Ollie, has been used repeatedly and countlessly across the web without permission.

Please contact Iconfactory for use of their icon before using it.

Please see: http://twitterrific.com/mac
and also: http://furbo.org/2011/03/11/twitterrific-firsts/
and also: http://iconfactory.com/software/twitterrific_history
Error of fact
100
11/5/2014 12:09:521.11.1.1510All involved with such services are proud to be associated with them, unlike the ACA.All involved with such services are proud to be associated with them, unlike the ACA website. This and a number of subsequent references to the ACA website just uses "ACA" as shorthand for the site. Taken out of context this can be misleading. Recommend changing all such references to "ACA website".Other
Loading...
Main menu