ikemonn's blog

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

A Top-Down Approach to Achieving Performance Predictability in Database Systems を読んだ

A Top-Down Approach to Achieving Performance Predictability in Database Systemsを読んだ時のメモ。 どんなもの? DBのlatencyのバラ付きの主要な原因を特定するためにTprofiler(解析ツール)を作成しバラ付きを少なくした MySQL, Postgres, VoltDBのバラ…

Dapper, a Large-Scale Distributed Systems Tracing Infrastructure を読んだ

Dapper, a Large-Scale Distributed Systems Tracing Infrastructureを読んだ時のメモ。 どんなもの? 分散トレーシングシステム 分散システムのtraceをする 先行研究とくらべて何がすごい? 設計上の目標 オーバーヘッドが少ない サービスのパフォーマンス…

In Search of an Understandable Consensus Algorithm(Extended Version) を読んだ

[In Search of an Understandable Consensus Algorithm(Extended Version)(https://raft.github.io/raft.pdf)を読んだ時のメモ。 どんなもの? わかりやすさを重視して開発された合意アルゴリズム Paxosよりもわかりやすいが、Paxosよりも効率的 先行研究と…

Paxos Made Live - An Engineering Perspective を読んだ

Paxos Made Live - An Engineering Perspectiveを読んだ時のメモ。 どんなもの? Paxosを実際のプロダクト(Chubby)で使用するために行った挑戦とその際に選択したアルゴリズムについて Paxosは論文には1ページの擬似コードで説明されているが、実プロダクト…

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}…