海野秀之(うんのひでゆき)の外部記憶
Twitter (twilog) / RSS / アンテナ / ぶくま
アジャイルって、google earth map みたいなやつ(ってどんな?)
だと思ってました。
(Ajax とごっちゃになってる疑惑。)
http://d.hatena.ne.jp/kikaineko/20060903#p1
プロセスやツールよりも、個人と相互作用
包括的なドキュメントよりも、動作するソフトウェア
契約交渉よりも、ユーザとの協調
計画に従うよりも、変化に対応
これでは孫引きになってしまうな。あとで原文さがそ。
このへんですかね。
Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
(Matz にっき 経由でした)
コーディングに決まりがないのが Ruby 流だという噂ですが、 変なこと書いてしまっていないか気になるのも確か。 動機がそんなんでいいのかとは思うが。
ちなみに、前田修吾さん自身、 「あれは結局、細かいところは守らなかったです(笑)」と 言っていた くらいなので、あんまり縛られすぎないように。
http://homepage3.nifty.com/mogami/diary/d0610.html#10t2
アメリカよりも高帯域回線が普及している日本の現状からすると 日本からYouTubeのような物が現れても良かったはずだ。 なのに日本からあらわれなかったのは、「どうせNapsterと同じだろう」 と考えて現状の秩序から逃走しなかったからでは無かろうか?
自ら檻に入る可哀想なお利口さんたちよ。 そして私も自分の中に同様の傾向がある事を知っている。
これ のつづき的。
「おまえは脱獄を推奨しとんのか!」という仮想お年寄りが思い浮かんだ(笑い)(棒読み)。
檻の外は自由だが、心細い世界でもあるんですよね、きっと。
サンプリングは、かならずしも乱数に基づかなくてもいいという、 ちょっと目から鱗なあれ。
「無作為抽出」とはいえないのかな、こういうの。
彼は、すがすがしいまでに、タイポグラフ・フェチっぷりを隠しませんね (たとえば、 これ を見て!)。 「自分の書いた文書が、綺麗にタイプセットされて印刷されたのを なんども眺めるのが大好き」と書いていたのを読んで、うれしかった。 おれも、おれも。
あ、おれが言うと、単なる恥ずかしいひとだな。
話題のゲド戦記。 原作者のコメント和訳 がありました。 松浦晋也のL/D経由。
個人的にそそったのはここ↓だったりして:
後に聞いたところでは、駿氏は結局引退はせず、 今は別の映画を撮っているとか。 このこともわたしの失望を大きくしました。 早く忘れてしまいたい出来事です。
あのおっちゃんは、ずーーっと前から、やめるやめる言うてます。 いや、続けてくださればよいのですが、なぜ「やめる」言うのか。 もう日本では口癖みたいなもんだと認識されているのに、 原作者の方はこれをご存知なかったとみえる。
次のものは、原作者のコメントの一部ではなく、 原作者にメールした人の意見なんですが、
それでもなお、彼らはみな被害者なのです。大きすぎる責任が、 それを負うだけの力を備えていない誰かに負わされた時から始まった、 その連鎖反応の。
なんというか、怖いですね。 戸田奈津子先生記念館 を思い出しました。
ああ、なつかしい。
http://sociologbook.net/log/200610.html#eid40
タマゴのことを、「タメイゴーゥ」といえれば、 下位文化の呪縛を振りほどくことさえも可能なんだとおもいます。 あそこでは。
http://web.kyoto-inet.or.jp/people/gangster/schedule/06schedule.html
18:30 kick off. 見にはいけないけど、念じておこう。
念じやすいように(?)、西京極陸上競技上の 千里眼イメージ的を Google Map から。
→37 対 0 で負けてしまったようです。残念。
http://codegolf.com/99-bottles-of-beer (Matzにっき経由)
普段、こういう書きかたは全くしないのだけど、 気が向いたので昨日書いてみた。今朝みたら 8-byte 短くなった。 夜うんうん唸りながらデバッグするより寝ろとは言ったものです。 これは遊びですが。
b,c,d,e,s=' bottle',' of beer',' on the wall',".\n",'s' g=c+d 99.downto(1){|i|a=i>1?b+s:b;f=i>2?b+s:b;puts"#{i}#{a+g}, #{i}#{a+c+e+(i>1?"Take one down and pass it around, #{i-1}#{f+g+e}\n":"Go to the store and buy some more, 99#{b+s+g}.")}"}
これで 241 バイト (改行文字は 1 バイト (Unix的)とする)。 Ruby での最短記録 (183 バイト)までは随分遠いよ。
200 バイト切れそうな気が全くしないけど、また寝て起きて見たら何か思うかもしれないので、ここに貼っておこう。
さらに -2 byte(笑):
b,c,d,e,s=' bottle',' of beer',' on the wall',".\n",'s' g=c+d 99.downto(1){|i|a=i>1?b+s:b;f=i>2?a:b;puts"#{i}#{a+g}, #{i}#{a+c+e+(i>1?"Take one down and pass it around, #{i-1}#{f+g+e}\n":"Go to the store and buy some more, 99#{b+s+g}.")}"}
ふう、今日はこれでやめとこ(できれば):
b,c,d=' bottle',' of beer',' on the wall' 99.downto(1){|i|a=i>1?b+'s':b;f=i>2?a:b;puts"#{i}#{a+g=c+d}, #{i}#{a+c}.\n#{i>1?"Take one down and pass it around, #{i-1}#{f+g}.\n\n":"Go to the store and buy some more, 99#{b+'s'+g}."}"}
229 バイト。'a+g=c+d' の実行結果なんて、試してみないとわからんよ(笑)。
ほんとに今日はこれでおわり(223 バイト):
b,c=' bottle',' of beer' 99.downto(1){|i|puts"#{i}#{(a=i>1?b+'s':b)+g=c+' on the wall'}, #{i}#{a+c}.\n#{i>1?"Take one down and pass it around, #{i-1}#{i>2?a+g:b+g}.\n\n":"Go to the store and buy some more, 99#{b+'s'+g}."}"}
いまは 30 分にいちど更新するようにしてあるのだが、 なんかとっても過剰な気がしている。
半日に一回とかに頻度を落とそう。 家に帰ってからしかできないので、いつも忘れるんですが。
ぱっとしないんで、恥ずかしいんですが、puts 使うより print にリスト喰わせた方が短いのではないかと。
b,c=' bottle',' of beer' 99.downto(1){|i|print i,a=i>1?b+'s':b,g=c+' on the wall',', ',i,a+c,".\n",i>1?['Take one down and pass it around, ',i-1,i>2?a:b,g,".\n\n"]:"Go to the store and buy some more, 99#{b+'s'+g}.\n"}
217 バイト。
あと、激しく既出っぽい 感じもしますが、カンニングで 103 バイトというやつ。 ただし、これは反則としてはじかれるみたいだ。
require"open-uri";puts open("http://codegolf.com/competition/output/99-bottles-of-beer").read[5,11750]
プログラムの構造を変えないと、もう大幅には縮まないと思っているのですが、それでもちっとは削れたりする。
b,c=' bottle',' of beer' 99.downto(1){|i|print i,a=i>1?b+'s':b,g=c+' on the wall',', ',i,a+c,n=".\n",i>1?['Take one down and pass it around, ',i-1,i>2?a:b,g,n]:"Go to the store and buy some more, 99#{b}s#{g}.",$/}
213 バイト。局所最適の罠につかまっているのは知っている。
しかし局所最適から抜け出す気力がない。 200 バイト切っているコードがどうなっているのか見たい。 (Perl でなら職場の先輩が、あっというまに 200 切ってしまった)
はじめに書いたコードから、何のひらめきもなく、 ただ、だらだらと等価書き換えを重ねてきただけですが、 それでも良い経験になった気がする。
最後の方の段落にウケた。
... バイク小屋の方が語呂がいい気がしますが、 自転車置場の方が意味としていいような気がします。 自転車置場なのか自転車置き場なのかという議論もあります。
それから、英語で表記するときはbikeshed なのか bike shed なのか、 あるいは bike-shed なのか、変数名でいえば bikeshed なのか bike_shed なのか、あるいはbikeShed なのか、 はたまた BikeShed なのか…。自転車置場の議論は果てしがありません。
そういえば e-mail じゃなくて email と書けと 言ってた ひともあったな。
うえの bikeshed 話でリンクされていた FreeBSD FAQ より、 12.16. ひとつの電球を取り替えるのに、何人の FreeBSD ハッカーが必要? →1,172人
すこし前にみた、 How many Tolkien fans does it take to screw in a light bulb? (指輪映画感想:2002/03/14経由)といい、なんだかうらやましい。
僕も、大人数で電球を取り替える集団に属してみたい。 (マイクロソフトの場合は0人らしい…)
http://k12linux.mesd.k12.or.us/docs/gnome/ch01s02.html#gosbasic-62
家 (Solaris 10 on Note-PC), 職場 (Linux) ともに GNOME デスクトップ環境を使うことになりそうなので、 ショートカット・キーを覚えていきたいな、などと。
とりあえず、次の3つから
お家の Solaris 10 は Gnome デスクトップじゃなくて、 Sun Java Desktop だった。CTRL + ALT + {←, →} はいっしょだったけど、それ以外のキーは結構違う。
たまにログイン直後に Notilus の起動に失敗したとかで、 メニューもなんにも出せなくなることがあるのだが、 そんなときにキー入力でなんかできたらいいなと思っているのだが。 そんなとき CTRL + ESC でメニュー (Gnome の場合は ALT + F1 かな) が出ればいいなと。
Java Desktop, Gnome Desktop ともに、 メインメニュー→個人設定→(キーボード→)キーボードショートカット で設定できるので、 家, 職場ともに以下のように設定してみた。
CTRL + ALT + {←, →} | 仮想デスクトップ切り替え | デフォルト |
CTRL + ALT + Delete | ログアウトダイアログ | Gnome はこれがデフォルトだった |
CTRL + ALT + l | スクリーン・ロック | 昨日きめた |
スクリーンロックをすばやく出来るようにしたかったのは、 なにもセキュリティのためとかではありません。 集中力が切れるときには速やかに作業領域から立ち去れるようにするため。
ただ、職場の xscreensaver って、lock のとき直ちに暗転せずに、 ゆっくり、すーっと暗くなるんだよな。もっと、ビシッと切り替わってほしい。 なんか設定があんのか?
→あった。スクリーンセーバの設定ダイアログから Advanced タグ内の "Fade to Black when Blacking" を off だ。
どっかで読んだ、しかも、自分が持っている本だ。 でも、どの本のどこに書いてあったか覚えていないということは良くある。 探しても、探しても、見付からない。だから、見つけたら、ここ(外部記憶)に書き出しておこう。
最近、コンピュータ・プログラミングの「芸術」的側面とかなんとかいう言葉使いをちらほら目にすることがある。 これはきっと "The Art of Computer Programming" の影響なのだろうが、 あれの "art" を紋切型に「芸術」と訳すのはどうかと思うのだ。 そういえば、あの "art" に関する長い蘊蓄をどこかで読んだ記憶があるのだが、 どこだったか見つけられない。なにかの本の序文だったか、はたまた、脚注だったか……う〜ん。
思い出した! 「文芸的プログラミング」 の第一章 芸術としてのプログラミング / Computer programming as an art (1974) だ。 ここでは、プログラミングとアートの関係、というより、 アートという言葉にまつわるあれこれが延々と語りまくられる。 "art" の語源だとか、題名として用いられた例とか、サイエンスとアートの関係とか。
やっぱり、日本語の「芸術」という単語の意味範囲とは、あんまり重ならないような気がするなあ。
あと、この文章では "art" という単語の実にさまざまな使われかたが紹介されていて、 最後には "state of the art" まで登場するのに、 "Computer programing as an art" を「芸術としての…」と訳してしまって大丈夫なんだろうか。
まあ、かといって、カタカナ語の「アート」でお茶を濁すのも負けた感が漂ってしまうのですが。
わたし、ヒアリングは得意じゃないのですが、 "No man can kill me!", "(兜を脱ぎ捨てつつ)I'm no man." が聞き取れてよかったです。 鳥肌ものでした。いやぁ、訳すひとは気の毒。
http://mscience.jp/nolohas.htm
はずかしながら、ロハがただ(無料)っていう意味だってことは、 つい最近知りました。 てっちゃん用語 かとばっかり。
グリーン客室と普通客室 - 「ロハ」
という話とはまったく関係がないのですが、 ロハスに関して必要な知識がよくまとまっているように思うので、 おもわずクリップ。
バッドノウハウとか言われてもヘコまないぞシリーズ。
以下のように書かれているんだが、このようにやってもうまくいかなかった。
Add the following to the end of your .emacs (removing the leading `;;'). ;;(require 'color-theme) ;;(color-theme-gnome2)
color-theme-なんとかが見付かりませんといわれるので、 load-library してやるとうまくいった。
; カラーテーマ (require `color-theme) (load-library "themes/color-theme-library") (color-theme-taylor)
結局つかわないことにしたが、color-theme-select での変更を保存・復元するコード (Meadow/Emacs メモ:終了時にテーマを保存より)
;; ; M-x color-theme-select で選んだテーマを保存・復元 ;; (setq theme-load-from-file t) ;; (setq theme-default 'color-theme-gnome2) ;; (defun my-onload() ;; (setq filename (concat (expand-file-name "~") "/.curTheme")) ;; (if (file-exists-p filename) ;; (progn ;; (message "selecting theme from .curTheme") ;; (load-file filename) ;; (color-theme-install (my-color-theme)) ;; (my-color-theme) ;; ) ;; (funcall theme-default) ;; (message "selecting theme from color-theme-standard") ;; (color-theme-install (color-theme-standard)) ;; (color-theme-standard))) ;; (defun my-kill-saves() ;; (if theme-load-from-file ;; (progn ;; (color-theme-print) ;; (end-of-buffer) ;; (insert "\n") ; 行末に改行がないと、write-file が苦情をいうのよ。 ;; (write-file (concat (expand-file-name "~") "/.curTheme"))))) ;; (my-onload) ;; (add-hook 'kill-emacs-hook 'my-kill-saves)
マークの設定を行うような関数を LISP プログラム中で 用いるのは望ましくないらしい。
具体的には、beginning-of-buffer, end-of-buffer, replace-string, replace-regexp がダメだとされている。 (Emacs Lispのコーディングの慣習)
beginning-of-buffer, end-of-buffer 相当(マークの変更はしない)は それぞれ以下で実現可能。
(goto-char (point-min)) (goto-char (point-max))
http://www.nurs.or.jp/~lionfan/mainichi_2003_290.html
原典が知りたいと思い、ググってみると、 上記リンク先の作者自身も同様に原典を探されていたようで、 はてなで質問されている のが見付かった。原典はまだ判明していないようだ。
馬鹿か! と思いませんか? そんなの、めっちゃ弱いに決まっています。
見込みのありそうな手だけを深く読むから、強いプログラムができるのです。
ちょっと話が横道にそれますが、 上記のような考えを無批判に受け入れるのは危険。 実際、最近は全幅探索(もちろんαβ枝刈り等はあり)の方が優勢だったりする(←知ったかぶり)。
なぜ、いも焼酎なのか。 そういえば、妻のお母さん(わたしから見ると「お義母さん」)がくるので、 ビールを買っておこうと言ったら (僕はお酒を飲まないので、うちにはお酒がない)、 もう寒くなってきたので、ビールよりいも焼酎かもと妻。 いも焼酎といっても何を買ってくればいいのか?というのが目下の プチ懸案事項だったのでした。
それより、スペースシャトル。 スペースシャトルそのものよりも、 この手の巨大プロジェクトにつきまとう「嘘」について。 はたして、おおきな予算に嘘はつきものなんでしょうか?
原理的に不可分であるはずはないと思うのですが、 嘘を排除するのはとても難しそうにも見える。 どうしてなんでしょうね。
間違いが許されていないことが一因かな、とは思う。 やってみないとわからないことだってあるはずなのだから、 やってみたけどまずかったという事が後から判明するのは当然のことだと思う。 むしろ、そういう知識が増えてこそ、やってみた価値がある。
けど、実際は、たくさんのお金を費したプロジェクトに失敗はゆるされず *1、 「やってみたけど、まずかった」事などなかったことにされることが多い。 それでは、やってみないとわからないことは、いつまでもわからないままになってしまう じゃないか。
そういうやりかたの行き着く先は、2つしかない。
いずれも、進歩には結びつかないですね。
技術的に真っ当な予想が当たるほど世の中は甘くない とか言われてしまっていますが、そんな世の中いやだよ。
*1 多くの場合、途中で方針変更することも許されない。
変分法についてまとまった資料がないかなぁと探していたら、 次のふたつを発見。
単一のソースから、 html, PDF ということなる文書形式に変換されているらしいところも ポイントが高い。 html ソースをみると、 docutils なるものが用いられているのがわかる。
趣味でしこしこ書いているプログラムがある。 たくさんのデータを読んできて、いろいろ分析してみようというもの。 いろいろ遊べそうで、わくわくしている。
元のデータは人間が読むための形式で、機械で読むのはちょっと重い。 フォーマットが人にやさしい(機械に厳しい)だけでなく、 各要素が文脈非依存にはなっておらず、 モデルをシミュレートしながら読まないと確定しないのだ。 (これで通じるとは思っていません、ご心配なく?)
そこで、人間にはまったく読めたものではないが、機械で読むのは簡単な形式 (それでも、やっぱりテキストファイル)に一旦変換してしまうことにした。
変換にかかった時間は 20 分、 変換したファイルを読んで、オブジェクトメモリを再構築するのにかかった時間は 2 分。
うーん、劇的に早くはなったが、まだストレス・フルな時間だなぁ。
Ruby で書いている以上、過剰な最適化はむしろ負けなのでやりたくないのだが、 いろいろこのデータで実験して遊びたいのに、その都度 2 分のオーバー・ヘッドは ありがたくない。
読み込みループは、こんな感じ。
db = Array.new file.each_line do |s| db << SomeClass.new.unserialize(s) # SomeClass は仮の名前ですよ、念のため。 end
Serialize/unserialize とは Ruby らしくない という意見は当然おありでしょうが、それはまた別の話ということにしておいてください。
ここで、ループ回数は約 6,500 回。 unserialize メソッドは、そこそこ重いかもしれないんだが、 進捗を print させるコードを差し込んでループの進み方を見ていると、 数百回程度するする〜と進むかと思うと、しばらくだんまり、とか、そんな感じにみえた。
これは、あれだな、push (<<) にともなって配列を拡張しなければならないときに、 realloc が発生して、そこが足踏に見えているんですな、きっと。
利用者(僕)は、データベースのサイズを知っているんだから、 最初の Array.new のところで
db = Array.new(hint_db_size)
してやればいいわけですね (もちろん、それに伴ってループ内部のコードも変わります)。
GC がお出ましになるのを抑止するためには、Array.new のときに SomeClass の方も new してしまった方がいいかも知れません。 今夜、両方やってみよう。
さて、2 分がどれくらいに縮まるでしょうか。
#プロファイラを使えという声が聞こえて来そうな気がス。
Array.new(size) してみましたが、べつに速くはならず、むしろ少し遅くなってしまった。
Array.new(size) した場合、要素の追加だったものが代入に変わる(下を参照)ので、 間接参照が増えてしまうのが不利なのかな、とか思ったり。
db = Array.new の場合 : ループ内は db << SomeClass.new.unserialize(s) db = Array.new(size) : db[i] = SomeClass.new.unserialize(s) db = Array.new(size){SomeClass.new} : db[i].unserialize(s) db = Array.new(size); db.clear : db << SomeClass.new.unserialize(s)
いろいろ試してみましたが、測定誤差に埋もれてしまいそうな差しか出ませんでした。だいたい 1 分 50 秒前後。 file.new.each_line より file.new.read.each_line (一旦全部読んでしまう)とかも 試してみたんですが。
ううむ。あてがはずれた。
と、いうわけで、観念して(?) Marshal を利用してみました。 なにをかくそう、Ruby では serialize のことを marshal と呼んでいるらしいということは 最近知った。で、Marshal.load いっぱつ (db = Marshal.load(dumpfile)) にしてみたところ、所用時間は 1 分となりました。
自前 serialize/unserialize は、やめときましょう。遅いし、拡張性ないし。 もともと自前で用意したのは、Marshal のことをよく知らなかったからというだけだったし。
ちなみに、自前 serialize の吐くファイルにくらべ、Marshal.dump ファイルは倍くらいのサイズでした。 自前版では型とかいろいろ決め打ちで出し入れできるのに比べ、Marshal は汎用なので、 クラス名に相当する情報とかいろいろ入ってますからね。
a = Array.new よりも a = [] の方が、ちょっとだけ速かった。 百万回やって、1 秒が 0.9 秒になるくらい。
なんで今更 meta キーがどうしたこうした言っているかというと、 少し前まで meta キーの変わりに ESC キーを使っていて、キーボードは ESC と 漢字キーを swap して いた(日本語キーボードの ESC は遠すぎる) のですが、どうやらこの作戦はとっても不幸だったみたい。
業務の都合で、自分の端末以外を使うときに、そりゃもう、気が狂いそうになる。
というわけで、ESC キーを meta キー代りにするのはやめて、清く正しく(?) ALT キーを使うことに 決めたのでした。
せっかくだから、
がんばって meta キー (実は右 ALT) も blind-touch タッチ・タイピングできるようになろう。
「>」はなんとか押せるので、もう一息でとどく。いちど「>」に触ってから ALT って感じてもいいかもしれない。
ただ、いま確認したところ、SUN のキーボードは小指で押す位置に右 meta キーがあるんだよなぁ。 お。Happy Hacking は薬指の位置にでかいめの meta キーがあるみたいだ。
日本語キーボードを使う限りは、薬指で meta が癖になっても OK っぽい。
……あ、いや、あり? Happy Hacking って US 配列? (買うなら HHK かなと思いつつ、持っていないので)
ところで、バックスラッシュ遠い! 入力メソッド切り替えを \C-o に変えようかな。
ひょっとしたら、解決方法を捜し出すかもしれないシリーズ。
w3m で閲覧中に、CTRL+l で recenter (現在のカーソル位置がまんなかにくるように再描画) してほしい。
ソースちら見なので、おお外ししているかもしれませんが、
/* Redraw screen */ DEFUN(rdrwSc, REDRAW, "Redraw screen") { clear(); arrangeCursor(Currentbuf); displayBuffer(Currentbuf, B_FORCE_REDRAW); }
arrangeCursor の前に buf->topLine->linenumber を書き換えてやればいいように思う。 (改悪路線まっしぐら)
と思って少し上をみると (main.c のね)、ちょうどその機能があった。デフォルトで z にバインドされている。
DEFUN(ctrCsrH, CENTER_H, "Move to the center line") { int offsetx; if (Currentbuf->firstLine == NULL) return; offsetx = Currentbuf->cursorX - Currentbuf->COLS / 2; if (offsetx != 0) { columnSkip(Currentbuf, offsetx); arrangeCursor(Currentbuf); displayBuffer(Currentbuf, B_NORMAL); } }
おお、ずばりじゃないか。
……と思ったが、思い通りにいかないな。 ~/.w3m/keymap で C-l と z のキーバインドを変更してみたりしても、どうも CTRL-l の方が意図通りにならない。
なんかあるのか。困っているわけでもないので、しばらく保留。
z になれるという選択肢もある。
→ ぼくの欲しかった recenter は、CENTER_H じゃなくて、CENTER_V でした orz.
もこの機会に覚えてしまおう。特に、CENTER_H が欲しい場面はいままでもあった。
一応、普段使う w3m は、Redraw で CENTER_V 相当の移動も行うように変更した。 改悪っぽい気もするが、個人的には、とても気持ちがいい。
そんなことより、ちらっとだけど、ソースを読むのがおもしろかった。
ほんとに細々と情報収集。
いま、家のPCは、Windows XP と Solaris 10 のデュアルブートに なっていて、
となっている。
ADSL 導入して、TCP/IP ベースにしてしまえば *1、 Solaris 側でネット接続も普通にできるのだが、現状では 内蔵 Winmodem にアクセスできず、solaris は stand-alone 状態。
まあ、ネットにつながらないのは、気が散る要因がなくて良いのですが、 おかげで、プライベートアドレス宛のメールをまったくチェックできない。 まあ、いいけど。
いまのところ、ナローバンドで十分だし、ADSL はなんとなく負けた感がするので嫌なのですが、自宅でPCに触れるほんのわずかな時間だけで、 Winmodem を動かすのは難しそうだな、正直。
それに、Linux と比べても、 Solaris に関する情報は、ほんとに少ないですね。というわけで、以下 Linux 関連情報。
ltmodem は ちゃんとしたデバイスドライバじゃないので、PPP とかできませんよ。 (This is not a proper driver! It will NOT work with PPP!) というのは、そういうことだったのね。
以下はおまけ。
*1 「TCP/IP on PPP だって、立派な『TCP/IP ベース』じゃないのか?」というツッコミが聞こえた気がする。
http://www.lava.net/~shiro/Private/essay/
今言ったようなものは、わたしたちの専門用語ではコミットメントと いう言葉を使うときがあるんですが、要するに、自分の言ったこと、 自分の言動に対して責任をもってしまうという心理を使っているわけ です。つまり、だれにも、自分の知り合いや身内や(この場合、 お子さんなんですけれども)、そういうものに対して、 嘘つきとは思われたくない、責任ある立派な人間でいたいという 気持ちが働きます。あるいは、自分自身が自分を見た場合に、 言っていることとやっていることがデタラメじゃあないかというような 人間であることに、非常にいやな気持ちがします。 つまり、一貫した態度を人間というのは保ちたいという気持ちが ある訳です。
あ、いや、 Binary Hacks 買わなくちゃ とか思って。なんで表紙が碁なんだろ。
FPGA で Much reduced instruction set computer とかつくって、その上で動くモニタプログラムかいて、 コンパイラも書いて、FreeBSD 移植して、話はそこからだ! みたいな本だったらどうしようかな、ついていけるかな、とか 心配したけど、そこまでスパルタな本ではなさそうだった。 ほっ。
もしそんな本だったら、それでも買って、 眺めて、酒飲んで(下戸だけど)、あとは本棚にかざっておく予定だった。
# うかい [201@Perl]
# うんの [うへぇ、まじすか。]