ikemonn's blog

技術ネタをちょこちょこと

Paxos Made Simple 読んだ

Paxos Made Simpleを読んだ時のメモ。 どんなもの? Paxos 分散合意アルゴリズム 複数のプロセスが値を提案した時に、どのように1つの値を選ぶかについて 技術や手法の肝は? The Problem safety requirements 提案された値のみが選ばれる 1つの値のみが選ば…

Kafka: a Distributed Messaging System for Log Processing を読んだ

Kafka: a Distributed Messaging System for Log Processingを読んだ時のメモ。 どんなもの? LinkedInによって開発された分散メッセージングシステム 大容量のログを高スループットで配信、低レイテンシで収集することを目的としている 先行研究とくらべて…

CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data を読んだ

CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Dataを読んだ時のメモ。 どんなもの? 擬似ランダムデータ分散アルゴリズム データの名前に対して偏りが無いようにデータノードを割り当てる central allocatorがいなくても新しいデー…

Session Guarantees for Weakly Consistent Replicated Data を読んだ

Session Guarantees for Weakly Consistent Replicated Data を読んだ時のメモ。 どんなもの? weak consistencyのread-any, write-anyの特性を活かしつつも、ある1つのクライアントからは一貫性があるように見えるようにしたもの モバイル端末のユーザはrea…

分散システム 原理とパラダイム の同期について読んだ

Time, Clocks, and the Ordering of Events in a Distributed System を読んでいたが、ぼんやりとしか分からなかったので、まず下記の同期の章を読んだ。 分散システム―原理とパラダイム作者: アンドリュー・S.タネンバウム,マールテン・ファンスティーン,An…

Cassandra - A Decentralized Structured Storage System を読んだ

Cassandra - A Decentralized Structured Storage Systemを読んだ時のメモ。 どんなもの? 分散ストレージシステム 大規模データを多数の一般的なサーバに分散させることで可用性を高めて、SPOFを無くす ソフトウェア側で可用性とスケーラビリティをコントロ…

MapReduce: Simplified Data Processing on Large Clusters を読んだ

MapReduce: Simplified Data Processing on Large Clustersを読んだ時のメモ。 どんなもの? 巨大なデータセットを処理するプログラミングモデル Map key/valueのinputを中間的なkey/valueペアにする Reduce 全ての中間的なvalueを中間的なkeyでまとめる 多…

The Dataflow Model を読んだ

The Dataflow Model: A Practical Approach to Balancing Correctness, Latency, and Cost in Massive-Scale, Unbounded, Out-of-Order Data Processingを読んだ どんなもの? unbounded で順不同なデータを処理する上で、正確性、latency、costをいい感じに…

The Chubby lock service for loosely-coupled distributed systems を読んだ

The Chubby lock service for loosely-coupled distributed systemsを読んだ。 ロックについての基礎知識が無くて全然わからなかった。 どんなもの? 分散システム用のlock service coarse-grained lock GFS, BigTable, MapReduceが共有リソースへのアクセス…

The Google File System を読んだ

The Google File System を読んだ。 どんなもの? Googleのサービスの特性に最適化させた、大規模分散システム用のスケーラブルなファイルシステム 廉価で故障しやすいHW上で稼働することを前提とし、耐障害性がある aggregateのパフォーマンスが高い BigTab…

Bigtable: A Distributed Storage System for Structured Data を読んだ

Bigtable: A Distributed Storage System for Structured Data を読んだ時のメモ。 どんなもの? ペタバイト級のデータ、何千台ものサーバまでスケールする大規模分散ストレージ Google Analyics, Google Earth, Web indexing等に使われている 先行研究とく…

Dynamo - Cloud Computing & Big Data Group Discussion を読んだ

Dynamo: Amazon’s Highly Available Key-value Store を読んだのでメモ メモのフォーマットは下記を参考にした。 先端技術とメディア表現1 #FTMA15 from Yoichi Ochiai どんなもの? Dynamoは可用性とスケーラビリティのあるkey-value storage primary key…

統計検定2級に合格しました

概要 統計検定2級 (CBT方式試験) に合格しました。 79/100点でボーダーが60点でした。 Machine Learning | Coursera を受けた後に「統計学について何も知らないので勉強してみよう」と思ったのがきっかけです。 統計検定の勉強自体は2ヶ月ほどで、平日30分~1…

SRM 647 Div2 250 PeacefulLine

問題文 TopCoder Statistics - Problem Statement 書いた class PeacefulLine: def makeLine(self, x): counter = collections.Counter(x) count_arr = [] for word, cnt in counter.most_common(): count_arr.append(cnt) is_continue = True while is_cont…

SRM 642 Div2 250 ForgetfulAddition

問題文 https://apps.topcoder.com/wiki/display/tc/SRM+642 書いた class ForgetfulAddition: def minNumber(self, expression): num = str(expression) res = 0 for i in xrange(1, len(num)): sum_num = int(num[:i]) + int(num[i:]) if res == 0: res = …

SRM 639 Div2 250 ElectronicPetEasy

問題文 https://apps.topcoder.com/wiki/display/tc/SRM+639 書いた class ElectronicPetEasy: def isDifficult(self, st1, p1, t1, st2, p2, t2): first = [] for i in xrange(t1): first.append(st1+(p1*i)) second = [] for i in xrange(t2): second.appe…

SRM 638 Div2 250 NamingConvention

問題文 https://community.topcoder.com/stat?c=problem_statement&pm=13521 書いた class NamingConvention: def toCamelCase(self, variableName): while variableName.count('_') > 0: replace_char_index = variableName.index('_') variableName = vari…

SRM 636 Div2 250 GameOfStones

問題文 Limak has found a large field with some piles of stones. Limak likes perfection. It would make him happy if every pile had the same number of stones. He is now going to move some stones between the piles to make them all equal. Howe…

SRM 635 div2 250 IdentifyingWood

Problem Statement We call a pair of Strings (s, t) "wood" if t is contained in s as a subsequence. (See Notes for a formal definition.) Given Strings s and t, return the String "Yep, it's wood." (quotes for clarity) if the pair (s, t) is w…

【vim】vim <tab>で ファイル名を補完しようとすると、エラーが出る時の解決方法

vim

症状 oh-my-zshを入れたあとに、vim でTabを使ってファイル名を保管しようとすると_vim_files: function definition file not foundというエラーがでる。 解決方法 # 下記のファイルのあとに自分のMacの名前が付いていることがあるので、ls -la等のコマンド…

【Underscore.js】_.matcherを読んだ

jashkenas/underscoreの_.matcherを読んだ。 概要 _.matcher(attrs) 引数の「key : val」と同じものがあるかを判別する部分適用した関数を返す。 var matcher = _.matcher({age: 20, sex: "male"}); console.log(matcher({age: 20, sex: "male", country: "J…

【Underscore.js】_.omitを読んだ

jashkenas/underscoreの_.omitを読んだ。 概要 _.omit(object, *keys) 第1引数から第2引数以降で指定したkey値以外のkey値とその値で構成されたObjectを返す。 var x = _.omit( {age: 20, sex: "male", country: "JP", name: "HOGA"}, ['age', 'sex']); cons…

【Underscore.js】_.pickを読んだ

jashkenas/underscoreの_.pickを読んだ。 概要 _.pick(object, *keys) 第一引数から第2引数以降で指定したkey値とその値で構成されたObjectを返す。 var x = _.pick({age: 20, sex: "male", country: "JP", name: "HOGA"}, 'age', 'country'); console.log(x…

AtomでXcodeのようにcmd-shift-jで、現在開いているファイルをTree View上で見つける

Atom -> 個人設定 -> Keybindings -> “your keycap file” で下記を追記すればOK。 # 現在開いているファイルをTreeViewで指定する '.platform-darwin': 'cmd-shift-j': 'tree-view:reveal-active-file'

【Underscore.js】_.extendと_.extendOwnを読んだ

jashkenas/underscoreの_.extendと_.extendOwnを読んだ。 概要 _.extend(destination, *sources) _.extendOwn(destination, *sources) extend: sourcesに含まれている全てのプロパティ(プロトタイプを含む。)をdestinationにコピーしたものを返す extendOw…

【Underscore.js】_.mapObjectを読んだ

jashkenas/underscoreの_.mapObjectを読んだ。 概要 _.mapObject(object, iteratee, [context]) objectの各値に第2引数で指定した関数を適用した第1引数を返す。.mapは値の配列を返すが、.mapObjectはオブジェクトを返す。 _.mapObject({age: 20, score: 50}…

【Underscore.js】_.throttleを読んだ

jashkenas/underscoreの_.throttleを読んだ。 概要 _.throttle(function, wait, [options]) functionを一度目は即時実行して、二回目以降はwaitミリ秒待ってから実行する関数を返す。waitミリ秒までに複数回関数を実行しようとしても、最後に受け付けた関数…

【Underscore.js】_.deferを読んだ

jashkenas/underscoreの_.deferを読んだ。 概要 _.defer(function, *arguments) ``` 現在のコールスタックがクリアされたあとに、functionを実行させる。 setTimeoutを0msで実行するのと似ている。 処理が重い計算や、HTMLのレンダリング等に使うと便利。 co…

【Underscore.js】_.memoizeを読んだ

jashkenas/underscoreの_.memoizeを読んだ。 概要 _.bind(function, object, *arguments) 一度計算した値をキャッシュしておく機能を関数に付け加える。 var num = 40; var fib = function(n) { return n < 2 ? n : fib(n - 1) + fib(n - 2); }; console.tim…

【Underscore.js】_.sortedIndexを読んだ

jashkenas/underscoreの_.sortedIndexを読んだ。 概要 _.sortedIndex(list, value, [iteratee], [context]) ソートされているlistに対して、valueがどの位置に入るかを返す。 _.sortedIndex([10, 20, 30, 40, 50], 35); // 3 ソースコード _.sortedIndex = f…

【Underscore.js】_.zipを読んだ

jashkenas/underscoreの_.zipを読んだ。 概要 _.zip(*arrays) 引数である各配列のindex値の値をまとめた配列を作る。返される配列のlengthは引数の中で1番長いlengthを持つ配列と同じ長さになる。 var x = _.zip(['moe', 'larry', 'curly'], [30, 40, 50], […

【Underscore.js】_.uniqを読んだ

jashkenas/underscoreの_.uniqを読んだ。 概要 _.uniq(array, [isSorted], [iteratee]) arrayの各値の中で同じ値があった場合、1つだけにされ各値が重複のない配列として返される。配列がソートされている際に、isSortedをtrueにするとより高速に動作する。 …

【Underscore.js】_.intersectionを読んだ

jashkenas/underscoreの_.intersectionを読んだ。 概要 _.intersection(*arrays) 第一引数の配列の各値の中で、第二引数以降のすべての配列に含まれている値を返す。 var x = _.intersection([1, 10, 10, 3], [3 ,190, 10], [1, 545, 3, 10]); console.log(x…

【Underscore.js】_.unionを読んだ

jashkenas/underscoreの_.unionを読んだ。 概要 _.union(*arrays) 引数で与えられた配列を一つにまとめる。 その際に重複した値は削除され、重複した値がない配列となって返される。 var x = _.union([1, 10, 10, 3], [3 ,190]); console.log(x); // [1, 10,…

【Underscore.js】_.withoutを読んだ

jashkenas/underscoreの_.withoutを読んだ。 概要 _.without(array, *values) arrayからvaluesを除いた配列を返す。 var list = [1, 10, 7, 190, 43]; var x = _.without(list, 7, 43 ,190); console.log(x); // [1, 10] ソースコード _.without = function(…

【Underscore.js】_.flattenを読んだ

jashkenas/underscoreの_.flattenを読んだ。 概要 _.flatten(array, [shallow]) 入れ子になっている配列を、一次元の配列に変換する。 shallowがtrueの時は、一つだけ入れ子をなくす。 list = [1, 10, 7, [190, 43], [[1]]]; var x = _.flatten(list); conso…

【Underscore.js】_.compactを読んだ

jashkenas/underscoreの_.compactを読んだ。 概要 _.compact(array) 配列の中のfalsyな値(false, null, 0, "", undefined, NaN)を除いて返す。 var list = [0, null, undefined, 1, 2, "null", "", NaN]; var x = _.compact(list); console.log(x); // [1, 2…

【Underscore.js】_.initialを読んだ

jashkenas/underscoreの_.initialを読んだ。 概要 _.initial(array, [n]) 末尾からn個を除くすべての配列の要素を返す。 nが指定されていない時は、arrayの最後の要素以外のすべてを返す。 var list = [1, 10, 7, 190, 43]; var x = _.initial(list); consol…

【Underscore.js】_.partitionを読んだ

jashkenas/underscoreの_.partitionを読んだ。 概要 _.partition(array, predicate) listをpredicateを満たすものと満たさないものの2つ配列に分割して返す。 var list = [1, 10, 7, 190, 43];var x = _.partition(list, function(num) { return num % 2 ===…

【Underscore.js】_.toArrayを読んだ

jashkenas/underscoreの_.toArrayを読んだ。 概要 _.toArray(list) listを配列にして返す。 var list = {age: 20, sex: "male", country: "JP", name: "hoge"}; var x = _.toArray(list); console.log(x); // [20, "male", "JP", "hoge"] ソースコード _.toA…

【Underscore.js】_.sampleを読んだ

jashkenas/underscoreの_.sampleを読んだ。 概要 _.sample(list, [n]) listからn個のランダムな値を取り出す。nが指定されない時は1つ取り出す。 var list = [1, 4, 15, 200, 3]; var x = _.sample(list); console.log(x); // 4 ソースコード _.sample = fun…

【Underscore.js】_.groupByを読んだ

jashkenas/underscoreの_.groupByを読んだ。 概要 _.groupBy(list, iteratee, [context]) listの各要素をiterateeを使ってグルーピングする。 iterateeが関数でない場合は、そのプロパティの値ごとにグルーピングする。 var list = [ {age: 20, sex: "male",…

【Underscore.js】_.sortByを読んだ

jashkenas/underscoreの_.sortByを読んだ。 概要 _.sortBy(list, iteratee, [context]) listの各要素をiterateeを使って評価した順にソートし、返す。 iterateeはプロパティの名前でも良い。 var list = [ {age: 22, sex: "male", country: "US", name: "fug…

【Underscore.js】_.maxを読んだ

jashkenas/underscoreの_.maxを読んだ。 概要 _.max(list, [iteratee], [context]) listの中の最大値を返す。 iterateeに関数が与えられると、その返り値が比較基準になる。 リストが空だと-Infinityが返るので、isEmptyを使って判定すること。 var list = […

【Underscore.js】_.pluckを読んだ

jashkenas/underscoreの_.pluckを読んだ。 概要 _.pluck(list, propertyName) listの中のpropertyNameで指定したプロパティの値を取得して配列で返す。 mapのよく使われる用途のラッパー。 var list = [ {age: 20, sex: "male", country: "JP", name: "hoge"…

【Underscore.js】_.invokeを読んだ

jashkenas/underscoreの_.invokeを読んだ。 概要 _.invoke(list, methodName, *arguments) 入れ子構造になっている配列の各要素の配列に対して関数を実行する。 _.invoke([[1, 4, 5, 2, 3], [10, 30, 20], [100, 78]], 'shift’); // [1, 10, 100] ソースコー…

【Underscore.js】_.containsを読んだ

jashkenas/underscoreの_.containsを読んだ。 概要 _.contains(list, value, [fromIndex]) listにvalueがあればtrueを返す。 _.contains([1, 2, 3], 3); // true ソースコード _.contains = _.includes = _.include = function(obj, item, fromIndex, guard)…

【Underscore.js】_.someを読んだ

jashkenas/underscoreの_.someを読んだ。 概要 _.some(list, [predicate], [context]) listの値をpredicateに渡し、trueになるものがあればtrueを返す。 var list = [1, 2, 3, 4, 5]; var x = _.every(list, function(n) { return n > 3; }); console.log(x)…

【Underscore.js】_.everyを読んだ

jashkenas/underscoreの_.everyを読んだ。 概要 _.every(list, [predicate], [context]) listの値をpredicateに渡した時に、すべてtrueであればtrueを返す。 var list = [1, 2, 3, 4, 5]; var x = _.every(list, function(n) { return n > 0; }); console.lo…

【Underscore.js】_.rejectを読んだ

jashkenas/underscoreの_.rejectを読んだ。 概要 _.reject(list, predicate, [context]) listの中で、predicateがfalseになる要素の配列を返す。 _.filterの反対のことをする関数。 var list = [1, 2, 3, 4, 5]; var x = _.reject(list, function(n) { retur…