Skip to content

Instantly share code, notes, and snippets.

View ScalaWilliam's full-sized avatar
🏠
Working from home

ScalaWilliam ScalaWilliam

🏠
Working from home
View GitHub Profile
@ScalaWilliam
ScalaWilliam / ddd.md
Created June 15, 2017 23:13 — forked from zsup/ddd.md
Documentation-Driven Development (DDD)

Documentation-Driven Development

The philosophy behind Documentation-Driven Development is a simple: from the perspective of a user, if a feature is not documented, then it doesn't exist, and if a feature is documented incorrectly, then it's broken.

  • Document the feature first. Figure out how you're going to describe the feature to users; if it's not documented, it doesn't exist. Documentation is the best way to define a feature in a user's eyes.
  • Whenever possible, documentation should be reviewed by users (community or Spark Elite) before any development begins.
  • Once documentation has been written, development should commence, and test-driven development is preferred.
  • Unit tests should be written that test the features as described by the documentation. If the functionality ever comes out of alignment with the documentation, tests should fail.
  • When a feature is being modified, it should be modified documentation-first.
  • When documentation is modified, so should be the tests.
#curl -s 'https://actionfps.com/logs.tsv?from=2017-01-01T00:00:00Z&to=2099-04-10T11:02:03Z' > AFPS2017.txt
#python fraudeur.py < AFPS2017.txt > fraudeur.csv
import sys
fragCLA={"AssaultCube[local#1999]": 0, "AssaultCube[local#2999]": 0, "AssaultCube[local#3999]":0, "AssaultCube[local#4999]":0, "AssaultCube[califapublic]": 0, "ActionFPS[local#7654]": 0, "ac_server[32337]": 0}
flagCLA={"AssaultCube[local#1999]": 0, "AssaultCube[local#2999]": 0, "AssaultCube[local#3999]":0, "AssaultCube[local#4999]":0, "AssaultCube[califapublic]": 0, "ActionFPS[local#7654]": 0, "ac_server[32337]": 0}
fragRVSF={"AssaultCube[local#1999]": 0, "AssaultCube[local#2999]": 0, "AssaultCube[local#3999]":0, "AssaultCube[local#4999]":0, "AssaultCube[califapublic]": 0, "ActionFPS[local#7654]": 0, "ac_server[32337]": 0}
flagRVSF={"AssaultCube[local#1999]": 0, "AssaultCube[local#2999]": 0, "AssaultCube[local#3999]":0, "AssaultCube[local#4999]":0, "AssaultCube[califapublic]": 0, "ActionFPS[local#7654]": 0, "ac_server[32337]": 0}
time={"Assau
#!/usr/bin/env node
var EventSource = require('eventsource');
var cfgPath = require('confortable')('stream.json', process.cwd());
if (!cfgPath) {
throw new Error("Could not load stream.json");
}
var cfg = require(cfgPath);
var ircStream = require('irc-stream')(cfg.irc.server, cfg.irc.name, {
// After that we just create the GUI Actors with a Props with the correct dispatcher set:
val javaFxActor = context.actorOf(Props[JavaFxActor].withDispatcher("javafx-dispatcher"), "javaFxActor")
val swingActor = context.actorOf(Props[SwingActor].withDispatcher("swing-dispatcher"), "swingActor")
// Done! Now all messages processed by the new actor will be executed by the Swing/JavaFX Event Dispatch Thread, enjoy!