Skip to content

Instantly share code, notes, and snippets.

@knugie
knugie / wget_entire_site.md
Last active May 25, 2022 19:47
Download entire webpage using wget
@knugie
knugie / .zshrc
Last active February 4, 2023 19:10
# Use alt+arrow to move cursor by word# Mac OS X El Capitan # iTerm2 # zsh # ~/.zshrc
# Skip forward/back a word with opt-arrow
# https://gist.github.com/knugie/fc9964695951b4c13ed3
bindkey -e
bindkey '\e\e[C' forward-word
bindkey '\e\e[D' backward-word
@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 / 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 / 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 / count_unique_elements_in_array.rb
Last active May 25, 2022 19:47
Count unique elements in Array
require 'benchmark'
require 'open3'
require 'histogram/array'
array = Array.new(10_000_000) { rand(60) }
puts 'uniq, count:'
uniq_count = Benchmark.measure do
array.uniq.map { |key| array.count(key) }
end
@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 / 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 / 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 / jpg_to_2048.sh
Last active December 4, 2023 06:20
resize and optimize JPEG images to box-fit 2048x2048 pixels with 80% JPEG quality
#! /usr/bin/env bash
# brew install imagemagick
# brew install jpegoptim
mkdir 2048
for image in *.[jJ][pP][eE]?[gG]; do
convert $image -resize 2048x2048\> ./2048/$image
jpegoptim --strip-all -q --max=80 ./2048/$image
done