まどかの 日記

[2003/02/24〜2003/03/02の日記]
[2003/03/03〜2003/03/09の日記]
[2003/03/10〜2003/03/16の日記]
[2003/03/17〜2003/03/23の日記]
[2003/03/24〜2003/03/30の日記]
[2003/03/31〜2003/04/06の日記]
[2003/04/07〜2003/04/13の日記]
[2003/04/14〜2003/04/20の日記]
[2003/04/21〜2003/04/27の日記]
[2003/04/28〜2003/05/04の日記]
[2003/05/05〜2003/05/11の日記]
[2003/05/12〜2003/05/18の日記]
[2003/05/19〜2003/05/25の日記]
[2003/05/26〜2003/06/01の日記]
[2003/06/02〜2003/06/09の日記]
↑過去3ヶ月くらいの日記はこちら↑

まどかは「P/ECE Hand Book」を応援しています


0611
2003/06/15()
 今日ものんびり
 えー、今日は1日家でのんびりしながら、C++BuilderでちょっとしたHTTPクライアントの基本を作ってみたり、暇だったので今度仕事で作らないといけないサンプルコードのさわり部分を書いてみたりしてました。

 その他は、またネットゲーをやったり、本を読んだり。そんな1日でした。
 
 サンプルコードの作成は、来週からの福岡出張に持っていくために会社から持って帰ってきたVAIO(たぶんPCG-V505E/B)で行っているのですが、このVAIOのキーボードはなんか打ちやすくて良いです(^^

 こんなに打ちやすいのなら、ノートも欲しいなぁ。
 もし買うんだったら、SXGA+対応で薄くて軽いやつ。とりあえずDVDが見れたらいいかな。CD-Rがついてなくても、最近はUSBメモリのでかいのを買えば多分事足りると思うので、早くここらへんのスペックのやつが安くなって欲しいです(^^;

 というわけで、今日はここまで。
 明日から約1週間、某番組の特別収録に参加するため、福岡に飛んできます。

 それでは、おやすみなさーい。

0610
2003/06/14()
 大きなバッグを買ってきました
 はい、今日はいつもの通りお昼くらいまで寝て、昼からはちょっと雨が降ってきて出かけるのは嫌だったのですが、来週からの福岡3泊4日の出張用に大きなバッグを買いに行きました。

 ついでに、長時間の旅になる新幹線の中や、ホテルでの時間つぶし用に本屋で読み物となる本を買って帰りました。

 帰ってからは、嫁さんとテレビ見たり、ネットゲームをしたりして休日を楽しみました。
 明日ものんびりする予定です。
 
 それでは、おやすみなさーい。

0609
2003/06/13()
 今日は誕生日です(^^
 えー、今日は予定通り、特権処理についていろいろやってました。

 まずは、このページなどを参考にして、時刻を修正する時に必要なSE_SYSTEMTIME_NAME特権を有効にして、SetSystemTimeで時刻の更新をします。

 ちなみに、SNTPでもらえる時刻は世界標準の時刻なので、SetLocalTimeで設定すると日本の場合、9時間プラスして設定しないといけないのですが、SetSystemTimeに世界標準時刻で設定するとちゃんと日本の時間に直して設定されるようです。うーん、これは便利(^^;

 というわけで、特権を取得する部分もできたし、今日は私の誕生日だと言うことで、早めに帰って嫁さんと近くの焼肉屋に夕飯を食べに行きました(^^

 明日はおやすみなので、またのんびりする予定です。
 それでは、おやすみなさーい。

0608
2003/06/12()
 なんとかできました(^^
 今日は昨日に引き続きSNTPクライアントの処理を実装していきます。

 で、昨日見つけたページを参考に書いていったら、当たり前ですが普通に上手くいき、ようやく社外のNTPサーバから現在の時刻を取得し、PCの時刻を更新することに成功しました。

 で、とりあえず開発機であるWindows2000で成功したので、一応今回のターゲットOSに入っているNT4.0とWin98SEでも動作をチェックすると、なぜかWin98でだけ失敗する現象が起こり、色々試してみた結果Win98だけパケットの送信に失敗していることがわかりました。

 で、Win98だけ送信が失敗するのはなんかおかしいのでソースを見直してみると、なんと以前TCPでやっていた頃のサーバに接続するコード(connect関数使うところ)がまだ残っていて、UDPなのにサーバに接続しに行っていたようです(^^;

 そしてこの部分を削除すると、案の定Win98でもちゃんと時刻更新することができました。
 が、ひとつ気になるのが、このバグがNT系ではエラーから見つけられないということです。
 普通に考えると、接続なしで通信するUDPのソケットで、サーバに接続するという処理が受け入れられると言うのがおかしいですよね。

 まぁ、サーバに接続する部分はNT系でも98でも正常に終了しているみたいなので、UDPでもサーバに接続することは許されているとしても、NT系でも98のように送信で失敗するという風にして欲しい気がします。

 実際、NT系ではUDPでサーバに接続した状態でも時刻更新処理は正常に行えるので、NT系をだけを使う分には問題がないと思いますが、こういう風にOSによって挙動が違うと困りますよね。

 この場合、送信に失敗する98の方が悪いのか、普通に処理できてしまうNT系の方が悪いのか、どっちがどうということは決めれませんが、こういう特にOSの種類に関係ないような処理の部分では、挙動も統一して欲しいものですね。

 というわけで、今日でようやく時刻修正処理も完成に近づいてきました。
 明日は、NT系OSで時刻を修正したり、シャットダウンする時に必要な特権処理について作っていこうと思います。

 それでは、おやすみなさーい。

0607
2003/06/11()
 ビルダーではなんかうまくいきません(j−j
 えー、今日は新機能として追加されたNTPによる自動時刻更新機能の実装に取り掛かりました。

 でも、私はNTPなんてやったことがなく、確かC++Builderのコンポーネントに時刻合わせ用のそれっぽいものがあったような記憶があるので(まぁ、それがなくてもそんなに難しいものではないと思って)、結構簡単に出来ると返事をしてしまいましたが、やっぱり何も知らないので、まずはそのコンポーネントを探すことから始めてみました。

 C++Builderのコンポーネントパレットを順に見ていくと、「FastNet」タブのところにTNMTimeというそのものずばりのコンポーネントを発見したので、さっそくこれを使って時刻合わせの処理を追加してみました。

 このコンポーネントは、HostプロパティにサーバのアドレスをセットしてTimeStrまたはTimeIntを読み出すだけで、現在の正確な時刻が取得できちゃうという便利なコンポーネントです(^^;

 というわけで、このコンポーネントを使って社内のNTPサーバに対して接続してみると、見事成功しPCの時刻を修正することができました。

 これは簡単だということで、続いて社外のNTPサーバに対して接続を試みたところ、なぜかなんかやっても失敗してしまいます。
 原因はよくわかりませんが、このTNMTimeコンポーネントのヘルプを調べていると、どうもこのコンポーネントはポート123番を使うNTPではなく、ポート37番のTimeServerに接続しているようで、たいていのNTPサーバは37番のポートもサポートしているらしいのですが、私が使ったNTPサーバでは37番のポートをサポートしていないのが原因かどうかはわかりませんが、とにかくこれでは使い物にならないので、このコンポーネントの使用は諦め、自力でNTPの時間取得ルーチンを書くことにしました。

 私がまずやったのは、ぱっと探して見つかったこのページを参考に、NTPはTCPでもUDPでもいいとどっかに書いてあったので、TCPでサーバに接続するコードを書いてました。

 参考にしたページはTNMTimeコンポーネントと同じ37番を使うやり方なのですが、TCPでサーバに接続する部分は同じだと思うので、ポート番号を37番から123番に変更してやってみました。

 が、やっぱりNTPサーバに接続することができず、また色々調べていくとWWWCなっかさんTClockKazubonさんのページでNTPへの接続サンプル(っていうかTClockのソースとか)を見つけ、それを見るとどちらもUDPで接続されていたので、もしかしたらと私もUDPで接続するように変更したら、何事もなく接続できてしまいました(^^; ということは、NTPはUDPで接続するのが標準ってことになるのかな。

 で、実際にNTPサーバから時刻のパケットを貰うには、NTPサーバに対してNTPの空パケットを送らないといけない見たいなので、なっかさんのこのページを参考に、やりとりの処理を実装することにしました。

 なんかよく調べてみると、NTPの時刻取得はほんとうにNTPでやるとすごい精度で時刻が取得できるらしいんですが、そのやり方はとても複雑なので、そのやり取りを簡単にしたSNTP(Simple Network Time Protocol)というのがよく使われるそうです。これでもミリ秒単位の精度で時刻が取得できるので問題はなさそうです。

 でも、今日はもう時間がないので、SNTPのやりとりの実装は明日にすることにし、今日は帰りました。
 
 それでは、おやすみなさーい。

0606
2003/06/10()
 小さいものはとりあえず片付けました(^^;
 えー、今日はC++Builderの仕事で、残っている不具合修正リストの細かいものを一気に片付けました。

 私はいつも印刷に失敗したA4の裏紙を4分の1に切って作ったお手製のメモ帳を使ってまして、開発中に見つけた不具合はすぐにそのメモ帳に箇条書きで書き込み(いわゆるToDoリストかな)、やることを忘れないようにしています。

 そして、その不具合を修正したらメモ帳のその部分に取り消し線を引いて消していきます。
 で、メモ帳に書ききれなくなったら、まだ残っている不具合を新しいページに書き直して、常にやることやることをそのメモに書くようにしています。

 こうすると、ひとつの不具合を修正するのにのめりこんじゃって、直ったあとに「次は何するんだっけ?」と悩まずに済みますよね(^^; まぁ、こんなことはみなさんもやられているだろうし、あえて日記なんかで各内容ではないのですが、紹介しておいても損はないと思い、なんとなく書いてみました。

 で、今日で既知の細かいバグは修正できたので、明日からはちょっと大きなバグっていうか追加機能に挑戦してみようと思います。

 というわけで、今日はここまで。
 明日は新機能として要望があったNTPによる自動時刻更新の機能を作ってみようと思います。

 それでは、おやすみなさーい。

0605
2003/06/09()
 アイコンつくったりしてました
 はい、今週もC++Builderの仕事をやっていきます。

 今日は、先週お客様のところにデモをするために機材一式を持っていったので、全部外したLANケーブルやシリアルケーブルをもとの開発環境にもどして、また開発を再開しました。

 デモの時に、こちらから提案する画面のインターフェースのサンプルとして、リストビューにアイコンを表示したり、任意のセルや行の背景を変更して表示するサンプルプログラムを持っていったら、そのインターフェースが採用されたので、今日はサンプルからのインターフェースの移植を主にやってました。

 で、移植の方は半日くらいで終わり、デモ中に見つかった不具合(使用OSの違いによるものなど)も修正して、ちょっと息抜きに、まだ作ってなかったアプリケーションのアイコンを描いたりしてました(^^;

 私はデザイン力があまりないので、かっこいいものは到底作れませんが、いろいろなツールのアイコンを参考にそれっぽいものはできました(--;

 こういうデザインや画面のデザインもかっこよく作れたらもっといいものが作れるのになぁ。ふぅ。
 なんか普通に作ると地味なんだよね。

 というわけで、今日はこんな感じで仕事してました。
 明日は、まだ残っている修正をがんばって潰していこうと思います。
 
 それでは、おやすみなさーい。