次のProjectNote Index


この掲示板は私の開発日記です。
まぁ、それ以外に毎日の中で思いついたことも書き込みます。
この日記の人物の名前はハンドルネーム等で書かれています。


[379] 点と線による変な生き物(Java) Casper 2002年02月07日(木) 15時16分
 1年くらい前、「100%Javaの生き物」という紹介でSodaplayというサイトを知りました。そこにはJavaを使ったあるオブジェがありました。
 どうやら点と伸び縮みする線を使って形を作ると生き物みたいに見えるらしい。
 伸び縮みにはサインカーブで定義されるジェネレーターから導かれ、位相差を変えたりできるみたいです。(位相が違えば、違うタイミングで伸びる)

 半年前はCONSTRUCTORが消えてなくなったように見えましたが、今確認してみると復活&リニューアルしていました。コンストラクターがもっと使いやすくなっています。でも動く生き物を作るのは、技術というか勘というか、よくわかりません。

 このぺーじはコンストラクター以外にも、各所に同じ生成エンジンを使ったウインドウがあったり、メニューが回っていたり、けっこうかっこいいページです。

http://www.sodaplay.com/


[378] まき爪 Casper 2002年02月07日(木) 01時58分
 まき爪は最悪。
 爪が内側に曲がって生えて、痛くなります。
 ひどいときは手術で治すらしい。


[377] ゼリーを作った Casper 2002年02月07日(木) 01時36分
 今日は研究室でゼリーを作って食べた。
 ゼリーは市販の「イチゴゼリーの素」を使って、そのまま固めた。
 多めに8つに分けたら、1つ分が小さかった。固まったのを見ると結構硬かったので、薄めてもっと量を多くすれば良かった。龍難はこれで濃かったそうだ。

 イチゴ味のゼリーだったが、ゼラチンだけでも売っている。
 これは量が多く安いが、自分で味をつけなければならない。簡単にいくと好きなジュースなりを固めればよいのだ。分量は始めは感性のおもむくままに、徐々に研究の結果を積み重ね、マスターすればよい。
 箱の注意書きにもあるが、タンパク質分解作用のある生パイナップル等は、混ぜても固まらないので注意が必要だ。缶詰なら大丈夫だ。

 予想が外れたためゼリーが余った。蓋をしていないので早めに食べた方が良い。
 この段階で2つ残っている。1つは教官用として、後は早い者勝ち。
 これを読んでいて、一番先に来た者が食べればよかろう。


[376] Delphi5の設定 その2 Casper 2002年02月06日(水) 14時52分
 研究室のPCで再びOSを入れなおしました。
 そして(前の設定で)Delphi5の設定をしましたがうまく動きません。

 調べてみると、フォルダが微妙に変わっているので、パスが正しく設定されていないようです。ライブラリパスが間違っているみたいなので、これだけを書き換えるだけです。前の設定ではDelphiXとD^4がうまくコンパイルできずに、「'DirectX'が見つかりません」とか言ってくるはずです。
 (何も設定していない人は最初から設定しましょう)

 複数行わたる設定は[ ; ]で区切ります。本当は一行の長い文字列で、一番上のエディットボックスに書き込みます。もう1つの設定方法として、ダイアログによって個別に設定できます。そのときは[ ; ]はいりません。

[ツール]-[環境オプション]-[ライブラリ]
・ライブラリパス
$(DELPHI)\Lib\Delphi2;
$(DELPHI)\dddd\lib\extlib;
$(DELPHI)\dddd\lib\dxheader;
$(DELPHI)\dddd\lib;
$(DELPHI)\DelphiX2000_0717J\Source;

$(DELPHI)\Lib;
$(DELPHI)\Bin;
$(DELPHI)\Imports;
$(DELPHI)\Projects\Bpl

・BPL出力ディレクトリー
$(DELPHI)\Projects\Bpl

・DCP出力ディレクトリー
$(DELPHI)\Projects\Bpl

・ブラウザ検索パス
$(DELPHI)\source\vcl;
$(DELPHI)\source\rtl\Sys;
$(DELPHI)\source\rtl\Win;
$(DELPHI)\source\Internet

※ $(DELPHI) はDelphiがあるフォルダーで[ C:\ProgramFiles\Borland\Delphi5 ]のことです。
  環境変数でしょうか。


[375] 情報ページ Casper 2002年02月05日(火) 17時28分
まるも製作所
  http://e3lt11.ocv.ne.jp/
データの関数近似
  http://www.ele.kochi-tech.ac.jp/inoue/work2001/2001ban/pdf/detakinji.pdf
肉球クラブ
  http://nikq.nothing.sh/
真・コンピュータ用語辞典
  http://www.geocities.co.jp/SiliconValley/5634/
たくま日記
  http://www.nn.iij4u.or.jp/~takuma/diary/
BBSnote
  http://wondercatstudio.com/manual/


[374] 親指シフト暗号 Casper 2002年02月05日(火) 16時50分
 コンピュータを使っていると、よく日本語入力をオフにしたまま文字を打ってしまって、変なアルファベットが表示されてしまうことがあります。
 これを暗号として使うのはよく考えられることです。

 このように入力と出力が変われば暗号として使えます。
 そこで「親指シフト暗号」
 かなキーによる暗号はキーボードに書かれているので、すぐにばれてしまいます。
 しかし親指シフト配列はごく少数しか使っていないので、かなりわかりにくいと思います。
 まぁ暗号化技法としては「シーザー暗号」みたいに古典的というか、使えない部類だと思います。

 「親指シフト暗号」で入力するなら「親指シフトエミュレーター」でいつものように入力すればいいわけですが、ちょっと欠点があって「*/:」のキーが[BS](バックスペース)に割り当てられているので、入力が消えてしまいます。
 正式なのNICOLA配列なら大丈夫だと思います。(親指シフトキーボード)


[373] Googleのニセ?! Casper 2002年02月05日(火) 14時12分
 Goole.com という検索ページを発見。
 発見者は「龍難」です。
 Google の[g]が足りずに、偶然見つかりました。
 これって「グール」って読むのでしょうか。「グーレ」?

http://www.goole.com/


[372] 国産ロケットH-IIA打ち上げ直前!元祖から生放送まで Casper 2002年02月04日(月) 10時29分
 強風のために延期されていた国産ロケットH-IIAの打ち上げが、2月4日午前11時28分に行われるそうです。
 NASDAのサイトでは、ライブカメラやカウントダウンクロックなども登場している。ミラーサイトも3つ用意され、まさに準備万端だ。

 ・NASDA H-IIAロケット 試験機2号機「インターネットライブ中継」
    http://h2a.nasda.go.jp/liftoff/index_j.html
 ・Yahoo! 特集H2Aロケット打ち上げ「ロケットの魅力と疑問に迫る」
    http://headlines.yahoo.co.jp/specialfeature/h2a/

 2002年2月4日 10時38分
 打ち上げ時刻変更
  警戒水域内に船が進入したため、
  打ち上げ時刻(X時刻)を11時28分から11時45分に変更します。

 2002年2月4日 10時45分
 X-60分ターミナルカウントダウン再開
  打ち上げ時刻60分前の最終カウントダウン作業を再開しました。

 2002年2月4日 11時45分
  リフトオフ


[371] 卒業論文の章立て Casper 2002年02月04日(月) 10時25分
第一章 多関節モデルによる立体的な馬の表現
 1-1  多関節モデルとは
 1-2  行列式(マトリックス)によるベクトル演算
 1-2-1 姿勢行列の定義
 1-2-2 姿勢を任意軸回りで回転させる
 1-3  馬の関節構造
 1-3-1 多関節モデルの実装
 1-4  モデルを動かすモーションの定義
 1-4-1 モーションメーカー
 1-4-2 モーションの変更
 1-4-3 ラグランジュ補間法によるモーションの再生
 1-4-4 任意の時刻での姿勢をモーションから求める
 1-5  モーションとイベント
 1-5-1 イベントから命令文を切り出す
 1-5-2 効果音

第二章 ネットワーク
 2-1  サーバクライアントシステムによるマルチディスプレイ
 2-2  DXPlayによるデータ通信
 2-2-1 DXPlayの使い方
 2-3  メッセージの利用
 2-3-1 メッセージの定義
 2-3-2 メッセージによるフレームの状態の更新
 2-3-3 クライアントへのモーション変更の指示
 2-3-4 サーバ・クライアント間、モジュール間のシステムメッセージ
 2-3-5 サーバ・クライアント間での時間の共通化

 いま作っているのはこのぐらいです。
 モデルのあたりが、G元部長のとかぶっているかもしれないということで、こちらはモーションに重点をおいて作ろうと思います。でも多関節モデルがないとモーションの説明が出来ないので、モデルについてもちょっと説明しておいて、重なっている文章を消してしまうか、融合させましょう。
 ネットワークは僕の独壇場で、ネットワーク(DirectPlay関係)やマルチディスプレイについて書き綴ろうと思います。


[370] ひとり暮らしの準備 Casper 2002年02月04日(月) 10時15分
 春から新入社員として、東京でひとり暮らしです。
 すでに住居は決定で、[/h@\hb@-yg@]にアパート2Fで6畳一間、家賃は\55,000。

 あとは何を持っていくか、向こうで買うのか…。
 いままで親がやってくれていた、家事全般を習得しないといけませんねぇ。
 飯の作り方。ちゃんと栄養を考えて、安く作っていかないといけません。
 洗濯の仕方。服の種類を調べて、洗濯機に突っ込む。アイロンがけを忘れずに。
 ETCでもろもろ…。
 パソコンどうしましょ。(新品がいいなぁ、1G…)


[369] 活動報告 Casper 2002年02月04日(月) 01時34分
 そろそろ「rhoes@」と「2.\zf@r:Zs」が食べごろです。
 あと数日中には熟すでしょう。
(暗号解除)
 そろそろ「スクライド」と「フルーツバスケット」が全て集まりそうです。
 あと数日中にはコンプリートできるでしょう。


[368] 歯が欠けた? Casper 2002年02月04日(月) 01時30分
 どうやら歯が欠けたみたいです。

 別に驚くほどでもなく、欠けたのはほんの一部、端っこだけです。
 ちょっと硬いものを噛んでいたら、
 「バキ」
 とか音がして、「(硬いものが)壊れたかな」と思っていたら、歯が欠けていました。

 どうなんでしょうね、歯が弱くなっているのかな。
 欠けたところから歯医者で削るか、詰め物するべきでしょうか。


[367] ほどほどに…その2 Casper 2002年02月04日(月) 01時26分
 弟が、また実験レポートを溜めているみたいです。
 「そういえばレポートしなきゃ…忘れとった」

 …ほどほどにね。


[366] 展示会 Casper 2002年02月04日(月) 01時24分
 展示会というのは要するに「~セール」ことです。

 宝石等の業者さんを呼んで特売を行います。普通はこちらが仕入れて売っていますが、業者の方にきてもらって、直接売ります。まぁこれで少し安くなるわけです。こちらの儲けは売上の何パーセントかです。

 展示会では色々と催しものやプレゼントがあります。昔はサイコロゲームや宝石つかみ取り、ダーツなどをしていました。今は冷凍タラバガニをプレゼントしています。展示会は何日間か続けて行われるので、その間冷凍タラバガニを保管するために、知り合いで近くの氷屋に頼んでいます。
 最近は需要が減っていると思うけど、漁港が近くにあって、トラックで運ぶときに氷を必要とします。それで氷を作って保管する冷蔵庫をちょっと貸してもらうわけです。
 家には10箱くらい持ってきておいて、無くなったら取りに行かねばなりません。カートに乗せてゴロゴロ~…。

 展示会の会場はと言うと、シーサイドホテルを利用したりしますが、大抵は家の店を使います。パネルで全体を囲ってみたり…今回は布で覆ってみました。

 こういった展示会は6月とかボーナスとか、そういうなんだか売れそうな時期と、今みたいに「たな卸し」のときにやります。はっきり言って在庫を数えて調べていくのは大変です。金を数えた方が楽です。


[365] ほどほどに… Casper 2002年02月02日(土) 23時02分
 この掲示板をスタイルシートを使って改造しました。
 そしてNetscape4.7で見てみると、変な四角がフォームの横に出来ていました。
 他にも投稿画面が崩れているし、管理画面ではテキストが改行されていませんでした。

 調子に乗って改造しまくっていたら、NN6専用になってしまっていました。
 NN4.7はかなり気に入っていて、4.xでしか見れないページもあるのに掲示板だけが先行どうかと思います。
 とりあえず元に戻し、原因を解明して、両方に対応させたいと思います。

 どうやらスタイルシートを中途半端に対応しているから、変に表示されているようです。この設定はフォームの枠の色・形状に関する設定で、カーソルが上に来ているときに自動的にフォーカスが移って、枠がブルーになるというものです。
 標準でもスタイルシートによって枠を変えているので変になるみたいです。

 ちなみにIE5とNN6では意図した通りに動作します。
 (IEではフォーカスが移ったときに、カーソルが文章の先頭移動してしまいます)

 結局、スタイルシートから悪影響のあったボーダーの設定を消しました。
 NN6の時はカーソルが重なったら色が変わり、NN4では変化無し。
 ということで問題解決。


[364] ICOの注目の場所 Casper 2002年02月01日(金) 16時35分
 ICOは女の子を連れまわし、角材を振り回すゲーム…。(女の子は姫なのでしょうか?)

 ぜんぜんいかがわしいわけではありませんが、簡単にいうとそうなります。
 で、カメラが女の子を間近で捉える場所というのがあるらしいのです。

 女の子は1つの売りポイントなので、キレイに作ってあります。
 ゲームの画面は大体において、上からの見下ろしタイプなど、けっこう離れた視点となっています。まぁアクション・ハズル的な要素があるのでこの視点が一番でしょう。
 だからキャラクタを細かく見れないのよね。一人称視点があってもいいと思います。詳しく調べられそうだし。

     給水塔の前のセーブポイントからすぐのところ。レールの上のやぐらを動かして橋をつなげると影が出てくる。橋の手前に影の穴ができますが、その奥。格子がじゃまでお姫様の顔が見にくいですが、ちょっと動けば大丈夫。

     風車のステージです。姫を風車の正面、向かって右より立たせ、イコは風車によじ登り、横這い横這いで正面にある扉のようなものの横まで来ます。その時姫が画面に映っていれば、R2ボタンで大迫力のアップが見れます。

     庭の下水路のところ。そんなにいい角度でもアップでもないんですが、ヒントを出してくれるときに口が動きます。

     場所は、「古い橋」を渡って入った部屋。箱を動かして階段をつくるところです。その出て来た階段の中腹より下段辺りに少女を置き、イコは「古い橋」方面の入り口に立ちます。そこでカメラワーク。


[363] 現在のパネキット Casper 2002年02月01日(金) 16時24分
 発売後、ゲームの熱はどんどん冷めていってしまうものですが、パネキットはまだまだ熱いと思います。

 パネキットで重要なのは作ったモデルを自慢し、技術を交換することです。
 このとき重要なのがネットの画像掲示板。これによってグローバルな世界に自分の作品を置くことが出来るようになりました。
 パネキットというゲームは好きな人には最高のゲームで、いまでもサイトでは数多くのモデルが掲載されています。まじで。そろそろ技術的にもいっぱいかなと、なっていたのですが、「オーシャン・フロート・システム」「上半角ローター」「螺旋ドリル」などの新技術が開発(発見)され、まだまだ衰えない勢いです。
 このサイトでは作品をデータベースに保管し、掲示板から流れていかないようになりました。

 メモリーカードから設計図を吸い出して、そのまま受け渡したり、設計図を画像化したりするツールもそろっています。まぁ持っていない人は、テンプレートを利用して書く方法があります。(ぼくはテンプレートを使っています)

The Rosegarden
  http://www.digi-com.co.jp/steinrose/


[362] マラソン大会 Casper 2002年02月01日(金) 15時48分
 この学校では2月1日にマラソン大会が行われます。
 僕は5年生で、参加しなくてもよくなりました。

 1年生の時のコースは狩尾峠を越えるもので、かなり大変だったと覚えています。
 今は橋を渡って佐島をまわるコースになっています。まぁこれでも結構大変なのですが…。

 今年、ぷにちゃは男子の部114位でした。
 去年は女子先行スタートでしたが、今年は男子先行の新しい試みです。
 5分差でしたが、結構同タイミングでゴールでした。
 もちろん女子が少し早くゴールしたり、だらだらと歩いていたりしますが…。

 このように歩かれると困るのは、監視している教官方です。
 学生のほうは「いい散歩日和ですね」と歩いていたとき、
 教官は吹きすさぶ風の中、通過する学生をカウントしていました。
 動かないと晴れていても寒いでしょう。


[361] 文字を表示しない Casper 2002年02月01日(金) 12時12分
 背景色と同じ色に文字色を設定することで、見えなくすることで出来ます。
 まぁその行があいているのでバレバレですが…。
 とりあえずタグを書いておきます。

<FONT COLOR="#5F6761"></FONT>


[360] 糞をつまむのは誰か Casper 2002年02月01日(金) 09時13分
 つまり、「誰もが嫌がることをやらされる」ということです。

 考えるに、[2d@x0]から僕の親に「祝賀会で挨拶してくれ」といわれた時に、「(僕の親に)頼んでも無理っぽいよ」と断わっておくべきでした。そのときに「♂澤」から僕へと交渉が移ってしまったわけです。
 結局、親と[fje]教官の間で交渉することになり、父は議会だし、母はあがり症だからと引き受けてくれません。僕がスケジュールの都合はつく母を説得するのも無理っぽいので、他の人に頼むしかありません。

 だれか引き受けてください。
 友達にこの話を持ちかけたところ「うちの親はだめだから」と簡単にあしらわれました。これが普通の反応なのか。親に電話をして確認をするなどしませんでした。
 [fje]教官にその旨を伝えて、この件から抜けたと思います。
 結局だれが保護者代表のあいさつをするのかな。


[359] CGIエラーってわかりにくい Casper 2002年01月30日(水) 23時04分
 ついさっきまで構文エラーでCGIが止まっていました。
 この掲示板はHTMLを生成するタイプなので、更新や検索が止まるだけです。
 学校ではFTPでつつけないのが痛いですね。
 CGIにエラーがあっても、ページには「構文エラーがあるかも」といった表示しかありません。オンラインで確認するのに「pcheck.cgi」というのがあるらしいのですが、この掲示板に対してはうまく動きませんでした。掲示板CGIは引数でモードを切り替えて、インデックスページを表示したり投稿したりしているので、「そのせいかな」とも思いました。

 だれかCGIの構文エラーを発見するアプリを知りませんか。
 (自前でサーバーを立てる?)

・WEBから文法チェックを行いたい。
   http://www.kent-web.com/support/faq/faq1.html#9
  改造:http://homepage1.nifty.com/typhoon/at-cgi/pcheck.html


 他のチェック用CGIを見つけてきました。
 なにやら「トクトク」用に特化されているみたいですが、Parlのパスを書き換えてとりあえず動作させました。
 調べたいディレクトリーに仕込んでおくと、CGIファイルを探してレポートを表示してくれるみたいです。
 すでにエラーは解消されたので、役立つのかどうか調べられませんが、サーバーのデータ(環境変数など)がわかるのでいいのかな?
 ・どうやらベースとなったプログラムが存在するみたいです。
 ・「700を推奨する」とうるさい。
 ・トクトクじゃないのに「#!/usr/local/bin/per」では動かないとぬかす。
 ・いちいち報告してきては、()で~の状態なら大丈夫と言う。
 ちょっとうるさ目なCGIです。

チェック用パス
http://isweb24.infoseek.co.jp/computer/js-labo/cgi-bin/diary/checker.cgi
http://isweb24.infoseek.co.jp/computer/js-labo/cgi-bin/joyful/checker.cgi
http://isweb24.infoseek.co.jp/computer/js-labo/cgi-bin/picbbs/checker.cgi
http://isweb24.infoseek.co.jp/computer/js-labo/cgi-bin/sunbbs/checker.cgi
http://isweb24.infoseek.co.jp/computer/js-labo/cgi-bin/wforum/checker.cgi


[358] スタイルシートで改造 Casper 2002年01月29日(火) 02時44分
 この掲示板の反応をスタイルシートでちょこっと変えました。
 入力フォームにカーソルを持っていくとフォーカスが移動したり、色が変わったりします。まぁ便利かどうかは使い込んでからです。
 アイディアは「PANEKIT」の「設計図が載せられる掲示板」からパクってきました。色とかそのままなので、しっくり来ないですね。
 コピペとはいえ「中改造」なので、このCGIが動くかどうか心配です。


[357] bk1でのお買い物(まとめてお得) Casper 2002年01月28日(月) 17時41分
 bk1というのはオンラインブックストアで、パソコンで本が買えるところです。「ブックスケジューラ」(新刊を探すアプリ)が対応していたりするので、本の予約はここを使っています。
 基本的に通販なので商品が送られてくるため「送料」がかかります。そして本を買ったり、予約すると、そのたびごとに送料がかかります。つまりまとめて買うと送料が1回ですんでお得ということです。

 そんなわけで一通り注文した後で、また見つけてしまったら送料がかかってしまうのです。予約でさえ送料先払いなので、この悔しさはひとしおです。
 で、まだ残っている本を記録しておいて、まとめて買ったり予約したりしようと思います。

・オルフィーナ 第9巻  (富士見)  価格:\960
 発行年月:2002.2.1  著者:天王寺きつね

・LATEX2e美文書作成入門 改訂版  価格:\2,980
  発行年月:2000.12   出版:技術評論社

http://www.bk1.co.jp/


[356] 親指シフト Casper 2002年01月28日(月) 10時34分
 覚えるとかな入力より速いかもしれない「親指シフト」ですが、標準で付いているわけではないので、専用キーボードかエミュレーターを使う必要があります。
 キーボードがほしい人は店で探すとして、そのまえにエミュレーターを試してみることをお勧めします。ちなみにUSB親指シフトキーボード(コンパクトを探してみると15000円くらいしていました。マスターしてから買いましょうね。
 現在フリーウェアの「親指ひゅんQ」が使われています。もう1つありますがシェアウェアなので…。
 エミュレーターの場合では標準キーボードを親指シフトで使うので、キーボードによっては入力しにくいといったことがあるみたいです。

・ちょっと使ってみての感想
 親指シフトを覚えるために練習用テキストを入力しています。
 まだレベル6「右シフト」ですが、エミュレータではちょっと難しいことがわかりました。[無変換]と[変換]のキーが親指シフトに割り当てられているけど、押したままの連続押しができません。「親指リピート」機能があるはずですが、どうなんでしょう。またキーと同時押しをしないと、本来の機能が出てきて、勝手に文字が変換されてしまいます。このあたりが専用キーボードの強みになるのかな。

親指ひゅんQ -擬似NICOLA化ソフトウェア-
  Vector: http://www.vector.co.jp/soft/win95/util/se026770.html

USB親指シフトキーボード
  富士通[図・紹介] http://www.fcl.fujitsu.com/whats_new/nr011106_j.html
  システム青山[購入] http://www.saccess.co.jp/


[355] bk1納品書 Casper 2002年01月27日(日) 20時42分
帝王への道     390 + 19 409
幸せインベーダー  552 + 27 579
送料         480 /  2 240
合計              1228


[354] アイディアの捻出 Casper 2002年01月21日(月) 18時19分
属性
 ・体験型
 ・データつかって補助
 ・ネットワークで団体の…

アイディアの発展を考える
 ロッククライミング、登山
  ・体験型
  ・データからルートを出す
 スカイダイビング
  ・体験的
 エアロビ
  ・振り付けを作る
 空手
  ・型
  ・柔道
 フードファイト
 ボブスレー
 ブーメラン、フリスビー
 アスレチックワールド
 射撃

Next...
 水曜日
  ・アイディアの推敲
  ・新たなアイディアを…


[353] サザエさんの家系図 Casper 2002年01月21日(月) 15時42分
 これは人工知能の課題です。サザエさん家の家計図とやらを「Prolog」で定義しました。
 とりあえずすべての問題に対しての回答です。別の定義方法、表現方法もあるでしょうが実質的に同じものになるでしょう。

定義
 ・man(X).
 ・female(X).
 ・parent(X,Y).
  ・child(X,Y).
  ・father(X,Y).
  ・mother(X,Y).
  ・grandfather(X,Y).
  ・grandmother(X,Y).
  ・brother(X,Y).
  ・sister(X,Y).
  ・cousin(X,Y).

man(namihei_father).
female(namihei_mother).
man(namihei).
female(fune).
female(sazae).
man(katsuo).
female(wakame).
man(masuo).
man(tarao).
female(namihei_sister).
man(namihei_sister_otto).
man(norisuke).
female(taiko).
man(ikura).

parent(namihei,namihei_father).
parent(namihei,namihei_mother).
parent(namihei_sister,namihei_father).
parent(namihei_sister,namihei_mother).
parent(sazae,namihei).
parent(sazae,fune).
parent(katsuo,namihei).
parent(katsuo,fune).
parent(wakame,namihei).
parent(wakame,fune).
parent(tarao,sazae).
parent(tarao,masuo).
parent(norisuke,namihei_sister).
parent(norisuke,namihei_sister_otto).
parent(ikura,norisuke).
parent(ikura,taiko).

child(X,Y):-parent(Y,X).
father(X,Y):-parent(X,Y),man(Y).
mother(X,Y):-parent(X,Y),female(Y).
grandfather(X,Y):-parent(X,Z),father(Z,Y).
grandmother(X,Y):-parent(X,Z),mother(Z,Y).
brother(X,Y):-mother(X,Z),mother(Y,Z),man(Y),X\==Y.
sister(X,Y):-mother(X,Z),mother(Y,Z),female(Y),X\==Y.
cousin(X,Y):-parent(X,Z),mother(Z,W),mother(S,W),parent(Y,S),Z\==S.


[352] 人間工学「人は幾つまで覚えられるか」 Casper 2002年01月19日(土) 13時27分
 人間工学の第4番目の課題(?)の「あなたは幾つまで覚えられるか」(チャンクの計測)です。
 要はボタンが光るので、その順番を覚えて、その通りに押していく「オモチャ」なのです。
 成功するたびに覚える数が増えていきます。


#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "X11/Xlib.h"
#include "X11/Xutil.h"
#include "sys/time.h"
#include "unistd.h"

#define ColorMax 0xFFFF
#define EX_WAIT  0
#define EX_NOWAIT 1
#define __EX_LISTENING_EVENTS ( ExposureMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | KeyPressMask )
#define WinWidth 300
#define WinHeight 300
#define M_Stop 0
#define M_Order 1
#define M_Input 2


typedef struct{
 int x;
 int y;
}Point;

typedef struct{
 int top;
 int left;
 int bottom;
 int right;
}Rect;

Display *disp;
Window Root, Base, End, Start, Timer;
Pixmap pix;
XEvent event;
Colormap cmap;
XColor color;
GC gc;
XGCValues xgcv;
int scrn;
unsigned int depth, black, white;
char str[100];

double STime, NTime, DTime;
double tmp;
int mode;
char OrderList[100];
int OrderLength = 100;
int OrderCount = 4;
int OrderIndex = 0;
int OrderView = 0;
Rect RectA, RectB, RectC, RectD;

void initialize(void);
void OrderReset(void);
void Draw(void);
void ButtonPush(char Input);
void Reflesh(void);


long GetSec(long Sec);
double GetMSec(double DTime);
int Random(int Renge);


int Length(char *s);
long GetColorPixel(int c1, int c2, int c3);
int EXCheckEvent( int wait, XEvent *ev );
double RADtoDEG(double RAD);
double DEGtoRAD(double DEG);
double RightDeg(double DEG);
double ExMod(double Value, double Renge);
int Round(double x);
Point NewPoint(int x, int y);
Rect NewRect(int top, int left, int bottom, int right);
Rect WHRect(int x, int y, int w, int h);
int PointInRect(Point P, Rect R);
int RectInRect(Rect R1, Rect R2);
int OverlapRect(Rect R1, Rect R2);


void initialize(void)
{
 disp = XOpenDisplay("");
 if (disp == NULL) exit(1);

 scrn = XDefaultScreen(disp);
 depth = XDefaultDepth(disp,scrn);
 Root = XDefaultRootWindow(disp);
 cmap = XDefaultColormap(disp,scrn);
 pix  = XCreatePixmap(disp, Root, WinWidth, WinHeight, depth);

 black = XBlackPixel(disp,scrn);
 white = XWhitePixel(disp,scrn);
 Base = XCreateSimpleWindow(disp,Root, 0, 0, WinWidth, WinHeight, 2, black, white);
 gc  = XCreateGC(disp,Base,0,0);
 XSetForeground(disp,gc,black);
 XSetBackground(disp,gc,white);
 XFillRectangle(disp, pix, gc, 0,0, WinWidth,WinHeight);

 End  = XCreateSimpleWindow(disp,Base, 90, 2, 30, 15, 2, black,white);
 Start = XCreateSimpleWindow(disp,Base, 10, 2, 40, 15, 2, black,white);
 Timer = XCreateSimpleWindow(disp,Base, 10, 280, 250, 15, 2, black,white);

 XSelectInput(disp, Base, ExposureMask | ButtonPressMask);
 XSelectInput(disp, End,  ExposureMask | ButtonPressMask);
 XSelectInput(disp, Start, ExposureMask | ButtonPressMask);
 XSelectInput(disp, Timer, ExposureMask);

 XMapRaised(disp, Base);
 XMapRaised(disp, End);
 XMapRaised(disp, Start);
 /* XMapRaised(disp, Timer); */

 RectA = WHRect( 27, 27, 120, 120);
 RectB = WHRect(155, 27, 120, 120);
 RectC = WHRect( 27, 155, 120, 120);
 RectD = WHRect(155, 155, 120, 120);
}

int main(int argc, char *argv[])
{
 int done = 0;
 int i;
 Point P;
 char Input;

 STime = GetMSec(0);
 NTime = STime;
 DTime = 0;
 srand(GetSec(0));
 initialize();
 mode = M_Stop;

 while (!done){
  if (mode == M_Stop){
   switch (EXCheckEvent(EX_NOWAIT, &event)){
   case Expose:
    Draw();
    break;
   case ButtonPress:
    if (event.xbutton.window == End){
     /* Exit; */
     done = 1;
     break;
    } else if (event.xbutton.window == Start){
     /* OrderStart; */
     OrderCount = 4;
     OrderReset();
     mode = M_Order;
     STime = GetMSec(0);
     OrderIndex = 0;
     OrderView = 0;
     ButtonPush('X');
     ButtonPush('X');
     Draw();
    }
    break;
   }
  } else if (mode == M_Order){
   switch (EXCheckEvent(EX_NOWAIT, &event)){
   case Expose:
    Draw();
    break;
   case ButtonPress:
    if (event.xbutton.window == End){
     /* Exit; */
     done = 1;
    } else if (event.xbutton.window == Start){
     /* Stop; */
     mode = M_Stop;
     STime = GetMSec(0);
     ButtonPush('X');
     ButtonPush('X');
     Draw();
    }
    break;
   }
   if ((DTime-1 > OrderView) && (OrderCount > OrderView)){
    /* OrderView; */
    ButtonPush(OrderList[OrderView]);
    OrderView++;
   } else if (DTime-1 > OrderView-0.2){
    /* Flush */
    Draw();
   }
   if (DTime-1 >= OrderCount){
    /* InputStart; */
    OrderIndex = 0;
    mode = M_Input;
    STime = GetMSec(0);
    ButtonPush('X');
    Draw();
   }
  } else if (mode == M_Input){
   switch (EXCheckEvent(EX_NOWAIT, &event)){
   case Expose:
    Draw();
    break;
   case ButtonPress:
    if (event.xbutton.window == End){
     /* Exit; */
     done = 1;
    } else if (event.xbutton.window == Start){
     /* Stop; */
     mode = M_Stop;
     STime = GetMSec(0);
     ButtonPush('X');
     ButtonPush('X');
     Draw();
    } else if (event.xbutton.window == Base){
     /* Input; */
     Input = '0';
     P = NewPoint(event.xbutton.x, event.xbutton.y);
     if (PointInRect(P, RectA) == True){
      Input = 'A';
     } else if (PointInRect(P, RectB) == True){
      Input = 'B';
     } else if (PointInRect(P, RectC) == True){
      Input = 'C';
     } else if (PointInRect(P, RectD) == True){
      Input = 'D';
     }
     if (Input == OrderList[OrderIndex]){
      /* Nexr; */
      OrderIndex++;
      ButtonPush(Input);
     } else {
      /* Stop; */
      mode = M_Stop;
      STime = GetMSec(0);
      Draw();
      ButtonPush('X');
      Draw();
     }
    }
    break;
   }
   if (OrderIndex >= OrderCount){
    /* OrderNext; */
    OrderCount++;
    if (OrderCount > OrderLength){
     OrderCount = OrderLength;
    }
    mode = M_Order;
    STime = GetMSec(0);
    OrderIndex = 0;
    OrderView = 0;
    ButtonPush('X');
    Draw();
   }
  }
  NTime = GetMSec(0);
  DTime = GetMSec(STime);
  /*
  XSetForeground(disp, gc, black);
  sprintf(str,"%d:%lf",OrderIndex,DTime);
  XDrawImageString(disp, Timer, gc, 0,12, str,Length(str));
  */

 }
}

void OrderReset(void)
{
 int i;

 for (i = 0; OrderLength > i; i++){
  OrderList[i] = 'A'+Random(4);
 }
}

void Draw()
{
 ButtonPush('0');
}
void ButtonPush(char Input)
{
 XSetForeground(disp,gc,black);
  sprintf(str,"Exit"); XDrawImageString(disp, End, gc, 5, 12, str,Length(str));
 if (mode == M_Stop){
  sprintf(str,"Start"); XDrawImageString(disp, Start, gc, 5, 12, str,Length(str));
 } else {
  sprintf(str,"Stop "); XDrawImageString(disp, Start, gc, 5, 12, str,Length(str));
 }
 XFillRectangle(disp, pix, gc, 0, 0, WinWidth, WinHeight);
 
 XSetForeground(disp,gc, GetColorPixel(0x8000, 0x0000, 0x8000));
 XFillArc(disp, pix, gc, 0, 0, WinWidth, WinHeight, 0*64, 360*64);
 
 if (Input == 'A' || Input == 'X'){
  XSetForeground(disp,gc, white);
 } else {
  XSetForeground(disp,gc, GetColorPixel(0xF000, 0xF000, 0x0000));
 }
 XFillArc(disp, pix, gc, 25, 25, WinWidth-50, WinHeight-50, 90*64, 90*64);
 
 if (Input == 'B' || Input == 'X'){
  XSetForeground(disp,gc, white);
 } else {
  XSetForeground(disp,gc, GetColorPixel(0xF000, 0x0000, 0x0000));
 }
 XFillArc(disp, pix, gc, 25, 25, WinWidth-50, WinHeight-50, 0*64, 90*64);
 
 if (Input == 'C' || Input == 'X'){
  XSetForeground(disp,gc, white);
 } else {
  XSetForeground(disp,gc, GetColorPixel(0x0000, 0xF000, 0x0000));
 }
 XFillArc(disp, pix, gc, 25, 25, WinWidth-50, WinHeight-50, 180*64, 90*64);
 
 if (Input == 'D' || Input == 'X'){
  XSetForeground(disp,gc, white);
 } else {
  XSetForeground(disp,gc, GetColorPixel(0x0000, 0x0000, 0xF000));
 }
 XFillArc(disp, pix, gc, 25, 25, WinWidth-50, WinHeight-50, 270*64, 90*64);
 
 XSetForeground(disp,gc, GetColorPixel(0x8000, 0x0000, 0x8000));
 XFillRectangle(disp, pix, gc, 0, Round(WinHeight/2-3), WinWidth, 6);
 XFillRectangle(disp, pix, gc, Round(WinWidth/2-3), 0, 6, WinHeight);
 
 Reflesh();
}

void Reflesh(void)
{
 XCopyArea(disp, pix, Base, gc, 0,0, WinWidth,WinHeight, 0,0);
 XFlush(disp);
 /* XSync(disp); */
}

long GetSec(long Sec)
{
 struct timeval tv;
 struct timezone tz;
 
 gettimeofday(&tv, &tz);
 return(tv.tv_sec - Sec);
}

double GetMSec(double DTime)
{
 struct timeval tv;
 struct timezone tz;
 
 gettimeofday(&tv, &tz);
 return(tv.tv_sec+(tv.tv_usec * 0.000001) - DTime);
}

int Random(int Renge)
{
 return(rand() % Renge);
}

/*--------------------------------------------------------------*/

int Length(char *s)
{
 int i=0;
 while (s[i] != '\0'){
  i++;
 }
 return(i);
}

long GetColorPixel(int c1,int c2,int c3)
{
 XColor xc;
 
 xc.red = c1;
 xc.green = c2;
 xc.blue = c3;
 if (!XAllocColor(disp,cmap,&xc)){
  return(black);
 }
 return(xc.pixel);
}

int EXCheckEvent( int wait, XEvent *ev )
{
 if ( wait == EX_NOWAIT ){
  if ( XCheckMaskEvent( disp, __EX_LISTENING_EVENTS, ev ) == False ){
   return( ev->type = False );
  }
 } else {
  XNextEvent( disp, ev );
 }
 return( ev->type );
}

double RADtoDEG(double RAD)
{
 return RAD * 180 / M_PI;
}

double DEGtoRAD(double DEG)
{
 return DEG * M_PI / 180;
}

double RightDeg(double DEG)
{
 DEG += 360;
 return ExMod(DEG, 360);
}

double ExMod(double Value, double Renge)
{
 /* x mod y = x - (x div y) * y ;*/
 if (Renge == 0){
  return 0;
 } else {
  return Value-(int)(Value/Renge)*Renge;
 }
}

int Round(double x)
{
 return( (int)(x+0.5) );
}

Point NewPoint(int x, int y)
{
 Point P;

 P.x = x;
 P.y = y;
 return(P);
}

Rect NewRect(int top, int left, int bottom, int right)
{
 Rect R;

 R.top = top;
 R.left = left;
 R.bottom = bottom;
 R.right = right;
 return(R);
}

Rect WHRect(int x, int y, int w, int h)
{
 Rect R;

 R.top = y;
 R.left = x;
 R.bottom = y+h;
 R.right = x+w;
 return(R);
}

int PointInRect(Point P, Rect R)
{
 if ( (P.x >= R.left)&&
   (P.x <= r.right)&&
   (P.y >= R.top)&&
   (P.y <= r.bottom)){
  return(True);
 } else {
  return(False);
 }
}

int RectInRect(Rect R1, Rect R2)
{
 if ( (R1.left >= R2.left)&&
   (R1.right <= r2.right)&&
   (R1.top >= R2.top)&&
   (R1.bottom <= r2.bottom)){
  return(True);
 } else {
  return(False);
 }
}

int OverlapRect(Rect R1, Rect R2)
{
 if ( (R1.left > R2.right)&&
   (R1.right < R2.left)&&
   (R1.top > R2.bottom)&&
   (R1.bottom < R2.top) ) {
  return(True);
 } else {
  return(False);
 }
}


[351] yacc/lex プログラミング速報 Casper 2002年01月18日(金) 16時02分
 コンパイラの課題で「yacc/lecを使った電卓のプログラム」がでました。
 yacc/lex は構文解析ルーチンと字句解析ルーチンを簡単なルールから自動生成するツールです。
 主にSystem V系のUNIXで開発され、広く利用されて来ました。
 そのためコンパイラ生成言語とも呼ばれます。

 サンプルから電卓の機能を課題にそって拡張していかなければなりません。
  ・べき乗[^]
  ・整数の剰余[%]
  ・符号演算子の追加[+/-]
    これは文字が足りなくても、0を代入することで計算していくようにしただけ。

  ・浮動小数点実数演算への対応[実数型入力、計算、出力]
  ・三角関数(sin(x), cos(x), tan(x)、x は整数(0-360))
 追加機能
  ・整数型への変換[int]
  ・四捨五入[round]
  ・整数による割り算[div]
  ・三角関数2(asin(x), acos(x), atan(x)、x は実数)
    答えはデグリーズ(度)で求まります。
  ・ラジアン変換(D2R, R2D)
  ・中かっこの導入[{,}]
  ・別名定義[% = mod, / = div]

/*----------------scalc.l-----------------------------------*/
%%
"+"  return (ADDOP);
"-"  return (SUBOP);
"*"  return (MULOP);
"/"  return (DIVOP);
"("  return (LPOP);
")"  return (RPOP);
"^"  return (POWOP);
"%"  return (ZANOP);
"sin"  return (SINOP);
"cos"  return (COSOP);
"tan"  return (TANOP);
"asin"  return (ASINOP);
"acos"  return (ACOSOP);
"atan"  return (ATANOP);
"{"  return (LPOP);
"}"  return (RPOP);
"div"  return (DIV2OP);
"mod"  return (ZANOP);
"int"  return (INTOP);
"round"  return (CUTOP);
"d2r"  return (D2ROP);
"r2d"  return (R2DOP);
[0-9]*\.?[0-9]+ {
  sscanf(yytext, "%lf", &yylval);
  return (NUMBER); }
[ \t] ;
\n  return (NL);
.  return (yytext[0]);
%%

/*----------------scalc.y-----------------------------------*/
/* 宣言部 */
%{
 #include "math.h"
 #define YYSTYPE double
 //#define PI 3.1415926; --> M_PI;
%}

/* トークンの定義 */
%token NL
%token NUMBER
%token LPOP
%token RPOP
%token POWOP
%token SINOP
%token COSOP
%token TANOP
%token ASINOP
%token ACOSOP
%token ATANOP
%token INTOP
%token CUTOP
%token D2ROP
%token R2DOP
/* 演算子の定義(下ほど優先順位が上)
* %left : 評価 左から
* %right: 右から
*/
%left ADDOP SUBOP
%left MULOP DIVOP
%left ZANOP
%left DIV2OP
%%

/* ルール部 */

s : list
  ;
list : /* empty */
  | list expr NL { printf("%lf\n", $2); }
  ;
expr : expr ADDOP expr { $$ = $1 + $3; }
  | expr SUBOP expr { $$ = $1 - $3; }
  | ADDOP expr { $$ = $2; }
  | SUBOP expr { $$ = - $2; }
  | expr MULOP expr { $$ = $1 * $3; }
  | expr DIVOP expr { $$ = $1 / $3; }
  | expr POWOP expr { $$ = pow($1,$3); }
  | expr ZANOP expr { $$ = $1-$3*(int)($1/$3); }
  | SINOP expr { $$ = sin($2/180*M_PI); }
  | COSOP expr { $$ = cos($2/180*M_PI); }
  | TANOP expr { $$ = tan($2/180*M_PI); }
  | ASINOP expr { $$ = asin($2)*180/M_PI; }
  | ACOSOP expr { $$ = acos($2)*180/M_PI; }
  | ATANOP expr { $$ = atan($2)*180/M_PI; }
  | expr DIV2OP expr { $$ = (int)($1/$3); }
  | INTOP expr { $$ = (int)($2); }
  | CUTOP expr { $$=(int)($2+0.5); }
  | D2ROP expr { $$ = ($2*M_PI/180); }
  | R2DOP expr { $$ = ($2*180/M_PI); }
  | LPOP expr RPOP { $$ = $2; }
  | NUMBER { $$ = $1; }
  ;
%%
/* プログラム部 */
# include "lex.yy.c"

yyerror(char *s)
{
 fprintf(stderr, "%s\n", s);
}

main()
{
 return yyparse();
}


[350] 正規表現の記号 Casper 2002年01月18日(金) 11時55分
 \  次のメタ文字をクォートする(取り消す)
 ^  行の最初にマッチする
 .  (改行以外の) すべての文字にマッチする
 $  行の終わりにマッチする
 |  選択
 () グループ化
 []  文字クラス

 \w  「単語」の構成文字 (英数字と "_") にマッチ
 \W  単語の構成文字以外にマッチ
 \s  空白文字にマッチ
 \S  空白文字以外にマッチ
 \d  数字にマッチ
 \D  数字以外にマッチ
 \b  単語の境界にマッチ
 \B  単語の境界以外にマッチ
 \A  文字列の最初にのみマッチ
 \Z  文字列の最後にのみマッチ
 \t  タブ
 \n  改行
 \r  復帰
 \f  改ページ
 \a  アラーム (ベル)
 \e  エスケープ
 \033  8 進数で表した文字
 \x1b  16 進数で表した文字
 \c[  コントロール文字

直前の文字の数量子:
 *  0 回以上にマッチ
 +  1 回以上にマッチ
 ?  1 回または 0 回にマッチ
 {n}  ちょうど n 回にマッチ
 {n,}  n 回以上にマッチ
 {n,m}  n 回以上 m 回以下にマッチ


[349] ファイルを持ち出す Casper 2002年01月17日(木) 19時34分
 帰る時間が近づいたので、作業ファイルを家に持ち帰って作業しようと思い、CD-RWに焼いた時に思いました。
 「MMC(32MB)に保存すればいいじゃん!!」

 ポポペ用のそれは、USB経由でPCに接続でき、32MBまで記録できるではありませんか。
 CD-RWに焼くより断然速いです。準備も楽だし。


[348] プロコンのアイディアを考えよう Casper 2002年01月17日(木) 17時23分
 プロコンのテーマは「アイデア百万石」で、気になる課題部門は「スポーツとコンピュータ」です。

テーマ・アイディア捻出(とりあえずスポーツを列挙)
 エアロバイク、ドライブ、卓球、ヨット、スキー、スノーボード、ボーリング
 ゴルフ、飛行少年、空手、カバディ、相撲、スカイダイビング、スキューバ
 缶けり(水中)、ボブスレー、カーリング、スキージャンプ、パラグライダー
 テニス、剣道、なぎなた、弓道、射撃、ストレッチ、ツーリング、登山
 アスレチック、綱引き、ボディービル、ラクロス、腕相撲、跳び箱
 ロッククライミング、フリスビー、砲丸投げ、乗馬(馬場馬術、障害)、柔道
 トライアスロン、クィディチ、サバイバルゲーム、フィギュアスケート
 ボクシング、雪合戦、水球、ドッヂボール、鬼ごっこ、バスケ、大縄跳び
 ムカデ競争、パン食い、バトミントン、はねつき、けまり、ビリヤード、鉄棒
 リンボーダンス、スケボー、エアロビクス、パラパラ、たいきょくけん
 寒風摩擦、洗車、ポートボール、バンジージャンプ、亀凱旋、モグラたたき

・良いもの(10種)、悪いもの(理由)を選ぶ。
・改善案、拡張案、実現方法を書く。


[347] 成人式 Casper 2002年01月17日(木) 15時48分
 最初で最後の成人式です。
 一番困るのは僕を知っているはずの人、同じ中学だった人がよくわからないということです。まぁ少しはわかるのでとりあえず近づいて、話すのを聞いて判断しましょう。
 それにしても、よくわかりますねぇ。まぁそちらは同じ高校を過ごしてきたのでしょう。
 女の子は全然わかりません。よく知らないし、化粧でカモフラージュされています。
 でる言葉は「土生っぽい」です。なんだかわかる顔が集まっています。でもこんな感じだったか?

今日の一番目立った人
 会場で一番目立ったのは「宇宙人」です。全身が蛍光緑で、腕や足の横に小さいバッグみたいなのがあって、所々、爪の先が光っています。そしてジャンピングシューズを履いていました。どこで売っているのでしょうね。頭には赤い土星の輪みたいなのがあります。

 式の前座として「村上水軍陣太鼓」が披露されました。エイ、エイ、オーーー。

 その後、地区ごとに記念撮影をして、立食パーティです。お目当てはゲームの景品。クイズとビンゴゲームがありましたが、ビンゴには参加できなかったので「リーダー」にカードを渡して帰りました。
 なぜかというと、卒業研究を学会で発表しなくてはならないので、その原稿作りにおわれているのです。


[346] 対ウイルスソフトの更新 Casper 2002年01月17日(木) 15時47分
 インターネットに接続して、ワクチンソフトをアップデートして思いました。
「何でこんなに更新が早いの?」

 今、更新したのはワクチンソフトのどの部分でしょうか。ウイルスリスト? それともバグ?
 バグなんてことはないし、だとするとすごいスピードでウイルスが誕生しているのでしょうか、まぁその場合は亜種が作られているとか。
 他にはより良い駆除方法を見つけたとか。
 とにかくその会社は毎日戦闘状態なのでしょう。


[345] 卒業試験 Casper 2002年01月17日(木) 15時30分
 そろそろ最後の試験が近づいてきました。すでに試験時間割は発表されました。
 試験も大変なのですが、そのまえに各教科の課題をすませる必要があります。試験をしない教科や、授業回数が必要数に達していない教科はレポートを提出しなければなりません。
 そうでなくても卒業研究の論文を仕上げるなど、忙しくて…。

22日(火)
 2 情報理論
 3 信頼性工学
 4 法学

23日(水)
 2 哲学
 3 英語
 4 OR

24日(木)
 2 応用数学
 3 応用物理
 4  〃

25日(金)
 2 通信工学
 3 情報機器
 4 リモートセンシング


[344] 第13回プログラミングコンテスト Casper 2002年01月15日(火) 16時52分
 第13回プログラミングコンテストの概要が発表されました。
 場所は http://procon.gr.jp/ です。

 テーマは「アイデア百万石」で、気になる課題部門は「スポーツとコンピュータ」です。
 まだ協議部門は決まっていません。


[343] 海洋工学、海洋機器のレポート Casper 2002年01月11日(金) 16時13分
 レポートというか、カタログ風に作っています。(そういう課題)
 海洋工学が「弓削島内にある海洋構造物のカタログ作成」
 海洋機器が「海洋機器のカタログ作成」

 情報棟2Fが標準の作業場になっていますが、パソコンが遅いのでやっていられません。でも研究室の方はときどきフリーズするので、これもまたやっていられません。
 資料というか、プリント類を全部家に忘れてきたので、写真をCD-RWに入れて、帰ってからの作業にしたいです。


[342] ビールの判定 Casper 2002年01月02日(水) 23時21分
 二十歳になってビール、酒が飲めるようになってしまい、大晦日、元旦に飲まされました。
 結論をいうと僕は好きで飲みそうにはありません。そんなにすぐには酔わないのに、すぐ頭が痛くなります。まぁ朝にはすっきりになるのですが…。
 ビール、酒をおいしいとは思えません。苦いし喉が痛いです。あと値段が高いし…。アーブにならって何か忘れたいことがあるときは寝ることにします。
 でもあと試してないのはワイン、ウイスキーでしょうか。でも値段が高いのと、度がきついので飲みそうにありませんね。
 飲みに行って数万円を払うより、パソコンなどに使いたいです。


[341] 見たいビデオ Casper 2002年01月02日(水) 09時56分
 昨日、ビデオライフに行って見つけてきた「見たいビデオ」とやらを列挙してみました。
  花右京メイド隊 ☆
  魔法少女猫タルト ☆
  フィギュア17
  アルジェントソーマ
  シスタープリンセス △
  タイタン
  バンパイアハンターD ☆
  ザ・ソウルテイカー・魂狩 △
  ギャラクシーエンジェル ☆
  地球少女アルジュナ ☆
  スクライド △
  ジーンシャフト △
  ガサラキ △
  女神候補生
  ダンジョン&ドラゴン
  ゲーム
  最終絶叫計画
  13ウォーリアーズ
  レッドプラネット
  F-16
  ドクタードリトル2
  ザ・グラディエーター
  ファイナル・ウォー
  青の6号 ☆
  剣風奇伝ベルセルク △
 アニメ・映画が混じっていますが、現在までに「ギャラクシーエンジェル」「バンパイアハンターD」はとりあえず集めました。Dは低解像度版で、GAは13話と14話は質が悪いようです。「青の6号」は全4話で1話と2話を集めました。

 ☆はコンプリートで、△は一部集めたもの。


[340] 昔の弓削商船の授業 Casper 2002年01月02日(水) 09時51分
 昔の弓削商船ではすごい授業があったようです。
 まぁ時代ということなのでしょう。海軍学校ということで、艦砲発射訓練や魚雷射出管訓練があったみたいです。これはアルバムの取り込み作業中に見つけたことです。


[339] あけましておめでとうございます Casper 2002年01月01日(火) 00時17分
 今年もよろしくお願い申し上げます。

 そういえば今年はそんなに準備せずに年を越してしまいました。
 写真屋で画像を編集しながらです…。まぁ「年越しそば」は食べました。


[338] タイトル画像 Casper 2001年12月29日(土) 18時20分
 Googleではタイトルの画像がちょこちょこと変わっていることがある。
 うちもときどき変えてみようかしらん。
 (でも何に…?!)

http://www.google.com/


[337] 日記なのに… Casper 2001年12月29日(土) 18時15分
 この「Project Note」は日記ですが、毎日更新というわけじゃないんですよね。
 まぁ何かを開発中なら日進月歩で…なのでしょうか(?!)

 それ以外のときは普通の日記です。しかし何も無い日は「何も書かない」ということで。
 毎回「特になし…。」書いていくのは無駄だと思います。そりゃ毎回面白い話がかければ最高ですが、そんなにはりきると辛いですから、ここらへんが妥協ポイントだと思います。

 (言いわけ…?)

http://isweb24.infoseek.co.jp/computer/js-labo/book.html


[336] 写真の取り込み その3 Casper 2001年12月29日(土) 18時08分
 予想以上にはかどっていません。一日で40枚くらいのペースで加工しています。
 終わるのはいつの事だか…。

 写真を取り込むときにアルバムから出さなかったので、フィルムの反射が写っていて、それを取り除くのに苦労しています。しかし色が違うので、色相を指定して彩度や明度を個別に調節することでなんとかやっています。

 あとはページ用の大きさに加工して貼り付けるだけ…なのかな。
 この写真って保存用なの? 解像度200の原版はとっておくべきなのでしょうか。


[334] CGIを使ったネットゲーム Casper 2001年12月23日(日) 23時37分
 すでに暴走状態! 「究想の箱庭」すでにルールが…。

 「どこここ」(友人の管理するHP)でネットゲーム「箱庭諸島」を遊んでいました。
 そのころは普通の箱庭ルールで、JavaScriptを使って「生産量計算ツール」「箱庭諸島高速シュミレーション」などを作って遊んでいました。
 そして飽きがきたので島を放棄し、箱庭から退避しておりました。

 すでに箱庭本家のサポートが停止し、あとはそれぞれが自由にやっているみたいです。
 ひさびさに「どこここ」にいってみたら「究想の箱庭」!? 意味が分からん。ルールが追加につぐ追加、変更の嵐があったみたいで、これが箱庭の究極の進化形態ですか…。

 なんだか「シムシティー」っぽく……。

http://www.dokidoki.ne.jp/home2/chiiuko/