Skip to content

Instantly share code, notes, and snippets.

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

第三部 動くサンプル

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

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

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

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

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

第20章 テストの声を聞く

View ordseq.erl
-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 Jun 3, 2013
beamからのソースコードを取得する方法のメモ
View abst_to_src.erl
%% 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 Jun 4, 2013
Erlangで変更があったモジュール(beam)の自動読み込みを行うためのモジュール
View reloader
http://mochiweb.googlecode.com/svn/trunk/src/reloader.erl
$ erl
1> reloader:start_link().
@sile
sile / lsh.lisp
Created Jul 9, 2013
locality sensitive hashingの実装メモ
View lsh.lisp
;; 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))
View card.erl
-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 Apr 18, 2020
The Art of Multiprocessor Programming - 第二章
View AMP-CH2.md

二章 Mutual Exclustion - 相互排除

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

2.1 Time - 時間

@sile
sile / rdbms-6.md
Last active Aug 29, 2015
『RDBMS解剖学』の第六章
View rdbms-6.md

六章 物理プランの生成

1. この章のテーマ

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

物理プラン:

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