タグ

ブックマーク / frsyuki.hatenablog.com (13)

  • 並列データ転送ツール『Embulk』リリース! - Blog by Sadayuki Furuhashi

    こんにちは。古橋です。 先日の*1 データ転送ミドルウェア勉強会で、新しいオープンソースツール Embulk をリリースしました。 Embulk, an open-source plugin-based parallel bulk data loader from Sadayuki Furuhashi Embulk は、リアルタイムなログ収集では常識となった fluentd のバッチ版のようなツールで、ファイルやデータベースからデータを吸い出し、別のストレージやデータベースにロードするためのコンパクトなツールです。 fluentd と同様にプラグイン型のアーキテクチャを採用 しているため、RubyJavaで簡単なコードを書くことで、様々なファイルフォーマットやストレージに対応することができます。一方で fluentd とは異なり、高速性やトランザクション制御、スキーマを使ったデータのバリ

    並列データ転送ツール『Embulk』リリース! - Blog by Sadayuki Furuhashi
  • Proxy DHCPを使ってネットワークブートサーバーを構築する - Blog by Sadayuki Furuhashi

    pxe-pdhcpはProxy DHCPサーバーの実装です。Proxy DHCPはPreboot Execution Environment (PXE)というネットワークブートの標準規格を使ってディスクレスコンピュータをネットワークブートする際に使います。ディスクレスコンピュータは簡単に増やしたり交換したりできるので、シンクライアントやHPCクラスタ、ロードバランサの裏に置く実サーバーなどを簡単に用意することができるようになります。 Proxy DHCPサーバーは別のホスト上で動いているDHCPサーバーと連携して動作します。DHCPサーバーはIPアドレスを割り振り、Proxy DHCPサーバーは Network Bootstrap Program (NBP。ブートローダーのようなものです) の位置をネットワークブートクライアントに通知します。クライアントはNBPを取得するのにTFTPを使う

    Proxy DHCPを使ってネットワークブートサーバーを構築する - Blog by Sadayuki Furuhashi
    yugui
    yugui 2014/11/09
  • 「分散システムのためのメッセージ表現手法に関する研究」 - 筑波大学大学院を卒業しました - Blog by Sadayuki Furuhashi

    このたび筑波大学大学院を卒業し、修士号を取得しました。卒業にあっては当に多くの方々にご助力いただきました。この場を借りて御礼申し上げます。ありがとうございました。 現在は起業して、12月からアメリカに在住しています。新たな価値を生み出すべく "下から上まで" システムの設計と開発に携わっており、エキサイティングな毎日を送っています。 修論シーズンに日にいなかったので、修士論文はメールで送って提出し、卒業式にも出席していないというありさまなので、当に卒業できたのかどうか実感がないのですが、友人によれば「学位記はあった」らしいので、きっと大丈夫でしょう。(写真はカリフォルニア州マウンテンビューにて) さて、せっかく時間を割いて書いたので、修士論文を公開することにしました。 分散システムのためのメッセージ表現手法に関する研究と題して、バイナリ形式のシリアライズ形式である MessagePa

    「分散システムのためのメッセージ表現手法に関する研究」 - 筑波大学大学院を卒業しました - Blog by Sadayuki Furuhashi
  • Amazon EC2 で手元のホストとファイルを共有する - Blog by Sadayuki Furuhashi

    Amazon EC2 はVMを好きなタイミングで好きなだけ使うことができるので、複数のサーバを使う分散システムの検証環境として非常に使いやすい*1。費用を計算してみても、自宅でクラスタを動かすことを考えれば、十分安く上がりそうである。 しかし、VMを起動するたびに環境を設定したり、新しいテストを実行するたびにファイルを配ったりするのは面倒なので、ファイルを共有したくなる。 通信の遅延がかなり大きいので、EC2上でssh越しにファイルを編集するのも少々つらい。 そこで、手元のホストとホームディレクトリを共有する。さらに、一度転送したデータはキャッシュさせる。 共有ホームディレクトリ環境の管理方法と組み合わせれば、便利に使えるに違いない。 戦略 ファイル共有には NFSv4 over ssh を使う。NFSv4はポート番号を1つしか使わない(portmapperも要らない)ので、ssh越しで使

    Amazon EC2 で手元のホストとファイルを共有する - Blog by Sadayuki Furuhashi
  • 並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi

    分散KVS kumofs のコードは、全体で約2万行です*1。 そのうち、ネットワークI/Oやプロトコルに関するコードは約1万行*2で、全体の約半分を占めています。 ロジックは残りの半分*3だけで実装されています。 この実例から分かりますが、kumofsのような分散アプリケーションを開発するにはI/O周りの実装が大変で、とてつもなく大きな障壁になっています。*4 さらに今日では、性能を稼ぐためにマルチスレッド化が必須です。また、多数のクライアントを少ないリソースで効率よく相手にするには、非同期・イベント駆動型のアーキテクチャも必要になります。さらに、究極的な性能を達成すべく GC を利用しない C++ においては、実装のみならず設計も大変です。 これに加えてソケットAPIの難解な挙動に対処にしなければならないため、C言語やC++によるネットワークプログラミングは、vimの使いこなしなどと同

    並列イベント駆動I/Oフレームワーク「mpio」リリース - Blog by Sadayuki Furuhashi
  • 「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記

    Parsing Expression Grammar (PEG)をベースとした構文解析器を生成するパーサジェネレータMetalを作りました。Rubyで書かれており、Rubyのコードを生成します。 Metalの多くはOMeta: an Object-Oriented Language for Pattern MatchingをRubyに移植したものです。 Metalの特徴: Rubyでアクションが書ける オブジェクト指向(継承、Mix-in、委譲、オーバーライド、super) PEGの特徴はそのまま 曖昧さが無い 左再帰が書けない(いまのところ) メモ化する ソースコードはCodeRepos:/lang/ruby/metalにあるので、ガツガツいじれます。 使い方 Ruby gemsでインストールできます。 $ gem install metal 文法定義ファイルを書いて、metalコマンド

    「Metal」 based on Parsing Expression Grammar - 古橋貞之の日記
    yugui
    yugui 2008/07/06
    BNF => PEG, C++ => Rubyなboost:spiritという趣かな?
  • Partty!.orgの操作方法 - Blog by Sadayuki Furuhashi

    これは! http://www.partty.org/session/test2/2008/03/14/16/08/47 そういえば書いてなかった>< Flexターミナルエミュレータで日本語入力 インプットメソッドがONだと直接入力ができません。回避策として、Flexターミナルエミュレータの下の方にある「Command」タブの中に入力欄が用意してあります。この入力欄には日語が入力できます。 ゲストロック partty.orgコマンドにはゲスト(Flexターミナルやtelnetクライアント)からの操作を一時的にロックする機能があります。デフォルトでは「Ctrl-]」でロックできます。(もう一度押すとロック解除) ']'はpartty.orgコマンドの-c引数で変えられます。 telnet接続とterminal-scale ゲストはtelnetでも接続できます。www.partty.orgの

    Partty!.orgの操作方法 - Blog by Sadayuki Furuhashi
  • Partty!.orgのしくみ - みんなでペアプロできるサービス - Blog by Sadayuki Furuhashi

    今操作しているターミナルを共有できるサービスPartty!.orgを公開しました。 Partty!.orgソフトウェアの中に入っているpartty.orgコマンドを使うと、今操作しているターミナルの画面を、他の人に見せたり、操作してもらったりすることができます。 共有されているターミナルを見る側は、ブラウザさえあればFlash製のターミナルエミュレータを使って接続することができます。使い慣れたターミナルエミュレータが使いたいと思ったら、telnetクライアントも使えます。 ↓こんな仕組みになっています。 partty.orgコマンドを起動すると、シェル(bash, zsh, ...)が起動し、その出力がPartty!.orgサーバーに送られます。そこからFlash製のターミナルエミュレータや、telnetクライアントに配信されます。 ※ターミナルの画面は暗号化もされずにwww.partty

    Partty!.orgのしくみ - みんなでペアプロできるサービス - Blog by Sadayuki Furuhashi
    yugui
    yugui 2008/03/15
  • 開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi

    なかなかrootにならせてくれない、ハードウェアを選ばせてくれない、設定ファイルをviでいじらせてくれないなど、不自由なUNIX : Mac OS Xですが、それ故の自由が何物にも代え難い今日この頃。Leopardになってcron+pdumpfsの仕事まで持って行かれてしまいました。 前回のTiger版カスタマイズメモに引き続いて、Mac OS Xのカスタマイズを書いておこうと思います。 Terminal.app タブ機能が実装されたりssh-agentがKeychainと統合されたりと、Leopardで驚異的なアップデートが行われたターミナル周りですが、まだまだ改善できる余地があります。問題は以下の3点。 HomeキーとEndキーが使えない 色が見にくい ショートカットキーが使いにくい まずHomeキーやEndキーですが、これは環境設定で変更できます。Terminal.appの環境設定の

    開発環境としてのMac OS X Leopard - Blog by Sadayuki Furuhashi
    yugui
    yugui 2008/02/04
  • Ruby 1.9のmodule_evalとブロック付きメソッド呼び出し - Blog by Sadayuki Furuhashi

    WikiFormeをRuby 1.9でも動かせるようにしようとして、困った。 具体的に言うと、Ruby 1.9(ruby 1.9.0 (2008-01-06 revision 0) [i686-darwin9.1.0])だと↓このコードが動いてしまう。 class Test end def modify_test(&block) Test.module_eval(&block) end # ↓一度modify_testメソッドを通過してTest.module_evalを呼び出す modify_test { def func p "worked" end # ↓意図しない動作orz func #=> "worked" } # ↓意図しない動作orz func #=> "worked" # ↓これは意図通り Test.new.func #=> "worked" 一方、↓このコードは意図通りに動

    Ruby 1.9のmodule_evalとブロック付きメソッド呼び出し - Blog by Sadayuki Furuhashi
  • 古橋貞之の日記 - 開発環境としてのMac OS Xカスタマイズ

    Mac OS Xを使っていないプログラマは、時間の80%を無駄にしている、かどうかは知りませんが、堅いGUIとUNIX系のコマンドラインツールを使えるMac OS Xは、開発環境として使いやすいことは確か。 が、デフォルトのままでは、Terminal.appで日語が表示できないとか、lsやfindがGNU系じゃなくてBSD系だとか、要するにOSだってカスタマイズしてなんぼというわけであります。 というわけで、私のMac OS Xのカスタマイズをこのあたりに書いておきます。 ※2008/2/3追記: Leopard版書きました > 開発環境としてのMac OS X Leopard Terminal.app Mac OS Xにはデフォルトで「ターミナル」(/Applications/Utilities/Terminal.app)が付いてきますが、これがデフォルトではまったくイケてない。主要な

    古橋貞之の日記 - 開発環境としてのMac OS Xカスタマイズ
    yugui
    yugui 2007/11/03
    Terminal.appとか
  • WikiForme - 自分用Wiki記法パーサ - Blog by Sadayuki Furuhashi

    はてな記法、PukiWiki記法、tDiary記法などなど、世の中「なんとか記法」が溢れているわけですが、往々にして「自分にぴったり合う記法なんてどこにも無い!」という結論に達する場合が多く、結果として「なんとか記法」の乱立を生んでいるのではないでしょうか。 というわけで、自分専用のWiki記法を簡単に作れるカスタマイザブルパーサ WikiForme を作ってみました。乱立乱立! 記法を統一しようなんてムリですよね。もはや宗教論争です。自分専用の記法があればいいんです。 ※2007/09/23: バージョン 0.3をリリースしました > WikiForme 0.3 リリース! - 構造化Wiki記法パーサ ※2007/09/13: バージョン 0.2をリリースしました > WikiForme 0.2 - 構造化Wiki記法パーサ ※2007/08/08: バージョン 0.1をリリースしまし

    WikiForme - 自分用Wiki記法パーサ - Blog by Sadayuki Furuhashi
    yugui
    yugui 2007/07/17
    便利そう。だが、こうしてWiki記法はSGML化していくのであった。
  • 分散ファイルシステム/ブロックデバイスをまとめる - Blog by Sadayuki Furuhashi

    昨日KLab勉強会#2の資料を公開しましたが、その中で動的な分散ファイルシステムを設計していると書きました。分散ファイルシステムというのは既にいろいろ存在しているわけですが、情報が分散していてサッパリ分からないので、このあたりでまとめてみたいと思います。 間違っていたり古かったりするに違いないので、正確な情報は家の情報を参照してください。 ファイルシステムレイヤー NFS GFS(Global File System) OCFS GlusterFS Lustre 下位レイヤー Filesystem Block Device Block Device Filesystem Block Device 読み込み ○ ○ ○ ○ ○ 書き込み ○ ○ ○ ○ ○ アクセスの冗長化 × ○ ○ ○(負荷分散と排他) × データの冗長化 下位レイヤーに依存 下位レイヤーに依存 下位レイヤーに依存 ○

    分散ファイルシステム/ブロックデバイスをまとめる - Blog by Sadayuki Furuhashi
  • 1