Skip to content

Instantly share code, notes, and snippets.

View koudelka's full-sized avatar
💭
一所懸命働いているん

Michael Shapiro koudelka

💭
一所懸命働いているん
View GitHub Profile
@koudelka
koudelka / type_bully.exs
Created March 12, 2016 00:21
TypeBully is an (incomplete) toy module to force Elixir functions to respect their typespecs.
#
# TypeBully forces functions to respect their typespecs by rewriting the function clauses to include proper guards.
#
# For example, the Wimp module below: cry/3 has typespecs, but no enforcing guards, normally, calling cry/3 would
# always match the first function clause, but TypeBully forces it to select the correct one based on its typespec.
#
#
# Without TypeBully:
#
# iex(1)> Wimp.cry("whaa")
@koudelka
koudelka / lookup.ex
Created October 2, 2015 21:13
Elixir Set Lookup
defmodule Lookup do
@wordfile "words.txt"
@external_resource @wordfile
@times 1_000_000
@words @wordfile |> File.stream! |> Enum.map(&String.strip/1)
@hash_set Enum.into(@words, HashSet.new)
@map_set Enum.into(@words, MapSet.new)
@koudelka
koudelka / silent_shell.ex
Created July 2, 2014 19:35
a silent Mix.Shell.Process
defmodule Mix.Shell.Process.Quiet do
@moduledoc """
This is a Mix shell, identical to Mix.Shell.Process, except that console output is silenced.
"""
@behaviour Mix.Shell
defdelegate [flush(callback), cmd(command), prompt(message), yes?(message)], to: Mix.Shell.Process
def print_app, do: nil
@koudelka
koudelka / gist:f4d07b9d998d723e55a0
Created June 6, 2014 20:52
Possible http status codes module for Elixir Phoenix Web Framework
#
# Would this be useful to Phoenix?
#
# In controllers, it'd be nice to be able to refer to status codes as atoms instead of integers.
#
defmodule Phoenix.Controller.StatusCodes do
@http_status_codes %{
@koudelka
koudelka / compare_sysctl.rb
Last active August 29, 2015 14:01
Quick n' dirty utility to compare sysctls between two machines.
#!/usr/bin/env ruby
#
# This utility compares `sysctl -a` on two given boxes
#
puts "Usage: #{$PROGRAM_NAME} hostname other_hostname" and exit unless ARGV.length == 2
SYSCTLS = {}
@koudelka
koudelka / gist:383bb1362432ed320c9b
Created May 21, 2014 22:05
Compare two files on remote hosts.
rdiff() { diff -u <(ssh $1 "cat $3") <(ssh $2 "cat $3") }
@koudelka
koudelka / compare_dpkg.rb
Created May 21, 2014 21:57
Quick n' dirty utility to compare the state of packages on two ubuntu/debian machines.
#!/usr/bin/env ruby
#
# This utility compares the state of `dpkg -l` on two given boxes
#
puts "Usage: #{$PROGRAM_NAME} hostname other_hostname" and exit unless ARGV.length == 2
PACKAGES = {}

Keybase proof

I hereby claim:

  • I am koudelka on github.
  • I am koudelka (https://keybase.io/koudelka) on keybase.
  • I have a public key whose fingerprint is 7E62 AE05 4D2C 2331 76DF F5AC 81D1 A93F 604E 49B3

To claim this, I am signing this object:

@koudelka
koudelka / gist:4322700
Created December 17, 2012 21:59
Deletes all Facebook friend requests, execute on https://www.facebook.com/friends/requests
var x = document.evaluate('//input[@value="Delete Request"]', document.documentElement, null, XPathResult.ANY_TYPE, null);
// gotta build an array of the elements, iterators throw exceptions if you modify the DOM from under them
var elements = [];
var thisNode = x.iterateNext();
while (thisNode) {
elements.push(thisNode);
thisNode = x.iterateNext();
}
@koudelka
koudelka / patch-src__retr.c.diff
Created February 4, 2012 19:24
Patches wget to make the --convert-links option also rewrite the provided --input-file
--- retr.c.orig 2011-08-30 08:47:33.000000000 -0500
+++ retr.c 2012-02-04 13:01:29.000000000 -0600
@@ -944,6 +944,13 @@
set_uri_encoding (iri, opt.locale, true);
set_content_encoding (iri, opt.locale);
+ int input_url_len = strlen(opt.base_href) + strlen(file) + 1;
+ char *input_url = (char *)calloc(input_url_len, sizeof(char));
+ strcat(input_url, opt.base_href);
+ strcat(input_url, file);