タグ

ブックマーク / ufcpp.net (6)

  • C# で、同じソースコードから常に同じバイナリを生成する

    昔、gist にだけ置いてて、そういえばブログに書いてなかったものを思い出したので書いておくことに。 (一応、部分的には言及したことがあるんですけど、ちゃんとした話はしたことがなかったはず。) 決定論的ビルド 3年くらい前まで、C# コードをコンパイルすると、ソースコードを一切書き換えていなくても、生成結果の exe/dll や pdb のバイナリが変化していました(決定性(deteminism)がない)。 原因は以下の2つです。 バイナリ中に埋め込まれる GUID にタイムスタンプと乱数から生成される値を使っていた デバッグ用のファイル情報がフルパスで埋め込まれていた GUID の方はタイムスタンプと乱数なので当に致命的で、ローカルで再コンパイルしても毎回バイナリが変化していました。 フルパスの方は基的には pdb (デバッグ用シンボル情報)だけの問題なんですが、 exe/dll で

    C# で、同じソースコードから常に同じバイナリを生成する
    diveintounlimit
    diveintounlimit 2019/05/25
    いつもお世話になってる未確認飛行さんがホッテントリしてる
  • ✓DO、X DO NOT の誤訳事案

    だいぶ炎上してる例のあれ doの意味が全体的に逆になっています。 #118 対応ミスってるとはいえさすがにかわいそうなレベルでいいがかり付けられてる感じもするのでちょっと補足を。 元々の問題 マイクロソフトの機械翻訳がよくやらかすのはいつものことなんですが。 今回は何をやらかしたかというと、よくある ✓DO: 〇〇してください X DO NOT: 〇〇はしないでください みたいなやつを、DOもDO NOTもどっちも「しないで」と訳してしまっているという問題。 「しないで」も不自然だし、ましてDOの方は真逆の意味になっているという誤訳。 どうしてこうなる… みたいな気持ちはもちろんあるものの、こういう「普通の文章」になっていない部分の単語ってのは、機械翻訳では一番ミスを起こしがちな部分です。 たぶん、原文の時点で何らかのアノテーションでも付けておくとかしないと、今後も同様の誤訳は起こりまくる

    ✓DO、X DO NOT の誤訳事案
    diveintounlimit
    diveintounlimit 2018/07/25
    “「MSのガイドラインではDOは『しないで』と訳すことになっている」と勘違いした日本人が騒がいでいる” ”「英語が表示されると怖い」派と「英語がないと読めない」派のどっちもうるさくて”なるほど(´・ω・`)
  • C# 7.1 の新機能

    2017年8月、すなわち、C# 7.0のリリース(2017年2月)から半年足らずで C# 7.1 がリリースされました。 C# 7.0の頃から、目標としては C# のリリース サイクルの短縮を考えていました。 多くの機能を2・3年に1度一気にリリースするよりも、細かく出せるものに関しては短いリリース サイクルで出したいという意図です。 今回、(実質的に※)初の「マイナー バージョンアップ」となる C# 7.1 が誕生しました。 (※ 一応、C# 1.1があったんですが、ほとんど使われない機能が2つ追加されただけなので、1.1があったこと自体あまり認知されていないものです。) C# 7.1 は、Visual Studio 2017のリリース時期に間に合わなかった C# 7.0 の積み残しと言った感じの、小さい機能が4つほど追加されています。 非同期Main Mainメソッドの戻り値にTask

    C# 7.1 の新機能
    diveintounlimit
    diveintounlimit 2018/05/20
    defaultとタプル要素名ありがてぇ
  • C# によるプログラミング入門

    C# によるプログラミング入門です。C# 初心者の方はもちろん、これからプログラミングを始めようという方も対象としています。

    C# によるプログラミング入門
  • 【雑記】イベントの購読とその解除

    概要 C# の event 構文の問題と、その解消方法について説明します。 サンプル https://github.com/ufcpp/UfcppSample/tree/master/Chapters/Event/Observable ポイント イベントには発生側と受取側があって、発生側に受取側を登録する口が必要。 C# の event 構文は、このイベント登録口を作るための構文。 ただ、結構使いにくい。 Reactive Extensions使うのがいいんじゃないかな。 まず、イベントについておさらい。 ↓こういうの。「発生側」と「受取側」を明確に分離するためのパターン。 イベントの概要 event source, observable, event sender, ... など、呼び方はいろいろありますが、流儀や文脈の差であって、だいたい同じものです。 event 構文のおさらい C#

    【雑記】イベントの購読とその解除
  • 属性

    概要 属性(attribute)とはクラスやメンバーに追加情報を与えるものです。 例えば、public や private などといったC#のキーワードもある種の属性と考えることが出来ます。 public ならば「このメンバーはクラス外からも参照可能」、 private ならば「このメンバーはクラス内のみから参照可能」という追加情報が与えられます。 C++ などの既存の言語では、このような追加情報を定義する場合、 言語仕様自体を拡張し、新たにコンパイラを作り直す必要がありました。 それに対し、C# では自分で属性を定義し、クラスやメンバーに付加することが出来ます。 すなわち、ライブラリで提供されている属性や自作した属性を用いることで、 コンパイラに対する指示を行ったり、クラスの利用者に対する情報を残すことが出来ます。 属性の情報は、以下のような場面で使われます。 条件コンパイルなどの、コン

    属性
  • 1