lots of new files
This commit is contained in:
9
eric/Cakefile
Normal file
9
eric/Cakefile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
spawn = (require 'child_process').spawn
|
||||||
|
|
||||||
|
to_stdio = (emitter) ->
|
||||||
|
emitter.stdout.on 'data', (data) -> process.stdout.write data
|
||||||
|
emitter.stderr.on 'data', (data) -> process.stderr.write data
|
||||||
|
emitter
|
||||||
|
|
||||||
|
task 'build', 'Build game file', (options) ->
|
||||||
|
to_stdio spawn 'coffee', ['--compile', 'eric.coffee']
|
43
eric/eric.coffee
Normal file
43
eric/eric.coffee
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
dx = 20
|
||||||
|
[nx, ny] = [30, 20]
|
||||||
|
canvas = document.getElementById 'canvas'
|
||||||
|
|
||||||
|
canvas.width = nx*dx
|
||||||
|
canvas.height = ny*dx
|
||||||
|
|
||||||
|
state = []
|
||||||
|
for i in [1..ny] by 1
|
||||||
|
line = []
|
||||||
|
line.push 0 for j in [1..nx] by 1
|
||||||
|
state.push line
|
||||||
|
|
||||||
|
ctx = canvas.getContext '2d'
|
||||||
|
|
||||||
|
color = [
|
||||||
|
'rgb(255, 255, 255)',
|
||||||
|
'rgb(204, 255, 255)',
|
||||||
|
'rgb(153, 255, 255)',
|
||||||
|
'rgb(102, 255, 255)',
|
||||||
|
'rgb(51, 255, 255)',
|
||||||
|
'rgb(0, 255, 255)',
|
||||||
|
]
|
||||||
|
|
||||||
|
redraw = () =>
|
||||||
|
for i in [0..ny-1] by 1
|
||||||
|
for j in [0..nx-1] by 1
|
||||||
|
ctx.fillStyle = color[state[i][j]]
|
||||||
|
ctx.fillRect j*dx, i*dx, dx, dx
|
||||||
|
|
||||||
|
canvas.onmousemove = (e) =>
|
||||||
|
if (e.pageX || e.pageY)
|
||||||
|
[x, y] = [e.pageX, e.pageY]
|
||||||
|
else
|
||||||
|
x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft
|
||||||
|
y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop
|
||||||
|
x -= canvas.offsetLeft
|
||||||
|
y -= canvas.offsetTop
|
||||||
|
[i, j] = [Math.floor(y/dx), Math.floor(x/dx)]
|
||||||
|
state[i][j] += 1
|
||||||
|
state[i][j] %= 6
|
||||||
|
redraw()
|
||||||
|
|
66
eric/eric.js
Normal file
66
eric/eric.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// Generated by CoffeeScript 1.6.2
|
||||||
|
(function() {
|
||||||
|
var canvas, color, ctx, dx, i, j, line, nx, ny, redraw, state, _i, _j, _ref,
|
||||||
|
_this = this;
|
||||||
|
|
||||||
|
dx = 20;
|
||||||
|
|
||||||
|
_ref = [52, 7], nx = _ref[0], ny = _ref[1];
|
||||||
|
|
||||||
|
canvas = document.getElementById('canvas');
|
||||||
|
|
||||||
|
canvas.width = nx * dx;
|
||||||
|
|
||||||
|
canvas.height = ny * dx;
|
||||||
|
|
||||||
|
state = [];
|
||||||
|
|
||||||
|
for (i = _i = 1; _i <= ny; i = _i += 1) {
|
||||||
|
line = [];
|
||||||
|
for (j = _j = 1; _j <= nx; j = _j += 1) {
|
||||||
|
line.push(0);
|
||||||
|
}
|
||||||
|
state.push(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx = canvas.getContext('2d');
|
||||||
|
|
||||||
|
color = ['rgb(255, 255, 255)', 'rgb(204, 255, 255)', 'rgb(153, 255, 255)', 'rgb(102, 255, 255)', 'rgb(51, 255, 255)', 'rgb(0, 255, 255)'];
|
||||||
|
|
||||||
|
redraw = function() {
|
||||||
|
var _k, _ref1, _results;
|
||||||
|
|
||||||
|
_results = [];
|
||||||
|
for (i = _k = 0, _ref1 = ny - 1; _k <= _ref1; i = _k += 1) {
|
||||||
|
_results.push((function() {
|
||||||
|
var _l, _ref2, _results1;
|
||||||
|
|
||||||
|
_results1 = [];
|
||||||
|
for (j = _l = 0, _ref2 = nx - 1; _l <= _ref2; j = _l += 1) {
|
||||||
|
ctx.fillStyle = color[state[i][j]];
|
||||||
|
_results1.push(ctx.fillRect(j * dx, i * dx, dx, dx));
|
||||||
|
}
|
||||||
|
return _results1;
|
||||||
|
})());
|
||||||
|
}
|
||||||
|
return _results;
|
||||||
|
};
|
||||||
|
|
||||||
|
canvas.onmousemove = function(e) {
|
||||||
|
var x, y, _ref1, _ref2;
|
||||||
|
|
||||||
|
if (e.pageX || e.pageY) {
|
||||||
|
_ref1 = [e.pageX, e.pageY], x = _ref1[0], y = _ref1[1];
|
||||||
|
} else {
|
||||||
|
x = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
|
||||||
|
y = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
|
||||||
|
}
|
||||||
|
x -= canvas.offsetLeft;
|
||||||
|
y -= canvas.offsetTop;
|
||||||
|
_ref2 = [Math.floor(y / dx), Math.floor(x / dx)], i = _ref2[0], j = _ref2[1];
|
||||||
|
state[i][j] += 1;
|
||||||
|
state[i][j] %= 6;
|
||||||
|
return redraw();
|
||||||
|
};
|
||||||
|
|
||||||
|
}).call(this);
|
14
eric/index.html
Normal file
14
eric/index.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<style type="text/css">
|
||||||
|
body{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<canvas id="canvas">Your browser does no support canvas</canvas>
|
||||||
|
<script src="eric.js"> </script>
|
||||||
|
</body>
|
||||||
|
</html>
|
109
gitfiti.html
Normal file
109
gitfiti.html
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<style>
|
||||||
|
|
||||||
|
body {
|
||||||
|
font: 10px sans-serif;
|
||||||
|
shape-rendering: crispEdges;
|
||||||
|
}
|
||||||
|
|
||||||
|
.day {
|
||||||
|
fill: #fff;
|
||||||
|
stroke: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.month {
|
||||||
|
fill: none;
|
||||||
|
stroke: #000;
|
||||||
|
stroke-width: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.RdYlGn .q0-11{fill:rgb(165,0,38)}
|
||||||
|
.RdYlGn .q1-11{fill:rgb(215,48,39)}
|
||||||
|
.RdYlGn .q2-11{fill:rgb(244,109,67)}
|
||||||
|
.RdYlGn .q3-11{fill:rgb(253,174,97)}
|
||||||
|
.RdYlGn .q4-11{fill:rgb(254,224,139)}
|
||||||
|
.RdYlGn .q5-11{fill:rgb(255,255,191)}
|
||||||
|
.RdYlGn .q6-11{fill:rgb(217,239,139)}
|
||||||
|
.RdYlGn .q7-11{fill:rgb(166,217,106)}
|
||||||
|
.RdYlGn .q8-11{fill:rgb(102,189,99)}
|
||||||
|
.RdYlGn .q9-11{fill:rgb(26,152,80)}
|
||||||
|
.RdYlGn .q10-11{fill:rgb(0,104,55)}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<body>
|
||||||
|
<script src="http://d3js.org/d3.v3.min.js"></script>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var width = 960,
|
||||||
|
height = 136,
|
||||||
|
cellSize = 17; // cell size
|
||||||
|
|
||||||
|
var day = d3.time.format("%w"),
|
||||||
|
week = d3.time.format("%U"),
|
||||||
|
percent = d3.format(".1%"),
|
||||||
|
format = d3.time.format("%Y-%m-%d");
|
||||||
|
|
||||||
|
var color = d3.scale.quantize()
|
||||||
|
.domain([-.05, .05])
|
||||||
|
.range(d3.range(11).map(function(d) { return "q" + d + "-11"; }));
|
||||||
|
|
||||||
|
var svg = d3.select("body").selectAll("svg")
|
||||||
|
.data(d3.range(1990, 2011))
|
||||||
|
.enter().append("svg")
|
||||||
|
.attr("width", width)
|
||||||
|
.attr("height", height)
|
||||||
|
.attr("class", "RdYlGn")
|
||||||
|
.append("g")
|
||||||
|
.attr("transform", "translate(" + ((width - cellSize * 53) / 2) + "," + (height - cellSize * 7 - 1) + ")");
|
||||||
|
|
||||||
|
svg.append("text")
|
||||||
|
.attr("transform", "translate(-6," + cellSize * 3.5 + ")rotate(-90)")
|
||||||
|
.style("text-anchor", "middle")
|
||||||
|
.text(function(d) { return d; });
|
||||||
|
|
||||||
|
var rect = svg.selectAll(".day")
|
||||||
|
.data(function(d) { return d3.time.days(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
|
||||||
|
.enter().append("rect")
|
||||||
|
.attr("class", "day")
|
||||||
|
.attr("width", cellSize)
|
||||||
|
.attr("height", cellSize)
|
||||||
|
.attr("x", function(d) { return week(d) * cellSize; })
|
||||||
|
.attr("y", function(d) { return day(d) * cellSize; })
|
||||||
|
.datum(format);
|
||||||
|
|
||||||
|
rect.append("title")
|
||||||
|
.text(function(d) { return d; });
|
||||||
|
|
||||||
|
svg.selectAll(".month")
|
||||||
|
.data(function(d) { return d3.time.months(new Date(d, 0, 1), new Date(d + 1, 0, 1)); })
|
||||||
|
.enter().append("path")
|
||||||
|
.attr("class", "month")
|
||||||
|
.attr("d", monthPath);
|
||||||
|
|
||||||
|
d3.csv("dji.csv", function(error, csv) {
|
||||||
|
var data = d3.nest()
|
||||||
|
.key(function(d) { return d.Date; })
|
||||||
|
.rollup(function(d) { return (d[0].Close - d[0].Open) / d[0].Open; })
|
||||||
|
.map(csv);
|
||||||
|
|
||||||
|
rect.filter(function(d) { return d in data; })
|
||||||
|
.attr("class", function(d) { return "day " + color(data[d]); })
|
||||||
|
.select("title")
|
||||||
|
.text(function(d) { return d + ": " + percent(data[d]); });
|
||||||
|
});
|
||||||
|
|
||||||
|
function monthPath(t0) {
|
||||||
|
var t1 = new Date(t0.getFullYear(), t0.getMonth() + 1, 0),
|
||||||
|
d0 = +day(t0), w0 = +week(t0),
|
||||||
|
d1 = +day(t1), w1 = +week(t1);
|
||||||
|
return "M" + (w0 + 1) * cellSize + "," + d0 * cellSize
|
||||||
|
+ "H" + w0 * cellSize + "V" + 7 * cellSize
|
||||||
|
+ "H" + w1 * cellSize + "V" + (d1 + 1) * cellSize
|
||||||
|
+ "H" + (w1 + 1) * cellSize + "V" + 0
|
||||||
|
+ "H" + (w0 + 1) * cellSize + "Z";
|
||||||
|
}
|
||||||
|
|
||||||
|
d3.select(self.frameElement).style("height", "2910px");
|
||||||
|
|
||||||
|
</script>
|
43
gitfiti.js
Normal file
43
gitfiti.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
var color = [
|
||||||
|
'rgb(255, 255, 255)',
|
||||||
|
'rgb(200, 255, 255)',
|
||||||
|
'rgb(150, 255, 255)',
|
||||||
|
'rgb(100, 255, 255)',
|
||||||
|
'rgb(50, 255, 255)',
|
||||||
|
'rgb(0, 255, 255)',
|
||||||
|
]
|
||||||
|
|
||||||
|
var paint=0
|
||||||
|
document.body.addEventListener('mousedown', function(){paint=1;console.log('painting');}, false );
|
||||||
|
document.body.addEventListener('mouseup',function(){paint=0;console.log('released')}, false);
|
||||||
|
|
||||||
|
function box(){
|
||||||
|
var box = document.createElement("div");
|
||||||
|
box.value=0;
|
||||||
|
box.style.width='25px';
|
||||||
|
box.style.height='25px';
|
||||||
|
box.style.border='1px solid gray';
|
||||||
|
box.style.backgroundColor=color[0];
|
||||||
|
box.paint=0
|
||||||
|
//box.onclick = function() { cycle(this);};
|
||||||
|
box.addEventListener('mousemove', function(){cycle(this);}, false );
|
||||||
|
document.body.appendChild(box);
|
||||||
|
return box
|
||||||
|
};
|
||||||
|
|
||||||
|
function boxes(){
|
||||||
|
var column = [];
|
||||||
|
for (i=0;i<7;i++){
|
||||||
|
column[i]=box();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function cycle(object){
|
||||||
|
if (paint==1){
|
||||||
|
object.value+=0.5;
|
||||||
|
object.value%6;
|
||||||
|
object.style.backgroundColor=color[object.value];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boxes();
|
122
gitfiti.py
122
gitfiti.py
@ -1,5 +1,18 @@
|
|||||||
#gitfiti
|
#gitfiti
|
||||||
import os, sys
|
#generate a value insertion plan for a 7xN matrix
|
||||||
|
#github new repo in account
|
||||||
|
#git init new repo
|
||||||
|
# git add gitfiti_output
|
||||||
|
# start of file:
|
||||||
|
# git commit -date $(date in the past) gitfiti_output
|
||||||
|
# for day in matrix:
|
||||||
|
# for value in day:
|
||||||
|
# add a character to gitfiti file
|
||||||
|
# git commit -m -date $date_value gitfiti_output "g"
|
||||||
|
#git add remote (get github url)
|
||||||
|
#git push -f master
|
||||||
|
|
||||||
|
import os, sys, datetime, math
|
||||||
try:
|
try:
|
||||||
import requests
|
import requests
|
||||||
except:
|
except:
|
||||||
@ -9,53 +22,90 @@ except:
|
|||||||
BASEURL='https://github.com/'
|
BASEURL='https://github.com/'
|
||||||
color_commit_values=[0,1,2,3,4]
|
color_commit_values=[0,1,2,3,4]
|
||||||
|
|
||||||
|
|
||||||
def get_calendar(username):
|
def get_calendar(username):
|
||||||
"""retrieves the github commit calendar data for a username"""
|
"""retrieves the github commit calendar data for a username"""
|
||||||
url = BASEURL + 'users/' + username + '/contributions_calendar_data'
|
url = BASEURL + 'users/' + username + '/contributions_calendar_data'
|
||||||
req = requests.get(url)
|
req = requests.get(url)
|
||||||
return req.json()
|
return req.json()
|
||||||
|
|
||||||
|
def max_commits(input):
|
||||||
|
"""finds the highest number of commits in one day"""
|
||||||
|
output = set()
|
||||||
|
for i, j in enumerate(input):
|
||||||
|
output.add(input[i][1])
|
||||||
|
output = list(output)
|
||||||
|
output.sort()
|
||||||
|
output.reverse()
|
||||||
|
return output[0]
|
||||||
|
|
||||||
def trim_calendar(input):
|
def trim_calendar(input):
|
||||||
"""remote the first 6 days to align data with sundays"""
|
"""returns index of first sunday in the input"""
|
||||||
trim=input[6:]
|
for i, j in enumerate(input):
|
||||||
return trim
|
day = input[i][0]
|
||||||
|
day = datetime.datetime.strptime(day, '%Y/%m/%d')
|
||||||
|
weekday = datetime.datetime.weekday(day)
|
||||||
|
if weekday == 6:
|
||||||
|
return i
|
||||||
|
|
||||||
def squash_calendar(input):
|
kitty=[
|
||||||
"""group days into weeks for formatting"""
|
[0,0,0,4,0,0,0,0,4,0,0,0],
|
||||||
c=[]
|
[3,3,4,2,4,4,4,4,2,4,3,3],
|
||||||
input.pop
|
[0,0,4,2,2,2,2,2,2,4,0,0],
|
||||||
return c
|
[3,3,4,2,4,2,2,4,2,4,3,3],
|
||||||
|
[0,0,4,2,2,3,3,2,2,4,0,0],
|
||||||
|
[3,3,4,2,2,2,2,2,2,4,3,3],
|
||||||
|
[0,0,0,4,4,4,4,4,4,0,0,0]]
|
||||||
|
|
||||||
|
oneup=[
|
||||||
|
[0,0,4,4,4,4,4,4,4,0,0],
|
||||||
|
[0,4,2,2,1,1,1,2,2,4,0],
|
||||||
|
[4,3,2,2,1,1,1,2,2,3,4],
|
||||||
|
[4,3,3,4,4,4,4,4,3,3,4],
|
||||||
|
[0,4,4,1,4,1,4,1,4,4,0],
|
||||||
|
[0,0,4,1,1,1,1,1,4,0,0],
|
||||||
|
[0,0,0,4,4,4,4,4,0,0,0]]
|
||||||
|
|
||||||
#find date range for N weeks
|
|
||||||
#each column starts on SUNDAY
|
#each column starts on SUNDAY
|
||||||
|
def multiplier(max_commits):
|
||||||
|
"""calculates a multiplier to scale github colors to commit history"""
|
||||||
|
m = max_commits/4.0
|
||||||
|
m = math.ceil(m)
|
||||||
|
m = int(m)
|
||||||
|
return m
|
||||||
|
|
||||||
#generate a value insertion plan for a 7xN matrix
|
def fakeit(image, reference, multiplier=1):
|
||||||
|
height = range(7)
|
||||||
|
width = len(image[0])
|
||||||
|
cal_index = 0
|
||||||
|
for w in range(width):
|
||||||
|
for h in height:
|
||||||
|
count = image[h][w]*multiplier
|
||||||
|
if count == 0:
|
||||||
|
cal_index += 1
|
||||||
|
continue
|
||||||
|
for c in range(count):
|
||||||
|
date = reference[cal_index][0]
|
||||||
|
date = datetime.datetime.strptime(date, '%Y/%m/%d').isoformat()
|
||||||
|
shelloutput(c, date)
|
||||||
|
cal_index += 1
|
||||||
|
|
||||||
#github new repo in account
|
def shelloutput(content, commitdate):
|
||||||
|
print '''echo ''' + str(content) + ''' >> gitfiti'''
|
||||||
|
print '''GIT_AUTHOR_DATE=''' + commitdate + ''' GIT_COMMITTER_DATE=''' + commitdate + ''' git commit -a -m "''' + "gitfiti" +'''"'''
|
||||||
|
|
||||||
#git init new repo
|
|
||||||
# git add gitfiti_output
|
|
||||||
|
|
||||||
# start of file:
|
#git init gitfitii
|
||||||
# git commit -date $(date in the past) gitfiti_output
|
#cd gitfiti
|
||||||
|
#touch gitfiti
|
||||||
|
#git add gitfiti
|
||||||
|
###SHELLOUTPUT
|
||||||
|
#git remote add origin git@github.com:gelstudios/kitty.git
|
||||||
|
#git push -u origin master
|
||||||
|
|
||||||
# for day in matrix:
|
username='gelstudios'
|
||||||
# for value in day:
|
cal = get_calendar(username)
|
||||||
# add a character to gitfiti file
|
x = trim_calendar(cal)
|
||||||
# git commit -m -date $date_value gitfiti_output "g"
|
m = max_commits(cal)
|
||||||
|
m = multiplier(m)
|
||||||
#git add remote (get github url)
|
cal = cal[x:]
|
||||||
#git push -f master
|
fakeit(kitty, cal, m)
|
||||||
|
|
||||||
#profit!
|
|
||||||
|
|
||||||
test=[
|
|
||||||
[4,3,2,1,0],
|
|
||||||
[3,2,1,0,4],
|
|
||||||
[2,1,0,4,3],
|
|
||||||
[1,0,4,3,2],
|
|
||||||
[0,4,3,2,1]
|
|
||||||
]
|
|
||||||
|
|
||||||
#GIT_AUTHOR_DATE='your date' GIT_COMMITTER_DATE='your date' git commit -m 'new (old) files'
|
|
BIN
gitfiti.pyc
Normal file
BIN
gitfiti.pyc
Normal file
Binary file not shown.
5
text.html
Normal file
5
text.html
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<head>
|
||||||
|
</head>
|
||||||
|
<body><script src='gitfiti.js'></script>
|
||||||
|
</body>
|
7
views/index.tpl
Normal file
7
views/index.tpl
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
login page
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<form>
|
||||||
|
<input>
|
||||||
|
</form>
|
||||||
|
|
Reference in New Issue
Block a user