トップ «前10日分 最新 次10日分» 追記

はじめてのにき

ここの位置付け

2004|11|
2005|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|12|
2025|01|

ToDo:


2008-06-09

_ シレン

http://d.hatena.ne.jp/atty/20080609#p1

おお買わなくていいよ情報が

(01:59)

_ 例外

いいかげん見るかーと思って少し考えはじめた。

まず Yajit が呼んだ非 JIT Ruby/C 関数が例外投げた場合。 これはもう JIT 関数では例外受け取れません! とかでいい気がする。いいんだよそれで! この制約はたぶん、 Ruby で書いた Proc オブジェクトを JIT 関数から呼んだ場合の return とかが わけわからんことになる(たぶん落ちる?)を意味する…と思う。

まぁたぶんちゃんとやろうとすると、恐らくだけど、 前者は Ruby 側いじらんといけないと思うんだよね。 だからとりあえず忘れる。 後者は Proc object 動かす時は JIT してから呼ぶ、とかやればまぁなんとかならんでもない気もする。

いや rb_rescue とかでできたりするのかな… rb_rescue もまた rb_rescue2 とかあって萎えるな。 まぁいずれにせよめどいので忘れる。

でまぁとりあえず、その制限のもとでなら break とかはできるんじゃないかな。

あと raise があったら、とりあえず rb_raise 呼んでやるくらいは してあげてもいいと思う。 いかにも面倒そうな rescue だのなんだのはとりあえず忘れる方向で。

しかし未だに Ruby の例外がよくわかってない。 vm_throw の throw_state って色々難解だな…

http://www.dzeta.jp/~junjis/code_reading/index.php?Ruby1.9%2F%CE%E3%B3%B0%BD%E8%CD%FD%A4%F2%C6%C9%A4%E0

http://rhg.rubyforge.org/svn/ja/chapter13.txt

(23:13)


2008-06-08

_ あー

class B
end
b = true ? B : Object
class C < b
end

動的に継承元決めれるのか!

(00:02)

_ たまねぎ

http://d.hatena.ne.jp/hayamiz/20080607/1212837967

カレーのうまさは玉葱の量に正比例することが 数学的に証明されてる[要出典] ので全部入れればいいのに

(00:53)

_ やっぱりそうかー

http://twitter.com/alohakun/statuses/828610236

僕もそんな気がしていました。 たぶんヒモとと同じくらい高難度。

(01:11)

_ Process.daemon

> irb1.9
irb(main):001:0> Process.daemon
i@u4 ~
> fg
fg: no current job

あたりまえだけどこうなるんだな。

(01:15)

_ ふむふむ

http://twitter.com/yhara/statuses/829198577

とりあえず確認。

(02:59)

_ ざっと見た感じ

おそらく 10.5 では CoreFoundation に入ってるシンボルなんだろうけど、 10.4 では Foundation に入ってるみたいだ。

DYLD_FORCE_FLAT_NAMESPACE とかでうまくいかんかな、 と思ったけど bus error

そもそもうちで SDL ビルドすると CoreFoundation だの Foundation だのへの 明示的な参照はできないんだけどな。 Cocoa あたりから間接的に参照されそうなものなのだけど…

(03:22)

_ T_CLASS

Ruby のこの定数の値変わってる…

ruby-1.9.0-0 とか -1 とか入ってるけど、 ヘッダの位置変えてなかったから それのせいでエラーが…

うーんインストールする場所は分けとくべきだったのか。

(05:52)


2008-06-07

_ TODO

  • sevilwm
  • sed
  • yajit の throw とか
  • yajit のレジスタほげほげ

まぁ気持ち悪いけど、 x86_64-darwin とか正直知らんっすーという感じで とりあえず対応する命令増やして色んなコード動かしてみた方がいい気がするな。

(00:03)

_ 社内ニート術

http://anond.hatelabo.jp/20080603171436

http://anond.hatelabo.jp/20080604095249

http://d.hatena.ne.jp/companeet/

すばらしい文献をみつけた。 しかし実践は難しそうだ…

(00:19)

_ OSC

http://www.ospn.jp/osc2008-do/

のついでに北海道旅行に行けないか

(00:22)

_ ふえー

http://www.kernel.org/doc/man-pages/changelog.html#release_2.80

カスみたいな変更なのに名前乗ってるし。 丁寧なプロジェクト運営してるんだなぁ…

(01:50)

_ かうぼーい

http://onosendai.jp/championship2008/index.html

そいやこれどうしよ

(02:45)

_ checkincludearray

ary = [1,2]
case 1
when *ary
else
end

へーこんな書き方できるのか… checkincludearray false が出るケースがよくわからんけどまぁ とりあえずいいとしよう…

(03:22)

_ さて

defineclass とか実装できる気がしないし、 JITする意味とかさっぱりないと思うので、 うまいこと YARV に丸投げできるといいんだけど、 はてさて。

(03:40)

_ defineclass

本当に難しいのだろうか。 とりあえず

  • クラスが無ければ作りますよ
  • それ以降の definemethod はそのクラスの下にね
  • 終わったら元に戻しますよ

ってくらいでいいのではないのか。 なんかできる気がする。

(04:46)

_ goto

http://www.atdot.net/~ko1/diary/200806.html#d7

みんな大好きな C だって Ruby にはできないようなことできるし許してあげてもいい気もする

#include <stdio.h>
int main() {
    int i;
    goto i;
    for (i = 0; i < 3; i++) {
        break;
    i:  printf("%d\n", i);
    }
}

ついで

http://d.hatena.ne.jp/shinichiro_h/20050628#c1119962566

(13:43)

_ 子→親

http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3a%e3%83%aa%e3%82%b9%e3%83%88%e5%87%a6%e7%90%86#H-ne4pu7

tree = '(Root (Spine (Neck (Head))
                     (RClavicle (RUpperArm (RLowerArm (RHand))))
                     (LClavicle (LUpperArm (LLowerArm (LHand)))))
              (RHip (RUpperLeg (RLowerLeg (RFoot))))
              (LHip (LUpperLeg (LLowerLeg (LFoot)))))'
tree.scan(/ \((\w+)/){puts"#$+ . #{a=$`.split*'';1while a.sub!(/\(\w+\)/,'');a[/\w+$/]}"}

書き捨てコードだったら本当にこんな感じに書きそうだと思う。

で、ゴルフしようとしてもあんまり縮まないんだよな… Perl みたいに再帰的な正規表現扱えると短くなりそうだ。

(14:04)


2008-06-06

_ moose

http://www.slideshare.net/hakobe/moose

via http://mono.kmc.gr.jp/~yhara/d/?date=20080601#p01

なんかスライド見た感じだと静的型チェック 本当にできるんだろうか…という感じだった。

そうそう Yajit 書いてて思うのは 型チェック欲しいねーという。

関数の引数だの返り値の型推論はまぁなくてもよくて、 引数に型が明示的に指定できると嬉しい。 無理矢理既存の Ruby を壊さずに オプショナルな型指定を入れるなら、

TYPE_fib = [Fixnum, [Fixnum]]
def fib(a)
  a > 2 ? f(a-1) + f(a-2)
end

とか定数につっこんどいたら 見てくれるとかそういうアドホックな感じでもいい気がするなあ。

fib で思い出したけど definemethod 実装してみたので ベンチしてみれるのだった。

> time ruby hoge.rb
1346269
ruby hoge.rb  2.13s user 0.28s system 99% cpu 2.423 total
> time ruby1.9 hoge.rb
1346269
ruby1.9 hoge.rb  0.24s user 0.01s system 96% cpu 0.262 total
> time ./rubyjit.rb hoge.rb
1346269
./rubyjit.rb hoge.rb  0.36s user 0.00s system 97% cpu 0.368 total

なんか思ったより遅くないな。 まぁ既知の関数なら Ruby に戻らずに直接 call するような 最適化とかできると良いね。

(01:18)


2008-06-05

_ vimperator

tekezoさんが使ってると確認できたので Fx3 使いたいし移行することに。

だいぶいい感じな気がする。 基本的な使用感はかなり良い。 ただ Ctrl 系でたまに使うようなバインドは ヘタレのためになるべく残しておいてくれても 良いのになぁとは思った。 ^u の暴発とかをよくやる。

(00:13)

_ うーん

LIRっぽいのがうまいこと作れなかったので、 毎度スタックを通すんじゃなくて レジスタで渡したりとかできるように ダサい最適化をしょぼしょぼ加えてたんだけど、

> ./rubyjit.rb bench_loop.rb
      user     system      total        real
times:   0.920000   0.000000   0.920000 (  0.920898)
upto:    0.970000   0.000000   0.970000 (  0.962793)
while:   0.120000   0.000000   0.120000 (  0.129037)
for:     5.130000   0.480000   5.610000 (  5.626509)

が while で 1.05 くらいにはなったものの、 ダサくてバグありそうだったので ロールバックした。

やっぱなんかLIRっぽいのを挟んだ方が うまくいきそうな気がするので、 頭ひねってどんな感じで作るか考えようかと思う。

まぁとりあえずその前に未実装の命令潰すか。

(01:08)

_ 記録だいじ

ふとしたことで半年くらい書いて 途中で放棄しちゃってるコードの存在を思いだした。

たしかだいたい動くところまでいったけど、 なにか一つ不具合があるのが気に入らなくて 書き直してる最中にめげたとかだったと思うんだけど、 これ何してるか読めない。

(02:01)

_ また体調くずしぎみ

最近ほんとひどいな。

あと公平を期するってよく考えると難しい熟語だなぁと思いつつ 期すると、インフラにしか興味がない話は まぁ正直誤解しか招かなそうな話しかたしてる方にも 責任どう考えてもあるので少しは反省する…

そのへんkzk神の分析がただしいと思う。

http://twitter.com/kzk_mover/statuses/826432692

(22:47)

_ TODO

  • 銀行になんかおくる
  • 大復活やる
  • ケータイとりかえす

こないだケータイ取り返しに行ったら 「お客さん充電器ありませんねー返せませんー」 って感じでアチャーだった…

(22:53)

_ 銀行の方も

なんか書類不備とかなんだよな。 何事も一度ではすまなくてめんどくさい。 しかし必ず二度迷惑かけてるってのは

(22:54)


2008-06-04

_ びょーん

http://www.atmarkit.co.jp/news/analysis/200806/02/google.html

まぁたぶん99%くらいで僕だと思う、が、 妄想で補完したんだと思う。悲しい。 いくつか文句があるので考えてみる。

 ある技術系イベントの席で、たまたま隣になったグーグルの技術者が、私にこう言っ
た。「オレ、アプリはやらないんですよ。画面とか、面倒くさいでしょ。グーグルドキ
ュメントとか別に消えていいって感じ。インフラにしか興味ないんですよ。OS? OSなん
て、どうでもいいし」。

 20代後半にして自社製品の悪態をつくとは、ずいぶん脇の甘い発言をする人だなと感
じたと同時に、何か暗いものを抱えた人なのだろうという印象を受けた。今の時代はイ
ンフラよりもサービスに華がある。フロンティアが広がっているのもサービスの分野だ
。インフラにしか興味がないという発言をする技術者に「暗さ」を感じたのは、記者が
勝手にそう思いこんでいたからだった。
  • 会社ではやってないとか会社ではやりたくない、っていうのは言うと思うけど、アプリ「やらない」って言うかって言うと言ってないと思う。今も昔もそれなりに書いたと思うし。
  • 画面めんどくさい。言うと思う。でもしつこいけどそれなりに書いたことあるよ!
  • Docs への暴言はしょっちゅう言ってそう。
  • インフラにしか興味ないは言うわけない。
  • OS どうでもいいインフラって、つまり水道とかそういう意味のインフラかね。
  • 脇が甘いってのは否定できない。
  • 暗いってのは否定できない。ひきこもりでごめんなさい。

まぁせっかくだから僕もわるくちを書く。 この人自分の仕事に誇り持ってるとか 人間社会の役に立たないといけないとか、 お前も俺の歳になればわかるとか的な、 こと言ってて、 (要はこれ http://shinh.skr.jp/m/?date=20080310#p04) 正直キモいなというかまぁ少なくとも僕とはわかりあえないとか 当時思ったんだけど、 メディア名乗るんなら録音でもメモでもして正確に書けばいいのに 呑み会の適当な記憶を適当に補完したとしか思えないってのはなぁ。

わるくちまだ書けそうだけどまぁめどい。

(00:45)

_ daemon の作り方

いつも忘れる。 たしか akr さんが 詳しく書いておられたなーと適当にぐぐってみたら Process.daemon というのを加えておられた。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/24030

これはすばらしー。

(00:52)

_ casec

やった。ねむい。ぜんかい

http://shinh.skr.jp/m/?date=20071128#p01

受験日 Sec1(full:250)  Sec2(full:250)  Sec3(full:250)  Sec4(full:250) Total(full:1000) TOEIC(R)(スコア目安) TOEFL(R) (※)(スコア目安)英検級(目安)
2007/11/28 20:12:17 160 176 185 174 695 705 502 2級
2008/06/04 01:55:29 203 174 211 137 725 810 513 2級

うさんくさいなぁ。 英語力とかマシになってる気しないんだけどな。 あと TOEIC の目安増えすぎだろうどう見ても。

(03:04)

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ 西村賢 [こんにちは、「この人」の西村です。はてブで突っ込まれていましたが、パブリックな場であの文章は確かにひどかったと反省し..]

_ shinh [あ、どうも。記事修正ありがとうございます。まぁどっちでもいいのですけど。個人的には暗いとかそのへんは、そう思われたの..]

_ shinh [あ、あと TOEIC は CASEC とかいう別の試験の換算点数しか知らない上に2回しか受けてないので、母数が少なす..]

_ 西村賢 [話した感じが暗いとは思いませんでした。どっちかいえば社交的ですよね。ただやたらとDocs死ねばいいのにと繰り返すので..]

_ 西村賢 [横槍ですが、英語デキテル実感が微かに出てきたのはぼくの場合TOEICで940を越えたあたりからでした。900ぐらいで..]


2008-06-02

_ おお

ありがとうございますー

http://homepage1.nifty.com/herumi/diary/0806.html#2

とりあえずそのへんのヘッダは別にいらないっぽかったので コメントアウトして固めて上げなおしておきました。

でも無いってのもへんな話なのかな Ruby わからん

(23:34)

_ tamarin

今さらながら斜めよみした。

http://www.dodgson.org/omo/t/?date=20080510#p02

おもしろいなぁ。 んでも何か所か疑問というかよくわからんとこがあった。

LIRを生成しつづけるとメモリがあふれる、 ってとこだけど、プアな環境では、ってことかな。 LIRとnative codeでそれほどサイズに差があるとは思えないし。

あと関数内にtraceしてったらそのままインライン展開されるおー とかホンマかーという。 もろもろ問題ありそうな気がするけど その気が正しいかどうかもよくわからん。

http://blog.mozilla.com/dmandelin/2008/05/23/tamarin-tracing-internals-iii-lir/

(23:40)

本日のツッコミ(全2件) [ツッコミを入れる]

_ omo [もろもろありそうですね。 とりあえず再入可能ではないらしいし・・・ http://blog.mozilla.co..]

_ shinh [おお見落としてましたありがとうございます > 再入不可 コメントの "TT isn't re-entrant ..]


2008-06-01

_ ふりー

http://twitter.com/yanbe/statuses/822305215

ただしい。

でも、じゆーを守ろうとすると一時的にふじゆーになるのは 普通にごく当たり前なことだとおもう。

(04:00)


2008-05-31

_ C=1

1.9.0-0, 1.9.0-1

== disasm: <ISeq:<compiled>@<compiled>>=================================
0000 putobject        1                                               (  16)
0002 dup
0003 putnil
0004 setconstant      :C
0006 leave

== disasm: <ISeq:<compiled>@<compiled>>=================================
0000 putobject        1                                               (  16)
0002 dup
0003 putcbase
0004 setconstant      :C
0006 leave

とりあえず putcbase ってなんなのという問題がですね。 そして vm_get_ev_const もよくわからんのだよ

(03:18)

_ cbase

http://i.loveruby.net/ja/hack/frame.html

とりあえず self.type でそれなりに動きそう。 ていうか問題は self がちゃんと実装されてないことすね。

(04:17)


2008-05-29

_ マジスパ

http://d.hatena.ne.jp/ytqwerty/20080525#p1

行くんなら呼んでくだされば飛んでいくのにという。 あと下北は迷うと思う。何年たっても迷う。 あとマジスパは体にいいどころか基本的に毒物だと思うあれは。 虚空100らへんあたり喰うと確実に腹下すし、 アクエリアス喰ってる最中に腹壊してる感じがした。 たぶん体がこれは毒だー出せー出せーと緊急指令を出してるんだと思い込んでいる

(00:54)

_ 体調

ずっと悪いが行けないほどでもないのがにんとも。 出社した方がラクに補食できるというのもにんとも

(08:36)

_ 体調

なんかよく考えると次々症状が変わってる気がする。

最初は熱っぽい、だるい、頭がいたい、って感じで、 まぁ普通に仕事とかいう感じじゃなかった。 その後に熱系はおさまりつつのどが痛くなって、 次にセキとハナが出るようになった。 セキとハナと平行して腹壊して、下痢っぽくなった。 で今はセキハナなくなったけど腹壊し&&胃がむかついたり吐き気とか。

(20:20)

_ STM

は流行らないと勝手に素人考えで考えてるので流行って欲しくない。 面白いかどうかとかよく知らないけど、 単に失敗しなくなるだけの技術ってもえないとかいう個人的なアレと、 スレッドとかどうでもいいよという個人的なアレから 基本的に来てるわけだけど。

一応僕の考えによると、 みんなスレッドプログラミング難しいとか言ってるけど、 あるルールを守れば全然難しくない。 そのルールっていうのは「スレッドを使わない」 っていう簡単なものなんだけど、 なかなかこんな簡単なルールを守れない子もいるらしいので、 例外が2つくらいたぶんある。

outputs = Array.new(N)
threads = []
N.times do |i|
  threads << Thread.start(i) do |t|
    # なんかして output[t] に入れる
  end
end
threads.each{|th|th.join}

みたいに明らかにそれぞれが独立で動くパターンか、 タスクキュー的なのを挟んで生産者消費者の形になるパターン。 http://shinh.skr.jp/m/?date=20080424#p01

前者はまぁロックとかいらんし、 後者もタスクキューだけロックすりゃ基本的に大丈夫なはずなので 全然難しくない。 まぁログ吐くとか、共通部分もちょっとはあるだろうけど、 まぁそこだけ気をつければOKなわけで、 まぁそんなにむずかしくはならんと思う。

その二つのパターンの時も、 パフォーマンス的をすごく考えなきゃいけない事情とかがないなら、 プロセスわけちゃってもいい。 前者のパターンは別のマシンで動かしたりとかしやすいパターンだし、 後者は Unix pipe という強力で簡単な物体が助けてくれるはず。

でまぁ僕のルールを守らずに 並列性がそんなに高くないシーンでスレッドを使うと、 まぁ大変なことになるんだけど、 そういうシーンってのは、 スレッドを無理に使ってるってわけで、 速度が欲しいシーンだと思うんだけど、 そんなシーンだと STM は遅くなるんじゃないのかな。

あと関係そんなないけど、デッドロックが起きるから スレッドむずかしいとか聞くことがあるけど、 あれもおかしいと思う。 デッドロック起きたら gdb でアタッチして バックトレース見たら終わるやろという。 レースコンディションが困るというのはその通りだと思う。 今度これ読もう: http://valgrind.org/docs/manual/hg-manual.html#hg-manual.data-races.summary

でまぁ話戻して結局スレッドプログラムが本当に必要で、 かつスレッドプログラムが難しいプログラムのドメインって あんまり知らないんだよなーということがあって、 たぶん並列 GC だとか、プログラム言語作るとか、 すごい基本的なライブラリ作るとか、 要は言語処理系まわり以外にそういうドメイン思いつかんという。 でもそいうの作るのって一握りの人たちなので、 そんなこんなでスレッドってそんなに難しいのかなーと思っている。

たぶんポインタくらいの難易度なんじゃないかな。 意味不明な比較だが。

あーでも HPC の世界とか全く知らんので知らん。

(22:44)

_ もちろん

単に複雑なプログラムを楽しみたいというなら同意するので 存分にスレッド地獄を味わったらいいと思う。 しかしそんな人は STM とかいらないよね?

(22:46)

_ mprotect

やめたらだいぶ速くなった。

Ruby 1.9

> ruby1.9 bench_loop.rb
      user     system      total        real
for:     3.400000   0.010000   3.410000 (  3.431349)
times:   0.980000   0.000000   0.980000 (  0.976049)
upto:    0.920000   0.000000   0.920000 (  0.913937)
while:   0.480000   0.000000   0.480000 (  0.488412)

yajit

for:   SEGV
times: ./rubyjit.rb hoge.rb  0.52s user 0.01s system 98% cpu 0.532 total
upto:  ./rubyjit.rb hoge.rb  0.52s user 0.00s system 97% cpu 0.531 total
while: ./rubyjit.rb hoge.rb  0.19s user 0.00s system 96% cpu 0.199 total

これが機械語の力だー(SEGV含む)

http://shinh.skr.jp/m/?date=20080525#p07

適当にひっこぬいてきた Euler 55 をいじったコード

> time ruby1.9 euler55.rb
249
ruby1.9 euler55.rb  1.75s user 0.00s system 98% cpu 1.785 total
> time ./rubyjit.rb euler55.rb
249
./rubyjit.rb euler55.rb  1.66s user 0.01s system 99% cpu 1.677 total

こっちも勝ったか。

とりあえず速いとこ benchmark モジュール動くようにしよう。 あとなんか OSX とかでも試そうと思ったら OSX mremap 無いのねー

(23:36)

本日のツッコミ(全1件) [ツッコミを入れる]

_ YT [いやその昼に行こうと決心して晩飯になってしまうような体調だったわけでしてそのゴメンナサイ。]


2025年
1月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
1.Qxsvoswy(2010-03-29 15:54) 2.やぎ(2008-07-22 19:39) 3.kosaki(2008-06-30 17:04)
search / home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h