Skip to content

Instantly share code, notes, and snippets.

💭
一所懸命働いているん

Michael Shapiro koudelka

💭
一所懸命働いているん
Block or report user

Report or block koudelka

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@koudelka
koudelka / type_bully.exs
Created Mar 12, 2016
TypeBully is an (incomplete) toy module to force Elixir functions to respect their typespecs.
View type_bully.exs
#
# 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 Oct 2, 2015
Elixir Set Lookup
View lookup.ex
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 Jul 2, 2014
a silent Mix.Shell.Process
View silent_shell.ex
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 Jun 6, 2014
Possible http status codes module for Elixir Phoenix Web Framework
View gist:f4d07b9d998d723e55a0
#
# 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 Aug 29, 2015
Quick n' dirty utility to compare sysctls between two machines.
View compare_sysctl.rb
#!/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
Compare two files on remote hosts.
View gist:383bb1362432ed320c9b
rdiff() { diff -u <(ssh $1 "cat $3") <(ssh $2 "cat $3") }
@koudelka
koudelka / compare_dpkg.rb
Created May 21, 2014
Quick n' dirty utility to compare the state of packages on two ubuntu/debian machines.
View compare_dpkg.rb
#!/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 = {}
View keybase.md

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 Dec 17, 2012
Deletes all Facebook friend requests, execute on https://www.facebook.com/friends/requests
View gist:4322700
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 Feb 4, 2012
Patches wget to make the --convert-links option also rewrite the provided --input-file
View patch-src__retr.c.diff
--- 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);
You can’t perform that action at this time.