raul

raul

Distributed Services with Go: Chapter 3 suggestions

Page 28: It implements io.ReaderAt on the store type.

  • Sorry if it’s a dumb question but was the io.ReaderAt supposed to be io.ReadAt?

Page 29:
func (s *store) Close() error {
s.mu.Lock()
defer s.mu.Unlock()
err := s.buf.Flush()
if err != nil {
return err
}

  • Possibly:
    if err := s.buf.Flush(); err != nil {
    return err
    }

Page 31: At the end of store_test.go

  • Could you please include instructions/Makefile to execute the tests?
  • I finally managed to run them by cd’ing into internal/log and running ‘go test -v’ but this was after a bunch of failed attempts at running them.

Page 30-50: I would suggest running the tests after each of the Store, Index, and Segment would help people stay more engaged? Otherwise it seems too much (25 pages) code reading without interactivity.

Page 34: an ungraceful shutdown

  • Does ‘forceful’ shutdown sound more appealing than ‘ungraceful’?

Page 37: type Config struct {

  • I was trying to execute index_test.go and index.go and was trying to figure out what the unresolved Config was. Would it help to move this definition ahead of usage?

Page 36: Then we verify that the index and scanner error when

  • that the index and scanner ‘throw an error’ when?

Page 37: We need the next and base offsets to know…

  • This isn’t clear. Could you please consider drawing a simple picture to clarify this better?

Page 39: func (s *segment) Append(record *api.Record) (offset uint64, err error) {

  • Please consider forward declaring the definition of Record to make compilation and execution possible.

Page 41: import (
“fmt”
“os”
“path”

"github.com/gogo/protobuf/proto"
api "github.com/travisjeffery/proglog/api/v1"

)

Page 43: api “github.com/travisjeffery/proglog/api/v1

Page 43: Next, add the this setup() method below NewLog()

  • Next, add ‘this’ setup() method below NewLog()

Page 48: api “github.com/travisjeffery/proglog/api/v1

Page 51: testReader(*testing.T, *log.Log) tests that we can read the full, raw log as it’s stored on disk so that on, when we can snapshot

  • so that on ‘startup’?, when we can snapshot - something is off here

First Post!

yamoinza

yamoinza

Chapter 3, segment.go, code reads as “substract segment baseOffset from nextOffset”:

// index offsets are relative to base offset
uint32(s.nextOffset-uint64(s.baseOffset)),

but text reads as “we subtract the segment’s next offset from its base offset”.

Where Next?

Popular Pragmatic Bookshelf topics Top

yulkin
your book suggests to use Image.toByteData() to convert image to bytes, however I get the following error: "the getter ‘toByteData’ isn’t...
New
Alexandr
Hi everyone! There is an error on the page 71 in the book “Programming machine learning from coding to depp learning” P. Perrotta. You c...
New
herminiotorres
Hi @Margaret , On page VII the book tells us the example and snippets will be all using Elixir version 1.11 But on page 3 almost the en...
New
AleksandrKudashkin
On the page xv there is an instruction to run bin/setup from the main folder. I downloaded the source code today (12/03/21) and can’t see...
New
jeremyhuiskamp
Title: Web Development with Clojure, Third Edition, vB17.0 (p9) The create table guestbook syntax suggested doesn’t seem to be accepted ...
New
patoncrispy
I’m new to Rust and am using this book to learn more as well as to feed my interest in game dev. I’ve just finished the flappy dragon exa...
New
AndyDavis3416
@noelrappin Running the webpack dev server, I receive the following warning: ERROR in tsconfig.json TS18003: No inputs were found in c...
New
brunogirin
When I run the coverage example to report on missing lines, I get: pytest --cov=cards --report=term-missing ch7 ERROR: usage: pytest [op...
New
adamwoolhether
Is there any place where we can discuss the solutions to some of the exercises? I can figure most of them out, but am having trouble with...
New
EdBorn
Title: Agile Web Development with Rails 7: (page 70) I am running windows 11 pro with rails 7.0.3 and ruby 3.1.2p20 (2022-04-12 revision...
New

Other popular topics Top

PragmaticBookshelf
Rust is an exciting new programming language combining the power of C with memory safety, fearless concurrency, and productivity boosters...
New
Exadra37
Oh just spent so much time on this to discover now that RancherOS is in end of life but Rancher is refusing to mark the Github repo as su...
New
New
New
AstonJ
If you want a quick and easy way to block any website on your Mac using Little Snitch simply… File > New Rule: And select Deny, O...
New
New
PragmaticBookshelf
Author Spotlight: Peter Ullrich @PJUllrich Data is at the core of every business, but it is useless if nobody can access and analyze ...
New
PragmaticBookshelf
Develop, deploy, and debug BEAM applications using BEAMOps: a new paradigm that focuses on scalability, fault tolerance, and owning each ...
New
PragmaticBookshelf
Explore the power of Ash Framework by modeling and building the domain for a real-world web application. Rebecca Le @sevenseacat and ...
New
AstonJ
This is a very quick guide, you just need to: Download LM Studio: https://lmstudio.ai/ Click on search Type DeepSeek, then select the o...
New

Sub Categories: