読者です 読者をやめる 読者になる 読者になる

YDiary

メモ的な

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

Ruby - マイナンバーのチェックデジットを計算する - 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";

以上で復旧できました。

SH-06E購入しました!(SH-12Cから機種変更)

今まで使ってたSH-12C購入からちょうど2年がたち、また応援学割2013に乗れる最後のチャンスとのことだったので思い切って機種変更をしました。

  • 4.8インチ(個人的に5インチは大きすぎる)
  • フルHD IGZO
  • 1.7GHzクアッドコア
  • RAM2GB
  • 光学手振れ補正
  • 防水

と終始テンション上がりっぱなしです。

まず軽く触ってみた感想としては、液晶が綺麗すぎてやばいです。
SH-12Cでは何とかピクセルの一つ一つが認識できる程度だったのですが、SH-06Eではそれがほぼ不可能というぐらいに液晶が高精細化してます。(260dpi→460dpi)
また、IGZO液晶なので電池持ちも期待できそうですね。 そのほかすぐに実感できることは、振動がとても細かく上品な感じになってます。
RAMが2GBと余裕があるのでFirefoxなどメモリーをモリモリ食べる系のアプリでも全く問題なく動きます。SH-12C(RAM512MB)に試しにFirefoxを入れてみたら起動した瞬間にOS巻き込んでクラッシュしたというのにね!
 

f:id:YDKK:20130527202041j:plain

歴代機種比較:左から SH-03C, SH-12C, SH-06E
 

f:id:YDKK:20130527203925j:plain

触れずにパターンロック解除
 

f:id:YDKK:20130527205133j:plain

Jelly Bean!!  
 
ちょっとあれだなー、と思ったのがプリインアプリの多さですね。
SH-12C時代のようなコンテンツ系のプリインアプリは大分減った(→ショップにて手動インストールになった模様)ものの、その代わりに
Googleで提供してるサービスはすべてdocomoのサービスで置き換えてやる」
という感じの狂気を感じさせるほどドコモ関連のアプリが多かったです。まぁ実際そのつもりなんでしょうが…。OS標準機能で凍結できるようになったのがせめてもの救いです。

f:id:YDKK:20130527205004j:plain

 

その他

などなど
 
これから多分少なくても2年間はお付き合いしていくはずなので、大切に使っていきたいと思います。
そういえばこの端末、スペックも薄さも電池持ちも明らかにSO-04E(Xperia A)よりもいいのになんでツートップじゃないんですかね…?
もし夏モデル購入検討してる方は、ぜひSH-06Eも手に取ってみてあげてみてください!
ではでは!

USBメモリーの中身

まともに読み書きできなくなったというのと、某事情でUSBメモリーの殻が必要になったので割ってみました。
今回割ったのはA-DATA製の32GBなやつです。
ちなみに、以前に4GBのUSBメモリーを割った時の中身はこんな感じでした。

f:id:YDKK:20130505150120j:plain

(上:表 下:裏 ※合成)

下側の左下に見えるのはクリスタルですね、12.000とあるのでたぶん12MHzでしょう。
そして真ん中あたりの小さめのチップがUSBコントローラー、右の大きいチップがフラッシュメモリーです。
容量4GBに対してメモリーチップが2枚なので一枚当たり2GBの容量であると予想できます。
では、32GBのUSBメモリーはどうでしょうか。
同じ感じであれば16GBのメモリーチップが2枚だと予想できますが…

f:id:YDKK:20130501011555j:plain

なんと2層構造になってました。8GBメモリーチップ×4です。
この展開は想像してなかったのでけっこう驚きました。
ちなみにこいつら取り外せちゃったりもします。

f:id:YDKK:20130501011641j:plain

確かにこうしたほうがコストも抑えられるし、読み書き速度の向上も期待できそうですね。
だとしたら…最近の256GBや512GB、はたまた1TBのUSBメモリーなんかは3層や4層にでもなってるんですかね?
個人用途向けの USB フラッシュドライブ | Kingston
確かに厚さからしてみるとそうなっててもおかしくはなさそうです…。
というより1TBのUSBメモリーって…。いやはやすごい時代です。
では、今回はこのあたりで。