K.Sasada's Home Page

Diary - 2010 July

研究日記

文月

_28(Wed)

体調が悪かったので、午前中休んでしまった。

_kt(Thu Jul 29 11:47:01 +0900 2010)

 たまには休んでくださいよ

_24(Sat)

Ruby検定1種:このプログラムの出力を答えなさい。

def foo
  (1 + 2
     + 3)
end

p foo

_21(Wed)

微妙に昨日の続きというか.

改行を "," の代わりに使えるようにするのはどうですかねぇ.

h = {
  a: 1
  b: 2
  c: 3
}

ary = [
  1
  2
  3
]

foo(
  a: 1
  b: 2
  c: 3
)

bar(
  1
  2
  3
)

baz(
  a: 1
  b: 2
  c: {x: 1
      y: 2
      z: 3}
)

# 混ぜるとキモイ
ary = [1, 2,
       3, [4, 5]
       6
       7]

こんなふうに使える.今は,(思いつくところでは)Syntax Error になるので,互換性的な問題はないと思うんだけど.

ハッシュでなんか書かせるとき,"," が鬱陶しかったから,こうなると嬉しいなあ.

やり過ぎかなぁ.

ああ,括弧無しメソッド呼び出しだと曖昧になっちゃうか.

foo bar(1)
    bar(2)
    bar(3)

ちゃんと,括弧(とかブレースとか)で囲んでいるとき限定の表記です,というのはどうなんだろうな.


Hash 構築に "," を使いたく無い,という無駄な努力.

class HashMaker
  def initialize
    @h = {}
  end

  attr_reader :h

  def method_missing sel, arg
    @h[sel] = arg
  end

  def self.make &b
    hm = self.new
    hm.instance_eval(&b)
    hm.h
  end
end

p HashMaker.make{
  a 1
  b 2
  c 3
}
#=> {:a=>1, :b=>2, :c=>3}
_satyr(Thu Jul 22 01:20:26 +0900 2010)

CoffeeScript はこれ採用してますね。 http://jashkenas.github.com/coffee-script/#objects_and_arrays

_ささだ(Thu Jul 22 08:41:39 +0900 2010)

 おお,なるほど!

_20(Tue)

postfix で secondly DNS を設定したところ,relay_domains を relaydomains と書いてしまっていて動かなかった.


これは,「正しくない設定(存在しない設定)」をしても,単に無視する,ということではまってしまった話だと思う.

shell script や ruby なんかで直接設定を書くような場合,こういうことは起こりやすいと思う.問題を狭めて,Ruby なんかで直接設定を書かせるとき,こういう間違いを起こさないような設定の書き方には,どんなものがあるか?


そもそも,Ruby で設定ファイルを書かせる,ってのにやり方はどれくらいあるか.

  • 1. 定数(nadoka がこれ)
  • 2. ハッシュ(QuickML とかがこれ)
  • 3. インスタンス変数(tDiary とかがこれ)

定数は,継承できるから便利だったので(継承させて使ってるのは俺だけのような気もするが).

1〜3,どれも知らないオプションを指定されたら怒るって作ることは出来るが,1,3 は任意の Ruby コードを書けるので自分用の定数,インスタンス変数を定義する可能性はあるんだよな.そういう意味で,制限させやすいのは 2 のような気がする.でも,Ruby の Hash リテラルは,カンマを要求するので書きづらそうな気がする.line separated な Hash リテラルって作ってくれないかな.

setting = %h{
  a: 1
  b: 2
  c: 3
}

うーん,イマイチ.


誰か,メソッド定義させるってのはあるかな.それは面倒だよな.def とか設定者に書かせるの.

普通に設定用メソッドを呼ばせるってのはあるなぁ.

set option1: 1
set option2: 2
set option3: 3

みたいな.set が邪魔ですな.

option1 1
option2 2
option3 3

でもいいかもしれない.設定名 == メソッド名.これなら間違いようがない.適当に method_missing で拾ってやれば,実装も楽そうだし.

こういう設計の設定ファイルってあるのかしら.見たこと無い.

うーん,これは良いものな気がしてきたぞ.次作るときはこれにしようか.


西山さんに「エディタで色づけすればすぐにわかるのに」という指摘を頂いた.確かに.

_kou(Wed Jul 21 07:00:54 +0900 2010)

 milter managerってやつはメソッドです。

_15(Thu)

vm3_gc のベンチマーク結果を weekly でまとめてみた.

http://www.atdot.net/fp_store/f.jejk5l/file.g.png

さて,2009/07/06-2009/07/13 の間になにが起きた? gc.c 関連の修正は行われてはいるが.


loop

http://www.atdot.net/fp_store/f.xujk5l/file.g.png

generator は 2010/05/17 になぜか速くなってるな.何かあったんだろうか.あれ,Fiber のやつを入れたのこの時期だっけ?

他のループは軒並み遅くなってる.これは,VM の基本性能が微妙に遅くなっていることを示している.まぁ,1割2割なんだけど.

_14(Wed)

電子投票が十分信頼性が高くなり,安価になったら,毎日政策などに対して選挙が行われるような世界になったりするんだろうか.


雪見酒さんのruby-modeを使わせてもらおうとしたら,私の用途では難しいことがわかった.10000行くらいの ruby script を扱おうとすると,多分何かのタイミング(" とか改行とか)で止まってしまう.

いや,__END__ 以下を切り捨ててくれるだけで問題無いと思うんだけど.

Sasada Koichi / ko1 at atdot dot net
$Date: 2003/04/28 10:27:51 $