投稿

FileInfo.Existsがファイルがあるのにfalseを返す?

FileInfoを使って、次のような処理をするとfalseが返ってくる事があります。(後述する理由で逆にファイルがないのにtrueが返ってくるケースもあると思う)
var file = new FileInfo("C:\MyDoc\Hoge.txt");
     // なにか別の時間の掛かる処理
if (file.Exists) // これがfalseになる。
{
     // ファイルを開いて処理を行う
}
else
{
     // エラー処理
}
ちゃんと動きそうですが、これでfalseが返ってくるケースがあります。ググってみると、同じようなケースと対策が見つかりました。FileInfo.Exists Returns False after file is copied
FileInfoはインスタンスが作成されたタイミングで取得したファイル情報を持っているようです。確かに思い当たる節はあって、時間の掛かる処理を行っている間にデータファイル(Hoge.txt)を用意してた。つまりファイルのない状態でFileInfoのインスタンスを作って、後からファイルを用意していた訳ですね。
対策はすごく簡単。Existsの前でRefreshを呼んで最新情報に更新すればOK.
var file = new FileInfo("C:MyDocHoge.txt");
    // なにか別の時間の掛かる処理
file.Refresh(); //最新情報に更新する
if (file.Exists) // こんどはOK
{
    // ファイルを開いて処理を行う
}
else
{
    // エラー処理
}

iPhoneからiPhoneへの引越

イメージ
iPhoneからiPhoneへの乗り換えのメモ。
以下、Freetel(現楽天モバイル)のSimで運用しているSIMフリー版iPhone XPhone XS Maxへ移行した際のメモ。なお、新旧iPhoneともにiOS12です。1. 事前準備 Suicaの移行準備、LINEのバックアップなど移行の準備作業。 ・【機種変更】Apple PayからApple Payへ(iPhone/Apple Watch→新しいiPhone/Apple Watch)
【最新版】 LINEのアカウントを引き継ぐ方法
2. iPhoneのバックアップiTunes,iCloudでiPhoneのバックアップを作成する。 ・KDDI iPhoneの機種変更で失敗しない!バックアップ・復元・初期設定マニュアル
SoftBank iTunes でデータを移行・保存する
3. iPhoneの復元新しいiPhoneの電源を入れたら、表示される画面に従って今まで使っていたiPhoneから移行するのが簡単。
engadgetの記事が分かり易い。
いま使っているiPhoneからiPhone X、8に乗り換える方必見! データ移行方法3通りを解説:iPhone Tips
4.SIMの入れ替えSIMを入れ替えてAPNの設定を行う。これやらないと電話として機能しない。SIMのキャリアのサポートページを参考に再設定する。
Freetel/端末別APN設定方法
5. アプリの再設定2段階認証を設定しているアプリの設定を解除、再設定する
Google Authenticatorなどを使ってや2段階認証を設定しているアカウントがあれば、再設定を行う
【機種変更時は忘れずに!】Googleアカウントの認証アプリを新しいスマホに移行する方法

銀行のアプリの再設定
銀行のサポートページで手続きを確認して再設定する。どこの銀行も移行先のiPhoneで再設定すればOKっぽい。
6.Bluetooth機器の再ペアリングイヤホン、スピーカー、スマートウォッチ、体重計などなど、いままで使っていたiPhoneからBluetooth機器の接続を解除(削除)して、新しいiPhoneへ再接続する。
スマートウォッチなどはアプリも再設定が必要なので、そのあたりはサポートページを確認して作業する。
7. iTunes Storeで購入した曲の再ダウン…

WPFアプリが他のPCで起動しない

イメージ
WPFアプリが開発PCでは正常に動作するのに、配布先のPCでは動作しない。起動直後に図のようなウィンドウが表示されてプログラムが停止する。「問題の詳細の表示」の中身は以下の内容。
問題の署名:
   問題イベント名:    CLR20r3
   問題の署名 01:    DXApp1.exe
   問題の署名 02:    1.0.0.0
   問題の署名 03:    5b552c79
   問題の署名 04:    mscorlib
   問題の署名 05:    4.7.3062.0
   問題の署名 06:    5ab95126
   問題の署名 07:    4291
   問題の署名 08:    0
   問題の署名 09:    System.Windows.Markup.XamlParse
   OS バージョン:    6.1.7601.2.1.0.256.48
   ロケール ID:    1041
   追加情報 1:    0a9e
   追加情報 2:    0a9e372d3b4ad19135b953a78882e789
   追加情報 3:    0a9e
   追加情報 4:    0a9e372d3b4ad19135b953a78882e789
オンラインのプライバシーに関する声明をお読みください:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0411
オンラインのプライバシーに関する声明が利用できない場合は、プライバシーに関する声明をオフラインでお読みください:
   C:\Windows\system32\ja-JP\erofflps.txtライブラリが足りていない?Xamlの解析(XamlParse)で落ちている?
GUI周りに市販のライブラリを使っているので、恐らく何かDLLが不足している印象なんだけど、これだけだとどうも絞り込めない。DispatcherUnhandledExceptionを取得するコードを追加してみた。赤字部分が追加した箇所。(参考:c#, wpf 4.0 EventType : clr20r3 P9 : system.windows.markup.xamlparse)App.xaml<Application x:Class="DXApp1.App&quo…

Github, Releaseのダウンロード数をカウントする

調べると標準では用意されていないのでAPIを叩いて取得するのが一般的らしい。cURLcurlを使ってこんな感じで処理するのがどうも定番。> curl https://api.github.com/repos/ユーザー/リポジトリ/releasesjson形式でドカッとデータが取れるので、findstrで(Windowsの場合ね)download_count を抽出すればダウンロード数が新しい順に取得できる。> curl https://api.github.com/repos/ユーザー/リポジトリ/releases-o download.txt > findstr "download_count" download.txt "download_count":53,"download_count":57,"download_count":14,"download_count":22,対応するtagの確認は tag_name で抽出。> findstr "tag_name" download.txt "tag_name":"20171020","tag_name":"20170622","tag_name":"20161118","tag_name":"20160712",
Pythoncurlだけだと使い勝手がいまいちなのでPythonでスクリプトを書いてみた。import requests r = requests.get('https://api.github.com/repos/hoge/Project01/releases')for item in r.json():print("tag_name: ",item["tag_name"])print("name: ", item["name"])print(item["assets…

EaseUSでディスクをクローンしようとしたら...

イメージ
EaseUSでクローンを開始して数分したらメッセージが表示される。「パーティションにエラーがあります。ディスクレイアウトをリセットして下さい。」これエラーじゃなくて(エラーに見えるけど)、ワーニングメッセージらしく「OK」をクリックすると処理が進んで無事に終了。これが出ると、セクタバイセクタで処理が切り替わるっぽい(間違ってたらすまん)どうもクローン元のディスクの状態に合わせて適宜切り替えて処理を行ってくれるらしい。ちなみにデフラグを掛けたら次からでなくなったので、やはり元ディスクに問題あったようです。

VISIOで図形の検索ができない

イメージ
なぜか急に図形の検索で何も出てこなくなった。昨日まで使えてたのに、なんで?ググってみると、Microsoftのサイトに同じような症状がある。
図形を検索してもなにも検索されない
試してみたけど効果なし。ダメ元でアプリの修復を試してみたら復活した。
スタートメニューから「設定」「アプリ」の順に進んで、VISIOを選んで「変更」ボタンをクリックする。次に表示される画面で、「修復」を選んで、「続行」ボタンをクリックする。しばらくすると修復処理が終わるので、メッセージに従って再起動したら終了。
以下の環境で確認。Microsoft Visio Professional 2013Windows10 Pro 64bit版(1803)

CCleanerでThunderbirdの設定が消えた?

イメージ
Thunderbirdを立ち上げると見慣れない画面が表示される。というか今まで使っていたメールの設定が消えているよね、これ。直前にCCleanerでキャシュをクリアした後なので、なにかやらかしてくれたのかも?ググってみると同じような状況の方がいます。
Thunderbirdを起動したら初期化されててメールがすべて消えていました
状況同じでprefs.jsが壊れているようです。幸い先月バックアップを取っていたので、そこからprefs.jsを戻してThunderbirdを起動したら無事に復活。助かった。
バックアップは大事だよ。C:\Users\<ユーザー名>\AppData\Roaming\Thunderbird\Profilesこのフォルダのバックアップは定期的に取っておくのがお勧めです。