2007年9月30日日曜日

uGNote例外対策

コメントで報告を頂いた例外について調べてみました

例外発生箇所はImageファイルをwebからダウンロードするところで
HttpWebRequest オブジェクトを作成する再に発生していました
HttpWebRequest.Create(uri)

最初はuriに問題があって(例えば空白だったり、でたらめなアドレスだったり)例外が発生するのかと思いましたが、その場合は例外メッセージに uri についてのエラーメッセージが表示されるはず。
なので別に問題があると考えます

例えば大量にRequestオブジェクトを作成してしまってリソースが足りなくなるとか?でもリクエストの管理は自動的に行われていて、同時に発行できるリクエスト数は制限されるはずだから問題ないと思うし...

ただ言えるのはHttpWebRequest.Create(uri)を実行するのに例外処理をきちんとできていなかったって事で、それは基本的に問題なので例外発生で終了しないように修正しました

exeファイル

pRssreaderの様に通信エラーのログを残すようにしたほうが良いのか?(あれはあれで、毎回エラーログ画面が出てうるさい)


イメージファイルを取得し損ねる割合が高いのが気になります。リクエストのタイムアウトが短いのか?同時に発行するリクエスト数を抑える必要があるのか?
もう少し調べていこうと思います

bluetoothアダプタ

先月から注目していた超小型のUSB bluetoothアダプタプリンストンテクノロジー Bluetooth USB アダプター PTM-UBT3Sを買いました。主にマウス用に使うつもりです

今までノートパソコンで使うマウスに
  1. 有線ノートPC用マウス(Cマガジンの付録でもらった)
  2. LogiCoolのノート用マウス VX レボリューション VX-R
  3. マイクロソフトノート用マウス Wireless Notebook Optical Mouse 4000

と順番に買い換えてきました。最初の付録でもらったマウスは、ケーブル巻取り機能付の小型マウスででしたが、半年で壊れました。
 次のVX-Rはコードレスマウスで非常に使いやすかったけど、突然勝手にマウスカーソルが動き回る事が多くて使用するのを止めました。多分なにか電波干渉していると思います
もうワイヤレスは懲りたと思いながら、ワイヤレスの便利さに負けてマイクロソフトのノート用ワイヤレスマウスに買い換えました
これは安価でベーシックなワイヤレスマウスです。カーソルが勝手に動くことも殆どありませんでした。でも、USBのレシーバが大きいので、パソコン収納時にレシーバを挿したままにすることが出来ないのが不満です

最近発売されたLogicool VX ナノ コードレスレーザーマウス  はレシーバが極小で、挿したままでも気にならない、理想的な商品ですが、ロジクールのワイヤレスはVX-Rの問題があったので買いませんでした。

そんなわけで、PTM-UBT3Sの発売に飛びつきました。bluetoothなら電波干渉の影響が小さい気がするからです。自称モバイラーを目指す僕にBluetoothは、なぜか大きな魅力というか夢を感じます。

早速amazonから届いたので取り付けました



小さいです。でも、思ったより出っ張ってます。銀色の部分は全部差し込まれると思ってましたが、ちょっとだけ飛び出します。
でもこれなら、レシーバを毎回抜き差しする必要がなさそうです。完璧です。

さてと、マウスとペアリングして.....

bluetoothマウス持ってませんでした.......一緒に注文して置けばよかった

今のところただ青く光るだけのUSBコネクタキャップです。隣に写っている黄色いコネクタキャップと大差ない

amazonで売っているbluetoothマウスを探してみました
ファーストインプレッション
  1. アップル製はwindowsで使うには面倒なことがありそう
  2. マイクロソフト製はノート用にはデッカイ?
  3. Sony製はVAIOロゴがうるさい
どれも高価だけど、パッとしない印象でした
結局VAIOにピッタリなコメントを無視して、Sony製を注文しました
ここ5年ぶりぐらいに(自主的に)買ったSony製品でした



Microsoft Wireless Laser Mouse 8000
マイクロソフト (2006/11/17)
売り上げランキング: 1160
おすすめ度の平均: 2.5
3 普通
2 原因不明
3 原因不明の感度不良



Apple Mighty Mouse Wireless Mighty Mouse MA272J/A
アップルコンピュータ (2006/07/27)
売り上げランキング: 2446
おすすめ度の平均: 4.0
2 致命的な弱点
1 電池の重量
4 結局アップル純正マウスに戻って来た



SONY Bluetooth レーザーマウス ブラック VGP-BMS33/B
ソニー (2007/01/30)
売り上げランキング: 202
おすすめ度の平均: 4.5
5 VAIOにぴったり
5 現状最良のモバイルマウスの一つかな?
5 握り心地よし

2007年9月28日金曜日

uGNote作業中exe

なかなか完成しないので、とりあえず作業中のexeを公開します...
まだ、フォルダ指定ダイアログが動かなかったり、不要メモファイルの削除が中途半端だったり、画像ファイルを取りこぼしたりするようです

昨日はアイコン作りが上手くいかなくて時間を無駄にしてしまいました、こういうのは向いてないというか、センスが無いからどんだけがんばってもダメですね

やることリスト
  • キャッシュ用フォルダの指定ダイアログ
  • memoファイルのclean処理
  • 更新中のリストの挙動が変
  • 更新後にリストを再構築する
  • アイコン:オフライン可、新着有り
  • メモ取得中にアプリケーションを終了した場合に、起動中のタスクを終了させる
  • メモ取得処理の最適化
  • ノートブック毎のリロード


exeファイル

2007年9月25日火曜日

uNClockテスト中

大きな問題は出ていないので、頂いた要望のカスタマイズをやってからリリースしようと思っていましたが、uGnote のオフライン処理に手間取って手をつけられませんでした。
オフライン処理は大体出来ていますが、細かいところの整合が取れていなくて、なかなか完成しません。CompactFrameWorkだとFolderBrowserDialogって用意されていないみたいで、保存先のフォルダを指定するのに困ってしまいました。自分でフォルダ指定ダイアログを用意しないといけない...

uNClockのコメントで1秒設定のときにメール受信に失敗したと報告があったので、1秒設定のときだけ表示が終わってから2秒間サスペンドの判定を待つようにしてみました

exeファイル


それにしても、アドエスのキーロックは硬くて操作しづらいです

2007年9月23日日曜日

オフラインブラウズ

前からやるつもりだったuGNoteのオフラインブラウズに対応に着手しました。
結構難航してます
ノートの本文をファイルに保存するところはXMLシリアライザにクラスごと投げて簡単にできましたが、本文からリンクされている画像をローカルファイルに保存するのに手間取ってます。
.NETのwebブラウザコンポーネントで表示するだけなら、コンポーネント任せで画像の読込からキャッシュ処理まで全部やってくれます。でもノートブックから一括してメモをwebからダウンロードするのでwebブラウザコンポーネントに頼るわけにはいかないのです
だから画像のダウンロードから、リンクの張り直しまで自前で用意する必要があるのかなぁと

やらなきゃいけない作業は
  • HTMLの構文解析して画像のリンクを見つける
  • リンク画像をwebからダウンロードする
  • ダウンロードした画像をファイルに保存する
  • 保存したファイルにHTMLのリンクを張りなおす
  • 過去に保存したけど今は必要が無くなったファイルを削除する
と結構たいへんそう....まぁ大変なのは予想してましたけど

HTMLの構文解析は既存のHTMLパーサがCompactFrameWorkにあれば楽チンだったけど、見つけることが出来ませんでした。自分で書かなきゃいけないけどナントカなりそう

リンク画像のダウンロードは HttpWebRequest を使ってとりあえず試験的には出来ました。実用的には非同期通信するように書き換える必要がありそう

リンクの張りなおしは構文解析が出来れば、出来たようなもんだと思う

必要の無い画像ファイルを削除する....考えがまとまりません....

2007年9月20日木曜日

ダイアルアップ中の判定

uNClockの自動サスペンドへの対応

Eメール受信中には自動サスペンドしないようにする必要がある。
昨日はネットワークに接続中かどうかを判定することが出来たが、ダイアルアップ中でまだ接続が確立していない状態を判定できていなかった。

ダイアルアップ中であることを判定するのにレジストリ
Software\Sharp\ShPhoneLib\PppConnect
を見ることにした。PppConnectは接続試行中に1接続すると2になるのだろうと予想

その他、
uNClockは時計表示中に、キーを押したり、非アクティブウィンドウになったら自動終了するようになっている。Eメール受信でサスペンドから復帰したときに、Eメール受信中の通知ダイアログが表示されることで、uNClockが一瞬で終了する事がある

この時はまだ接続試行前でPppConnectもまだ0のままで、Eメール受信前にサスペンドしてしまう
そこで、設定時間経過後に自動終了した場合のみ自動サスペンドするようにした

つまり、自動サスペンドする条件は3つで
  1. キーロックしている
  2. ネットに接続していない
  3. 指定時間で自動終了しようとしている
これら全てを満たす場合にのみサスペンドする

あとは電話の着信でwakeupしたときにサスペンドしないように処理する必要があると思うが、どうやら着信中はサスペンドの要求は無視されるようでサスペンドしなかった

exeファイル

これで他に穴が無いか、ちょっと様子を見て、問題が出なければ、cabファイルを作ってリリースしようと思う

2007年9月19日水曜日

キーロック時の自動サスペンド

uNClockの要望であったキーロック時に一定時間後に自動サスペンドする機能をやってみた。昨日の内に、キーロック状態を取得するのと、プログラムからサスペンドに移行する処理は比較的簡単にできた。
アップロードしようと思ってcabファイルの作成までやってから、重大な欠陥に気がついた。

キーロック状態でメールが届くと、メール受信中にuNClockが勝手にサスペンドしてしまう

これはちょっと使えない....

接続中かどうかを
HKEY_LOCAL_MACHINE\System\State\Connections
のCount値で判断して1以上ならサスペンドしないようにしてみたけど、
ダイアルアップ中で接続が確立していないときはCount値はまだ0のようだった
ダイアルアップ中であることも判定する必要がありそうだけど、どーやればいいのやら...


2007年9月18日火曜日

ポティロンの森

昨日は茨城県のポティロンの森に子供と婆さんと兄貴とその子供で行ってきた。
ポティロンの森は馬とか羊とか小動物が少々と、畑があって収穫したりできて、ちょっとした遊具のある所。どっちかというと、小さい子向けの場所で、うちの子供たちにはちょっと物足りなかったかもと思いながらも、連れて行った。

朝から行って、馬に乗せてもらったり、ゴーカートしたり、ジャブジャブ池で遊んだり、白鳥ボートに乗ったりして遊んだ。一通り遊んだので昼過ぎにはポティロンの森を後にして、近くの牛久大仏を見に行った。
大仏は初めて見たけど、やたらとデカかった。何であんなデカイのを作ったんだろう?
あとは、何故かウサギとリスのミニ動物園があったり、猿まわしをやっていたりしていた。大仏と何の関係があるんだか?と思った。子供は喜んだから良いけど。

昨日はとにかく暑くて疲れた。3連休とかあると、だいたい子供を連れて出かけるのでお父さんはちっとも休みにならない。
まぁでも、子供が喜んで遊んでいる姿を見ると、それだけで幸せだなぁと思う

2007年9月16日日曜日

3連休

で敬老の日でもあるので、子供を連れて実家に来ている。嫁さんは仕事が忙しくて、休日返上で仕事をしなければいけないらしいので家に置いてきた。

今日は土浦の方に梨狩りにいった。最初にwebで調べて行った農園では、予約無しでは断られてしまった。梨狩りに予約がいるなんて考えもしてなかったのでびっくりした、車で走っていると沿道沿いに梨狩りの看板が結構でてるのに、そこの農園だけ車が一杯来ていた。いまどきは皆インターネットで調べてくるのでweb検索で出てくるところに集中するのかも

uNClockは思いのほか、コメントも要望も貰えた。最初の予定では、表示する情報をもっと増やしたものを作るつもりで、その予行に単機能なもので試す用にuNClockを作った。だから、表示や動作のカスタマイズは全然考えてなかった。でも要望をもらえたのでやってみようと思う。

紹介してくれたページ
w-zero3日和さん
モバイルつれづれ日記さん
伊藤浩一のW-ZERO3応援団さん

2007年9月14日金曜日

uNClock1.01 ちょっと対策版

昨日は CeGetUserNotificationHandles() がちゃんと動かないのでは?と書いたけど、それ以前にプログラム上の問題を発見したので修正した。

ver1.00ではCeGetUserNotificationHandlesで全ての通知ハンドルを取得しきれていなかった。実際100件を超えるようなNotifyがエントリーされている状態では取りこぼしていた可能性が非常に高い。

ver1.01ではそこのところ修正したけど、CeGetUserNotificationHandlesの問題は他でも書かれているので、やはりremoveが出来ないこともあるかもしれない。僕のところでは問題が起きていないのでなんとも言えないのだけど

一度登録したハンドル番号は恒常的に変わらないものだとすれば、登録したときのハンドル番号を保存しておいて、直接ハンドル番号を指定して通知登録を削除することも出来る

そう考えて、プログラムは書いてみたけど、ハンドル番号が変わらないと言い切れないので公開版には含めてないです。多分ハンドル番号は変わらないと思うけど.....どーなんでしょ?


ver1.01 cabファイル

uNClockの問題

uNClockでサスペンド復帰時に自動起動する為に、CeSetUserNotificationExを使っているのだが、これを削除することが出来ない事があるようだ。今日早速 koichi さんが試してくれたのだけど、Remove されないとコメントを頂いた。wiitomo さんは remove できたとコメントをもらったので、remove 出来ない条件が何かあるのかもしれない

結局 Scheduler Entry Editor (for WinCE)  (ScheEdit)を使ってもらって削除することが出来た。100個近くnotifyが登録されていて、そのうち3個 uNClock のnotufy登録だったらしい。

作者のしろうずさんの調査によると CeGetUserNotificationHandles() がzero3では正しく動作しない事があるそうだ
http://www.ipmsg.org/bbs/bbs-wince.cgi?id=&md=set&tn=0002

uNClockでは remove 処理中で全ての登録を検索して削除するようにしているので、CeGetUserNotificationHandles の動作不良ということなのかなぁと思う
ScheEdit は直接CEのデータベースを操作することで解決しているらしい、ソースを公開しているので同じような処理を組み込めば解決できるけど、DBの直接操作は僕にはちょっとリスキーだと思うので、ScheEditにまかせたほうが良いかと思う
simpleHTTPntpの作者さんのところでも同じような事を書いている。

uNClock1.00

W-ZERO3 ツールMEMOのsoliptさんはお疲れのようで、いつも自作アプリを紹介してもらっている立場としては”がんばってください”というか”無理せずに休み休みやってください”って思います
普段は誰も来ない陰気な独り言なこのblogもW-ZERO3 ツールMEMOさんで取り上げてもらうと人が来るので自作アプリの発表もやりがいが出るし、soliptさんのちょっとしたコメントが嬉しかったりして、とっても感謝してます
でも、あれだけの記事を一人で書いていくのは大変なことなんでしょうねぇ
僕なんて週に一回だってblog書くのが大変ですよ、別に書く事も無いけど

uGnoteについて要望をもらったので、対応しようと思っているのだけど、その前にやり始めた事があるので先に作り上げることにしました

uNClock
サスペンド状態から復帰したときにポップアップして時刻を表示するアプリです。

自動起動を削除できない事があるようなので使用は控えたほうがよさそうです
(対策版の ver1.01 を作りました。それでもダメならScheduler Entry Editor (for WinCE)  で削除できます)


僕はタイトルバーとToDayに時計表示をしないようにして使ってるので、腕時計がわりにアドエスで時間をチェックするときに不便なので作りました。
本当は、着信件数や未読メール数、バッテリやメモリなどの情報表示もToDay画面から外して、代わりにポップアップ表示するようなものを作ろうと思っていて、その練習と言うか、試しに時計だけの表示で作ってみました。

サスペンドからの復帰はNotify通知でアプリを自動起動するように設定するのでプログラムは常駐しません。Notify通知の処理にはちょっと不安があるので、それを試したかったので作ったような感じです
3日程使ってみて問題は起きてないから大丈夫だと思うけど、どうでしょう?他のアプリとの兼ね合いで問題が起きなければいいのだけど

自動起動に登録した場合は、アンインストールするする前に登録を解除するようにメニューから操作してください。登録が残ったままアンインストールすると、サスペンド復帰のたびにウザーイ事になります。

こんなイメージです


一応無駄に半透明っぽいパネルにしてます。
Vistaのコントロールパネルみたいに半透明なのが大好きです。それだけでvista買おうかと思います。買ってないけど。iphoneもかっこいいよねー半透明が

こーやってみるとあんまり半透明の効果はないか....
ちょっとぼかしたりしてるんだけど


起動後はソフトボタン以外のキーを押したり、別のアプリが前面に来ると時計パネルは下に引っ込んで終了します。
引っ込むときはちょっとアニメーションが引っかかります。何事も出すときよりも引っ込めるときのほうが大変なようです。ばっさりと切り捨てて終了にするのが一番楽なんだけど、無駄にアニメーションを試みます
起動直後はサスペンド復帰での自動起動は登録してません。メニューでSetWakeUp....




1/3/5秒のどれかを選ぶと登録をします



自動起動した場合は、ここで設定した時間後に自動終了します
登録を解除する場合はmenuからremoveを選択してください

cabファイル

本体メモリにインストールしたほうがいいと思います

2007年9月8日土曜日

ネイティブアプリ

WindowsMobileのネイティブコードのアプリを書きたいんだけど、ソフトメニューの変更の仕方がよく分からない。
基本的なことが全然分かっていないみたい...

VisualStudio で作られる雛形ではOKとヘルプがそれぞれ左メニューと右メニューに現れる。このうち右メニューはリソースエディタで変更できたけど、左メニューを変更する手順が分からない。rc2リソースファイルは直接編集するな!って書いてあるし

僕のモバイルプログラム用バイブルWindows Mobile 5.0 アプリケーション開発 Beginner's Book は.netアプリしか説明が無いんだよねぇ。いい本無いかなぁ

結局左メニューの編集は rc2リソースファイルを手で編集するしかないように思う
ノート
あってるかどうか知らんけど

犬は勘定に入れません

よーやく読み終わった....

おもしろかったけど
航路ドゥームズデイ・ブックのほうが好きだ、最後のウィネベーゴもよかった
どっちかというとユーモアとかよりシリアスな話のほうがいいみたい


犬は勘定に入れません…あるいは、消えたヴィクトリア朝花瓶の謎

2007年9月4日火曜日

諏訪湖

土曜日に白樺湖の別荘地に行ってきた。
諏訪湖で全国新作花火競技会大会というのがあるそうなので夕方に諏訪湖方面に移動。諏訪湖周辺は猛烈に渋滞すると聞いたので湖から少し離れた峠の途中にある立石公園を目指した。4時過ぎに公園近くに到着したが公園の駐車場(小さい)は一杯で道路にぎっしりと縦列駐車してた。
新作の花火の発表ということで結構面白かった、が開始直前から雨が降り出して小学校1年生の娘がぐずりだしたので8時には帰路に着くこと。最後まで見れなくてもったいなかった。帰りはビーナスラインを霧ケ峰を通って白樺湖に戻るのだが、霧が凄くて前が殆ど見えず怖かった




アドエスのカメラで花火を撮るのはちょっと無理だった....

次の日は別荘地の隣にある蕎麦屋利休庵でかき揚げ天ざるを食べた
ここのかき揚げはドデカイ
一人で食べきれるかどうかってくらい







蕎麦もボリュームがあるほうだと思う。東京では蕎麦は上品ぶって、ちょびっとしか盛らないくせにエラク高かったりして腹立つことがあるので蕎麦屋にはあまり行かないのだが、ここは白樺湖に行くと必ず寄る事にしてる。
かき揚げも蕎麦もうまかった

うまかったのだけど、どうやら蕎麦アレルギーが決定的になってきた気がする。蕎麦を食べると必ず胃が熱くなって痛む、この日は一日腹具合が悪かった、もう蕎麦を食べるのは止めたほうがいいかもしれない....
と蕎麦を食べるたびに思うけど、忘れて食べてしまう


Posted by Picasa