Skip to content

Instantly share code, notes, and snippets.

@seki
seki / gist:4010665
Created November 4, 2012 06:54 — forked from makoto/gist:4010642
dRubyConf draft

dRubyConf 2012 参戦日記

こんにちは。「RubyConf参加支援企画プログラム」に採択していただき、デンバーまで行ってきた井上といいます。

今回は私がアメリカのカンファレンスで発表するまでの道のりと、dRubyの作者である関将俊さん(以下「咳」さん)と一緒に聞いてきた他のトークの概要を紹介していきたいと思います。

ちなみに私たちはdRubyに関連するような並列、並行プログラミングやデータベースのトークを中心に参加したので、このカンファレンスは「dRubyConference」という視点で見ていきます。

応募するまでの道のり

@seki
seki / gist:4010555
Created November 4, 2012 06:21
async oriented dRuby
require 'drb'
class DRbThreadIdConv < DRb::DRbIdConv
def initialize
@dict = {}
end
def to_obj(ref)
super
ensure
@seki
seki / drb12.md
Created September 21, 2012 15:23
rc12 drb

スタートアップ編

昔話からdRubyの過程でメタプログラミングしてる話をします。

old-fashioned UNIX programmer

  • 私は旧いスタイルのUNIXプログラミングに慣れていました。
  • 単機能のデーモンをいろいろなIPCをつないで協調させる世界です。
    • fork/pipe/signal
  • SysV IPC (shared memory, message, semaphore)
require 'drb/drb'
require 'monitor'
require 'digest/md5'
require 'webrick'
require 'webrick/cgi'
module SilkenTofu
class Session
include MonitorMixin
@seki
seki / wikir.rb
Created February 12, 2012 16:29
Tiny Wiki using Kramdown
# -*- coding: utf-8 -*-
require 'kramdown'
require 'webrick'
require 'webrick/cgi'
require 'drb/drb'
require 'erb'
require 'monitor'
class WikiR
class Book
@seki
seki / stm.rb
Created November 21, 2011 16:58
STM using Drip
require 'drip'
require 'thread'
class STM
class VersionMismatch < RuntimeError; end
class TransactionNotFound < RuntimeError; end
class Ref
def initialize(stm, name)
@stm = stm
@seki
seki / real_world_druby.md
Created November 15, 2011 17:24 — forked from makoto/real_world_druby.md
実世界でのdRubyの使用例

実世界でのdRubyの使用例

dRubyはこれまでに多くの大規模システムの基盤として利用されてきました。dRubyはいつものRubyプログラミングに非常に近い感覚で分散オブジェクトを実現します。これにより、複雑な分散システムであってもアイデアをすぐに実現することができます。 dRubyが提供するのは汎用のRMIです。スケッチの段階でdRubyを用い、有用性を確認したのちに用途に特化したミドルウェアに置き換えるといったように成長していったシステムも多いようです。 以下に実世界でのdRubyの使用例を示します。

Hatena Screen Shot (http://www.hatena.ne.jp/)

Hatena は日本を代表するインターネットカンパニーで、ブログ、ソーシャルブックマークサービスなどを提供しています。2006年当時(現在はサービス終了) Hatena Screen Shotという、登録されたURLのスクリーンショットをサムネイルとして表示するサービスがありました。このサービスのアーキテクチャーのユニークな点にWebフロントエンドはLinux上に構築されているが、スクリーンショットの撮影はWindowsのIEコンポーネントを用いて実現されていることにある。これはWindows環境の方がスクリーンショットを撮影できる環境が整っていたためであるが、クロスプラットフォーム間のシステムを協調させるdRubyを使った良い例といえよう。またスクリーンショットマシーンは並列処理が行われていたため、スケーラビリティも確保されていた。

@seki
seki / gist:1194969
Created September 5, 2011 13:14 — forked from makoto/gist:1159123
drubyコラム: Mustache (定型文書の生成とERB)

「{」の見た目から名付けられたMustacheというライブラリーが人気です。

https://github.com/defunkt/mustache

このテンプレートの面白いところは「極力ロジックを書かない」ことに注力したテンプレートだということです。以下がMustacheのホームページから抜粋した例です。

Hello {{name}}
You have just won {{value}} dollars!
{{#in_ca}}

Well, {{taxed_value}} dollars, after taxes.

@seki
seki / gist:1143222
Created August 12, 2011 23:29 — forked from makoto/gist:1136367
MoreRinda

More Rinda

Introduction

この章ではRindaの拡張例を見ていきます。

以下のコマンドでインストールできます。

gem install more_rinda
@seki
seki / gist:1135556
Created August 10, 2011 00:01 — forked from makoto/gist:1129607
MoreRinda

More Rinda

Introduction

この章ではRindaの拡張例を見ていきます。

以下のコマンドでインストールできます。

gem install more_rinda