2003.11.6
■ゲーム
permalink:"200311.html#d06_t2"
ネトゲする気力がないのでPS2でキングダムハーツばかりやっている。イベントでザコが鬼のように強くなりやがった。強いというか固い。終盤になったので『ボス倒した後用お楽しみ世界』につくり替わりやがったのだ。スクウェアはこれだから嫌いだ。そんなのボス倒してからでいいだろが。『さあボスを倒してもこんなにボスより歯ごたえある敵が待ってますよ〜』みたいな演出されたら萎えるだろうが。別に、ボスクリア後のセーブデータでプレイできるような仕様にできないわけじゃないと思うんだけど、スクウェアはなぜか必ずこうする。オリンポスコロシアムのおまけゲームまでザコが強まりやがる。タイム記録とかできるのに途中でイベントで難易度が変わるのってどうかと思う。ムカついてリセットしたら決戦前まで戻ってしまった。そのまま同じこと繰り返すのは屈辱なのでホロウバスティオンでレベル上げる。結局単調な作業を繰り返すことになる。
ドナルドとグーフィーの三人で回復し合いながら戦うのは楽しい。楽しいがポーション買いに町まで戻るのはめんどくさい。このゲーム、金の単位はマニーなんだが、マニーは最後まであまり重要ではないため、それゆえにインフレが進行せずあまり儲からない。ポーション99買うと結構なマニーになるし、それを三人に少しずつ分配しなきゃならないのも面倒だ。
マニーは大変だが、強さはインフレ状態だ。ホロウバスティオンのザコに割と簡単に勝てるようになってきたので、イベント進める。今までほどサクサクとは行かないが、さっきよりはマシだ。
システム的には色々文句はあるがこのゲームは『ダァナー!』(ファイナルミックスだからネイチブ発音)とドナルドにケアルかけて『サンキウ』とダックボイスでお礼もらえたりピーターパンと空飛べたりするだけで楽しいのでお薦めだ。ディズニー属性はないと思っていた自分がプーさんに会って『プーサンダー! プーサンダー!』状態になるとは思ってなかった。ディズニーという会社は嫌いなんだが(手前勝手な著作権の行使とか)、かつて見た絵本や映画によるすり込みらしい。三つ子の魂百までとはよく言ったもんだな。
■SQLWindows
permalink:"200311.html#d06_t3"
長い事SQLWindowsで仕事をやってきたんだが、1からアプリを組んだのは今日が初めてかもしれない。たまたまSQLを使う小物アプリを組む案件があったので、テンプレートも何もなしに作ってみた。うん。Winアプリ作成ツールとしても悪くない。へんてこりんなIDEさえ目をつぶれば、言語としてもそんなアクがあるわけじゃないし。FormsBuilder なんかで組むよりはよっぽどマシだ。でも例外とトリガーローカル変数がないんだよなコレ。だからすぐ汚いソースになってしまう。
■玉露
permalink:"200311.html#d06_t4"
うまみ成分の多いお茶ってうまいのか? グルタミン酸の甘い口当たりと後味に残る塩気はあんまり好きになれない。生茶はまだましだが口どけ生茶はオレ合わないなあ。お茶菓子と一緒に熱いのを飲めばうまいのかもしれないが。
2003.11.7
■[xyzzy|cite]てんぼう
permalink:"200311.html#d07_t1"
ジャンルの xyzzy をクリックするとこういうところに飛んで欲しい
- xyzzy の今までのトピック一覧
- xyzzy の画面写真
- xyzzy の説明書き
- xyzzy のリンク
このうち、
>・xyzzy の今までのトピック一覧
これは普通にプラグインでいいとして、
>・xyzzy の画面写真
>・xyzzy の説明書き
はhtmlに直に書こう。ほかに方法も思いつかないし。
>・xyzzy のリンク
これは今トップに貼ってるリンクと同期が取れるといいなあ。インクルードのプラグインってないんだっけ。
2003.11.10
■なんかの名前
permalink:"200311.html#d10_t1"
Susieとかアプリケーションを立ち上げた時に何秒かのあいだだけ出てくる、ロゴとかキャラクターのくっついたバナーみたいなウィンドウには、なんか名前がついてたはずなのだが思い出せなくてきもちわるい。
オンラインのコンピュータ用語辞典をいくつか見てみるが、キーワードがわからないので逆引きがうまくできない。めんどくさい。
たしかVisualBasicのプロジェクトウィザードにもあった。思い出せない。くやしい。
有効なキーワードを見つけられない。もどかしい。
「アプリケーション・起動時・ロゴ」とするとWindows95のロゴの話ばかり出る。うっとおしい。
やっと目的の名前を見つけることができた。くやしいから書かない。
- ロロ「
- ところで、今日からWin篇なのでしょうか」
■[win]ビットマップおぼえがき
permalink:"200311.html#d10_t2"
唐突だけど、じぶん用メモ。
- BMFH(BITMAPFILEHEADER)にはファイルサイズとビットまでのオフセくらいしか入ってないよ。
- BMIH(BITMAPINFOHEADER)におもな情報が入ってる。読む時は古いBITMAPCOREHEADER形式にも中尉。
- BITMAPINFO構造体はBMIH+パレットの最初。アタマはBMIHと同じなので、BMIHとBITMAPINFOは同じポインタ渡してよし。パレット使わない場合は確保する必要もない。
■[win]デバイスコンテキストとは?
permalink:"200311.html#d10_t3"
Windowsプログラミングの復習をしているのですが。
- ロロ「
- はあ」
デバイスコンテキストで、煮詰まった…。そもそもデバイスコンテキストってなんだっけ? 自信がなくなってきた…
- ロロ「
- Googleしてみました」
- デバイスコンテキストとは、GDIの中核を成すオブジェクトである。
- デバイスコンテキストとは、ディスプレイやプリンタなどのデバイスを抽象化したものである。
- デバイスコンテキストとは、描画するためのインタフェースである。
- デバイスコンテキストとは、描画インタフェースの情報を集合させた構造体である。
- デバイスコンテキストとは、紙と画材のセットにたとえることができる。
…い、いや、 わかってるっつーの! だいたいその辺の定義っぽいところはわかってるんだよ!
わかってるんだけど使い方がいまいちつかみきれないんだ!
- ロロ「
- では、その『いまいち』な、使い方がわかっているところを書き出してみては?」
線を引きたいときは、
- デバイスコンテキストとペンオブジェクトを関連付けする(ペンを選ぶ)
- デバイスコンテキスト上の座標を指定して線を引く
文字を描きたいときは、
- デバイスコンテキストでペンとフォントを選ぶ
- デバイスコンテキスト上の座標を指定して文字を描く
図形を描きたいときは、
- デバイスコンテキストでペンとブラシを選ぶ
- デバイスコンテキスト上の座標を指定して図形を描く
ふむう。納得できる。
じゃあビットマップを貼るときは、
- デバイスコンテキストでビットマップを選ぶ
- デバイスコンテキスト上の座標を指定してビットマップを貼りつける
ですね?
- ロロ「
- だめです」
ちがうの?
どちて?
- ロロ「
- ビットマップの場合はこうですね」
- メモリデバイスコンテキストを作る
- メモリデバイスコンテキストの方でビットマップを選ぶ
- BitBltなどでメモリデバイスコンテキスト→デバイスコンテキストの方にコピーする
- ロロ「
- 要するに、メモリデバイスコンテキストが必要だということです」
ええっ? なんでビットマップだけ扱いがちがうんだー!と叫びながらつづく。
2003.11.12
■今日の格言
permalink:"200311.html#d12_t1"
「このデータベースのこの項目は、32767文字まで入るように定義してあるけど、実際は2文字までしか入らないから大丈夫。2文字で受けてね」といわれて信用してはいけない 3つの理由:
- そんなのウソに決まってるから
- 将来もそうだとは限らないから
- 一番肝心なところに制約を設けてないから
- 人間だけが従う制約なんて信用に値しないから
- エラーを起こした場合真っ先に疑われるのはプログラム作ったテメエだから
- ハードコーディングしてある要素の数なんて全部信用できないから。
『3つの理由』と言いながら6つあるよ?
- ロロ「
- それも、マジックナンバーは全部信用できないという教訓です。
たとえ納期が迫っていようと、どうやってもエラー出ないくらい文字数チェックをガリガリに書いときましょうね」
2003.11.13
■自転車ほしい近況&言語買う
permalink:"200311.html#d13_t1"
堤防を走るのがきもちいいのと、このごろ自分の中で高まりつつあるダイエットの渇望から、より楽しく走れそうな高い自転車を買おうかなと思っているんだけど、高い自転車はどろよけとかスタンドとかランプとか付いてないんだよ。高いのにヘンだ、という気もするが、そういうものらしい。
で、自分で買って付けなければいけないんだけれど、そんな付けてくれたりいろいろメンテしてくれたり相談に乗ってくれたりする自転車屋さんを探さないとどうにもならないよな。やっぱり。
ふらっと立ち寄ったヨドバシで C++Builder6 pro を買ってしまった。元を取るくらい使えるのはいつになるだろうか。新聞によるとヨドバシ儲け過ぎなので次は他で買い物しよっと。
■[book]ク アガサ・クリスティー『動く指』
permalink:"200311.html#d13_t2"
アガサ・クリスティー『動く指』を読んだ。
モノレール文庫のやつ。何をいまさら言っておるのだと思われるでしょうが、アガサ・クリスティーの本って面白いなあ。『バートラム・ホテル』もつい最近読んだばかりなんだ。俺ミステリの読み方がよくわかってないので、どんな本を読んでも論理的に犯人を特定できたためしがなく、面白くも感じないことが多いんだけど、この本は登場人物が魅力的でもうその興味だけで読んでた。『おねがいだからこいつを犯人にせんといて』と祈りながら。
パイロットの主人公は、怪我の療養のため妹をつれて静かな田舎町におもむく。
ロンドンの喧騒から離れたそこでゆっくり怪我を癒すはずだったんだが…というような出だし。
俺は『夏への扉』とか『旅立つ船』とか『惑星カレスの魔女』とかこれとかロリコンが好きそうな話が心底好きだなあと思った。あと妹が可愛かった。と書くといささか語弊がある気がするが、恋人の代用品みたいな都合のいい『妹』萌えではなくって人間として魅力的だった。最後のプレゼントにはドキッとしたよ。
■[book]ス E・E・スミス『銀河パトロール隊』『グレー・レンズマン』
permalink:"200311.html#d13_t3"
E・E・スミス『銀河パトロール隊』『グレー・レンズマン』を読んだ。こちらも古典なんだけど初読だ。
レンズマンなのだ。いやー、面白いなあ。キムボールキニスンは飛びまわり過ぎ! レンズを受けとって以来、第一銀河と第二銀河を飛びまわってとにかく悪を壊滅しまくっている。こんなに飛び回っていたら、結局架空の人物『スター・A・スター』とほとんど変わらないくらい活躍してるんだから擬装の意味がないんじゃないか? とか思ったり。
この世界の宇宙船は無慣性航法?というのを使っていて、ようは慣性系から外れてしまうので相対性理論もクソ食らえ、時間の描写がないくらいとびきり早いため、犯罪者を追いかけてもすぐ他の星に逃げられてしまう。そんな銀河パトロール隊が平和を守っていられるのは、超精神生命体アリシア人の作った『レンズ』を持ってるレンズマンのおかげ。アリシア人はまだ未成熟な銀河文明を次の段階(精神文明?)に引き上げようとしている人々だ。その目的は謎なのだけれど…。アリシアのレンズを身につけたレンズマンはタイムラグなしで千万光年?離れた他のレンズマンと思考をやり取りできる。情報が力を制するってわけだ。いきおいこの本も情報戦が主となっている(宇宙戦争もいっぱいするんだけど)
キニスン氏は第二段階レンズマンといって精神力だけで回りの人間を瞬殺したり気づかれることもなく思考や記憶を操ったりできる、おそらくヒューマノイドでは彼一人という特殊能力があるのだが、めっさ偉いくせにちょっとした変装で敵の真っ只中に飛び込んでしまう! しかも、潜入先ではおとなしく情報収集してるかと思うとそうではなく、一山当てたり成り上がったりして、毎回毎回『○○にこの人あり』とかうたわれるくらい有名になってしまう! きっと銀河管制官キニスンの名前と顔を知っているのはパトロール隊員だけなんだろう、そう考えないといくらなんでも…
■[ndiary]topic_sort フィルタ
permalink:"200311.html#d13_t4"
技術的な情報とかは、あんまり日付にこだわらないから、トピックをアルファベットとかでソートしてくれるほうがありがたいなあ。有里さんのこの topic_sort フィルタがよさそうな感じ。
- ロロ「
- nDiaryUserWiki のリンクが切れていたので、とりあえずリンクを探します。見つけたら随時Wikiのほうもメンテさせていただくことにします」
[topic_sort.rb]
[使い方]
2003.11.14
■[xyzzy]ファイラーの Enter に他の機能を持たせる
permalink:"200311.html#d14_t1"
- ロロ「
- ファイラー上で Enter を押すと、xyzzyがそのファイルを開くんですけれど、これに拡張子実行の働きを持たせるともっといいと思うのですが」
ふむ。exeだったらEnterで実行、lzhだったらEnterでリスト表示みたいにね。やってみますか。
やり方がぜんぜんわからんので、まずファイラーのEnterに定義されてる関数を調べてみる。xyzzyフォルダ下の lisp/filer.l を開いて
(define-key filer-keymap #\RET 'filer-ok)
filer-ok だということがわかった。もしこの関数がビルトインだったらもう打つ手なしで終了だったんだけど、さいわいビルトインじゃなくて lisp/filer.l の中に定義も書いてあった。
- ロロ「
- 長い関数ですけれど、大体のところを追いかけることはできますか?」
うーん、最初の方がよくわからんのだけど、たぶんファイルがマークされてるかそうでないかを判断してるんだと思う。そんで *filer-follow-links* という変数を参照して、これが t だったらショートカットの場合に特別扱いする。ショートカットそのものじゃなくて、ショートカットの指すファイル名を取ってくる。そのあとにたぶん、ディレクトリだったら中に入る。ファイルだったら開く。
filer-ok はややこしい判定をしている関数だということがわかった。こいつを直接いじくってさらに判定を加えるのってのは大変そうなので、別関数からこの filer-ok を呼んでやるようにしようと思う。
余談だけど、ファイラーの関数ってどれも (interactive) ついてないのな。今気づいた。
- ロロ「
- 試行錯誤の末、外側の部分ができました。複数のファイルが選択されている場合は、拡張子で判断するべきではないと判断しましたので、元の(filer-ok)に処理を任せています」
(defun my-filer-expand-ok ()
(let ((file (filer-get-mark-files t)))
(cond ((cdr file) ;;複数ファイルは対象外なので、filer-okにまかせる
(filer-ok))
(t
(setq file (if (null file)
(filer-get-current-file)
(car file)))
;;ここに処理を書く
))))
判定部分はすぐに出来た。拡張子の取り方もわかってるし。ただ、実行部分には苦労した。
なんか eval とか危険っぽいことを適当にしてるんだけど、これでいいのかどうかはわからん。今のところ動いてる。
★[xyzzy]ファイラー:my-filer-expand-ok
permalink:"200311.html#d14_t2"
(in-package "editor")
;;
;; ファイラーの Enter を拡張してみよー
;;
(defvar *my-filer-special-extensions*
'(("lzh" . filer-list-archive)
("zip" . filer-list-archive)
("exe" . filer-shell-execute)))
(defun my-filer-expand-ok ()
(let ((file (filer-get-mark-files t)))
(cond ((cdr file) ;複数ファイルは対象外なので、filer-okにまかせる
(filer-ok))
(t
(setq file (if (null file)
(filer-get-current-file)
(car file)))
(let ((command 'filer-ok))
(dolist (c *my-filer-special-extensions* 'nil)
(when (string-equal (pathname-type file) (car c))
(setq command (cdr c))))
(cond
((listp command)
(if (fboundp (car command)) (eval command)))
(t
(if (fboundp command) (eval (list command))))))))))
(define-key filer-keymap #\RET 'my-filer-expand-ok)
(define-key filer-keymap #\H 'filer-ok)
(in-package "user")
- ロロ「
- *my-filer-special-extensions* という変数を定義しています。ここに特別扱いしたい拡張子と実行したい関数を、ドットで区切って並べたリストを入れておきます」
- filer-list-archive
- デフォルトでは Shift-v で動作する、圧縮ファイルの中を見るコマンド
- filer-shell-execute
- デフォルトでは Shift-x で動作する、エクスプローラ上のダブルクリックと同じ動作をするコマンド
- ロロ「
- 色々な処理を加えられるように改造してみるのもいいですね。ただ、xyzzyであまり開かないようなファイル(バイナリファイル)だけを対象にしておいたほうがいいでしょう」
■2003/11/14の単なるメモ
permalink:"200311.html#d14_t3"
- ロロ「
- このトピックは単なるメモです」
- and[or] vice versa
- 「逆もまた同様に」というような意味らしい。
- このページより。
- 現代に生きるラテン語もおもしろいな。
- “#”はポンド記号であってるらしい…
- 貨幣のポンドは“£”または“p”、重量のポンド(パウンド。パウンドケーキとかボクシングで使うアレ)は“#”を使うらしい…、数を数える時はナンバー記号でもあるらしい…だからポンド記号と書いてある訳文が間違いというわけではないらしい…習わない英単語より。なんだよーややこしいな。間違った解釈をしてたよ…
2003.11.15
■[win]環境を整理しよう
permalink:"200311.html#d15_t1"
- ロロ「
- どうして買ってきた C++Builder6 をインストールしないのですか?」
うーん、春に新しく買ったPCの方に入れたいんだけど。ゲームマシン兼DVD鑑賞マシンになってて、まだエディタとか設定できてないん。
- ロロ「
- もう冬ですよ…。古い方のPCの設定をそのまま移してからカスタマイズすればいいでしょう?」
それが、古い方のマシンも年明けごろに再インストールかけてて、ホームページ閲覧専用マシンになってて、まだPerlとかインストールできてなくって
- ロロ「
- 一生そうやってる気ですか…とりあえず、どちらのマシンでも快適に動かせる環境を手に入れましょうよ」
■[win]SelectObject()とは?
permalink:"200311.html#d15_t2"
- ロロ「
- デバイスコンテキストのお話のつづきです。前回は、なぜデバイスコンテキストオブジェクトのなかでビットマップだけ扱いがちがうのか、についてでした。なお、以降はデバイスコンテキストをDCと略します」
- ロロ「
- 他のDCオブジェクトは、まさに『ペンを選ぶ』『筆を選ぶ』ような感覚で扱えるのに対し、ビットマップだけは『メモリDC』を介してやらないといけません」
- メモリDCを作る
- メモリDCの方でビットマップを選ぶ
- BitBltなどでメモリDC→描画したいDCの方にコピーする
うーん? ここで『選ぶ』と表現してるのは、SelectObject関数を使うってことでしょ?
もし、実DCで、SelectObjectでビットマップを選ぶと、
HDC hDC = GetDC(hWnd);
SelectObject(hDC, hBitmap);
どうなる? えらいことになるのかな?
- ロロ「
- やってみないとわかりませんね」
- 実験1)デスクトップのDCを取得して、SelectObjectでビットマップを選んでみる。
- 結果 デスクトップのキャプチャ画像がコピーできた。
- SelectObjectしたビットマップ画像は無視されたみたい…
- 実験2)クライアントDCでビットマップを選んでみる。
- 結果 だめです、やっぱり無視されてます。
- コピーしないとだめなのかな…と思い、自分で自分にBitBltしてみましたが意味無し。
結局、メモリDCじゃないDCでビットマップを選んでも何も起こらないってことでしょうか? でしょうか? って言っててもオレらにわかるわけないんだからもーいーや決定『ビットマップはメモリデバイスコンテキストを使わないとダメ!』で終了!
2003.11.24
■[game]新世紀エヴァンゲリオン2
permalink:"200311.html#d24_t2"
ついでにAmazonでこれも衝動買いだが、コレアレ? ガンパレエンジン使った二作目? その辺すらわからん。(パッケージにはアルファの名前が無いし)予備知識を入れずに始めてみる。
■[win]SelectObject()とは?
permalink:"200311.html#d24_t3"
- ロロ「
- デバイスコンテキストのお話のつづきです。前回は、なぜデバイスコンテキストオブジェクトのなかでビットマップだけ扱いがちがうのか、についてでした。なお、以降はデバイスコンテキストをDCと略します」
- ロロ「
- 他のDCオブジェクトは、まさに『ペンを選ぶ』『筆を選ぶ』ような感覚で扱えるのに対し、ビットマップだけは『メモリDC』を介してやらないといけません」
- メモリDCを作る
- メモリDCの方でビットマップを選ぶ
- BitBltなどでメモリDC→描画したいDCの方にコピーする
うーん? ここで『選ぶ』と表現してるのは、SelectObject関数を使うってことでしょ?
もし、実DCで、SelectObjectでビットマップを選ぶと、
HDC hDC = GetDC(hWnd);
SelectObject(hDC, hBitmap);
どうなる? えらいことになるのかな?
- ロロ「
- やってみないとわかりませんね」
- 実験1)デスクトップのDCを取得して、SelectObjectでビットマップを選んでみる。
- 結果 デスクトップのキャプチャ画像がコピーできた。
- SelectObjectしたビットマップ画像は無視されたみたい…
- 実験2)クライアントDCでビットマップを選んでみる。
- 結果 だめです、やっぱり無視されてます。
- コピーしないとだめなのかな…と思い、自分で自分にBitBltしてみましたが意味無し。
結局、メモリDCじゃないDCでビットマップを選んでも何も起こらないってことでしょうか? でしょうか? って言っててもオレらにわかるわけないんだからもーいーや決定『ビットマップはメモリデバイスコンテキストを使わないとダメ!』で終了!