11月の開発記

[ 前の開発記 ] [ 次の開発記 ]


11月30日  オイオイ・・・

  昨日本屋までいって探した本が何と一昨日届いていたようだ。
 なんだよ、探しに行かなくても良かったんじゃないか。
  よく見たらポスペチェンジャーのバージョンが古い。
 ま、問い合わせのメールが来た時はバージョンアップする予定は無かったから
 バージョンアップするって返事に書かなかったもんな。
 メールが2レンチャンで来たから慌ててバージョンアップしようと思ったんだし。
 でもその2通目の問い合わせの方の雑誌には載らなかったんだよな。
 せっかくバージョンアップするって返事に書いたのに。


11月29日  発見

  バイトの昼休み中に本屋へ。
 でポスペチェンジャーが紹介されるはずの本を探す。
 発見!。アレ?でもこれ古いやつじゃんか・・・。
 今月号はまだ無いのかなっと思いきやおもいきり目立つ場所に置いてあった(^^;
 早速チェック。
 お〜ありました。今度はちゃんと載ってます。(^o^)
 雑誌名はIP!って雑誌。
 これは保存物だね。


11月28日  予定は未定

  昨日ポストペットチェンジャーが紹介された雑誌が
 発売されたのを思い出して本屋に行った。
 早速その雑誌を発見してチェック。
 ・・・でも載ってない。どんなに探しても無い。
 編集作業中にボツったのか?
 それとも転載許可のメールが届かなかったのかなぁ。
 むむむ・・・なんかがっかり。
 見本誌の発送は12月の上旬ってメールに書いてあったから
 とりあえず待ってみようか。
 それでも来なかったらメールで確認してみよ。
  気を取りなおして明日は他の雑誌にポストペットチェンジが載る予定。
 今度は載ってるだろうか。・・・不安だな。
  そう言えばこの前今度はカメレオンの転載許可願のメールが来た。
 あ、まだ返事出してないや。はやく出さないかんな。
  それからポストペットチェンジがさらに他の雑誌にも紹介されるらしい。
 今度こそたのみまっせ!。編集者さん!。


11月27日  電車ネタ2

  今日、金山まで歩いてみた。
 道が分からず適当に歩いていったため30分もかかってしまった。(^^;
 これじゃあダメなんでまた今度ちゃんと道を調べてから歩こう。
  金山の駅は昔何かで来た事が一度あったけど印象が全然違う。
 前来た時は「臭い」ってイメージがあったけどそんな感じは全然無し。
 鶴舞と違ってやっぱり結構都会。アレなら都会って言えるね。
 (でもやっぱ名古屋って田舎。東京や大阪と違って栄えてる範囲が狭い。)
 駅ではストリートライブなんかもやっていてなんかちょっと感動。
 しかも5・6組いたかな。ストリートミュージシャンなんてはじめて見たよ(^-^)。
  で、金山から名鉄に乗って帰宅。
 時間を計ろうとしたけど各駅停車の普通に乗ってしまったので
 結構時間がかかってしまった。
 金山−上小田井間は結構細かい駅がたくさんある。
 ほとんど地下鉄と変わらなかったんじゃないかな。
 時間は計っても意味なさそうだったから見なかったけどさ。
 また今度計りなおしだね。
  ところで新名古屋駅ってあんなにも白かったっけ?
 やったら白かったな。記憶と違う。
 そう言えばここ何年か新名古屋駅に行ったこと無かったな。
 大抵上小田井から地下鉄に入っていたし、
 車の免許とってからは車で名古屋に行ってたし。
 高校の時スキーに行く際に行ったっきりかな。もう4年も前か。
 う〜ん、懐かしいな〜。


11月25日  ショック

  カメレオン君、アレでも直らず。
 絶対直ると思っていただけにショックは大きい(T.T)
 上手く動かないらしいスクリーンセーバーで試してみたが特に問題は無し。
 何か別の原因があるんだろうが見当もつかない。
 とりあえず切り替えの待ち時間が短かったせいかもしれないので
 今度はこれでもかってぐらい長くしてみた。
 でも多分ダメかな・・・。
  スクリーンセーバーの終了の仕方を変えてみるか。
 もしかしたらウィンドウのハンドルの取得の仕方がダメなのかもしれないな。
 やっぱGetForegroundWindow()じゃまずいのかも。
 でもプロセスハンドルでウィンドウのハンドルは取れないらしい。
 せっかくプロセスハンドルを持っているのに。
 なんの為のプロセスハンドルなんだろうか・・・。


11月24日  電車ネタ

  バイト先まで電車で通っている・・・。ってのは前に書いたけど
 どうやって行っているかって言うと名鉄で犬山方面から
 上小田井経由で地下鉄に入り、鶴舞まで行っている。
 さらに鶴舞から15分歩いた所に会社はあるんだけど
 ま、結構遠い。
  でも、近道発見。さらに電車賃も安くなるし♪。
 上小田井から地下鉄で鶴舞まで行くと20分もかかる。
 これを地下鉄に乗らず、金山まで名鉄で行くと急行で2駅。
 時間は計ってないから分からないけど10分ぐらいかな?
 で、金山から会社までは歩いて20分程度。(こんなに近いなんて知らなかった(^^;)
 と言うことは5分近く早くなるって事だ。
 電車賃も鶴舞に行くより安いはず。
 若干歩く距離が長くなるけどこれぐらいなら大した事は無い。
 電車賃と通勤時間が小さくなる方が絶対に良い。
 疲れて歩くのが嫌な場合はバスもあるらしいし。
  今日帰りにどれぐらい時間がかかるか試してみようかと思ったけど
 雨降りそうだったからヤメ。
 また今度天気の良い日にでも行くかな。
 どうせ定期買っちゃって来月の6日までは鶴舞に行くしかないからね。
 それまでに試してみればいいや。


11月23日  大発見!

  僕はPostPetとOutlookを併用しているのだけど
 時々間違えてペットメールをOutlookで受信してしまうことがある。
 つーかOutlookで添付ファイルがある場合はサーバーからダウンロードしないに
 設定してあるのにその機能が上手く働かないのが悪いんだけどさ。
 ペットメールは添付ファイルでペットのデーターが送られてきているから
 ホントならフィルタ機能で吸い込まなくてもすむはずなのに。
 (これまたバグ、まともにソフトを作れないのかな、例の会社は)
  そんなわけで色々苦労させられていたんだけど
 吸い込んでしまったペットを復活させる方法を発見!
 サーバーのメールが削除されていようがなんだろうが関係ない。
 メールのソースさえあればPostPetで受信しなおすことが出来る。
 やり方はペットメールと普通メールを振分けてくれるフリーソフト「JAM」
 というものの裏技的使い方をする。
  このソフトのホントの使い方はペットメールと普通のメールを
 フィルタにかけてペットメールをPostPet以外のメーラーで
 受信させなくする為のソフト。
 そのロジックは一旦「JAM」でメールを受信し、ハードディスク内に
 仮想的なメールサーバーを作ってそこから各メーラーでメールを
 受信することによりペットメールを振分けられる。
  ここで注目して欲しいのがハードディスク内にメールサーバーを作っているということ。
 つまり、そこにメールのソースを入れてやれば
 メールサーバーにメールを戻したことと同じということになる。
 そう、メールが復活するわけだ。
 そして、そこからメールを受信すれば無事ペットが来ると言う寸法だ。
  とまぁ難しい話だけどやり方はそんなにも難しくない。
 OutLookでの場合だけど吸い込んでしまったペットメールを
 名前を付けて保存でデスクトップ等に一旦保存する。
 そのファイルの拡張子を[.eml]から[.mml]に変更する。
 その後、JAMがインストールされているフォルダ内の「Mails」フォルダの中の
  「special.in」の中に移動する。(言ってみればここがメールサーバー)
 インターネットに接続してからJAMとポストペットを起動し
 メールチェックをする。(ポストペットの設定はJAMの設定にしておくこと)
 これでPostPetにペットが再来してくれる。
  こういうツールは無いかと思っていたがこうやれば出来るんだな。
 いつかは作ってみたいと思う。いまはまだむりだが・・・。


11月22日  Sleep

  あれこれプログラムを一時停止させる方法を探した結果
 いまいちヘルプを見ても分からない。
 現在の時間を取得してループさせる方法でやってみたが
 プログラム的に結構メンドクサイ。
 おかげで何となく嫌な感じだったので全然先に進まない。
  てな感じだったが、ふと思い出してお気楽会議室の過去ログを
 「指定した時間」で検索してみたら一発でヒット!。
 なんだ、Sleep()なんて便利な関数があるんじゃないか。
 ヘルプでtimerやwaitやらで検索しまくった苦労はなんだったんだ・・・。
 ま、これで問題も解決したかな。


11月21日  さてさて

  カメレオン君のバグ早い所直していかないといかんな。
 いつのまにかバグ報告から4日も経ってしまっている。
 なんか忙しくてやるヒマが無いや。


11月20日  図書館

  バイト先は名古屋の鶴舞にあるんだけど、
 その近くに図書館があり帰りによってみた。
 VCの本でもないかなと思って探してみたが全然無し。
 ある本が古すぎる。いまだWindows3.1だなんて舐めてるね。
 暫らくBASICの本を懐かしく読んでいたら閉館の時間に。
 帰ろうとしたら専門書のコーナーがあることに気がついた。
 もしかしてと思ってみてみたらコンピューターの専門書の山が。
 しかしVCの本は無し(T-T)
 あった本は専門過ぎ!まったくわかんねーつーの。
 C++の本が2冊あったのでチラッと見たがありゃ分かりにくそーだ(^^;。
 今日は時間が無かったからじっくり見れなかったけど、明日もう一回見てみよ。


11月19日  Download ASCII

  アクセスログを見てみたらジオのリンクや検索エンジンのリンクがほとんどの中、
 知らないところからのリンクが1つ。
 辿ってみるとDownload ASCIIからのリンクだった。
 ちょうどその頃メールの受信が終了し見てみると、
 作品公開のお知らせって言うメールが来ていた。
 なるほどね。
  結構、ポストペットサーチから飛んできている人が多い。
 期待していなかった分ある意味期待はずれ(^-^)
 あんまり登録数が無いから目立つんだろうな。


11月18日  フレーム

  CGIの動きが変。
 どうも昨日の改造のせいじゃないみたいだ。
 調べてみたところ document.referrer でリンク元を調べているけど
 フレームを使用すると document.referrer にフレームのアドレスが入るみたいだ。
 つまり、 document.referrer には自分のHPアドレスが入ってしまう。
 ・・・はずなのだが、なぜか上手くいっている時もある。
 全アクセスの1割以下だけどリンク元が取れている。
 もしかしてCGIの問題かな。他のを探してみるか。


11月17日  だめだこりゃ〜

  昨日設置したアクセス解析のCGIだけど上手く動いていなかった。
 どうやらちょっと改造したのがまずかったようだ。
 javaの部分をちょっと変えてみたがそうしたらCGIに
 アクセス出来ない状態になってしまっていた。
 失敗失敗(^^;

  カメレオン君やっぱり動かないとの報告あり。
 どうやら重いスクリーンセーバーだとダメみたいだ。
 つまりWaitForSingleObject()等で終了を検知しても
 実際はまだ終わっていないようだ。
 CPUの能力が低いとそれだけスクリーンセーバーの終了にも時間がかかり
 それで不具合が起こっているんだと思う。
  ならば切り替えの際に1・2秒ウェイトを置いて終了までの時間を稼げば
 上手くいくはずだ。(多分)
 でもウェイトの置き方わかんないな・・・。
 WaitForSingleObject()で出来そうだけどHELPを見ても分からない。
 もう少し色々調べてみるか・・・。


11月16日  アクセスログの続き

  とりあえず良さそうなのが見つかったので設置してみる。
 明日まで待って確認してみよう。
  このCGIを拾ってきたところだけどダウンロードするのに
 いちいちメールで送ってくる。
 あんまりいただけないね、これは。


11月15日  やっぱりダメ

  カメレオンやっぱり直らず。
 まぁ予測してた通りだけどね。
 で、今度はWaitForSingleObject()でスクリーンセーバーの終了を待つんじゃなくて
 GetExitCodeProcess()で終了を検知してみることにした。
 さぁ直るんかな。


11月14日  アクセスログ

  ちょっと前に気になったどこからのリンクできているか調べるための
 CGIを探してみたが良いのが無い。
 ていうかプロバイダーが遅すぎるせいで探す気無くなった・・・。
 なんとかならんもんかなこの遅さ。


11月13日  これかな

  カメレオン君のバグの原因で考えられるものは
 ・切り替えている最中OSからスクリーンセーバーが呼ばれ
  なんか変な風になってしまっている。
 ・WaitForSingleObject()が上手く機能していない。
 ぐらいかな・・・。
  前者の方はスクリーンセーバーの起動までの時間が5分、
 切り替えまでの時間が5分とか起動と切り替えの時間が同じだった場合、
 ちょうど同じ時間に重なってしまうんだよな。
  と言うことで、最初の切り替えまでの時間だけは10秒ほど長くしてみた。
 10秒ぴったりだとなんかまずいような気がするので正確には9.735秒長くしてある。
 これで直れば良いんだけど多分直らないだろうな・・・。


11月12日  またダメ

  カメレオン君、またまた動きがおかしい。
 スクリーンセーバーの切り替えが上手くいかないらしい。
 切り替えが上手くいかないバグはちゃんと修正したんだけどな。
 もしかして修正前のやつを登録してしまったのかなと思って
 ダウンロードして試してみたが問題無し。
 うーん、、、、分からん。


11月11日  雨

  朝電車の中でみんな傘を持ってることに気がついた。
 バイト先で聞いてみたらどうやら午後から雨が降るらしい。
 ヤバイ、傘持ってきてないぞ。駅まで遠いのに。
 って思っていたが全然雨が降る気配無し。
 天気予報大外れ。
 セーフ。


11月10日  移動

  バイトの勤務場所が何やら配置ミスとかで正しいところに移動した。
 今度のところは楽過ぎ。立ち仕事だけどほとんど力使わない。
 単純作業の繰り返しでちょっと退屈かな。
 あんまり楽過ぎて前の場所の人達に申し訳無い。


11月9日  休み

  休みの日がこんなにも有り難いとはなー。
 でもなんにもやる気が起きないや。
 とりあえず溜まったメールのへんじ書かないとな。


11月8日  満員電車

  今日の朝電車はえらいことになってたね。
 アレが満員電車って奴なのか。まったく動けんかった。
 平日ってのはいつもあんな感じなんだろうな。これまた大変だ・・・。
  バイトも3日目になってやっと体が動けるようになってきた。
 でも足の裏痛い・・・。足の裏の肉が体重を支えきれてないみたいだ。
 明日はお休み。とりあえず寝ますか・・・。


11月7日  ダメッす。

  昨日に引き続き今日もバイト。
 もう疲れた以外の言葉が見つからない・・・。


11月6日  運動不足

  ヒー疲れたー。むちゃくちゃ疲れたぞ。
 足は痛いし体も痛い。手なんか真っ赤になってるよ・・・。
 バイト、こんなに大変だとは思わなかった。
 って言ってもそんなたいした肉体労働じゃないんだけどね。
 昔働いていたところの方がよっぽど重労働。完全に運動不足だね。
 PCなんか電源入れる気力すらないよ・・・。


11月5日  バイト

  カメレオン君VerUP完了!。
 とりあえずこれで一息ついたね。ポスペチェンジャーもカメレオンも
 ほぼ完璧になってきたから暫らくはVerUPすることも無いと思うし。
  さぁつぎのアプリ開発するぞ!・・・と言いたいところだが
 明日からバイトにいかなきゃいけないからちょっと難しいかな。
 今日面接に行って来たけどソッコーで採用。明日から来てくれだって。
 ちょっと遠いから朝も早いしね。7時には起きてないと間に合わないと思うし。
 せっかく明日からテレホが復活するから徹夜しまくろうと思ってたのに。
 ま、年末まで二ヶ月間だけだけど頑張りますか。
  と言う訳で明日からの開発記はVCからかけ離れるかも。許してちょ。


11月4日  ヤバヤバ

  カメレオン君をアップする為の用意がすべて終わったあとちょっと画面をそのままに
 していたらカメレオン君が起動したが(当たり前)動きがおかしい。
 設定ファイルはあるのに何故か?が表示されている。
 調べてみたらカレントディレクトリがカメレオン君と同じフォルダじゃなかった。
 危ない危ない。エンバグに気がつかないままアップするところだったよ。
 たまたまスクリーンセーバーが起動して助かった。


11月3日  1.10か2.00か

  カメレオン君完成!。今回一定時間毎に変える機能をつけたことによって
 GUIの部分のデザインを変更した。と言ってもボタンの位置を変えただけだけど。
 結構変えたので次のバージョンを1.10にしようか2.00にしようか迷っている。
 ま、どっちだって良いんだけど。そうだ、ここは流行にのってPROにしようかな。(笑)
  スクリーンセーバーを終了させるのはGetForegroundWindow()で
 スクリーンセーバーのウィンドウのハンドルを取得しPostMessage()で
 WM_CLOSEを送ることで止めることに成功した。
  しかしこれだけだと何故かスクリーンセーバーの切り替えが上手くいかず
 切りかえる時に終了してしまうことがあった。
 悩んだ挙句、色々試したら前のスクリーンセーバーが終わっていないうちに
 次ぎのスクリーンセーバーを起動させると不具合が起こることが分かった。
 PostMessage()でスクリーンセーバーを止めてもすぐに終わるわけではないので
 完全に終了するまで待ってやらなければならない。
 そこでまたWaitForSingleObject()を使いスクリーンセーバーが完全に
 終了するまで待つことで上手く引き継ぐことに成功した。
  ところでWindowsの標準の『迷路』というスクリーンセーバーにはバグがある。
 ウィンドウを全画面で表示している際、『迷路』が起動すると
 スクリーンセーバーが止まったあとウィンドウのサイズが変わってしまう。
 最初これはカメレオン君のバグだと思っていて相当悩んでしまった。
 ふと思いつき迷路を標準にして試したところ・・・(-。-)ハァ

 しっかりせーや、マイクロソフト!!!!。


11月2日  止まるのに止まらない

  カメレオン君のバグが解決できたことが分かった。
 カメレオン君をスクリーンセーバーが動いているうちはストップさせることにより
 プログラムを終了させた際止まってしまうのを回避した。
 プログラムを止めるのにWaitForSingleObject()関数を使い
 スクリーンセーバーが止まるまで待つようにした。
 なので一定時間毎にスクリーンセーバーを変えるのは出来ないと思っていたが
 WaitForSingleObject()はタイムアウトも取れるようで設定した時間が過ぎれば
 またプログラムを再開するらしい。
 これを利用すれば一定時間毎に変えるぐらい簡単に出来る。
 そう思って新しく機能をつけることにした。
 GUIの部分は昨日作ったアプリと同じ処理が使え難なく出来た。
 次に一定時間が過ぎたらスクリーンセーバーを止め別のスクリーンセーバを
 起動させようとしたが前動いていたスクリーンセーバーが止められない。
 CreateProcess()で起動させているのでハンドルは取得している。
 ヘルプを見るとExitProcess()に終了コードを指定することでで終了することができ、
 終了コードを取得するにはGetExitCodeProcess()で取得できると書いてある。
 そこでこうやってプログラムを組んでみたが上手くいかない。

    DWORD lpExitCode;
    GetExitCodeProcess(pi.hProcess,&lpExitCode);
    ExitProcess(lpExitCode);

 これだとExitProcess()で自分が終了してしまう。
 終了コードの取得に仕方は間違っていないと思うのだが・・・。
  このやり方はあきらめPostMessage()でW_CLOSEを送ってやって止めとようとした。 

    CWnd* cWnd=CWnd::GetActiveWindow();
    cWnd->PostMessage(WM_CLOSE);

 このやり方だとcWndが設定されずPostMessage()でエラーになってしまう。

    HWND hWnd=GetActiveWindow();
    PostMessage(hWnd,WM_CLOSE,0,0);

 そこでこう変えてみたがどうもhWndにはNULLが帰ってきてやはり上手く行かない。
  昨日まではスクリーンセーバーが止まってしまって苦労していたが
 今日はスクリーンセーバーを止められず苦労している。まったく。(-。-;)
 ここさえ出来れば完成なんだが・・・。
 明日、お気楽会議室で聞いてみるとするか。


11月1日  余裕

  ヘボアプリ完成。内容はリンク作成機ってところかな。
 ボタンの無効化・有効化も出来るようになったし、これでOKでしょう。
 ま、自分が使うもんなんだからそこまで凝らなくても良かったんだが勉強のためね。
 ボタンの無効化・有効化の処理はお気楽会議室の過去ログに乗っていた。
 そう言えば最近あそこに行ってないな。過去ログだけで解決しちゃうからな。


HOME