投稿日時 [2015-03] : 6~10件目/11件中

久々にハマった

.NETでメール送信するときは MailMessage というクラスを部分的に使うのですが、こいつは日本語環境で文字化けしやすいという問題を抱えていました
この問題については "MailMessage 文字化け" などでググると山ほど出てきます

今回はこの問題ではなく .NET Framework 4.5からMailMessageクラスの挙動が変更された ということに起因します

.NET Frameworkの4.0と4.5は共存できない

.NET Frameworkの4.5をインストールすると4.0は勝手にアンインストールされてしまいます
4.5がインストールされているマシンだと、コンパイル時の対象フレームワークに4.0を指定しても実際使用されるのは4.5のアセンブリです

また、Environment.Version を使ってインストールされているVerを判定することはできません(4.5でも “4.0.30319” が返る)。これは、4.5のアセンブリVerが4.0と同じであるためです

インストールされているVerを判定するには

StackOverflow のエラい人によると、下記のようにすればインストールされているVerが4.0以下なのか、4.5以上なのか判定することができるようです

public static bool IsNet45OrNewer() {
    return Type.GetType("System.Reflection.ReflectionContext", false) != null;
}

ReflectionContext クラスは4.5以上にしか存在しないので、4.5以上だと true が返るという塩梅です。スマートですね~

毎回判定してるとパフォーマンスがよろしくないので静的変数に切り出してしまうのが良いでしょう(2つ目のfalseは省略可能です)

public static readonly bool IsNet45OrNewer = 
    Type.GetType("System.Reflection.ReflectionContext") != null;


コード例

// Bエンコード処理
private String BEncode(String text, Encoding encoding) {
    var bytes = encoding.GetBytes(text);
    text = Convert.ToBase64String(bytes);
    return String.Format("=?{0}?B?{1}?=", encoding.HeaderName, text);
}

// メール送信処理
private void SendMail() {
    var encoding = Encoding.GetEncoding("ISO-2022-JP");
    var subject = "件名です";

    if (IsNet45OrNewer) {
        // .NET Framework4.5以上だと二重でBエンコードする
        subject = BEncode(subject, encoding);
    }

    using (var mail = new MailMessage()) {
        mail.Subject = BEncode(subject, encoding);
        // 以降、メール送信処理(ry
    }
}


.NET Frameworkの4.0と4.5は完全互換ではない

今回のケースはまさに↓の記事にあるとおりの内容でした

.NET 4.5で予定されている互換性のない変更

おそらくこのような互換性の問題はかなりレアではあるものの、MailMessageクラスの変更は結構影響が大きそうな気がします

ちなみに MS公式の4.0→4.5の互換性 のページにもMailMessageクラスの変更は載っていません
思ってたよりザルですね…

そもそもMailMessageクラスは日本語環境だと問題が発生しやすいので、Tokiさんが公開されている TKMP というライブラリを使わさせていただくのも手です

コメント投稿

アップロード画像

NHKで未解決事件 File.04「オウム真理教 地下鉄サリン事件」という番組がやっていたので見ました
これは 未解決事件 というシリーズものの続編ですが、File.01「グリコ・森永事件」は俗にいう NHKの本気 を感じさせてくれるクオリティの番組でした

再現ドラマはほぼなし

File.01~03までは再現ドラマ+ドキュメンタリーという構成
が、今回のFile.04ではドラマ部分はほぼ壊滅、もはやただのドキュメンタリーになりました

やはり俳優をキャスティングするのは金がかかるんですかね。いずれにせよ、個人的にはドラマ部分がこの番組の主柱であったと思っていたので残念至極です

File.01「グリコ・森永事件」

ハンター✕ミスターグリコ

ミスターグリコ・加藤讓記者、ハンター・吉山利嗣記者、大阪府警のエリートである特殊班、登場人物と犯人との攻防が非常にアツい

犯人に翻弄される警察、スクープの競争、そして新聞社と警察との軋轢など見所満載です

File.03「尼崎殺人死体遺棄事件」

角田美代子元被告

再現ドラマが生々しすぎて、見てるのが辛くなるほどでした
一家を崩壊させ、その家族同士で虐待させていたというのが驚き。まさに鬼畜の所業


File.02でもオウムが題材だったのに、今回のFile.04でもまたオウムとは少しクドいですね
総じて、期待していただけに非常に残念な内容でした


川井憲次のBGMは最高です

コメント投稿

YouTube

GAP / That's Holiday "Trees"


1999年に放送されていたGAPのクリスマスのCM
自分は美的センスほぼ皆無ですが、当時の自分でもおしゃれなCMだなぁと思ったものです

後になって調べてみると ミシェル・ゴンドリー という有名映像作家の作品とのこと。さすがですねぇ

メインで使用されている曲は Leroy Anderson / Sleigh Ride
途中部分で使用されている曲は Vanilla Ice / Ice Ice Baby

コメント投稿

将棋電王戦FINAL

今月から第4回電王戦が始まりました
第1回から欠かさず見ており、毎年楽しみにしているイベントです

ここまでプロ棋士の2連勝。ちなみに自分の予想はプロ棋士0-5ソフトの予想でしたw

第3局 稲葉陽七段 vs やねうら王

稲葉陽七段は関西棋界を代表する棋士で、井上門下3番手としての出場
一方、やねうら王はIT業界では有名のプログラマ、やねうらお氏が作成したソフトです

試合の結果としては116手までやねうら王の勝ちとなりました
稲葉七段は2七歩以降、それまで優位だった形勢を一気に悪くしてしまいそのままジリ貧になっていまいました

スマホにも勝てなくなる

以前にやねうらおこと磯崎氏が「数年後には羽生さんでもスマホにも勝てなくなる」と言っていましたが、自分も同様に考えます

第2回電王戦第5局で三浦九段がGPS将棋と対戦しましたが、惨敗と言っていいほどの敗戦でした

このときのGPS将棋は667台のクラスタリングというモンスターマシン、というかチートレベルのスペックです。…ですが、A級棋士だった三浦九段が手も足も出ずに負かされたことは、将棋ファンにも自分にもかなりの衝撃でした
実際、三浦九段より確実に強い棋士というのは本当に片手で数えられる程度です

自分が考えるに、このときのGPS将棋には羽生さんでも太刀打ちできないんじゃないかと思いました


PVのBGMがチボマット
懐かしくて10年ぶりくらいに引っ張り出して(実際にはiTunes)聴いています

YouTube

Cibo Matto / Sci Fi Wasabi

なぜかマリオw

コメント投稿

先週金曜頃から当鯖にアクセスできない状況になっておりましたが、
3/24(火)零時ごろに復旧しますた

Whois情報の更新時に管理者のメールアドレス認証が昨年から実施されていて、こちらの確認を怠っていたことが原因です ('A`)

以上、よろしくお願いいたします

ぼやき

当鯖は固定IPではないのでダイナミックDNSを使っています

一般的にIPアドレスはルータ再起動(DHCPリリース)で振り直されます。ウチはフレッツのマンションタイプを使っているのですが、コイツがやっかいなことに1日に何度も切断されます

当然切断のたびにIPアドレスが変わってしまい、以降数分はアクセス不可に
自宅鯖だとこういうインフラ面がどうしてもネックになりますね。VPSだと\1,000以下/月で借りれるので、VPSでやる方が確実にスマートですね

電気代もバカになりませんし

4件のコメント

お疲れ様です。
先週、しばらくアクセスできへんなぁ~と思ってましたww

先週は、プライベートな都合により有給とりまくりで
​実家に寄せていたので、なにかネタあるかな~って思って。

有給いっぱい取れるんだったらまだ会社としては良さそうですね
以前に勤めていたある会社では有給+休出の代休で40日以上ありましたが、退職時の買い取りもなくうやむやにされてしまいました

トラが開幕3連勝。奇跡ですね

休みを取らせてくれるのは本当に今の職場の人たちはありがたいです。
正直、有給を全部消化しろ的な労組が強いわけではないけど、
自分の周りは専門職だから、そこんところはドライですよね。

阪神、どないしたんですかねぇ…
でも、開幕戦は負けるかと思いました。

エンジニアのための時間管理術 という本にこう書いてありました

休暇を先延ばしにしていると、あなたはオフィスの厄介者となり、皆があなたと仕事をするのがいやになります。あなたは怒りっぽく、気難しく、不機嫌になります。
だから休暇を取りなさい。いいですね!

システム管理者は休暇を取れないことをよく自慢しています。「この会社は自分がいないとやっていけないのさ。だからもう何年も休暇を取っていないんだ」筆者はこれを聞くとうんざりします。
(中略)
このような人と一緒に働くのは不可能です。このような人は最終的に打ちのめされ、追い詰められ、逃げ場を失うでしょう。


自分も同意見です。megane氏の会社は健全そうですが、会社に休暇を取ることがはばかられる雰囲気が漂っているのであれば本当に残念なことです

コメント投稿