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日日曜日

2011年1月22日土曜日

ideosその後

先週新品交換してくれたIDEOS、また故障しないか心配でしたが、一週間使った感じでは大丈夫そうです。電池はemobaileのsimを挿した状態で1時間に5~7%バッテリが減少してます。
朝晩の通勤中に30分づつ程度テザリングを使用してぎりぎり一日(15時間くらい)もつかな?って感じです。

今日はsoftbankのsimで3g通信をoffにして持ち歩いてみましたが、16時間でバッテリ残量が80%でした。通信on/offでここまで違ってくると言うことは、3g通信をonにすると何も操作していなくても、知らぬ間に通信をしているってことなのかな?

追記
昨日と今日で満充電後、40時間ぐらい経過しましたが、バッテリ残量は65%でした。1時間1%程度の消費です。その間無線LANでメールチェックを数回、音楽再生を1時間ぐらい使いました。

新品交換前の故障品ではAirPlaneモードでも1時間10%の消費だったのは、ハードウェアの故障のせいだったようです。

とにかく3Gデータ通信をoffにするだけでかなりバッテリが持つようになりました。
テザリングOffの時には3Gもoffにするとよいと思います

2011年1月20日木曜日

uGReader ver1.63 公開しました

.Net compact frame work 3.5に変更した
twitter 投稿機能を追加した
問題点:フィード取得に失敗することがある

サイト別の表示に対応するためにCompact Framework3.5に変更しました。
サイト別ページの読み込み中にフィード取得に失敗することがあるようです。
その場合、リロードするか一旦フォルダリスト画面に戻ると読み込まれると思います

共有メニューから直ぐに共有しないようにしました。(押し間違えて共有公開しないように)
記事タイトルとリンクをtwitterに投稿できるようにしました。(タッチインターフェイスのみ)

twitterの認証はXAuthを使用しています。アプリ内でidとパスワードの保存はしませんが、認証キーは保管します。
認証取り消しは Twitterホームページの設定->コネクション ページからuGReaderの許可を取り消せます


2011年1月14日金曜日

IDEOSのサポート

1/7 電源が入らなくなる。サポートは連休中は受けられず
1/12日本通信の修理担当宛に故障した本体を発送
1/13 9:00AMに日本通信に到着
1/14 22:30現在一切の連絡なし

まる1週間使えませんでした、このまま土日に突入してサポートとの連絡もつかないので、更に日数がかかりそうな予感。




1週間以上携帯が使えないなんて!





修理品発送後に一切の連絡がないのは、どーいうことでしょう。こっちから電話しないといけないのかしら。全然繋がらないけど


やっぱり携帯電話は、ちゃんとしたサポート窓口のある会社を選ばないとだめですね。docomoとかだと即代替え機を貸してくれますもんね。


1/15 交換品が届きました!

送ったなら、"送ったって!"連絡してくれたらいいのに。余計な心配をしてしまった。

10日使い放題simは既に試用期間切れで使えなくなっていました
仕方ないのでsoftbankの データ定額プラン(パック)キャンペーン で購入した定額通信simを挿して使ってみることにします。

このsimは 
softbank のデータ従量プラン 基本料300円
emobile のデータ定額プラン 700~4679円

をセットで契約するプランで、従量プランのsimカードは全くいらない、意味がよくわからない契約です。今なら1年間期間限定でデータ定額プラン 700~4109円になります。
 近所の家電量販店でc01hwを一括で5000円とセットで買うと月月割り-1000円がついて、解約違約金もいらないし、商品券もくれると言うので、試しに契約してみました

2011年1月8日土曜日

IDEOS故障

どうも電池の減りが早すぎると思っていたら、不良品だったようです。
電源が入らなくなりました

稼働中のサービスやアプリを停止しても、Airplaneモードにしても、電源を切った状態でも1時間に10%ぐらいの勢いで電池がなくなっていました。

検索すると、同じような症状が結構出ているようです