タグ

2016年4月20日のブックマーク (55件)

  • コマンドラインオプションの解析 - ひきメモ

    from optparse import OptionParser, OptionValueError import os # スクリプトの使用方法を表す文字列 # デフォルト値は"Usage: %prog [options]" # "usage: "で始まらないと自動的に"usage :"が追加される # %progはスクリプト名で置換 usage = "usage: %prog [options] keyword" # OptionPraserのインスタンスを生成 parser = OptionParser(usage) # オプションの追加 # action オプションが見つかった場合に行う処理 # type オプションの型 # dest 引数の保存先 # 省略時は長いオプション名を使用 # それも省略なら短いオプション名 # default オプションのデフォルト値 # 省略した場

    コマンドラインオプションの解析 - ひきメモ
  • IoTセンサーデータを使ったD3.jsによるグラフ化と機械学習モデルによる故障予測

    IoT(Internet of Things:モノのインターネット)のセンサーで取得したデータをクラウド上のデータベースに蓄積し、分析・活用するアプリケーションを手軽に始めてみる連載の第3回です。今回は、IBMのPaaS「Bluemix」が提供するIoTデバイス接続サービス「IBM Watson IoT Platform」を経由して受信した温度・湿度データを、DBaaS(Database as a Service)の「IBM Cloudant」へ蓄積し、グラフとして可視化するとともに、「IBM Predictive Analytics」サービスで生成した機械学習モデルを用いて故障予測を行うアプリケーションを作成します。 サンプルアプリケーションの概要 今回作成するアプリケーションは、以下の3つのアプリケーション(サブ機能)で構成されます。 ① 「IoTデバイスのデータを受信してデータベース

    IoTセンサーデータを使ったD3.jsによるグラフ化と機械学習モデルによる故障予測
  • ごりゅご.com

    ごりゅご.com

    ごりゅご.com
  • はてなブログの「Markdownモード」について編集画面からではわからない記法まとめ

    はてなブログの編集モードには「見たまま」「はてな記法」「Markdown」の3種類ががありますが、僕は「Markdownモード」で記事を書いています。 はてなブログを利用するようになって始めてこの記法を知りましたが、まぁ簡単。 そして、HTMLタグもそのまま使えるので最近はMarkdownモードで書くようになりました。 ただ、編集画面上では、これといった記述方法の説明がありません。 そこで僕が良く使う記法を中心に「Markdown記法」を紹介したいと思います。 ※編集画面のメニューから設定出来るものは省略しています。 Markdown記法まとめ見出しタグ<h1~h6>記述例 # 見出し1<h1> ## 見出し2<h2> ### 見出し3<h3> #### 見出し4<h4> ##### 見出し5<h5> ###### 見出し6<h6>まずは見出しタグですね。 こちらは編集画面でも設定出来ます

    はてなブログの「Markdownモード」について編集画面からではわからない記法まとめ
  • 投機実行とOut of Orderはつよいというはなし - なるせにっき

    fluentdな人達と話していると定期的にRubyのオブジェクト生成が遅いとdisられます。 質的にしょうがない部分もあるんですが、それにしても遅い部分も結構あるので、おもむろにperf statとperf recordを取ってみましょう。 % sudo perf stat -d ./miniruby -e'GC.disable;i=1000000;while (i-=1)>0;Hash.new;end' Performance counter stats for './miniruby -eGC.disable;i=1000000;while (i-=1)>0;Hash.new;end': 467.629812 task-clock (msec) # 0.993 CPUs utilized 19 context-switches # 0.041 K/sec 2 cpu-migratio

    投機実行とOut of Orderはつよいというはなし - なるせにっき
  • Tensorflowを使ったDeep LearningにおけるGPU性能調査 - 株式会社カブク

    Kabukuエンジニアブログを始めます どうも、おはこんばんちわ、カブクの足立です。 カブクのエンジニアって何やっているのか分かりにくいね、と言われ続け、我々のことを知ってもらうためにエンジニアブログなどで発信していかねば。 と、一念発起してはや半年。 忙しさにかまけて先延ばしにし続けるあるある状況を打開すべくKabukuエンジニアブログを始めます! 会社のエンジニアブログは重厚長大で、会社ブランディングを意識し、自社が技術的に優れている事をアピールする風潮があります。我々はそこに風穴を空けるべく、重厚長大ではないブログも書いていこう! 重厚長大じゃなくても世の中のためになることはある。 もっとライトにエンジニアがオフィシャルブログで情報発信していってもいいじゃないか。 と、言い訳たっぷり、ハードルを地中に埋めたところで、記念すべき第一回は会社のビジネス活動に関係ないDeep Learni

    Tensorflowを使ったDeep LearningにおけるGPU性能調査 - 株式会社カブク
  • TensorFlowによるDeep Learningでアイドルの顔識別する話

    ブログまとめ的な内容のLT

    TensorFlowによるDeep Learningでアイドルの顔識別する話
  • ES7 async functions

    Posted 27 March 2014 - hey at least it's not another progressive enhancement article They're brilliant. They're brilliant and I want laws changed so I can marry them. Update: This feature is now shipping in browsers. I've written a more up-to-date and in-depth guide. Async with promises In the HTML5Rocks article on promises, the final example show how you'd load some JSON data for a story, then us

    ES7 async functions
  • ループをたくさん回す処理を高速化する初歩の初歩。 - このブログは証明できない。

    テキスト処理を中心にやっていましたが、画像処理に興味が出てきて、さっそくアプリを作りました。もともと下の記事のあたりでユーザーとして画像処理に興味を持って、当然の流れながら、自分でもつくってみようと。 Color Splash + TiltShift Generator + Instagramの写真加工が面白い。 - このブログは証明できない。 で、何かを間違えて、普通の画像処理ではなく、カメラの映像をリアルタイムに加工しはじめました。そうすると、パフォーマンスがかなりシビアなんですね。 iPhoneでカメラの映像をリアルタイム画像処理してみる。 - このブログは証明できない。 全ピクセルを操作しなければなりませんから、ループをたくさん回す必要があります。なんとか高速化できないかと考えてみたところ、あっさり高速化に成功しました。私が気づくぐらいですから、初歩の初歩なんだと思います。 追記:

  • プログラムの高速化テクニック

    このページでは手島がプログラミングをしていて,「こうした方がプログラムが高速に動作する」と気づいたテクニックを紹介します. 想定している環境はWindows XP(SP2) + (VC++ .NET) + OpenCVです. あまり高度なことは書いていなくて,初心者を想定した内容となっています. アルゴリズム的な改善には触れておらず,実装面でのテクニックです. 画像処理以外のプログラミングに応用できるかどうかは未知です. 経験則やコンピュータの原理的に早くなるテクニックを紹介しているだけなので,間違い,記憶違い,昔は正しかったけれど今は嘘な情報など, 指摘があればまでメールでご連絡下さい. Releaseモードを使う VC++での基です. ビルド(B)→構成マネージャ(O)→アクティブソリューション構成(A) をDebug→からReleaseに変更します. もしくはツールバーのソリューシ

  • インライン関数まとめ

    インライン関数についてややこしいところをまとめておきます。 結論から言うと、常に `static inline` を使え、ってことになります。 結果だけ知りたい人は以下は読む必要なし。 ### 最初に ### `inline` キーワードは関数callを高速化せよ、という指定であって、`inline` を付けたからといって、当にインライン展開されるかはわかりません。 実際のところ、最適化オプションをつけていない場合、`inline` を付けても、一切インライン展開してくれません。 最適化オプションによらず、インライン展開を強制させるには `__attribute__((always_inline))` をつけるというやり方があります。 `-O1` オプションをつけた場合、明示的に `inline` がついている場合はなるべくインライン展開しようとするが、`inline`指定がないものにつ

  • インライン展開がどう展開されるのかを調べた

    C++コンパイラは、関数呼び出し部分にその関数の内容を展開し、 関数呼び出しのオーバーヘッドを削減する、インライン展開をします。 インライン展開はコンパイル時にされるため、 実際に行われたのか、どう行われているかは出力されません。 そのため、コンパイルたコードがどうなってるかを調べ、 インライン展開がどう展開しているのかを調べました。 なお、アセンブラに関してはほとんど説明しません。 「callq シンボル名(文字列)」で関数呼び出しを実行する事だけ理解していれば大丈夫です。 ソースコード 以下のソースコードを使います test.cpp #include "stdio.h" #include "func.h" int main(){ TestA test; int a = test.getNumInCpp(); int b = test.getNumInH(); int c = test.

  • RunningCassandraInEclipse - Cassandra Wiki

    Eclipse is open source. Download Eclipse from http://www.eclipse.org/downloads/. There is no need for the Enterprise Edition (EE) version of Eclipse. Hence "Eclipse IDE for Java Developers" is good enough. Cassandra is using Git for version control. In this tutorial we will checkout Cassandra from it. The previous version of this guide used the Subclipse (http://subclipse.tigris.org/) Eclipse Subv

  • https://github.com/search?l=C%2B%2B&q=data+structure+distributed&ref=searchresults&type=Repositories&utf8=%E2%9C%93

  • GitHub - bigclean/structure: Several languages of data structure practice

  • Selenide~Javaで超簡単・簡潔にUIテストを書く~ - Qiita

    はじめに Selenideを触ってみたら簡単なUIテストがサクッと書けて感動したので、使い方をまとめました。 Selenideとは SelenideはUIテストのためのSeleniumラッパーです。 Selenide: concise UI tests in Java http://selenide.org/ Java界隈でUIテストといえばSelenium(WebDriver)が有名で、大変優れたツールです。ですが、SeleniumはUIテストのためのツールではなく、ブラウザ操作のためのツールです1。 一方、Selenideは初めからUIテストのために設計されていて、UIテストを「スラスラ」書いて実行できます。ブラウザの閉じ方とか、タイムアウトとか、StaleElement Exceptionsの扱い方などを考える必要はなく、ユーザはテストに集中できるのが売りです。 Three simp

    Selenide~Javaで超簡単・簡潔にUIテストを書く~ - Qiita
  • git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳

    はじめに ソースコードを静的解析することでSRP(単一責任原則)を定量的に算出します.*1 svn blameによるSRP算出*2を参考に、git blameによる算出をshで行ってみました. このSRP値が最大のモジュールが王様モジュールに相当します. # 単一責務性の違反指数(SRP) # SRP=R+U+((L/100)-5) # R:修正リビジョンのユニーク数 # U:修正ユーザのユニーク数 # L:モジュールのライン数 function get_SRP() { local target_filepath=$1 echo $(( \ $(git --no-pager blame --line-porcelain $target_filepath | sed -n 's/^summary //p' | sort | uniq -c | sort -rn | wc -l) + \ $(

    git blameによるSRP(単一責任原則)の定量化 - どこでも見れるメモ帳
  • PCにOpenStackをセットアップして、仮想マシンを動かしてみる

    OpenStackディストリビューション「RDO」を用いて、実際に動作するOpenStack環境を構築しながら、OpenStackの利用方法や内部構造を学ぶ特集です。今回は、前回構築した環境を利用して、仮想マシンインスタンスの作成に関連するパラメーターや仮想ネットワークの構成を解説します。また、簡単な練習として、Webサーバーの構築を行ってみます。 内部構造が複雑なOpenStack、利用するだけなら難しくない 初めに、OpenStackが提供する機能の全体像を整理しておきます。特集では、表1の主要コンポーネントを中心に取り扱います。OpenStackは、その内部構造に目を向けると、これらのコンポーネントがAPIで連携する複雑な構造になっています。

    PCにOpenStackをセットアップして、仮想マシンを動かしてみる
  • Microsoft PowerPoint - mpi-2e2.ppt

  • Rで勾配法(勾配降下法・最急降下法)を実装 - Qiita

    これなら分かる最適化数学 3.1 に記載の通り、勾配法(勾配降下法・最急降下法)を用いて、関数に最大値・最小値を取らせる変数の値を求めます。以下の例では最大値を取る点を求めています。 1変数の場合 frame() par(mfcol=c(1, 1)) par(mar=c(2, 2, 1, 0.1)) par(mgp=c(1, 0.2, 0)) xrange <- c(-3, 3) yrange <- c(-1, 1) f <- function(x) { cos(x) } dx <- function(x) { -sin(x) } search <- function(x0, f, df) { x <- x0 h <- 0.7 eps <- 1e-6 i <- 1 # 解の移動量が十分小さくなるまで繰り返す。 repeat { oldx <- x # df(x)の符号によって、進む方向を決

    Rで勾配法(勾配降下法・最急降下法)を実装 - Qiita
  • http://web.sfc.keio.ac.jp/~naoe/security/documents/naoe/Support_Vector_Machine.pdf

  • scikit-learn から学ぶ機械学習の手法の概要 - Qiita

    前回、株式の時系列データを分析する話で、後半にちょっとだけ機械学習の話をしました。今日は機械学習ライブラリ scikit-learn に触れます。 scikit-learn といえば以前にも簡単なクラスタリングの例をあげたり、サポートベクトルマシンやクラスタリングで問題を解く、 TF-IDF を計算する、回帰モデルの可視化、 DBSCAN によるクラスタリングといったことをしてきましたが、あらためてライブラリの機能を整理します。 機械学習と言うと難しい数学を駆使するイメージがつきまといますが、完成度の高いライブラリを使えば利用者が機械学習の手法そのものを実装しなくても利用することはできます。もちろん手法の内容に対する理解は必要ですが、せっかく scikit-learn という事実上デファクトとも言えるライブラリが存在するのですから、これを使うところから入門していくのが良いかと思います。 以

    scikit-learn から学ぶ機械学習の手法の概要 - Qiita
  • scikit-learn + DBSCAN によるクラスタリング - Qiita

    今日は昨日に引き続き SciPy and NumPy Optimizing & Boosting your Python Programming の中から scikit-learn を使った例を軽く説明します。クラスタリングについてはすでにべられるキノコを見分けるやクラスタリングの結果を再利用するといった記事で説明しましたし scikit-learn によるクラスタリング でも取り扱ってきましたから機械学習の中でもすっかりお馴染みの手法かと思います。 scikit-learn でのクラスタリング ポピュラーな kmeans と比較して多くのデータ点を有するコア点を見つける DBSCAN アルゴリズムは、コアが定義されると指定された半径内内でプロセスは反復します。ノイズを多く含むデータに対して、しばしば kmeans と比較される手法です。 原著においてもこれらの手法を比較し可視化していま

    scikit-learn + DBSCAN によるクラスタリング - Qiita
  • 第4回 線形SVM

    第4回 - 線形SVM まずはマージンがκ(kappa)である以下の様な線形識別面 を考え、そのマージンを最大化することを考える。 wとbをκで正規化したものに置き換えると となる。これは となり、2つをまとめて と表すことができる。 図4.3 図4.3より、あるデータxをw方向に射影した長さは であるから、クラス間マージンρ(w,b)は次のように与えられる。 上の不等式により t_i=+1 のとき min(wx)=1-b t_i=-1 のとき max(wx)=-1-b であるから、 となる。つまりρの最大化⇔||w||の最小化である。 主問題とKKT条件 以上より線形SVMにおける主問題(解くべきとなる問題)は次の問題であることがわかる。 この問題は多変数関数の最適化問題であるから、次のようなLagrange関数を用意することでLagrangeの未定乗数法に落としこむことができる。 1〜

    第4回 線形SVM
  • Support Vector Machine

    最近よく巷で耳にするモノ. SVM, Support Vector Machine, さぽーとべくたーましん. これっていったい,どんなもんなんでしょう. なにやら便利そうなモノらしいので,ちょいと調べて要点をまとめてみようかな,なんて. でも,ただまとめただけだとそのへんの記事を読むのとなんにも変わらないので, コーディングするために必要な知識を中心にまとめてみることにします.

  • P2Pネットワークを利用した分散ファイルシステムの開発

    第17回「サーバーとネットワークをもっと仲良しに – その間を取持つネットワーク仮想化技術」(2012/05/24 on しすなま!)

    P2Pネットワークを利用した分散ファイルシステムの開発
  • 大規模分散システムのレスポンスを向上させる工夫 - ワザノバ | wazanova

    https://www.youtube.com/watch?v=1-3Ahy7Fxsc 1 comment | 1 point | by WazanovaNews ■ comment by Jshiike | 約2時間前 GoogleのJeff Dean(Senior Fellow, システム & インフラグループ)による、Velocity Conference 2014のキーノートスピーチです。 Jeffは、オブジェクト指向言語によるプログラムの最適化で博士号を取得。DEC/Compaqの研究所の勤務をへて、1999年にGoogleに入社。以降、BigTable / MapReduce / Spanner / Google Translate / Google Brainなど、同社の大規模分散システムの構築に一貫して携わってきています。 例えば、検索結果のレスポンスを向上させるには、そ

  • Ceph ~ブロックアクセス可能な分散ストレージ

    by kumagai(@kumagai19o) 2014/3/12 ご無沙汰しています。ビットアイル総合研究所、熊谷です。 ビットアイル総研では既にオブジェクトストレージとしてOpenStack Swiftの検証を進めていますが、このたびブロックストレージとして利用可能なOSS 分散ストレージであるCephの検証も始めました。 これから当ブログにてCephについてご紹介していこうと思います ■Cephの記事一覧 Cephの概要 CephはInktank社が提供するオープンソースの分散ストレージです。 OSSとして提供されていますが、必要な場合は有償のEnterprise版サポートを受けることが可能です。 Cephには以下の特徴があります。 データを任意のサイズに分割し分散配置します。これにより拡張性と耐障害性を実現しています。 分割されたデータは任意のレプリカ数でレプリケーションされます。

  • 完全分散エッジ処理で実現するNeutron仮想ネットワーク

    Neutronプラグイン「MidoNet」の内部構造を解説した資料です。 2015/02/12 ver1.2 トンネルIDとVMポートの関係の説明を追加Read less

    完全分散エッジ処理で実現するNeutron仮想ネットワーク
  • 分散型メッセージングミドルウェアの詳細比較 | POSTD

    メッセージキュー について書いている連載の続きとして、今週末は分散型メッセージングを実行するための様々なライブラリを詳細に分析していきたいと思います。今回の分析では、APIの特性、デプロイメントやメンテナンスの容易さ、そしてパフォーマンスの質を含めて2、3種類の異なる側面に着目します。メッセージキューは2つのグループに分類できます。ブローカレス(brokerless)とブローカード(brokered)です。ブローカードなキューはエンドポイント間に何かしらのサーバを挟んでいますが、ブローカレスなメッセージキューは、メッセージ送信の際でも間に何も挾まないP2Pです。 今回分析するのは以下のシステムです。 ブローカレス nanomsg ZeroMQ ブローカード ActiveMQ gnatsd Kafka Kestrel NATS NSQ RabbitMQ Redis 取り掛かりとして、ほぼ間違

    分散型メッセージングミドルウェアの詳細比較 | POSTD
  • 「ZooKeeperによる分散システム管理」を読もう、という話 - たごもりすメモ

    Zookeeperは現代の分散システムに不可欠なミドルウェアで、メタデータの管理、更新通知、リーダー選出といった問題を解決する。自分でZookeeper APIを叩く人は少ないかもしれないが、今やHadoop Namenode HA*1もYARN ResourceManager HAもHBaseもZookeeperを要求する。とにかく使う必要がある、という人は今や多いのではないだろうか。 こういったソフトウェアが何故必要なのか、どういった役割を持つのかについて、明快な回答を返せる人はあまり多くないのではないだろうか。Zookeeperは必要性を喧伝され、あちこちで使われ、しかしいまだに、何台で動かす必要があるのか、どのように運用されなければならないのか、ということをまとめて学べる資料などは多くない。 ということで、このを読もう。 「2.2.1 Zookeeperのクォラム」。個人的には、

    「ZooKeeperによる分散システム管理」を読もう、という話 - たごもりすメモ
  • 分散ストレージCeph/RADOSとは?

    連載バックナンバー IaaS構築・運用環境として注目を集める「OpenStack」でストレージを使用する場面としては、Compute service(Nova)が使用するファイルシステム、Image service(Glance)、Volume service(Cinder)、Object storage(Swift)などが挙げられます。 連載では、OpenStackのストレージ環境として注目を集めているOSSの分散ストレージ「Ceph/RADOS」について見ていきます。同じくOSSストレージインフラの選択肢としてCeph/RADOSと並んで検討されることの多いGlusterとの比較にも言及する予定です。 はじめに:Cephとは? RADOSとは? Cephの名前は頭足類を意味するCephalopodsに由来しています。開発者のペットであるタコのニックネームとして使われているそうです(*

    分散ストレージCeph/RADOSとは?
  • Redis による分散ロック — Redis Documentation (Japanese Translation)

    Redis による分散ロック¶ 異なるプロセス同士が、相互に排他的な方法で共有リソースに対して操作を実行する、という環境において、分散ロックは非常に役に立ちます。 Redis を使った DLM (Distributed Lock Manager) の実装については、多くのライブラリやブログポストがあります。しかし、ライブラリごとに異なるアプローチがとられており、またその多くは、より複雑なデザインと比較するとシンプルで、そのぶん保証される内容が低いアプローチとなっています。 このページは、Redis 上で分散ロックを実装するにあたり、標準的なアルゴリズムを提供することを目指すものです。私たちはここで Redlock と呼ぶアルゴリズムを提供します。これは DLM 実装の一種で、よく見かけるような、ひとつのインスタンスを使うアプローチよりも安全である、と私たちは考えています。コミュニティがこの

  • 非分散データベースを分散データベース化する「Dynomite」、Netflixがオープンソースで公開

    RedisやMemcachedといったインメモリデータベースは非常に高速にレスポンスを返してくれるデータストアですが、それ単体ではスケーラビリティや可用性などに限界があります。 The Netflix Tech Blog: Introducing Dynomite - Making Non-Distributed Databases, Distributed Netflixがオープンソースで公開した「Dynomite」(ダイナマイトとは綴りが違うのに注意)は、こうしたデータストアを分散データベース化し、高速なデータストアの特長を活かしつつ高いスケーラビリティや可用性を実現するためのソフトウェアです。 アプリケーション側でシャーディングのような面倒なデータ構造を設定することなく、RedisやMemcachedをノードとし、CassandraやAmazonクラウドのDynamoDBのような大規

    非分散データベースを分散データベース化する「Dynomite」、Netflixがオープンソースで公開
  • 負荷分散勉強会

    2012年12月20日に開催した勉強会の資料です。基礎的な内容を中心に負荷対策について紹介しています。Read less

    負荷分散勉強会
  • Droongaで理解する、分散処理の基本のキ:リスクの分散 - Qiita

    こんにちは。Droonga開発チームの結城(Piro)です。 Groonga Advent Calendar 7日目は、昨日に引き続き、Droongaを肴にした分散処理の初歩の初歩の解説です。 前回の記事では、分散には以下の3つのメリットがあると述べました。 負荷の分散により、1台のマシンの性能の限界を超えた処理が可能になる。 リスクの分散により、可用性が高まる。 データの分散により、今までは扱いきれなかった量のデータを扱えるようになる。 このうちの負荷の分散については、前回の記事で解説しました。 この記事では、「リスクの分散により、可用性が高まる」という点について解説します。 前日の記事では「負荷の分散によって処理能力の限界を超えられる」という事を述べました。 ということは、逆に言えば、「処理能力に余裕がある状況ならば分散する必要は無い」とも言えます。 しかし、分散にはもう1つのメリット

    Droongaで理解する、分散処理の基本のキ:リスクの分散 - Qiita
  • mcrouter で memcached へのアクセスを分散とレプリケーション Docker でちょろっと試す | iret.media

    ども、cloudpack の かっぱ (@inokara) です。 はじめに 複数の memcached を分散アクセスさせるためのソリューションとして twemproxy 以外のソリューションを探していたところ、mcrouter という Facebook 謹製のツールがあるようなので試してみました。 参考 mcrouter Introducing mcrouter: A memcached protocol router for scaling memcached deployments mcrouterでElastiCache(memcached)を分散レプリケーションする mcrouterのインストール手順 当初は CentOS 6.5 でセットアップを進めていましたが、folly というライブラリのインストールで m4 マクロのエラーからビルドが通らずに詰んでしまいました…改めてチ

    mcrouter で memcached へのアクセスを分散とレプリケーション Docker でちょろっと試す | iret.media
  • JobStreamerではじめるJavaBatchのクラウド分散実行

    JJUC-CCC - Japan Java Users Group Cross Communiy Conference - 2016 Spring 講演資料。 テスト、書いてますか?はい、我々は書いていませんでした。しかし今は違います。将棋の駒を動かすかのように一手ずつテストを書き進めるための戦術と戦略のようなものを、お話しできればと思います。このセッションは同じチームの同僚による昨年秋のセッション「JJUG-CCC 2015 Fall CD-2 Java8移行から始めた技術的負債との戦い」の続編のようなものです。

    JobStreamerではじめるJavaBatchのクラウド分散実行
  • Raft(分散合意アルゴリズム)について

    Raftについて Raftという分散合意アルゴリズムの紹介 論文: In Search of an Understandable Consensus ALgorithm (Extended Version) 注意 Raft三日目くらいの人が自分の理解をもとに(適当に)書いています いつも通り用語の使い方は怪しい Raftと分散合意のどちらも特別詳しい訳ではないので、ちゃんと知りたい人は上記論文や他の説明を参照することを推奨します Raftって何? ざっくりと 分散合意アルゴリズム Paxos(おそらく有名な分散合意アルゴリズム)の改良版的な位置づけ(?) 機能追加や性能向上ではなく__理解可能性__の改善 etcdというCoreOS/Dockerをクラスタ化するためのツールで採用されているのが有名? 詳しくは知らないですが... 分散合意アルゴリズム クラスタ内の全サーバに一貫性のあるステ

    Raft(分散合意アルゴリズム)について
  • 大規模分散システムの現在 -- Twitter

    ↓↓↓↓訂正あります。↓↓↓↓ 2018/07/02に株式会社エフコード社内で行われた勉強会のスライドです。 訂正版(随時更新中): https://docs.google.com/presentation/d/15HOMfAbtdWwO48njcB8IdkN3kVAMu3wsmZo0O3S-f_4/edit?usp=sharing 専門家による資料・専門家向けの資料ではありません。自分自身で学習し、論文・文献等を読解してまとめた内容となります。間違い等あるかもしれませんが、あれば是非コメント頂ければと思います。 【訂正事項】 スライド16: 誤:たった一つのプロセスが故障しただけでも有限時間で合意できない 正:たった一つのプロセスが故障しうるだけでも有限時間で合意できない スライド20: 誤: 重要: あるschedule σ1, σ2 がdisjoint (nodeが被ってない) なら

    大規模分散システムの現在 -- Twitter
  • レプリケーションにおける読み取り負荷分散の性能

    記事は中級編ですので、既にレプリケーションを組んだことのある読者を対象とし、基的な説明は割愛させていただきます。 レプリケーションはスケールアウトの手段ではない MongoDBはレプリケーション構成においてセカンダリからも読み込むことにより読み取り負荷分散が出来ます。ですが、勘違いしてはいけないのは、レプリケーションは高可用の手段でありスケールアウトの手段ではないとうことです。 これはよく勘違いされて、読者の中には「読み取りが遅いからレプリケーションの読み取り負荷分散で速くしよう」と考えている人はいないでしょうか?その考え方は注意が必要です。 そもそも「速さ」とはなんでしょうか?「速さ」といっても、それは2つの意味があります。ひとつはクエリの応答時間が短くなることで、これはターンアラウンドタイム(TAT)が速くなるといいます。もう一つはシステム全体で単位時間あたりの処理件数が増えること

    レプリケーションにおける読み取り負荷分散の性能
  • 第11回 耐障害性のための仕組み─レプリケーションとロギング | gihyo.jp

    はじめに 前回までにおいては、データ処理の並列化方法および宣言型のデータ処理系における問い合わせ最適化について説明してきました。今回と次回の2回では、並列データ処理系において用いられる分散システム技術について述べていきます。まず今回は、分散システムにおける耐障害性のための仕組みであるレプリケーションとロギングについて説明します。 レプリケーションとは 並列データ処理系におけるレプリケーションは、第3回でも軽く説明したように、データを複数の計算機に保持しておくことにより、システムの耐障害性を保つための技術です。すなわち、データの複製(レプリカ)を複数の計算機で管理することにより、並列データ処理系を構成する計算機の一部が故障した場合や当該システムを構成するネットワークに分断が発生した場合においても、当該システムが管理するデータが失われる(ように見える)可能性を低減することができます。当該技術

    第11回 耐障害性のための仕組み─レプリケーションとロギング | gihyo.jp
  • Dockerのoverlayネットワークでコンテナを分散実行 - Qiita

    概要 Docker 1.9 からマルチホスト・ネットワーク機能が利用可能となった。動作検証として、DigitalOcean の環境上に、Docker Machine で Swarm クラスタを作り、オーバレイ・ネットワーク上を作成。最終的に、複数ホスト上にウェブとデータベースを分散した WordPress の環境を作成する。ここでは Docker Compose を使用し、オーバレイ・ネットワークの自動構築も試みる。 Docker 1.9 のネットワーク機能については、以下 URL を参照のこと。 【参考訳】 Docker 1.9 発表:Swarm とマルチホスト・ネットワーキングのプロダクション対応 【参考訳】 プロダクションに対応するマルチホスト Docker ネットワーク機能 参考訳:マルチホスト・ネットワーキングを始めよう - Qiita 参考訳:Docker コンテナ・ネットワー

    Dockerのoverlayネットワークでコンテナを分散実行 - Qiita
  • Apache Sparkを勉強して分散処理できますよ!って言えるようになる - Qiita

    はじめに そろそろ俺も分散処理かな、と常々考えていたのでこの機会(アドベントカレンダー)にApache Sparkを勉強して、分散処理を始めてみたいと思います。 全4回くらいに分散して進めていきますのでどうぞよろしくおねがいします。 1. お勉強とインストール Apache Sparkとは 大規模データを分散処理をオンメモリで実現するプラットフォーム 高速 かつ 汎用的 であることを目標に設計されている UC Berkekeyで開発され、今はApacheのトップレベルプロジェクトになっている scala, python, java, SQLのシンプルなAPIを提供している そもそも分散処理とは ある計算処理をネットワーク接続された複数のコンピュータを用いて同時並列で処理すること ビッグデータを扱う際に、処理時間を短縮するための手法のひとつ 安価なサーバを複数台用意して処理を割り振れるので、

    Apache Sparkを勉強して分散処理できますよ!って言えるようになる - Qiita
  • 分散ストレージソフトウェアCeph・アーキテクチャー概要

    イベント名:設立3周年記念チャリティーセミナー 講師:日仮想化技術 宮原 日時:2010/2/6 アジェンダ: • KVMの概要 • KVM仮想マシン作成のコツ • KVMベンチマークテスト 概要: リリース直後に異例の速さでカーネルに取り込まれたKVMですが、VMwareやXenに比べて、まだまだ活用術や情報が少ないのが現状です。セッションでは、KVMの仕組み、活用方法、性能評価の結果について解説いたします。

    分散ストレージソフトウェアCeph・アーキテクチャー概要
  • スケールするシステムにおけるエンティティの扱いと 分散ID生成

    Windows Azure Active Directory Multi-Factor Authentication Preview for Phone ...

    スケールするシステムにおけるエンティティの扱いと 分散ID生成
  • クリエイティブコーディングのための数学 JavaScript 入門 [三角関数と行列]

    日経電子版のリニューアルで、コンセプトモデル設計とプロダクト監修をさせていただいた。 超大型アプリを完全リニューアルするとき、KPIを落とす事なく、どのように整合性やユーザー利便性を担保していくか。 「日経電子版×Sansanアプリ開発プロジェクト成功への道〜アプリ開発者勉強会Vol.2」より http://connpass.com/event/16187/

    クリエイティブコーディングのための数学 JavaScript 入門 [三角関数と行列]
  • go言語でのマイクロサービスフレームワークの雑な比較メモ - Qiita

    golangとマイクロサービス 最近ではGo言語がWebサーバで利用される機会もだいぶ増えてきたと思います。 利用例の中にMicroServicesやそれを指向したアーキテクチャで使用されている方の話を聞く機会がちょいちょい有りまして、その界隈のツールセットが幾つか登場しつつありますので紹介してみたいなと思う次第でした。 マイクロサービスの運用となると、モノリシックなサーバの時は考えなかった問題に出会うことが多く、そうしたハマリポイントを各ツールについて学ぶことで避けることも出来ると思いますので、ツールを利用しないまでもチェックしてみるのは参考になるのではないでしょうか。 ツール間の比較 項目 go-kit/kit NYTimes/gizmo micro/micro

    go言語でのマイクロサービスフレームワークの雑な比較メモ - Qiita
  • 分散プログラミングモデルおよびデザインパターンの考察 その5 - Software Transactional Memo

    これまでプログラミングモデルのプの字もなかったので申し訳程度にプログラミングモデルの話をする。 分散して特定のアプリを動かしたいだけなら、例えばbitcoinをマイニングするASICクラスタに対して特定のプログラミングモデルは必要とされない。そのように、行いたいタスク抜きにプログラミングモデルを語る事はできない。 HPC(ハイパフォーマンスコンピューティング)系のワークロードは古くからMPIがデファクトとなっている。 MPIでのプログラミング MPIというのは「Message Passing Interface」の略でSmalltalkなどの文脈で語るいわゆるメッセージパッシングとは哲学というかレイヤーが違う。こいつは 配列を引数に取る関数の形で1:1, 1:N, N:Nの通信の典型的なパターン(1:Nなら例えば `MPI_Broadcast` とか)をインタフェースとして定義しており、ユ

  • 演算子の種類

    以前に「演算子」についてお話をしました。 ソースコード上で 演算(計算)をするための記号が「演算子」です。 一般的なプログラミング言語では、 約30種類の演算子が定義されています。 これだけある演算子ですが、 大きく3つに分類することができます。 演算子は、 ・単項演算子 ・二項演算子 ・三項演算子 の3種類に分類することができます。 さて、「項」とは一体何でしょうか。 演算をするためには、 演算の対象となるものが必要になります。 例えば、足し算をする演算子である 「+」の場合、 3 + 5 という使い方をします。 このとき、 「3」や「5」が演算の対象となります。 このような演算の対象となるものを 「項」と言います。 ちなみに「項」のことを 「オペランド」とも言います。 必要とする「項」の数によって 演算子は分類されています。 1つだけ必要とする演算子を 「単項演算子」、 2つ必要とする

    演算子の種類
  • 開発の見積もりとスケジュール管理 - クックパッド開発者ブログ

    こんにちは。会員事業部の丸山です。 エンジニアが開発を開始する時にはタスクの見積もりとスケジュールを作成行って、実装を進めていくと思います。 しかし1ヶ月を超えるような規模の開発をする場合、なかなか予定通りの期日に終わらなかったりすると思います。 そして大抵の場合、増える方向になりますよね。 今回はそういうことにならないために、私が気をつけていること・実践していることをいくつか紹介したいと思います。 見積もりとは まずは「見積もり」とは何なのかを正しく理解したいと思います。 一般的には「見積もり」=「全タスクとその工数を洗い出す」というものだと思います。 しかしここで以下のことに気をつける必要があります。 見積もりとスケジュールとコミットメントは違う 見積もりとはあるタスクがどれだけの工数(規模)なのかを算出することです。 対して、スケジュールとはあるタスクがどれだけの工期(期間)なのかを

    開発の見積もりとスケジュール管理 - クックパッド開発者ブログ
  • 例外処理とロギングのベストプラクティス

    はじめに システム開発において例外処理は重要なポイントですが、あまりに軽視されているのが現状ではないでしょうか。稿では、これまでの著者の開発経験の中から培った汎用的な手法を説明します。 この記事は「美しい設計」ではなく「現実的な設計」、現場に適用できる「できるだけ手間の少なく、汎用的な設計」を目指しています。 対象読者 J2EE開発者・アーキテクト。特に業務システムの開発現場の方が対象です。 必要な環境 概念の説明が中心ですので、開発環境は必要ありません。 エラーの分類 実装時に考慮すべきエラーは2つに大別できます。 想定内でトランザクションの実行開始前にチェックするエラー。主に入力エラー。 異常な状態としてトランザクションの続行が不可能なエラー(例外)。 前者については、例外を使うべきではありません。入力チェックエラーを表現するには、ステータスコードを使うべきです。理由は次のとおりです

    例外処理とロギングのベストプラクティス
  • 全域木を列挙する - Qiita

    はじめに 約30年前に大学で習った、全域木の列挙アルゴリズムをPythonで実装してみましたので、ご紹介します。 全域木とは、元のグラフの全ての点を含む木のことです。 アルゴリズム グラフの式表現を求めて、式表現を展開して列挙します。 例えば、三角形のグラフで各辺をそれぞれa,b,cとすると、式表現は組(abc)となり、これを展開するとab/ac/bcとなります。 グラフの式表現は以下のように求められます。 辺の最初の式表現として、アルファベット1文字を持たせます。 グラフは、式表現を維持しながら辺または辺と点を削除できます。 グラフが1点になったときに式表現が求められます。 グラフGの式表現(Expr(G))は、任意の1つの辺Eを選んで以下のように変形できます。(標準ルール) Expr(G) = 和(積(組(Expr(E)), Expr(GからEを削除)), 積(Expr(E), Exp

    全域木を列挙する - Qiita
  • 本の虫: rvalue reference 完全解説

    目的 この記事は、C++0xのrvalue referenceを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からrvalue referenceを恐れることなく使う物のC++0xプログラマになれるだろう。 lvalueとrvalueについて Cの時代では、lvalueとrvalueの違いは、代入演算子の左側か右側かという違いだけであった。つまり、left hand value, right hand valueの略である。従って、訳語も、左辺値、右辺値であった。C++においては、これはもはや正しくはない。従って、右辺値、左辺値というのも、誤訳である。それ故に、ここでは、これ以上、左辺値、右辺値という名称を使用しない。 誤解を恐れずにいえば、lvalueとは、明示的に実体のある、名前付きのオブジェクトであり、rvalue

  • 一時オブジェクトの寿命と右辺値参照、ムーブセマンティクスのお話 - Qiita

    仰々しいタイトルですみません。 それぞれが絡み合ってるのであんまり綺麗にまとまっていませんが、一時オブジェクト、右辺値、左辺値、ムーブセマンティクスのお話をします。 4/11 ideoneへのURLをコード例の下に追記しました。 飛ぶと実際に実行した様子を見ることが出来ます。 一時オブジェクト ( = 右辺値 ) 一時オブジェクトは、右辺値と同等の意味合いで使われます。 すなわち、関数の戻り値、コンストラクタによって生成された直後のインスタンス、リテラルなどもここに入れることができるでしょう。 基的に一時オブジェクトはその式( expression )が評価された時点で破棄されます。 struct something { ~something() { std::cout << "destructor" << std::endl; } }; something func() { retur

    一時オブジェクトの寿命と右辺値参照、ムーブセマンティクスのお話 - Qiita