From ba9f32e08910ebd1adb0945a3ec1ba30d5caf778 Mon Sep 17 00:00:00 2001 From: Aaron Boodman Date: Thu, 17 Dec 2015 23:54:57 -0800 Subject: [PATCH] Big docs update --- README.md | 39 +++++++++++---------------------- clients/csv_importer/README.md | 3 +-- clients/server/README.md | 26 +++++++++++++++++----- clients/shove/README.md | 28 +++++++++++++++++++++++ clients/splore/README.md | 27 +++++++++++++++-------- clients/splore/package.json | 1 + clients/splore/screenshot.png | Bin 0 -> 43881 bytes 7 files changed, 81 insertions(+), 43 deletions(-) create mode 100644 clients/shove/README.md create mode 100644 clients/splore/screenshot.png diff --git a/README.md b/README.md index 0a45250d88..d7f46d4052 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,20 @@ # Noms -Noms is a content-addressable, immutable, peer-to-peer datastore for structured data. +Noms is a content-addressable, append-only, peer-to-peer, structured data store. In other words, *noms is git for data*. -This repository will contain the reference implementation of the noms protocol, and will eventually be open sourced. - -This includes: - -* Go wrappers for all the core noms types -* Support for generating Go types from schema definitions (aka 'nomdl') -* Chunking and dechunking -* Serialization and deserialization -* Chunkstore interface as well as several sample implementations -* Search support -* Sample applications +This repository contains two reference implementations of the noms protocol - one in Go, and one in JavaScript. It also includes a number of tools and sample applications. # Prerequisites * [Go 1.4+](https://golang.org/dl/) +* [Python 2.7+](https://www.python.org/downloads/) (Note: Python 2.x only, not Python 3.x) +* [Node.js 5.3+](https://nodejs.org/download/) -# Get +# Get the code + +First, ensure `$GOPATH` is [set correctly](https://golang.org/doc/code.html#GOPATH). Then: ``` go get -u -t github.com/attic-labs/noms/... @@ -43,17 +37,10 @@ go build ./counter -ldb=/tmp/foo -ds=foo ``` -# Rejoice! +# What next? -You can see the raw data: - -``` -ls /tmp/foo -cat /tmp/foo/*.log | strings -``` - -You can also explore the data visually. Follow the instructions in `clients/splore`. - -There are lots of other sample programs in `clients/` and they usually have `README`s. Have fun... - -TODO: There needs to be more of a big-picture introduction. +* Learn the core tools: [`server`](clients/server/README.md), [`splore`](clients/splore/README.md), [`shove`](clients/shove/README.md), [`csv_importer`](clients/csv_importer/README.md), [`json_importer`](clients/json_importer), [`xml_importer`](clients/xml_importer) +* Run sample apps: [`sfcrime`](clients/sfcrime/README.md), [`tagshow` photo viewer](clients/tagshow/README.md) +* NomDL reference +* Go SDK +* JavaScript SDK diff --git a/clients/csv_importer/README.md b/clients/csv_importer/README.md index 46c7b98e66..c0332cbf0b 100644 --- a/clients/csv_importer/README.md +++ b/clients/csv_importer/README.md @@ -1,7 +1,6 @@ # CSV Importer -Imports a CSV file as a List of Maps where the first row of the CSV file -describes the keys of the Map. +Imports a CSV file as List where T is generated from the header row of the CSV (this can also be overridden with the `-header` flag). ## Usage diff --git a/clients/server/README.md b/clients/server/README.md index 283cad01f6..f72b0c8bfc 100644 --- a/clients/server/README.md +++ b/clients/server/README.md @@ -1,16 +1,30 @@ # Server -This is an http server for noms. Currently it is read-only. +Server implements a noms datastore over HTTP. -## Build +## Example ``` -cd /clients/server +cd $GOPATH/src/github.com/attic-labs/noms/clients/counter go build +./counter -ldb="/tmp/servertest" -ds="counter" +./counter -ldb="/tmp/servertest" -ds="counter" +./counter -ldb="/tmp/servertest" -ds="counter" + +cd ../server +go build +./server -ldb="/tmp/servertest" & ``` -## Run +Then navigate a web browser to [http://localhost:8000/root]. You should see a string starting with `sha1-...`. This _ref_ is the unique identifier for the current state of the datastore. You an explore it further by fetching URLs like [http://localhost:8000/ref/sha1-...]. + +## About + +Server is not commonly used directly by users, but is a building block used by other tools. For example, you can connect the counter application to your running server like so: + ``` -# See -h for more options -./server -ldb="/tmp/foo" +./counter -h="http://localhost:8000" -ds="counter" +./counter -h="http://localhost:8000" -ds="counter" ``` + +Most noms clients accept this `-h` flag to connect to an http datastore. diff --git a/clients/shove/README.md b/clients/shove/README.md new file mode 100644 index 0000000000..0275db545f --- /dev/null +++ b/clients/shove/README.md @@ -0,0 +1,28 @@ +# Shove + +Shove syncs between datastores and datasets. It is the noms equivalent of Git's `push` and `pull` commands. + +## Howto + +``` +cd $GOPATH/src/github.com/attic-labs/noms/clients/counter +go build +./counter -ldb="/tmp/shovetest1" -ds="counter" +./counter -ldb="/tmp/shovetest1" -ds="counter" +./counter -ldb="/tmp/shovetest1" -ds="counter" + +cd ../shove +go build +./shove -source-ldb="/tmp/shovetest1" -source="counter" -sink-ldb="/tmp/shovetest2" -sink-ds="counter2" +../counter/counter -ldb="/tmp/shovetest2" -ds="counter2" + +# Shove can also connect to http datastores +cd ../server +go build +./server -ldb="/tmp/shovetest2" & + +../shove/shove -source-h="http://localhost:8000" -source="counter2" -sink-ldb="/tmp/shovetest3" -sink-ds="counter3" +../counter/counter -ldb="/tmp/shovetest3" -ds="counter3" +``` + +There are currently a small collection of datasets you can sync available at `-h="ds.noms.io"`. You can browse them at [http://apps.noms.io/splore](http://apps.noms.io/splore) (username: attic, password: labs). \ No newline at end of file diff --git a/clients/splore/README.md b/clients/splore/README.md index 91b1bdedc9..0b5dddde0c 100644 --- a/clients/splore/README.md +++ b/clients/splore/README.md @@ -1,20 +1,29 @@ # Splore -This is a generic noms data explorer. +Splore is a general-purpose debug UI for exploring noms data. -## Requirements +![splore and counter](screenshot.png) -* Node.js: https://nodejs.org/download/ -* You probably want to configure npm to [use a global module path that your user owns](https://docs.npmjs.com/getting-started/fixing-npm-permissions) +## Howto -## Build +``` +cd $GOPATH/src/github.com/attic-labs/noms/clients/counter +go build +./counter -ldb="/tmp/sploretest" -ds="counter" +./counter -ldb="/tmp/sploretest" -ds="counter" -* `NOMS_SERVER=http://localhost:8000 python build.py` +# Splore requires server to be running +cd ../server +go build +./server -ldb="/tmp/sploretest" & -## Run +cd ../splore +PYTHONPATH=$GOPATH/src/github.com/attic-labs/noms/tools NOMS_SERVER=http://localhost:8000 python build.py +./node_modules/.bin/http-server +``` + +Then, navigate to [http://localhost:8080]. -* `python -m SimpleHTTPServer 8082` (expects ../server to run on same host, port 8000) -* navigate to http://localhost:8082/ ## Develop diff --git a/clients/splore/package.json b/clients/splore/package.json index c1b428c8ef..f109216868 100644 --- a/clients/splore/package.json +++ b/clients/splore/package.json @@ -28,6 +28,7 @@ "eslint-plugin-react": "^3.8.0", "flow-bin": "^0.19.1", "grunt": "^0.4.5", + "http-server": "^0.8.5", "mocha": "^2.3.0", "uglify-js": "^2.6.1", "watchify": "^3.6" diff --git a/clients/splore/screenshot.png b/clients/splore/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..59c1f20d1a7dcccb9c5e632449b31f3812854b67 GIT binary patch literal 43881 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

YF;7k}e$XRGy=vhmB8v}pJ>-BG; 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 HEa?9M{32zX literal 0 HcmV?d00001