By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
19 | 6 | TYPO | In the ajax_populate_list(container) function: graphicNovelsTemplate(list) should be: graphic_novels_template(list) This causes Dart Editor to error, anyway. | 2012-08-10 | Yikes. I wasn't following my own coding conventions in the first chapter :( \n \nThe camel-case version is the one that follows the conventions. Fixed in multiple places. |
55 | ERROR | The description of privacy (around page 55) is wrong. It states that super or sub-classes don’t have access to private variables. | 2012-08-12 | Thanks for explanation. It seemed like an arbitrary rule when I first ran into it. This seems much more reasonable. \n \nStill, since subclasses can very well get refactored into separate libraries, I think I would still recommend to never attempt to access subclass / superclass private instance variables -- even in the same library. Sounds like a recipe for hard to track down bugs in the future. \n | |
13 | ERROR | 3.3 Booleans In the 3 ternary expressions, like in: the first parts are assignments, but they should be comparisons,like: The greeting = name ? version gives an exception: Unhandled exception: | 2013-01-22 | This still (more or less) works for me--at least on try.dartlang.org: http://try.dartlang.org/s/kYRJ \n \nI also tried it in Dartium, where it still works as well. \n \nWhere are you seeing this? | |
15,16 | SUGGEST | 3.5 Lists: The statements: and the equivalent every and filter statement muppets.some( (muppet) => muppet.startsWith(‘C’) ); // true | 2013-01-28 | Agree 100%, but I don't introduce the compact function form until chapter 3. Since this is in chapter 2, I am reluctant to push too much at people. \n \nI'll talk this over with my editor, though. It really is much nicer. \n \n--- \nI think we'll stick with it as-is. It is not *that* horrible and it keeps the narrative a little simpler to introduce the hash-rocket in the next chapter. \n \nStill agree 100% that it's much nicer :) | |
17 | ERROR | 3.6 Dates gives an | 2012-08-10 | Interesting. This works in try.dartlang.org (http://try.dartlang.org/s/LRdJ), but in the VM I'm seeing the same failure. It seems as though the VM parser does not like the timezone. \n \nI'll update the text with a non-timezone example. Thanks! | |
22 | ERROR | fib_printer(i) { fib_printer(i) { | 2012-08-10 | Right you are - thanks! | |
66 | ERROR | 8.7 Constructors - Factory constructors The code: does not work; it gives the following exception: Unhandled exception: | 2013-01-22 | Interesting. It works in try.dartlang.org: http://try.dartlang.org/s/5yJJ \n \n \nThis also works for me in recent build of Dartium. I do not get any errors and am able to build factories. | |
87 | ERROR | 10.3 Core Dart libraries The following does not compile It should of course be: | 2012-08-12 | ||
83 | ERROR | 10.1 # Source | 2012-08-12 | ||
85 | ERROR | In the text the + method is used in various places to concatenate strings; this is no longer valid and should be replaced with string interpolations. These are some of the occurrences: | 2012-08-12 | Yup. I've grepped through the code and I *think* I have all of these (including the one that you identified here). | |
86 | TYPO | i) instead of Chrome you should mention the Dart VM ii) in the list of libraries, dom is still mentioned | 2012-08-12 | Good catch, thanks! | |
14 | ERROR | Map’s hasKey method does not exist, should be containsKey method, on page 14 and page 15. eg: | 2012-12-01 | Agreed. Fixed in source. | |
21 | ERROR | fib(3) // => 3 | 2012-12-01 | Good catch, thanks. Fixed in source. | |
16 | ERROR | “The Set class is a List …” should be “The Set class is a Collection …”. “The Queue is a List that can be manipulated at the beginning.” should be “The Queue is a Collection that can be manipulated at both ends.” | 2012-12-01 | Agreed. Fixed in source. | |
28 | ERROR | document. should be document. | 2012-12-01 | Agreed. I would prefer `each`, but they are sticking with `forEach` to retain similarity with JS. Fixed in source. | |
29 | SUGGEST | For create new element, Dart now support create the element directly. eg: new DivElement() | 2012-12-01 | Good point. I added a mention in source. | |
30 | ERROR | NodeList implement List. So document. should be document. | 2012-12-01 | Agreed. Fixed in source. | |
31 | SUGGEST | Dart has supported method cascade. So if api doesn’t return this, it also can chainable call. document. document. can write this: document. | 2013-01-22 | ||
32 | SUGGEST | In note paragraph, dart:htmlimpl library has removed from sdk. | 2012-12-01 | Removed the sidebar entirely from source. | |
45 | SUGGEST | Dart’s new getter syntax should remove the braces. This should revise all the getter method. | 2013-01-22 | ||
35 | SUGGEST | For “Currently, there are no command-line switches that alter the behavior”, currently dart2js has -o/-c/-h command-line options. | 2012-12-03 | Yup, fixed in source. | |
65 | ERROR | For the Note paragraph, Dart now support initialization expression at the field declared. for example: class ComicsModel { see the article “Simplify your constructors and top-level variables” on news.dartlang.org | 2013-01-22 | ||
66 | ERROR | For the Important paragraph, about the call superclass’s constructor. From the Dart language tour: By default, a constructor in a subclass will call the superclass’s default constructor. If no default (zero-argument) constructor is defined in the superclass, you must manually call a constructor in the superclass. So, in here, because ComicBook’s supercalss ComicsModel does not define a zero-argument default constructor, so ComicBook must manually call super constructor. | 2013-01-22 | ||
101 | ERROR | For test chapter. two import method: 2)In addition, dartest has removed from Dart. So DARTest and run test in browser does not work. 3)asyncTest is deprecated, it should be replaced by expectAsyncX. 4)The Expect class in dart:core is deprecated, and expect() should be used instead. eg, expect(2 + 2, equals(5)); | 2013-01-22 | ||
122 | ERROR | localStorage is now implement Map, and getItem/setItem method does not exist. eg: var json = window.localStorage.getItem(‘Comic Books’) should be var json = window.localStorage[‘Comic Books’] And window.localStorage.setItem should be window.localStorage[‘Comic Books’] = JSON.stringify(comics); | 2012-12-02 | Good catch. Fixed in source. | |
125 | ERROR | if (comic_book[‘title’] 'Sandmn') {
comic_book['title'] ‘Sandman’; should be if (comic_book[‘title’] == ‘Sandmn’) { the second == should be = | 2012-12-01 | D'oh! Fixed in source. | |
127 | TYPO | String message = “$method: ${model.url}”; | 2012-12-01 | Agreed. Fixed in source. | |
128 | SUGGEST | CanvasRenderingContext or CanvasRenderingContext2D ? I suggest use : | 2012-12-02 | Yah, it should be the 2D version. The superclass version has none of the methods used in the example code, so the Dart analyzer / compile checks would fail. Fixed in source. | |
122 | ERROR | oneDay = new Duration(1) should be oneDay = new Duration(days:1) Because Dart now use new named optional parameters syntax({}) and Duration now use this style, the parameter I also suggest add an introduction for named optional params and positional optional params on chapter 3.3 | 2012-12-02 | Agreed. Fixed in source. Added a note-to-self to update 3.3. | |
46 | ERROR | In the Hipster Collections section 6.2 you define the collection with the two stream controllers _onLoad and _onAdd and the models list and then go on to say that you declared only two instance variables “on” and “models”. This disconnect is repeated a few times throughout the chapter. | 2014-05-01 | Tsk. That was part of the conversion from Dart pre-1.0 to 1.0/1.1. I really thought I had caught all of those, but I do seem to have missed some in this chapter. Thanks for the catch -- will fix shortly.... \n \nMaybe not “shortly,” but this is fixed in source. Chapter 6 has been mostly rewritten to avoid this trouble. | |
91 | TYPO | The first sentence has the last 2 words transposed. It reads: “JavaScript has been around for years eighteen.” | 2014-01-27 | ||
95 | TYPO | Section 10.4 Packaging with “pub”, second sentence states: “As we saw in Chapter 12, Testing Dart, on page 111, it is capable of resolving and installing dependencies”. We haven’t yet seen that chapter, and I’m not quite sure what “Testing Dart” has to do with resolving and installing dependencies. | 2014-01-27 | Dang. Hazards of working with the book in parts, I suppose. The testing chapter installed stuff via pub, including resolving some dependencies. Had it come first in the book, that would have made more sense. \n \nBut really, there is no need for the cross-reference, so I've simply removed it. Thanks! | |
39 | TYPO | Hello! I found issue in the code on Github first, but now I found it in the book. Please, check my PR for fixes github[dot]com/eee-c/dart-comics/pull/4. Short description: JS can’t use Dart interpolation and script starts working before document body is loaded trying to append to document.body which is null. Thanks! | 2014-01-27 | ||
84 | SUGGEST | Need to be consistent with IterableBase and Collection. See forums.pragprog.com/forums/254/topics/12488. | 2014-06-04 | I have fixed this in the source, but am leaning open for the time being to double-check that IterableBase is sufficiently explained. | |
19 | ERROR | Starting here, but throughout the rest of the book, query() should probably be replaced with querySelector() (see groups.google.com/a/dartlang.org/forum/#!msg/misc/dJnz6DbyPbs/eDe5BwAm140J) | 2014-05-13 | Added a note in the book that query is not really deprecated. For more info see: http://japhr.blogspot.com/2014/05/query-is-not-deprecated-in-dart.html | |
47 | ERROR | The discussion under DOM Ready confused me a little because I just used dart2js to make some JavaScript and through it in a normal script tag. When you do that, the rules change. I realize you recommend using the loader script, but even then the recommendation is to put the script tags at the end to avoid these issues (see www.dartlang.org/articles/embedding-in-html/). Perhaps this is a gotcha worth mentioning? | 2014-06-09 | I really didn't want to do this previously, but your suggestion spurred a nicer transition into the next chapter (Compiling to JavaScript). \n \nSo, much thanks! \n | |
59 | ERROR | The first two paragraphs after the first code example, that begin, “We cheat in our implementation of the forEach() method…” don’t seem to have anything to do with the code shown. | 2014-06-02 | Yup, that's either old text referring to new code or new text referring to old code. Either way it's a mess. But fixed now. | |
63 | ERROR | The lead up to the save() code talks about how the code needs to POST on create, but PUT on update. Then the method hardcodes a POST. Oops. | 2014-06-02 | Wow. Good catch. I must have read this section a dozen times and never noticed that... | |
64 | ERROR | The event description at the top of this page doesn’t match the actual code (on the previous page). | 2014-06-02 | Yup, this is fixed in book source now. | |
78 | ERROR | The text above the first code example and the actual code disagree about which interface is implemented. | 2014-06-04 | ||
93 | ERROR | The `extends IterableBase`/`implements Collection` confusion is back on this page. | 2014-06-04 | ||
94 | TYPO | This paragraph doesn’t make sense: “Back in the HipsterCollection superclass, we declare modelMaker() as abstract (by omitting the method body). create() to use this method.” | 2014-06-04 | Yikes! Something when wrong back in p3.0 and no one caught it until this :-\\ \n \nFixed in source. | |
115 | TYPO | I think this sentence is in need of a verb, “It is worth pointing out that, because of how Dart manages libraries, setting HipsterSync.sync in our main.dart file, like so:” | 2014-06-04 | Bah. I tried stretching a sentence across multiple code examples. I stopped doing that now. \n \nFixed in source. | |
130 | ERROR | I think the second code block should use handleException() instead of catchError(). (If not, the text above is wrong.) | 2014-06-06 | The text above was wrong. It should be catchError: https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart-async.Future#id_catchError \n \nI grep'd through the rest of the text / code and all handleException references are now gone. | |
57 | SUGGEST | Need to remove event mentions from chapter 7. They are no longer used in chapter 6. | 2014-06-05 |