Paxosのお勉強メモです(以下、分散システムとか無知なのですごく勘違いしてる可能性ありますので要注意) Wikipedia: Paxos algorithm Paxos is a family of protocols for solving consensus in a network of unreliable processors. Consensus is the process of agreeing on one result among a group of participants. This problem becomes difficult when the participants or their communication medium may experience failures. Paxosは、信頼性の低い複数の処理ノードによるネットワークで「コンセンサス
5.5 Graphic representation of the flow of messages in the basic Paxos
Nope, this is not the title of a children’s book (though it would be great as that!). Quote Google: Chubby is a fault-tolerant system at Google that provides a distributed locking mechanism and stores small files. Typically there is one Chubby instance, or “cell”, per data center. Several Google systems – such as the Google Filesystem (GFS) and Bigtable – use Chubby for distributed coordination an
The duo is not Cisco and Poncho or the Lone Ranger and Silver. Paxos is closer to leather biker gear and a Harley Davidson belt buckle. The outfit gets some panache and the biker’s pants stay properly slung. You may want to read the 16 pages of Googley goodness here. The paper is “Paxos Made Live–An Engineering Perspective.” One of the interesting facts about this paper is that Tushar Chandra has
Chubbyの特徴は、GFSやBigTableに比べるととても小さなデータを扱うことで、設定ファイルのような扱いになる。 また、Chubbyファイルにはロックする機能があります(おそらくこの意味が大きい)。GFSにはロック機能はないが、Chubbyを利用することによってGFSにもロック機能を持たせることができます。 ここでちょっと面白いのが、Chubbyセルの5つのレプリカの中からマスターとなる一つを選ぶアルゴリズム。レプリカ自身の合意によって決定されるこの方法のことを「コンセンサスアルゴリズム」というそうです。ChubbyではPaxosと呼ばれるコンセンサスアルゴリズムを用いています。 さらにChubbyはDNSの役割も果たすこともできます。 第3章のまとめとして、GFSは大きなファイルを扱う分散ファイルシステム、BigTableはGFSを利用した分散ストレージ、Chubbyはロックサー
The Chubby Lock Service for Loosely-Coupled Distributed Systems Mike Burrows Abstract We describe our experiences with the Chubby lock service, which is intended to provide coarse-grained locking as well as reliable (though low-volume) storage for a loosely-coupled distributed system. Chubby provides an interface much like a distributed file system with advisory locks, but the design emphasis is
とある外注さんが書いてきたコードがひどかった。 バックグラウンドでのオーディオ再生を、Activityから作成したワーカースレッドで行う。キャンセル処理は全く考慮していない。 UIスレッド上でばんばんHTTPリクエストを投げる。応答を読み終わるまでループを回す。 アプリケーションの起動中にずっと保持する必要のある情報をIntentに書く。それを読むのはonStart()ではなくonCreate()。 Activityの初期化は全部onCreate()に書く。onStart()もonStop()も全く使ってない。 アプリケーションの起動中にずっと保持する必要のある情報をstaticメンバに持たせる。 どう悪いか説明しておこう。 Activityから起動されるワーカースレッドの寿命 たとえば画面上で表示する情報をHTTPリクエストで取得する等の処理はワーカスレッドを使うと応答性を失わずに欠くこ
第12回G*ワークショップにて行った講演のスライドと発表原稿 はじめに 11/9にJGGUG様主催にて第12回G*ワークショップが開催されました。そこで、「Model On Grails - DCIアーキテクチャへの道すじ-」と題しまして、DCIアーキテクチャについて講演させて頂きましたので、その際のスライドと発表原稿を公開します。 スライドはこちら アジェンダは以下の通りです。 導入 先駆者たちが遺したもの オブジェクト指向の死角 DCIアーキテクチャ サンプル 導入 今回のテーマは「DCIアーキテクチャ」です。日本では、2010年の1月にJames O. Coplien氏が来日して講演したことで知られるようになりました。Googleグループのメーリングリストを見る限りは未だ黎明期にありますが、何か大きく化けそうな気配を漂わせていると言えるのではないでしょうか。 このDCIアーキテクチャ
Skype フォンが我が家にやってきた TECO XS2008CA 2010/4/4 20:17 2019/10/22 6:56 2 Webサービス skype 当記事はアフィリエイト広告を掲載しています。 ダンナが 4 月より在宅で仕事をするようになった。そこで、登場した問題が「電話」。うちには固定電話がない。母屋にあるのでとりあえずは携帯があればなんとかなるかと、思って電話加入権の権利は 2 つもあるのだが(ダンナとわたしの分)、 NTT や プロバイダの IP フォンにも加入しなかった。 しかし、仕事のやりとりで電話(音声通信)が必要だと、実感した。通話相手も基本パソコン前に座っているので Skype で代用可能だが、なぜかダンナのパソコンの調子が悪いのか、途中から音声が聞こえなくなったりする。(遊びではないので)それでは時間がロスしてもったいない。時間は有限なのだから! そんなダン
This document discusses Hadoop and its ecosystem. It covers Hadoop distributions like Cloudera and Amazon's Elastic MapReduce service. It also discusses running SQL-like queries using MapReduce and moving data between MySQL and Hadoop. Key algorithms like map and reduce functions are explained through examples. Different Hadoop deployment options on EC2 like standalone, Cloudera, and EMR are also
AppEngineは、万能なプラットフォームではありません。むしろ、かなり使い道は限定されていると言ってもいいでしょう。 向いていないアプリで使うとかなりはまって、アプリが完成しないリスクがあります。 一方、向いているアプリで使うとこれまでよりかなり費用を節約できたりとか、儲けにつなげることができます。 AppEngineにどのようなアプリが向いているかというと、AppEngineがGoogleの既存のインフラをそのまま利用していることをまず知っておく必要があります。 Googleのインフラは、(極端に単純化すると)大量のデータを多くの人に同時に見せるために最適化されています。 AppEngineも同様で、大量のデータに大量にアクセスがあっても大丈夫なように、BigtableというKVSを使っています。また、自動でスケールアウトするWebのFront Endも既存のインフラをそのまま使って
にしても、こちらのサイトでも言われていますが、なぜ半角カナ専用のUnicodeブロックがないのかと小一時間(ry http://blog.livedoor.jp/sasata299/archives/51194035.html http://d.hatena.ne.jp/pasela/20081003/ll_unicode ということで、 sub InHankakuKatakana { "FF65\tFF9F" }という一行をはっつけると、つかえるようになりますね。 #!/usr/bin/perl use strict; use warnings; use utf8; use Test::More; sub InHankakuKatakana { "FF65\tFF9F" } ok("\x{FF65}" =~ qr/\p{InHankakuKatakana}/); ok("abc" !~
Sizzle What is Sizzle? Sizzle is an open source implementation of the Sawzall programming language designed for interoperation with the Hadoop MapReduce and DFS stack. It is implemented in pure Java, is easily extensible, and the programs produced by it will run anywhere that has a recent Hadoop installed, even if Sizzle is not also installed. Why Sizzle? Up until a few days ago, there was no publ
Scientific Programming Journal, vol. 13 (2005), pp. 277-298 Very large data sets often have a flat but regular structure and span multiple disks and machines. Examples include telephone call records, network logs, and web document repositories. These large data sets are not amenable to study using traditional database techniques, if only because they can be too large to fit in a single relational
分散してますか?俺はあまりしてませんが。 さっそくですが、グーグル、分散処理のためにデザインされた言語「Sawzall」をオープンソースで公開 - Publickeyで紹介されている、「Sawzall」という言語をMac OSXにインストールしてみた。 szl - Szl - A Compiler and Runtime for the Sawzall Language - Google Project Hosting インストール homebrewを導入したので、このszlもbrew管理下でインストールしてみたのよ? 手順は以下の通りっすわー(ミサワ)。 # # Googleの分散処理のためにデザインされた言語「Sawzall」をhomebrew管理下でmac osxに入れる方法 # # http://code.google.com/p/szl/ # # 参考 # http://news
ボチボチ中の人の作業がKitchenSinkのlint作業やらドキュメントコメントの充実化に向いてきてるようで、リリースも近づいてきてる模様?(個人の感想です) ってことで、ちょっと先取り感覚にKitchenSinkの新しく実装されたコードから気になる新規機能をピックアップしてみました。中途半端なのはいつもどおりのクオリティということで。 i18n対応、String.formatの追加 ISOの二文字コード(enとか)のフォルダをプロジェクト直下のi18nフォルダ(手動で作る必要があるようですが)に並列に配置して、次のようなXMLファイル(strings.xml)として宣言。 Ti.Local.getString(keyString)もしくはこれのショートカット表現L(keyString)でi18nに対応しようというもの <?xml version="1.0" encoding="UTF-
id:xaicron 氏が紹介なされていました make test で Test::mysqld を永続化させる方法 を早速導入していたのですが、make test は速くなって便利なのですが、prove で 1 つずつテストをするときは、相変わらず mysqld を毎回、起動・終了するので時間がかかって開発時のストレスになります。 そこで、開発時には別ウィンドウで mysqld を立ち上げておいて、そこに接続しに行くようにすれば大分快適になると思い、実装してみました。 #!/usr/bin/env perl use strict; use warnings; use FindBin; use lib "$FindBin::Bin/../lib"; use File::Spec; use JSON; use Test::MyApp::mysqld; my $tempfile = File:
サーバのメモリが思った以上に消費していたのでサックリ調べてたのですが 各プロセスのメモリ使用状況の調べ方としては ps aux --sort=-rss | head -40とやるとRSSのサイズでソートしてくれるのでheadとかでみてやればメモリ使用量が多い順に参照可能。 ただたんにps auxしただけだと見るのがしんどい。 topでもshift+Mで同じ感じでみれるのでそれでも良い。 (cを入力してプロセスの詳細を表示するとなおよい) あとはCoWに乗ってるかを調べたが、 http://d.hatena.ne.jp/naoya/20080212/1202830671 naoyaさんが紹介されている方法そのまんまでよいでしょう。 sudoして実行すること。 Cowはアプリの質にもよるが基本的にはライブラリが共有メモリに乗ってればいいから アプリの質をみつつsharedなパーセントを調整出
Looking for a tabbed version of famous PuTTY? PuTTY Connection Manager is a free PuTTY Client Add-on for Windows platforms which goal is to provide a solution for managing multiple PuTTY instances. This is one of the most important missing feature of PuTTY (referring to this and this user complaint)...
みんなのIoT/みんなのPythonの著者。二子玉近く160平米の庭付き一戸建てに嫁/息子/娘/わんこと暮らしてます。月間1000万PV/150万UUのWebサービス運営中。 みんなのブロックチェーンは,ブロックチェーンの入門書。暗号やハッシュなどを含め,基礎からブロックチェーンの仕組みを学べる書籍です。 いろんな方に「新しい技術を学ぶことの楽しさ」を感じ取ってくれたら著者として嬉しいです:-)。お金は技術的にどのように定義されるのか。 みんなのIoTは,モノのインターネットと呼ばれるIoTの入門書です。IoTの基本について,読者に寄り添って優しく解説しました。裏テーマは一番とっつきやすいPython入門書。サポートページはこちら みんなのPython 第四版は,より分かりやすい入門書を目指し,機械学習やデータサイエンスの章も追加して第三版を大幅に書き換えました。Python 3.6にも華
XslateはMacroに対応しているのですが、INCLUDE先では利用できないという制約があります。 その対応が以下実際のコード。 INCLUDE先でも利用できるようになった際の移行を考慮して実装しています。 kazeburo++ package Golgo::Admin::View::MacroSection; use strict; use warnings; use base qw/Exporter/; use Data::Section::Simple; use Text::Xslate; our @EXPORT = qw( paginate ); my $XSLATE; __PACKAGE__->create_xslate(); sub paginate { my $args = {}; ( $args->{pager} , $args->{my_uri} ) = @_; re
Yahoo! JAPANを中心に回っている日本のインターネット界。 2008年1月に、Yahoo! JAPANトップページの横幅が950pxになった時、1000px弱時代のWebデザインに突入しました。Yahoo! JAPANのすごさというのは絶大で、もしユーザーや顧客先から文句を言われたとしても、Yahoo! JAPANと同じ仕様であるならば、 Yahoo! JAPANだって○○だよ! と言うだけで片付けられるくらい絶大な力を持っています。 さて、そんなYahoo! Japanが、今度はInternet Explorer 6(IE6)のサポートを終了させるようです。 IE6でYahoo! JAPANトップページにアクセスすると次のように表示されます。 お客様のブラウザはInternet Explorer6です。 12月中旬より、Yahoo! JAPANトップページが正しく動作しなくなる場
Kyoto CabinetおよびKyoto Tycoonに新たに導入された「StashDB」を使うとmemcachedよりも空間効率を向上させられるという話。 StashDBとは 前回の記事で説明したように、Kyoto CabinetではローカルMapReduceのキャッシュとしてTinyHashMapというクラスを実装して省メモリ化を図っている。丁寧にシリアライズしてデータを詰めていくとかなりメモリを節約できるものなのだ。 同じ構造をDBMのインターフェイスにしたのがStashDBである。ProtoHashDB, ProtoTreeDB, CacheDB, GrassDB, HashDB, TreeDB, DirDB, ForestDBに続く第9番目のDBMということになる。もちろん、マルチスレッドセーフにして、レコード単位の粒度でロックを施して一貫性を確保し、VisitorやCurso
DEALLOCATE PREPARE し忘れていたので修正しました。id:tokuhirom++ 結論から言えば プリペアド ステートメントの為の SQL 構文 を使えば出来る。 CREATE TABLE `timeline` ( `id` int(10) unsigned NOT NULL, `guid` int(10) unsigned NOT NULL, `title` varchar(140) DEFAULT NULL, `created_on` datetime NOT NULL, PRIMARY KEY (`id`,`created_on`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PARTITION BY RANGE (TO_DAYS(created_on)) (PARTITION p20101110 VALUES LESS THAN (73
はじめまして、gumiの津村です。 現在は解析系の仕事をしたり、ツールを作ったりしています。 今回の話は高速化についてです。 結構長めの文章です。 目次 実行速度の高速化 Python/C API ctypes Pyrex Cython SWIG その他 纏め 実行速度の高速化 高速化といっても色々ありますが、今回は実行速度の高速化についてです。 弊社ではPythonを全面的に採用していますが、そもそもLLは実行速度が遅い言語です。特にC言語のようなコンパイラ系の言語と比べると非常に遅いです。 それでもLL系の言語がここまで使われるようになったのは、開発効率が良いからです。 もはや常識ですね。 しかし、それでも特定の領域ではどうしてもPythonのようなLL系言語では厳しい部分も出てきます。 アルゴリズムを変更しても、ハードウエアを変えても、無理な物は無理です。 速度に問題がある場合の最適
IPv4アドレスの例としては、上記IPv4アドレスを使えばいいわけですが、世の中を見ると結構好き勝手なIPv4アドレスを例として利用している事例が多いというのが現状ではないかと思います。 私が初めてこれを知ったのは、kazuさんのブログの「あどけない話:例として推奨されているドメイン名とIPアドレス」を読んだときです。 それまでは、知らなかったので、適当なIPv4アドレスを使ったサンプルを書いてしまってました。 申し訳ありません。。。 余談ですが、kazuさんは、私が「技術的に一生追いつけそうにない」と思っている凄い人の一人です。 こういった凄い方々を色々と見ていると、私が自分のサイト名に「Geek」という在らぬ単語を入れてしまったことを悔いていたりします。 以前から書き続けていますが、私は「ギーク」なんかじゃないです。サイト名は気のせいです。すみません。。。 というか、そういう「凄い」と
Latest topics > Jetpackを読み解く 宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! « Jetpackへのモヤモヤを全部吐き出そう Main msysgitとTortoiseGitの組み合わせでSSHでの接続に失敗する » Jetpackを読み解く - Nov 10, 2010 Developers Conferenceでの発表向けの内容に盛り込めそうにない話を書いていく。 話のテーマを決めるにあたって、とにかく最初は1つJetpack SDKでアドオンを書いてみようと思ったんですよ。 でも、「こう書くと動きますよ」って言われてもなんだか信じられなかったというか、どういう経路でどういう風にしてそのコードが読み込まれるのか分からな
Firesheep の仕組みについて調べてみました。一言で言うと「ARP スプーフィング」のツールでした。 Firesheep とは何か と、その前に Firesheep の前知識に関してはこちらをお読みください。 ARP スプーフィングとは何か 普段私たちが利用しているパソコン、ニンテンドー DS などの通信機器は、インターネットに繋がるためにまず、インターネットへの最初の入り口 (ルータ) を探しに行きます。 そのルータを探す際に、ネットワーク内の全ての通信機器に ARP というプロトコルで「ノック」をします。「ノック」をして返事が返ってきた通信機器がルータになりますので、その後は、ルータを介してインターネットに繋がることができます。 ARP スプーフィングは、本来「ノック」を返すべきではない通信機器が「ノック」を返してしまう技術 (攻撃) です。つまりは、ルータになりすますということ
Redfin is using technology to redefine a $75 billion industry and revolutionize the way people buy and sell homes. We’re hiring. https://www.redfin.com/jobs Engineer-to-Engineer Talk: How and Why Twitter Uses ScalaTo kick off our San Francisco series of engineer-to-engineer lectures on new technologies and interesting problems in consumer software, we invited in the Great Alex Payne to talk about
2009/2/24 1 ScalabilityとAvailability 早稲田大学 丸山不二夫 はじめに クラウド技術の最大の特徴は、安価なサーバ を沢山並べて処理能力を拡大するという Scale-outの戦略である。 このことは、多数のマシンからなるScale-out のシス テム構成では、システムを構成するマ シンのエラーが、確率的には避けられない こ とを意味している。 これは、システムのAvailabilityにとっては、 重大な問題である。 はじめに 講演では、分散システムでは、Scalabiltyと Availabilityが矛盾するということから出発し て、現在のクラウドシステムが、どのように、 Scalabilityと Availabilityを両立させようと しているかを見ていく。 はじめに クラウドのAvailabilityは、基本的には、マシ ン
Recently in a number of "scalability discussion meeting", I've seen the following pattern coming up repeatedly ... To make your app scalable, you try to make your app layer “stateless”.OK, so you move the "state" out from your application layer out to a shared DB, or shared data layer.Now, how do we make the data tier scalable, by definition, we cannot make the data tier stateless.OK, now lets thi
ブログでもいろいろ解説しています。 http://little-hands.hatenablog.com/entry/top ドメイン駆動設計屈指の難解な概念「境界付けられたコンテキスト」について解説します。 --- 公式DDD Referenceの定義は以下の通りです。(和訳はだいぶ意訳しています) bounded context A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable. 境界付けられたコンテキスト 特定のモデルを定義・適用する境界を明示的に示したもの。 代表的な境界の例は、サブシステムやチームなど。 まぁなかなかよくわからないですよね。DDD
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く