Compare commits

..

No commits in common. "68dd2ac32337911c03350a84627a445b8c9c7102" and "3f45e0fbc0d638f951711c59d0f3a3ccae1c772c" have entirely different histories.

3 changed files with 12 additions and 42 deletions

11
Makefile Normal file
View File

@ -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

View File

@ -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.

View File

@ -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)
} }