より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Windowsの物理を仮想に変換、P2V

Windowsのバックアップができていないサーバーがいくつかあったのですが、仮想であればコロナでもなんとかバックアップできたものの物理は出来てませんでした。

物理はP2Vで仮想に変換するのがいい

と言われたのですが、P2Vって具体的にどうやるのか私にはさっぱりわかりませんでした。

難しいことは不要です。以下のツールを使えばいいようです。

docs.microsoft.com

使い方も簡単で、見れば大体わかります。

保存対象のドライブを指定して、保存先を指定します。

時間はサイズによりけりです。VHDファイルとなるので、あとはHyper-Vに載せるのは簡単ですね。

考えてみると、P2VってPhysical to Vitual(物理を仮想に)の略ですね。

テイルズオブヴェスペリア、60時間かけてクリアしました。

テイルズシリーズは好きなのですが、シリーズの中でも人気のこの作品をやってませんでした。

一度は体験版をプレイしたのですが、まあ、それほどでもないかなと放棄してました。

変にフェイタルストライクを狙ってしまったのがよくなかったのかも。

フェイタルストライクは特技と奥義、敵の種族の組み合わせで狙えますが、技の使い勝手の兼ね合いもありますし、フェイタルストライクを出せる頃にはもう死んでいるということもあるので。

改めて買ってみると面白いですね。

天然のエステルとのやりとりは、チャットでも戦闘後の会話でも面白いです。

また最初のボスであるザギの登場シーンがツッコミどころ満載です。

しかし、このザギ、意外と強いんですよねえ。

私、グミは使わずにクリアを目指しているのですが、そんな見栄っ張りなプレイをしているとアッサリ倒されます。

カルボクラムの謎は私にはわかりませんでした。メモの内容をそのまま入力するものだと思ったので、あれがなぞなぞとは…。

操作キャラ

テイルズシリーズは、基本主人公が使い勝手がいいため、主人公だけを操作して入ればいいのですが、せっかくなので、一通りのキャラを私は操作するようにはしています。

テイルズオブベルセリアは面白いのですがベルベッドの性能が高く、かつ無双できてしまうので、全くベルベッド以外を使う気にはなれませんでした。

これに対して、テイルズオブシンフォニアは全員操作して楽しめましたね。

ヴェスペリアにおいては、ラピードは一度は操作して欲しいキャラです。

犬(ラピード)とガキ(カロル)は他のメンバーが加入したら速攻ベンチ行きだな

と正直思ってました。

しかし、戦闘においては足が速く使い勝手が高いです。

ユーリは飛んでいる敵にこれだという技がない中で、閃光烈破があるのがポイント。また背が低いので一部の攻撃を何もしなくても当たらずに済みます。

シリーズとしても珍しい動物キャラです。

私は、動物があまり好きではないというか、正直嫌いな方なのですが、それでも実際に操作すると物語に対する移入度も違ってきます。

特にラピードは「ラピードは犬ではなく、ラピードという種族なんだってさ」とユーリが解説していますが、よくある物語の動物キャラクターのように人の言葉を話したりしないのです。

弓使いのレイヴンは、使い勝手は悪くないものの、使っていて面白いキャラではないので、コンピューターに任せた方が良さそうですね。

カロル先生は回復も使えるのでバランスは良いですが、コンピューターに任せたほうが多彩さが発揮できますね。

リタもオーバーリミッツを使うと魔法を連発できます。

残念なのが、チャットで行き先を確認できて欲しかったこと。一度みたチャットは出てきません。

あらすじを見ればいいのですが、シリーズによっては行き先がチャットで確認できるので、こちらの方がスムーズに進行をチェックできるのでいいです。

そんなに寄り道したつもりはないのですがクリア時間は60時間。

ストーリーもテイルズの中では破綻なく安定して楽しめる仕上がりでした。

仲間も8人ではなく9人は意外でした。

キーホルダーのリングの取付け方

仕事上、キーホルダーのリングをあるものに取り付けることをしてました。

一つや二つだったら、爪で開いて通すで良かったのですが、10個とか100個のレベルです。

皆が在宅でリモートワークしているコロナ禍で自分は何、内職みたいなことやっとるんじゃーと思ったのですが、必要な作業だったのでしょうがないです。

自宅からペンチを持ち込みました。

専用のリングプライヤーなるものもあるらしいですが、まあペンチで十分かなといったところです。

あんまり頑張ると、原型に戻らないくらいに捻れてしまうので、そこに注意です金。

キーホルダー型名札の札の外し方

仕事で以下のようなキーホルダー型の名札から、札を取り出したいのですが、取り出せなくて困ってました。

www.askul.co.jp

Googleで調べても、手がかりになる記事もなく。

こういう誰も書かなくてほとんど需要ないけど、知らないと困るようなことを書くのが私のブログとしての使命の一つと勝手に思っているので書きます。

裏返すと紙の端っこが見えているので、ここから引っ張り出せばいいようです。

それはすぐ気づいたのですが、それが取り出せないから困ってたのです。

私は爪は常に短いので、素手で取り出すのは無理でした。

私が行った方法としては、

  1. 端から取り出しやすいように少し名札を軽く捻る
  2. 小さいゼムクリップを白い紙と透明のカバーの間に差し込む。
  3. 白い紙とゼムクリップを引き抜く

という方法です。

Visual Studioも言語設定を英語に

同僚がいい英語の勉強法を募集していたのですが、私はいくつか挙げました。

結論から言うと、自分の英語力によって適した勉強法は違うという見解なのですが、一番お勧めは

iPhoneの言語設定を英語にする

でした。

要は英語慣れをする第一歩です。

OSの設定も英語にしていたのですが、スクリーンショットを取る都合などで日本語にしてました。

私は英語で話したいとは全く思わないですが、学生時代から英語は苦手科目でしたし、英語のサイトは危ない、英語なんて知るかというスタンスでした。

しかし、エンジニアとしては英語わかった方が確実に得だよなあと思うことが多いです。

OSSが全盛期になった今、よっぽど大きなOSSでもないと日本語訳は回って来ません。

また、英語がわかった方がプログラミングを行う上でも、きちんとしたコードが書けます。

        /// <summary>
        /// 名前
        /// </summary>
       public string Name {get; set;}

とかしなくていいですし。命名なども変な英語を使わずに済みます。

何よりtypoを減らせる。typoは気づいたら気になってしょうがないものです。

しかし、Visual Studioを英語にしてなかったよなぁ。ということで設定を変えることにしました。

言語パックをインストールして、Visual Studioの設定を変えることで言語設定を変更できます。

f:id:rimever:20210330063058p:plain

f:id:rimever:20210330073448p:plain
like this

エラーメッセージも英語になrます。

思ったよりは、すんなり入っていけそう、です。

Convert to method groupとは?

C# のコードを書いていると、以下のようなコード支援が

f:id:rimever:20210329230021p:plain
Convert to method group

あー、なるほどね。と

        static void Main(string[] args)
        {
            var a = new List<int>() {1, 3, 4, 5};
            var b = a.Select(i => IsOdd(i)).ToList();
        }

        static bool IsOdd(int i)
        {
            return i % 2 == 1;
        }

以下のように出来ます。Select内のメソッド呼び出しを簡略化できるんですね。

            var b = a.Select(IsOdd).ToList();

Selectで渡されるのはint型と決まっているし、IsOddもint型の引数を一つ受け取る関数なので成立します。

となると、奇数ではない、i => !IsOdd(i)となる以下はできるのではないか?と思いました。

            var b = a.Select(!IsOdd).ToList();

残念ながら、これは出来ません。

WPFのKeyDownでe.ImeProcessedKeyが取得された

Spaceキーが反応しない

WPFのKeyDownイベントで処理していたところ、本来のSpaceキーが取得されません。

デバッグすると、e.ImeProcessedKeyという値が。

docs.microsoft.com

SystemKeyに続き、これかよ。と。

強引にIMEオフにするといいんじゃと考えましたが、以下のように処理すると良さそうです。

            var inputKey = e.Key;
            if (e.ImeProcessedKey != Key.None)
            {
                inputKey = e.ImeProcessedKey;
            }

参考記事

haneisu.blog.fc2.com