おしらっせ: tabesugi.net は捜索中です。 現在 unixuser.org 様のサーバを間借りしております。
ちなみにこれを作ったら力尽きたため、これ以外に作ったものは みそ汁 (いんげん) だけ。うちの母だったらここであと一品やるところだ。 どうでもいいが (うどでもよろ)、 日本に帰ってきてからというもの、料理が楽しくてしょうがない。 贖罪がまともなうえに、なにより火力がある。 NJのアパートでは電熱コンロだった (電磁調理器ではない) ために とにかくあったまるのが遅くてイライラしたもんだが、 ガスコンロ (しかもグリルつき) があれば何でもできるもんね。ガス万歳!
とうぜん部屋を探すときはガス 2口が使える物件を探していた。 でもそういうアパートは実は女性専用が多い。差別だ…
objdump -x
する。
$ objdump -x *.exe *.EXE | awk '/DLL Name:/{n=$3;} /vma:/{a=1;} /^$/{a=0;} !/vma:/{if(n&&a){print n,$3;}}' | sort | uniq -c | sort -rn
この方法のいいところは、いろんなアプリケーションで広く使われている
代表的な関数名がわかることだ。ちなみに Windows\System32\
以下にある
すべての EXE ファイルにこれを適用したみた結果がこれ:
368 KERNEL32.dll TerminateProcess 368 KERNEL32.dll GetCurrentProcess 362 KERNEL32.dll Sleep ... 176 msvcrt.dll memcpy 175 USER32.dll LoadStringW 171 KERNEL32.dll lstrlenW 162 KERNEL32.dll HeapAlloc ... 118 msvcrt.dll malloc 98 KERNEL32.dll CreateThread 94 KERNEL32.dll ReadFile 75 USER32.dll DestroyWindow 69 USER32.dll CreateWindowExW ... 6 DUser.dll CreateGadget 5 msvcrt.dll ungetc 4 KERNEL32.dll Beep 3 WINHTTP.dll WinHttpCrackUrl 2 GDI32.dll RoundRect 1 CRYPT32.dll CryptHashMessage
以上の観察結果からわかること:
ちなみに printf もかなり使われている。
「なんとかprintf
」の順序は以下のとおりである。
198 msvcrt.dll _vsnwprintf 59 msvcrt.dll _vsnprintf 49 msvcrt.dll fprintf 36 msvcrt.dll swprintf_s 32 msvcrt.dll wprintf 30 msvcrt.dll printf
Win32 のソースをみると、この _
で始まる
関数や定数がやたらと多くてムカつく。Python だってアンダースコアは
そんなに使いたくないのによー。
てくるで、msvcrt.dll
ってのは
Windows における libc.so
みたいなもんらしい。
これが static と dynamic にリンクしたときでは名前が変わるらしく、
さらに CLR上ではまた違うライブラリになるんだと。
ややこしいな。
「高度に発達した少年は、大志と見分けがつかない」といったのは、 アーサー・クラーク 2世だったか。フーリエ変換は、数学の中でも まさに「魔法」とでも呼ぶのにふさわしい技術だと思う。 もちろん数学の中には他にもかずかずの黒魔法があるのだろうが、 フーリエ変換ほど実際に使われて成功しているものは少ない。 新山のような工学屋からみると、フーリエ変換はまったくの秘儀である。 もちろん、FFT のようなアルゴリズムは知ってるし、 フーリエ変換を実際に「使う」ことは簡単にできる。しかし、 「なんでそうなるの?」という謎はいままでずっと解けなかった。 なぜある関数をフーリエ変換するとスペクトル分析になるのか?? 以下、チョーいい加減 (かつ直感的) な説明を思いついたので書いておく:
話を簡単にするために、まず有限なフーリエ級数から考える。 各 sin・cos 項の係数 an, bn は、 (テキトーにいえば) 以下のように求められる:
an = Σ こさいん(n x)・f(x)
bn = Σ さいん(n x)・f(x)
で、Σ の中がいくつあるかは知らないが、とりあえず f(x) を有限の長さをもった「ベクトル」と考えよう。 同じように sin(n x) も数列になる。すると、 Σ sin(n x)・f(x) というのは、 2つのベクトルの内積を計算しているのだ、とみなせる。 さて、内積というのは、言語屋にはおなじみのように 「2つのベクトルの類似度」を計算していることになるのだ。 するとこれは、ある与えられた n において、関数 f(x) が この周波数の波形カーブ (sin または cos) とどれくらい似ているか、を 測定していることになるのではないか? するとこの類似度が その周波数のスペクトルとして使われてもおかしくない。
さらに、これが無限個の要素になるともうヨクワカラナイが (!)、 とりあえず、積分 ∫ f(x)・g(x)dx は こまかい内積みたいなものと考えることができるから、
∫ f(t)・e-jωt dt ≈ Σ たくさんの sin、cos と f(x) のこまかい断片の内積
ということだろう。
以上のようにして、フーリエ変換がスペクトル分析 (のようなもの) を与える理由をいいかげんに説明できた。 (とりあえず、深夜まはこれでわかったつもり)
え、わかんないって?
…もう寝る!
おマエ、いくらなんでも、 もうすこし死に場所ってものがあるだろう…?
で、このうち実際に使われるメソッドはほとんどない。 おまけに、こんな特殊なクラスは誰も継承しようと思わない。 ようするに圧倒的にムダな作業で時間をつぶしてるわけだ。 こんなところより他に時間をかけるべき箇所がある。BOOL SetFubar(const DWORD x) { m_Fubar = x; return TRUE; } BOOL GetFubar(DWORD *pdwValue) const { *pdwValue = m_Fubar; return TRUE; }
まあ、3段階ぐらいならカワイイもんかもしれない。 実際には、アクセスを間接的にするというのは重要な作業であって、 これでかなり見通しが良くなるということはある。 しかし、意味もなくやるなよ! 当然、この例も他に誰も使ってないクラスなので無意味だし、 これを書いた時点で将来的にそんな計画がないことはわかっていたはずだ。 世の中にはレイヤーを増やせば抽象化したことになると思っている人が いるようだが、それはぜんぜん「抽象化」の意味をわかってない。 プログラミングにおける抽象化というのは、文章を書くときに比喩を使うのと 似ている。たとえば実際には配列のようにメモリに並んでいないものを 「これはまるで配列のようだね」と言ってあたかも配列のように扱う、 というのは一種の抽象化だ。この意味で「抽象化」されたインターフェイスの実装は 「仮想化」になることも多い。実際にはないものをあるように 見せかけているわけだ。でも、「これまで存在しなかった意味」を新たにつくりだせば 抽象化の意味があるけれど、すでに存在する対象をいくら名前変えたところで、 それはちっとも抽象化になっていない。void FireBird::DoSomething(void) { doer_impl->DoSomething(); } void Gooze::DoSomething(void) { SomethingDo(); } void Gooze::SomethingDo(void) { 実際の作業; }
で、現在のこの float値に対応したメッセージ文字列を返す関数があるのだが…float GetValue(void) const { return value; } void IncValue(void) { value += 0.1; if (1.0 <= value) value = 0.0; }
これは「float 値を一回文字列に変換してから、string GetMessage(void) { return MESSAGE[float2string(value)]; }
map<string,string>
を使って対応するメッセージを取得する」
という手法で実装されていた! つまり "0.1
" や "0.2
" に
対応する文字列というのが用意されてるわけだ。で、このプログラムでは float を
文字列に変換するためにわざわざ boost::format
を使っていた。
これでプログラム全体が boost に依存するようになってしまっている。
アホか! ようするにこの場合は内部変数として float を
そのまま保持しているのが問題なワケである。こいつに 0.1 ずつ足していけば
誤差が出るし、上のような「float に対応する string」という
アホな変換をしなければならなくなる。
どうせこの値は有限かつ離散的なんだから、内部状態は int で持ってればいいじゃん。
そんで float を返すときには int → float という写像を使い、
文字列を返すときには int → string という写像を使えばいいんだ
(でも、新山が見たところではこの関数がわざわざ
std::string
を返す必要はまったくないのだが)。
これは、考え方は上の「メソッド呼び出しを間接的にする」のと
かなり似ている。しかし、メソッドを間接的にするという手法は知っている人でも、
内部状態を間接的にするという技法は本に書いてないので、知らないのかもしれない。
ちなみに新山の頭の中では、呼び出しやアクセスの間接化は、
どちらも「ふたつの接点の間に蝶つがいを挿入する」というイメージである。
他の人はどういう理解の仕方をしているのかは知らない。
ほかにも、テキトーに書かれたコードにはたいてい 「名前があまりに教科書的」という症状がある。 いつもバカのひとつ覚えみたいに「なんとかHandler」とか 「なんとかManager」じゃ、結局何してるのかわかんねえよ! たとえ動作を抽象化しても、名前まで曖昧にする必要はない。
上のような例は、なにも書いた人がとりわけアホだというのではなく、 ただ単に「考える時間がなかった」ということが原因のように思われる。 だから、アポなコードを書いた人でも たいていスクラッチから書き直せばマシになることが多い。 なぜなら 2度目には「そのプログラムが、何をするものであるか」 かなりわかっているためだ。新山のように、他人が書いたプログラムの 全体像を見てから評論するのはやさしいのである。
しかも、まぶたのキワのところをやられたので、 目がはれぼったい。くそったれ。
蚊について。新山はもともと蚊によく刺されるうえに、 刺されるといつもひどく腫れる体質だった。でも向こうに行ったら、 蚊にさされてもほとんど腫れなくなったので、体質が変わったのかと 思っていたが、日本に帰ってくるとあいかわらず腫れるのである。 ようするに、米国の蚊が親切 (?) だったらしい。
それにしても、台風一課な腫れだね。
とくにコメントに関しては、
英語は日本語に比べて圧倒的なメリットがある。
文字コードの問題を心配しなくてすむし、
入力モードを日本語と英語で頻繁に切り換える必要がない。
なにより、関数名や変数名はふつう英語なので、
動詞や名詞が一貫しててとっても説明しやすい。
変数名や関数名をぜんぶ日本語で書けるようになれば、
コメントを日本語で書くことには少なくとも論理的な説得力があるが
(でも実際にはやりたくないな、そんなの手間がかかってしょうがないよ)、
いまんところはそれもない。どうでもいいけど VC++ は
「ソースはなるべく UTF-8 で保存しろ」っていってるくせに、
BOM がないと SJIS だと思い込むらしい。アホである。
UTF-8 なのに BOM が必要なんて…。いまだに C のソースの中に
日本語の文字定数を埋め込むは怖い。さいわい、まだやったことないけど。
Python なら encoding:
指定があるから平気なのにね。
めかじき
洗濯物が乾かないぜ menって言ってたよ (コカイン吸いながら) ♪
…どういうわけか朝から出来心で企画書 (のようなモドキ) を書いている。でも企画書ってオレぜんぜん書き方とか知らないんですけどね? しかもこの企画書を本当に出すのか、自分でもまだ自信がない。 とりあえず「自分用のメモ」としてでも書いておけばいいや、というところ。 しかし、職業病というのか、どうしても構成が「論文調」になてしまう。 なてしまうあるね。 学術論文と違って、企画書では力点を置く場所が「新奇性」ではない。 ここがだいじなところだ。ちなみにコカインうんぬんの件は これを 見たから書いただけで、とくに意味はありません。
実家から「苗場そば」が送られてきたので今日はソバにすっか、 と思っていたのだが、この鬱々とした天気のために どうも蕎麦という気分にならない。といって、ラーメンかなにかを 食いに行こうと思っても、こうもドシャ降られていると それも気がすさむ (? この日本語ってあってる ?) のだある。 フンとになあ。まあ、あしたは晴れるらしいからいいけど、
トリスおじさん!
I'll never eat green peas again...!!
きのうまで、Linux 上でコードを書いてテストしてたワケよ。
そんで gcc -Wall
でも警告がまったく出なくなったので、
それを Visual C++ に貼りつけてビルドしてみたら、
stdafx.h がインクルードされていません
から始まって、出るわ出るわゴミの山。こりゃ自身喪失するね。それから
今日はずっと pなんたら->QueryInterface
って一体
何ナンだよ!! ということで悩んでいたが、ようやくわかったことは、
これはようするに「型キャスト」なのだ、ということだった。
COM 関連の入門書とかまったく読まずに MSDN とサンプルコードだけで
竹槍戦法やってるのでアレですが、他の人もよくわかってないみたい。
そもそも Microsoft のサンプルコード自体が一貫してない。
しかし COM とか ATL とかのあの笑えるコード群を見ていると、
MS がどうしても C# とかの自前言語を欲しかったんだろうなあ、
という気持ちはよくわかる。
そもそも分散オブジェクトの多態とか、言語レベルの
サポートがなきゃ使いにくくってしょうがない。それをほぼ C++ の
プリプロセッサ (ある意味、テンプレートなぞも新山に言わせれば
プリプロセッサにすぎない) と、へっぽこなコンパイラ拡張だけを
使ってやろうとしてたんだから、根性あるというか、いや、やはりアホだ。
この手の話はそのむかし、X11 が C でオブジェクト指向 (っぽいこと) を
やろうとしていたのを目撃した人 (これはこれでまだ生きているが)
なら「もうその手の話は勘弁してくれ」って思うだろう。
しかし DirectX の API は結構よくできていると思った。
ちゃんと動けばの話だが。
さて一体オレは何をやっているんでしょう?
もうひとつのストレスの元は Vista の UAC である。 いままで Windows 2000 も XP も使ったことなかったのに、 いきなり Windows Vista かよ! これだけですでに相当オドロキだが、あのうざったい 装飾はすべて消してあるので、知らない人がいまの新山の画面を見ても 「いまどき Windows 95?」としか思わないだろう。 でも妙なところでアウトラインフォントを使おうとするらしく、 そういうときは (アンチエイリアス禁止にしてあるので) キタナイ 文字を見せられるときがときどきある。たぶんあれって、画面関係の API を 古いのと新しいのをまぜこぜにして使ってるからああなるんだろうね。 しかし…みんな、ホントにこんなの金出して買ってんの?? あいかわらずの旧来 Windows に皮をかぶせただけなのが見えみえ。 それから、「なんでも禁止すりゃーいいってもんじゃないだろ、馬鹿」。 MS は「真のセキュリティ対策とは、ユーザーに何ひとつ身動きさせないことだ」 というポリシーを本当に実行に移したらしい。それはある意味すばらしいが、 ホントに何もできない。そして何かしようとすれば、 (ユーザの同意のもとに) 必ず「なんでもできちゃう」 状態を招くようになっている。しかし建て前では、たしかに Vista は 最強のセキュリティをもつ OS かもしれない。 実際には、ユーザによる無限の同意が与えられているわけだけど。 これって、裁判対策か何か?
結局 (ケッキョキ)、 これは ATL の例でもそうだが、 MS がやる拡張はいつも「薄皮をかぶせるだけ」なんだよ。 しかもこいつらは、その皮だけを支えに、 表面にすごくデッカい上部構造を構築するんだから、おそれいる。 しかもさらに悪いことには、MS は誰からも耐震偽装で告発されない。
ソフトウェアにも建築基準法と消防法と破防法を適用しろ!!
どうでもいいが (DDT)、日本で売っているバナナはどこも Dole ばかりで、 エクアドル産のブランド「Bonita」が非常に少ない。米国では けっこう多かった。Bonita バナナをみるといつも博士一年のときに 英語を習ったごんざれす先生を思い出す。 彼女はエクアドル出身で、自国のバナナがいちばん品質がいいと 信じていた。いや、なつかしいなあ。
さらにさらにどうでもいいが、 「なぜ日本のバナナはヘタをポキっと折りやすいのか」の謎をいまだに 解明できずにいる。日本に帰ってきてからバナナのヘタをよく観察しているが、 切りこみとかは入ってないのによく折れる。なぜだーーーー! もしかしてこれは電子顕微鏡レベルで見ないとわからないんじゃあ ないのか? あるいは遺伝子組み換えによりヘタが折りやすい バナナに品種改良してるとか? 「こちら側のどこからでも切れます→」の パックを発明した日本人ならそれくらいやりそうである。そのうち、 「こちら側のどこからでもポきッと折れます→」の バナナが登場するのもそう近くはない。
そういえば、今日はゆうちょの住所変更とカード変更をやった。 ら、1時間以上かかった。要するにオレは昼休みの間じゅう郵便局に いたことになる。どうでもいいが (どうでもよろ)、 新しいキャッシュカードには電子マネー Edy が塔載!! とかいわれたが、「いらない」と言っておく。 しかしこのオプションが不公平で、電子マネーつきの カードは発行に 2週間ぐらいしかかからない (それでも十分長い) が、 電子マネー機能のつかないカードは 1ヶ月以上かかるというのだ。 そんなのより VISA と統合しろよ。 しかしオレは「何がなんでもいりません」といったので、 結局 1ヶ月待つことに。まあ、mぅfぐの ATM でおろせるからいいけどね。 しかし、むufg のシステムがこれまたアホっていて、ネットバンキングは おそろしく不便だし窓口のねえちゃんも情報が錯綜していてよくわかってない様子。 こんな不便なシステムでみんなよくやってるよね。 まあ、オレ個人にとってはドーでもいいんだが…。 そういえば、日本はいまだにほとんどの ATM が 24時間営業になってない。 コンビニでも全部の銀行がおろせるわけじゃないし。 いったい何十年アメリカに遅れてんだ (少なくとも 10年は遅れている)。 6年間のあいだにすこしは進歩したかと思ったが、ぜんぜん変わってないな。 自動改札なんかどうでもいいから ATM をやれ。 というか、山手線も 24時間営業じゃないよね (NY地下鉄はとっくに24時間営業。 ちなみにうちの大学は図書館も 24時間営業だった)。 言いわけはおおよそ推測できるけど。安全上の理由がどうたら。
しょせん、日本人に「改革 (これがどんな意味であれ)」などできるわけがない。
さて、今日はぶりの照り焼きだよ!
ーーーーーーーーーーーーっ。
診断書: 情緒不安定。
それに、生活もあまり自由だとは思えなかった。 買いたいものが (値段が高いせいでなく、そもそも売ってないため) すぐ買えなかったとか、住む所もどうも具合が悪い、といったことがあった。 結局のところ (ケッキョキ、) 自分はビザがある間だけ米国に 置かせてもらってるにすぎず、しょせん異物である、 と思っていた。これは新山が行ったのが 9.11 後の米国だったからかもしれない。 空港の入国審査でアホみたいに長い行列に並ばされたり、 駅で意味もなく警官に荷物検査を受けたり、スーパーの店員に ジャマそうに扱われたりといったことは、数回ならともかく、しょっちゅう あると疲れる。考えてみれば、米国にいるあいだに本当に 落ちついた気分になったことはほとんどなかった。 たとえ生活が貧相だとしても、かの国にはもっと生活が厳しい人も 山のようにいるので、それが言いわけにはならない。それにオレには選挙権もない。 選挙権どころか、米国ではオレにはほとんどの権利がないように感じられた。 それから、新山は健康の問題を極度に恐れていた。 もしオレがここで病気したら、あるいは死んだら、英語も話せない 両親が事後処理をするハメになるのだろうか? それに米国の 医療保険制度だって、いまだによくわからない。何もかも 慣れてないことをやらされるのである。 6年間、あんな状態をよく続けられたもんだ。ある意味、卒業したら さっさと逃げ帰ろう、と思っていたからできたんだと思う。 いつも「これをやったら次はいつまでにあれをやらなくちゃ」と考えていた。 心休まることがないのだ。しかしそれでも、楽しかったかときかれれば そのとおりなんだけど…。ある意味、学生というのは 言いわけばかりしている期間のことである。でも今はもう言いわけする必要が ないのだ。なぜなら、ほとんど自分で決めなきゃならないことばかりだし、 それについてはすべて自分の責任になるのだから。 しかし、こういう状態ってのは、とっても幸せだ。 たぶん。
世迷い言おわり。
でも、彼 (RMS) には Lisp マシンというトラウマを考えれば同情はできる。 あれこそが彼の思想 (と人間不信) を決定づけてしまったんだろうな。 まあ、それに比べればなぁーんの苦労もしていない音質育ちの新山が こんなこというのはまったくもって失礼な話だけど。
新山祐介さん (長野県出身) の供述: (中略) …なにしろ、あんなに楽しいことはありませんよね。 ちょっとしたことであげあしをとって、コテンパンに叩く。 そんで何か向こうに反応があったら、それを茶化してまたコテンパに叩く。 ありがたいことに、この国はそういう材料を見つけてくるのがすごくウマい 有能な人々に恵まれているんです。そういう人々のおかげで、 私たちは悪を見つけだすことができますし、 そしてそれを徹底的に叩くことによって、 みんながお互いに仲むつまじく協力しあって社会を良くしている、 つまり自分たちはひとつだという、 何ものにも代えがたい感覚を得ることができるんです。 いや、まったく、あんな楽しいことはありません。… (以下略)
…あ、でも韓国人も結構好きそうだよなあ、魔女狩り。
いやー、やっぱアジの干物はいいわ。ホント。
(目がとろーん)
しかし、もやしの茹でたのは母がやったような味にならんかったっ。 まだまだ修行が必要だ。
きょうは銭湯へいった。よろしき。
てくるできょうはカレイが食いたいんだけど近所のスーパーで売ってるかな。 しかしそういやアジの残りがまだあるんだよな。どうし余。 日本に帰ってきてからというもの、毎日、親の仇のごとく 魚ばかり食っている。ちなみに昼食は会社へ (冷凍) ゴハンだけ持っていって 向かいのオリジン弁当でお惣菜を買えば 300円ぐらいでハラいっぱい 食べられることが判明した (料理は好きなのだが、さすがに朝お弁当を作るほどの ズクはなし)。しかも、栄養的にもけっこういい。 ニッポンの生活はいいわよね。しかしむしろ問題は仕事にのめり込みすぎて お昼を食うのを忘れることなのである。 まあ、お昼休みの時間は融通がきくのでいいんだけど。
ちなみにテレビがないので家にいるときは結局 (ケッキョキ)、 smoothjazz.com を流している。ようするに、向こうにいたときと変わってない。 でも、向こうのアパートでは陽がほとんどあたらない部屋で、 天井に間接照明を当てた状態で聴いていた。ようするに、わりあい ジャズむきな部屋だったといえる。それに対してこっちは陽当たりが よすぎるので (これまで陽当たりが悪すぎたので、今回はいいところを選んだのだ)、 ノーテンキな曲のほうが合う。 おんなじ曲でも環境が変わるとやっぱ雰囲気変わるよね。
てくるでいままで新山はカレイってなんで 目の位置が必ず左側になるんだろう、この非対称性はなんなのか? とか思っていたけど、よく考えてみれば人間の身体も厳密には 左右対称じゃないもんな、と思って勝手に納得した。
まず、こんなふうにして正弦波を生成します。 全部ジェネレータを使っているところがミソね。
from math import sin, pi samplerate = 44100 # 44.1kz def osc(freq): # 無限の長さの正弦波を生成する。 rate = freq/float(samplerate) i = 0 while 1: yield sin(2*pi*rate*i) i += 1 return def cut(n, seq): # 与えられた時間でちょん切る。 n *= samplerate for (i,v) in enumerate(seq): if n <= i: break yield v return a = osc(440.0) # generate 440hz sine wave a = cut(1.0, a) # cut off at 1.0s
つぎに、こっから .wav ファイルを生成。
def play(a): import wave, array pcm = array.array('h', ( int(v*32767) for v in a )) pcm.byteswap() # for Intel out = wave.open('out.wav', 'wb') out.setnchannels(1) # mono out.setsampwidth(2) # 16bits out.setframerate(samplerate) out.writeframes(pcm.tostring()) out.close()
Pygame をもってる人は、このあと再生もできますよ。
import pygame pygame.init() ch = pygame.mixer.Sound('out.wav').play() while ch.get_busy(): pygame.time.wait(100)
で、こんだけだと大して面白くもないので、 以下の関数を加えよう!
def squ(freq): # 方形波 n = int(samplerate/freq/2) while 1: for i in xrange(n): yield 1.0 for i in xrange(n): yield -1.0 return def white(): # ホワイトノイズ from random import random while 1: yield random()*2-1 return def amp(a, seq): # 増幅 for v in seq: yield a*v return def cat(*seqs): # 連結 for seq1 in seqs: for v in seq1: yield v return def add(*seqs): # 加算 try: while 1: yield sum( seq1.next() for seq1 in seqs ) except StopIteration: pass return def mult(*seqs): # 乗算 try: while 1: yield reduce(lambda r,seq1: r*seq1.next(), seqs, 1.0) except StopIteration: pass return
こんだけあれば、もう気分は SuperCollider! (もどき)。
たとえば、こんなの:
a = osc(440.0) # 基準 b = osc(440.0*1.41) # 基準+半オクターブ c = add(a, b) # 重ね合わせる c = amp(0.5, c) # 音を小さく c = cut(1.0, c) # 1秒で切る d = cut(1.0, osc(880.0)) e = cat(c, d) # つなぎ合わせる play(e)
この例はジェネレータの利点がいかんなく発揮されている。 各関数は数列の大きさとか考える必要がなく、 ただひたすら数を yield していけばよい。 本当なら wav を生成するんではなくてジェネレータの結果を 直接サウンドデバイスに流したいよな。 まあ、いまの Python の実行速度じゃムリだけど。 こうしてまた貴重な時間を無駄にしました。おやすむ
pygame.mixer
がどうしてもうがかねーー!
というモンダイに悩まされること 30分。古い SDL が自分のホームディレクトりの下の
~/Library/Frameworks/SDL.framework/
に
残っていたのが問題だった。こんなろ、誰だこんなとこに
インストルーしたのは!!
マインスイーパのやつは、途中で出てくるサングラスのおっさんが、 あの画面上のほうに出る 「ニコチャン (たしかに終了時にはサングラスをかけている)」 だということを知ったときは爆笑した。 しかし本当に気に入っているのは 2番目のやつである。 何度も見てしまった。おそらくは Kermit the Frog のパクリだと思うのだが (喋り方的にも)、こいつがカメラとパソコンを交互に見つめながら 何か喋るときの「間」がよくって、無性に笑える。そういえば セサミストリートの frog も「間」が非常によかった。やはりアレは あの間を理解する人が米国にも沢山いるからウケたんだろう。 どうでもいいけど (どうでもよろ) これってわざわざ人形作ったんだよなあ。 よくやるなあ。 Chad Vader 以降、youtube のためにこういうアホな自主作成映画を 作る人が増えているのだろうか。こういうのって、日本人が作っているのも あるのかな? ほとんど見ないんだけど。まあ、オレが知らないだけか。
ちなみに、 Powerthirst もかなり好きなのだ。でもこれはアメリカ風 CM のパロディだから、 日本でやってもウケないだろうね。
それにしても、最近ようやく人並みな生活になったと思える。 なんしろ先週まではベッドもなくて、 引っ越してきてから 2週間ぐらいは床で寝てたんだからな。 電話もネットもなく、いつも近くの公衆電話 (でもこれが実はあまり近くない、 罰ゲームのような遠さである!) まで 行かねばならなかった。とうぜん連絡先もないので、 なにかの配達で連絡先を教えてくれって言われると困るわけよ。 実家の電話番号を教えてそっちに伝言してもらうようにするとか、 向こうの番号を聞いて何度も電話して「ポーリング」するとか、 大変だったんである。ま、しかし、それも終了した。 もちろん、すでに子供がいたり家を買ってたりする同年代のヤツラと 比べるとまだトンでもなく遅れているけど (たぶん給料的にも)。まあそんなことはどうでもいいさ。
(追記) それにしても、あいかわらずたいした本がなかった。 ああいう計算機関連の書籍売り場に行くといつも安心すると同時に 脱力もする。結局、10年たってもやることは何も変わってないのね。 ただメンツが変わるだけ。Indeed, でなきゃ「プログラミングの心理学」が 35年も生きのびるハズがない。しかし、逆にいえば、 あんな本ばっかでこの国は大丈夫なのか、とも思う。 もちろん自分も「あんな本」を書いた一人であるので、 あまり人のこた言えない。
やっとネットにつながtta。んTTの工事とプロダイバーの 申し込みに今のいままでかかったのだる。 テレビもないので、まるっきり世の中のニュースにとり残されていた (会社ではネットは使っていたが、私用では見ていなかった)。 そのため完全なウラシマ状態:
以上です。
てくるで (ところで、) ドーーでもいいですが、 この日記が開始してからいつのまにか 10年が経過している。 始めたのが 1997年の 6月だからね。もうそんなにたったのか。 しかし、この間にいくつのサイトが新しく開始し、 そして消えたのを見てきたことだろう。ま、オレも当初はこんなに続くとは 予想してなかったのだけど、web が信頼できないのはまさにここだ。 ある書籍が図書館に 10年以上置かれている、などというのはざらにある。 それに対して、web サイトは何の前触れもなく現れたり消えたりする。 こういうサイトが大量にあるような現状では、web はそもそも 内容以前に物理的に信頼できない。一方で、 まえにも書いたように「消えたい」人々の権利、 というのはできるだけ尊重すべきだと考える。 しかしまあ、ほとんどの個人サイトが消える理由は 「飽きた」とか「時間がなくなった」とかいうのがほとんどだと思うのだけど。 似たようなことは新山にもあって、いまさら某フォントのメンテナンスなんて やってらんないもんな。だから放ってあるのだけど、この場合は sf.net に 放置しておいてもほぼ ok なのに対して、たいていのサイトは (ホスティングサービスの制約などにより) 消えざるを得ない、 というのは残念なこった。まあ、古い情報は意図的に消したほうがいい、 という場合も多いのだけど。どうだかね。
(追記) 情報の安定性、保存性という面からみると、長い目で見て web は 図書館に勝てないだろうと思われる。web はいま現在の情報を見るには 役に立つだろうけど、そこに置かれている情報というのはせいぜい 数日〜1年間前ぐらいのものに限られる。図書館ではめまぐるしく変わるような 情報にはアクセスしにくいが、ある程度の時間を経た情報は確実に整理され、 最終的にはネットの検索なぞよりもアクセスしやすい形でまとめられる。 そういう意味では、web の位置付けってのはテレビと図書館の間にあるんだろうな。 逆に言うと図書館のありがたみってのは長い時間をかけないとわからない、 のかもしれない。
Document ID: e6b0b3bf7dad408e8a308255373c95a7
Yusuke Shinyama