Skip to content

Instantly share code, notes, and snippets.

@sile
sile / damps-06.md
Last active January 20, 2021 22:33
Distributed Algorithms for Message-Passing Systems: 第六章

第二部 分散システムでの論理時間とグローバル状態

第二部は四章からなり、以下の内容を扱っている:

  • 分散計算の、イベント/ローカル状態/グローバル状態、の概念
  • それらに関連した論理時間について
  • => __信頼可能な__分散システム上での非同期分散計算の性質を考察する上で基礎となる概念

六章:

  • プロセスのイベント群の部分順序によって、分散計算を表現する方法
@sile
sile / damps-05.md
Last active June 30, 2019 20:33
Distributed Algorithms for Message-Passing Systems: 第五章

第五章 ネットワークを航行するモバイルオブジェクト

概要:

  • モバイルオブジェクト:
    • ユーザプロセスのリクエストに応じて、プロセスからプロセスへと移動する
  • この章では、モバイルオブジェクトがネットワークを航行するためのアルゴリズム、を扱う:
    • 性質の異なる三つの分散アルゴリズムを取り上げる
    • 全てのアルゴリズムは、以下を保証する:
  • 整合性: オブジェクトは同時に複数プロセスに存在しない
@sile
sile / damps-04.md
Last active May 24, 2022 09:57
Distributed Algorithms for Message-Passing Systems: 第四章

第四章 リーダー選出アルゴリズム

抜粋

  • リーダー選出問題を扱った章
  • リーダー選出:
    • 分散システムを構成するプロセス群中から一つを選ぶ
    • 通常、選ばれたプロセスは、調整/制御を目的とし、特別な役割を果たすことが要求される
  • リーダー選出は分散システムの対称性を崩す
@sile
sile / damps-01.md
Last active May 1, 2020 19:36
Distributed Algorithms for Message-Passing Systems: 第一章

第一部 分散グラフアルゴリズム

第一部は分散グラフアルゴリズムを扱う:

  • 分散システムをグラフと見立てる
    • 頂点はプロセス(ノード)に対応
    • 辺は通信チャンネルに対応

五章構成:

  • 一章: 基礎定義とネットワーク探索
@sile
sile / damps-frontmatter.md
Last active June 30, 2019 20:33
Distributed Algorithms for Message-Passing Systems: formatter and backmatter

前付

序文

分散コンピューティングとは何か?

1970年代後半に生まれた:

  • 研究者/実践者が物理分散システムに固有の性質に取り組み始めた
@sile
sile / coverage.txt
Last active August 29, 2015 14:23
OTP18.0でのカバレッジ出力確認
# package: http://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_3_general/esl-erlang_18.0-1~ubuntu~precise_amd64.deb
$ erl +V
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 7.0
$ git clone git@github.com:sile/jsone
$ cd jsone/
$ make init
$ make eunit
$ w3m -dump .eunit/jsone_decode.COVER.html
File generated from /path/to/jsone/.eunit/jsone_decode.erl by COVER 2015-06-26 at 02:07:11
@sile
sile / hood_melville_queue.erl
Last active August 29, 2015 14:23
PFDSの演習問題8.3の解答案 (コンパイルが通ることは確認、未実行)
-module(hood_melville_queue). % Exercise 8.3 version
-export([empty/0, snoc/2, tail/1]).
empty() ->
{0, [], idle, []}.
snoc({Diff, F, State, R}, X) ->
check({Diff-1, F, State, [X | R]}).
@sile
sile / pfds-10-11-summary.md
Last active August 29, 2015 14:21
Purely Functional Data Structures: 第10章〜第11章

9 Numerical Representations

九章は前回に終わらなかった分を軽く取り上げる。

9.3 Skew Binary Numbers

{lazy,segmented}-binary-numbersを使って、inc/decをO(1)で実行する方法を見てきた:

  • 三番目の方法を紹介: skew-binary-numbers
> timer:tc(fun() -> list_to_binary([ io_lib:format("~2.16.0B", [X]) || <<X:8>> <= list_to_binary(lists:seq(0,255)) ]) end).
{1565,
<<"000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435"...>>}
> timer:tc(fun() -> << <<if X < 10 -> X + $0; true -> X - 10 + $A end>> || <<X:4>> <= list_to_binary(lists:seq(0,255)) >> end).
{2784,
<<"000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435"...>>}
> timer:tc(fun() -> hexlify:hex1(list_to_binary(lists:seq(0,255))) end).
{220,
@sile
sile / pfds-08-09-summary.md
Last active August 29, 2015 14:21
Purely Functional Data Structures: 第8章〜第9章

8 Lazy Rebuilding

8.1 Batched Rebuilding

  • データ構造を一度に再構築して、完全にバランスした状態にする
  • 再構築の頻度は、全体の(償却)計算量を増加させない範囲にする
  • e.g. 5.2のキュー、ハッシュテーブルのリサイズ