トップ 最新 追記

uDiary

海野秀之(うんのひでゆき)の外部記憶

Twitter (twilog) / RSS / アンテナ / ぶくま

2006|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|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|

2007-01-02 (Tue)

あけましておめでとうございます。

突然ですが、 中野友加里さん蒼井優さん って似てると思いませんか?

あ、テレビ見ていて思ったんですけど。


2007-01-03 (Wed)

チェック!椎名林檎

椎名林檎×斎藤ネコ「平成風俗」

2月21日はつばい

Playnote News Clip 経由でございます)

1月17日にはシングルも 買わなあかんみたい。


2007-01-04 (Thu)

今週号の PLUTO

さっき今週号の PLUTO を立ち読みした。 最後のシーンは、原作の『鉄腕アトム』だとあの場面ですね。 *1

原作はコミカルに描かれていたし、当時年齢的には飛雄に近かった僕は、 どうして博士がアトムを追い出しちゃったのか全然わからなかった。 でも、子供を持つ親になった今読む浦沢直樹版のあのシーンは、 どうしようもない程悲しい。 あれで正気を保てというほうがどうかしている。

*1 「ほら、お父さん、ぼく大きくなったよ(びょーん)」「で、でていけー!!」ってやつ。

わたしもモナー神社にいってきました!

山形浩生さんのをみて、 思い出したように、おみくじをひいた。 ところで、山形さんの「最近の噂」って、permalink 風の "id" ってのが ついているんだが、間違ってるなぁ、これ(本日 14:00 時点)。手書きなのか。

 【吉】 (No.49305) モナー神社
 願事:思い通りとなる しかし気をゆるしては破れる
 待人:訪れなし来る
 失物:出るとも遅い
 旅立:止める方がよい
 商売:買い入る方に吉
 学問:危うし全力を尽くせ
 争事:人に頼るは宜しからず
 転居:十分ならず 見合わせよ
 病気:少々悪し 信心せよ
 縁談:多くて戸惑う恐れあり  静かに心を定めよ

[Web] 2007 年最初のいっこ

目を凝らして種を選りすぐったとしても(池袋アンダアグラウンド。)

なんとなく耳が痛いこれを本年最初のクリップといたしたく。。。


2007-01-06 (Sat)

tDiary アップデートその他

ずっと気になっていた、tDiary 2.0.4 への更新をしました。 ついでに、こちょこちょとそれ以外もさわる。

背景の色をかえた(慣れ親しんでいた「わら半紙色」に戻した) 以外には、 トップページに、プロフィールと称して出身大学やら、 勤務先やらを書いていたのをやめた。 自分が何者なのかを、きちんと明らかにしておきたいと思って 書いていたのだが、やっぱりどうにも気持ちが悪くて。

同姓同名の人と区別するのに足りる情報だけ 書いておけばいいかな。


2007-01-09 (Tue)

[Web] A Happy New Yearは間違い

こないだ歩きながら、なんで "A Happy New Year!" なのかと考えていた。 "We wish you a merry christmas and a happy new year" という歌詞があるくらいだから ("wish you a ..." の "you" が聞こえにくいよね *1)、 "a happy new year" といういい方自体は存在するみたいだが、 なぜ不定冠詞かというと、私の過ごす new year とあなたの過ごすであろう new year は別物だという感覚なんだろうか *2、 「今年」になってしまえば明けましておめでたいのは the happy new year なのかな、とか思って、思ったまま。

だがしかし、挨拶フレーズとして単独で "A happy new year!" というのはオカシイんだそうな。

そうだったのか!

(Playnote News Clip! 経由)

*1 日本語耳に「うぃっしゅ」と聞こえる時点で、実は猛烈に聞こえているような気もする。

*2 いっしょにクリスマスを過ごしたいなと思っている相手から、"I wish you a merry chrismas" とかいわれたらさみしくないっすか?


2007-01-10 (Wed)

なぞのひとりごと

おお、「>ファン登録」ってなんだろう??

おっと、おうち帰ろう。昨日はまったく家族の顔をみなかったのだ。 (まだ寝ているうちに家をでて、夜おそく帰ったので)

じゃ。


2007-01-11 (Thu)

あてずっぽうで即答してしまう(そうと意識せずに)

最初の方はよゆーでへろへろ読んでいたのですが、 途中でぎくっとさせられた。

これがウチの子に限った話かというと、そうでもない。 他の子も? いいえ、大きくなってもだいたいコレですよ。 大人でも、知っていること(掛け算九九)から、適切な推論手順(筆算)を組み立てて結論 (掛け算の答え)を導き出すことは苦手です。 知ってることは即答するけど、知らないこと/わからないことは、 憶測や印象や反射でテキトーに答える。

憶測や印象や反射でテキトーに答えるというのを、 そうとは自覚せずにやってしまっていることが多いように思う。

仕事に関する話であれば、言ってしまったあとに「あ、さっきのはやっぱり違いました」とか 言って訂正できることもあるのだが、そもそも、テキトーに反応しすぎだ。

「『いや、これは即答できない問題だぜ』トラップ」をインプリしなければ。

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

# かめい [明けましておめでとうございます。今年もゆるゆると宜しくお願いします。記事とは関係ないのですが年明けなので、明るくルー..]

# うんの [こちらこそ、よろしくお願いします。 おお、聞いたことはあったのですが>ルー語変換 元の文体によっては、あまりパッとし..]


2007-01-17 (Wed)

備忘

CD 買いにいかなあかん → こおた。聞くのがたのしみ。

[Ruby] 初めて C で Ruby の拡張ライブラリを書く

『オブジェクト指向スクリプト言語 Ruby』をみながら、 拡張ライブラリを書いてみた。

Ruby は拡張ライブラリを書きやすい(そのために実行速度が犠牲になっている面すらある) と聞いた(読んだ)ことはあったのだが、実際に書いたことはなかった。 書いてみたら、いや、本当に書きやすい。

/*

  extlibsample.c

  To create ExtLibSample.so:
    ruby -r mkmf -e 'create_makefile("ExtLibSample")' and make

*/

#include "ruby.h"
#include <math.h>

/* First example:

   def euclid_norm_2d(x, y) # x, y: Float.
     sqrt(x*x + y*y)
   end

 */
static VALUE
euclid_norm_2d(self, vx, vy)
     VALUE self, vx, vy;
{
  double x, y;

  Check_Type(vx, T_FLOAT);
  Check_Type(vy, T_FLOAT);

  x = RFLOAT(vx)->value;
  y = RFLOAT(vy)->value;

  return rb_float_new(sqrt(x * x + y * y));
}

/* Second example:

   def euclid_norm(a) # a: Array.
     sum = 0
     a.each {|v| v = v.float; sum += v*v}
     sqrt(sum)
   end

 */
static VALUE
euclid_norm(self, a)
     VALUE self, a;
{
  int i, size;
  double v, sum = 0.0;
  VALUE t;

  Check_Type(a, T_ARRAY);

  size = FIX2INT(rb_funcall(a, rb_intern("size"), 0));

  for(i = 0; i < size; i++){
    t = rb_funcall(a, rb_intern("[]"), 1, INT2FIX(i));
    t = rb_funcall(t, rb_intern("to_f"), 0);
    v = RFLOAT(t)->value;
    sum += v * v;
  }

  return rb_float_new(sqrt(sum));
}

Init_ExtLibSample()
{
  VALUE mExtLibSample = rb_define_module("ExtLibSample");
  rb_define_module_function(mExtLibSample, "euclid_norm_2d", euclid_norm_2d, 2);
  rb_define_module_function(mExtLibSample, "euclid_norm", euclid_norm, 1);
}

呪文をいっぱい唱える必要がなくて、ありがたい。

書いてみたのは、まったく実用的でない、練習のための例ですが、 以下のことがらを含んでいます。

Ruby オブジェクトの型チェックCheck_Type(obj, T_FLOAT)
Ruby Float → C doubleRFLOAT(obj)->value
C double → Ruby Floatrb_float_new((double) x)
Ruby Fixnum → C intFIX2INT(obj)
C int → Ruby FixnumINT2FIX(1)
Ruby オブジェクトのメソッド呼び出しrb_funcall(obj, rb_intern("[]"), 1, INT2FIX(i))
モジュール関数の追加(略)

動かしてみるには、次のようにします:

 % ruby -r mkmf -e 'create_makefile("ExtLibSample")'
 % gmake
 % irb
 irb(main):001:0> require 'ExtLibSample'
 => true
 irb(main):002:0> include ExtLibSample
 => Object
 irb(main):003:0> euclid_norm_2d(2.0, 3.0)
 => 3.60555127546399
 irb(main):004:0> euclid_norm([1.0, 2.0, 3.0])
 => 3.74165738677394

『オブジェクト指向スクリプト言語 Ruby』の8章に書かれている内容を まったく知らないとつらいかな。

ところで、 ワード境界にアラインされた C オブジェクトのポインタ値が偶数になるというのは 言語仕様の一部ではないような気がするのだが(未確認)、 それが奇数になるようなアーキテクチャを思いつかない。 ワード長が9バイトとか?


2007-01-19 (Fri)

[Ruby][Web] ウェブアプリケーションの設定はどうする委員会 @ Rubyist Magazine - あなたの Ruby コードを添削します【第 4 回】

なにを隠そう、つい最近、いけないと思いつつグローバル変数でかいちゃいました。 これ読んで反省します。


2007-01-24 (Wed)

[Web] ごめんなさいね、男がこんなで。 - 空中キャンプ

わろた。わかる。 (ja.reddit経由)

とってもエネルギーの低い安定状態に陥ってしまったら、 結婚なんかできないんじゃないかと思う。

ひとごとだけど。

傍観中:test and test and set

http://www.namikilab.tuat.ac.jp/~sasada/diary/200501.html#d28

ちょっと気にかかるやりとりがあるのだが、 不明点いろいろなので、とりあえずここにメモ。 あとで調べて書くかも。

ぼくには、コメント欄にある、tas (test-and-set) は「バスを占有」するが、 cas (compare-and-swap) はしないという話が飲み込めない。

事実だったとしたら、それはキャッシュの更新方式 (write-through か write-back かというやつ) に依存しているのであって、tas か cas かという話ではないと思う。

いずれにしても、cas(たぶん tas も)を実行するには、そのキャッシュブロックを占有する 必要があるので、ロックが欲しい人全員がいきなり cas でポーリングしてたら輻輳しまくるのである。 *1

なので、最初は atomic じゃない普通の load 命令でロック変数をポーリングしておいて (これなら、ロック変数が更新されるまでは、各キャッシュ上のコピーが参照されるので、 輻輳は抑えられる)、 いけそうだという段階になって、初めて cas に切り替える。

(はっきりとそう書いてありますね。ちゃんと読んでないのばればれ)

という話なら有名なので知っている。 *2

test and test and set という語は初めてみたのですが、上のような話なんじゃないかと思った ……けど、未調査なので、断定できない。

ちなみに,こんなことを考えている人は何人くらい居るんだろう.ruby といい,やっぱりマイナーなことしかしてないな,俺は.

  • こんなことを考えていない人はいないと思ってました(←誇張
  • Ruby ってマイナーなんですか?
  • っていうか、ちょーがんばって!

*1 tas もいっしょだと思うけど、知らないのでまだ書けない。cache の方式が write-through だったら「バスを占有」ってことになるのかな。バスって何?という気はする。実際にはハード(システムコントローラ)がアドレスロックするんでしょう。あ、しまった。Intel はつい最近まで(いまも?)共有バスなんだった。

*2 初歩的な話のように聞こえるけど、いきなり cas でポーリングするようなコードが実在したという噂もあったり。


2007-01-26 (Fri)

[Web] 道徳やしつけの根拠を自然科学に求めるべきではない (kikulog)

100近い数のコメントがついているのですが、 これだけ長いスレッドが荒れずに、むしろ途中から面白くなっていくなんて。 結構すごいことなのではないでしょうか。

同様の話題できくちさん達 vs 弾さんのやりとりはとっても不毛に終わってしまったのですが (こことかを参照)、 それにくらべれば kikulog に参戦したキタヤマさんという方 ((57), (63)など) はスバラシかったと思う。

ちなみに、「柘植(つげ)」という漢字が読めなかったのは僕もです。 学生のときに買った将棋の駒は柘植でできているのを知ってて買ったというのに……。

あ、小林泰三さんがいる。

18 小林泰三 November 24, 2006 @ 08:13pm

科学法則に裏付けられた「絶対的に正しい価値観」があると安心する人たちが多いのでしょうね。 僕は「絶対的に正しい価値観」がないからこそ、躾をきっちりとしなければならないと思っています。 なぜなら、躾をしなければ自分の子供たちが「社会生活に適応しない価値観」を獲得してしまう可能性があるからです。

同じ自然法則の下でも、「一族」 *1 と人類の価値観はかなり違いますしね。

子育て初心者なので、子供の躾については迷うことが多いのですが、 ちょっと気持ちが整理できたような気がします。

*1 「ΑΩ」ちょーおもしろかったです。しかも、由緒正しく、デビュー作「玩具修理者」から入る(私はそうした)のが大吉。「ΑΩ」はちょっと分厚いこともありますしぃ、デビュー作→短篇集をいくつか→「ΑΩ」という経路をたどるのがおすすめ。まずは、だまされたとおもって「たぶん駄文」 ( http://web.kyoto-inet.or.jp/people/kbys_ysm/dabun.html ) あたりから、いかがっすか?(←誰相手に営業しているのやら

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

# うかい [弾氏は論「戦」する気がない(あるネタを元に持論を展開するのがあのブログであってそれ以外のなにものでもない)、ところに..]

# うんの [以下、弾氏のこととは関係ありません。 #面識もないし、個人的に彼に思うところはまったくない。 議論が必要なほどに意..]


2007-01-29 (Mon)

[Web][Scheme] 遅延プログラミングと遅延評価 ---- 遅延関数処理による予想外の利点を学ぶ (IBM)

ja.reddit で見つけただけ。まだ読んでいない。予想外の利点って何だろう? コード例が Scheme で書かれているので、「あとで読む」化、これぞ遅延… (以下略。


2007-01-30 (Tue)

[Web] Gauche のへや at Lingr

たまたま辿りついた Gauche のへや at Lingr の書庫より。

濃ゆ!

GC に特化した命令を追加する機会があったとして、それって、どんなのが嬉しいのかなぁ。 ほとんどが memory operation のコストのような気がするので、 専用命令で儲かるシナリオが想像できない(←想像力がないだけ)んですけど。

自分で GC を書いてみないと、わかりっこないのかも。

追記

ほとんどが memory operation のコストのような気がする

これは、きっと外してますね。

GC と「それ以外」の計算プロセス(SICP 用語(笑))は並列プロセスなので、両者の同期というか排他処理というかがネック。

その重たい排他処理をなんとかできまへんか、という線ならいろいろ考えられそうだ。

ソフト的に排他処理しちゃうと、コストのほとんどが memory operation のそれになるので、現状認識として間違っているわけではありませんが。

仮想メモリはあれほど手厚くハードアシストしているのに、GC はまったくソフトまかせじゃん…って、だれかそのまんまのこと言ってたな。

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

Before...

# うんの [もっとだらだら書く。 ページ管理からの類推で、GC さんの分割統治をアシストできたらいいかも知れない。 GC さ..]

# うんの [おおはずししてるか、そうでなければ、だれかがすでにかんがえてるか、だな。 #そんくらいで、くじけんな>おれ]

# うんの [>昔(30年くらい前?)の LISP マシンが売れなかったという遺恨を持つハードベンダー (頭のとんがった?)上司..]


2007-01-31 (Wed)

[Ruby] Ruby を SEGV させまくり

Ruby を SEGV させまくるようになったら、そろそろ脱初心者でしょうか。 あ、どうでもいいですね。

GC.disable にすると逃げられたりするので、GC safe じゃないんだなぁとか思って いろいろ見直したり (「RubyExtensionProgrammingGuide」(青木峰郎さん)とか参照)。

しかぁし!僕の場合は、もっとヘボいバグでした。 (volatile 問題もいっこだけあった。)

  • INT2FIX し忘れて C の int をそのまま Ruby の Array に push していた箇所があった
  • auto 変数(←死語?)を初期化せずに使ってしまっていた箇所があった。

前者は、gc_mark_children がたまたま int 値がポインタにみえたのを参照しにいって SEGV。

後者は、後者は……。 初心者臭すぎて恥ずかしいのを承知で書いておくと、問題の自作拡張ライブラリ関数を呼ぶまえに puts (こちらは Rubyの) をいれると OK, とると SEGV というように見えていました。 わかってから現象をふりかえると、たしかにどうみても未初期化ポインタです *1。 ありがとうございました。

普段 gdb つかえない子なんですが、ちょっとだけ使っちゃいました。

 % ruby hogehoge.rb
 ; ... SEGV から core を吐く...
 % gdb -c core /usr/local/bin/ruby
 (gdb) bt

ってな感じで、シグナル受ける直前どこにいたのかがわかります。 (「RubyがSEGVしたら」(おなじく、青木峰郎さん)参照)

あとは、printf デバッグ。え? gdb つかえないんだって。

Binary Hacks よんでべんきょーしなくちゃ*2。 (そのまえに gdb のマニュアル読まないとね)

*1 ちなみに null pointer チェックはしていた。だから、たまたまスタックフレームが 0 クリアされていたら正常動作して、ゴミが乗っていたらだめだった。

*2 まだ買おてません。会社もよりの書店に並んだら買おうと。Amazon ったら負けだと思っている(うそ

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

# うんの [「volatile 問題」といえば、日本人同士で話すときに "volatile" をなんと発音するべきかという問題も..]


2006|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|08|
2010|01|02|03|05|06|07|10|11|
2011|03|08|
2012|02|04|07|08|10|
2013|01|02|03|05|06|08|11|12|
2014|01|02|05|06|07|08|09|12|
2015|01|02|03|04|
Categories 3imp | Card | Cutter | Dalvik | Euler | Football | GAE/J | Hand | Haskell | Re:View | Ruby | Scheme | TQD | Tiger | TigerBook読 | UikiTeXi | Verilog | Violin | Web | parconc | tDiary | お勉強 | エントロピー | ツン読 | | 将棋 | 政治について | | 模写してみよう | 確率論 | 設定など | 雑文 | 音声