昭和 xx 年 x 月 xx 日生まれ。xx 歳。趣味はゲームで、いまはまだ富山の実家か
ら持ってきた PC エンジン以外、ゲーム機がないので、ゲーセンに行ったり松村氏宅
にお邪魔したりしている。ゲーセンでは主にヴァンパイアハンターと餓狼3をするが
、最近勝てなくなってきた。なぜだろう。
あと、パソコンについて。実は全くの初心者で、大学に入って 98 を買うつもりだ
ったのだが、親との交渉がこじれて計画延期。なかなかうまくいかないものである。
そういう訳で、まだパソコンを持っていない僕についてはもう言うことがないので
、今日 (4 月 30 日) に行ったゲーセンでの成果を語ります。やったゲームはヴァン
パイアハンター、餓狼 3、サイバーボッツでした。
餓狼 3 の持ちキャラはフランコとマリーなのですが、まずフランコは、待たれると
何もできないということが分かりました。ローレンスのような削り技があればよかっ
たのですが。マリーも、必殺技の M . パイダーをスウェーでかわす人がつらい。ヘ
ッドスローからの連携技や超必殺が決まれば何とか、という人です。
意気消沈してサイバーボッツへ。これは、小攻撃が短すぎ。大攻撃が遅すぎるので
、ダッシュ攻撃とウェポン攻撃の使い方が鍵です。ヴァンパイアと同じく、責めた方
が有利なので、待ってもうまい人には絶対に勝てません。
さらに暗い気持ちでヴァンパイアハンターへ。最近、相手によってキャラを変える
ようになりました。持ちキャラはドノヴァンとモリガンですが、パイロン相手のとき
はレイレイを使います。レイレイ対パイロンは
地上ソルマッシャー → ゾディアスキックファイア
を返響器で返し、空中ソルスマッシャーやオービターブレイズは中暗器砲で気絶させ
るのが理想、レイレイは
飛び込み大パンチ → 天雷破
が切り札。あと、間合いが遠いときは低空ダッシュを使いましょう。
モリガンは先読みシャドウブレイド、できれば EX 版に全てを書けます。EX 版は
着地に隙がないので投げれるかも。ドノヴァンはビシャモンからリーチと攻撃力をな
くして隙を大きくしたような人です。これは地上ダッシュや飛び込みで攻めるからな
のですが、ビシャモン程の強さはなく、そこを補うべきキルシュレッドも威力が不足
なのです。攻撃を跡切れさせないのが鍵です。
自分には偏った知識 (それもたいしたことない) しかないので、訳の分からない文
章になります。何とかして一端の人間に成りたいので、宜しく御教授の程を。
大して書くこともないので最後に過去の使用機種を列挙してみましょう。
/** 往年の使用機種 **/
これがOsaku☆のプロフィールです。みなさん、よろしくお願いしますね☆
Osaku☆
MSX2 > MSX2+ > PC286 > 98NOTE > PC100
結構プログラムも作ってきました。最近は MSX で 2 年ほどシューティングを作り
続けています。いちおう BASIC Z80 アセンブラ 8086 アセンブラを使えます。
実は、C もちょこっとかじったんですけど当時使っていた PC286 (HDD なし)
では、かなりコンパイルに時間がかかって、結局あまりつかうことがなくて上達し
ませんでした。
まあ、そういうことで 98NOTE (バグ持ち) を手にいれたので TSG では
C 分科会に出たいと思っています。パソ通もやっているのでここのネットにもちょく
ちょくと顔を出すかも知れません。よろしくお願いします。
ところで、私の 98NOTE の立ち上げ時に「KANJI CG RAM ERROR」っていうのが出る んですけど、何か実害があるんでしょうか ? なおしてやろうという奇特な方がいら しゃるとうれしいんですが・・・・
店員との会話 (於・ラジカン):
店:「いくらぐらいでお探しですか?」というわけで、僕の家には CD も 2 台有ることになってしまったのです (半泣)。 おまけに 2 ドライブにしたりセカンドキャッシュ付けたりでもう借金地獄です (本泣)。
Z:「いやぁ、15 万くらいで探してるんですけど(本当は別の店で見つけた 9.5 万 の Ap/U2 (新品) に目をつけていたが、アクセラレーターが 3 万するし CPU が遅い ので 15 万のラインで妥協した。)」
店:「これ(Xs/C8W) なら 15.5 万になりますよ。」
Z:「あの、CD はいらないんですけど (2 台有っても無駄なだけや)。これ (Xs/U7W) だといくらになりますか (14 万くらいかな)?」
店:「今、NEC さんが CD 搭載モデルのキャンペーンやっていて、CD 無い方が高くな っちゃうんですよ (笑)」
私は毎日我が千年王国を築かんと、毎日必死にごみを出したり、自炊したり、寝
たり、家主さんに愛想良くしたり、毎日忙しい。忙しすぎて、半田ごてを握る暇も
ない。
将来の夢は、山の中のしがない庵で毎日悪いことをして過ごすこと。その為に欠
かさずパソコン通信にアクセスしている (草の根)。
あと、趣味としてテクノ鑑賞がある。一言いいたい。このごろ活躍している trf とかいう集団のことを、「テクノバンド」と思っている人が世の中には少なからず いるらしい。貴方は間違ってます。(本当にそう思ってる人がいないことを祈る) そ ういう認識はテクノファンにも,trf の人たちにも迷惑です。やめましょう。
東京に来て、大変うれしかったのは、渋谷の WAVE に、頻繁に行けるようになっ
たこと。あそこぐらいでしか、本当に良いテクノの CD が手に入らないのです。他
にもいいところがあるよ、という人は是非教えてください。
(ここからしばらくはテクノに興味のない人は読み飛ばしてもらって結構です)
まず私がテクノに手を染めたのは高校 1 年の時。それまで洋楽ばっかり聴いていま
した。で、当時「電気 GROOVE のオールナイトニッポン」というのがありまして。
はっきり言って、ふつうの感性の人はついていけない内容だったのですが、どうも僕
は普通ではなかったらしく、虜になっていました。その頃は電気 GROOVEも、ラ
ップバンドだといわれていた頃で、僕もそう思ってました。で、そのオールナイトで
は「おすすめ曲のコーナー」なるものがあり、毎回電気のメンバーが (主に石野卓球)
の勧めるテクノの曲を 1 曲流していました (たまに「おすすめスペシャル」とか
いって、曲ばっかり流していることもあった) そこで色々なアーティストを知り、
どっぷりとはまっていったのです。聴いたことのある人は分かると思いますが、オー
ルナイトでは各パーソナリティごとに、CM の後やなんかに曲が流れるのですが、電
気の場合は YMO でした。「世界の坂本」がやってたグループだということで、さっ
そく「テクノバイブル」なる、1 万円の BOXCD を買い込んで聴いたのが始め。今と
なっては YMO は「古いテクノだ」と、言わざるをえんのですが、当時は僕にとって
新しく (10 年前の曲にも関わらず)、毎日のように聴いていました。
電気のオールナイトなくして今の私はいなかったでしょう。趣味のみならず、強
烈なキャラクターに、価値観までも変えられてしまいました。電気 GROOVE の曲は、
ちゃんとテクノだし、大変好きな (総合的に) グループです。今では、「馬鹿バン
ド」的要素は薄れ、曲としても大変いいものを作ってくれるのですが、みなさんが
TV ,雑誌で目にすることのできる部分は、あくまでもコマーシャルな部分で、本当
に彼らの作った純粋なテクノを聴きたかったら、SONY 等、メジャーなところからで
ている CD を聴いていてもよく分からないので、そこのところ注意です。
で、今好きなテクノのアーティストとしては、HARDFLOOR、UNDERWORLD 等。テク
ノでは「レーベル買い」というのが存在します。アーティスト情報の乏しいテクノ
界では、「レーベル」を基準にして買うという行為が広まっているという訳なので
す。で、好きなレーベルは、R&S、RISEINGHIGH、HARTHOUSE、とれま、WARP 等。富
山が出身地なもので、こういうようなメジャーなアーティスト、レーベルの物しか
入手出来なかったので、こんな感じです。
あと、BLUCK DOG のメンバーがやっているというネットについて知っている人、
情報ください。
住所 〒xxx-xx xx 県 xx 郡 xx 町 xx x-x-x 電話 xxxx-xx-xxxx
僕の出身高校は、埼玉県立川越高校という所で、今は家から通っています。家か
らだいたい、2 時間半ぐらいかかるので、通うのがとてもたいへんです。まあたい
した進学校では、ないですけど *2 川越高校の自慢話でも
少し書くと、学校の裏に、三芳野神社というのがあって、そこはなんと、よく交差
点で耳にする、「とうりゃんせとうりゃんせ」の歌 *3 の
発祥の地名なのです。
今、考えると、高校の進学希望調査には、1 年から 3 年の冬まで、東京工業大学っ
て書いたような気がするけど、いったいなぜ今ここにいるのでしょう ? /(^_^;)。
自己紹介といっても何も書くことがないのですが、コンピュ−タ−が好きなので、C
言語でもやりたいと思います。なので誰か知っている人がいたら僕に教えてくださ
い。FM TOWNS というのを持っているのですが、なにせ目玉 TOWNS なもんで
*4、もう今から拡張しても意味がないので (ToT)/、はやく新
しいの、に乗り換えたいです。で、なんとか国立大学に入ったということで、うち
の親と新機種購入の商談がとりまとまりそうなのでパソコン関係の店に詳しい人が
いたら、どこかいい店を、紹介してください。それと、このあいだ、部室にある横
型 TOWNS に初めて、お目にかかれたので、すごく感動しました。あと誰か TOWNS
を持っている人がいたら、なにかゲ−ムを貸してください (^_^;)。
そういえば、数学が好きなので、誰か僕が高校の時に作った大学入試範囲の数学の
問題でもやりましょう。そんじょそこらの問題より多分、面白いと思います。
例題 1) 放物線は全て相似であることを示せ。あと金曜 5 限のシミュレ−ションの科学をとっている人がいたら、4 月 28 日のノ ートを写させてください。さらに、数学 1A (金子) のシケ対になってしまったので 、だれか、過去問をください。なんだか自己紹介というより宣伝になってしまってす みません。
例題 2) 区間 [0, 1] 内の全ての実数の和は ?
学生証番号 : 541292I
理科一類 30 組 中国語
開成高校
9801-UV11 から 9821-CX に買い換えました。BASIC しか分かりません。
私が最初にパソコンを買ったのは中学 2 年ぐらいの時でこれまたほとんどゲー ム機と思われている MSX2+ でした。(その前に J3100 なんてものがあったかもし れない) MSX2+ を使ってエメラルド・ドラゴンや三国誌シリーズをやっていました が、私中学と高校の 6 年間を物理部という特殊な環境で過ごしていましたので、 私の周囲にはパソコンを持っている人が多く、しかもみな PC-9801 を持っていた ので私も親にねだって PC-9801DA を買ってもらったわけです。その頃からアート ディンクのだすシミュレーションゲームのファンになり、A 列車でいこう III や、 ATLAS などなどをやり込みました。また、ガイナックスのプリンセスメーカーシリー ズもずいぶんやったような記憶があります。
しかし、最近のゲームにはあまり興味をひくものがなく、(最近某メーカーの某 ソフトは睡眠不足になるぐらいやったけど) 友人からもらったグラフィックを見た り、MASL データを見て遊ぶくらいにしかパソコンを使っていません。プログラム も何度か BASIC のマニュアルを見てはうなっていたのですが、その度に挫折し (単に飽きやすい性格だからかも知れない)、結局音もろくに出せないという現状な んですが、やっぱりゲーム機として終らせてしまったら私の 98 が可哀想ですので せめて BASIC ぐらいは使えるようになりたいと思う今日この頃です。
うーむ、書くことがなくなってどんどん意味のない文章になっている。やはりパ ソコンをほぼゲーム機として扱ってきた私には 1 ページも書くことがない、とい うわけでそろそろまとめに入らせてもらいますと、とにかく私はみんなでわいわい 騒いで楽しくやっていきたいと思っています。ただし私は甘いものはあまり好きで はないので、ケーキパーティなどしたら卒倒してしまうかも知れません。無理矢理 食べさせるのはやめましょう。あと、私はパソコンのグラフィックとか MASL デー タとか集めているので色々持っている方は是非御一報下さい。よろしくお願いいた します。
自然界の奥底に流れる物理の美しさに酔いしれ
数字の中に込められたる無限の哲学に神秘を感じたい人たちへ
物理学研究会はあなたを待っています
物理研は隣の 303 の部屋です
物理研は原理研と一切関係ありません
理論科学グループも統一理論研究会とは一切関係ありません
へへ。原稿料だよ、ちょもらんま君。
さてと、春休みの僕が何をしてきたのかをここで発表しましょう。そして来年の オリに役立ててください。
それでは、僕の話はこの辺で。
とりあえず、表向きの姿としては・・・。
SONIC (PC-186GR) . . . Zephyr さん作が展示物でした。
SKYDUEL (FM-TOWNS HR) . . . Makken さん作
MIDI (PC-486NAU) . . . いろんなひと作
(以下の記事中には若干の事実誤認があるかもしれませんが御容赦下さい。)
- オリパンフを作ろう !
- サークルオリは、オリパンフなしには語れません。「どこのサーク ルに入ろっかな ?」と迷っている新入生の選択の材料として、オリパンフ は、オリでの雰囲気や展示などとならんで重要なものとなるでしょう。そ れに、オリパンフには、その場では伝えきれない TSG の活動内容・技術力、そして TSG の良さを好きなだけ盛り込むことができます。
普段の部報はもちろん TSG 内の情報誌 (?) なわけですが、オリパンフはもちろん新入生に TSG をアピールするためのものです。技術系の記事等の他にも、 TSG の紹介や活動内容とか、いろいろと書かなくてはいけません。だれにどんな ことを書いてもらうかは、ほとんど僕の方で勝手に決めて割り振っちゃいま した。
割り振り案を決めたら、あとは原稿を待つばかりです。もちろん、自分 の分もちゃんと書かなきゃいけませんが(^^;)。
- 恐怖の原稿量
- 原稿の締切りが近づくにつれ、ぞくぞくと原稿がメールされてくる ようになりました。さすがオリパンフだけに、みんな気合をいれて書いて くれて、長めの原稿が多かったですね。極めつけは、これです。
いままで見たことも聞いたこともないような巨大な原稿。 NAO 君の原 稿だけで、40 ページとはいかないまでも 30 は確実にいきそうです。「極 端に薄いオリパンフなったらどうしよう ? 」などとくだらない心配してい た僕は、「わーい、これで分厚いオリパンフが作れる」と無邪気に喜んでい たのでした。このときまだ、僕は目の前で起こりつつある恐るべき事態に気 付いていなかったのです。
-- Number : 8 Sender : INU00051 (NAO) Stamp : 95/03/ 20:59:56 Size : 47763 Bytes Title : 恐怖の大量原稿送信 # こんばんは。ちょもら君 # なおです。 # C言語入門書がついに完成しました # 「ポインターと配列、文字列」の項を # 追加したことと、解説をさらに丁寧にしたことと # 1行を全角文字で33文字にしたことによって # 原稿が激しく巨大化してしましました。 # 全部で1200行の46kバイトあります。 # ちょもら君の編集の仕方なら多分40ページぐらいに # なるでしょう。 # (ひどすぎー) # これなら誰でもC言語の入門が果たせます。 # これを読んだらコンピュータサークルに入ろうか入らまいか # 迷っている人はきっとTSGに来てくれるでしょう。 # (かなり強気です) # 前回の原稿よりは編集し易くなっていると思います。 # (句読点たくさん入れたし行も短いし) # まあ、オリパンフなんだから、他の時期の部報より # 立派なのを作るべきだよね。 # (ちょも君の苦労を全然考えていないNaoです) # さあ次はサークル紹介文だ。これは適当にかたずけます。 # 後日送信します。 # # では、これよりこの恐怖の大量原稿を送ります。 # 46kバイトならたったの25秒で送れるわけか。 # メールボックスが破裂しないことを祈る。 # ちょもら君がハングアップしないことを祈る (後略……オリパンフ参照 ^^;) --やがて、原稿の締切日 3/31 になりました。この日、僕は 3 月分の現 物支給をもらい忘れていたことに気付いたのでした。現物支給というのは、 学友会が毎月 3 千円分の紙を各サークルにタダでくれるというものです。 B4 上質紙ならば 2 千枚も貰えますが、その月のうちに取りに行かないと くれません。もちろん 31 日のうちに出掛ければもらえるのですが、この ころ風邪をこじらせていた僕は、往復 3 時間以上をかけて駒場へ行く体 力など、どこにもありませんでした。
3 月分の現物支給をもらい損ねたのはちょっと痛い。でも、部室には上 質紙が 3 千枚近くあったはずだし、4 月分の現物支給もあるから、紙の 心配なんかぜんぜんない。僕はまだ、このように気楽に考えていたのでし た。さて、原稿が一通り揃って、編集を始めた僕のもとに次のようなメール が届きました。
あれ ? 3000 枚くらいはきれいなのがあったはずなのになあ。汚れちゃっ たのかな ? まあいいや。4 月分の現物支給を合わせれば足りないわきゃー ない。
-- Number : 9 Sender : INU00051 (NAO) Stamp : 95/04/02 09:00:48 Size : 1208 Bytes Title : 印刷だいじょうぶかい? なおです。 オリパンフは全部で何ページになったのかな? 印刷用紙は足りてるのかな? きれいな用紙は2000枚ぐらいしかないよ。 すこしきれいでない用紙ならあと3000枚ぐらい あるとおもう。 (後略) --
色上質紙は全部ビラに使ってしまっていたので、表紙に使う色上質紙も 4 月分の現物支給でまかなわなくてはいけません。それでも、白い上質紙 を新たに 1500 枚も貰えるのです。部室に残っている分と合わせて、使え る上質紙は 3500 枚も確保できます。60 ページをこえるような事態になっ ても大丈夫です *9 。しかし、編集作業が進む につれ、とんでもないことが判明しました。なんと編集後の総ページ数は 80 ページ以上。
発行予定部数は 200 冊だから、必要な紙は……80 × 200 ÷ 4 *10 + (試し刷り) = 4000 + 数十枚 !
ここに至り、僕は初めて事の重大さに気付いたのでした。500 枚以上も 足りないなんて !
せっかく書いてもらった原稿を没にするわけにはいきません。この時点 で届いていなかった原稿をとりあえず断ってから、どうするか悩みました。
結局、文字の大きさを思い切って小さくし、1 ページ当たりの字数を大 幅に増しました。字が小さくて、読みにくかったかもしれません。Makken さんからも「ちょっと文字が小さいね」という指摘がありましたが、緊急 事態だけに止むを得ません。紙の悩みはまだ終わりではありません。4 月分の現物支給をもらいにい くと、「上質紙 ? もうないんですよ。みんな次々にもらいにくるもんだ から……。孔版上質紙なら有りますけど」と係の人。コウハンジョウシツ シなんて得体の知れない紙を使うのは、できれば避けたいものです。それ に、前半のページと後半のページで紙質が違うなんて、みっともないこと この上ありません。「それは困ります」と言ったら、どうも学友会が自分 のところで確保していたらしい上質紙を分けてもらえました。これで一安 心です。
原稿の量が多すぎて悩むのなんて、僕の代にはこれが最初で最後だろう なあ。紙の量さえ十分だったら、部室に現存する最も厚い部報 *11 を上回るチャンスだったんですが。ちょっと残 念。
と思っていたら、この 190 号もなんかすごいぞ。(^^;
- 恐怖の印刷
- 編集が終わったら印刷です。この時期はゲスプリ(印刷機)が混ん でいるので、順番待ちをするといつ使えるか分かりません。予約して使っ た方が得策です。僕は風邪をこじらせてずっと家にいたので、駒場に行く 人に頼んでゲスプリの予約をとってもらうことにしました。
ところが、NAO君からゲスプリの予約に失敗したとのメールがきまし た。受付開始後かなり短時間のうちに、予約が一杯になってしまうという のです。しかも、次のようなメールまでが迷い込んできました。
むう。印刷当日は早起きしなければいけないようです。どうせ朝から行 くのなら、なるべく午前中に印刷をすませて午後はのんびりしたいもので す。となると、誰よりも早く駒場に行ってゲスプリ待ちの列に並んで、1 番に印刷するのが BEST でしょう。僕は確実に 1 番を取るために 7 時に 行こうと思ったのですが、「8 時でいい」という情報が NAO 君から 入ったので、8 時に行くことにしました。1 人分の時間 (1 時間) では印刷 しきれそうもないので、GANA 君 & SHIGE 君にも応援を頼みました。
-- Number : 9 Sender : INU00051 (NAO) Stamp : 95/04/02 09:00:48 Size : 1208 Bytes Title : 印刷だいじょうぶかい? (中略 …… P41に書いてあるけど(^^;)) 昨日、物理研のオリパンフの最終印刷をおこないました。 整理券番号がなんと42。夕方6時過ぎに順番がきて ぎりぎり印刷し終えました。 TSGの印刷ではshige君かgana君などの駒場 の近くに住んでいる人に朝8時半ごろ学生会館に行って並んで 整理券をもらってもらうのが良いでしょう。 --さて、印刷日になり、8 時ちょい前に学館に着くと、もう先客がいるん ですよね、これが。でも、4 番をとることができたので、あまり待たなく てもすみそうです。GANA 君と SHIGE 君もすぐにやってきて、一緒に並んでくれました。
9 時になって学館があき、整理券が配られました。なんとゲスプリ 4 台 のうちが 2 台が壊れていたためしばらく待たされてしまいましたが、10 時くらいに僕の番が回ってきて、印刷を始めることができました。あとは いつも通りに印刷するだけ……と思っていたら、あっという間に GANA 君の 順番が来てしまいました。ゲスプリの使い方を知っているのは僕だけなので、 1 人で 2 台のゲスプリをいっぺんに使わなくてはいけません (苦笑)。最初 のうちは忙しくてひぃーでしたが、 GANA 君 & SHIGE 君に もゲスプリの使い方を教えたので、途中からはまた 1 台のゲスプリに専念 できるようになりました。2 人分の時間でも足りなくなりそうだったので、 かなり無茶をして制限時間を 30 分近くオーバーするまで印刷を続けました。 SHIGE 君の 番を待つという手もあったのですが、 GANA 君と SHIGE 君の あいだに一人入ってしまっていたので、それまで待ちたくなかったのです。 もっとも、GANA 君の分が時間切れになったあと、しばらくして SHIGE 君の 番も回って来たので、あそこまで無理をしなくても良かったのかもしれませ ん。
製本も大変でした。
なにしろ、60 ページ 200 冊 !
綴じる紙 (B4 の紙を半分に切って、B5 としたもの) の総数は 6000 枚 !NAO 君と K_O_ 君が手伝いに来てくれたのですが、 SHIGE 君は 途中で帰っちゃったので、結局 GANA・ NAO・K_O_・ 僕の 4 人で製本しました。
555 教室に入り込み、6000 枚の紙を各ページごとに分けて机の上に並べ、 1 枚ずつとってページ順に並べていきました。ところが、しばらく作業を続 けても、積まれた紙は全然減らないんです。1 ページ当たり 200 枚ですか らね。いつまでこんな作業を続けなきゃいけないんだと思うと、気が遠くな りそうです (ビラの袋詰めに比べれば、遙かにマシなんでしょうが(^^;))。
1 時間ほどたったころ、守衛のおじさんがやって来て、「君達、(教室 を使用するための) 許可は取っているのか ?」 本来、教室を使用すると きには許可がいるのです。しかし、許可が必要だなんて知らなかった僕た ちは、お説教をされるハメになってしまいました。しかし、おじさんのご 好意で隣の小さな 558 教室で作業を続けることができました。感謝。
- 恐怖の再発行
- 200 部刷って不足するなんてことは全く考えていませんでした。先 代の編集長のあじさんは「150 ちょいでいい」と言っていましたし、実際 昨年のオリパンフは 60 部以上も余っていました。今年も当然余ると考え た僕は、オリが始まると、「どうせ余るんだから、どんどん配っちゃえ」 といって、オリパンフを乱発しました。これがいけなかったんですよね (^^;。始めのうちは「売れ行きがいいなあ」とごきげんだった僕でしたが、 しばらくして、思ったよりペースが早いことに気付きました。
気付いたときにはもう手遅れ(^^;。1 日目が終わって残っていたのは、 僅か 30 部。2 日目は文系の日なので客は少なくなるでしょうが、それで も足りないことは明らかです。ビラで済ませようかとも思いましたが、文 系の人にもたくさん入ってほしい。となると、オリパンフを配らないわけ にはいかない。迷った末、結局再発行することにしました。
第一刷の印刷のときと同じように、僕・ GANA・ SHIGE の 3 人で朝早くから並んで印刷しました。発行部数も少ない (第二刷は 50 部) し、人手もあったので、初版のときほどは苦労しなくてすみました。
188 号に続いて、オリパンフまで再発行になるとは思わなかったなあ。 必要な部数を読むのって、本当に難しい。190 号はちょっと多めに刷っておくことにしよう。
いぬ。BBS
Tel. xx-xxxx-xxxx 300/1200/2400/9600/14400/28800 (V.34/V.FC) (bps)
(1 回線、24 時間運用)
mmm Rev. 4.1
オンラインサインアップ可、会費無料
取材の当日は、当然僕も部室に行くつもりだったのですが、直前にほかの用事が
あったのを思い出してしまったのでした。(^^;;)
やむなく NAO 君
に「代わりに行ってくれ〜」と頼んで、行ってもらいました。そんなわけで、当日何
があったのか、僕は良く知りません (苦笑)。詳しく知りたい方は、NAO 君に聞いてくださ
い。(^^;)
NAO 君の話による と、結局集まったのは 5, 6 人で、馬場さんはちょっとがっかりされていたそうです。 部室で写真を撮る予定だったのですが、東大の総務課から校内での写真撮影の許可が 下りず、正門前で写真撮影を行いました。
もともと話しを聞きに来たはずの馬場さんでしたが、取材では何も聞かれませんで
した。そのかわり、自分たちで TSG
の紹介文を書くよう頼まれました。この紹介文れは、CRUX さんが書いてくることに
なりました。
また、TSG
の取材のはずだったのに、なぜか HRD
さんがインターネットの原稿依頼を受けました。
CRUX さんの TSG の紹介と、HRD さんのインター ネットの原稿は、工学社発行の「キャンパソ」1995 年 6 月号に掲載されることになっ ています。
「--- そうなんです。あの日は TSG の N さんから電話があって、K 社の取材があるから来ないかと言われたんです。それで、 ああ TSG の取材なんだと思ったから出かけて行ったんです。薄暗い建物の 3 階でした。いつ もと何かちがうんです。TSG の取材のはずなのに「インターネット」がどうのこうのって。このときに気付くべき だったんです、みんなグルになって騙していたんですね。」
K 社の B と名乗る男は TSG の他のメンバーを利用して、言葉巧みに H さんを誘った。「インターネットとは何 か ? 」を初心者に説明しろというのだ。
無理難題である。こんな仕事は普通誰も引き受けない。かつて tnn.* でも「イ ンターネットって何ですか ? 」という質問が出たことがあるが、その質問をした 女性がさんざん馬鹿にされただけで、まともな回答は出されなかった。禁忌に触れ ることは許されないのである。「まともな回答」らしきものをしたら、一斉につっ こまれて社会復帰もできなくなることだろう。その上、その原稿の締切は 4 日後 で十分な時間はなく、「インターネットで何ができるか ? 」は他の人が書くので 書かせてもらえない、ページ数も少なく歴史をずらずら並べてごまかすこともでき ない、さらに H さんは TCP/IPなどを詳しく知っているわけでもない、という有り 様だった。これでは引き受けることになると、もはや適当なことを書いて逃げるし かない。しかし、断れば他の誰かを詐欺師にまつりたてなくてはならない。
その日は形式的に TSG の取材が執り行われたが、結局 H さんは B と事実上の契約をさせられてしまった。 TSG の 幹部 S (グループ内では法名で TEA と呼ばれている) が H さんを説得したからだ。
「『インターネットって何ですか、って (いぬ。BBS に) 書き込んでおけばいい。』 と言われたんです。そうしたら適切な答えが得られる、って。これならいい加減な ことを書かずに済みますよね。確かに以前その方法でうまくいったんです。それで 安心してしまって引き受けたんですが…。」
おわかりのように、幹部 S はあらかじめ下準備を進めておき、時期を待っていた
のだった。H さんは再び同じことを試すが、当然のように今回はうまくいかない。
--
Note 39 FreeTalk (FREE)
[ RESPONSE: 43 of 52 ]
Title: trashcan-4
Bytes: 97 Date : 1:32am 2/ 6/94 Author: H** (H**)
問: RISCマシンの生まれた背景とそのアーキテクチャーの特長について
簡単に述べよ。
H**
Note 39 FreeTalk (FREE)
[ RESPONSE: 47 of 52 ]
Title: trashcan-4
Bytes: 266 Date : 5:05am 2/ 6/94 Author: T** (っ**☆)
>問: RISCマシンの生まれた背景とそのアーキテクチャーの特長について
> 簡単に述べよ。
誰の授業の過去問なんだろう:-)
昨日一日中似たような教科書読み続けてたからなあ:-)
なんか坂村さんが出しそーな問題:-)
っ**☆
あ、でも TRON は SISC なのか:-)
Note 39 FreeTalk (FREE)
[ RESPONSE: 48 of 52 ]
Title: trashcan-4
Bytes: 1090 Date : 5:56am 2/ 6/94 Author: T** (っ**☆)
>>問: RISCマシンの生まれた背景とそのアーキテクチャーの特長について
>> 簡単に述べよ。
解答例:
マイクロプログラム制御により CPU に複雑な命令セットを自在に付けること
が可能になると、高級言語と機械語のセマンティックギャップを埋めることの重
要性が叫ばれるようになった。そのような背景のもとに生まれたVAX-/780アー
キテクチャは、非常に特殊化した命令を多数装備し、完全なる可変長命令体系を
取った。
しかし、VAX-/780 での応用プログラムのプロファイリングの結果、多数存
在する命令セットのうち、実際にCPU 時間のほとんどを占めるのはごく小数の基
本的命令セットのみであることが明らかとなった。また、パイプライン技術が進
むにつれ、命令長可変、命令実行時間可変、多数の特殊命令、といったものが、
効率的なパイプライン処理を阻害していることが明らかとなった。
このような背景のもとに、ハードワイヤード制御、非常に基本的な命令のみを
装備、命令長固定、命令実行時間一定、それによる効率的で高度なパイプライン
処理を行いその結果として高速クロック動作を行う、いわゆる RISC アーキテク
チャが提唱された。
# 10 分ちょい、ってとこかな。
っ**☆
採点してくれ TEA&その他:-)
Note 39 FreeTalk (FREE)
[ RESPONSE: 53 of 65 ]
Title: trashcan-4
Bytes: 279 Date : 2:48pm 2/ 6/94 Author: H** (H**)
>>問: RISCマシンの生まれた背景とそのアーキテクチャーの特長について
>> 簡単に述べよ。
> 誰の授業の過去問なんだろう:-)
わーい(^^)
ありがとうございます(^^)
問題を書いておくだけで、課題がひとつ片付いた!!
情報工学Iという、うちの学科の科目です。
H**@極悪01
--
結局、H さんは 1 人で詐欺行為をさせられる羽目になった。話が違う、と思った
そのときにはもう〆切の前日である。H さんは心を痛めながらも自ら詐欺行為を働か
ざるを得なくなった。しかも TSG
には一切責任はないという形で。
--
Note 4 FreeTalk (FREE6)
[ RESPONSE: 49 of 50 ]
Title: 質問
Bytes: 47 Date : 12:50am 4/17/95 Author: H ** ( H**)
「インターネット」とはなんでしょう?
H**
Note 4 FreeTalk (FREE6)
[ RESPONSE: 50 of 50 ]
Title: 質問
Bytes: 109 Date : 3:00am 4/17/95 Author: Chris (**くりす)
>「インターネット」とはなんでしょう?
どう答えてもつっこまれそうなこわい質問だよなあ:-)
****くりす
--
一般の人を騙して詐欺行為をさせる、これは全く新しいタイプの詐欺事件だったの である。H さんは現在、保護観察を受けながら TSG と K 社を訴え法廷で争っている。
事件の全貌が明らかになるには、まだ時間がかかりそうだ。
のようにしていましたね。配列の先頭ポインタを関数に渡して、そこで計
算するという形をとりました。これはこれでいいのですが、もっと複雑な
ベクトルの式にはこれでは苦しいですよね。やっぱり数学とまったく同じ
ように
int X[3], Y[3], Z[3];
Add_Vector( Z, X, Y );
Z = X + Y ;
のように書ければうれしいなあと思うでしょう。こういうことをこれから
可能にしていきます。
とかのようにしましたね。つまり
X.Set_Value(1,2,3);
です。これからしていくことは「X + Y」で指定した作業が行われること
です。つまり
クラス変数名 . 関数名 (引き数)
の形になりますね。ちょっと無理矢理な理屈づけですが、まあ飲み込んで
ください。
クラス変数名 演算子 引き数
00: class Vector{
01: int x;
02: int y;
03: public:
04: Vector(int a=0, int b=0 ){
05: x = a; y = b;
06: }
07: Vector operator+( const Vector& V ){
08: return( Vector( x+V.x, y+V.y ) );
09: }
10: };
11:
12: void main(void){
13: Vector X, Y, Z ;
14:
15: X = Vector(1,2);
16: Y = Vector(3,4);
17:
18: Z = X + Y ;
19: }
このプログラムの 4 行目から 6 行目の関数はコンストラクタですが、こ
の場合はコピーコンストラクタとして使われています。言っている意味は
解りますか ?
のようにクラス変数をあたかも関数の様に引き数を与えてクラス変数を宣
言するのです。コンストラクタの引き数が void の場合は () を付けずに
宣言します。また引き数が void でなくても引き数の指定を省略すること
ができます。ただしその場合はコンストラクタの引き数定義のところで例
えば
Vector X(1,2)
のようにデフォルトでの値を指定しておく必要があります。
Vector(int a=0, int b=0 )
そしてコピーコンストラクタっていうのは初期化ではなく、ううん、要 するにキャスト演算子なわけです。裏で何をしているかというと、まず臨 時的にクラス変数を作ります。そしてそのコンストラクタを起動して初期 化してから、左のクラス変数にそのメンバ変数の値を代入しているのです。 このようにしてクラス版のキャスト演算子ができあがります。こうして 15 行目や 16 行目のような芸当ができるのです。
この operator+ が + が演算子であることを示しています。あとは普通の
関数と同じです。
Vector operator+( const Vector& V )
class Vector{
double x;
double y;
double z;
public:
//コンストラクタ
Vector(double a=0, double b=0, double c=0 ){
x = a; y = b; z = c;
}
//ベクトル+ベクトルの多重定義
Vector operator+( const Vector& V ){
return( Vector( x+V.x, y+V.y, z+V.z ) );
}
//ベクトル−ベクトルの多重定義
Vector operator-( const Vector& V ){
return( Vector( x-V.x, y-V.y, z-V.z ) );
}
//ベクトル×スカラーの多重定義
Vector operator*( const double k ){
return( Vector( x*k, y*k, z*k ) );
}
//ベクトル/スカラーの多重定義
Vector operator/( const double k ){
return( Vector( x/k, y/k, z/k ) );
}
//ベクトル×ベクトルの多重定義(外積)
Vector operator%( const Vector& V ){
return( Vector( y*V.z-z*V.y , z*V.x-x*V.z , x*V.y-y*V.x ) );
}
//ベクトル・ベクトルの多重定義(内積)
double operator*( const Vector& V ){
return( x*V.x + y*V.y + z*V.z );
}
};
//使用例
void main(void)
{
Vector X(1,0, 0.0 , 0.0 );
Vector Y(0,0, 1.0 , 0.0 );
Vector Z;
Z=(X*2.0-Y*3.0)%X;
}
クラスのメンバ変数の情報隠蔽の厳重さはもう十分わかっているでしょ
う。でも、この隠蔽を時として煩わしいと思うでしょう。いちいちクラス
付属の専用関数にお願いしてその値を教えてもらったりちょっと変えたり
するのは、ある種の作業において非常に面倒になります。そこまでして情
報隠蔽を守らなくても、と思うようになります。
こういった要望から登場したのがフレンド修飾子です。フレンド、つま
りお友達です。お友達には、他の人には絶対見せない触らせないプライベー
トな領域をも許してしまうのです。ちょっとあまいんじゃないかなと思う
のですけど、そうなっているのです。
話がのろけました。もとに戻します。具体的に言うと、クラス定義部分
内で friend を冠した関数・演算子・クラスからは、そのクラスの
private メンバ変数・関数をもアクセス可能になるのです。
というわけで、先の演算子の話にまで戻ると、次のようにクラス内で定
義するのです。
演算子の引き数として 2 つの値を定義すると 1 つ目は演算子の前の変数
に対応し 2 つ目は後ろの変数に対応します。フレンドはメンバではない
のでメンバ変数の参照には当然クラス変数名が必要になります。このよう
に k*V 用と V*k 用のふたつを多重定義して用意することによって問題は
解決されました。
friend Vector operator*( const Vector& V, const double k ){
return( Vector( V.x*k, V.y*k, V.z*k ) );
}
friend Vector operator*( const double k, const Vector& V ){
return( Vector( k*V.x, k*V.y, k*V.z ) );
}
class Vector{
double x;
double y;
double z;
public:
//コンストラクタ
Vector(double a=0, double b=0, double c=0 ){
x = a; y = b; z = c;
}
//ベクトル+ベクトルの多重定義
Vector operator+( const Vector& V ){
return( Vector( x+V.x, y+V.y, z+V.z ) );
}
//ベクトル−ベクトルの多重定義
Vector operator-( const Vector& V ){
return( Vector( x-V.x, y-V.y, z-V.z ) );
}
//ベクトル×スカラーの多重定義
friend Vector operator*( const Vector& V, const double k ){
return( Vector( V.x*k, V.y*k, V.z*k ) );
}
//スカラー×ベクトルの多重定義
friend Vector operator*( const double k, const Vector& V ){
return( Vector( k*V.x, k*V.y, k*V.z ) );
}
//ベクトル/スカラーの多重定義
Vector operator/( const double k ){
return( Vector( x/k, y/k, z/k ) );
}
//ベクトル×ベクトルの多重定義(外積)
Vector operator%( const Vector& V ){
return( Vector( y*V.z-z*V.y , z*V.x-x*V.z , x*V.y-y*V.x ) );
}
//ベクトル・ベクトルの多重定義(内積)
double operator*( const Vector& V ){
return( x*V.x + y*V.y + z*V.z );
}
//ベクトル+=ベクトルの多重定義
void operator+=( const Vector& V ){
x+=V.x; y+=V.y; z+=V.z;
}
//ベクトル−=ベクトルの多重定義
void operator-=( const Vector& V ){
x-=V.x; y-=V.y; z-=V.z;
}
//ベクトル*=スカラーの多重定義
void operator*=( const double k ){
x*=k; y*=k; z*=k;
}
//ベクトル/=スカラーの多重定義
void operator/=( const double k ){
x/=k; y/=k; z/=k;
}
};
#define dt 0.
#define N 5
Vector G( 0.0, 0.0, -9.8 ); //重力ベクトル
Vector W( -50.0, 0.0, 0.0 ); //風の速度ベクトル
//物体運動管理クラスの定義
class Matter{
Vector P; //物体の位置のベクトル
Vector V; //物体の速度のベクトル
Vector A; //物体の加速度のベクトル
double r; //物体の空気抵抗係数
double m; //物体の質量
public:
void Set_Position( const Vector& Po ){
P = Po ;
}
void Set_Velocity( const Vector& Vo ){
V = Vo ;
}
void Set_Friction_Coefficient( double ro ){
r = ro ;
}
void Set_Mass( double mo ){
m = mo ;
}
void Simulate(void){
Acceleration();
Euler();
Draw_Ball();
}
private:
void Acceleration(void){
A = G - (r/m)*(V-W);
}
void Euler(void){
V += A*dt ;
P += V*dt ;
}
void Draw_Ball(void){
//適当な描画の命令を書いてください。
}
};
void main(void){
Matter Obj[N];
int n;
OpenDisplay(); //適当なグラフィック準備命令
for( n=0 ; n<N ; n++ ){
Obj[n].Set_Position( Vector( 0, 0, 0 ) );
Obj[n].Set_Velocity( Vector( 20*n, 0, 20*n ) ) );
Obj[n].Set_Friction_Coefficient( 1.0 );
Obj[n].Set_Mass( 1.0 );
}
while(!kbhit()){
for( n=0 ; n<N ; n++ ){
Obj[n].Simulate();
}
}
CloseDisplay(); //適当なグラフィック終了命令
}
//===========
// C++ソースファイル
//===========
class Vector{
int x;
int y;
public:
Vector(int a=0, int b=0 ){
x = a; y = b;
}
Vector operator+( const Vector& V ){
return( Vector( x+V.x, y+V.y ) );
}
};
void main(void){
Vector A(1,2), B(3,4), C ;
C = A + B ;
}
//==============
//アセンブラ出力ファイルの一部
//==============
_main proc near
push bp
mov bp,sp
sub sp,20
;
; Vector A(1,2), B(3,4), C ;
;
mov word ptr [bp- 4],1 ; Aのコンストラクタの起動
mov word ptr [bp- 2],2 ;
mov word ptr [bp- 8],3 ; Bのコンストラクタの起動
mov word ptr [bp- 6],4 ;
mov word ptr [bp-12],0 ; Cのコンストラクタの起動
mov word ptr [bp-10],0 ;
;
; Z = X + Y ;
;
mov ax,word ptr [bp- 4] ; A.x + B.x の計算
add ax,word ptr [bp- 8] ;
mov word ptr [bp-14],ax ; x成分の計算結果を保存
mov ax,word ptr [bp-2] ; A.y + B.y の計算
add ax,word ptr [bp-6] ;
mov word ptr [bp-16],ax ; y成分の計算結果を保存
mov ax,word ptr [bp-14] ; x成分をコピーコンストラクタへ代入
mov word ptr [bp-20],ax ;
mov ax,word ptr [bp-16] ; y成分をコピーコンストラクタへ代入
mov word ptr [bp-18],ax ;
mov ax,word ptr [bp-18] ; コピーコンストラクタからCへ代入
mov dx,word ptr [bp-20] ;
mov word ptr [bp-10],ax ;
mov word ptr [bp-12],dx ;
mov sp,bp
pop bp
ret
_main endp
どうですか ? びっくりしたでしょう。これは Borland C++ 3.0 でコンパイルし
たんですけどひどすぎますよね。最適化を行っても大差はありません。むしろあほ
さが激しく露呈されるだけです。他の処理系ならもっとましなコンパイルをしてく
れるのでしょうか? 僕は知りません。誰か教えてください。これを見てしまうと
ベクトルクラスを用いて物理シミュレーションすることが相反することがわかるで
しょう。汎用性と高速性の相反ですね。
解説します。このプログラムの基幹を成す木構造について説明しましょう。
すべての単語は根を同じにするひとつの木で管理されています。根から 27 本の
枝がのびていて各枝が単語の先頭文字の '\0','a','b','c', ... に対応していま
す。その各枝からまた 27 本の枝がのびていて単語の 2 番目の文字に対応してい
るわけです。この枝 1 本を管理するクラスが Branch です。枝は最終的にその単
語の意味を記憶している枝にたどり着くのですが、その枝も Branch によって管理
できるように無名共用体を使っています。つまり Branch クラスは 27 本分の次の
Branch クラスのアドレスまたは 54 バイト分の文字列が記憶できるようになって
います。あと Branch クラスはその内部処理のための関数を幾つか用意しています。
そして、この Branch クラスを統括するのが Tree クラスです。Tree クラスは与
えられた単語によって木に枝を付けていったり、意味をセットしたりまた、単語か
ら木を探索して意味を探すといったことをします。後は見ての通りです。わかるで
しょう。
// ******************************************************************
// * 多重分枝木構造検索クラス tree.cpp *
// ******************************************************************
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//============= 文字を添え字番号にするマクロ =============
inline int index( char c ){
if( c=='\0' ) return(0);
return( c-96 );
}
// ******************************************************************
// 枝クラスBranchの定義
// ******************************************************************
class Branch{
union{
char meaning[54]; //単語の意味を記憶する領域
Branch* next[27]; //次の枝のアドレスを記憶する領域
};
public:
Branch( void ); //コンストラクタ
void Set_Meaning( char* ); //メッセージの設定
void Print_Meaning( void ); //メッセージの表示
char* Return_Meaning( void ); //メッセージのアドレスの返値
Branch* Create_Branch( char ); //枝の設定とそのアドレスの返値
Branch* Return_Branch( char ); //下の枝のアドレスの返値
};
// ******************************************
// 枝クラスBranchのメンバ関数の定義
// ******************************************
//============ コンストラクター ===================
Branch::Branch(void){
//デフォルトでは次の枝は無いことにする
for( int i=0 ; i<27 ; i++ ){
next[i] = NULL;
}
}
//============ メッセージの設定 ==============
void Branch::Set_Meaning( char* na ){
strcpy( meaning , na );
}
//============ メッセージの表示 ==============
void Branch::Print_Meaning( void ){
printf("%s\n", meaning );
}
//======= メッセージのアドレスの返値 =========
char* Branch::Return_Meaning( void ){
return( meaning );
}
//====== 枝の設定とそのアドレスの返値 ========
Branch* Branch::Create_Branch( char c ){
return( next[ index(c) ] = new Branch );
}
//========== 下の枝のアドレスの返値 ==========
Branch* Branch::Return_Branch( char c ){
return( next[ index(c) ] );
}
// ******************************************************************
// 木クラスTreeの定義
// ******************************************************************
class Tree{
private:
Branch* root; // 木の根のポインター
public:
Tree( void ); // コンストラクター
int Make_Tree( char* ); // 木を作る関数
char* Search_Tree( char* ); // 木に沿って検索する関数
private:
void Add_Branches( char*, char* ); // 木に枝を付ける関数
};
// ****************************************
// 木クラスTreeのメンバ関数の定義
// ****************************************
//============= コンストラクター =============
Tree::Tree( void ){
root = new Branch ;
}
//=============== 木を作る関数 ===============
int Tree::Make_Tree( char fname[] ){
FILE* stream ;
char word[20],meaning[54];
//辞書ファイルの読み込み
if( ( stream = fopen( fname, "rt" ) ) == NULL ){
printf("\a\aCan't find the data file %s . \n", fname );
exit(1);
}
//新単語の登録
while( fscanf( stream, "%s %s", word, meaning ) != EOF ){
Add_Branches( word, meaning );
}
fclose( stream );
return( 0 );
}
// ============ 木に枝を付ける関数 ===========
void Tree::Add_Branches( char word[], char meaning[] ){
Branch* current=root ;
int n=0 ;
do{
if( current->Return_Branch( word[n] ) == NULL ){
//その文字への枝がない場合は付け足す
current = current->Create_Branch( word[n] ) ;
}else{
//その文字への枝がある場合はその枝に進む
current = current->Return_Branch( word[n] ) ;
}
}while( word[n++] != '\0' );
current->Set_Meaning( meaning ); //意味の登録
return;
}
// ========= 木に沿って検索する関数 ==========
char* Tree::Search_Tree( char word[] ){
Branch* current=root ;
int n=0 ;
do{
//文字によって枝を登って行く
current = current->Return_Branch( word[n] ) ;
if( current == NULL ){
//枝がない場合はnullをかえす
printf(" %s is not registered. \n", word );
return( NULL );
}
}while( word[n++] != '\0' );
current->Print_Meaning(); //意味の表示
return( current->Return_Meaning() );
}
void main(void){
Tree TSG; //TreeクラスTSGの宣言
char word[20];
TSG.Make_Tree("TREEDIC.DAT"); //Treeの構築
while(1){
printf("Input an English word = ");
scanf("%s", word );
TSG.Search_Tree(word); //単語の検索・表示
}
}
// ******************************************************************
// * 辞書ファイル treedic.dat *
// ******************************************************************
mastuuchi 松内良介、'93部長
ein 寺川愛印、'94部長、ライブラリアン
aji 安島雄一郎、'94編集長
Zephyr 八重樫剛史、'94会計
ichi 大野一、'94コンパ委員
taro 竹村太郎、'94コンパ委員
umb 吉田泰博、'94コンパ委員
rtwo 牧野貴樹、'94ICCC連絡委員
face 西本圭輔、'94部員
kms 嶋田真樹、'94部員
zzz 松浦宏樹、'94部員
crux 沢田保宏、'95DPSコンテンスト対策委員
nao 渡辺尚貴、'95部長
shige 中村成貴、'95副部長、コンパ委員
chomora 安田知弘、'95編集長
ko 岡村幸太郎、'95副編集長
nishi 西沢信行、'95会計、学友会連絡委員
sigma 小島司、'95コンパ委員
yu 渡辺雄一郎、'95コンパ委員、庶務係
gana 多賀奈由太、'95ライブラリアン
hanawa 塙与志夫、'95ICCC連絡委員
おっと大事なことを言うのを忘れていました。クラスメンバ関数の中身の定義が
あまり長くなるとクラス自体の定義部分が長くなって醜く (見にくく) なります。
そこでメンバ関数のプロトタイプだけをクラス内で定義して中身はクラスの外で定
義することをします。このプログラムでは全面的に採用しています。書き方はこれ
でおわかりでしょうが一応書式を述べると、
です。この :: をスコープ解決演算子て呼びましてね、これがいろいろいけないこ
とを可能にしてくれるのですよ。
返値の型名 クラスタグ名 :: メンバ関数名 (引き数型名){}
プログラムについての説明はこんなもんですね。実行結果は英語辞書では全然なくっ
て TSG
の 2 年と 3 年のハンドル名をアルファベットの小文字で入れるとその本名と役職が
出てくるわけです。
必ずアルファベット小文字で打って下さい。それ以外のチェックをしていないので
おかしくなります。
というわけで、なおの C++ クラス入門はこれにておしまいにしちゃいます。みな さんあとは適当に頑張って遊んでくださいませ。
では、本題に入ります。2 月 19 日に、へろ〜んとNIFTYのFLABOを見ていた
ら、気になる書き込みがありました。それは、LHA 2.66 で圧縮したファイル
を解凍すると、スペースが 00h になってしまうというものでした。LHA の作
者の吉崎さんの返事は、普通は解凍するときに CRC エラーになるはずだから、
LHA ではなくて他のプログラムのせいではないかというものでした。
ぼくは、解凍に LHE を使ってんじゃないのかとか、LHA が圧縮するときに
LHarc みたいなことをしてるんじゃないかなとか思ったんですが、その通りで
した(笑)。LHE はデフォルトでは CRC を計算しないので。(^^; 最初に書き
込みをされた方が、ぼくのところに LHE のバグではないかとメールをくださっ
たので、ぼくは、LHA のバグか仕様の変更だと思いますと返事を出しておきま
した。LHE のバグではないと言った理由は、LHA 2.66 が、ファイルの前に
256 個の半角スペースがあるものとして圧縮をするように動作が変更されてい
たからです。2.63 ではこのようなことはしていなかったようですが、2.66 で
はそうなっていました。2.64 と 2.65 は手元にないのでわかりません。まあ、
これは新しいことではなくて、LHarc でも行われていたみたいです。しかし、
LHA 2.13 あたりでは行われなくなりました。
ちなみに、LHA 2.13 で LHarc 互換の書庫を作っても、そのようなことは起
きません。なぜ LHA がファイルの前に半角スペースがあると仮定しなくなっ
たのかはわかりませんが、多分プログラムの都合でしょう。だって、スペース
があるとした方が、圧縮率がよくなることが多いでしょうから。でも、LHA
2.66 で再びそうするようになったのは、わりと分かりやすい理由があります。
その方がプログラムが簡単になるからです。これについて簡単に説明しようと
思います。
新しい LHA では、リストを探索して、文字列が一致しているかそれぞれ調 べるわけですが、リストが長い場合は、これから圧縮しようとする位置から何 バイトか後の位置でハッシュ表を引き、リストをたどります。このずれを ofs とします。お布施ではありません。:-) リストのそれぞれの要素で文字列の 一致を求めるのですが、そのときにofsだけ前の位置から一致しているか調べ ないといけないわけです。よって、ずらした結果が圧縮しようとするファイル の先頭よりも前になってしまうことがあるのです。
ただし、これだけではファイルの先頭よりも前からのコピーをするようには なりません。なぜなら、圧縮するファイルを読み込んでいるバッファの内部か らしかコピーはしてはいけないわけで、文字列の比較をしようとするアドレス が 0 より小さいかどうかはチェックしているので、バッファの先頭からファ イルを読み込んでいれば、ファイルよりも前からコピーはするわけがないので す。しかし、もう 1 つの理由から、ファイルはバッファの先頭から読み込む ようにはなっていないのです。
LHA では最大 256 バイトのコピーをするようになっています。つまり、圧 縮をするファイルを読み込んだバッファの残りが 256 バイト未満になったら、 次のデータを読み込まないといけないわけです。読み込むバッファのサイズを 48KB、辞書のサイズを32KBとすると、48KB-256 バイト圧縮したら、最後の 32KB+256 バイトをバッファの先頭に転送して、その後ろに新しく 16KB-256 バイト読み込みます。しかし、ディスクの読み込みは 2 のべき乗の方が速い はずなので、うまくないわけです。そこで、バッファのサイズを 48KB+256 バ イトとしておき、一番最初はバッファの先頭から 256 バイトの位置から 48KB 読み込むようにすれば、常に 16KB の倍数ずつディスクを読めるわけです。そ して、そのままではファイルの先頭よりも前からのコピーをしてしまうので、 バッファの先頭の 256 バイトには半角スペースを書いておくわけです。この ように、ディスクからの読み込みの高速化という点でも、プログラムを簡単に するという点でも有利なので、ファイルの先頭よりも前からのコピーをするの は自然なことなわけです。
しかし、いくら自然だからといって、勝手に仕様を変更されてはたまりませ ん。-lh6- ならまだ開発中ということで許されるとは思いますが、-lh5- でも そうなっているのです。まあ、プログラムは共通なんだから当然ですが。だか ら、LHA 2.66 で圧縮すると、LHE でも lfd. でも miel でも解凍できないも のが出来ることがあるのです。もっとも、LHA では解凍できるので、文句をい うのはひどいのかもしれませんが。ぼくは FLABO の書き込みを見たときに、 LHA のバグだと思いますと書いたのですが、なぜか無視されました。ぼくは、 これは LHA の作者からの挑戦状と受け取りました (笑)。
LHA 2.66 のダウンロード数を見たら、2 月ですでに 4800 以上だったので、 これは LHE でもなるべく早く対応した方がいいなと思い、4 月 8 日に LHE 1.02 をアップロードしました。最初は LHA の仕様変更に対応とか書こうと思っ たけど、いやみなのでやめました (笑)。そうするとわざわざバージョンをあ げる理由がなくなってしまうのですが、486 用の差分をつけるようにしたし、 一応、新しく T コマンド (書庫のテスト) をつけたし、秋沢淳子さんのお誕 生日だからいいかなということにしました。(^^; ドキュメントに、T コマン ドは何に使うのでしょうと書いたのですが、わかった人はいるかなあ。あれは 当然、SFA がバグってるかどうか調べるのに使います。でも SFA を作ってる ことはだれにもわからなかったみたいです。(^^;
SFA も LHA と同じようなプログラムなので、何も考えずに作るとファイル の先頭よりも前からのコピーをするようになります。でも、ぼくはおこってい るので、LHA と同じことはできないなと思い、対策を考えました。でも、いい 方法が考えつかなかったので、非常にせこい方法にしました。それは、ずらし た場所で文字列を比較するときに、バッファの先頭から 256+ofs バイトのと ころから前では常に比較をしないという方法です。こうすると、バッファの先 頭まで正常なデータがあるときでも比較をしなくなるので、辞書のサイズが小 さくなるということになりますが、ちょっとだけなのでまあいいでしょう。 (^^;
ちなみに、あれは LHA のバグだと言ってもいいと思います。だって、自己 解凍のルーチンは、例のファイルには対応していなくて CRC エラーになるか らです。でも LHA の作者には教えてあげない(笑)。
SFA ですが、まだ新しい書庫を作ることしかできません。(^^; でも、ディ レクトリ付きで圧縮できるようにはなったので、多少は使えるんじゃないかと 思います。でも、一度に圧縮できるファイルの数は 1000 個くらいです。がん ばればもっと増やせますけど、すでにメモリが 320KB 必要なので、あんまり 増やさなくてもいいかなと思っています。でも、そのうち増やすかもしれませ ん。(^^;
ここまでできれば書庫の更新ができるようにするのは簡単だし、実はもう少
し速くできるんじゃないかなあと思っていますが、5 月 17 日に公開しなくて
はいけないので、今回はここまでにします。去年の 5 月 17 日に FLABO にアッ
プロードしたやつはほとんど役に立たないけど、ぼくは 286 で巨大なファイ
ルを圧縮するのに使ってました。今年のは使えるようにしようと思ってるので、
みなさん使ってください。(^^;
ちなみに、前の SFA はソース付きで PACK5000 に入っています。(^^;
5/16 (火) 15:00〜
ということにしてありますが、この時間に集まれる方はあまりいないと思うので、
他の日・時間に変更しようかと思っています。取材のときに来られそうな方はコン
パのときに、都合のよい日時を大至急僕に言ってください。
お願いします。
目標は、「C で歌って踊れるプログラムを作るっ !」です (笑)。(by ちょもらんま)
小島 司
tel xx-xxxx-xxxx
g441036@komaba.ecc.u-tokyo.ac.jp
QZD03022@niftyserve.or.jp
sigma@いぬ。BBS
sigma.tsg@ICCC
☆光
78 ページをご覧ください。これが、本年度のビラです。ちょも らんま氏は、「文面が少し真面目すぎたかな ? 」といって心配しておられましたが、 なかなかどうして、これでも十分にカマしていらっしゃいます。このビラをみて、ど んな新入生が入ってくるか、とても楽しみです。
★影
月はなぜ満ち欠けをするのでありましょうか ? 言うまでもなく、月には太陽の光
の当たる部分と、当たらぬ部分があるからなのです。このように、この世の万物には、
光の当たる部分と当たらぬ部分があるものなのです。
本年度のビラも、例外ではないのです。78 ページのビラが光の
当たる部分であるとするならば、影の部分、つまり没になったビラがあるのです *13。79 ページに掲載されておりますの
が、その没になったビラです。ほんのひとときの暇つぶしに、どうか見てやって下さ
い。
なお、ちょもらんま氏が申しますには、この没ビラを見て「目が腐った」「頭痛
が止まらない」等の苦情は、一切受け付けないそうです。
サークルオリ:一号館109 部室:学生会舘305 代表者:渡辺尚貴 xxxx-xx-xxxx
TSGは、東大を代表するコンピューターサークルです。全国的に有名なフリーソ
フトウェアの作者も大勢います。初心者もいて、ワイワイガヤガヤと楽しくやってい
ます。TSGって表向きは理論科学グループってことになってますが、じつは「テニ
ス、スキー、ゲーム」の略なのです (ホントカナ) 。気軽に遊びにきてください。
代表者 渡辺尚貴 xxxx-xx-xxxx
−ねえ、太郎君、おもしろいビラを見つけたのよ。
−ほう。なになに、「TSG」?
−そう! TSG。正式名称は理論科学グループ。東大を代表するコンピューターサ
ークルなのよ。
−ふうん。それで?
−TSGのメンバーには全国的に有名なフリーソフトウェアの作者やハード工作の達
人がたくさんいて、とっても刺激的なの。平安京エイリアンや98用TeXのプリ
ンタドライバを作ったのも、TSGなのよ。
−へぇー。でも、初心者には近寄りがたそうだね。
−大丈夫。TSGにはプログラムを作らない人もいて、ワイワイガヤガヤと楽しくや
っているし、それに、TSGって表向きは理論科学グループってことになってるけ
ど、ほんとは「テニス、スキー、ゲーム」の略なのよ。
−なかなかおもしろそうなサークルだね。でも、今日の花子さん、なんかへんだよ。
いつもの花子さんではないみたいな……ややっ さては貴様、花子さんに変装した
TSGの回し者だな!?
−おーほっほ!! バレたとあっちゃぁしょうがない。あたいの本当の名はね、亭絵
洲慈意子(ティーエスジーコ)っていうのよ。亭絵洲慈意子。サッカーのジーコじゃない
わよ。このビラを読んでTSGに興味をもったら、4/10・11のサークルオリ
のときの109教室もしくは学生会館305の部室へいらっしゃい!!
そう言うやいなや、亭絵洲慈意子は地面に煙玉を投げつけた。炸裂した煙玉は当た
り一面を煙の海と化し、全く視界がきかなくなった。
やがて煙がおさまったとき、もはや亭絵洲慈意子の姿はなかった。ただ一人残され
た太郎は、あまりのばかばかしさに、ぼーぜんと立ち尽くすしかなかった……。
(文責:安田知弘 この文章……我ながら感動ものだっ!!)
ESDI HD が動きました。w(^o^)w
ともあれ、どうぞ合宿にお越し下さい。(小島司)
秋沢さんに会った。でも今は、いつだってひまわり。 (TEA)
この部報の NAO
率は何パーセントかな。オリパンフ号では 40% だったけど。今回も休み中に、ひね
もすのたりのたりかなとつれずれなるままに書きつくれば、やっぱりあやしうものに
なりにけりでした。
分科会いよいよ開始。とりあえず C と Pascal をやろう。みんな参加してね。
(NAO)
不思議だ。なぜ今回はこんなに原稿の集まりがいいんだろう ? 190 号の総ペー ジ数は 80 ページ。130 号を抜いて部室に現存する部報では、もっとも厚いものに なります。今年は TOWNS ユーザーも 3 人入ったし、めでたい、めでたい。(ちょ もらんま)
発行者 渡辺 尚貴
編集者 安田 知弘
HTML化 多賀 奈由太
発行所 理論科学グループ
〒153 東京都目黒区駒場 3-8-1 東京大学教養学部内学生会館 305 TEL 03-5454-4343