Skip to content

Instantly share code, notes, and snippets.

@knugie
knugie / poc_meter.rb
Created June 24, 2016 10:51
POC type checking when calculating with unit-based values
class Meter
attr_reader :value, :unit
def initialize(value, unit = 'm')
@value = value
@unit = unit
end
def self.[](value)
self.new(value)
@knugie
knugie / keyboard_layout_switcher
Created June 20, 2016 20:14
Keyboard layout switcher - Xcode project (objective-c, command line tool)
//
// main.m
// keyboard_layout_switcher
//
@import Carbon;
int main(int argc, const char * argv[]) {
@autoreleasepool {
if (argc <= 1){
@knugie
knugie / cluster.rb
Created March 25, 2016 18:38
Cluster numbers by their distance to each other
values = 20.times.map{rand(100)+200}
delta = 10
min, max = values.minmax
offset = min - delta / 2
grouped = values.group_by { |value| (value - offset) / delta }
Hash[grouped.sort]
=begin
@knugie
knugie / count_files.sh
Created February 5, 2016 21:02
List number of files in each directory
find -P . -type f | rev | cut -d/ -f2- | rev | cut -d/ -f1-2 | cut -d/ -f2- | sort | uniq -c
@knugie
knugie / git_hub_pretty_print_markdown_bookmarklet.txt
Created January 28, 2016 22:28
Bookmarklet to pretty-print GitHub markdown file
javascript:(function(e,a,g,h,f,c,b,d)%7Bif(!(f=e.jQuery)%7C%7Cg>f.fn.jquery%7C%7Ch(f))%7Bc=a.createElement("script");c.type="text/javascript";c.src="http://ajax.googleapis.com/ajax/libs/jquery/"+g+"/jquery.min.js";c.onload=c.onreadystatechange=function()%7Bif(!b&&(!(d=this.readyState)%7C%7Cd=="loaded"%7C%7Cd=="complete"))%7Bh((f=e.jQuery).noConflict(1),b=1);f(c).remove()%7D%7D;a.documentElement.childNodes%5B0%5D.appendChild(c)%7D%7D)(window,document,"1.3.2",function($,L)%7B$('%23header, .pagehead, .breadcrumb, .commit, .meta, %23footer, %23footer-push, .wiki-actions, %23last-edit, .actions, .header,.site-footer,.repository-sidebar,.file-navigation,.gh-header-meta,.gh-header-actions,#wiki-rightbar,#wiki-footer,.commit-tease').remove();%20$('%23files,%20.file').css(%7B%22background%22:%22none%22,%20%22border%22:%22none%22%7D);%20$('link').removeAttr('media');%7D); var removeMe = document.getElementsByClassName("file-header")[0]; removeMe.parentNode.removeChild(removeMe);
@knugie
knugie / AES-256-CBC-sample.rb
Last active January 28, 2016 22:05
AES - symmetric algorithms for encryption and decryption
require 'openssl'
require 'digest/sha2'
# Config
alg = "AES-256-CBC"
# Key
key = OpenSSL::Cipher::Cipher.new(alg).random_key
# Init Digest
@knugie
knugie / rename_to_date.sh
Created June 28, 2013 15:34
Rename all file in the current directory according to their file creation date For jpegs the file date will be set according to its EXIF data e.g. "20130628_014218.txt" not renamed "test.TXT" => "20130628_002938.txt" file extensions will be lower case
#!/usr/bin/env sh
# Rename all file in the current directory according to their file creation date
# For jpegs the file date will be set according to its EXIF data
# e.g.
# "20130628_014218.txt" not renamed
# "test.TXT" => "20130628_002938.txt"
# file extensions will be lower case
jhead -ft -dt -autorot -exonly -n%Y%m%d_%H%M%S *.[Jj][Pp][Gg]
@knugie
knugie / lookup.rb
Last active December 24, 2015 02:29
ruby lookup table using Hash
#Lookup Tables, http://en.wikipedia.org/wiki/Lookup_table
#Memoization, http://en.wikipedia.org/wiki/Memoization
require 'benchmark'
###########################################################
# Fibonacci number, http://en.wikipedia.org/wiki/Fibonacci_number
def fib(n)
n < 2 ? 1 : fib(n-2) + fib(n-1)
end
@knugie
knugie / meta_module3.rb
Last active December 21, 2015 13:38
metaprogramming with modules in ruby This will only work with ruby 2.0 http://ruby-doc.org/core-2.0/Module.html#method-i-prepend
module One
def a(*)
puts 'One...'
super
end
end
module Two
def a(*)
puts 'Two...'
@knugie
knugie / bunch_mark.rb
Last active December 19, 2015 02:48
Quick "who's better" - Benchmark script
require 'benchmark'
class Bunch
def self.mark(&block)
first = Bunch.realtime(&block)
vs = {:first => first}
class << vs
def vs(&block)