Skip to content

Instantly share code, notes, and snippets.

@sile
sile / 第09章.md
Last active January 28, 2016 05:36
実践テスト駆動開発第二回

第三部 動くサンプル

ある程度大きな規模の実際に動くサンプルを呈示する

  • 現実のプロジェクトの即した複雑性
    • 外部コンポーネントを含む (swing, XMPP)
    • イベントドリブン、マルチスレッド、分散環境
  • 現実味のあるストーリー
    • 「下した決定が間違っていたことが後になって判明したせいで引き返さねばならなくなった」
  • 往々にして発生するが、放置しておくと、後になって高い代償を払うことになる
@sile
sile / 第20章.md
Last active July 3, 2023 02:01
実践テスト駆動開発第三回

第四部 持続可能なテスト駆動開発

開発が「快適である」状態を維持するために、テストコードに求める質について述べる。

  • テストの表現力を高める必要がある
  • テストコード自体がメンテナンスの足かせにならないようにする
  • テストがしづらいということは、大抵プロダクションコードの設計が間違っているということを示すヒント
  • TDDはテスト/仕様/設計をひとつの全体的な活動としてまとめあげるもの

第20章 テストの声を聞く

-module(ordseq).
-export([
new/0,
is_ordseq/1,
is_empty/1,
len/1,
in/2,
out/1, out_r/1,
peek/1, peek_r/1,
@sile
sile / abst_to_src.erl
Created June 3, 2013 23:26
beamからのソースコードを取得する方法のメモ
%% http://erlang.org/pipermail/erlang-questions/2006-January/018812.html
-module(abst_to_src).
-export([transform/2]).
transform(BeamFName, ErlFName) ->
case beam_lib:chunks(BeamFName, [abstract_code]) of
{ok, {_, [{abstract_code, {raw_abstract_v1,Forms}}]}} ->
Src =
erl_prettypr:format(erl_syntax:form_list(tl(Forms))),
{ok, Fd} = file:open(ErlFName, [write]),
@sile
sile / reloader
Created June 4, 2013 18:07
Erlangで変更があったモジュール(beam)の自動読み込みを行うためのモジュール
http://mochiweb.googlecode.com/svn/trunk/src/reloader.erl
$ erl
1> reloader:start_link().
@sile
sile / lsh.lisp
Created July 9, 2013 15:19
locality sensitive hashingの実装メモ
;; paper: http://www.isi.edu/natural-language/people/ravichan/papers/clustering.pdf
(defun cos-sim (u v &key product length)
(/ (funcall product u v)
(* (funcall length u) (funcall length v))))
(defun h.r (r u)
(if (>= (funcall r u) 0)
1
0))
@sile
sile / card.erl
Last active December 23, 2015 05:48
http://d.hatena.ne.jp/osiire/20090516#1242456737 のErlang版みたいなもの
-module(card).
-export([num/1]).
-export_type([card/0]).
-type card() :: {num, 1..10} | jack | queen | king.
-spec num(card()) -> 1..13.
num({num, N}) -> N;
@sile
sile / AMP-CH2.md
Last active April 18, 2020 21:15
The Art of Multiprocessor Programming - 第二章

二章 Mutual Exclustion - 相互排除

  • 相互排除は、マルチプロセッサプログラミングで最も普及している調整手段
  • この章は、共有メモリを用いた古典的な相互排除アルゴリズムを取り扱う
    • 現実では使われていない。しかし、
      • 相互排除アルゴリズムや正確性問題、同期について考える際の入り口としては理想的
    • 不可能性の証明も導入する
      • 共有メモリを用いた相互排除では何が実現できないか、を教えてくれる
  • アルゴリズムの証明を行っているまれな章でもある

2.1 Time - 時間

@sile
sile / rdbms-6.md
Last active November 9, 2023 00:43
『RDBMS解剖学』の第六章

六章 物理プランの生成

1. この章のテーマ

物理プランの生成および最適化がテーマ。

物理プラン:

  • 「SQLを解釈実行するパーツ」=> 「プランナ」=> 「物理プラン」
  • 論理プランの次のフェーズに位置する
@sile
sile / exception_test.erl
Created May 14, 2014 14:50
Erlangで例外スタックトレースに引数情報を乗せる方法 ref: http://qiita.com/sile/items/2b11cdd0399e20d34dcc
-module(exception_test).
-export([hoge/1, fuga/1]).
%% @doc erlang:error/1を使って例外送出
hoge(_Arg) ->
error(badarg).
%% @doc erlang:error/2を使って例外送出
fuga(Arg) ->