Skip to content

Instantly share code, notes, and snippets.

Luke Horvat lukehorvat

Block or report user

Report or block lukehorvat

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@lukehorvat
lukehorvat / ban-generators-and-async.json
Last active Jul 31, 2018
ESLint rule to disallow generators and async/await. Since AST selectors are used, ESLint 3.18.0 (or higher) is required.
View ban-generators-and-async.json
{
"rules": {
"no-restricted-syntax": [
"error",
"[generator=true]",
"[async=true]",
"AwaitExpression"
]
}
}
@lukehorvat
lukehorvat / get-color-in-range.js
Last active Jun 21, 2016
Get a color within a defined color range, based on a percentage number.
View get-color-in-range.js
import { scaleLinear } from "d3-scale";
const getColor = scaleLinear().domain([0, 100]).range(["#ccc", "#419fcf"]);
getColor(0); // 0% = #ccc
getColor(80); // 80% = #5da8ce
getColor(100); // 100% = #419fcf
@lukehorvat
lukehorvat / express-curl-middleware.js
Created Aug 27, 2015
Express middleware to log a JSON request as a cURL command. Inspired by Chrome's "Copy as cURL" feature.
View express-curl-middleware.js
// After body-parsing middleware...
app.use(function(req, res, next) {
console.log(
"curl '%s://%s%s' -X %s -H 'Content-Type: %s' -d '%s'",
req.protocol,
req.get("host"),
req.originalUrl,
req.method,
req.get("Content-Type"),
JSON.stringify(req.body)
@lukehorvat
lukehorvat / es6-map-to-object-literal.js
Last active Oct 16, 2019
Convert ES6 Map to Object Literal
View es6-map-to-object-literal.js
let map = new Map();
map.set("a", 1);
map.set("b", 2);
map.set("c", 3);
let obj = Array.from(map).reduce((obj, [key, value]) => (
Object.assign(obj, { [key]: value }) // Be careful! Maps can have non-String keys; object literals can't.
), {});
console.log(obj); // => { a: 1, b: 2, c: 3 }
@lukehorvat
lukehorvat / interceptors.coffee
Last active Dec 23, 2015
An example of how to use request/response interceptors in AngularJS 1.2 for consistent API interactions. This code does two things: 1) Automatic injection of the user auth token in all API requests. 2) Automatic event firing when the user receives an API response indicating a 401 (unauthorised) request.
View interceptors.coffee
.config ($httpProvider) ->
$httpProvider.interceptors.push ($q, $rootScope, apiUrl, authToken) ->
request: (config) ->
# Intercept API requests and inject the auth token.
config.headers["X-Auth-Token"] = authToken if config.url.indexOf(apiUrl) is 0 and authToken?
config or $q.when config
responseError: (response) ->
# Intercept unauthorised API responses and fire an event.
@lukehorvat
lukehorvat / routes.html.erb
Created Sep 1, 2013
List all of the routes in your Ruby on Rails application in a nicely-formatted HTML table. Well-suited to those times when you're building an API and need an "auto-updating" reference page of application endpoints that you can share with others.
View routes.html.erb
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Routes</title>
<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
@lukehorvat
lukehorvat / excel-grid-plugin.js
Last active Mar 8, 2019
An Ext JS 4 grid plugin that provides Microsoft Excel-esque cell navigation and editing via keyboard. (License: MIT License)
View excel-grid-plugin.js
var newGridCellValue = '',
deleteGridCellValue = false;
Ext.define('ExcelCellEditing', {
extend: 'Ext.grid.plugin.CellEditing',
alias: 'plugin.excelcellediting',
initEditTriggers: function () {
var me = this;
@lukehorvat
lukehorvat / sibelius_fixer.bat
Created Jan 15, 2013
Batch file for fixing WAVs exported from Sibelius. Uses SoX to process files.
View sibelius_fixer.bat
cd %~dp0
mkdir converted
FOR %%A IN (%*) DO (
sox %%A "converted/%%~nxA" reverse trim 4.3 reverse trim 0.3 gain -n -1
lame -V7 converted/%%~nxA
)
pause
@lukehorvat
lukehorvat / decision_instructions.py
Last active Dec 11, 2015
[Blog post code] Genetic Programming with esec: An Introductory Example
View decision_instructions.py
instructions = [
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.outlook == 'SUNNY' else (2 if fitness_case.outlook == 'OVERCAST' else 3), param_count=3, name='OUT'),
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.humidity == 'HIGH' else 2, param_count=2, name='HUM'),
DecisionInstructionWithState(lambda fitness_case: 1 if fitness_case.windy else 2, param_count=2, name='WIND'),
]
@lukehorvat
lukehorvat / gp_decision_tree.py
Created Jan 15, 2013
An introduction to genetic programming with esec demonstrating decision tree induction.
View gp_decision_tree.py
from esec import esdl_eval
from esec.species.tgp import Instruction, DecisionInstructionWithState
from esec.landscape.tgp import TGPFitness
#define the attributes of a Saturday morning
OUTLOOK = ('SUNNY', 'OVERCAST', 'RAIN')
HUMIDITY = ('HIGH', 'NORMAL')
WINDY = (True, False)
#define the state object to store attributes of a Saturday morning
You can’t perform that action at this time.