Skip to content

Instantly share code, notes, and snippets.

View komamitsu's full-sized avatar

Mitsunori Komatsu komamitsu

View GitHub Profile
@komamitsu
komamitsu / myecho.ml
Created November 13, 2011 14:14
a Lwt echo server for practice
(* ocamlfind c -w A -linkpkg -package lwt,lwt.unix,lwt.syntax -syntax camlp4o,lwt.syntax myecho.ml -o myecho *)
(* This code refers to https://github.com/avsm/ocaml-cohttpserver/blob/master/server/http_tcp_server.ml *)
open Lwt
let server_port = 12345
let so_timeout = Some 20
let backlog = 10
let try_close chan =
catch (fun () -> Lwt_io.close chan)
@komamitsu
komamitsu / gist:1528682
Created December 28, 2011 17:00
NIO Echo Server
package com.komamitsu;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.Iterator;
@komamitsu
komamitsu / gist:1698799
Created January 29, 2012 13:23
OCaml merge sort
let split_rev cut xs =
let (_, f, s) =
List.fold_left
(fun (i, f, s) x ->
if i < cut then (i + 1, x::f, s) else (i + 1, f, x::s))
(0, [], []) xs
in
(f, s)
let rec ms xs =
@komamitsu
komamitsu / gist:1760759
Created February 7, 2012 17:05
Executors sample
package com.komamitsu;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class App {
private static class MyRunnable implements Runnable {
private int num = 0;
@Override
@komamitsu
komamitsu / calc.rb
Created February 11, 2012 14:11
simple calc (LL parser)
require 'strscan'
require 'test/unit'
class Calc
def run(str)
@scanner = StringScanner.new(str)
expr
end
def scan(re)
@komamitsu
komamitsu / mecab_mc.rb
Created February 15, 2012 14:29
practice for using MeCab and Markov chain
# Encoding: UTF-8
require 'MeCab'
mecab = MeCab::Tagger.new
node = mecab.parseToNode (ARGF.read)
x,y = nil,nil
acm = []
while node do
@komamitsu
komamitsu / AndroidManifext.xml
Created February 23, 2012 15:52
Android Simple web server using NanoHTTPD (http://elonen.iki.fi/code/nanohttpd)
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
@komamitsu
komamitsu / nqueen.ml
Created April 20, 2012 15:59
N Queen problem in OCaml
let ($) f g = f g
let safe n q qs =
let (qx, qy) = q in
if List.exists begin
fun (x, y) -> qx = x || qy = y
end qs then false
else
let rec row_iter iy =
if iy >= n then true
@komamitsu
komamitsu / gist:2485599
Created April 25, 2012 02:24
decompiled Scala traits with javap
komamitsu@carrot ~/lab/scala/traitsample2 $ cat Hello.scala
trait T1 {
val age:Int
}
trait T2 {
def hello(name:String) = println("hello " + name)
}
class C extends T1 with T2 { val age = 42 }
class Hoge {
def fib(n: Int, i: Int, a: Int, b: Int) : Int = {
if (i >= n) b
else fib(n, i + 1, b, a + b)
}
def simple_tailrec(n: Int) : Int = {
if (n < 0) n else simple_tailrec(n - 1)
}
}