Skip to content

Instantly share code, notes, and snippets.

View AlphaGit's full-sized avatar

Alpha AlphaGit

View GitHub Profile
@AlphaGit
AlphaGit / minimizeCrossings.js
Created April 20, 2014 21:19
Sugiyama algorithm: minimizing crossings, naive approach
var minimizeCrossingsArisingFromColumnAndRows = function(grid, columnIndex, rowIndex1, rowIndex2) {
var originalNode1 = grid[columnIndex][rowIndex1];
var originalNode2 = grid[columnIndex][rowIndex2];
var nextColumn = grid[columnIndex + 1];
for (var nextNode1Index = 0; nextNode1Index < originalNode1.nextNodes.length; nextNode1Index++) {
var nextNode1 = originalNode1.nextNodes[nextNode1Index];
var nextNode1Row = nextColumn.indexOf(nextNode1);
for (var nextNode2Index = 0; nextNode2Index < originalNode2.nextNodes.length; nextNode2Index++) {
@AlphaGit
AlphaGit / addFakeNodes.js
Created April 19, 2014 18:48
Sugiyama algorithm: add fake nodes when needed
var fakeNodeData = { __fake: true };
sugiyamaService.insertFakeNodeBeforeNext = function(list, currentNode, nextNode) {
var fakeNode = sugiyamaService.createNode(fakeNodeData);
sugiyamaService.disconnectNodes(currentNode, nextNode);
sugiyamaService.connectNodes(fakeNode, nextNode);
sugiyamaService.connectNodes(currentNode, fakeNode);
list.push(fakeNode);
@AlphaGit
AlphaGit / arrangeInLayers.js
Last active August 29, 2015 14:00
Arrange nodes of an acyclic graph in layers of dependencies
// example as described in http://blog.alphasmanifesto.com/2014/04/12/what-now-graficando-dependencias/
function arrangeInLayers(graph) {
var nodesToVisit = graph.slice(0);
var visitedNodes = [];
var layers = [];
var currentLayer = [];
while (nodesToVisit.length) {
for (var i = nodesToVisit.length - 1; i >= 0; i--) {
@AlphaGit
AlphaGit / linesInd3.js
Created April 13, 2014 02:09
Creating lines in d3.js
svg.append('line')
.attr('x1', arrowOrigin.x)
.attr('y1', arrowOrigin.y)
.attr('x2', arrowDestiny.x)
.attr('y2', arrowDestiny.y)
.attr('stroke-width', 2)
.attr('stroke', 'black');
@AlphaGit
AlphaGit / ManagedFusion.Rewriter.txt
Last active December 26, 2015 15:49
ManagedFusion.Rewriter.txt configuration file example
RewriteEngine On
# Uncomment these lines to enable logging
# RewriteLog "log.txt"
# RewriteLogLevel 9
RewriteRule ^/api/(.*) http://api.anotherserver.com/$1 [QSA,P,NC]
RewriteRule ^/testing/(.*) http://blog.alphasmanifesto.com/$1 [QSA,P,NC]
@AlphaGit
AlphaGit / web.config
Last active December 26, 2015 15:49
ManagedFusion.Rewriter configuration
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="managedFusion.rewriter" type="ManagedFusion.Rewriter.Configuration.ManagedFusionRewriterSectionGroup"/>
</configSections>
<!-- ... más configuraciones... -->
<system.webServer>
<!-- ... más configuraciones... -->
<modules>
@AlphaGit
AlphaGit / remvsem1.css
Created June 2, 2013 20:45
rem vs em: em
html { font-size: 18px; }
p { font-size: 0.8em; }
p small { font-size: 0.625em; }
@AlphaGit
AlphaGit / remvsem1.css
Last active December 18, 2015 00:09
rem vs em: rem
html { font-size: 18px; }
p { font-size: 0.8rem; }
p small { font-size: 0.5rem; }
Ball.prototype = Object.create(DrawableCircle.prototype);
Ball.prototype.constructor = DrawableCircle;
function Ball(drawingContext, color, radius, stageHeight, stageWidth) {
var self = this;
self.centerBall = function() {
self.centerX = (stageWidth - radius*2) / 2;
self.centerY = (stageHeight - radius*2) / 2;
}
self.centerBall();
// helper: grid calculator for coordinate system
function GridCalculator(realHeight, realWidth, numColumns, numRows) {
var self = this;
self.numColumns = numColumns;
self.numRows = numRows;
var getNumRows = function() {
return self.numRows;
}