YDiary

メモ的な

Amazonプライムフォトに任意のデータをアップロードする

先日,Amazonがプライム会員を対象に写真データを無制限に保存できるサービスを始めましたね.
なんでもRAWなども含めて再圧縮なしでいくらでも保存できるとのこと.
とするとJPEGなんかにファイルを埋め込めば好きなデータを保存できるのでは…という気がしてきます.
そんなことを思いつつ対応ファイル形式を眺めていたら…
f:id:YDKK:20160125110544p:plain
なんとBMPに対応しているではありませんか!
確かBMPはファイル構造が単純だった気がするので,任意のデータをBMPに変換することができればAmazonプライムフォトを容量無制限のクラウドストレージとして使えるような気がします.

というわけで早速試してみましょう.
WikipediaBMPのファイル構造を調べて…
f:id:YDKK:20160125111909p:plain
それをもとに適当にファイルをBMPに変換するコードを書いて,適当なファイルを放り投げてみると…
https://pbs.twimg.com/media/CZYo58gUAAII6WG.jpg:orig
出来ました!
19676×19675ピクセルで1.44GBという狂気のBMPファイルです.
ちゃんとWin10の標準ビューアで開けます.
https://pbs.twimg.com/media/CZYtYtvUEAAHtNd.jpg:orig
あとはアップロードするだけですが,ここで自分がAmazonプライム会員じゃないことに気が付きました.まぁ,せっかくなのでこれをいい機会にとAmazon Studentに登録.
さて,いざアップロード...
https://pbs.twimg.com/media/CZYvI3TUYAE17jq.jpg:orig
Amazon強い



https://pbs.twimg.com/media/CZYvVApUsAA3b0z.jpg:orig
やりました!ちゃんと画像として認識されています.その後試しに10GBぐらいのBMPもアップロードしてみましたが,同様に画像として認識されてます.どうやら画像として認識されるファイルサイズに上限はないみたいです.
あとはこの一連のBMP化→アップロード,ダウンロード→元ファイルに復元する処理を裏でやってくれるようなファイルシステムDokanあたりで作ればかなり面白そうな気がしたのですが,残念ながら日本のAmazon Cloud DriveAPIはまだ提供されてないそうです.

というわけで,とりあえず今回はここまで.


追記:

と言われたので一部表現を変更しました.内容はほぼ変わりません.

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も手に取ってみてあげてみてください!
ではでは!