Skip to content

Instantly share code, notes, and snippets.

View charithe's full-sized avatar

Charith Ellawala charithe

View GitHub Profile
@charithe
charithe / assignment.erl
Created February 25, 2017 19:47
FutureLearn Erlang MOOC: Assignment 1
-module(assignment).
-export([perimeter/1, area/1, enclose/1, bits/1]).
perimeter({circle, {_X, _Y}, R}) -> 2 * math:pi() * R;
perimeter({rectangle, {_X, _Y}, H, W}) -> 2 * (H + W);
%% A triangle is defined by its' three coordinates.
perimeter({triangle, {X1, Y1}, {X2, Y2}, {X3, Y3}}) ->
A = distance({X1, Y1}, {X2, Y2}),
@charithe
charithe / TypesafeConfigMacros.scala
Created March 29, 2016 09:17
Scala macro for accessing Typesafe Config objects
import com.typesafe.config.Config
import scala.language.experimental.macros
import scala.reflect.macros.whitebox
import scala.reflect.runtime.universe._
object TypesafeConfigMacros {
def asImpl[T: c.WeakTypeTag](c: whitebox.Context)(key: c.Expr[String])(tag: c.Expr[WeakTypeTag[T]]): c.Expr[Option[T]] = {
@charithe
charithe / curry.exs
Created January 4, 2015 15:10
Elixir Currying With Macros
defmodule Curry do
defmacro defcurry({func_name, _func_ctx, args}, do: body) do
num_args = Enum.count(args)
if num_args - 1 >= 1 do
new_args = Enum.take(args, num_args - 1)
quote do
def unquote(func_name)(unquote_splicing(args)) do
unquote(body)
end
@charithe
charithe / dnscrypt.service
Created June 8, 2013 17:14
systemd service definition for the dnscrypt-proxy. For more information, see my blog post at http://www.lucidelectricdreams.com/2013/06/setting-up-dnscrypt-on-fedora.html
[Unit]
Description=dnscrypt - Encrypted DNS service provided by OpenDNS
After=NetworkManager.service
[Service]
ExecStart=/usr/local/sbin/dnscrypt-proxy -u dnscrypt
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=basic.target
@charithe
charithe / SSTableExport.java
Created December 28, 2012 11:59
Patches to Cassandra Tools
import static org.apache.cassandra.utils.ByteBufferUtil.bytesToHex;
import static org.apache.cassandra.utils.ByteBufferUtil.hexToBytes;
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.ColumnFamily;
import org.apache.cassandra.db.CounterColumn;
import org.apache.cassandra.db.DecoratedKey;