Skip to content

Instantly share code, notes, and snippets.

View lukehorvat's full-sized avatar

Luke Horvat lukehorvat

View GitHub Profile
@lukehorvat
lukehorvat / NumberPickerDialogPreference.java
Last active June 17, 2021 14:06
An Android preference class that provides a user with the means to select an integer from a NumberPicker and persist it. (License: MIT License)
package com.lukehorvat;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.NumberPicker;
@lukehorvat
lukehorvat / SeekBarDialogPreference.java
Last active December 10, 2015 06:58
An Android preference class that provides a user with the means to select an integer from a SeekBar and persist it. (License: MIT License)
package com.lukehorvat;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.SeekBar;
@lukehorvat
lukehorvat / ConcurrentImageBrightnessNormalizer.cs
Last active December 11, 2015 03:28
An example of concurrent image brightness normalization in C#.
//determine the brightness range of this thread's image strip
Tuple brightnessRange = GetImagePartBrightnessRange(image, startX, startY, finishX, finishY);
//update the global brightness range of the entire image
lock (_lock)
{
minBrightness = Math.Min(minBrightness, brightnessRange.Item1);
maxBrightness = Math.Max(maxBrightness, brightnessRange.Item2);
}
@lukehorvat
lukehorvat / gp_decision_tree.py
Created January 15, 2013 10:42
An introduction to genetic programming with esec demonstrating decision tree induction.
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
@lukehorvat
lukehorvat / decision_instructions.py
Last active December 11, 2015 03:28
[Blog post code] Genetic Programming with esec: An Introductory Example
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 / sibelius_fixer.bat
Created January 15, 2013 12:25
Batch file for fixing WAVs exported from Sibelius. Uses SoX to process files.
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 / excel-grid-plugin.js
Last active June 20, 2024 00:09
An Ext JS 4 grid plugin that provides Microsoft Excel-esque cell navigation and editing via keyboard.
var newGridCellValue = '',
deleteGridCellValue = false;
Ext.define('ExcelCellEditing', {
extend: 'Ext.grid.plugin.CellEditing',
alias: 'plugin.excelcellediting',
initEditTriggers: function () {
var me = this;
@lukehorvat
lukehorvat / routes.html.erb
Created September 1, 2013 12:10
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.
<!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 / interceptors.coffee
Last active December 23, 2015 02:49
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.
.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 / es6-map-to-object-literal.js
Last active January 8, 2024 10:32
Convert ES6 Map to Object Literal
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 }