Skip to content

Instantly share code, notes, and snippets.

View charithe's full-sized avatar

Charith Ellawala charithe

View GitHub Profile
@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;
@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 / 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 / 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 / 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 / index.erl
Created March 5, 2017 15:15
FutureLearn Erlang MOOC Week 2: Indexing a file
-module(index).
-export([do_index/1, show_file_contents/1]).
%% Main entrypoint
%% In the Erlang shell, execute: rp(index:do_index("path_to_file")).
%% Reads the contents of the file using the provided functions, builds up a map
%% of words to their locations, compresses the locations to ranges and returns a
%% list sorted in alphabetical order
do_index(Name) ->
Lines = get_file_contents(Name),
@charithe
charithe / client.go
Created March 26, 2017 16:28
GRPC Opentracing Interceptors
package otgrpc
import (
context "golang.org/x/net/context"
"github.com/opentracing/opentracing-go"
"github.com/opentracing/opentracing-go/ext"
"github.com/opentracing/opentracing-go/log"
"google.golang.org/grpc"
)
@charithe
charithe / frequency.erl
Created April 8, 2017 18:20
Concurrent Programming in Erlang: Week1
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(frequency).
-export([start/0,allocate/0,deallocate/1,stop/0]).
@charithe
charithe / frequency.erl
Created April 14, 2017 11:39
Concurrent Programming in Erlang: Week 2
%% Based on code from
%% Erlang Programming
%% Francecso Cesarini and Simon Thompson
%% O'Reilly, 2008
%% http://oreilly.com/catalog/9780596518189/
%% http://www.erlangprogramming.org/
%% (c) Francesco Cesarini and Simon Thompson
-module(frequency).
-export([start/0,allocate/0,deallocate/1,stop/0,spawn_client/1]).
@charithe
charithe / BuildEnvPlugin.scala
Created August 13, 2017 14:51
SBT Build Environment Dependent Docker Image
import BuildEnvPlugin.autoImport.BuildEnv
import com.sun.xml.internal.ws.api.config.management.policy.ManagementAssertion.Setting
import sbt.PluginTrigger.AllRequirements
import sbt.{AutoPlugin, Def, PluginTrigger, Plugins}
import sbtdocker.DockerPlugin
import sbt._
import sbt.Keys._
object BuildEnvPlugin extends AutoPlugin {
override def trigger: PluginTrigger = AllRequirements