0 と 1 の世界の見習い探検家

タグ:パソコン

イメージ 1


左から HTL21 (HTC / SIM ロック / au) 、Zenfone 4 (ASUS / SIM フリー / mineo) 、 AQUOS sense lite (SHARP / SIM フリー / 未契約) 。

先日一番左の HTL21 が故障しました。
スリープ関連などの操作で電源ボタンに触れると、再起動のループに陥ってしまう現象。。

データをなんとかバックアップして端末のソフトウェアを初期化してみたのですが、状況は悪化しませんでした。

どうしたものかと相談を持ちかけたショップでバッテリーの膨張が発覚。。
かなり古い端末でしたので、バッテリーの交換対応というのも難しく、、

もともとすでに TSL 関連のサポートが切れており、複数のアプリや様々な Web サイトが利用できないという状況でした。
というわけで、端末の買い替えを決意。

もう au で端末を購入して、通信料の中に端末関連の管理維持費用が含まれるのも嫌だったので、 SIM フリー端末を購入しました。
SIM カードのサイズが異なるので、ショップで交換してもらえればすぐ利用できるようになる、そう考えていたんです。。
しかし実際は、キャリア以外で購入した端末は動くかどうかの保証ができない、事前に SIM カードをお借りしてショップなどで試すことも出来ない、とのことでした。ついでにキャリア外から持ち込んだ端末はデータ通信に別途オプションが必要になるとのことで、、

今回購入した端末は VoLTE 対応ということだったので、完全に利用できるものと思い込んで油断しておりました。

というわけで現在の回線の契約の解除を決意。
MVNO への乗り換えを決定致しました。

タイミングがタイミングなので、今月内に現在の回線 (au) を解約できるかが勝負です。
月額制で日割りできない契約なので。
乗り換え先は以前より試用していたmineo 。
au で急いで MNP 用の予約番号を発行し、 mineo に登録しました。
年末なので、回線切替完了までの遅れが見込まれますが、どちらにせよ au で使える端末はもう手元にないので、選択の余地はありません。

au さん、今までありがとうございました。

平成30年08月04日 (土)
当サイトをご訪問の皆様
0と1の世界の見習い探検家
あおと

WebサイトURL変更のお知らせ

いつもブログ、Webサイトのご訪問ありがとうございます。
今月中旬より、Webサイト「0と1の世界の見習い探検家」(http://www.a32kita.tk)のURLを変更することとなりましたので、お知らせ致します。





一定の間は a32kita.tk からのリダイレクトを設置致します。
誠に勝手ながら、来年度初頭で a32kita.tk ドメインを廃止いたします。リンクなどを設置の方は、お手数ですがお早めの修正を宜しくお願い致します。

イメージ 1
図1 購入した代物

昨日の記事で書いた秋葉原で購入したジャンク品が無事動作しましたので紹介します。
FeliCaポートです。

ジャンク品ということで見た目からも結構使い古された匂いが漂っております。
お店の方にも「ジャンク品ということで返品はできませんがよろしいですか?」と言われたものの、物は試しにと650円で購入。

最初USBで接続してもうんともすんとも言わなかったので、もしかするとハズレを引いてしまったのではとヒヤヒヤしましたが、デバイスマネージャを覗いてみると「不明なデバイス」として認識されていることがわかりました。
そこで、Sonyの公式WebサイトからFeliCaポートのドライバをダウンロードしてインストールしたところ、正しくFeliCaポートデバイスとして認識されました。

イメージ 2
図2 正しく認識されたあとの様子

Sony公式で交通系ICから履歴情報や残高情報を引っ張ってくるソフトを配布してくれているのですが、せっかくなのでC#でなにかいじれないかと思いネットを漁ったところ、面白そうなものが出てきました。

GitHub - wnoguchi/FelicaSample: Felica Sample
https://github.com/wnoguchi/FelicaSample

ありがたや~~~m(_ _)m

このサンプルコードにnanacoを読ませてみたところ、、

イメージ 3
図3 nanacoの履歴情報

ちゃんと取得できました。
遊べそうですねこれは。

大学の学生証がFeliCaだったのですが、どうせなら学生のうちにこれで遊んでみたかった(

なにかおもしろいことができないか模索中です。
では。

TextWriter系クラスで最後まで内容が反映されないというトラブルの対処法についてご紹介いたします。

TextWriter

TextWriterとは、Stream系クラス (FileStream / MemoryStream) などに対して、データの書き込みを行うために提供されるクラスです。
TextWriterの拡張クラスとして次のようなクラスが System.IO 名前空間で提供されております。

表1 代表的なTextWriter系クラスと概要

クラス名

概要

StreamWriter

文字を特定のエンコーディングでストリームに書き込むための TextWriter を実装しています。

BinaryWriter

プリミティブ型をバイナリでストリームに書き込みます。特定のエンコーディングの文字列の書き込みをサポートします。

出典: MSDN

これらのクラス全般で発生しうるトラブルのお話です。

バッファリング機能


イメージ 1
図1 TextWriterのバッファリング機能

標準的なTextWriter系クラスは、Streamへの書き込みのトランザクションで発生するオーバーヘッドの軽減のため、内部でのバッファリング機能が実装されております。
ある程度のデータがTextWriterのインスタンス内でバッファリングされたのち、Streamへ実際の書き込みが行われます。
TextWriter系クラスからStreamへ内部バッファの書き込みが行われる前にプログラムが終了してしまうなどすると、バッファされたデータは消失します。

CloseメソッドとFlushメソッド

TextWriter系クラスには、Stream系クラス同様「Close」メソッドが実装されております。このメソッドは、ターゲットになっているStreamをクローズするものでありますが、実はそれだけではありません。
TextWriterでCloseを実施する際、内部ではStreamをCloseする前に先程紹介したバッファをStreamへ書き込む処理もおこなっております。
プログラムやスレッドが終了する前にCloseまで実施されていれば、正しくバッファの反映処理まで実行されます。
またこのClose処理は、TextWriter.Dispose()でも実行されるため、usingセクションでTextWriterを使用するなどの方法でバッファを反映されることも可能です。

バッファの反映処理は、Closeメソッド内以外でも単独で提供さております。
それがFlushメソッドです。

つまり、CloseメソッドではFlushメソッドとStreamのCloseメソッドが実行されているということになります。

AutoFlushプロパティ

TextWriterには、AutoFlushプロパティが用意されております。
このプロパティはbool型の値を取り、デフォルトではfalseです。このプロパティにtrueを設定すると、Write系メソッドが実行される度にFlush処理が実行されるようになります。
もちろん、書き込み処理でのオーバーヘッドが大きいタイプでのStreamでは、パフォーマンスに大きな影響が出てしまいますが、、

まとめ

原則としてTextWriterは必ずスレッドまたはプログラム終了前にCloseしましょう。
Closeを行う前にStreamに対してすべての書き込みを反映させる必要がある場合は、FlushメソッドやAutoFlushプロパティを活用しましょう。

Twitterへの記事転送用の試験投稿です。

このページのトップヘ