Skip to content

Instantly share code, notes, and snippets.

@sile
sile / json_error_line.erl
Created February 14, 2017 11:43
jsoneのデコード失敗時にエラー行番号を取得する
-module(json_error_line).
-export([parse_json/1]).
-spec parse_json(binary()) -> {ok, term()} | {error, Line::integer(), term()}.
parse_json(Json) ->
case jsone:try_decode(Json) of
{ok, Value, _} ->
{ok, Value};
{error, {badarg, [{_, _, [Rest | _], _} | _]} = Reason} ->
@sile
sile / 0_succ_bp.md
Last active July 17, 2023 23:57
簡潔データ構造やBalancedParenthesesの紹介資料メモ

発表資料メモ: 簡潔データ構造について

  1. 主題

  • 数千万オーダーの文字列集合(およびマップ)を如何にサイズ効率良く表現するか、の話
    • 諸事情で集合をメモリ上に保持したいことがあるが、サイズは節約したい
    • 実際にはサイズのみを追求するのではなく、諸々のトレードオフを加味しつつバランスを取る
  • 今回はそれを実現するための方法の一つである 簡潔データ構造 について説明する:
@sile
sile / huffman.rs
Last active October 13, 2016 05:44
ハフマン符号化実装メモ
use std::collections::HashMap;
use std::collections::BinaryHeap;
fn main() {
let input_bytes = include_bytes!("/path/to/file");
let mut count = HashMap::new();
for b in input_bytes.iter() {
*count.entry(*b).or_insert(0) += 1;
}
println!("{:?}", count);
@sile
sile / damps-12.md
Last active June 30, 2019 20:33
Distributed Algorithms for Message-Passing System: 第十二章

第四部 ハイレベル通信抽象

第四部の内容:

  • メッセージの非同期送受信に基づく分散システムに、ハイレベルな通信抽象を付与する
  • 12章:
    • メッセージ配送順序が特定の性質を満たすようにするための抽象群を扱う
    • 因果メッセージ配送、が一番重要
  • 13章:
  • ランデブー通信抽象、および、論理的に即時な通信、を扱う
@sile
sile / README.md
Last active February 16, 2018 11:52
ErgoDox EZのカスタマイズ方法メモ
@sile
sile / time-clocks.md
Last active January 18, 2024 07:50
『Time, Clocks, and the Ordering of Events in a Distributed System』の要約

Time, Clocks, and the Ordering of Events in a Distributed System

http://research.microsoft.com/en-us/um/people/lamport/pubs/time-clocks.pdf の要約。

著者はレスリー・ランポート (Leslie Lamport), 1978年。

分散アルゴリズムの書籍や論文でお馴染みの、分散システムにおけるイベント群の順序や時刻の概念を説明している論文。

! が先頭についている箇所は、要約者による(いい加減な)注釈。

@sile
sile / 0_reuse_code.js
Created May 3, 2016 14:51
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@sile
sile / damps-08.md
Last active June 30, 2019 20:33
Distributed Algorithms for Message-Passing System: 第八章

第八章 非同期分散チェックポイント

  • 非同期分散システム上でのチェックポイントを扱う章
  • 最初に以下を提示:
    • ローカル及びグローバルチェックポイントの概念
    • 同じ一貫グローバルチェックポイントに属するローカルチェックポイント群のための必要条件と十分条件を述べた定理
  • 次に、ローカルチェックポイントによって拡張された分散計算に関連する 以下の二つの一貫性条件を考える (後者の方が強い):
      1. Zサイクルフリーダム: 任意のローカルチェックポイントが、一貫グローバルチェックポイントに属することを保証する
    1. ロールバック依存追跡性: 一貫グローバルチェックポイントが、オンザフライで各ローカルチェックポイントに紐付け可能なことを示す
@sile
sile / ppg.md
Last active October 8, 2022 12:17
Plumtree/HyParView/ppgについて

これは何?

注意

  • 内容の質はメモ書きレベル
  • ほぼ思いつきで書いているので正しさの保証も無し
    • ここで紹介したアルゴリズムに興味を持った人は、オリジナルの論文を読むことを推奨
@sile
sile / damps-06.md
Last active January 20, 2021 22:33
Distributed Algorithms for Message-Passing Systems: 第六章

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

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

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

六章:

  • プロセスのイベント群の部分順序によって、分散計算を表現する方法