ガンダム

前々回のガンダムAGEとGのレコンギスタがどっちも僕的には全然面白くなかったので、今回もあまり期待していなかったのだけど。

鉄血のオルフェンズ、かなり面白いね! 主人公の容赦の無さが素晴らしい。正直、SEED DestinyのキラとかAGE3代目とかみたいに、戦ってるのに

「殺したくないんだ!」

とか言いながらぐずぐずする主人公が嫌いなので。綺麗事言ってんじゃねぇよ、と。まあ、AGEの爺フリット

「ヴェイガンは根絶やしにするのだ」

とか言っててちょっぴり胸が熱くなったけど。あれは全体的に駄目だったからなぁ。00ガンダムの刹那も素晴らしかったけど、映画版で

「俺は戦いに来たわけでは……!」

とか言ってグラハムに説教されてたのがちょっとマイナス。まあ、それでも00ガンダムは大好きだけど。さて、今回のオルフェンズの主人公は今の所見ていて気持ちいい。13話の

「こいつは……死んで良い奴だから」

は素晴らしかった。しかし、そこで終わりなのではなく、きちんと程良く悩んでいる(?)のも良いね。さて、今回はどこまで戦争を貫けるのか。

映像的にも、遠距離攻撃無双なガンダムが多かったけど、今回は遠距離攻撃が決定打にならない世界観の様で、近接攻撃の見せ場が多い(00ガンダムも近接主体だったけど、遠距離に比べて強いわけではなく、あくまで主人公の戦い方の好みによるものだった)。ここまで技術が発展したのに近接に寄るのが科学的に正しいのかはさておき、近接攻撃のバトルの方が僕は楽しいので、今回の傾向は大歓迎。SEED系みたいに「ロックオン→敵全滅」で映像が固定されるよりはねぇ。

ビルド絡みの落とし穴

ある日、突然ブレークポイントが設定出来なくなった。 エラーメッセージは

ブレークポイントを設定できません」

みたいな感じの一文、それだけ。

丸一日近く悩んだ挙げ句、Releaseビルドしてるのに気付いた……。Releaseビルドでは、コンパイル時最適化の内容如何でブレークポイントが設定出来たり出来なかったり設定出来てもおかしな事になる場合があるので気を付けよう。

……って、誰もこんなの引っかからないか。いや、意外と引っかかる人は僕以外にもいるはず。いるよね?

EntityFrameworkにおけるSQLの直接実行

ちょっぴり落とし穴が。

SELECT
    fo.GroupingItem
  , AVG(fo.AverageItem)
FROM
  FooTable as fo
GROUP BY
  fo.GroupingItem

こんなSQLを発行したとする。 結果セットは

GroupingItem 列名無し
foo 1
bar 2
baz 3

こんな感じになったとする。これをEntityFrameworkでどうにかする場合、

public class Results {
  public string GroupingItem {get;set;}
  public int AverageItem {get;set;}
}

こんなクラスを書いてマッピングする。さて、既にここで落とし穴が! 平均の結果が、マッピングされない。しかも、エラーも何も無しで0が入る(恐らく初期値)。ものすんげぇ悩んだけど、名前が消失するケースでは

SELECT
    fo.GroupingItem
  , AVG(fo.AverageItem) as AverageItem
FROM
  FooTable as fo
GROUP BY
  fo.GroupingItem

この様にちゃんと名前を付け直してあげよう。はぁ。 単に列の順番でマッピングしていって型が合わなければ弾く、とかそんな処理を想像していた。予想以上にちゃんとしてるのね。……なら、エラーぐらいは出して欲しいもんだけども。

LINQとSQL

ううむ、LINQSQLはやっぱり似ている様で違う。大体は置き換え可能だけど、等価じゃない部分も当然ある。

SQLのGROUP BYをLINQにそのまま置き換える方法がぱっと思い浮かばないな……。一々foreachとか挟むぐらいなら、SQLそのまま発行するし。

URL Rewrite

必要があって、WebPIからIIS ExpressにURL Rewriteを突っ込もうとした所、IISが無いと蹴られた。 どうも、最新バージョンに対応していないらしい。 と思ったら、

Download Microsoft URL Rewrite Module 2.0 for IIS (x64) from Official Microsoft Download Center

こっちから落としたらOK。 WebPIに転がっているURL Rewriteはどうもバージョンが古い様だ……。

EntityFrameworkのMigration

いやぁ、今までEntityFrameworkのマイグレーション、何が何やらわからなかったけど、やっとわかってきた。

  1. Enable-Migration
  2. Add-Migration "文字列"(そのマイグレーションに係る内容を適当に。Initializeとか、AddDataColumnとか)
  3. Update-Database
  4. Azureとか使ってるなら「Update-Database -ProjectName "プロジェクト名" -ConnectionString "接続文字列" -ConnectionProviderName "System.Data.SqlClient"」

以上。たったこれだけ。はー、今までの混乱は何だったんだ。頭弱くなってるんだろうか、僕。