Difference between revisions of "Spacestategeschiedenis"

From RevSpace
Jump to navigation Jump to search
(Created page with "Data file: * First 8 bytes (64 bit): unix time_t epoch time of first data point * Subsequent data: one byte per minute, byte offset = 8 + floor((time() - $start_time) / 60) *...")
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Data file:
+
== Doel en aanleiding ==
  
* First 8 bytes (64 bit): unix time_t epoch time of first data point
+
Zo compleet mogelijke log van alle spacestate met een redelijk hoge resolutie, om dat vervolgens eeuwig te bewaren. Met 1 byte per minuut heb je jaarlijks slechts ongeveer een halve MB aan data, dus veel ruimte kost het niet.
 +
 
 +
Vooralsnog zijn we verwend met de heatmaps van flok op https://keetweej.vanheusden.com/revspace/openhm.php (die url is nu https://spaceapi.vanheusden.com/show.php?id=RevSpace) maar die gaan slechts terug tot 2014, en er zijn wat twijfels bij de juistheid van de data (in de "alles"-heatmap staan veel 100%-scores waar alle eerdere heatmaps een lager getal hebben, dat kan niet kloppen (dit is opgelost bij de nieuwe url)). Bovendien wilden we graag een open source implementatie op eigen infrastructuur, omdat het denkbaar is dat voorgenoemde openhm.php niet altijd beschikbaar zal blijven. We voeren de resolutie meteen op van 6 naar 60 momentopnames per uur.
 +
 
 +
== Subprojecten ==
 +
 
 +
* Statelogger en dump van heatmaps (Juerd)
 +
** Source: https://github.com/revspace/statelogger
 +
** Draait op gateway vanuit /home/juerd/statelogger
 +
** statelogger draait elke minuut sinds 2018-06
 +
** create-heatmaps draait elk kwartier
 +
* Importeren van oude space-states (Juerd, eightdot)
 +
** Bron 1: twitter (ca. 2010-01 - 2013-06)
 +
** Bron 2: irc-logs (ca. 2012-05 - 2018-06)
 +
** Ondanks diverse handmatige fixes klopt 't niet helemaal, maar het is goed genoeg voor bruikbare heatmaps.
 +
* HTML/CSS van de heatmaps (f0x)
 +
** Source: https://github.com/revspace/heatmap
 +
** Een nodejs/express webserver die de json's van Juerd parsed, en door een template gooit
 +
** een stuk client-side js voor de bewegende slider, met fallback zonder js
 +
 
 +
== File format ==
 +
 
 +
* First 8 bytes (64 bit, little endian): unix time_t epoch time of first data point
 
* Subsequent data: one byte per minute, byte offset = 8 + floor((time() - $start_time) / 60)
 
* Subsequent data: one byte per minute, byte offset = 8 + floor((time() - $start_time) / 60)
 
** ASCII '0': space was closed (or mostly closed)
 
** ASCII '0': space was closed (or mostly closed)
 
** ASCII '1': space was open (or mostly open)
 
** ASCII '1': space was open (or mostly open)
** ASCII '?': script did run but could not determine space state
+
** ASCII '?': script did run but could not determine space state (not currently in use)
 
** ASCII '\0' (NUL): space state was not recorded
 
** ASCII '\0' (NUL): space state was not recorded
 +
** Any other value: treat as '?'
 +
 +
Statelog na iets minder dan 18 uur loggen: (<tt>*</tt> = meer van hetzelfde)
 +
 +
00000000  ce 39 24 5b 00 00 00 00  31 31 31 31 30 30 30 30  |.9$[....11110000|
 +
00000010  30 30 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |0011111111111111|
 +
00000020  30 30 30 31 31 31 31 31  31 31 31 31 31 31 31 31  |0001111111111111|
 +
00000030  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |1111111111111111|
 +
*
 +
00000240  31 31 31 31 31 31 31 31  31 31 31 31 30 30 31 31  |1111111111110011|
 +
00000250  31 31 31 31 31 30 30 30  30 30 30 30 30 30 30 30  |1111100000000000|
 +
00000260  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
 +
*
 +
000002d0  30 30 30 30 30 30 31 31  31 31 31 31 31 31 31 31  |0000001111111111|
 +
000002e0  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |1111111111111111|
 +
*
 +
00000433

Revision as of 07:52, 6 September 2019

Doel en aanleiding

Zo compleet mogelijke log van alle spacestate met een redelijk hoge resolutie, om dat vervolgens eeuwig te bewaren. Met 1 byte per minuut heb je jaarlijks slechts ongeveer een halve MB aan data, dus veel ruimte kost het niet.

Vooralsnog zijn we verwend met de heatmaps van flok op https://keetweej.vanheusden.com/revspace/openhm.php (die url is nu https://spaceapi.vanheusden.com/show.php?id=RevSpace) maar die gaan slechts terug tot 2014, en er zijn wat twijfels bij de juistheid van de data (in de "alles"-heatmap staan veel 100%-scores waar alle eerdere heatmaps een lager getal hebben, dat kan niet kloppen (dit is opgelost bij de nieuwe url)). Bovendien wilden we graag een open source implementatie op eigen infrastructuur, omdat het denkbaar is dat voorgenoemde openhm.php niet altijd beschikbaar zal blijven. We voeren de resolutie meteen op van 6 naar 60 momentopnames per uur.

Subprojecten

  • Statelogger en dump van heatmaps (Juerd)
  • Importeren van oude space-states (Juerd, eightdot)
    • Bron 1: twitter (ca. 2010-01 - 2013-06)
    • Bron 2: irc-logs (ca. 2012-05 - 2018-06)
    • Ondanks diverse handmatige fixes klopt 't niet helemaal, maar het is goed genoeg voor bruikbare heatmaps.
  • HTML/CSS van de heatmaps (f0x)
    • Source: https://github.com/revspace/heatmap
    • Een nodejs/express webserver die de json's van Juerd parsed, en door een template gooit
    • een stuk client-side js voor de bewegende slider, met fallback zonder js

File format

  • First 8 bytes (64 bit, little endian): unix time_t epoch time of first data point
  • Subsequent data: one byte per minute, byte offset = 8 + floor((time() - $start_time) / 60)
    • ASCII '0': space was closed (or mostly closed)
    • ASCII '1': space was open (or mostly open)
    • ASCII '?': script did run but could not determine space state (not currently in use)
    • ASCII '\0' (NUL): space state was not recorded
    • Any other value: treat as '?'

Statelog na iets minder dan 18 uur loggen: (* = meer van hetzelfde)

00000000  ce 39 24 5b 00 00 00 00  31 31 31 31 30 30 30 30  |.9$[....11110000|
00000010  30 30 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |0011111111111111|
00000020  30 30 30 31 31 31 31 31  31 31 31 31 31 31 31 31  |0001111111111111|
00000030  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |1111111111111111|
*
00000240  31 31 31 31 31 31 31 31  31 31 31 31 30 30 31 31  |1111111111110011|
00000250  31 31 31 31 31 30 30 30  30 30 30 30 30 30 30 30  |1111100000000000|
00000260  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |0000000000000000|
*
000002d0  30 30 30 30 30 30 31 31  31 31 31 31 31 31 31 31  |0000001111111111|
000002e0  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31  |1111111111111111|
*
00000433