Skip to content

Instantly share code, notes, and snippets.

View akiradeveloper's full-sized avatar

Akira Hayakawa akiradeveloper

View GitHub Profile
@akiradeveloper
akiradeveloper / gist:b9230083189e7e403c6e
Created July 8, 2014 10:49
Most right bit search algorithm
#include <stdio.h>
#include <time.h>
static int table[] = {
0, 1, 11, 2, 8, 12, 28, 3,
9, 26, 13, 15, 29, 23, 4 ,17,
31, 10, 7, 27, 25, 14, 22, 16,
30, 6, 24, 21, 5, 20, 19, 18
};
!/bin/sh
cat /dev/null > mylog
# ThinpMixin needs this
modprobe dm-bufio
# dm-writeboost needs these
modprobe libcrc32c
# insmod /root/dm-writeboost/src/dm-writeboost.ko
@akiradeveloper
akiradeveloper / gist:10ebbc9580faff98e69d
Created October 16, 2014 10:09
再帰的に副作用を書きたい
let put_stone t (i, j) a = set (get t i) j a
let put_stones t [] = ()
let put_stones t ((i, j, a) :: xs) =
put_stone t (i, j) a ;
Printf.printf "(%d,%d,%d)" i, j, a ;
put_stones t xs
;;
@akiradeveloper
akiradeveloper / gist:d1ccc0caff26b75073df
Created October 16, 2014 10:46
zip関数. 何を間違えてる?いきなり基底部にマッチしようとしてないか?
let rec zip ((i, j) :: xs) (a :: ys) = (i, j, a) :: (zip xs ys)
let zip [] _ = []
let zip _ [] = []
;;
@akiradeveloper
akiradeveloper / gist:505c0ff21658e18d4469
Created October 17, 2014 14:49
こういう構造どうやって書くの?
# CASE1
// C code
if (cond)
do_A()
do_B()
// OCaml
@akiradeveloper
akiradeveloper / gist:3428540a930d38fba5e7
Created October 18, 2014 12:50
副作用 - 計算 - 副作用 (もっと良い書き方がありますか?
let will_take_one t (i, j, a) =
let r = ref false in
begin
t.matrix.(i).(j) <- a ;
r := List.length @@ remove_list_by_put t (i, j, a) = 1;
t.matrix.(i).(j) <- 3 ;
end ;
!r
;;
@akiradeveloper
akiradeveloper / gist:e5e86f109a92fff3ecbc
Created November 8, 2014 10:00
utopがinstallされない (make installが必要じゃない?opamの設定ファイルのミスでは)
Installing base-no-ppx.base.
Building lwt.2.4.6:
./configure --prefix /home/akira/.opam/4.01.0 --disable-libev --enable-react --disable-ssl --enable-unix --enable-extra --enable-preemptive --disable-glib --disable-ppx
make build
make install
Installing lwt.2.4.6.
Building lambda-term.1.7:
ocaml setup.ml -configure --prefix /home/akira/.opam/4.01.0
ocaml setup.ml -build
ocaml setup.ml -install
@akiradeveloper
akiradeveloper / gist:45cce459fc3b373cd240
Created December 20, 2014 14:22
Writeboost read-caching prototype (DON'T APPLY)
diff --git a/drivers/staging/writeboost/dm-writeboost-target.c b/drivers/staging/writeboost/dm-writeboost-target.c
index 01349a5..b30227d 100644
--- a/drivers/staging/writeboost/dm-writeboost-target.c
+++ b/drivers/staging/writeboost/dm-writeboost-target.c
@@ -990,6 +990,7 @@ static void dec_inflight_ios(struct wb_device *wb, struct segment_header *seg)
* After returned, refcounts (in_flight_ios and in_flight_plog_writes)
* are incremented.
*/
+static void might_cancel_read_cache_cell(struct wb_device *, struct bio *);
static void prepare_write_pos(struct wb_device *wb, struct bio *bio,
@akiradeveloper
akiradeveloper / gist:b0e76af9c81a5b52e666
Created December 31, 2014 13:25
[RFC] DM-Writeboost doc
DM-Writeboost
=============
DM-Writeboost target provides block-level log-structured caching.
All cache data, writes and reads, are written to the cache device in sequential
manner.
Mechanism
=========
Controlling three layers (RAM buffer, cache device and backing device)
@akiradeveloper
akiradeveloper / gist:f9c47016ef6eb092838e
Created January 12, 2015 12:18
Not compiled. I expect it prints "I am T2"
type
T1 {.inheritable.} = object
T2 = object of T1
T3 = object of T1
method f(x:T2) =
echo "I am T2"
method f(x:T3) =
echo "I am T3"
type S1 = object
t: T1