项目作者: joshspicer

项目描述 :
Golang App for Survivor: Northeastern
高级语言: Go
项目地址: git://github.com/joshspicer/Survivor-Scheduler.git
创建时间: 2019-03-23T18:20:29Z
项目社区:https://github.com/joshspicer/Survivor-Scheduler

开源协议:

下载


Survivor: Northeastern Event Scheduler

Abstract

Survivor: Northeastern is a club at Northeastern
that conducts an on-campus season of CBS’s TV show “Survivor”. I played in season 3 of
this amazing club, and have been helping produce the show for others ever since.

This golang application aims to aid in collecting player weekly schedules and
calculating the best time for tribals, challenges, etc.

I’ve been interested in learning go for quite some time. I decided to start this project
with the challenge of using nothing but golang for the entire application. No external database,
no third-party libraries - just what the language allows for and natively supports.

Data Storage

I wanted this project to be a holistic experience of golang,
so for persistent data storage I tried to stay away from traditional method.
I decided upon a simple file storage system.

.survive file

All player data is stored in individual files titled {{player_name}}.survive.

The contents include seven 16-bit, 4-character hex-encoded numbers separated by a colon.
Each bit represents a half-hour increment, and each block indicated a day of the week (Sunday - 0, Saturday - 6).
Historical availability is stored on previous lines. The “current” availability
is on the last line of the file.

  1. 0:0:0:0:0:0:0 # Open availability
  2. 200:0:0:0:0:0:0
  3. 200:ffff:0:0:0:0:0 # "Fully booked" on Monday
  4. 200:100:100:0:0:0:0
  5. ffff:ffff:ffff:ffff:ffff:ffff:ffff # Indicates NO free time
  6. ffff:467:ffff:ffff:a4b6:ffff:addd # Current Availability program will reference

Getting Started

After compiling the go binary, go build main.go, starting the application is
as simple as running the produced binary.

The binary will look for a conf file in the same directory. If found, the game
will initialize itself.

conf file

The conf file is simple a newline-separated list of player names, like so:

  1. Josh
  2. Mike
  3. Mary
  4. Ralph

Upon initialization, the conf file will be renamed to conf.processed. In addition,
survive files for each player will be initialized. Keep all of these files in the same
directory as the binary, as these files store necessary information to keep the game
persistent.

If all goes well, you will be greeted with a similar looking screen in your
web browser

running

Usage

Player can individually interact with their schedules by visiting the homepage
and clicking their name, or visiting http://{{server-root}}/edit/{{player-name}}

The club logistics manager can visit http://{{server-root}}/manage to see
aggregated player schedules.