2007年12月29日土曜日

AX10壊れた

NECのハードディスクレコーダAX10を長年使っていましたが、先日とうとう壊れてしまいました。NECは市場から既に撤退してしまいましたが、AXシリーズはネットワークから映像ファイルを吸い出したりできるので気に入ってました

最近チューナー映像の同期が乱れるようになったと思ったら、だんだん悪化してきて、とうとう同期がとれない状態になってしまいました。壊れ方から推測すると、チューナー直後のコンデンサの容量抜けか?と思ってばらしてみましたが、見た目は異常なしでした。
今更アナログ放送しか録画できない機器を修理してもしょうがないか?、Linuxベースで動いているからNASに仕立てられないか?とか考えてるうちにハードディスクも死んでしまったようです。起動すら出来なくなりました。

とりあえず、この前作ったUbuntu NASにドライブをつないで、fsck してみたら、ハードウェアに問題があるかも的なメッセージが出ました。linuxはイマイチ使い方がわかってないけど、Ubuntu Nas editionが役に立った?

今更AX10が役に立つ使い方を思いつけるかどうかも怪しいですが、
こんな事ならハードディスクのバックアップをしておけば良かったと、ちょっと後悔。
リカバリする方法は無いですかね~

2007年12月21日金曜日

通信に失敗

uGNote+Rでデータのダウンロードに失敗することがあるのだけど、原因が良くわからない
今のところActiveSyncでパソコンとつないだ状態でダウンロードすると問題が無い。だからVisualStudioで現象をデバッグする事ができないので困ってしまいます

失敗したときの例外メッセージが3パターンぐらいあります


(1) だいたいアプリ起動直後に初めてダウンロードする場合に出るエラー
ネットワーク接続が開通していないか、接続先が認識できていないみたい
リロードさせるとうまくいく場合がある。それでもダメならアプリを立ち上げなおさなければいけない



(2)Googleのユーザー認証時にSSL通信をするので、そのときに失敗している
リロードすると成功する



(3) ダウンロードしたデータに問題があるみたい
XMLのパーサが例外を起こしてる。滅多に出ないけど、このエラーが出ると暫くダウンロードが出来ない

何がいけないのですかね~
(1),(2)は HttpWebRequestを使ってPOSTしているだけのつもりなんですが、何か忘れてることがあるのか...

認証idを取得するところのソースはこんな感じです


string param = "Email=" + email + "&Passwd=" + password + "&service=cl&source=Gulp-CalGulp-1.05";
byte[] data = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uGnotePR.Properties.Resources.URL_GOOGLELOGIN);
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = data.Length;

Encoding enc = Encoding.UTF8;
Stream reqStream = req.GetRequestStream();
reqStream.Write(data, 0, data.Length);
reqStream.Close();
WebResponse res = req.GetResponse();
Stream resStream = res.GetResponseStream();
StreamReader sr = new StreamReader(resStream, enc);
....


Posted by Picasa

2007年12月20日木曜日

IT土方って

Androidに期待するのは、まだ気が早かったかもしれない


ウィルコムコアモジュールフォーラムの「W-SIM+Android」の一般公開デモに行ってきた | memn0ck.com livedoorユーザーの評価

バグが多いのはしょうがないとしても、業界の盛り上がりはいまひとつなのかな?
夢を見るにはまだ早いのか...

ところで、話題になってるのかどうか知らないけど、

IT業界を震撼させた2chスレ『ブラック会社に勤めてるんだが・・・』ここに終焉。泣いた。*ホームページを作る人のネタ帳 Buzzurlにブックマーク

を読んだ、とういうか読んでる。もうすぐ読み終わる

ここまで酷くは無かったけど、前の会社を思い出してしまった。無責任な上司と、次々と押し付けられる仕事と責任でボロボロになりそうだった日々...


前の会社では、先輩が次々と辞めていって、入社後数年で先輩が一人も居なくなっていた。当然仕事は全部引き継がされて、上司はどんどん仕事を持ってくるし、訳のわからない会議に借り出されるわで大変でした

既に仕事が多いのに、更に別の仕事を取ってくるので上司に
「誰がその仕事やるんですか?」って言ったら
「O君(僕のこと)」
「もう無理ですよ、人を増やさないと出来ませんよ」
「O君が倍働けばいいんだよ」
「はぁ」
みたいな感じでした。

工程表には土日休み無しの工程を組まれて、そのうちグループのリーダーになれって言われて、無理な工程を自分で作る仕事までやらされました。
リーダーになってボーナス査定用の評価をつける仕事まですることになったけど、後輩の評価をつけるだけではなく、組織変更で合併した元別グループの上司の評価まで付ける事になっていて、上司に

「Kさんの評価は無理です、Kさんは僕より等級上じゃないですか」って言ったら
「そうだよ、Nさん(中途採用で入った)だってO君より等級も、給料も上だよ」
「O君はリーダーだけど、全然エラくないからね」

全然偉くないってどういう事ですか?、ずっと疑問に思っていたことを聞いてみた
「.....リーダーって何ですか、手当てとか付かないのですか?」
「手当ては付かないよ、O君は俺の心のリーダーだから」
「心のリーダー...ココロの....」

心のリーダーって、なんかカッコよくないか?

2007年12月18日火曜日

Asus Eee PC国内販売か

Asus Eee PC 国内登場は2月、予価5万円前後 - Engadget Japanese 'はてなユーザーの評価'

5万円前後って微妙な価格だなあ。Linuxにして1万円ぐらい安くして欲しい
最近特に思うけど、WindowsMobileのアプリ開発さえしなければWindowsXPを使うの止めて、Linuxにしても全然困らないんじゃないかと

WILLCOMからAndroid端末出してくれないかなぁ~
WILLCOMコアモジュールフォーラム、AndroidでW-SIMの通話デモ 'はてなユーザーの評価'
i.MX31とWSIMでサクッと動かせちゃうんだったら、半年後ぐらいに新端末だせないかな?京セラとかシャープみたいな携帯メーカーじゃなくて、ショップブランドNotePC作ってるような会社とか、携帯メディアプレイヤー作ってる会社とかが作ったりして...


ブックマーク数をタグ化して簡単にブログで使えるブックマークレット*ホームページを作る人のネタ帳 はてなユーザーの評価
でリンクを作ってみました。でも、はてぶ数って何かな?

追記:
ちょっと失敗しちゃった

VisualStudio2008

Express Edition 日本語版が提供開始されましたね

VisualStudio も 2008ではExpressEditionでもモバイルデバイス対応になるに違いないと、勝手に思っていましたが、期待通りにはならなかった....
それどころかStandardEditionでもモバイルデバイス対応がなくなってしまった。
なんか、がっかりした

ProfessionalEditionって値段いくらするんだろう?
2005のProfessional Editonでも10万以上するからなぁ

僕は期間限定評価版を使いつづけているけど、他の開発者さんたちは2005のStandardEditionを購入してるのかな?
いつかExpressEditionでもモバイル開発ができるようになるから、それまで評価版でがまんし続けようと思っていたけど、そんな日は来そうに無いみたい。今のうちにVisual Studio 2005 Standard Editionを買っておくしかないのかも...

2007年12月17日月曜日

Googleリーダーについて

昨日のblogで大事なことを書き忘れてました

uGNote+Reader はGoogleのサーバより登録Feed情報をダウンロードしますが、その際に使用している手順はGoogleの公式に発表されたものではなく、こちら情報を元に作成しています

http://code.google.com/p/pyrfeed/wiki/GoogleReaderAPI

その他に以下のサイトも参考にしました
http://d.hatena.ne.jp/yuum3/20070916/1189955491
http://www.niallkennedy.com/blog/2005/12/google-reader-api.html

NoteBookと違って公式なAPIを使用していないので、Google側の仕様変更などで動作しなくなる可能性があります。

主に使用しているAPIは以下の通りです

Google へのログイン用sidの取得
https://www.google.com/accounts/ClientLogin

既読やstar等のラベル編集に必要なtokenの取得
http://www.google.com/reader/api/0/token

登録Feed一覧の取得
https://www.google.com/reader/api/0/subscription/list

未読数の取得
http://www.google.com/reader/api/0/unread-count?all=true

Feed毎のアイテム取得
http://www.google.com/reader/atom/feed?xt=user/-/state/com.google/reading

ラベルの編集
http://www.google.com/reader/api/0/edit-tag

それぞれwebブラウザでアクセスしてみるとXMLが得られるので、大体の使い方が判ります。
上記参照サイトで解説されているので興味のある方は参照してみてください
要望があれば、手順などをもう少し説明できるとおもいます(僕のわかっている範囲ですけど)

2007年12月16日日曜日

uGNote+Reader

uGNoteにGoogleReaderのFeedリード機能追加改造中だけど、なかなか完成しないというか、年内にはどうなるかわからないので、とりあえずβ版を公開してみる事にします
残念ながら、これ以前のバージョンとの間に設定及びデータファイルの互換は無いです。exeとインストール先も別物で、バージョンアップというよりまったく別のプログラムです

まだ、問題がいっぱいあって、以前のuGNoteで出来ている事が出来なくなったりしてます

  1. 20件しか記事を読み込まない
  2. オフライン閲覧機能が未完成(画像ファイルの張り直しとか、キャッシュファイルの掃除とか)
  3. マルチスレッド処理が未実装
  4. リストの表示が遅い
  5. コンテンツブラウザが真っ白になることがある
  6. Feedの読込が出来ないことがある
  7. メニューの構成をまだ考え中
  8. その他、動作確認してない事がいろいろ
cabファイル

今回から、オフラインモードとオンラインモードの切り替えは無くなりました。オフライン用のキャッシュファイルが無い場合や古い場合にサーバーからダウンロードするようにしてます
β版で完成度が低いので、ちゃんと動かなかったらゴメンなさい

簡単に使用方法を説明しておきます

使用するにはGoogleのアカウントが必要です。GoogleReaderを既に使用している人を対象にしています。
まずインストールする。インストールはSDカードではなくて、デバイスにします
起動直後

Default User's NoteBookは僕の共有ノートが登録されてます
自分のGoogleNoteBookのIDやReaderの登録をする前に、こちらで動作を確認します

Default User's ... を選択して中央ボタンでNoteBookをダウンロードしてリストを表示します。アイコンが灰色の項目はサーバー上に新しいデータがある事を示しています。灰色状態のリストを選択するとネットからデータをダウンロードして表示します。キャッシュにデータがある場合はダウンロードせずに表示します


ユーザーは複数のノートブックを持ち、ノートブックごとにメモを登録できるので、メモを分類しておくことが出来ます。uGNoteは閲覧機能だけなので、ノートの作成やメモの登録はPC上でやります

カーソル上下ボタンでリストの項目選択、左右ボタンでリストの種類を選択できます。コンテンツ表示中は上下ボタンでページのスクロール、左右ボタンでコンテンツの移動、真ん中ボタンでリスト表示に戻ります
操作系の変更は前バージョンから特に変更してません
ここまではGoogleNoteBookのメモを閲覧する機能の説明でした。
GoogleReaderを閲覧する場合も、ほぼ同じ手順で操作します

次にキャッシュフォルダの設定をします
キャッシュはダウンロードしたデータを端末側に保存しておくファイルですが、まだ不要なキャッシュを掃除する機能が入ってなかったりするので、本体のメモリを圧迫しないように、SDカードにキャッシュ保存用フォルダを作成しておくことをオススメします

一番最初のUserリスト画面に戻ってメニューからOptionを選びます



オプション画面にはキャッシュフォルダの設定しかないです
... ボタンでフォルダを選択します

保存用フォルダを予め作成しておくと良いでしょう


通常はキャッシュフォルダを変更すると、それまでのキャッシュデータを新しいフォルダにコピーしますが、そこの処理がまだ修正が完了していないのでエラーメッセージが出ます。ただ、まだ移動するファイルが無い状態なので無視します


次に自分のGoogleReaderを登録します
New Userを選択して、メニューからEditを選択します

初期状態ではNoteBookのIDを登録する様になっているので、チェックボックスReaderをチェック、Publicのチェックを外します
Email と Password にGoogleのIDとパスワードをそれぞれ入力して右ソフトキーでOKします
Publicにチェックした場合は他人の共有アイテムを閲覧できます。その場合はEmailとPasswordは必要なくUSerIDだけを入力します
但し、共有アイテムの閲覧機能は、まだ動作を未確認です。問題があるかもしれません



OKするとReaderの登録Feedフィード一覧がダウンロードされて表示します。ダウンロードに失敗する場合はユーザー設定の内容を確認してください。内容に問題が無くても、ダウンロードに失敗することがあります。(原因は調査中です、アドバイスがあれば教えてください)

リストに既読のアイテムが無い場合はグレーになります
端末に最新のデータが無い場合はアイコンがグレーになります。選択するとサーバーからデータをダウンロードしてアイテムリストを表示します
リストをサーバーから再読込したい場合はメニューからReloadします

アイテムリストも同様に既読の場合はグレーになります
アイテムリストは20件しか読み込みません。全件数読み込みをすると膨大な量になってしまうので、とりあえず20件だけにしてます。どうしたら良いのか考え中です。


メニューからstarを選んでスターラベルを付けられます。気になる記事にスターを付けておき、あとでPCからblogページを読む様な使い方を想定しています

既読状態はアイテムを表示した時にGoogleのサーバーに既読情報を送信しています。
スターも設定した時にサーバーに送信します
逆に、PC等からスターを付けたり既読にしたアイテムはreloadしないと反映されません


アプリを終了するときはメニューからExitを選びます
終了時に設定やダウンロードしたデータをファイルに保存します。終了しないでアプリが落ちちゃったりすると設定が保存されないので、僕はマメに終了するようにしてます





ファイルの保存が終わるまで少し待つ必要があります

ざっとこんな感じです

2007年12月15日土曜日

墓場鬼太郎

来年1月から墓場鬼太郎が深夜に放送開始!
http://www.toei-anim.co.jp/tv/hakaba/
声優陣が初代の時の人がそろっている!のが期待できそう

ゲゲゲの鬼太郎は、2作目、3作目を見た世代です。3作目は子供ながらに、説教臭くて何か違うとがっかりしました(特に夢子ちゃんが嫌だった)

今回はどうなんでしょうか

ちなみに今放送中のシリーズはうちの子供達が見てます。お父さんは見てませんが...

ごっつ

小学一年生の娘が、数を数えているのを聞いてたら
ひとつ、
ふたつ、
みっつ、
よっつ、
ごっつ
と言ってました。

その娘に壊されたT-fal 電気ケトル

子供が安全にお湯を沸かしたりできると思って購入したのに、誤って机の上から転げ落としてしまったらしい



ほんとは取っ手のところに、お湯が沸くとポコって音がして電源がOFFになるスイッチがあるはずなんだけど、軸が折れて取れてしまった

T-fal 電気ケトル ニューヴィテスエクスプレス 1L BF202022

購入して一週間の短い命でした.....

5500円で買ったのに修理代が3500円で送料が1000円くらいと言われたので、修理は止めて、内部のスイッチを紐で引っ掛けて無理やり使ってます

お湯がすぐ沸くので気に入っていたので、残念....

2007年12月4日火曜日

卓上ホルダ

ades用の卓上ホルダ CE-DH2
がamazonで20%OFFだったので買いました。20%offでも1580円もしました。でも、おかげで充電するのが楽になりました。esのときも思いましたが、こんなの標準の付属品にしておくべきなんじゃないかな

----
最近全然プログラムしてません。なんか波が引いた感じです。uGNoteのGoogleReader対応も自分で使う分にはなんとかなるぐらいには出来てるけど、公開できるレベルまで出来ないまま1週間近く放り出したまんまです。なんか毎日忙しいので家に帰ってまでプログラムするパワーが残ってない。wii フィットも買っちゃったので益々時間が無くなる~
出来上がってないのに、こんなこと書いてもしょうがないのだけど、GoogleReaderって結構便利です。購読しているRSSフィードの既読状況が、どこで見ても反映されるので、会社で休憩中にblogの更新チェックしても家でチェックしても良い。更にadesで更新チェックしても自動的に既読が反映されるので、いつでも同期された状態でいられます。

 スター機能も意外と便利で、通勤途中などの空き時間でタイトルだけチェックして、気になる記事だけスターをつけておいて、後でPCで記事本文を読む...とういような使い方が出来そうです。(まだ実装できていないけど)

試していませんが、ここでem.oneででGoogleReaderを見やすくするゲートウェイを紹介しています。ゲートウェイを用意するのは僕には少しハードルが高いですが、こういう手法もありだと思います。

2007年12月1日土曜日

パックリ

嫁さんが、どっかから貰ってきた雑誌「○婦の友増刊2008年1月号」に豪華7大付録ってのが付いていて、その1が366日のおかず家計簿でした。

「366日のおかず家計簿って良いね~、毎日おかずを何にするか考えなくて良いじゃん?」なんて言いながら見てみたら全然違いました。ページ見開きにつき1週間分の家計簿欄があって、その脇に小さくおかずが3品並んでいるだけでした。しかもメインのおかずになる料理は1品だけで、残り2品は御浸しみたいな添え物で、せいぜい1日分のおかずしか紹介されてません。
366日のおかずが載っていると思ったのは僕だけ?
それとも、1週間同じものを食べ続けろって事か?とか暫く考えてしまった
僕の勝手な予想では366日分のおかずのレシピとその材料が記載済みの家計簿だったんだけどね


その他の付録も、ナンですかね~
うちの3姉妹カレンダー」うちの3姉妹
って知らなかったんだけど、てっきり西原理恵子かと思ったよ。さらに別の漫画家さんが混じっているような

あと最近よく目にする指のひび割れケア製品の広告「パックリ」って奴。あのひび割れ指のグロ写真は止めて欲しい。

フィラデルフィア美術館展

東京都美術館の「フィラデルフィア美術館展」に嫁さんが行って来てホアキン・ソローリャの絵にがとても良かったと話をしてくれました。海外では結構有名で人気のある画家らしいけど日本ではあまり知られていなくて、うちの奥さんも始めて知ったそうです。
で、そのホアキンさんの絵についてちょっと興奮気味に教えてくれました。嫁さんは絵描きさんなんだけど、なんか自分の目指す方向性について少し自信が得られたみたい

僕は絵の事は良くわからない、というかあんまり興味ないのだけど、「へぇ~」とか、それは良かったねとか嫁さんに言いながら、カテキンとか、カルキン坊やとか昔流行ったなぁとか関係ない事に思いを馳せてしまった

書いてて何が言いたいか判らなくなってしまったけど、自分は見てもいない絵なのに、ちょっとした感動を分けてもらったような気がしました。

2007年11月27日火曜日

Ubuntu NAS

噂のPC Japan 2007年 12月号付録のUbuntu 7.04 PCJapan NAS Editionを古くて使わなくなったPCに入れてみました。
Osはlinuxだけど、インストールは簡単でした。インストール後の設定もwebブラウザで行えて、ま~ま~簡単(雑誌に書いてあるとおりの事をやるだけの場合)

マシンスペックは
CPU : Athlon 700MHz
Mem : 128MB
HDD : 40G
Video : AGP
LAN : 100Base
Power : 140W


NASは他に使ったこと無いのでスピードは早いか遅いか?良くわからないです。どうせLANが100Baseでクライアントは54Mbpsの無線LANなので関係ないと思いますが
Ubuntuベースですが、ウィンドウシステムとかは入ってないので128MBのメモリーでもOK?かもって思います

それよりも消費電力が気になりました。NASだけに常時電源をOnにしておくものだと思いますが、ちょっと常時Onは厳しいような。GeodeNxみたいな省電力CPUとマザーを用意したくなりましたが、手持ちのパーツを流用するという趣旨から離れていくので止めときました。

そんなことより一番の問題は、筐体が無い事でした。ケースだけは中身が入れ替わっても使い続けられるので、余りパーツには筐体が無いのですよね。
ケースだけ買っても5~6千円はするので、無駄な出費というか、そこまでする気にはなれないので、今のところとりあえずベニヤ板に裸俗っぽくネジ止めしてます。ちゃんとケースに入れないと音がうるさいです。

電源は500円で売っていたアウトレット品を買いました
ベニヤ板400円で総額900円ってとこです

遊ぶにはいい感じでした、ちょっとした日曜大工的な工作も楽しめたし

2007年11月21日水曜日

ファイナル・カット

ブレードランナー ファイナル・カットが上映中らしい

学生の頃にディレクターズ・カットを当時どうしても見たくて、誘った友人皆に断られたので一人寂しく見にいったのを思い出しました。それでも、劇場で見ることができて感動したものです。

その後DVDでディレクターズ・カットは購入しましたが、たしかパッケージには最終版と書かれていたはずだけど、ファイナルカットってどういう事?なんでしょう

ファイナル・カット見に行きたいけど、見に行くのは無理だろうなと
いろんな障害を乗り越えてでも見に行く価値があるか?微妙な気がしてます。いったい何が違うのだろうか?そこが判らないと見に行けないし、判ってしまうと見に行かない様な気もするし

さらにDVDボックスが発売される
【10,000セット限定生産】『ブレードランナー』製作25周年記念 アルティメット・コレクターズ・エディション・プレミアム(5枚組み)
フィギュア はいらないけど欲しい。DVD5枚組といっても殆ど同じ内容のものが5枚なんでしょと思う、でも欲しい。マニアじゃないけど欲しい。多分買わないけど...

そんな余裕ないしねぇ。どっかからお金が降ってこないかなぁ

2007年11月19日月曜日

晩御飯

今日は嫁さんが仕事で名古屋まで行ってしまって、明日まで帰ってこないので、ひさしぶりに晩御飯を作りました。
チョッと前に「鶏皮せんべい」を10分以内に60円で作る記事を見て以来、鶏皮せんべいが気になって仕方なかったので実践してみました。鳥皮だけは売ってなくてモモ肉を買ってきて皮と肉を分離して作ったら、ちょっぴりしか出来なかった。でも、旨かったです。子供も美味しいといってくれた。最初は脂が出てくるか心配したけどびっくりするくらい油がとれました
その後、あまった鶏肉と脂でチャーハンを作りました。
お父さんはチャーハンだけは上手だね、と子供に言われたけど喜んでいいのやら
これからは嫁さんが家を空けることが多くなりそうなので、チャーハン以外に作れるようにならなきゃいけないなぁと思いましたとさ

10分で作れるナントカ~ みたいなのをもっと探さねばなぁ

2007年11月13日火曜日

ワンセグ見るならgigabeat

TOSHIBA gigabeatV MEV30E(W)

これってWindowsMobileベースのOSなんですよね Portable Media Centerだとか

あっちこっちで投売り状態ですね

今 amazon で60%off 19800円は買いだ!!と言う気持ちを抑えてます。
落ち着け!!ワンセグなんて見ないだろ?TVだって殆ど見てないじゃないか!
2月に買ったTOSHIBA gigabeatP5も、GREEN HOUSE USB2.0 1SEG TV TUNER W-one ブラック GH-1ST-U2Kだって引き出しに閉まったままだし

”gigabeat買うぐらいならiPod touchを買えっ”て悪魔の囁きが聞こえてきた

そういえばgigabeatは初代のPCMCIAカードが刺さる奴も持ってたりします
当時はPCMCIAカードのHDDが凄いと思って。Jornada720に挿せるぞ!とか考えて買ったんだけど、挿してからどうするって所までは考えてなかった。

2007年11月11日日曜日

既読マークの更新

GoogleリーダーからRSSフィードをuGNoteで読んだ場合に、”読んだよ”ってラベルを付ける様にGoogleリーダーのサーバーに要求を出してます。

要求を出す処理は出来ていますが、いつ要求を出すか?を思案してます。とりあえずRSSフィードのアイテムを開いたらすぐに要求を送信していますが、オフラインブラウズ中は要求を出すわけにはいかないです

オンライン中はすぐに要求を出して、オフライン中なら次にリロードしたときにまとめて既読マークを送信する。

と、すれば良いかなぁと考えてます。が、オンライン中かオフライン中か?はどうやって知るのだろうか?

一週間プログラムをしてきて、なんだか気力が続かなくなってきました....

最初はこんなこと出きるかも?ってアイデアというか考えからスタートするので、初期のアイデアが実現された時ぐらいからペースダウンしちゃいます

というのは、多分計画性が無いからだと思いますが

2007年11月10日土曜日

データ構造

uGNoteにGoogleReaderの閲覧機能を追加しています。
だいたいの基本機能は出来ていていますが、今更ながらノートとリーダーでのデータの扱い方の違いに頭を悩ませてます。

基本的にノートもリーダーもXML(Atom)形式のデータを処理するので、受信と表示に関してはuGNoteの元のプログラムと殆ど変わりません。
違いは、ノートは受信データをただ読むだけなのに対して、リーダーは既読済みマークやスターマークの追加等の情報をサーバー側に反映させたい、と言う所と、取得するデータサイズが大きくなりがちな事です。受信するデータが大きいと、パケット代や受信速度が気になってくるので、無線lanで一気にデータを取得してオフラインで読むか、読む記事毎の小さなデータをそのつど取得する様な運用方法になると思う

ノートは、もとはオンラインのデータを表示するだけのつもりだったので、オフライン処理のプログラムは、ユーザー単位で一気に複数のブックのデータを受信する単純なものでした。
このままでは、googleリーダーには向かないかなぁ、と今頃になって思い始めてます

オフライン用ファイルの保存もユーザー毎に1ファイルにまとめて保存してしまっていますが、フィードサイト毎に分けたほうが良いかも?

色々考えていると、今のままコードを書き加えていくのは無理があるかな、データ構造から考え直さないとダメなんじゃないだろうか?多分そういうことはプログラムする前に考えておくことなんだと思う

あとはオフラインで閲覧した結果(既読やスター)を何時サーバーに返すのか?が問題です

メタバグ

自作の電脳メガネをかけてTVを見ている小学校1年生の娘に聞いてみました

(父)メタバグって何?
(娘)お菓子みたいな、細かいの

(父)??ふーん、じゃあキラバグって何?
(娘)集めると通が開くの

(父)開くって?
(娘)アッチに行く

(父)アッチって何?死後の世界か?
(娘)違う!!

娘に聞いたのが悪かった....おにいちゃんに聞いてみよう

(父)メタバグって何?
(兄)知らない

(父)じゃぁ、キラバグって?
(兄)知らない

(父)あっそ....

バグに怯えながら暮らす父には、とっても気になる事なのでぜひ教えてもらいたい

2007年11月9日金曜日

HD DVDレコーダ

昔から使っていたHDDレコーダが最近調子悪いので買い換えようと思ってる
HDDレコーダは前々から買い換えたいと思いながら、HDDレコーダは買い時が難しくて購入する踏ん切りがつかなかったけど、いよいよダメになってきた

コピー制限の問題が解決するまでは、正直今は買い時ではないと思うけどしょうがないかな~と

それでチョッと調べてみたら、HD DVD レコーダが意外と安くてびっくりした。VARDIA RD-A300で105,000円。ハードディスク容量が300GBで少し足りないかなと思うのでRD-A600129,000円のほうが良いかも。とか考えてたら、年末に新機種が10万円以下で出るらしい

新機種出るまで待つか~

でも、HD DVDってどうなんだろう?ブルーレイの方が主流になるのか?ブルーレイは高いし、とか考え出したら、ますます買い替えできなくなりそう

とか思ったら、ブルーレイも安くなってたのねSONY ブルーレイディスクレコーダー BDZ-T50 が、99,800円


ただ、新機種で使えるようになるHD Recはブルーレイ陣営のAVCRECより使えそうな気がする。HDDVDもBDもメディアが高い間はDVDメディアへの録画が使いやすい方がいいと思う。ただ、メディアの値段は今後急激に下がってくるんじゃないかな?もう最安値で600円ぐらいみたいだし

迷うなぁ....

2007年11月6日火曜日

Http Requestを自前で処理する 続き

昨日の続きで、TcpClientを使って書き直してみた
というのもTcpClientとStreamReader,Writerを使えば文字列処理が楽に出来ると思ったから。
結局あまりスッキリしなかった

コードを書き換えて試験した結果、StreamReaderはChunkedデータを処理すできなかった。
Chunkedデータはbyte単位で処理しなきゃいけないのに、StreamReaderを使うと文字数単位の処理になってしまう

でもまあ目的は果たせたので、これで進めようと思う

これで一応Feedの処理は出来てきた、後はオフラインブラウズの処理とユーザーインターフェイスをどうするか....



public String HttpGet(String url,String param)
{
url = url.Substring(url.IndexOf("://")+3);
String server = url.Substring(0,url.IndexOf("/"));
url = url.Substring(server.Length);
IPHostEntry ipInfo = Dns.GetHostEntry(server);

IPEndPoint hostendp = new IPEndPoint(ipInfo.AddressList[0], 80);

String reqMsg = "GET " + url + " HTTP/1.1\r\n"
+ "HOST: " + server + "\r\n"
+ "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\r\n"
+ "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
+ "Accept-Language: ja,en-us;q=0.7,en;q=0.3\r\n"
+ "Accept-Charset: utf-8;q=0.7,*;q=0.7\r\n";
if (param != null)
reqMsg += param + "\r\n";
reqMsg += "Connection: Close\r\n\r\n";


TcpClient client = new TcpClient();

client.Connect(hostendp);

NetworkStream ns = client.GetStream();

StreamWriter clientWriter = new StreamWriter(ns, Encoding.ASCII);
clientWriter.Write(reqMsg);
clientWriter.Flush();

// ヘッダの解釈
String[] resHdr = ReadLine(ns).Split(' ');
if (!resHdr[0].StartsWith("HTTP/")
|| !resHdr[1].StartsWith("200"))
{
throw new ArgumentException("Http Response Error");
}

// ヘッダの終わりまで読み飛ばす
bool Chunked = false;
while (true)
{
String hdr = ReadLine(ns);
if (hdr.StartsWith("Transfer-Encoding:"))
{
if (hdr.Substring("Transfer-Encoding:".Length).Trim().ToLower() == "chunked")
Chunked = true;
}
else if (hdr == "")
break;
}

// 本文を取得する(Chunkedの場合)
string resMsg="";
if(Chunked)
{
while (true)
{
String lens = ReadLine(ns).TrimEnd(';');
int len = 0;
if (lens != "")
len = Int32.Parse(lens, System.Globalization.NumberStyles.AllowHexSpecifier);
if (len == 0)
break;

byte[] buffer = new byte[len];
int offset = 0;
while (offset<len)
{
int rslt=ns.Read(buffer, offset, len-offset);
if (rslt == -1)
break;
offset += rslt;
}


resMsg += Encoding.UTF8.GetString(buffer, 0, len);
// 改行を捨てる
ReadLine(ns);
}
}
else
{
StreamReader clientReader = new StreamReader(ns, Encoding.UTF8);
resMsg = clientReader.ReadToEnd();
}

//閉じる
client.Close();

return resMsg;

}

2007年11月5日月曜日

Http Requestを自前で処理する

.NETアプリでGoogleReader からfeed情報を取り込む場合、Googleのサーバーにリクエストするurl中にfeedアドレスが含まれます。
例えば以下の様なアドレスでGET要求を送信します
http://www.google.com/reader/atom/feed/http://blog.atelierlune.com/atom.xml?xt=user/-/state/com.google/read

これが、.NETのHttpWebRequestを使って処理すると、内部処理でリクエストアドレスに含まれる"//"が"/"となってしまいます。コレは相対アドレスを絶対アドレスに変換しようとしてるのかも知れませんが、Googleのサーバへの要求としては不適切となってしまいます

この問題がどうしても解決する方法がわからないので、Http Requestを自前で処理するようにしてみました。


なんだか無駄な事をしている様に思います
本来ならサーバーからxmlデータを取得するだけなら

XmlDocument.Load(url);

を使用するだけで済みます。
今回はGoogleへのユーザー認証済みのCookie付きでアクセスするために、HttpWebRequestを使ってきましたが、更にHttp Requestまで自前で書くことに....

とりあえず目的のFeed情報は取得できるようになったけど、
自前で記述したHttpRequestはSSL通信は無理だろうなぁ...


とりあえず試験的に書いたソース。どっかの解説ページそのまんま+Chunked Encodingの解除
TcpClientクラスを使うともう少しスッキリ書けるのかな?
public String HttpGet(String url,String param)
{
url = url.Substring(url.IndexOf("://")+3);
String server = url.Substring(0,url.IndexOf("/"));
url = url.Substring(server.Length);
IPAddress hostaddr = Dns.GetHostByName(server).AddressList[0];
IPEndPoint hostendp = new IPEndPoint(hostaddr,80);

String reqMsg = "GET " + url + " HTTP/1.1\r\n"
+ "HOST: " + server + "\r\n"
+ "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9\r\n"
+ "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
+ "Accept-Language: ja,en-us;q=0.7,en;q=0.3\r\n"
+ "Accept-Charset: utf-8;q=0.7,*;q=0.7\r\n";
if (param != null)
reqMsg += param + "\r\n";
reqMsg += "Connection: Close\r\n\r\n";

byte []reqBytes = Encoding.UTF8.GetBytes(reqMsg);

System.Net.Sockets.Socket sock = new System.Net.Sockets.Socket(
System.Net.Sockets.AddressFamily.InterNetwork,
System.Net.Sockets.SocketType.Stream,
System.Net.Sockets.ProtocolType.Tcp);
sock.Connect(hostendp);
sock.Send(reqBytes,reqBytes.Length,System.Net.Sockets.SocketFlags.None);

byte [] resByte=new byte[1024];
System.IO.MemoryStream mem = new MemoryStream();

// 受信
while (true)
{
int rsize = sock.Receive(resByte, resByte.Length, System.Net.Sockets.SocketFlags.None);
if (rsize == 0)
break;
mem.Write(resByte, 0, rsize);
}
mem.Seek(0, SeekOrigin.Begin);

// ヘッダの解釈
String [] resHdr = ReadLine(mem).Split(' ');
if (!resHdr[0].StartsWith("HTTP/")
|| !resHdr[1].StartsWith("200"))
{
throw new ArgumentException("Http Response Error");
}

// ヘッダの終わりまで読み飛ばす
bool Chunked=false;
while(true)
{
String hdr = ReadLine(mem);
if(hdr.StartsWith("Transfer-Encoding:"))
{
if(hdr.Substring("Transfer-Encoding:".Length).Trim().ToLower() =="chunked")
Chunked=true;
}
else if(hdr=="")
break;
}

// 本文を取得する(Chunkedの場合)
string resMsg="";
if(Chunked)
{
while (true)
{
String lens = ReadLine(mem).TrimEnd(';');
int len = 0;
if (lens != "")
len = Int32.Parse(lens, System.Globalization.NumberStyles.AllowHexSpecifier);
if (len == 0)
break;
resMsg += Encoding.UTF8.GetString(mem.GetBuffer(), (int)mem.Position, len);
mem.Seek(len, SeekOrigin.Current);
// 改行を捨てる
ReadLine(mem);
}
}
else
{
resMsg = Encoding.UTF8.GetString(mem.GetBuffer(), (int)mem.Position, (int)mem.Length);
}
mem.Close();

//閉じる
sock.Shutdown(System.Net.Sockets.SocketShutdown.Both);
sock.Close();

return resMsg;

}


2007年11月4日日曜日

Url中の//

uGNoteではGoogleの提供する.NET用ライブラリを使っています。
NoteBookにアクセスするための処理はそれほど難しくは無いので、Googleのライブラリを使わないで自前で処理をすることにしました。

この作業自体は昨日完了したのですが、欲張ってGoogle Readerのfeedも持ってこれるように機能追加をしてハマリ中です。
今のところは100歩後退って感じです

公開設定されたアイテムはNoteBookと殆ど同じ扱いなので簡単でした
登録フィードのリストを取得する事も出来ました

問題は登録フィードから内容を読み込む事が何故か上手くいきません

例えば、登録フィード"blog.atelierlune.com"の既読アイテムを取得するには

http://www.google.com/reader/atom/feed/http://blog.atelierlune.com/atom.xml?xt=user/-/state/com.google/read

こんなurlに"GET"をリクエストします

webブラウザ上ではこれでバッチリxmlが取得できます
これをc#でプログラムにすると
指定したurlが何故か

http://www.google.com/reader/atom/feed/http:/blog.atelierlune.com/atom.xml?xt=user/-/state/com.google/read

に変わってしまいます

Uri uri = new Uri("http://www.google.com/reader/atom/feed/http:/blog.atelierlune.com/atom.xml?xt=user/-/state/com.google/read");

この違い分かりますか?パッと見では同じですが
.../feed/http://blog.atelie....
.../feed/http:/blog.atelie....

// が / に勝手に書き換えられてます

気持ちが分からなくも無いけど、おかげでまともなリストが得られません

これが解決できないと登録先がごっちゃ混ぜの既読リストしか得られない、どーしたら良いのかわかりません

2007年10月30日火曜日

uGNote1.22

GoogleNoteの公開ページを閲覧するアプリuGNoteを更新しました
といっても先月行ったオフラインブラウズ機能をちょっといじっただけです
機能的には殆ど変わっていません。9/30日バージョンからの変更内容は

  • 画像ファイルの受信に失敗することがあったので受信処理を変更
  • オフライン用のログファイルの保存先を設定できるように修正
  • 不要なログファイルをメモ単位で削除するように修正
です

オフラインファイルの保存先を設定する処理にだいぶ手間取りました。あとはプログラミングをサボり気味でした。細かい作りこみの様な作業はテンションが下がってしまって、はかどらなかったりします。

cabファイル

このアプリの基本コンセプトはログファイルを残さない事でしたが、オフライン機能を導入したことでログを残す設計になりました。
ログを残さないってコンセプトはセキュリティ考慮的な意味合いがあったりした訳ですが、そもそも公開ノートを閲覧する時点でセキュリティ云々は意味が無い事に後で気がつきました。

そんな訳でオフラインの要望を貰ってあっさりと方針を転換しましたが、プログラミングはあっさりとは行きませんでした....

オフラインブラウズをする場合はuseridの設定画面で、offline browseにチェックを入れる必要があります



オフラインファイルの保存先はオプションメニューから設定画面を開いて設定します



オプションメニューはユーザーリスト表示中のみ選択できます。また、メモのダウンロード中は選択できません

2007年10月29日月曜日

モーターショー

土曜日にモーターショーに行ってきました。土曜日は天気が良くなかったし、僕はモーターショーにあまり興味が無かったので気は乗らなかったのだけど、小3のお兄ちゃんが行きたいと言うので行ってきました。
お兄ちゃんは前の日から興奮ぎみでした。

彼は、なぜかプジョー好きで、普段から「プジョー、プジョー」とうんざりする位にプジョーの話を聞かされていたので、プジョーブースでの彼の満足げな顔を見て、来て良かったな~って思いました

話題のGTRは人が多すぎて近づくことも出来ず。

トヨタとかホンダ、日産のコンセプトカーって相変わらず、かっこ悪いなーとか思いました。未来っぽいデザインの車って何であんなにかっこ悪くしちゃうんだろーね。って思うのは僕だけなのか?
日産のロボットが付いてる奴なんて、意味が分からん!と思っていたけど、実物を見ると、かわいいから良いか~って気になってしまった。R2D2みたいな物か?でも必要ないと思う

BMWでもらった冊子に付いていたVirtual Ownerってポスターが面白かった
ポスターをこんな感じで地面に置いて、


携帯で写真を撮って、bmwのサーバにメールを送ると、一分ぐらいで




BMWを合成した写真が送られてくる。ポスターの置く向きや角度に合わせて、車の向きも変わる。自宅の車庫の前で撮影してオーナー気分を体験してください、って事らしいけど

自宅も、車庫もネーヨ!

しょうがないので駅の改札前で撮ったり、部屋の中で撮ったりして遊びました...

2007年10月27日土曜日

開拓おかき

北海道の土産物屋さんで、売り切れだった北菓楼の開拓おかき。千歳空港のお店でも売り切れで、買えないと思うと欲しくなるもので。飛行機の搭乗ゲート前でようやく見つけてホタテ味だけ購入した。

ホタテ味チョーうまかった!他のも食べてみたいと、思っていたら
二子玉川の高島屋で北海道展をやっていたので、4種類買ってしまった

Posted by Picasa

2007年10月25日木曜日

web上のファイルを受信する処理

フォルダ選択ダイアログは、不満はあるけど一応実装できた。ノート
不満点は
  1. やはり、ルートの名前とアイコンが取得できていないので適当に処理してしまった
  2. 指定したフォルダを選択した状態でダイアログを開く処理が不完全
だが、使用上あまり重要でもないと思うので、あんまり深く追っかけないで次の課題に進む事にした

次の課題は画像ファイルをwebからダウンロードしてファイルに保存する処理。
今までは受信処理を非同期処理として複数個のファイルを同時にダウンロードするようにしていた。しかし受信に失敗しているファイルが幾つかあるようだったので、受信処理を見直すことにしてみた。

非同期処理は、HttpWebRequest.BeginGetResponse();を使って、非同期リクエストを発行してレスポンスをコールバック関数で処理する
非同期なので、レスポンスが帰る前に次の処理が実行できる。あらかじめ受信する必要のあるuriへのリクエストを発行しておけるので、リクエスト->レスポンス->リクエスト->レスポンス....と順番に処理をするよりも効率が良いはず。

ただし、リソースが限られるので大量のリクエストを発行することは出来ないので、同時に発行するリクエストを制限する必要があると思う。リクエスト数の制限はOSかフレームワークがやってくれるから気にしないで好きなだけBeginGetResponseを呼び出しても良い”と勝手に思っていたが受信失敗しているので、そうでもなさそう

また、レスポンス待ちで長時間処理が終了しないリクエストをkillする仕組みを用意しなければいけないので処理が煩雑になってしまった

そこで、ThreadPool.QueueUserWorkItem();を使って同期処理の受信関数を複数スレッド同時実行するようにしてみた。、ThreadPoolはシステムが同時に実行するスレッドを適当に管理してくれるもの(だと思う)

実験してみた結果は、ほとんどの受信リクエストが失敗するというひどい状態になってしまった。

結局今のところ、ファイルを一個づつ順番に同期処理でダウンロードするのが一番確実みたい。これだと、レスポンスの遅いuriがあると無駄に時間を費やしてしまうので効率が悪く気にいらない。他に解決策が見つからなければしかたが無いかもしれない

2007年10月23日火曜日

蓼科

土日にまた白樺湖近辺に行ってきました、そろそろ紅葉の時期かと思って出かけてみました。
紅葉はこれからって感じでしたが、場所によっては良い感じで楽しめました
遊んでばっかりですね

霧が峰、八島が原湿原、車山、横谷渓谷と見て回りました

金曜日は雨でしたが土日は快晴。土曜日は前日の雨のおかげか空気がスッキリときれいで富士山が良く見えました。

八島が原湿原:天然記念物だそうです。


お昼は定番の蕎麦やに行きました。最近蕎麦アレルギー反応が強くなってきた感じがしていたので、蕎麦は食べないようにしました。かき揚げ丼を頼みましたが、不覚にも完食できませんでした....

車山:正面に富士山がうっすらと見えました

横谷渓谷の王滝:滝まで結構な山道でした。途中からは登山道って感じでした。筋肉痛になりそうです。

2007年10月18日木曜日

プログラムしてない

先週旅行から帰ってきて、一週間、録画してあった24を見ただけで終わってしまいました。
ほとんどプログラムさわってないので、旅行前に何をしていたか忘れてしまった....

2007年10月13日土曜日

フォルダ選択ダイアログ

yeneさんにコメントでSHGetFileInfoを教えてもらったので、フォルダアイコンを表示できるようにしてみた。ただ、WinodowsMobileには開いた状態のフォルダアイコンは存在しないのか?取得できなかった。エミュレータで実行した場合と、アドエスで実行した場合ではアイコンの形状が違って、アドエスでは横向きのフォルダアイコンが出てきた。僕の個人的な趣味ではエミュレータで表示された従来のアイコンのほうが好き。横向きは、なんか中身がこぼれそうで心配だ
さらに、アドエスではSHGFI_SELECTICONを指定すると一寸だけ開いたアイコンが取得できた。ホンとにちょっとだけなので暫く気がつかなかった
ルートの名前とアイコンは取得でき無そうなので自分で用意しなければいけないのかも...

エミュレータで実行した場合(QVGA)


アドエスで実行

北海道旅行

行って来ました、北海道。北海道に行ったのは今回が初めてでしたが、とてもよかったです
今回の旅行は嫁さんの北海道出張に便乗してついて行きました。嫁さんは昼間仕事なので、嫁抜きで子供二人をつれて色々まわってきました

ホテルは嫁の仕事があるので札幌市内から移動する訳にはいかず、札幌付近のみの観光。札幌市内の観光、定番の旭山動物園、小樽って感じでまわってきました

テレビ塔:トウキビ食べた




旭山動物園:カピバラさん

3連休中という事もあって、動物園は混んでました。
動物園までは観光バスツアーで行きました。レンタカーや電車で行くことも考えましたが、結局バスツアーが一番安くいける計算でした。楽だし。バスガイドさんも言ってましたが、旭山動物園に行くならバスツアーがオススメです
でも、札幌からの移動時間が長いので朝8時30分に出発して、17:30分に札幌駅到着のツアーでも動物園は3時間半程度しか見学時間が取れませんでした。
すいていれば3時間半でも大丈夫だと思いますが、混んでいて並んだりするとちょっと厳しい

ペンギンの水槽の下からペンギンを見上げるの図:

アザラシの丸い水槽とかシロクマが飛び込んでくる水槽は、タイミングが合わなかったのでガイドブックにあるようなシーンは見れませんでした。残念だけど、動物のやることだから仕方が無いですね


大倉山スキージャンプ台

高かった


小樽:
子供達の反応はあまりよくなかった。”運河?ふ~ん”って感じ
”それより、早く寿司食べようよ”って

結局お寿司を頂きました。おいしかったけどお金がかかりました。子供にはもったいないです。


モエレ沼公園:でっかい公園でした。帰る日に行きました。この日は嫁さんも一緒で子供達もそれなりに楽しんだようです。


旅行前から体調を崩して腹具合が悪かったのですが、旅行中には回復できませんでした。それどころか、下の子と嫁さんまで下痢になってしまった。下痢は治らなかったけど、せっかく北海道まで来たのだからと、ジンギスカン、ラーメン、水産物、寿司、スープカレーと一通り食べました。もーね、おなかの具合なんて、どーにでもなれって腹をくくって....

食べ物はどれもおいしかったです。食べてるときは、幸せでした。
ジンギスカンは生ラムは臭みも無くおいしかった。子供達も気に入ったので、2回も食べに行っちゃいました

2007年10月4日木曜日

明日から旅行

北海道旅行ですが、2日前から体調を崩して、フラフラしてます。下痢がひどくて2日間殆ど食べてないです。旅行計画は全然立ててないけど、食べ物のことしか考えてなかったので、心配です。(全部食べられるか心配)
今日は頭痛


保存先のフォルダを指定するダイアログを作っているところですが、いろいろ解らないことがあります。まずルートの名前。他のアプリだとマイデバイスみたいな名前がついてますが、あれはどこから持ってくるのか?それからフォルダのアイコンはどこから取ってくるのか?自分で用意するものなのか?

2007年10月1日月曜日

KeyLock

KOTETUさんのところでKeyLockが公開されていました

アドエスのキーロックスイッチが硬くて操作しづらいのが不満だったので、使えるかも?と思って画面回転スイッチに割り当ててみました
KeyLock.exe自体はアドエスでも動作しましたが、アドエスのスライドスイッチでのキーロックとKeyLock.exeでのキーロックは全然違うものでした。

KeyLock.exeから移行するキーロック状態はWindowsMobileのシステムで用意されたもので、キーロックからの回復の仕方、キーロック時の画面表示、キーロック時のキー反応がアドエスの標準キーロックと異なります。

アドエスのキーロックとの違い
  1. キーロックからの回復は画面タップ2箇所か、キータッチ2箇所の組み合わせを実行する
  2. キーロック中はタッチパネルには反応しないが、どのキーにでも反応する
電源キー以外のキーにも反応するので、キーロックしてズボンのポケットなんかに入れて持ち運ぶと、wakeupしてしまう可能性が高いです。キーロックの機能としてはアドエスのほうが優秀です

メリットは
  1. キーロックしやすい

デメリットは
  1. 意図しないwakeupをしやすい
  2. キーロック解除手順が煩雑
って感じでしょうか。
とりあえず両方使ってみることにしたけど、欲を言うとキーロックでサスペンドして欲しい
KOTEUさんは要望を受け付けてないらしいので、サスペンドするキーロックを作ってみた
と言うほどのものではなくて、
VK_KEYLOCKとVK_OFFを送りつけてるだけです

ソース
#include
#include

//#define VK_KEYLOCK (VK_F22)

int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{

keybd_event(VK_KEYLOCK, 0xff, KEYEVENTF_SILENT,0);
keybd_event(VK_KEYLOCK, 0xff, KEYEVENTF_KEYUP|KEYEVENTF_SILENT,0);

keybd_event(VK_OFF, 0xff, KEYEVENTF_SILENT,0);
keybd_event(VK_OFF, 0xff, KEYEVENTF_KEYUP | KEYEVENTF_SILENT,0);

return 0;
}

こんなので良いのか?という気もしますが exeファイル
問題が出たら使うのを止めます

uNClock もWindowMobileのキーロックステータスを見るようにしてみました。exeファイル
まだテストリリースなのでバージョンは無いです
WindowMobileのキーロック状態でwakeupすると、指定時間以内にキーロック解除しないとサスペンドしてしまいます。1秒では絶対無理で、5秒でも間に合わないことが良くあります
あまり実用的では無いかも

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 握り心地よし