$ wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains website.org \
$ wget \
--recursive \
--no-clobber \
--page-requisites \
--html-extension \
--convert-links \
--restrict-file-names=windows \
--domains website.org \
# 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 |
require 'openssl' | |
require 'digest/sha2' | |
# Config | |
alg = "AES-256-CBC" | |
# Key | |
key = OpenSSL::Cipher::Cipher.new(alg).random_key | |
# Init Digest |
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); |
find -P . -type f | rev | cut -d/ -f2- | rev | cut -d/ -f1-2 | cut -d/ -f2- | sort | uniq -c |
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 |
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 |
// | |
// main.m | |
// keyboard_layout_switcher | |
// | |
@import Carbon; | |
int main(int argc, const char * argv[]) { | |
@autoreleasepool { | |
if (argc <= 1){ |
class Meter | |
attr_reader :value, :unit | |
def initialize(value, unit = 'm') | |
@value = value | |
@unit = unit | |
end | |
def self.[](value) | |
self.new(value) |
#! /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 |