> For the complete documentation index, see [llms.txt](https://berkeley-cs162.gitbook.io/hw6-sp20/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://berkeley-cs162.gitbook.io/hw6-sp20/getting-started.md).

# Getting Started

To acquire the skeleton code, run `git pull staff master` in your personal repo and a new directory `hw8` should appear. The portion of the homework will be in `hw6/tpc`.&#x20;

### Installing grpcio

First, in your VM, install Python gRPC bindings with the following commands:

```
sudo apt -y update
sudo apt -y install python3-pip
sudo pip3 install grpcio grpcio-tools
```

### Learning Golang

The level at which you need to undersand go to complete this topic is not very deep. But still, you should know how variable assignment, interfaces, structs, functions, conditionals, etc work. I recommend taking a look at [GoByExample](https://gobyexample.com) to learn syntax. You need to understand at least the following sections:

* "Hello World" through "Multiple Return Values"
* "Recursion" - "Channel Buffering"

Professor Culler wrote his own [tutorial](https://github.com/deculler/gotut) for learning Golang just for this class. It does a very good job of explaining features of the language and I would **highly recommend** it.

### Golang Commands

`go test -mod vendor <dir>`: Runs the unit tests in `dir`. Leaving the directory empty runs it in the current directory. Replacing the directory with `./...` runs it in all sub directories.

`gofmt -l -w pkg/`: run this in the `hw6` directory to format all Golang files in the homework. The autograder will refuse to run unless your Golang files are formatted correctly.

`go build -o tpc -mod vendor main.go`: Run this command to build the KV store and output as a binary called `tpc`.
