By Developers, For Developers
| PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
|---|---|---|---|---|---|
| 53 | TYPO | {:excoveralls, “~> 0.7.4”, only [:test] runtime: false}, missing : after only | 2017-11-21 | ||
| xii | TYPO | “In some teams, the folks that write the code are the same ones that deploy and support it in productions.” Change “productions” to “production”. | 2017-11-21 | ||
| 44 | ERROR | “… Expected typespec: | 2017-11-21 | ||
| 41 | TYPO | … Missing closed quotation mark | 2017-11-21 | ||
| 50 | TYPO | … ## Examples Duplicated example | 2017-11-21 | ||
| 19 | 4 | TYPO | The grammar is somewhat off in: “After seeing early success with Elixir, specifically in creating an incredibly scalable chat feature and seeing Ruby engineers pick up the language, we felt both were worthwhile risks to take on and decided moved forward with the acquisition. ” | 2017-11-21 | |
| 20 | 5 | TYPO | perspective changed in single sentence (they, our): “icanmakeitbetter didn’t stop working on the Elixir migration, but the focus was divided across some features they needed to build to stay competitive and maintain our growth” | 2017-11-21 | |
| 33 | 19 | TYPO | Missing space in beginning of second paragraph: “Imagine this.You’ve ” | 2017-11-21 | |
| 40 | 26 | TYPO | space before full stop " so let’s cover two topics . Since we’re Elixir" | 2017-11-21 | |
| 57 | 43 | TYPO | 2nd paragraph. Fonts are off. mix credo –ignore moduledoc should be monospaced and the following sentence should be in normal typeface again. | 2017-11-21 | |
| 62 | 48 | TYPO | This sentence is somewhat off.. “Dialyzer does require an explicit step to run and the cryptic errors so it an acquired taste, but if you tend to like the safety types can provide, typespecs with Dialyxer may provide just enough support for you.” | 2017-11-21 | |
| 73 | 84 | TYPO | Missing word in “you only care that knows how to split(”/“).” | 2017-11-21 | |
| 84 | 95 | SUGGEST | The supervision example uses direct specification of the spec, that is, it uses worker(PathAllocator, []) instead of {PathAllocator, []} or simply PathAllocator together with a child_spec method within PathAllocator. | 2017-11-21 | We are targeting earlier Elixir versions in this book but in a future revision we will likely move to the latest API. Thank you! |
| 84 | 95 | ERROR | The example speaks of adding Process.flag(:trap_exit,true) to the init function but does not actually do it. | 2017-11-21 | |
| 96 | 85 | TYPO | “If you are working on an application that talks to a database, it its supervision tree probably starts a process that connects to the database. ” “it” should be removed | 2017-11-21 | |
| 100 | 90 | SUGGEST | In the explanation of cookies you write: “It’s not a browser cookie; it’s simply an atom for security that’s a unique identifier” As far as I understand, by default the Erlang VM does not protect inter node communication, i.e., encrypt and authenticate the communication between nodes. Thus, anyone listening in can easily extract the cookie and then connect to a system. In my understanding the cookie is thus more of an organizational feature (run disjoint clusters) than a security feature. In particular, clusters should not be used over insecure connections without adding additional measures (e.g. enabling TLS for BEAMs communication). I would suggest to either add some explanation as to what security guarantees are given or to not sell the cookie as a security feature as readers may jump to false conclusions. | 2017-11-21 | |
| 109 | 99 | TYPO | “as the rate of registrations become quite limited when the number of nodes grown” grown -> grows | 2017-11-21 | |
| 82 | SUGGEST | Maybe describe the points of when to use a GenServer earlier than quite directly after starting a section about not using GenServers. When skimming through the page this might lead to misunderstanding. | 2017-11-21 | ||
| 124 | 115 | TYPO | " ones designed especially for for running NIFs" for for | 2017-11-21 | |
| 119 | TYPO | In sentence: We can also data from the port, which is “hello\ Should be "We can also GET data from the port…. | 2017-11-21 | ||
| 121 | OK | You will want to take measures to make sure your processes terminate cleanly. Should be: You will want to take MEASUREMENTS… | 2017-11-21 | I think we mean measures, as in take actions. | |
| 125 | TYPO | If you need to run multiple Java nodes, you will have to decide how to you load-balance them from Elixir Should be: … you will have to decide how to load-balance them… Remove the “you” in between “how” and “load” | 2017-11-21 | ||
| 134 | TYPO | …you can chose the proper Logger… chose -> choose …Unfortunately the mix run command can’t receive… missing comma after `Unfortunately` | 2017-11-21 | ||
| 23 | TYPO | …In this section, let’s see how the Bleacher Report team was able to break through the concept of “functions tranform data” and the importance of managing expectations along the way. Replace “tranform” with “transform” | 2017-12-02 | ||
| 22 | SUGGEST | “Kevin Durant, the most famous basketball player of our time.” Lebron has held this title for much of the past decade. How about: “Kevin Durant, one of the best basketball players in the world.” | 2017-12-02 | ||
| 170 | SUGGEST | Link 17 should point to the actual article theerlangelist.com/article/phoenix_latency | 2017-12-02 | ||
| 67 | TYPO | Simple typo error where a colon is missing. Currenty is: Should be: | 2017-12-02 | ||
| 59 | TYPO | It is written Dialyxer. Should be Dialyxir. | 2018-02-19 | ||
| 59 | TYPO | I am not sure it is a typo: | 2018-02-19 | ||
| 140 | TYPO | “as bin/sample start or fetch the tar.gaz file” has a typo in extension, it should be “tar.gz” | 2018-02-19 | ||
| 73 | ERROR | At least with Elixir 1.5.1, Task.async/1 returns just the task, and not a {:ok, task} tuple. | 2018-02-19 | ||
| 123 | ERROR | When adding dialyxir to deps, if you wish the ensure_consistency alias introduced on page 132 to work, I think the dialyxir dep has to also be available in the :test environment. Also, ensure_consistency needs to be run with MIX_ENV=test, I’m pretty sure, otherwise the `test task will complain about being run in a non-test environment. | 2018-02-19 | ||
| 73 | TYPO | Last paragraph: “They can be compiled, tested and deployed separatedly.” Should read “separately” | 2018-02-19 | ||
| 92 | TYPO | “If your goal is [to] build truly independent and isolated subsystems,” missing the “to” | 2018-02-19 | ||
| 84 | SUGGEST | Towards the bottom: “The client uses a JSON parser called HTTPoison” Should probably read “HTTP client” or similar instead of “JSON parser”. | 2018-02-19 | ||
| 23 | 4 | TYPO | FROM: | 2018-02-18 | |
| 11 | SUGGEST | “This project, though, shows a simplification of the development stack and better The flow of ‘it reduced’ seems to start a new sentence, but follows a comma. | 2018-02-21 | ||
| 21 | SUGGEST | “If you’d like to take the same approach, you have several good books to choose Using ‘up for’ seems an odd combination. Using either ‘looking up’ or ‘looking for’ might be better. | 2018-02-21 | ||
| 23 | SUGGEST | Change Type: comma | |||
| 24 | SUGGEST | Change Type: commas | |||
| 24 | SUGGEST | Change Type: comma | |||
| 25 | SUGGEST | Change Type: split sentence, remove comma | |||
| 25 | SUGGEST | Change Type: comma | |||
| 8 | 8 | TYPO | Beta 4—Jan 16, 2017? | 2018-03-02 | |
| 54 | TYPO | “coveralls.post”: :test, The final entry in the list `“coveralls.html”: :test, contains a superfluous comma. If you were to run Mix format % it would be correctly removed. This is not a compiler issue, but just be good to ensure the code snippets reflect the Mix Format standard ;D Awesome book, loving it. | |||
| 151 | ERROR | Example command for heart should not have “\\” at the end in command elixir —erl “-heart” -e “Enum.map Stream.interval(1000), &IO.puts/1” \\ since the part “heart_beat_kill_pid = 48495” is output of the command. | |||
| 178 | SUGGEST | In the EctoInspector module log function uses IO.inspect and then returns log def log(log) do This is technically correct, but IO.inspect returns its input without modification anyway, so I would suggest to change it to just: def log(log) do It would probably require to also change the explaining part from “Then, we’ll just return it without modification.” to “IO.inspect returns its argument without modification, so our log function will also return the log without modifying it.” | |||
| 24 | TYPO | Code example uses `data |> …`, should be `post |> …` | |||
| 134 | TYPO | In the Packets section: | |||
| 131 | TYPO | 3rd paragraph starts with “he Nerves team follow …”. Should be “The Nerves team…” | |||
| 137 | TYPO | “You can use libraries such as poolboy12 to start a certain amount of processes …” should be “… a certain number of processes …” “Amount” is used with uncountable nouns. “Number” is used with countable. | |||
| 185 | ERROR | One of the suggested ways of increasing performance is to increase the number of keepalive requests. At the end of this section, the text says this can be done by setting protocol_options: [max_keepalive: 5_000_000] under :http options in the lib/demo_web/endpoint.ex. This should probably actually be done in the config/prod.exs file: config :demo, DemoWeb.Endpoint, | |||
| 185 | ERROR | I think the file should be prod.exs, and not endpoint.ex. “You can increase this limit by setting protocol_options: [max_keepalive: 5_000_000] under the :http options in the lib/demo_web/endpoint.ex file.” Source: theerlangelist.com/article/phoenix_latency | |||
| 91 | TYPO | The very last sentence on that page “Run iex counter.ex and then try this:” The source file counter.ex doesn’t exists. It should be “counter_3.ex”. | |||
| 132 | SUGGEST | The first example in section “All-Caps I/O Program”, identified as “external_code/port_1/all_caps.exs” uses a for comprehension to loop over a file and output lines of text uppercased. However, the comprehension builds a list in memory, so it is wasteful to use it to print lines, because in addition to generating output it is building a data structure in memory, which will not be used for anything. Isn’t that a bad example of Elixir usage? Did I miss something? | |||
| 132 | SUGGEST | The first example in section “All-Caps I/O Program”, identified as “external_code/port_1/all_caps.exs” uses a for comprehension to loop over a file and output lines of text uppercased. However, the comprehension builds a list in memory, so it is wasteful to use it to print lines, because in addition to generating output it is building a list in memory, which will not be used for anything. Isn’t that is a bad example of Elixir usage? Did I miss somethig? |