ラベル ソース の投稿を表示しています。 すべての投稿を表示
ラベル ソース の投稿を表示しています。 すべての投稿を表示

2013/03/23

【ニコニコ動画】Ruby C10K challenge: High Performance Networking (1/2) - Ilya Grigorik


今さらながら見てるけど、Non-blocking関連の情報ってなんでこんなに少ないんだ。
WEB/APサーバーをどう実装するか悩むなぁ。

見てて見つけた副産物em-proxy。
これテストにいいな!

2013/02/24

Validatable

コンストラクタの中での例外の話し。
この議論の中でValidatableについてリンクが貼られていた。この辺見てて思ったんだけど、型チェックある言語使ったほうがいいんじゃないだろうか...。

2012/03/25 追記:
よくよく考えるとこれいいな。コンストラクタでどうしても例外が発生する可能性がある場合は、例外を握りつぶした後エラーチェックすべきか。でも、エラーチェックを忘れそう...。ムムムム。

2011/09/21

クラスインスタンス変数

クラスインスタンス変数

使いたくなったのでメモ。それにしてもsmalltalkって多言語使いの口から妙に出てくる気がします。

2011/08/07

Rubyの組み込み例外クラスを調べる

Rubyの組み込み例外クラスを調べる @ Kwappa研究開発室
こういうことができるのが面白いなぁ。
puts Object.constants.find_all {|c|
  (cc = Object.const_get(c)) &&
  cc.respond_to?(:ancestors) &&
  cc.ancestors.include?(StandardError)
}.sort

2012/01/02: 個人的にはStandardErrorを親クラスに持つより、Exceptionを親クラスに持つものを調べたほうが便利っすね。

2011/07/11

privateメソッドを呼び出す

rubyではメソッドをprivateにするということは、可視性をなくすという意味ではない。__send__を使って呼び出したりもできるが、メソッドをテストするときにはこんな方法も使える。

2011/06/24

アプリケーションの速度には処理系の速度よりも組み込み関数やメソッドの性能のほうが重要

Ruby 1.9 で Web アプリを想定したベンチマークをとってみた
Ruby1.8とRuby1.9でベンチマークを取ってくれています。ボトルネックって、実測してみるとへぇーって思うところにあったりすることが多々ありますよねぇ。

2011/06/18

Fiber と Proc ―― 手続きを抽象化する二つの機能

Fiber と Proc ―― 手続きを抽象化する二つの機能
おぉぉぉぉ!
ネットワーク処理をするメソッドがあって、どうすればうまくメインの処理・ディレイ・処理回数の3つをうまく分離するかわからなかったのですが、これは美しい。Fiberを使ってコルーチンの考え方を導入すれば解決したんですねぇ…。Herokuも1.9使えるし、1.9に移ろうかなぁ。うーん…。

その他のFiberの例:
Ruby勉強会@関西でFiberについて勉強してきた
Fiberを使いやすくする仕掛け

2011/06/08

指定文字数での切り捨て

大量の文字出力があるコマンドラインアプリを作りました。その中の数行の出力結果が非常に長い場合、結果が見にくくてしょうがない問題に襲われました。
そこで、指定文字数だけ出力して残りを切り捨てるsnippetを追加。split(//)で1文字ずつhitさせるのが、multi-byte文字を扱うときの定石らしいですね。なんとなく実装しましたが、もっとうまい方法ないかなぁ...

def truncate(string, width)
  if string.length <= width
    string
  else
    abbr_symbol = "..."
    string = string[0, width - abbr_symbol.length]
    # Even if string consisted multi-byte characters,                                            
    # number_of_character would work well.                                                       
    number_of_character = string.split(//).size
    # Last character may be broken.                                                              
    string = string.split(//)[0, number_of_character-1].join

    (string || "") + abbr_symbol
  end
end

2011/06/23追記:
こういうときはjustified(揃える)という英単語を使うらしい。この場合だとleft_justifiedか。適切な名前がすぐに思いつくようになりたいなぁ...orz

2011/07/01追記:
String.ljustでもっと簡単に実装できる気がしてきました...。

2011/06/05

Rubyでも型チェック

Rubyでも型チェック
Rubyって、大規模システムに使えるのかなぁという懸念は、勉強していて頭のどこかにあります(実際使われてるんですが)。で、型チェックのサンプルを公開してくれてる人をハッケソ。こうやって見ると、Rubyで型チェックって冗長ですねw悩ましい。