「どつぼ」の記録・その2


ウィルスもらっておおはしゃぎ

97/06/07

もう珍しくないかも知れませんが、私は取引先とのやり取りをほとんどe-mailを使って行っています。電話だと聞き間違いがあったり、言い間違いがあったりしてそれがトラブルの元になりかねないのですが、e-mailでやり取りすればどんなことを言ったのかばっちり記録が残ります。また集中力が高まっている時に電話がかかってきて集中がとぎれるのが何より嫌なのです。相手先にもなるべくe-mailを利用してくれというように言ってあります。e-amilが駄目ならFAX。もちろんFAXソフトを使って送ります。よっぽどの緊急事態でない限り、電話は使いません。

e-mailといえば、最近TVなどで良く紹介されるようになったMS-WordとかEXCELで作ったファイルに感染するマクロウィルスがあります。まあ動作原理なんかは調べたいなら自分で調べて下さい。不特定多数にウィルスの動作原理(それを知っていれば作れるような情報)を教える気にはとてもなれませんけど。まあ、調べるにしても、私は調べたことはない(けど何故かウィルスの基本アルゴリズムだけは知っている(^_^;)ので良く分からないのですが、どこかの文献に載っている何てことは期待出来ないので(^_^;、自分でウィルス入りの文書を探してきて、それを感染覚悟で読むとかするんでしょうね。当たり前ですが調べて動作原理が分かったからといって似たようなウィルスを配布することは、コンピュータの利用者として道義的に許されないだけではなく、立派な犯罪です。作者が特定出来たら逮捕されるでしょう。ご注意のほどを。

このマクロウィルスですが、かなり深刻な被害が出ている所もあるようです。私の仲間内では、この手のウィルスの存在は基本的なアルゴリズムも含めてとっくの昔に知られていたのですが、その時は「普通そんなバカでかい.docとか.xlsとかを送るかぁ」という感じでした。(^_^;でも最近はファイルの添付も簡単に出来るようになって結構色々な所に配られてしまうみたいですね。

実は私は今までウィルスの被害に遭った事も、ウィルスの入ったファイルを見つけた事もありませんでした。まあ、プログラマーとして製品を作っている以上、ウィルス入りプログラムを一般に配布したら、いやある種のパターンがウィルスに似ていると判別されただけでも、大変な事になります。万が一ソースファイルを消されでもした日には悲惨です(^_^;。そういう意味では気をつけていました。でも実際にウィルスにお目にかかったことがないので結構気楽なものです。(^_^;

ところがとうとう私のウィルスバージンが奪われる日がやってきました。(^_^;とある取引先からウィルス入りの.xlsファイルが送られてきたのです。送られてきたファイルを開こうとしたら、「このファイルにはマクロが云々」と表示されます。この時点でおかしいなとは思いましたが、とりあえず必要なのはそのファイルに書かれているデータだけだったのでマクロを無効にしてファイルを開き、必要な部分だけをcsvに変換して、必要なデータだけを取り出し、仕事を続けます。

仕事が一段落した後、気になってマクロ部分を読んでみます。当然この時もマクロは無効にしていますが、excel97の場合マクロが無効でもマクロの編集・閲覧だけは出来るみたいです。評判の悪いoffice97だけどここはウィルスチェックをするためにはいいかもしれない。それはさておき、実際にマクロを見てみると、ぱっと見ただけで「おお、これはマクロウィルスっぽいプログラムだ」と分かる作りです。(^_^;早速そのファイルをウィルスチェ〜ック!!。ものの見事にひっかかりました。おお、これが世に名高いウィルス、しかも最近有名になったマクロウィルス!変な話、ちょっと感動。(^_^;ウィルスって本当にあったんですね。(^_^;;;ウィルスの被害が出るのは勘弁だけど、初めてウィルスの実物が手に入ったと思ったらなんだが>うれしくてうれしくて。(^_^;何がうれしいのか世本人もよく分からないのですが(^_^;。まあそんな個人的な感情はともかく、必要な処置を始めました。

まずは、そのウィルスプログラムが他のファイルに感染していないかのチェックです。同時に送付元にウィルス感染している旨伝えるよう手筈を整えます。手筈を整えるというのは、連絡自体は他の人にやってもらったからです。私は何をやっていたかって?もちろん、そのウィルスプログラムの解析に決まっているじゃないですか。(爆)仕事なんかそっちのけでそのプログラムの解析にかかります。

不幸にしてというか、幸いというか(^_^;そのウィルスプログラムは作りがとってもシンプル(^_^;で、全体で20行ほどしかないのでざっと読んだだけで、やっていることは容易に想像出来ました。感染手段はこんな感じだから、感染しているとこんな風になっているはずだけど、私のマシンにはその兆候はないな。ふむ、文書を壊したりシステムをめちゃめちゃにするタイプではなくて、たんに繁殖するだけか。つまらん(^_^;、俺だったらあそこをああして、それからこんな風にしていけば気がつかれないうちにシステムをめちゃめちゃに…あ、いかんいかん。危うくダークサイドにはまる所だった。(^_^;まあ、こんなことを仕事中、しかもめちゃめちゃ忙しいにも関らず読んで遊んでいた訳です。(^_^;あ、そんなことをやっている私の方がもっとダークサイドかな?((爆)

まあ、15分ほどで一通り読み終わって動作原理が分かった所で、必要なデータはすでにcsv形式で保存してあったので、感染したファイルは消してしまいました。空いているexcelがインストールされていないマシンにそのウィルスを飼っていてもよかったんですけどね。(^_^;まあ、間違いが起きそうな芽は摘んでおくに越したことはありません。

で、この件に関して、うちの会社が被った被害ですが、もともとウィルス被害に備えてウィルスチェッカーを用意した費用を除けば「ウィルスに感染しているよ」という電話連絡をした費用、おそらく200円くらい?+私が仕事そっちのけでそのウィルスで遊んでしまった分の時給換算で500円くらい。おお、立派な被害額。(^_^;でもこれってウィルス被害っていうよりもほとんど私が遊んでしまったという被害だから、ひょっとして主要な加害者ってウィルス作者じゃなくて私なの?(^_^;;;まあ私の場合にはいつでも遊んでいるから(^_^;、実質被害は送り主への電話代くらいで済みました。不幸中の幸いというか、不幸だったけどその中ではトビっきりのラッキーパターンだっというか。(^_^;

ウィルスプログラムは動作原理さえ分かってしまえば私みたいなヘボプログラマーでも作れてしまうという恐さがあります。ヘボでも作れるようなプログラムなので沢山のウィルスプログラムが氾濫している訳です。ただ、普通の生活を送りたいなら絶対作ってはいけない種類のプログラムでしょう。また世の中に受け入れられる精神状態なら作らないものでしょう。繰り返しますが、このような種類のプログラムは作らないで下さい。作って自分で楽しむ分にはあれこれ言いませんが、間違いであってもいったん誰かの手に渡ってしまったらその瞬間に犯罪者ですので念のため。

また、自作でなくてもウィルスを配布した瞬間にコンピュータユーザーとしてのあなたの生命は終りだと考えて下さい。自分が作った訳でもないウィルスを他の人に渡してしまった時でも同じです。考えても見て下さい。そんなウィルス入りのものを送ってくるような人の(たとえそれが故意ではないにしろ)送ってきた.docなり.xlsなりプログラムなりを今後も信じられますか?私だったら「もうテキストファイル以外は送ってくれるな。テキストファイル以外で送ってもらっても今後は一切無視する」というでしょうね。そんな人の送ってきたファイルは一切信用しない。これくらいの厳しさは自己防衛(保身)のために必要です。

残念な事に今のコンピュータシステムはウィルスに対しては「自己防衛」ということしか出来ません。皆さんも、間違っても他の人にウィルスを牧散らすような事はしないように気をつけて下さい。お願いします。<(_ _)>

でも私がやっちゃたら許してね。(爆笑)

ウィルスに関しては一杯書かなくてはいけないと思う事があるのですが、とりあえず今日はこれまで。(^_^;でもパソコン(パーソナルコンピュータ)というのはそういったセキュリティーの部分まで含めてユーザーが管理するという事で安くなったんだということは覚えておいて損はないでしょう。(本当かぁ(^_^;)便利なコンピュータですが、知らないうちに他の人に取っては凶器になっているかも知れません。そこらへんを肝に銘じたうえで使って欲しいと思います。まあ、ネットワークにつながっていなければどうって事はないんですけど、これを読んでいる人がネットワークにつながっていないとは考えられない。(^_^;

ところであなたのコンピュータ、ウィルスに感染していませんか?ほら、最近windows95の動きがおかしくありませんか。ほ〜らほ〜らだんだんあなたはウィルスチェックしたくなってくるぅ…。え、Windows95が巨大なウィルスだって?(^_^;そ、そ、そ、それはですねぇ。き、き、きっとですねぇ、か、か、考えすぎ、そうそう、か、か、考えすぎっていう、一つのねぇ、ものなんすよ。きっと多分。(^_^;


Mailing Listでの事件で考えたこと

97/06/06

今回の話は私の失敗ではありません。似たような事は結構あるかも知れませんが、私は事実関係の調査をしていませんので、実際には今まで起こったことがないかも知れません。詳しいことは自分で調べるなりして下さい。

Mailing List(ML)というのをご存じでしょうか。ご存じないかも知れませんが、このページのあるJANISのサービスには1月500円でこのサービスをしています。実はこのサービスをしているかというのが私のプロバイダー選びの1つの基準になりました。もっとも今の所、利用していませんけど(^_^;。それほど、「知っている人にはたまらない魅力」をもっています。

MLというのは一言で言えば同報e-mailサービスのことです。AさんがそのMLのアドレス、例えばfoo-ml@dokoka.or.jpにメールを送ると、そのMLに登録しているBさん、Cさんなどに同じメールが届くというものです。どちらかというと、特定の興味を持った人達に対しての情報交換の目的でMLが設定される事が多いようです。ニュースグループのカテゴリーも特定の興味を持った人達の情報交換が行われていますが、ニュースグループとはまた違う趣があります。

私もいくつかのMLに参加しています。一番積極的に発言しているのが大学時代の仲間で作っているMLです。これは参加者限定のMLですが、参加制限のない(といってもある事柄に興味のある人だけを対象にしたものですが)MLは沢山あります。fjのどこかにそのようなMLの一覧(ただし全部のMLを網羅したものではない)があるはずです。やりだすと結構病みつきになりますが、興味があったらどこかのMLに入ってみて下さい。ただし、活動が活発なMLだと1日で読み切れないほどのメールが届く事もあるので念のため。(^_^;

で、あるMLで起こった事件です。すでに投降されたメールが妙なsubjectと前振りを付けてもう一度全ての登録者に送り直されるという事がありました。一回だけならまだしも、次々と送られてきます。そこのMLは大変に活発で一日10〜20位のメールのやり取りがあり、それらは1000人ほどいる登録者すべてにメールで送られます。ところが、それがある瞬間を境にすべて変なsubjectと前振りをつけてもう一度送られてくるようになったのです。

運の悪い事にちょうどそのMLではある話題で話が盛り上がっていた時だったので、流通量がかなり多くなっていました。で、そこへその変なメールが入ってきて、送られるメールの量がめちゃめちゃ多くなってしまいました。さすがに「何か変だ」と感じたのか、普段そのMLに活発に投稿している人もpostを控えています。で、送られてくるのは意味不明のメールばかり。(^_^;

しばらくして、原因を作った人が謝罪と原因説明のメールを出してきました。なんでもその人は社内LANでそのMLからのメールを受け取ろうとしたのですが、何かの不備で、そのメールを受け取れないようになっていたようです。で、受け取れないものだから、「受け取れなかった」とそのメールサーバーが返事を出す訳ですが、エラーメッセージの宛て先がMLサーバーになっていてエラーメッセージが参加者全員に配られていたという事でした。なんでもL社の古いメールサーバーを使っているとそんなことがよくあったようです。もっとも、原因を作った人はそのメールサーバーの単なる利用者だったので、最初は訳が分からなかったようですが、一応対処してくれたみたいです。

この事件に関しては、原因を作った人が誠意をもって対処してくれたし、ダイヤルアップユーザーだと変なメールが沢山来てすごく迷惑だったかもしれないけど、私自身はLAN接続だった事もあって、被害をそれほど被っていないので怒る気もありません。第一いつ何時、私が同じようなミスをするとも限らないし。(^_^;

ただ、この事件を通して思った事があります。Internetが世の中に広く普及するにつれて、一人の人が自分で接する世の中の広がりが確実に広がったと思います。基本的にそれはいいことだと思うのですが、接する範囲が広がったり便利になった分、単純な失敗で思いもよらない所に迷惑をかけたり、逆に迷惑を被ったりする危険性も増えたのではないでしょうか。

さらに考えを押し進めると、残念な事に、世の中には悪意をもってコンピュータを使ったり他人のコンピュータのデータを破壊するような愚かな人もいます。接する世界が広がったということは確実にそんなダークサイドに身を染めた人との、侵入をされないように気をつけるとかといったレベルでの付き合い方も考えていかなくてはいけないということです。あなたは大丈夫ですか。あ、考えてみたら私が一番危ないや。(^_^;

ちなみにこういった悪意をもって他人のコンピュータに侵入したり、データを壊したり、ウィルスを作ったりする人をクラッカー(cracker)と呼びます。コンピュータをいじっている人間にとってこれは最低の軽蔑用語です。その逆がハッカー(hacker)。こちらは、新しく、独創的で、技術的に価値の高いプログラムを作る人に捧げられる最高級の誉め言葉です。雑誌や新聞などで「ハッカーがどこそこに侵入した云々」という場合、大抵crackerの間違いです。お間違えないようにお願いしますね。(^_^;だけど、雑誌や新聞だと大抵システムを破壊するのはハッカーなんですよね。実際にはクラッカーが破壊してハッカーが復旧しているのがほとんどのはずなのに。ここらあたりに記者が固定観念で取材しているなぁ、売らんかな主義で取材しているなぁと思うんだけど、それはまた別の話。(^_^(ここだけ森本レオ調でお願いします-読み筋は王様のレストラン)


身に覚えのない名前を使って失敗

97/06/04

C++とVisual Basicを知っている人向けの話題です。まあどちらかでも分かっていれば読めるとは思います。

私はキータイプが苦手です。一応、会社に入った時にタッチタイピングを習ったのでキーボードをそれ程見なくても、キーは打てます。でもしょっちゅう打ち間違えます。キーボードの中で一番使用頻度の多いのは修正用途のBSキーでしょう。

1時間程度ず〜とコーディングをしていて、いざコンパイラに通してみたら、でるわでるわエラーの山なんてことも結構あります。プログラマーがキータイプがうまければ勤まる仕事という訳でもないしね。(最低限のタイプ速度は必要かもしれないが)(^_^;コンパイルの段階で出るエラーなんてのは大抵はタイプミスですし、そういったタイプミスとかはちゃんとコンパイラがチェックしてくれる。そもそもコンパイルが通らないのに製品を出荷する訳はない(^_^;、と思って安心してタイプミスをしているような人間です。

なお、タッチタイピング(touch typing)は別名ブラインドタイピング(blind typing)とも言います。blind typingを直訳すると「めくら打ち」になってしまうような気がして、これって「キーボードを見ないでtypingする」という意味と違ってきてしまう(^_^;。そんな理由でタッチタイピングの方を好んで使っているだけです。どちらでもキーボードを見ないでキーボードを打つという意味は同じです。

どちらかといえば障碍者に冷淡な立場の私ですから(そんなこといって非難が巻き起こったらどうしよう?(^_^;)、blindという言葉を使っては視覚障碍者に気の毒だと配慮した訳ではありません。それとももっと配慮して「視覚的にチャレンジされた人流のタイピング」とか言ったほうがいいですか?(^_^;なお、私はこれは個人の好みだと思うのでblind typingという言葉を使っている人を非難するつもりはありません。

話を元に戻します。いい加減ですが、+と-の打ち間違えなんてのは、ちょっと動かしてみればすぐ動作が破綻するので分かりますし、一文字だけ違う意味のに通った変数(X1,X2とか)なんてのは使わないことにしているので、今までそれ程タイプミスで痛い目に遭ったことはありませんでした。多分、私以外のプログラマーでもそんな考えを持つ人が少なくないと思います。でも今日、さすがにその考えを改めなければいけないな、と思うことにぶつかりました。

問題になったのは、Visual Basicで作った部分で、大体こんなコードです。C++ユーザーのために若干コメントを補足しておきます。

(Form MyFormから抜粋)
option explicit '変数宣言を必須にする
...
private hogehoge() 'MyForm::hogehoge()の実装
dim lngCnt as long 'ある種のカウンタ
...(lngCntへの設定やらなにやら)
some_global_var = Count
...
}
ぱっと読んで分かる通り、Countなんて変数はMyFormやhogehoge()内では定義されていないので下線部は
some_global_var = lngCnt
が正解です。ところが、これがコンパイルする時に通ってしまったのです。普通だとCountという変数はMyFormのどこでも宣言されていないので、「Countなんて変数は定義されていない」とエラーになるはずです。では、何故通ってしまったか。

実はFormにはCountというプロパティーがあったのです。C++の言葉で言うと、MyFormの親クラスのFormクラスには公開データメンバーのCountがあったのです。これはMyFormのソースだけ見ていたら絶対分かりません。(^_^;この部分は実は私が書いた所ではなかったせいもあって、Countがどこか、MyFormで定義されているものだと思って探しまくりました。(T_T)おかしいな、と思って言語のhelpを見てみたら分かった次第です。

幸いな事に、これはそれほど事件にはなりませんでした。some_global_varは1かそれ以上であり、1の場合に特別な動作、それ以外では普通の動作をするという風になっていて、問題はlngCntが1の時だけ起きるのですが、既に出荷済みの製品ではCountも、lngCntも1より大きかったからです。今回出荷済みの製品を初めて特定用途向けにした製品でlngCntが1になってしまったので問題が発覚したのです。今回は、ちょっと動かしてみれば変な動作をしているのが分かりましたし、問題の特定や修正も大した作業ではありませんでした。あとはさも何事もなかったように特定用途むきの製品を出荷するだけです。やれやれ。

でも、自分で宣言していなくて、間違ったらコンパイラなりがエラーを出してくれると期待しているような私のようなヘボプログラマーに取っては悪夢です。C++だったらうっかりタイプミスをした関数が実は基底クラスで定義されていて、何事もなくコンパイル出来てしまうというのは考えられます。全部C++でコーディング出来ればトレースしてみればすぐ分かるんですが、なかなかそうもいきません。第一、一段の継承だったらまだしも、ず〜と親に遡らないと分からないようだったら調べるのが大変ですよね。まあ、今回の事例のように、動かしてみればすぐ何かが変で再現性もばっちりだとdebugするほうもある程度楽なんですけどね。

ひょっとしてこんな経験をした事のある人は私だけ?(^_^;


ファイト一発!40ページ

97/05/30

前にも言いましたが、私は今年入社してきた新人のプログラム研修のアシスタントをやっています。3〜4人で講師一人とその他アシスタントのチームを3チーム作って、それぞれのチームがC言語、SDK(C言語ベースの開発環境)でのWindows Programming、MFC(Microsoftが提供するC++ベースでのライブラリ)を使ったWindows Programmingの研修を担当します。

私は中間のWindows Programmingのアシスタントになりました。人に教えるほど偉くはありませんが、つまずいた経験だけは人並みにあるハズだし、それがいくらかでも役に立つかもしれません。また教えることは自分にとってとってもいい勉強になります。講師じゃないから、忍法「ちょっと待たして同僚に聞く」が使えるので気が楽というのもあります。(^_^;

で、C言語研修が終りそうになった時、チームが集まってミーティングを開きました。私は忍法が使えるのでへらへらミーティングに行ったのですが、何やら雲行きが怪しい。(^_^;講師が忙しいから、講義を一部アシスタントで肩代わりしてくれ、MFCチームの担当期間が短いからC++の文法解説もこの期間にお願いする、という事になっていました。

アシスタントは私と先輩のKさん。結局WindowsでもIMEの制御とか、プロセスとかスレッドなどの制御、注意点をKさんが、C++の文法解説を私がやる事になりました。Windowsプログラマーとして失格な私でも、C++の解説くらいは使っているんだからできるだろ?文法解説といっても、読める程度、詳しい内容は参考書なりVC++のリファレンスを読んだり、自分で勉強すればいいくらいに説明してくれ、それくらい貴様でもできるだろ?という先輩方の配慮です。(^_^;

自分で言うのも何ですが、この講師を担当した人と先輩のKさんは、私みたいなへぼとは次元の違う、腕のいいプログラマーです。まあ、せっかくアシスタントになってくれたんだし、仕事がないのもつらいだろう、こっちも忙しいから、任せられるものは任せてしまいたいとでも思ったのでしょうか。(^_^;ま、そんな訳で仕事をもらった訳です。

こっちも、参考書はあるだろうし、それに沿って「ここは重要だ。読んでね」位の指摘をすればいいかな、くらいに考えていました。期間は3日。まあ、3日位の研修でC++がマスターできるほど世の中甘くはありませんが(^_^;、その後2週間位の自習期間があるので、重要な点だけ指摘しておいて、あとは研修生の頑張りに期待するだけです。

そんな講義だったら前日に準備すれば十分です。で、前日から準備に入りました。ところがですね、研修生に聞いてみたら、C++の参考書が、何の手違いか、前日になっても用意されていませんでした。じゃあ、私は一体何をしゃべればいいの?(^_^;

参考書は届かない、講義は明日から。しかたがないのでC++の文法解説の初歩の初歩、というテーマで講義用の資料を作り始めました。まあ、MFCへの導入という事ですから、普段私が使っているC++の機能を説明していけば、私はC++をそんなに深く使っている訳でもないから、大して量はないだろうと考えていました。はい、そこでせせら笑った方、正解です。こうやって「どつぼ」にはまっていく訳ですね。そんな人はもう読む気力も失せているでしょうから、これから先は読まなくても結構です。(^_^;

普通、この手の資料だと導入部で「オブジェクト指向は云々」とか「歴史的には云々」という話が出るのですが、私の作った資料には「この資料は入門書を読む前の、いわば導入部のための導入部だ。おおざっぱなイメージとかサンプルだけは書いてあるから入門書とかリファレンスとかは別の本を見てね」と書いてあります。もう、ここら辺で半分投げているのが分かります。(^_^;

ただ、導入部のための導入部というのには訳があります。ちゃんと導入するための資料が1日やそこらで出来る訳ない、まして私に書ける訳がない。(^_^;研修生には「いい入門書を選ぶのも研修のうち」とかいってごまかしましたが、実際はシロウト講師なんてのはその時になってばたばたするものです。(^_^;このページ、研修生は読んでいないだろうな。(ちょっとドキドキ)

まあ、気楽な気持ちで書き始めました。で、この手の文章を書いていて思うのは、「アウトライン編集が出来て本当に楽」ということです。

まず、良く使うのがクラスの継承と、関数のオーバーロードかな、と思って書き始めます。とりあえず章のタイトルを決めて、本文を書き始めた後、「あ、これは別の章に分割したほうがいい」とか「こんな話題も入れたほうがいい」と思ったら章のタイトルだけ書いて、今書いている本文だけを書き進めます。書き上げたら、さっきタイトルだけ書いた部分を書く。まあ、それを繰り返して全部を書く訳です。

アウトライン編集の場合には、「書くことを決めてから書き始める」ということもできます。まず「こんなことを書きたいな」と思うトピックだけ、思い付くまま挙げていきます。で、その後本文を書きます。書きたいことは章を決める時に大体分かっていますから本文も比較的すらすら書けるはずです。

これって慣れると本当に便利です。自動で目次まで作ってくれます。v(^_^)私はその場、その場で書きたい事をがんがん書いていくので、内容に重複があったり、構成がちょっと変だったりしますが、後で全体を見直す時に修正します。章の配置順を変えるのもキー操作一発。楽ちん楽ちん。(^_^;

C++の資料を書く話に戻します。まあ、MFCに対する導入ですから、継承と関数のオーバーライドくらいについて資料を作ればいいかな、と思っていました。まあ、それだけだったら大した量にはならないかな。私自身が以前書いたプログラムを見ながら、C++のどんな機能を使ったかを挙げていくことから始めました。

クラスが出てくるのは当たり前だから、クラスとそのメンバーの話はしなければいけない。MFCだから、当然継承とオーバーライドは使っている。じゃあ、仮想関数の話も入れてっと。変数宣言が途中に出てくるのはしょっちゅう出てくるな。デフォルト引数も使っているなぁ。じゃあこれも別のタイトルにしよう。オーバーロードも使っているなぁ。お、こんな所で再定義された演算子を使っている…。まあ、こんな作業を繰り返します。まあぼちぼち書けば何とかなるか。

1時間経過。本文ほとんど真っ白け。(-_-;一応本文に手を付けてはいるんですが、ある機能についてサンプルを使って説明しようとすると、別の機能に付いても説明しなけりゃいけなくなる、で、タイトルだけ書いて、またちょっと書き進むとまた別の機能に付いても説明しなけりゃいけなくなる。もうほとんど泥沼状態。(^_^;

3時間経過。書くべきタイトルの数の増加は無くなったものの、タイトル数が30個近く。本文も入ったタイトルが2つ。ということは1時間半に1つのタイトルを埋めるとして、ぶっ続けで書いたとしても、あと40時間以上かぁ?(^_^;でも資料無しで講義が出来るほど、こっちはC++に詳しい訳じゃないんですから、書くしかない。(^_^;

6時間経過。もう、pickupしたタイトルを全部取り上げることはあきらめました。(^_^;取り上げられないタイトルは、タイトルだけ言っておいて、もう個人で勝手に勉強してくれ、です。それでも残りが20タイトル。本当に明日の朝の講義開始までに書き上げられるのだろうか?(^_^;

休み時間全然なしで8時間経過。集中力が欠けてきます。この時点で20ページほど。図が入って20ページというのではなくて、プログラムリストが入っていて改行が多いにしても、本当に文字だけで20ページ。でもまだ全然書いていないページの方が多い。う〜む、困った。(^_^;

で、この時点まではC++を勉強し始めた人を対象にしている事もあって、サンプルプログラムを打ち込むとそのまま動く、動作確認も一応はする、という姿勢を守ってきました。私の読んだ参考書などでは「細部を省略」とか書いてあって、実際にその機能の動きをdebuggerなどでトレースして実際の動作を確かめられるようになるまで、かなりてこずった経験があり、それはあんまり初心者にやさしくないな、と思っていたからです。でも、さすがにこの時点になると、「細部を省略」とでも書かないと明日の朝に間に合いそうもありません。

10時間経過。既に適当なサンプルを考え出す気力も失せてきました。(^_^;なんとか今まで書いたサンプルで説明出来ないものかと考え出しています。だからかなり無理な話の展開をする所も出てきます。サンプルに新しい機能を追加して、「こんな事ができるんだよ」と紹介した直後の章に「実はこんな理由があってそのままじゃ動かないから、まともに動かすにはこんな新しい機能を使ってね」というような紹介の仕方も出てきました。(^_^;

実はこれって読む方に取っては最高に迷惑な話の展開です。まあ、講義用の資料なので、その2つの章はタイトルとしては分離しているけど一連の話の中で話すつもりだったので、まあいいや、と妥協しました。これが本だったら一歩一歩理解しながら進むような人には最悪ですけどね。

15時間経過。もう錯乱状態。(^_^;まだ本文で埋まっていない所がいくつかあります。で、ナマケ虫の特大親玉級がむくむく頭をもたげてきて、「そんなところは飛ばしてしまいな」と悪魔のささやきを投げかけます。ああ、何という事でしょう。私は何を間違ったか、そのささやきに応じてしまったのです。(T_T)純粋仮想関数、friend指定、const指定、静的メンバー、インライン関数、コピーコンストラクタ、テンプレート、多重継承、型の曖昧さに起因する問題点etc…ああ、なんか重要な点をすべてすっとぱしているような気がするぅ。(^_^;でも、もういい。これ以上今日は書けない、ってこの時にはもう夜中の3時なんですけどね。(^_^;で、ここから校正などが始まります。

17時間経過。頭へろへろ。それでも何とか3回ほど読み直し+プログラム部分と本文のフォントを変えてちょっとでも読みやすくなるような作業をします。「多分修正しなけりゃいけない部分が沢山あるだろうな」とか思いつつ、一応作業を終りました。いや、終らせました。もう、夜は明けています。講義開始まであと3時間。こんなへろへろ頭で講義なんかできるのかいな。(^_^;

なんのかんのといって、本文を書きおわったら30数ページ。関数の途中で改ページが入るのは嫌だったので、改ページを意図的にいれたら、結局全部で40ページの大作になってしまいました。(^_^;いやあ、オリジナルの要素が少ないとはいえ、人間せっぱつまると40ページくらいは一日で書けるもんなんですね。(^_^;Kさんからは「大作だね」とかYさんからは「がんばったね」とか言われたんですが、ちゃんとテキストさえあれば、大作をかかなくても、頑張らなくても済んだんですけどね。(^_^;

ところで、「vyamaは文章を書くのが得意だったから書けた」という人、外れです。(^_^;私は文章を書くのは得意じゃないし、うまくもありません。実際私は、とにかく文章については、小さい頃から下手だったし(今でも下手)、長く継続的に書くということが出来ませんでした(今でも出来ない)。

小学校とかの修学旅行で修学旅行の感想とかの作文を書かせますよね。人によっては100枚以上も書きますが、私は10枚くらいしか書けませんでした。夏休みの日記なんか、最後の日になって「今日はぶらぶらしていました」とか「晴れていて気持ちが良かったです。」みたいなさも提出寸前になって慌てて書いたのがみえみえの日記ばっかり。(^_^;また、国語は大の苦手でした。高校の時は、国語の成績は下から数えた方がず〜と早いという具合です。大学の時は国語系統の科目はほとんど取らなかったな。(^_^;

でも、40ページも一日で書けました。必死になればなんでもできるんだな、とは思いましたが、もう二度とそんな経験はしたくない。(^_^;でも修学旅行の作文が10枚くらいしか書けない小学生が年を経ると40枚も一気に書けるようになるんですね。(^_^;

ところで、このページを見てくれた国語の得意な人。メールをください。苦手な私でもこの更新ペースです。国語の得意な人はもっとうまく沢山書くんでしょうね。どんな風に書くのか勉強させて下さい。<(_ _)>ただ私よりも更新ペースが遅かったら許さないぞ。なんちゃって。(^_^;

冗談はさておき「私は国語&作文が得意」という方のページを教えていただければ、すぐさま見に行きますので、よろしくお願いします。(^_^;

あともう一つお願いがあります。C++の入門書でいい本があったら教えて下さい。お願いします。いまさら入門書って読む気がしませんが、いい本だったら読もうかな、とは思っています。紹介された本については探しては見ます。見つからなかったらゴメンナサイ。見つかっても面白くなかったら買いませんけどね。(^_^;自薦、他薦は問いませんので、よろしくお願いします。<(_ _)>


diffが違う

97/05/27

アクセスカウンターの設定が間違っていました。400hitなんてしていません。ごめんなさい、という更新だとあんまりなんで(^_^;、ちょっと軽めの失敗を。実は「超無謀」Windows95復旧のすすめは、このネタを書こうとして話が明後日の方向に行ってしまったものなのでした。

プロバイダーのHDが吹き飛んでしまって、ページが無くなってしまうというのは実は良くあるみたいです。私の契約している所ではそんなことはないと信じたいのですが、コンピュータも所詮は機械。壊れる時には壊れます。で、そんな事故は「最悪の時に」「最悪の形で」起こるものと相場が決まっていますが、その可能性を低くするためにbackupを取っておく訳です。

で、このページもbackupを取りました。でも毎日backupを取るとなるとそれだけで大変です。楽が出来て、ページ内容に問題があったから2日前のページに戻したいとか、3日前にどこを修正したのか分かるようだとうれしいですね。実はプログラムを作る場合、bugを退治したつもりがもっと手酷いbugを作ってしまったからちょっと前のバージョンに戻したい、なんてことが結構あります。

そんな願いをかなえてくれるプログラムが幾つかあります。多分パソコンショップなどでお目にかかるのは「Microsoft Visual Source Safe」でしょう。Visual C/C++で開発していると結構いいらしいです。他にもライフボード社の「MKRCS」なんてのもあります。(バカみたいに高いけど)

そういったプログラムが世にどれだけ出ているかは分かりませんが、今回私はGNUの「RCS」のwin32版を使う事にしました。ベクターデザイン辺りに行けばきっと見つかります。欲しいなら私のリンクページをたどって下さい。

これを選んだ理由は「無料だから」。とってもシンプル。(^_^;なんかタイムゾーンの設定が変で変更した時間がグリニッジ標準時で表示されるみたい(これって何か設定が必要なのかな?)とか、UNIXからの移植なのでDOSプロンプトで操作するのが基本になっているみたいな所はあるのですが、私はDOSプロンプトで使うのは苦にならないので、そこそこ使えます。いや、使えるはずでした。

GNUに関しては説明が面倒なので、知り合いにでも聞いて下さい。無料で使える、ソースも公開されていて、質の高いプログラムですが、フリーソフトではありませんので念のため。利用条件、配布条件については付属の文書を読んで下さい。

RCSに話を戻します。まず、GNU RCSをC:\RCSにインストール。(といっても単に圧縮ファイルを展開しただけ)その後、C:\RCSにpathを通し、履歴を取りたいファイルのあるディレクトリで「mkdir RCS」これで準備は完了。まず、ここのtop pageの一番最初の状態を記録します。

ci -i index.htm
co index.htm

おお、ちゃんと動いている。他の人が変更出来ないようにindex.htmが編集不可能になっているのも予定通り。(^_^;で、ちょこっと修正を加えるためにファイルを修正モードにします。

co -l index.htm

おお、ちゃんとread onlyが解除されて編集可能な状態になっている。v(^_^) でちょっと変更して、その変更を登録します。

ci index.htm
ところがこれが成功しない。(^_^;

Warning, bad option 'a' Warning, bad option 'n' ci error: bad diff output line: 5d4 ci aborted
とか言って失敗してしまう。な〜ぜだろう、何故かしら。(読み筋は所ジョージの初期の曲)(^_^;

この手の失敗は、HDが壊れているに決まっています。scandiskを実行・・・。異常なし。OSはこの前インストールしたばっかりでろくな設定もアプリケーションのインストールもしていないので無実っぽい。一体何が原因なのか?いや、マジで探しました。探しまくりました。1時間ほど探したでしょうか。diff.exeがおかしい?確かにGNU RCSにdiff.exeが含まれている。じゃあ、それがおかしい?ところが最新版を苦労してインストールしても状況は改善されない。これだともうほとんど万策尽きた感じです。

きっとGNU RCSはUNIXではうまく動くんだけどWin32に移植する時に変な間違いがあったのでしょう。でもそれにしてもこんな基本的な所で間違えるとは変だなぁ。と思って不具合のメールを書こうとした、まさにその時です。

ほんの気まぐれです。「which diff」と打ち込みました。「diffって打ったらどのプログラムを実行するとこになっているのか聞く」という意味です。当然RCSを実行している私のような環境では「c:\rcs\diff.exe」が正解です。ところが返ってきた答えは「c:\bin\diff.exe」え?c:\perl\diff.exeじゃないの?c:\bin\diff.exeって一体何だ?

察しの言い方は気がついたでしょう。私はWindows95を常用しているにも関らずDOSプロンプトが大好きで、DOSで使えるコマンドラインプログラムを愛用しています。エディタだけはWindowタイプの方がさすがに使いやすいのですが、それさえ、

c:\hogehoge\boon.exe %1 %2 %3
というバッチファイルを書いて、そこから起動する回数の方が多いくらいです。で、コマンドラインから使えるDOSコマンドは専用のディレクトリc:\binに入れておきました。(本当はc:\dos\binとかしたいが、環境変数の長さの制限のため短いほうがいい) で、パスの設定が
c:\windows:c:\windows\command;c:\bin;c:\rcs
の様になっていたので(本当はもっと色々ありますが)せっかくインストールしたdiff.exeじゃなくて、昔インストールしたDOSコマンドの方を起動していたんですね。(^_^;

DOSの頃には結構ありがちだったかも知れませんが、今やPATHの設定って何?とか環境変数って何?というユーザーも多いかも知れません。そんな人にはこの話は無縁なんでしょうね。


アクセスカウンターで大失敗

97/05/27

いやあ、何かおかしいなとは思っていたんです。別に宣伝もしてないし、文字ばっかりのページ。面白いといって下さる方も二人ほどいらっしゃいましたが、世の中ってもっと面白い話がいくらでもあるよなぁ。(^_^;

ところが、初日にいきなり300hit。その後も定期的に10hit/day位のアクセスがある。一体何が悲しくてこんなページにアクセスしているんだろう。(?_?;今日、JANISネットワークの管理者から連絡があり、その疑問が解けました。(^_^;

JANISネットの場合、アクセスカウンターをつけるには、アクセスカウンターを付けたい場所に、こんなコードを埋めこみます。

<img src="/cgi-bin/Count.cgi?df=vyama.dat" >
ユーザー名がhogehogeだったらvyama.datの所をhogehoge.datにします。JANISがで提供しているアクセスカウンターは幾つかあるのですが、基本はこんな感じです。で、JANISユーザーのサポートページには
<img src="/cgi-bin/Count.cgi?df=xxx.dat" >
と載っています。で、「xxxにはお使いのアカウントを入れて下さい」としっかりと書いてあります。ところがですね、しっかり書いてあるのに、しかも読んでもいたはずなのに、
<img src="/cgi-bin/Count.cgi?df=xxx.dat" >
とそのまま書いちゃったんですねぇ。でも、アクセスカウンターはちゃんとつくし、reloadすればカウンタは上がる。で、「おお、ちゃんとアクセスカウンターが付いた」とかいって喜んでいた訳です。救い難いですね。(^_^;

設定が間違っているから、今までのアクセス数は全然当てにならなかった訳で、初日300hitなんてのもおおぼけだった訳です。理由が分かって安心したというか、何というか。(^_^;まあ、初日300hitということは今迄xxx.datとやってしまった人が私だけではないということでしょう。(^_^;

と言う訳でアクセスカウンタを正しい(本当かぁ。疑心暗鬼(^_^;)設定に直しました。で、アクセスカウンターは0に戻しました。管理者さんからは「希望の初期値があるなら言ってくれ」と言われたので1万とか景気のいい数にしようかとも思ったのですが(^_^;、心機一転、0から始める事にしました。

さて、アクセスカウンタが0になった「どつぼのページちゃんとしたバージョン」。一体どれだけ本当のアクセスがあるんでしょうね。(^_^;


Classがぶつかって失敗

1997/05/21

前にも書いた通り、これを書いている今、本業を進行させながら新人研修のアシスタントをやっています。やることは新人が研修中に質問をぶつける相手になってあげたり、サンプルプログラムがうまく動かない時に面倒を見てあげるという事です。もっとも質問されても私は、「あれ〜何でだろうなぁ。」と研修生と一緒になって頭を抱えている時間が多いので、あまり役に立っていません。情けねえ奴。(^_^;

今回は、その研修生が「はまってしまった」失敗の話です。ただ、研修中にいくら「はまって」しまってもそんなのせいぜい「きれいな川に足を突っ込んだ」程度のものですけどね。どつぼに頭のてっぺんでつかりこんだ私に言わせれば「そんなのは軽い、軽い」です。(^_^;

話がそれるけど、研修中なんて、いくら変な動きをするプログラムを書いても、誰にも迷惑はかからない。で、何が変なのか、調べる事も「研修のうち」なんですよね。最初は当てずぽうで調べていくんですが、そのうちどこら辺を調べればいいか分かってきます。でも実はProgrammerに必要な要素って、そこじゃないんでしょうか。記憶力がよっぽど抜群でない限り、(少なくとも私は)全APIの仕様なんか覚えられないので、調べては書き、調べては書き、の連続です。実際、あやふやな記憶でコードを書いて失敗するよりよっぽどマシです。

で、最初にあてずっぽうで調べた事が無駄になるかというと、そんなことはなくて、無駄な所でも一通りざっと読むと、「あんな事ができる」「こんなことは出来ない」とか分かりますし、どこかに何が書いてあったという記憶は残るはずで、実はそれが仕事をやっていく上での財産になる訳です。

その研修生がはまってしまった事に話を戻します。その研修生が書いていたのは、「menuからダイアログを呼び出す」という、いわゆる、ひとつの、ありがちな、サンプルプログラムでした。「プログラミングWindows」というWindowsプログラミングの代表的な教科書に載っている、サンプルプログラムを打ち込んだものです。

メインウィンドウもちゃんと出る。メニューもちゃんと出る。メニューを選択すると、ダイアログも出る。ところが、出てきたダイアログを見てみると、ボタンがちゃんと表示されない、表示されるべき所は真っ白け。CheckBoxもRadioボタンも同じようにうまく表示されない。ところがEdit BoxとCombo Boxはちゃんと表示されるというものでした。

まあ、こんなのは再描画メッセージをうまく処理出来ていないのが相場というものです。WM_PAINTあたりの処理を自分で書こうとして失敗しているのでしょう。で、ソースリストを見てみますが・・・WM_COMMAND位の処理(OKボタンとCancelボタンが押された時の処理)しか自前では書いていない。(ダイアログの場合、普通はWindowsが勝手に再描画する)じゃあ、OWNER_DRAW(再描画の手順をプログラム出来るようにする)でも指定しているのだと思いましたが、これも違う。じゃあ、一体なんで正常にボタンが描画されないんだ?(?_?)

そうなったら頭を抱えて逃げ去るしかありません。(^_^;単に逃げ去るのは格好がつかないので、そのソースファイルを自分のマシンにコピーして、「いつもの環境じゃないからdebug出来ない」などという訳の分からない言い訳をしてから、別フロアーの自分のマシンでdebugを始めます。ところが、ダイアログの呼び出しも、各々のコントロールに対するパラメータも間違っていない。そもそも、こんなbugは私は経験したことがない。(^_^;一体どんな風にすればこんな変なプログラムが出来るんだ?

で、隣の席の同僚に「こんなbugがあるんだけど・・・」と相談したら、「ああ、それはきっとね・・・」ということで見てもらったら、彼の言う通りでした。きっと彼は同じような間違いをした事があったのでしょう。(^_^;で、彼の言った通り修正したら、ちゃんと動くようになりました。といっても1文字追加しただけですけどね。(^_^;

で、研修室に言って、今度はさも「ちょと本気でやったらすぐに見つかったよ」みたいな顔をして研修生に修正箇所を教えてあげる訳です。いやぁ、研修生ってウブですねぇ。感心したような顔をしています。本当はこっちも四苦八苦だったのにねぇ。知らぬが仏とはこの事か。(^_^;

種明かしをしましょう。「プログラミングWindows」という本にはちょっとしたパターンがあって、プログラムのソースファイル、実行ファイルの名前、メインウィンドウのタイトルとそのWindowクラスの名前を大体同じにしています。で、その研修生は、「ダイアログにボタンをつける」というサンプルを書いたので、ソースファイルの名前は「button.c」

もう分かりましたね。この人はその本の慣習に従って、プログラムのタイトルもメインウィンドウのタイトルも「button」でした。で、メインウィンドウのwindow classも「button」。(^_^;標準のボタンコントロールとクラス名が同じものをメインウィンドウのクラスとして登録していたので、変な動きをしていた訳です。CheckBoxもRadioButtonもwindow classの名前は"button"なので、やっぱりこちらも変な動作をする。window classが違うedit boxとかはちゃんとした動きをする訳です。修正したのは"button"を"button1"に変えること。本当に1文字だけの修正です。(^_^;

まあ、普通はそんな間違いはしないでしょう。私みたいなへぼでも自分で書いていたら、"button"なんてwindow classは絶対付けません。MS-Windowsプログラミングを始めたばかりの人は普通だったら考えつかないような間違いをする事もある、というのがこの話の教訓です。新人研修のアシスタントという事で、結構気楽に考えていたけど、実はものすごく大変かもしれませんね。本当にソースを隅から隅まで丹念に読まないと原因が分からない事がありますからね。

研修のアシスタントという仕事、気楽に考えて、安請け合いしてしまったのは失敗かもしれない(^_^;と思う今日この頃なのでした。まあ、私の勉強にもなるから、いいんですけどね。(じゃなきゃやってられない)


JANISは18禁?

1997/05/21

最近link pageを作りました。その時、以前同じ職場で働いていたKさん(彼は1年ほど前に会社を辞めて独立した)のpageをlinkしました。その時に、あえて自分の名前を伏せて「vyama@JANISです。linkしたけど、興味があったら見に来てね」という感じのe-mailを出しました。名前を伏せたのは、もちろん、彼が気付かないで丁寧なreply mailを出したら、「いつもと違うじゃん(^_^;」という茶々mailを送るためです。私って、普段からこんなことばっかり考えているんだよなぁ。(^_^;

ところが返ってきたmailには、「何かの間違いではないか?こっちはごく普通のpageでアダルトサイトにリンクされる覚えがない。」と書いてありました。(?_?)確かにそのpageは日記が更新の中心の、18禁とかとはあまり縁のない(厳密にはないとは言えない(^_^;)、質素な作りです。文章で勝負、というところが似ていなくもないですが、こっちは勝負すること自体投げている、というのが違いかな。(^_^;でも、こっちのpageだって、確かにwintel(windows + intelの造語)のprogrammingを知っている人が対象な話もあるし、小学生にも分かるようには書いていない(分かるかどうかは別問題)けど、18禁ネタなんてこのpageにあったけ?(?_?;

まあ、勉強熱心な子供が間違ってこのpageを読んで「こんなバカでも生きていけるなら、勉強なんかしなくてもいいじゃん」なんて思うなら、教育上よろしくないかもしれません。そう思った心ある方は子供がこのページをには見せないような工夫をして下さいね。(^_^;

話を元に戻して、JANISネットがアダルトサイトだということはちょっと初耳だったので、今度は私が誰なのか、JANISネットは別に18禁サイトではないと思うけど、本当の所はどうなのか、いう事を書いてメールを出しました。返事はすぐに来て、「さっきのメールは勘違い。リンクを張るのは構わない」ということでした。

でも、何故最初のメールで勘違いしたのでしょうか?理由も書いてありました。Kさんは18禁ゲームの愛好家(と書くとKさんは怒るかな(^_^;)でもあるんですが、彼によるとJANISという18禁ゲーム制作会社があるそうです。また最近ではアダルトビデオも作っているとの事です。

確かにそれを知っていれば、「vyama@JANISです」と自己紹介すればアダルトサイトからのリンク依頼だと思うよなぁ。(^_^;どちらが最初に「JANIS」という名称を使い始めたか分からないけど、そのゲームの制作会社が先に使い始めたという方に私は賭けます。ただ、ちょっと自信がないので、「とりあえず、はらたいらに3000点」でお願いします。(^_^;

今まで使われていない名前を考えるという事の難しさがここにあります。JANISネットを立上げた時、もしくはゲームの制作会社を立上げた時は、「JANISなんて名前はどこでも使っていないだろう」と思ってつけたんでしょう。ところがどっこい使っていた。(^_^;4文字5文字程度+"or.jp"というドメイン名だと、ほとんど空きがないというのを聞いた事があります。"vyama"も今まで見たことがないとはいえ、ないとは言えませんね。今度、冗談でvyama.or.jpでドメイン申請してみようかな。(^_^;なお、ドメイン名の自分で申請するなら3万円くらいだったと思います。

でも、まさか、ひょっとして、あり得ないとは思うけど、JANISネットって本当はアダルトビデオも作っているんですか?(^_^;別にそれでも構わないけど、それならJANISネット会員限定無修正アダルトビデオとかを売り出せばもっと会員が増えるに違いない。(^_^;で、送られてくるのが、アダルト(大人)であろうJANISネットの管理者の、無修正の、背広姿を撮影したビデオだったりする訳です。(爆笑)まあ無修正には違いない。(^_^;

レンタルビデオのお店などで、JANIS制作のアダルトビデオを見つけたとか、パソコンショップでJANIS制作の18禁ソフトを見つけた方がいましたら、こちらまでご連絡下ませ。(^_^;メールを送って下さった方の個人を特定出来る情報は公開しないので、よろしくお願いしますね。


変なアシスタント

1997/05/21

会社でやった、ある研修でのことです。一通りのWindows Programmingの基礎を勉強しようという趣旨です。参加者には分厚い参考書を渡して、講師が通り一遍の講義をして、後は自習。時々アシスタントが何か困ったことの相談にのるとか、質問を受ける目的で研修室に行きます。講師は一人でアシスタントは二人。研修生は10人ほどです。

ところが、そのうちのアシスタント一人が変な人なんです。小汚い、よれよれの服装で、ひげもちゃんと剃っていない日もある。まあ、それはこの業界にはよくあるかも知れません。

まず、この人のいやらしい所ですが、この研修に先立って行われたC言語の研修で、研修の成果の発表会をやった時の事です。研修生全員がそれぞれ作ったプログラムの、仕様、アルゴリズム、デモ、今後の課題などを発表・質疑応答をするのですが、質疑応答になるとどうでもいいような、細かい所を突っ込んできます。間抜けな質問も結構あって、「10年前からそんなの常識」みたいな質問を平気でしてきます。で、そんな程度の低い質問をねちねちやるので研修生全員から、その時点で「変な奴」と思われました。

で、その人がアシスタントに来たのですが、今度は、研修生全員に「ねぇ、何か質問な〜い?」みたいに言い寄ってきます。気持ちが悪いので、心の中では「あっちへ行っていて」と言いたいのをぐっとこらえて(学生時代だったら殴っているでしょう)「今の所はありません」とか、「大丈夫です」とかいってお茶を濁します。

で、このアシスタント、たまに質問しても、ろくすっぽ答えられないんです。この前は「Message Loopの中にある、TranslateMessage()とDispatchMessage()って一体何をやっているんですか?」との質問に「いや、それは呪文だから云々」とかいってまともに答えようとしません。きっとまともに答えられないんでしょう。

そんな人がアシスタントになるなんて何か間違っているとは思います。きっと研修生全員がこのアシスタントをお役御免にしてもらいたいと思っているでしょう。私は、どう思うかって?私はお役御免になったら急ぎの仕事に精を出すつもりです。

「私はお役御免になったら?」感のいい人は気がつきましたね。そうです。何を隠そう、この変なアシスタント、実は私のことです。(^_^;今までの文章は、「きっと研修生はこんな風に感じているに違いない」という私の感想です。で、この研修は、今年入ってきた新人に対するプログラム研修です。

で、以下、言い訳です。言い訳だから、つまらないです。ゴメンナサイ。<(_ _)>2日連続で15時間労働+このページを書くので疲れているんです。(^_^;たまにはこんな日もあると許して下さいな。(面白かった日があったのか?)

服装については言い訳しません。というより、できません。(^_^;

発表会での質問ですが、聞いている人達はそれぞれ日頃仕事でC/C++でプログラムをばりばり書いている人達なので、研修でやるCのプログラムなんて朝飯前で出来ます。(私は違うが(^_^;)だから頭の中で、大体のアルゴリズムを聞くと、「まあこんな風になるだろう」とかなり細かい所までも想像できるし、そこから相当逸脱しない限り質問なんかありません。

私もある程度は分かるので、大して疑問もないのですが、せっかく一生懸命準備して、発表したのに質問がないなんて可哀想だと思いませんか?学会なんかだと、面白い発表には質問がワンサカ出ますが、つまらない発表だとそれこそ1つも出ません。私以外に質問した人がいなかった発表者は、もし私が質問しなかったら「つまらない発表」ということになりかねません。

実は、その研修での発表はみんな結構出来が良くて(問題点があるにせよ、問題点のあることは認識していた。研修の発表としてはそれで十分)、つつくとしたら、重箱の隅くらいしか残っていなかったんです。(^_^;さらには重箱の隅さえ残っていない人もいて、その時には苦し紛れに分かりきったような質問をしたというのが真相です。(^_^;

アシスタントとして質問されても答えられない、というのは本当です。実は研修はSDKレベル(C言語)でやっているのですが、私の会社ではMFC(C++)でプログラムを書く事がほとんどです。ですから滅多にTranslateMessage()とかDispatchMessage()とかは(自分では)使わないので、調べないと本当に分からないんです。(^_^;

こんなアシスタントで役に立つのだろうか悩みますが、唯一、こんなバカでもsoftwareを書いて生きていけるという自信を研修生につけるくらいには役に立つでしょう。(^_^;研修生には迷惑かもしれませんが、私自身の勉強にもなります。

実の所、現在急ぎの仕事を抱えているので、それとの掛け持ちは、しんどいというのはあります。さらにこの研修期間中私が講師をやる期間があり、それはそれで、バカが講師をやるという以外にも、いろいろ大笑いな部分があるのですが、それは別の日に書こうと思います。

もし、このページを見ているプログラマー新人研修を受けている人がいたら聞いて下さい。大きな会社で研修専門の部署があるとか、外部委託をしている場合は別にして、プログラムの研修の講師もアシスタントも、大体本業の傍らにやっている場合が多いと思います。だからカリキュラムがあまり練られていないかもしれません。だから研修のカリキュラムなんか当てにせず、自分でどんどん調べて、どんどん研修の枠組みを超えるようなプログラムを書いて下さい。枠組みを越えれば越えるほど、評価が高まります。

評価が高ければ、給料も上がります。頑張って下さい。周りの先輩たちも期待しています。もちろん、今抱えている厄介な問題を新人に押し付けられないか、てぐすね引いて待っている訳です。評価が高い新人ほど、仕事(厄介な問題)は一杯もらえます。頑張ってねぇ。(^_^


「超無謀」Windows95復旧のすすめ

1997/05/20

こんなpageでも、初日の300hitは別にして、1日10人ほどに見てもらっているようです。これだけ作りが雑(^_^;なページなのに、見ていただけるとは有り難いことです。

以前、先輩が使っている某大手プロバイダーのHDが吹き飛んで(ありがちな話)、ページが消えてしまい、backupもなくて困ったということがありました。まともなサーバー運営なら1日1回backupを取るとか、最初からミラーリング(2台のHDに同じことを書いておき、1台が壊れても大丈夫な様にする)したりするよなぁ。あきれた先輩はそのプロバイダーとの契約を解除したそうです。JANISネットはそんなことないだろうなぁ。信じていますです、ハイ。(^_^;

まあ、そんなことがあっても大丈夫なように、このページのバックアップ(とファイルの世代管理)をやろうと思いました。それで思い付いた話です。

皆さん、自宅マシンのHDのbackupって取っていますか?初心者向けの解説書などでbackupを取りましょう、とよく書いてありますが、昔だったらいざ知らず、今やHDの容量はギガ単位ですから、FD(フロッピーディスク)にbackupなんて無茶もいいとこ。(^_^;結局MOやCD-Rにbackupするんでしょうが、初心者が買うようなマシンには普通ついていませんよね。彼らはどうやってbackupを取っているのでしょう?「取っていない」が答えかな。(^_^;

私の場合、自作file、送られてきたmail、IMEの辞書など、他にコピーがないはずのものしかbackupを取りません(会社では別問題)。絵が描けない、音楽制作も駄目な私は(そんな人も多いはず)自作dataやmailなんて、それほど量はないはずなので、圧縮を掛けてあげれば、何とかbackupできる大きさになるはずです。(「はず」ばっかり(^_^;)

Windows95が起動しないとか、挙動がおかしいと思ったら、即座にHDをformatしてWindows95、アプリケーションの再インストール。(単なる再インストールだと、復旧できない時がある。多分レジストリがめちゃめちゃな時でしょう)だから、いつでもformatできるように、dataは別ドライブに入れておいて、backupを取るべきファイルを限定させます。

しかし、普通購入時のにはHDは1つ、ドライブも1つなので、別ドライブに格納する事は出来ません。(最近は3G byte以上のHDが付いて2ドライブ構成になっているものもある)では、どうするか。ずばり、そんな要らないソフトまでくっついているようなHDはまっさらにしてパーティションを作り直してしまえ、というのが私の答えです。(^_^;

実際、私がコンピュータを買った場合、まず最初に、本当に最低限のbackup、次にHDのformat、FDISK(ドライブ情報の設定)だったりします。(^_^;ここで、コンピュータをいじりはじめて間もない方のために言うと(そんな人がこのページを読むのか?)、生半可な知識で、HDをformatをすると、ほとんどの場合、取り返しの付かない事態になります。最悪コンピュータがただの箱になってしまいます。その時になって助けを求めても手遅れです。自分の責任でやってね。

で、実際に初心者向けの「Formatから始めるWindow95」をねたにしようかと思ったのですが、少し書いてみて、書かなきゃいけないことが膨大な量になることに気がつきました。少しでも考えれば分かることなのに、書きはじめるまで分からないなんて、バカですねぇ。(^_^;

ただ、書いて出版しても、絶対売れないでしょう。売れ筋のhow to本などは「今まで出来なかったことが出来るようになる」(たっぷりつばが必要)けど、この本は「今までの通りに出来るようになる」だけでしょ。とても売れません。(^_^;でも大切な事だと思うんだけどなぁ。

ところで、Backupが必要な場面って、大抵systemに深刻なダメージがある場合ですよね。で、Windows95の場合、あちこちちまちま直しても、状況がよくならないとか、原因不明とかがよくあります。私は、直す手間が惜しいので、formatから始めるのですが、これって初心者に結構いい方法だと思いませんか。だって必要な知識が、おかしな設定を直すのに比べたら、はるかに少ないでしょ。(^_^;

アプリケーションの設定をやり直すのは面倒だけど、復旧と同時に10個とかも20個もアプリケーションを起動することもないだろう(実際私はない)から、実際に使う時まで、インストールとか、設定は後にしても大丈夫。設定を忘れるようなアプリケーションは普段使っていないということなんだから、その時になって調べればいいんです。(暴論)(^_^;

formatなんかしたら、普通取り返しの付かない事態になるんですが、skill upするにはそんな痛い目に沢山遭わない駄目なんだら、初心者はどんどんformatして痛い目に遭いましょうとか言ってみたりして。(^_^;ただ、逆は真ならずで、一杯痛い目に会っているのに、ちっともskill upしない奴がここにいます。そんな奴が何を言っても説得力がないってか。(^_^;;


このページへのリンク依頼?

1997/05/17

TopPageでも言っていますが、基本的にこのページはlink freeです。このページについての解説で、リンクするならメールを下さいと言ってはいますが、強制ではありません。「せっかくリンクを張ってやったから俺のページも見に来い、貴様のlink pageにも加えろ!」というメールでOK。ただし実際にリンクを張るかは分かりません。面倒臭いと思ったらやらない、それだけのことですけど。(^_^;

でも、まさかこのページにリンクを張りたいという人が実際にいるとはねぇ。(^_^;公開3日目で、はじめてこのWWW pageに対する反響が来ました。要約すると「楽しかった。リンクを張らせてくれ」ということです。友達には感想は聞いたのですが、見ず知らずの人からは初めてです。この方は女性なんですが、こんなページを誉めてくれる包容力、文面から溢れる知性、きっと素晴らしい人に違いない。こんな人は美人(顔形がいいだけが美人ではない)と相場が決まっています。やっぱり性格ってその人の持つ雰囲気に出るからなぁ。(ウンウン)まずはお友達から始めて(えへらえへらえへら)・・・私の妄想はどうでもいいか。

そんな奇特な方、猫飯さんからのメールを紹介します。(引用許可は得てあります)

はじめまして。
文字ばっかりだけど、面白かったんでメール書かせてもらいます。

文字ばっかり。いきなり弱い所をついてきましたね。(^_^;でも絵を入れろといわれても描けないしなぁ。(^_^;何にしても、面白いといってもらえるのはありがたいことです。まあ、面白いなんて思う人はこの人だけだと思うけど。(^_^;実は、文字だけというのは、私が絵が下手くそだという理由のほかに、自分がよく読むページが文字が沢山あるページだからというのもあります。文字だけで楽しませるページになればいいなぁ、とは思っていますが、夢のまた夢です。(^_^;

猫飯さんからのメールは続きます。

ネットの申込書を取りに行くなんて、もうおかしくて。
私もJANISの広告を新聞で見かけて、いつも集金にくるJAのおじさんにJANISのパンフを欲しいと言ったら、何のことだか分からなくて、説明して調べてもらったら、JAには無くて、JANISから取り寄せるので2〜3日待ってくれといわれましたから。

やっぱり同じような経験をしている人がいるんですね。この人は松本駅の近くのJAにも行ったのですが、そこにもなかったそうです。私は近所のJAになかったらそこに行くつもりだったのですが、やっぱりそこにもなかったのか。ふむむ・・・

私の場合には、翌日申込書を受け取れましたし、元はといえば私がJANISからの申込書を書き間違えたのが原因なので、大して怒ってはいません。ちょっと表現がきついんですが、おとなしい表現だと面白くない(^_^;ということでJAには悪者になってもらっています。ただ、窓口の人間が、詳しい内容はともかく、存在自体を知らないというのはなんだかなぁ(^_^;、という感想を持ちました。申込書なんて、今更私はどうでもいいのですけど、これを読んだJAの方がいたら、どんな風に思ったのか教えて欲しいなぁ、と思います。

プログラマーさんの内情もすごく面白かったです。
面白がっちゃいけないとは思ったんですけど、私もプログラマーをかじった(だけ)頃があって、どこも一緒なんだなぁ・・・と妙に納得してしまいました。

ここで、猫飯さんは1つ勘違いしています。ここまでおバカなプログラマーって、私くらいでしょう。(^_^;どこでも一緒だ、何てことはありません。絶対にありません。じゃないと私が他のソフトを安心して使えないじゃないですか!

うちのだんなもSEをやってまして、プログラムも書くのですが、見せたら画面を食い入るように見て面白がっていました。

このページを夫婦で面白がってみているとは・・・。変な夫婦だなぁ。(^_^;で、書いてる私はもっと変?(爆)まあ、これからもなるべく更新していきたいと思いますので、変なもの同士(一緒にされたら猫飯さんは迷惑だろうけど)、よろしくお願いいたします。<(_ _)>

ところで、猫飯さん、旦那様がいるんだぁ。(ヘナヘナ)そいつは残念。せっかく口説こうと思ったのにぃ。(^_^;猫飯さん、10台の男に口説かれるチャンスを逃しましたね。(^_^;なお、旦那様が「それは『じゅうだい』と読むのではなくて『いちぜろだい』と読むのだ」というかもしれませんが、そんなことに耳を貸してはいけません。(^_^;


1つ前の「どつぼ」の記録

次の「どつぼ」の記録

「どつぼ」の記録 目次

作者(vyama_at_janis_dot_or_dot_jp)への感想・意見など。
spamよけのため、_at_や_dot_は適宜@や.に入れ替えてください。

目次ページ