ももらぼっ!にっき


2006年10月02日 [長年日記]

_ [W-ZERO3] kickmail Ver.1.41 リリース。

、/noreadオプションをつけても既読にならない問題を対処しました。

今、手元にWS003SHがないので動作確認ができていませんが、 過去ソースと見比べて修正したのでたぶん大丈夫だと思います。

ということで、変更点は以下の通り。

  • WS003SHで/noreadオプション設定時に表示したメールが既読にならない 問題を修正した…と思う。

_ [WM5][W-ZERO3] calt。

calt

先日こんなエントリを書きましたが、 だんだん形になってきたような気がします。 Todayアプリケーションにする予定だったんですが、テストがてらTodayのソフトキーに登録して使っていたらその使い方に慣れちゃったので、通常のアプリケーションとしてキチンと作ってみることにしました。 前回と結構見た目が違いますが、実はホトンド実装は変わってなくて設定ファイルをいじるだけで実現できています。

この調子で、小粋なカレンダーになるといいなーと思いながら、今日は寝ることにします。

本日のツッコミ(全2件) [ツッコミを入れる]

_ 星羽 [caltの開発お疲れ様です。前回のエントリも見させていただいてとっても素敵なアプリになると感じたので、私のブログで紹..]

_ ももたろ [早速トラックバックでコメント返させてもらっちゃいました。 紹介ありがとうございますーm(_ _)m]


2006年10月03日 [長年日記]

_ [W-ZERO3] kickmail Ver.1.42 リリース。

ソースをコピーしたのがばればれなミスを犯してしまい、 CAB版のReadMe.txtがW-ZERO3 Mail Filterのものになってしまっていたようですorz

慌てて修正した販をVer.1.42としてリリースします。 exeの日付が変わっているのは、無駄にリソースのバージョンをあげたためで、 機能にはまったく修正はありません。 基本的にバージョンアップの必要はありませんが、 CAB版のkickmailをインストールした方で、ReadMeをW-ZERO3から 読むことがあるかもしれないなーという人や、 気になる方はお手数ですがバージョンアップをお願いします。

mikifukuさんがブログでインストーラがうまく作れないとか言ってくれなかったら、 自分のCABの中身の解凍なんて改めてしなかったと思います。 ありがとーございましたm(_ _;;)m

ということで、修正点は以下の通り。

  • CAB版のReadMeがこのファイルじゃなかった問題を修正した。

2006年10月04日 [長年日記]

_ [WM5][W-ZERO3] ExecSelect Ver.0.11 リリース。

、ExecSelectでメニューがグレーになってしまう問題。 2chソフトスレのレスを読んでいたら、ふと、「こうしたら直るのかなー」と対処療法的な手法を思いついたので修正してみました。

手元の環境ではグレーにならなくなったようです。

皆さんの環境ではいかがでしょうか? まだグレーになるパターンがありましたら報告お願いします。

というわけで、修正点は以下の通り。

  • メニューが選択できなくなることがある問題を修正。

_ [WM5][W-ZERO3] caltを早速紹介&期待してくださったようでm(_ _)m

星羽さんのブログで紹介してもらっちゃいました ありがとーございますm(_ _)m

一応、いくつか補足しますね。

起動時間について

画面にデバッグ用に表示しているmsは、年月移動時の速度です。 現在は、デフォルト設定の状態で、起動に約700〜900ms、日の移動に50〜120ms、年月の移動に100〜300ms程度かかっています。 起動速度はもーちょっと速くしたいなーと思ってるんですがね。。。

予定表示ををOFFにすると起動が500ms程度にはなります。 最速0.5秒で起動!なら一応うたい文句くらいにはなるでしょーかね(^^;;

祝日表示について

ごりごりとロジックで計算しています。 パフォーマンス重視なので外部ファイルで指定するのはやめちゃいました。 なので、祝日法が改正されたらロジックの修正が必要になってしまいます。

一応、1948年以降に施行された祝日には全て正確に対応しているハズです。 また、来年より施行される昭和の日の対応も完了してます。

予定表示について

ご想像の通り、Pocket Outlookのデータを表示するようにしています。 休日設定は…今は見てないハズです。

POOM APIのパフォーマンスの遅さがネックです(T-T)

本日のツッコミ(全3件) [ツッコミを入れる]

_ 星羽 [トラックバックをいただき、さらに補足までしていただき恐縮ですm(__)m POOM APIはまだ使ったことが無いの..]

_ ももたろ [星羽さん> うふふふふ。 予定表示をしたときの起動速度が500ms〜600ms程度に短縮できました(^-^)v 今の..]

_ 星羽 [おぉ!1/2近くも短縮出来たんですね! 起動速度が必ず約0.5秒というのは売りになりますし、 使う側としてはとても嬉..]


2006年10月10日 [長年日記]

_ [WM5][W-ZERO3] calt開発状況。

設定を変えてみるデフォルトの見た目

caltの開発ですが。

この連休で結構進みました。 2つのキャプチャを見てみてください。 全然レイアウトが違いますが、これ、テーマファイル(設定ファイル)の修正だけで実現しています。 カレンダーの縦横の表示数を変更できるようにしたので、こんな風に柔軟な設定変更をできるようになっているのです。

あと、勢いでカレンダー部分に予定を表示できるようにしてみちゃいましたが、予想通り、結構レスポンスが落ちてしまいました。 (起動が、0.5秒前後→1秒強。カーソル移動が0.1秒→0.4秒程度) 高速起動をウリにしたかったので、この機能は蛇足だったかもしれません。

と、しばらく設定をいろいろいじってみましたが、 普段使うなら、やっぱり今までの表示方法の方が私には向いてるみたいです (修正の意味ないじゃんorz)

あ。

…キャプチャから私の予定が垣間見えてしまっていますが、激しく気にしないでくれると嬉しいです(汗)


2006年10月12日 [長年日記]

_ [WM5][W-ZERO3] ExecSelect Ver.0.12 リリース。

BUGだらけさんで、我欲するこんなアプリなんてエントリで 表示位置が指定できるようにしたいという要望があったので、実現してみました。

基準をx座標(左端,中央,右端)、y座標(上端,中央,下端)それぞれに指定し、そこからの相対座標でメニューの表示位置を指定できます。

DORさんも仰っている、iniファイルを切り替えたい という要望をBTSで受け付けていたのですが、 これについては対応をしないことにしました。 理由についてはBTSの方に書いておきましたが、ExecSelectは引数を起動するアプリに引き渡せることをウリにしているので、ExecSelect自身が引数に意味を持って動作を変えることをしたくなかった為です。

ということで、修正点は以下の通り。

  • 表示位置を指定できるようにした。

2006年10月13日 [長年日記]

_ faviconを付けてみた。

最近は大手サイトではホトンドfaviconをつけてるんですね。

今までfaviconを常時表示するようなブラウザをつかってなかったんですが、 最近Firefoxへの乗り換えをしてみているところでして。 その為か、faviconを良く見るようになりました。

で、ウチのサイトに無いのは寂しいなーってことで、 流行には完全に乗り遅れていますが、faviconを付けてみました。 昔(6〜7年前くらい)にメールのX-Face用として書いたドット絵が元です。 って、今でもこのX-Faceをメールにつけていますけどね。 (たまに会社メールにもつけてしまってます。危険だなー。)

で、そのドット絵をFavIcon from Picsというサイトでico形式のファイル変換しました。 最初、VS2005でせこせこicoファイルを作ってたんですが、 IEでは表示されてもFirefoxでは表示されないという問題が出てしまって。 場当たり的な対処ですが、ぐぐって出てきたこのサイトに全てを委ねてみたら 無事表示されたのでこれで良しとします。 (透過色を使ったのがいけなかったのかなぁ…。ぐちぐち)

にしても、16x16にするために、左上の部分をざっくり消してしまったので、 元絵を知っている人でないと良くわからないアイコンになっちゃってますねorz

長いこと使っているし、そろそろこのドット絵とはお別れして、 もーちょっと違ったロゴを作った方がいいのかなぁ。

気に入ってるんだけどな。

この絵。

_ いぬソフトのトップページ。

…に、ソフトウェアの更新履歴をつけるようにしてみました。 更新内容まで取得するのは億劫だったので、ソフト名だけ並べています。

…ってか、皆さんにっきの更新履歴から直接各ソフトのページを開いている気がするので、あまりいぬソフトのトップページは見てないのかもしれませんけどねorz

_ [DirDiff] DirDiff Ver.0.19 リリース。

最近また仕事で使うようになった、2つのフォルダ以下のファイルの差異をチェックするソフト、DirDiffのバージョンアップです。

W-ZERO3向けソフトじゃないので注意(^^;;

マシン間のファイルのコピーをすると最大2秒のファイル時刻のずれが出てしまうことがあります。 DiDiは時刻でファイルの状態をチェックしているので、実際は同じファイルなのに違うよーと言ってしまうことが多々あったので、 「n秒以内は誤差の範囲とする」というフィルタオプションを追加しました。 実は設定する画面は前からあったのですが、その値を見たチェックを今までやっていなかったのでした。動かないよーとか思っていた方、ごめんなさいm(_ _)m

一応更新内容は以下の通りで。

  • 「n秒以内は誤差の範囲とする」オプションの実装をした。 (いままで対応するコードを書いてませんでした。ごめんなさい)

…ってか、改めて過去のソフトのReadMeを読んでみると、今よりもっと機能説明を書いてなかったんですねぇ…。一応UIにはこだわっていて、説明無しでもそれなりに使えるように設計したつもりではあるんですが。

_ [DirDiff] DirDiff Ver.0.20 リリース。

アホみたいなバグをだしてしまったので、慌てて修正しました。

一つ上のエントリのバージョンは見なかったことにして、Ver.0.20として認識をお願いします(^^;;;

というわけで、見つかっちゃったアホみたいなバグは以下の通り。

  • 存在しないファイルの日付表示がおかしかった問題を修正。

_ [DirDiff] せっかくなので機能を紹介してみる。

最近、にっきに画像を載せるのが楽しくなってきました(^^;;

なので、今までホトンドまともに機能紹介をしていなかった、DirDiffの機能をちょっとだけ見せようかなと思います。

didiのgifアニメ

こんな感じの見た目のソフトで、「ローカル側」と「サーバー側」で指定したフォルダの中にあるファイルをファイルの日付で比較してくれるものです。ファイル単位のdiff&同期ツールというとわかる人にはわかるでしょう。

会社などでファイルサーバにドキュメントを共有して持っているような場合、 サーバのファイルを一旦ローカルにコピーし、修正を行った後、サーバに戻す、なんてことをやることがあります。 そんなときにdidiを使うと、自分の修正したファイルはなんだったかが一目でわかります。 フィルタにより、違いのあるファイルだけに絞ることもできますので、大量のファイルがあっても問題無しです。

さらに、didi上で処理を「L=>S(ローカル側からサーバー側にコピー)」か「L<=S(サーバー側からローカル側にコピー)」と指定して処理実行(右クリックメニューから選ぶかShift+Enterで)すると、その処理内容に従ってファイルのコピーも行ってくれます。 このように、目視確認しながら2つのフォルダの同期をとることができますので、自分の思うように同期を取れるのが安心です。

…まぁ、仕事で…なんて言っちゃってますが、一応免責として使用は自己責任でお願いしますね。 とはいえ、私自身仕事で常用するために作ったツールですし*1、今までファイルが無くなるようなバグにはであってませんが。

と、まぁ、こんなもので機能の紹介はできたでしょうか。 2つのフォルダに同じフォルダ構造でファイルを置き、相互に同期を取るような作業をしている方には結構使いやすいツールになっていると思います。 興味を持たれた方はゼヒ、こちらよりダウンロードしてみてください。

*1  だから最初のユーザは社内の人間でした。その頃の版を使ってる人がまだ社内にはいるらしい(^^;;


2006年10月16日 [長年日記]

_ [DirDiff] DirDiff Ver.0.22 リリース。

日常的に使い出すと、やはり気になる部分もでてくるようで。

いくつかのバグの修正と機能改善をしました。 リリースして数年経つんですが、やはり使用ユーザが少ないためか、ソフトが落ちちゃうレベルのバグが残っているようですorz まぁ、操作するファイルを壊しちゃうようなことはないようですが(…と自己ふぉろー)

修正箇所は以下のとおり。

  • 最近使ったファイルをメニューに表示するようにした。
  • 空のフォルダを比較対象にすると落ちる問題を修正。
  • 削除処理実行後、状態が「ERR」となることがある問題を修正。
  • フォルダ名入力用のテキストボックスの幅を画面サイズに合わせるようにした。
  • 処理実行すると落ちることがある問題を修正。

_ [WM5][W-ZERO3] ExecIf Ver.0.12 リリース。

掲示板でように、ExecIfを二重起動可能にするようにしました。 確かに、ExecMultiの修正をしたときに気付いてコッチも直すべきでしたね…。 ExecIfからExecIfを起動したりしたい場合は、今回リリースした版に置き換えてお試しください。 それ以外の人は基本的に新しい版にする必要はない…ですかね。

ということで、修正点は以下の通り。

  • 二重起動を可能にした。

2006年10月17日 [長年日記]

_ [WM5][W-ZERO3] ExecMulti Ver.0.30 リリース。

SandRでの複数アカウント送受信を可能にするために、起動したアプリケーションの終了を待機する「execSync」を追加してみました。 後は、SandR側でメール送受信完了までアプリを起動し続けることができれば、複数アカウントの同時(連続)送受信が可能になるハズです。 こちらは、いろいろと悩むところがあるのでちょっと時間がかかりそうですが…。

SandR以外でも、終了するまで待つためにsleepを入れていた部分が、すっきり記述できるような気がします。

例えば、

[default]
exec=hoge.exe
sleep=1000
exec=moge.exe

と、hoge.exeの処理が終わるまで待つために、sleepを指定していたような場合、

[default]
execSync=hoge.exe
exec=moge.exe

と記述することで、hoge.exeが終了してからmoge.exeを起動することができるようになります。

いろいろなソフトでの終了待機を試したわけではないですので、もしうまく動かないモノがありましたらご報告くださいませm(_ _)m

というわけで、変更点は以下の通り。

  • execSyncを指定することで、アプリケーションの終了を待機できるようにした。

_ [WM5][W-ZERO3] ExecLP Ver.0.10 リリース。

2chソフトスレ

execif/execmultiに縦/横画面で処理を変えられる機能を付加したようなソフトが欲しいです。

とあったので、作ってみました。

起動したときの画面がランドスケープか、ポートレートかによって異なるアプリを起動できるソフトです。 …正直私には使いどころがよくわかっていませんが(^^;; うまい使用例を思いついた方はゼヒ教えて欲しいです。

_ [WM5][W-ZERO3] ExecLPの使い道。

ソフトスレのレスより。

こんなに短時間で作成できてしまうものなんですか;

ExecIfのソースをちょろっと変えただけなので。 要望レスから公開レスまでが約1時間なんですが、そのうち半分近くをソフト名を決めるのに費やしていたりします。

お陰様でWUP以外の割り当てソフトに移行出来そうです。

あー。そんな用途がありましたか。 確かに、WUPではポートレートかランドスケープかで設定を変えられますが、PQzIIではできなかったりしますからね。 WUP以外のキーカスタマイズソフトを使う人には嬉しいかもしれません。

本日のツッコミ(全1件) [ツッコミを入れる]

_ つまっち [画面切替ボタンを置き換えてるので、ExecLPでDirectRotateの縦横トグルが出来て便利です!(・∀・)bイ..]


2006年10月18日 [長年日記]

_ [WM5][W-ZERO3] ExecLPの使い方その2。

つまっちさんのコメントより

画面切替ボタンを置き換えてるので、ExecLPでDirectRotateの縦横トグルが出来て便利です!(・∀・)bイイ!!

おぉ。そんな使い方もありますか。 DirectRotateと組み合わせると、画面切替ボタンの置き換えにはよさそうですね。

execlp.iniの設定はこんな感じですかね(未検証)

[portrait]
exec=\Program Files\DirectRotate\DirectRotate.exe|-s -1
[landscape]
exec=\Program Files\DirectRotate\DirectRotate.exe|-s -0

_ [WM5][W-ZERO3] ExecMultiとSandRのこと。

同じく、つまっちさんのコメントより

execSyncは、SandR+パケット切断で組み合わせようと思ったのですが終了の意味が違うのかな(;´∀`A"

SandRは送受信の処理をした後すぐにsandr.exeを終了してしまいます。 execSyncはあくまでsandr.exeの終了を監視するだけですので、 送受信が完了するまで待機する…という動作にはなりません。

なので、昨日のにっき

...後は、SandR側でメール送受信完了までアプリを起動し続けることができれば、...

って内容にかかってくるわけです。

本日のツッコミ(全2件) [ツッコミを入れる]

_ つまっち [おとうさん「landscape」ですよ!ヽ(´Д`;≡;´Д`)丿 アワワ この設定であってます(≧∇≦)b 置き換..]

_ ももたろ [何事も無かったかのように、しれっと直しておきました(^^;;]


2006年10月19日 [長年日記]

_ [WM5][W-ZERO3] caltのβテスターを募集してみる。

最近画面キャプチャだけを載せている、カレンダソフトcaltですが。

一般公開前にちょっと使ってみたいなーとかいう方はいませんでしょうか? いわゆるβテスターという形で、caltを使ってみていただきご意見を伺いたいなーと思っております。

…と、今までならとっとと公開してしまっているハズの私なのですが。 初めてUIのあるアプリケーションを作ったので、せっかくなのでソフコン応募を目指してたりします。 で、ソフコンの応募要綱だと、公開アプリの場合は改定しないと応募できないようなことが書かれているので、今のところ一般公開は避けたいなーと思っているのです。

とはいえ、応募できるレベルまで完成度をあげないといけません。

ということで今回はβテスターの募集という形になったわけなのです。

興味を持たれた方はゼヒ、↓のツッコミに連絡の取れるメールアドレスを記載のうえ、βテスターになりたい旨をコメントいただくか、 メールをいただければと思います。

お待ちしています!m(_ _)m

(10/21追記)

βテスターさん向けのMLが開設されました。 ご連絡いただく際は、MLに参加してもよいかどうかも併せてお伝えください。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ さなご [βテスターとしてお役に立てるかは怪しいですが是非使わせてほしいです!MLも参加したいです]

_ DOR [ももたろさんのアプリとあれば是非!激しく使いこめるかは分かりませんが、ほどほどにがんばります!]

_ へいふん [初めまして へいふんと申します 軽量なカレンダーアプリを探していました βテスターでお役にたてるか分かりませんが応募..]


2006年10月21日 [長年日記]

_ [WM5][W-ZERO3] caltのβテスター募集の続き。

先日、カレンダーソフトcaltのβテスターの募集をしたのですが。

予想では「一人か二人が反応してくれたらいいなー」とか思っていたんですよ。 そしたら予想に反して、10名近くの方に名乗り出ていただきました。 感謝感激です。

感激のあまり、急遽βテスターさんとの交流用MLまで作ってしまいました。

あ、まだまだ引き続き募集していますので、興味を持たれた方はゼヒご一報を! その際、MLに参加してもよいかどうかも併せてお伝えくださいませ。


2006年10月23日 [長年日記]

_ [WM5][W-ZERO3] caltβテストに募集された方で…。

まだ、私からのメールを受け取っていない方はいらっしゃいますか?

こちらからは漏れなく送信させてもらったツモリなのですが、 何かの手違いでメールが届いていなかったらいやだなぁ、と思いまして。 たまーに、infoで始まるメールは全てスパムメール扱いにしていて、 私からのメールを拒否る人がいましてね。 気になったので、一応にっき上で聞いてみました。

もしメールを受け取ってない方がいらっしゃいましたら、お手数ですが再度ご連絡いただければと思います。

以上、業務報告でしたm(_ _)m

あ、募集は引き続き行っておりますよ!

_ [WM5] pim.volのデータベースを直接参照する。

caltでは、pim.volのデータベースを直接参照して予定情報を取得しています。 具体的にはEDBというデータベースエンジン(?)のAPIを使って、以下のようにソースを書いています。

CEGUID guid;
CeMountDBVolEx(&guid, _T("pim.vol"), NULL, OPEN_EXISTING);

で、データベースをマウントして、

HANDLE session = CeCreateSession(&guid);

で、セッションを作成して

SORTORDERSPECEX sos;
ZeroMemory(&sos, sizeof(SORTORDERSPECEX));
sos.wVersion = SORTORDERSPECEX_VERSION;
sos.wNumProps = 1;
sos.wKeyFlags = 0;
sos.rgPropID[0] = 0x10420040; //開始時間
sos.rgdwFlags[0] = 0;

で、ソートキーを指定して

CEOID ceoid;
HANDLE hdb = CeOpenDatabaseInSession(&session,
  &guid,
  &ceoid,
  _T("Appointments Database"),
  &sos,
  0,
  NULL);

で、データベースを開いて、

CEPROPID prgPropID[] = {
  0x10420040, //開始時間
  0x0020001f  //件名
};
WORD wNum = 2; //取得するプロパティ数
CEPROPVAL *lpPropVal;
DWORD cbBuffer = 0;
HANDLE hHeap = HeapCreate(HEAP_GENERATE_EXCEPTIONS, 2048, 0);
CEOID ceoid = CeReadRecordPropsEx(&hdb,
  CEDB_ALLOWREALLOC,
  &wNum,
  prgPropID,
  (LPBYTE *)&lpPropVal,
  &cbBuffer,
  hHeap);

で、プロパティを取得します。

あ、ヒープの開放やハンドルの開放などなどの後始末はココに書いてませんので、 これをこのまんま使わないでくださいね。 メモリリークしまくってしまいます。 caltで使っている(後始末をちゃんとしている)ソースが見たい人は、websvnにでもアクセスしてみてください。 今の最新ほやほやのソースが見られますので。

で、ここからが本題。

予定データをEDBでアクセスするには、プロパティIDというもの(上記ソース上、0x10420040とか書かれてたヤツ)が必要です。IDそれ自身はCeGetDatabasePropsというAPIで取得できるのですが、それぞれのIDの意味が全然わかりません。 手探りで調べてみて、解析できたのが以下の通り。

0x10000066( 0):ULONG   ID(?)
0x200f0012( 1):USHORT  修正回数
0x001e0064( 2):stream  
0x0028000b( 3):BOOL    アラーム
0x0029001f( 4):文字    
0x00460013( 5):ULONG   アラームの時間
0x002a0013( 6):ULONG   
0x10400013( 7):ULONG   開始時間から終了時間までの差(分)
0x0041001f( 8):文字    場所
0x203f0064( 9):stream  
0x0022000b(10):BOOL    繰返し予定
0x10420040(11):日付    開始時間
0x0044000b(12):BOOL    終日予定
0x00450013(13):ULONG   予定の公開方法(0〜3)
0x00210013(14):ULONG   秘密度(0〜3)
0x0020001f(15):文字    件名
0x0061000b(16):BOOL    
0x00480041(17):BLOB    
0x205f0064(18):stream  
0x00500013(19):ULONG   
0x0051001f(20):文字    
0x00530040(21):日付    
0x00470041(22):BLOB    
0x00520040(23):日付    作成時間
0x10430040(24):日付    
0x001b0013(25):ULONG   

まぁ、備忘録ということで解析結果のメモを残しておきます。 続きを解析してやろうとかいう酔狂な方がいれば、手持ちのデータは提供しますですよ。(って上記内容でほぼ打ち止めですけどorz)

本日のツッコミ(全3件) [ツッコミを入れる]

_ Offisnail [こんにちは〜EDB解析頑張ってますね〜 詳しく見てませんがpimsotore.hの#define PIMR_XXXX..]

_ Offisnail [0x10000066( 0):ULONG PIMPR_OID 0x200f0012( 1):USHORT ?修..]

_ ももたろ [おぉー。 どうせヘッダになんて書いてないだろうと決め付けて、そっちの方向からの調査はまったくしてませんでした。 この..]


2006年10月27日 [長年日記]

_ これから1〜2週間の間…。

私事により、いろいろな反応が遅くなると思います。

ごめんなさいですm(_ _)m