Skip to content

Instantly share code, notes, and snippets.

@hisui
hisui / ipip.rb
Last active December 20, 2015 13:29
Counting number of TCP/IP connections established between given two processes.
#!/usr/local/bin/ruby
require "pp"
if ARGV.size < 2
$stderr.puts "Usage: ruby ipip.rb PID1 PID2"
exit -1
end
pid_1 = ARGV[0]
@hisui
hisui / Play2FunctionalImplicitConversions.scala
Created August 5, 2013 01:32
Enables Play2's FunctionalBuilder for Scala10's Try[A].
import play.api.libs.functional._
import scala.language.higherKinds
import scala.util.{Success, Try}
object Play2FunctionalImplicitConversions {
implicit val tryApplicative:Applicative[Try] =
new Applicative[Try] {
@hisui
hisui / GenericTuple.scala
Created August 5, 2013 04:28
An experiment construction to treat n-tuples generically.
trait GenericTuple[T] {
type Base = T
type Left[A]
type Right[A]
def <<[A](o:Base, a:A): Left[A]
def >>[A](a:A, o:Base):Right[A]
}
@hisui
hisui / HLists.scala
Last active December 20, 2015 15:49
A minimum configuration of Shapeless-like heterological list.
package jp.segfault.optparsec
import scala.language.implicitConversions
import scala.language.postfixOps
import scala.language.higherKinds
object HLists {
import N._
@hisui
hisui / stream.ts
Last active August 21, 2020 21:20
Functional Reactive Programming (FRP) in TypeScript.
// stream.ts - A TypeScript module for FRP.
// - https://gist.github.com/hisui/6261547
// - tsc stream.ts -t es5 --sourcemap --noImplicitAny
module sf {
export class Packet<T> {
constructor(private _flags:number, private _value:any=void 0) {}
static next<A>(e:A):Packet<A> {
@hisui
hisui / TtyOutput.scala
Created August 22, 2013 05:07
Using java.lang.Process in Scala.
package jp.segfault.cvs.util
import scala.concurrent.duration.Duration
import scala.collection.mutable.ArrayBuffer
import scala.util.Try
import java.io._
case class TtyOutput(data:Array[Byte], isError:Boolean)
@hisui
hisui / MiniLB.scala
Last active December 25, 2015 10:59
Software load balancer teki na nanika for testing.
package jp.segfault.minlb
import java.nio.channels._
import java.nio.channels.SelectionKey._
import java.nio.ByteBuffer
import java.net.{HttpURLConnection, URI, InetSocketAddress}
import java.io.IOException
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.TimeoutException
@hisui
hisui / MonadTrans.scala
Last active December 26, 2015 00:38
Lifting a stack of multiple monads at once in Scala. (like Monad Transformer)
import scala.language.higherKinds
import scala.language.implicitConversions
trait Wrap[X] {
type Out[_]
}
object Wrap {
implicit def case0[M[_]] = new Wrap[M[_]] { type Out[a] = M[a] }
implicit def case1[M[_,_],A,B] = new Wrap[M[A,B]] { type Out[a] = M[A,a] }
@hisui
hisui / wscript
Created December 19, 2013 17:02
"wscript" boilerplate for googletest.
def options(ctx):
ctx.load('compiler_cxx')
def configure(ctx):
ctx.env.CXX = 'clang++'
ctx.load('compiler_cxx')
def build(ctx):
ctx(target='mylib',
source=ctx.path.ant_glob('src/*.cpp'),
@hisui
hisui / poly-queue.hpp
Created December 19, 2013 17:06
A fast polymorphic object queue.
#ifndef SF_POLY_QUEUE_H_
#define SF_POLY_QUEUE_H_
#include <stdexcept>
#include <iostream>
#include <stdint.h>
#include <type_traits>
namespace sf {