K.Sasada's Home Page

Diary - 2007 February

研究日記

如月

_28(Wed)

http://www.aoky.net/articles/kathy_sierra/its_not_too_lat.htm

弱冠27歳にして、Ruby on Railsフレームワークの作者デビッド・ハイネマイヤ・ハンソンは世界を変え、Rubyに存在意義を与えた。

Rubyに存在意義はなかったのか。大ショックだ。


存在意義のないるびまの18号が出ました(Rubyist Magazine 0018 号)。Rails記事の部分だけ、ちょっと意義があるのかもしれません。

もしよかったら読んでやって下さい。

_斎藤ただし(Thu Mar 01 22:00:53 JST 2007)

 いやいや、んなことないです。いつも楽しみにしてます。(すきゃんだるお待ちしてます)

_27(Tue)

gruby だと「ぐるびー」と呼びたいので goruby がいいと思う。


def m(o=nil, k:) では、k は postarg なので、m(k:1) は、k==1になるんではなかろうか。


http://i.loveruby.net/d/20070226.html#p03

これって btest に移したほうがよくない? specialized instruction が効かなくなるし。

_26(Mon)

RubyKaigi のプログラムを決めた。

憧れの「はてな入りたい!」を達成した! ので、もういいや。ちょっと遠いし、かなり迷った。

_25(Sun)

b-mobile、結構快適かもしれない。


職場に返ってきた。


http://pc10.2ch.net/test/read.cgi/tech/1164885714/905

このバグは以前にもバグ報告をもらっているんだけど、まだ対応してなかったんだよな。なぜか for でだけ再現するという不思議。


この一点で言うと、確かにこの程度ですね。うん。


不思議、じゃなかった。前、問題までははっきりしていたんだ。ブロックの構造の問題で、ローカル変数と間違えてしまうというのがある。回避作というか、i=0 を、なんかてきとーな命令(j=nilとか)の後ろでやると、うまくいってしまうという。

抜本的な解決は、合宿の宿題。

_24(Sat)

宿でネットが使えないのがつらい。


http://pc10.2ch.net/test/read.cgi/tech/1164885714/890 出来ないって。

_23(Fri)

困った。眠れない。

_22(Thu)

おいしかったんだけど、ちょっと食べ過ぎた orz


てか、なんでこんなに重なるの。ねぇ、ねぇ。


http://slashdot.jp/science/article.pl?sid=07/02/20/1630209&threshold=-1

これを一時記憶に計算したら、あら不思議、いつのまにか遺伝的アルゴリズムに。


ホテルに電話してみたら、お前なんか氏らねーといわれた。大丈夫か、このツアー会社。


会社名のままだったらしい。


憧れのb-mobileを買った。150時間使えるbmobile hours。さて、どれくらい便利なのか。そもそも150時間ってどうなんだろう。


b-mobile hours で、マルチリンクとシングルリンク、どちらか選べる、ということで、シングルにする意味はわからなかったので電話で聞いてみたら、シングルのほうが電波状況によってはつながりやすいこともある、ということだった。なるほど。


@松江。


職場のカードキーを落とした orz

ということで、色々と方々に電話してみる。羽田空港に届けられていたらしい。どうもありがとうございました orz


1.9(YARV)は、大分1.8の仕様にだいぶ近づくそうです。

  • m17n は入る
  • methods などは、Symbol が返る
  • visibility (privateとか)は変えない
  • := などは入れない
  • class local instance variable は入れない
  • class local class variable は、どうなるの?

m17nにも色々議論が。

  • stdin/out/err のエンコーディングは LANG を解析
  • 標準エンコーディングは $KCODE
  • IO にエンコーディングオプション追加
  • IO の標準エンコーディングは $KCODE
  • File も同じ
  • Socket など、外から入ってきそうな IO は binary
  • 破壊的にエンコーディングを変更可能かどうかは検討中
  • システムコールなどで帰ってくる文字列のエンコーディングは検討中
    • glob とか、ファイル名(LANGか?)
    • gethostname(binary?)
    • 環境変数(LANGか?)
  • 出力はとくに気にしない
  • エンコーディングは特にバリデートしない
  • 対応するのは、とりあえず今対応している utf-8, shift-jis, euc (, none)。
  • 文字クラスはどうするのか?
    • Regexp で対応するだけ?
    • Rubyレベルメソッドを用意する?
  • まつもとさんは m17n を UNICODE と呼ぶ癖が

実は、Rails人気を見ていると、処理系作っていてもしょうがないのかなぁ、と思うところがあったんだけれど、まつもとさんのある見解を聞いて、とても勇気付けられた気がする。

もうちょっと、頑張ろう。

_たま(Fri Feb 23 00:15:59 JST 2007)

 スラドねたより。DNAをコンピュータとして使おうとする人たちもいるくらいだからねぇ

_21(Wed)

2時間半、ずーっと黙ってたちっぱなしだった。しくしく。

_20(Tue)

http://d.hatena.ne.jp/frogdiver/20070220/p1

去年の就職率ってどの程度のものだったんだろうか。


うわー、2/27 にアレですか ...。

_19(Mon)

私は怖がりのくせにオカルト話が好きで、寝る前に読むことがたまにあるんだけど、あるサイトを読んでいたら、急にPCが変な音鳴らしだした。本気でびびったんだけれど、あんなSE聞いたことないし、何がなんだか。

というか、ウイルスとかトロイとか、そっちのほうが怖い。


と、思ったら西尾君からのSkype着信音かよ!!! 超びびった!


http://www.hpcc.jp/swopp-announce/msg01595.html

俺の日記で何をするのかと思った。


日本 Ruby 会議 2007 - CallForSponsors

なんとも急で申し訳ないんですが、「今月末まで」RubyKaigi2007ではスポンサーを募集します。興味のあるお金持ちは、「とりあえずちょっと待って」でもいいので、今月中に一つご連絡ください。

_nishio(Mon Feb 19 06:18:02 JST 2007)

 w

_18(Sun)

YARVはよさそう、というか。良くなさそうでも否応無く使わされることになるんだよな。


おおきくふりかぶっての7巻。ひっぱるなぁ。

アリア9巻。もう買っていた orz 最近、被ることが多い。

ドラゴン桜 11-16。継続は力なりですねぇ。

_17(Sat)

初めて「ファンクラブイベント」のようなものに行ってきた。たまにはいいねぇ。色紙もくれるのか。凄いな。


るびまで、ああいうイベントをやっておしまい、ってのもいいかもしんない。

_16(Fri)

昨日、ウタゴエを見学させてもらった。お忙しい中ご対応頂きまして、どうもありがとうございました orz


YAPCどうしようかな。Perlわかんないんだよなぁ orz

_arton(Sun Feb 18 01:52:18 JST 2007)

 わからないのに買ってしまったおいらが来ましたよ。行こうよ。

_15(Thu)

パターンって、どこまで細分化すればいいのん?

_nishio(Thu Feb 15 21:24:41 JST 2007)

 自分の同一視したいものが一つにまとまっているところまで?

_14(Wed)

暇なはずなんだけどなぁ。おかしいなぁ。


ruby-talk のフォルダを整理するために。

require 'mailread'
require 'time'
require 'fileutils'

SRCDIR = ARGV.shift || raise
DSTDIR = ARGV.shift || raise

def move file
  dstfile = File.join(DSTDIR, File.basename(file))
  p [file, dstfile]
  FileUtils.move(file, dstfile)
end

Dir.glob(File.join(SRCDIR, '*')){|file|
  mail = Mail.new(file)
  date = Time.rfc822(mail['Date'])
  move file if date.year == 2006
}

Mac OSX で pthread_attr_setstacksize() が失敗するー。なんでー。EINVAL になる要素があるとは思えないんだけどな。なんでー。


ライセンスに同意して、libc のソースを見たらすぐわかった。pthread_attr_setstacksize() で指定できるサイズはページサイズの倍数じゃないといけないらしい。しくしく。

そんなのドキュメントにかいてねーよ!


しかし、さっきループぶん回して、どんな値で出来るか試したときには、全然OKがでなかったのに、と思っていたら、

for(i=0; i<max; i++) {
  pthread_attr_setstacksize(&attr, stack_size);
}

という、値を変えていない馬鹿なことをやってしまった。情けない。

_13(Tue)

skype。

_12(Mon)

ずっと寝てた.

_11(Sun)

やっとハイラルの平和を取り戻すことが出来た.

_10(Sat)

C4というのに参加させてもらった.質問が出来なかったなぁ.


RHG 中.

_ksm(Sat Feb 10 19:35:51 JST 2007)

 OLPC インプレッションきぼん

_ささだ(Tue Feb 13 13:16:26 JST 2007)

 遠目から見ただけなんですが、かわいい感じでしたね。

_9(Fri)

cygwin は、やっぱり pthread 使うことにした。で、同時生成スレッド数が40個しかない!!

なぜーーー!!

Cで書いても、python on cygwin で確認しても 800個は生成できるのに。何かが間違っている?

なんなんだろうなぁ、この 44 の制限ってのは。


しかし、cygwin のソースを読んでいて思ったんだが、C++ってほんとにインスタンス変数がわかりづらくて嫌だな。というのは、Rubyに毒されたからそう思うんだろうか。


うーん、わかんない。全然わかんない。


犯人がわかった!

XLDFLAGS="$XLDFLAGS -Wl,--stack,0x02000000"

だ。なんでこんなのつけてんだろ。

しかし、この中から切り貼りするのね>cygwin のスタック。


うそだった。

32MBのスタックを使おうとするからだった。mswin32 版も同じだったんだが、miniruby にはそのオプションがつかないようなので気づかなかった。


http://www.garbagecollect.jp/~usa/d/200702a.html#id20070209_P2

昨夜じゃないです.もうちょっと前.

後述:嘘でした.昨日.作業したのはもっと前なので勘違い.


mswin32スレッド、だいぶ安定したが、なんか時々刺さる。どうやってデバッグしたもんだか。


なんか突込みが出来なかったのでこちらに.

http://www.fobj.com/hisa/d/20070209.html#p01

win = OSX::NSWindow.alloc
win[:initWithContentRect, [200.0, 300.0, 250.0, 60.0],
      :styleMask, 15,
      :backing, 2,
      :defer, 0]

なんてのはどうですかね.Objective-C => [obj recv] から Ruby => bj[:recv] になる感じ.

もうあるかもしれないけれど.


もうちょっとがんばれば

win.initWithContentRect([200.0, 300.0, 250.0, 60.0],
      :styleMask, 15,
      :backing, 2,
      :defer, 0)

も出来るか.


もうちょっと,というのは引数つきメソッドは必ず引数解析する,という感じ.


・・・なんかYARVのデバッグをしていたら、

ラップトップが突然再起動した。

・・・こわ。

_hisa(Sun Feb 11 11:48:07 JST 2007)

きのうはどうもでした。 前者は、NSArrayやNSDictionaryなどで、どんな意味の [] なのか混乱しそうです。 後者はもともと実装してましたが deprecated になっています。「initWithContentRect は1つめの引数ラベル」と考えると、他のラベルと同列に扱っているobjc_send(もしくは[]でも)の方が自然な感じがしませんか。

_8(Thu)

色々対処中。

cygwin/mswin32 は、もう select を polling することにした。とりあえず、そんなに性能劣化は見られない。

_7(Wed)

また大きなコミットしました.ごめんなさい orz.


今回は「挙動を変えないコード整理」ということで,1 commit としたつもり.

こういうのは,どこまで分割するべきなんですかね.で,作業時にみつかった小さな変更などはどうやって分割していくべきなんでしょうか.根性でがんばる? それしかないのか.


「Objective-C MacOS X プログラミング」という書籍をたまたま買ってみたが,よみやすくていいですね.Objective-C(書きづらい)は全然知らないので勉強.C++などとの類推から,すいすい読める.

しかし,メモリ管理をプログラマが実際にどうやってるのかさっぱり見えない.きっちりかっちりリファレンスカウンタ管理してるんだろうか.超面倒くさそうだけど.ちゃんと,実際のプログラム例を見ないとわからないな.

アクセッサで適切にリファレンスカウントを管理,とかするのが定石なんだろうか.

_mfp(Thu Feb 08 20:40:19 JST 2007)

darcsを使えば簡単でしょう。commit(darcs record)時に「このhunkをpatchに入れても良い?」って 聞かれますから。 commitが分けられるのが中々便利ですね。 svnと互換性があるsvkでも不可能じゃないかも知れません。 svkでダメだったら、darcs+svnが使えることもあります。

いやあ,日本語で書いて疲れた。時間がかかりすぎ。

_hisa(Sun Feb 11 12:21:18 JST 2007)

 Objective-C本の5章とくにオーナーシップポリシーに定石と規約などが書いてあります

_hisa(Sun Feb 11 12:30:09 JST 2007)

結局のところプログラマに(リファレンスカウンタを使った)メモリ管理の責任が委ねられてはいるわけですが、メソッド名などと組み合わせた規約がきっちり決められているので(5章)、そのポイントを押さえれば見えやすくなります…などと書いていてrailsを連想してしまいました

_6(Tue)

@.v はありえないと言われてしまった>クラスローカルインスタンス変数.

_@v なんてどうかなぁ.


最近,どうもラップトップのメモリ不足に悩まされていたんだけど,スワップを切っていたかららしい.1GBメモリ積んでるんだから大丈夫だろう,と思っていたのだけれど,大丈夫じゃなかったらしい.


ロボットの話を色々聞けた.楽しかった.

_とおる。(Wed Feb 07 17:06:17 JST 2007)

 東京kittyみたい。

_5(Mon)

あんまりにも頭が悪くなっているのでLingrAPIを使ってみる.

require 'open-uri'
require 'kconv'
require 'net/http'
require 'rexml/document'
Net::HTTP.version_1_2


class LingrRoom
  class LingrAPIError < RuntimeError; end

  def initialize key, room, nick
    @key = key
    create_session
    enter room, nick
    @active = true
  end

  def post uri, params = {}
    uri = URI.parse("http://www.lingr.com/api/#{uri}")
    Net::HTTP.start(uri.host, uri.port) {|http|
      response = http.post(uri.path, uri.query)
      body = response.body

      if false # ||true
        puts "---------------------------------------------"
        puts response.code
        puts uri
        puts body
        body
      end
      body
    }
  end

  def get uri, params = {}
    open("http://www.lingr.com/api/#{uri}"){|f|
      f.read
    }
  end

  def get_text doc, path
    e = doc.elements[path]
    raise LingrAPIError.new("path not found: #{path} at #{doc}") unless e
    e.get_text
  end

  def request method, uri, params
    doc = REXML::Document.new(__send__(method, uri, params))
    raise LingrAPIError.new("Error: #{doc.to_s}") if get_text(doc, '/response/status') != 'ok'
    doc
  end

  def post_request uri, params = {}
    request :post, uri, params
  end

  def get_request uri, params = {}
    request :get, uri, params
  end

  def create_session
    doc = post_request "session/create?api_key=#{@key}"
    @session = get_text(doc, '/response/session')
  end

  def enter room, nick
    doc = post_request "room/enter?session=#{@session}&id=#{room}&nickname=#{nick}"
    @room_doc = doc
    @ticket = get_text(doc, '/response/ticket')
    @counter = get_text(doc, '/response/room/counter')
  end

  def observe
    doc = get_request "room/observe?session=#{@session}&ticket=#{@ticket}&counter=#{@counter}"
    #
    @counter = get_text(doc, '/response/counter')
    result = []
    doc.elements['/response/messages'].each{|e|
      nick = get_text(e, 'nickname')
      text = get_text(e, 'text')
      result << [nick, text]
    }
    result
  end

  def observe_loop
    while @active
      observe.each{|nick, text|
        puts "#{nick}: #{text}".tosjis
      }
    end
  end

  def say text
    doc = post_request "room/say?session=#{@session}&ticket=#{@ticket}&message=#{URI.encode(text)}"
  end
end

if $0 == __FILE__
  key = # ないしょ
  la = LingrRoom.new(key, "gauche", "ko1-test")
  
  Thread.new{
    la.observe_loop
  }
  
  while line = gets
    la.say line.strip
  end
end

あとは nadoka プラグインを作るだけ.


作った.2時間くらいか.ちゃんと動くかなぁ.


http://www.feyrer.de/NetBSD/bx/blosxom.cgi/nb_20060511_1032.html

なげー。


YARVを手に入れる、と読んで、ちょ、おま、とか思った。


今日の .xyzzy

(global-set-key '(#\C-c #\C-i)
                #'(lambda ()
                    (interactive "*")
                    (let ((*quotation-prefix*
                           (read-string "挿入文字: ")))
                      (quote-region (mark) (point)))))

hiki にコードを貼り付けるため.今までは秀丸でselection+tabだったんだけど,空行にはタブを入れてくれないので.


PPL2007,加賀かー.行ってみたいなぁ.行く口実が無い orz.


http://www.coins.tsukuba.ac.jp/~i021216/diary/?date=20070110#c01

これって、挿入が LinkedListと同等って言っていいんですかね。gap が無い場合は、ずらすしか無さそうだけど。


でかいコミットをしたが,コメントが足りていなかった雰囲気.すみません orz

_M田(Mon Feb 05 17:18:32 JST 2007)

 最悪はO(1)じゃないですが、平均的にはO(1)です。gapを作るとき、その時点でのListのサイズに比例する大きさのgapを作れば。

_なかだ(Tue Feb 06 14:33:57 JST 2007)

 vm_opts.hがCRLF+UTF8になってるんでよろ。

_ZnZ(Tue Feb 06 23:41:56 JST 2007)

 それstring-rectangleで(ry

_4(Sun)

型Rubyの人の日記から,http://www.bookman.co.jp/rensai/motenai1.html を,ふむふむ,と見ていたら....大島さんはどう見てもモテ系だろう! 思わず笑ってしまった.


コンサバな服,という表現を見つけたが,いったい何者だろう.GCの話じゃないことはわかる.

http://kw.allabout.co.jp/glossary/g_fashion/w006651.htm

コンサバとは、流行に左右されない控えめなファッションスタイルのこと。

そのまんまだった.しかし,文章を読んでいると,どうにもそうは思えなかったんだよな.

_Yugui(Sun Feb 04 11:24:39 JST 2007)

控えめって言っても流行にノリノリじゃないという意味での控えめで、地味という意味じゃないです。あ、対極の流行に乗ってるっていうのも、決してギャル系ではなく、ですね。

_soutaro(Sun Feb 04 20:32:49 JST 2007)

 コンサバ系GCって、なんかカッコいいですね

_みずしま(Sun Feb 04 21:42:49 JST 2007)

 対義語は何でしょう?プログレッシブ?

_斎藤ただし(Mon Feb 05 13:46:39 JST 2007)

だとすると「流行に左右されがちで派手なファッションスタイル」はこんな感じ? http://www.ee.udel.edu/~xuan/music/pink_floyd/pink%20floyd%2001.jpg

_arton(Mon Feb 05 14:00:55 JST 2007)

 対語は、ハイファッションとかモードかな。

_3(Sat)

おきたら16時。寝すぎ。

_2(Fri)

Ruby会議2007プログラム策定委員会準備。

これは行くね、俺は。

_1(Thu)

のーこーだいで,久々に喋った.あんなに人が居るとは思わなかった(授業の枠だったらしい).

うーむ,うまく伝わったかなぁ.

Sasada Koichi / sasada@namikilab.tuat.ac.jp
$Date: 2003/04/28 10:27:51 $