Beyond Java by Bruce A. Tate This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated February 27, 2006. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: (4) First paragraph under Boiling Frogs; Boiling Frogs: The antecdote about boiling frogs isn't true. I like the metaphor, but we should clarify that it's a fable, or an urban myth. Change "You've doubtlessly heard that if..." to "You've doubtlessly heard the fable that if..." {17} Last paragraph, 5th sentence; "The code touches memory one byte beyond the from block." should be: "The code touches memory one byte before the to block." {19} 2nd paragraph, 3rd sentence; "And it can never hold a string longer than six characters." should be: "And it can never hold a string longer than five characters." (59) line 6-7; Said another way, strong typing can be dynamic or weak => shoud read as Said another way, strong typing can be dynamic or static (60) 1st paragraph; "In general, though, the dynamic programmers that I interviewed said static typing simply mauls productivity." should be: "In general, though, the dynamic language programmers that I interviewed said static typing simply mauls productivity." {61} 6th line from the bottom; Incorrect. 100 will not cause an overflow. Change "if you need 100 iterations,..." to "if you need too many iterations, ..." (98) Under Looping; Change Many of Ruby's libraries... to Many of Ruby's libraries have methods that... {109} 2nd Paragraph last sentence; "That may seem strange until you include the module in the Calculator class that we made before:" Should say "That may seem strange until you include the module in the Person class that we made before:" (113) Fourth paragraph; "The difference dependency..." should be: "The difference between dependency..." [127] 2/3 of the way down; The use of Trails and Trail as a model is inconsistent. I want to clean that up now that I have better understanding. 1) On page 127, Strike the second code generation in the example that says" ruby script/generate model trails 2) Still page 127, near the bottom, make :trails singular. Strike the s on the end of trails. The example should be: class TrailsController < ApplicationController scaffold :trail end 3) At the top of page 127, change :trails to :trail. Should say: The first parameter is :trail, ... Now, we're going to do the same with locations. 4) Middle of page 128, change the scaffolding in the third text paragraph to be script/generate scaffold location locations. The sentence should say: ..., complete with scaffolding with ruby script/generate scaffold location locations. 5) Change the scaffolding line in trails also, to be script/generate scaffold trail trails. New sentence should be: ..., do the same for Trail with ruby script/generate scaffold trail trails. 6) Bottom of page 128. Change the class names to be singular. Change the class names in the last programming example on the page to singulars: class Trail < ActiveRecord::Base belongs_to :location end class Location < ActiveRecord::Base has_many :trails end 7) Before the sentence "You also need to tell Rails about... add the sentence "If you have any trails in your database, delete them, or add a valid location_id." [127] Last paragraph, 1st sentence; "Point your browser to the URL http://localhost:3000/trail." should be: "Point your browser to the URL http://localhost:3000/trails." (130) Code of edit.rhtml; should be: - trial_id should be trail_id - @recipe.id should be @trail.id {145} 5th Bullet Point; This refers to lines of code that don't exist in the code sample on the previous page. There are only 13 LOC in the example, but the bullet refers to lines 14 and 15. It Should be 11 and 13 not 13 and 15. {152} Fourth paragraph, immediately after age example; Incorrect wording. Change Then, it sends the ifFalse: method to the (age > 16) expression. The first code block is a parameter for ifFalse, and gets called if the expression evaluates to false. to This bit of code sends the binary ifFalse: ifTrue: message to the boolean returned by the expression (age > 16). Both ifFalse: and ifTrue: take a code block as a parameter. (170) Last paragraph; "It's not likely that the CLR will ever run as well on other platforms as it does on say, Linux." should be: "It's not likely that the CLR will ever run as well on other platforms as it does on Windows." (174) Next to last paragraph; "Gossling" should be "Gosling"