Compare commits
No commits in common. "68dd2ac32337911c03350a84627a445b8c9c7102" and "3f45e0fbc0d638f951711c59d0f3a3ccae1c772c" have entirely different histories.
68dd2ac323
...
3f45e0fbc0
|
@ -0,0 +1,11 @@
|
||||||
|
.PHONY: all build fmt
|
||||||
|
|
||||||
|
all: timeline.db xbit
|
||||||
|
|
||||||
|
xbit: build
|
||||||
|
|
||||||
|
build:
|
||||||
|
go build
|
||||||
|
|
||||||
|
timeline.db: timeline.sql
|
||||||
|
sqlite3 timeline.db < timeline.sql
|
39
README.md
39
README.md
|
@ -1,39 +0,0 @@
|
||||||
# xbit
|
|
||||||
`xbit` (xkcd backward in time) is a program for outputting historical events
|
|
||||||
while completing a task, inspired by [xkcd](https://xkcd.com/1017). The program
|
|
||||||
reads a SQLite database that stores event descriptions and timestamps, allowing
|
|
||||||
you to easily add your own events of interest.
|
|
||||||
|
|
||||||
The provided SQL file will pre-populate the database with thousands of events
|
|
||||||
scraped from
|
|
||||||
[Wikipedia](https://en.wikipedia.org/wiki/Detailed_logarithmic_timeline). Of
|
|
||||||
these events, over 300 were manually given timestamps.
|
|
||||||
|
|
||||||
## How to use
|
|
||||||
First create the database:
|
|
||||||
```
|
|
||||||
sqlite3 timeline.db < timeline.sql
|
|
||||||
```
|
|
||||||
|
|
||||||
Then set the `XBIT_DB` environment variable to the database file.
|
|
||||||
```
|
|
||||||
export XBIT_DB=./timeline.db
|
|
||||||
```
|
|
||||||
|
|
||||||
Call the program with `xbit -p <percentage>`, like `xbit -p 0.25`. This will
|
|
||||||
calculate a timestamp using the formula from the xkcd comic, then output
|
|
||||||
information about the event in the database closest to that timestamp. See
|
|
||||||
`xbit -h` for more args.
|
|
||||||
|
|
||||||
## Database details
|
|
||||||
* Due to the time-consuming nature of manually assigning timestamps, there are
|
|
||||||
many events that were scraped from Wikipedia but not given timestamps. You
|
|
||||||
may wish to skim through these and add timestamps to events you personally find
|
|
||||||
interesting.
|
|
||||||
* For an event to be output by `xbit`, it must have an entry in the database
|
|
||||||
with a unix timestamp of when the event occured. You can optionally set bools
|
|
||||||
in the "known" columns to indicate how precise your timestamp is. These may be
|
|
||||||
used to modify how the event is output.
|
|
||||||
* There are a few other columns that mainly exist as artifacts from the
|
|
||||||
scraping process. These are not used by `xbit` and do not need to be
|
|
||||||
populated.
|
|
4
main.go
4
main.go
|
@ -8,7 +8,6 @@ import (
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
"log"
|
"log"
|
||||||
"math"
|
"math"
|
||||||
"os"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -111,10 +110,9 @@ func main() {
|
||||||
ulimit = t
|
ulimit = t
|
||||||
}
|
}
|
||||||
|
|
||||||
dbpath := os.Getenv("XBIT_DB")
|
|
||||||
var db TimelineDB
|
var db TimelineDB
|
||||||
var err error
|
var err error
|
||||||
db.DB, err = sql.Open("sqlite3", dbpath)
|
db.DB, err = sql.Open("sqlite3", "./timeline.db")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue