YDiary

メモ的な

C#でマイナンバーのチェックデジットを計算する

マイナンバーのチェックデジットを計算する - Qiita

こんなのを見かけたのでC#で書いてみました。
なるべく短く書こうとしたけど2回Parseしたりしてて無駄があるなーと。
どうにかなりませんかね。

using System;
using System.Linq;

static bool ValidateMyNumber(string input)
{
  //入力チェック
  if (input.Length != 12) return false;
  var checkDigit = 0;
  if (input.Any(n => !int.TryParse($"{n}", out checkDigit))) return false;

  var remainder = input.Take(11).Reverse().Select((v, i) => new { v, i }).Sum(n => (n.v-'0') * (n.i <= 5 ? n.i + 2 : n.i - 4)) % 11;
  return checkDigit == (remainder <= 1 ? 0 : 11 - remainder);
}

追記 Parseやめたらちょっとだけ短くなった

Windows 10 Threshold 2で広くなったストアアプリの最小幅を元に戻す

Windows 10をThreshold 2にアップデートしてからストアアプリの最小幅がPackage.appxmanifestの指定にかかわらず広くなりました.(スケーリングとか関係してそうな気がするけどよく分からない)

f:id:YDKK:20151116155604p:plain:h400これ以上幅が狭くならない…

UWPアプリであればApplicationView.SetPreferredMinSizeメソッドを呼び出して最小サイズを指定すれば済みますが,これはWindows 10のAPIであるためUWP以前のWindows 8.1向けのアプリからは直接呼び出すことができません.
そこで,リフレクションを利用して呼び出します.

public MainPage()
{
  InitializeComponent();
  var v = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
  var m = v.GetType().GetRuntimeMethods();
  var mi = m.FirstOrDefault(x => x.Name == "SetPreferredMinSize");
  mi.Invoke(v, new object[] { new Size(320, 0) }); //最小サイズを指定
}

f:id:YDKK:20151116160421p:plain:h400
これで,非UWPアプリでも今まで通りの最小幅に戻すことができました.

MoonStrikeを使い続ける方法

どうやらAPIキーが殺された模様
続けて使うには

  1. https://apps.twitter.com/app/new から新しいアプリを作る
    最近はSMS認証が必要みたい
    コールバックURLにはhttp://hoge.hoge/を指定

  2. 作ったアプリのKeys and Access TokensからConsumer Key (API Key)とConsumer Secret (API Secret)をMoonStrikeに食わせる
    設定→アカウントの追加→下のXORみたいなボタン

  3. Enjoy!

取り急ぎこんなもんで。
なお規約的に思いっきりアウトな気がするのでやるときは自己責任で

NTFSからReFS上にHyper-V仮想マシンを移動すると動かなくなる

HDDがご臨終された関係で仮想マシン関連ファイルの移動などをしていたのですが、奇妙な現象に遭遇したのでその解決法をメモ。

症状:ReFS→NTFS→ReFSとHyper-Vの仮想ディスク(vhd, avhd)を移動したら
「仮想ディスクシステムの制限により、要求された操作を完了できませんでした。NTFS上では仮想ハードディスクファイルの圧縮と暗号化がいずれも解除されている必要があります。ReFS上では、仮想ハードディスクファイルの整合性ビットが設定された状態にしておくことはできません。」と言われて仮想マシンが起動できなくなった。

解決法:Power Shellで次のコマンドを実行する

Get-Item "仮想ディスクファイル" | Set-FileIntegrity -Enable $False

参考:Disable the Integrity Bit of VHDs Copied to an ReFS Volume

owncloudが白画面で動かなくなる

owncloudが急にログイン後白画面になって動かなくなりました。
思い返せば直前にアプリをいくつか有効化してたので、その相性の問題みたいです。

とりあえず復旧までの手順を簡単に、
まずowncloudのログを確認

# cat /mnt/storage0/data/owncloud.log
:
略
:
{"app":"PHP","message":"Class 'OC_Filestorage_Common' not found at \/var\/www\/owncloud\/apps\/files_archive\/lib\/storage.php#9","level":4,"time":"2013-12-10T09:23:40+00:00"}

フォルダ名より、files_archiveアプリに問題がありそうだと推測、
sqlコマンドを直接たたいてfiles_archiveアプリを無効化

# sqlite3 /mnt/storage0/data/owncloud.db
sqlite> UPDATE oc_appconfig SET configvalue="no" WHERE appid="files_archive" AND configkey="enabled";

以上で復旧できました。