2011年5月5日木曜日

NoDoが来た

さて Trophy の Update 通知が来たので、そのままZuneからUpdateしました。去年末にもらったLG製の開発端末は何度チェックしてもupdateが来なくてがっかりしていましたが(開発機にはupdateは無いとの噂)、さすがに製品はあっさりupdate通知がきました。



アップデート中に自動的に再起動して端末のアップデートが始まりました。途中経過のキャプチャを忘れてました。(興奮しすぎ)
この画面が結構長く、プログレスバーも殆ど動かないのでハングったか?と不安になりますが、我慢して待つと無事アップデート完了しました




アップデート完了!と思ったら、





まだ update があるって言われました。さっきのは2月のアップデートだったのね





update内容は

  • Copy and paste
  • Faster start and resume times for apps
  • improved category search in Marketplace
  • Perfomance tune ups



Downloadong updates


Preparing to install




rebooting your phone
ここで端末リブート




installing update
端末へのインストール中。結構待ちます。30分以上




インストール完了して端末を再起動



アップデート完了です



zuneのupdateページにrestoreポイントができていました



購入後直ぐにアップデートしたので、update前後でのパフォーマンスの違いは判りませんが、開発機とは軽快さが違うと感じました

HTC Trophyが来た

Wp7タワーを何度か目撃するうちに抑えきれなくなってしまい、購入ボタンをクリックしてしまいました。
買ったのはHTC Trophy 、 1shopmobileで $315 + 送料 $25 = $340 でした。
1shopmobileでは支払いはGoogle Checkoutで行うのでカード番号の入力などがなくて安心でした。購入後の発送完了通知などはGoogle Checkout から来ます。

4月29日に購入手続き後、その日のうちに発送確認メールが届いています。FedexのTrackingによると発送元は香港でした。自宅に到着は5月2日でしたが、あいにく留守にしていたので5月3日の夕方に届けてもらえました
税金払うのか?と思いましたが、特に何もありませんでした



箱はちょっと潰れ気味で新品感は無し、パッケージのシールも開封済みでした。きっと何かいろいろ有るんでしょう。




付属品。充電器とコンセントの変換プラグは使うこと無いでしょう。USBケーブル、ヘッドフォンもそのまま封印です




裏ぶたをペキペキはがしてバッテリの絶縁シートを剥がして電源を入れるとHTCロゴの後にボーダフォンロゴが出て起動しました。




ロック画面。メールが届いている






PCに接続してZuneが起動するとupdateが通知されました。NoDoか?そうなのか?

2011年3月24日木曜日

日本橋

先週大阪日本橋に行ってきました。もう20年ぶりぐらいでどこに何があるか全く分からなくて、家族もいるしで共立電子だけ見てきました。あと、ポポンデッタにも子供の付き合いでいきました。ポポンデッタは鉄道模型のあれです

日本橋は、昔と全然違うというか秋葉もそうだけど、アニメとかのほうがメインな感じですね。秋葉よりもオタク度が高くなっている気がします。
ただ、その日は雨だったからかもしれないけど、秋葉みたいにメイド姿の人はいませんでした。


2011年3月4日金曜日

分離ストレージについてこう察

というか想像っです

WP7開発端末で分離ストレージのデータが壊れる問題について引き続き悩んでます

作っているアプリはやっぱりというかGoogleReadeerのクライアントでuGreaderのWP7版です。
分散ストレージはフォルダ情報や未読情報の他、ロード済みの記事を格納しています。

WP7ではアプリケーションの実行中に他のアプリに切り替わるとき等にApplication_Deactivatedイベントが発生して一旦稼働中のアプリは終了します。このイベント内で処理中のデータを復旧に備えて分離ストレージ上に書き出しておきます。

もとのアプリに戻ってくるときにApplication_Activatedイベントが発生するので、ここでさっき書き出したデータをロードして前の状態に戻します。


ファイルの読み書きはアプリ起動時と上記のイベント内のみで行っていますが、テスト用にボタンを押したときに書き込み、読み出し処理を行うようにしてみました。
何度か試してみましたがボタンを押したときはファイル読み書きは正常に終了します

また、いったんファイルが壊れると、その後のファイル読み書きはすべて失敗します。ストレージを一旦Removeしない限り正常動作しなくなります


つまり

  1. Application_Deactivatedイベントのストレージ書き出し中にファイルを破壊している
  2. 破壊はファイルだけでなく分離ストレージそのものを破壊してしまう。(分離ストレージの管理テーブルが壊れている?)。その後のファイル書き込みが全て失敗してしまう
想像では、

タスクの切り替え処理の時間内にファイルの書き込みが終了しないで、ファイルアクセス中にタスクが強制終了されて、ストレージの管理テーブルの不整合が起きている

と思ってます

そもそも、Application_Deactivatedイベント内での処理時間が制限されていたような?
WP7の仕様上、記事データのような大きいファイルは書き出せないのか、開発機だから書き出せないのか?わかりませんが、なるべく書き出すファイルは小さくしておくのが無難なのかもしれないです


2011年2月28日月曜日

WP7プログラム 分離ストレージ

WP7用のアプリのプログラムをしている方と話す機会があったので、分離ストレージに問題が起きていないか聞いてみたところ、特に問題は無いとの事でした。「開発用端末の問題があるかも」みたいな話をしていました。そこは全く考えていなかったので、WP7海外端末が急に欲しくなってしまいました。日本発売まで我慢しようと思っていたのですが...

僕のところで起きている問題というのは
下記のようなコードを実行するプログラムをしばらく使うと、データ読み出しでxmlの解析に失敗する例外が発生してしまいます。



分離ストレージに保存する
try
{
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        using (var stream = new IsolatedStorageFileStream("folder.xml", FileMode.OpenOrCreate, store))
        {
           
            var sirializer = new DataContractSerializer(typeof(FolderList));
            sirializer.WriteObject(stream, this);
        }
        store.Dispose();
    }

}
catch (Exception e)
{
    System.Diagnostics.Debug.WriteLine(e.Message);
    MessageBox.Show(e.Message);
}

分離ストレージから読み出す
try
{
    using (var store = IsolatedStorageFile.GetUserStoreForApplication())
    {
        if (store.FileExists("folder.xml"))
        {
            System.Diagnostics.Debug.WriteLine(store.AvailableFreeSpace);
            using (var stream = new IsolatedStorageFileStream("folder.xml", FileMode.OpenOrCreate, store))
            {
                var sirializer = new DataContractSerializer(typeof(FolderList));
                return (FolderList)sirializer.ReadObject(stream);
            }
        }
    }
}
catch (Exception e)
{
    System.Diagnostics.Debug.WriteLine(e.Message);
    MessageBox.Show(e.Message);
}

分離ストレージはアプリ外からは読み出せなく実際に何がエラーの原因かわからないので、アプリ上でシリアライズオブジェクトとしてでは無く、xmlファイルとして読んでみるとファイルの内容が他のファイルと混ざった状態で読み出されている事が判りました。



分離ストレージの扱いに慣れてないというか、疑問がいろいろと出てきます
ファイルサイズの制限とか
頻繁にアクセスをしてもパフォーマンスに影響がないか?
とか

分離ストレージもハードウェア的にはフラッシュベースのストレージだと思うので、アクセス回数を減らすようにプログラムを作るべきなのか?
例えば、プログラムの起動時と終了時だけアクセスするようにプログラムするべきか、データの変更が有るたびにファイルに書き出してメモリの使用量を抑えるように作るべきなのか?

最近知ったのですが、ssd等のフラッシュメディアではライト回数だけでなく、リード回数もパフォーマンスに影響を与えるそうです。同じ領域を繰り返しリードするだけで、その部分のデータ保護機構が働いてデータの再配置が起こります

だとすると、必要な時だけファイルからデータを読んで、いらなくなったら直ぐに捨てるような使い方より、一度読み込んだデータは捨てずにRAM上に残しておいた方が良いのかな?と

2011年2月18日金曜日

uGReader 1.65

ver1.64のコメントをもらったので、受信エラーの対策をしました



サイト別の長いURLの記事読み込みに失敗する問題の修正をした
ボタンの配置を変更した


2011年2月13日日曜日