Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

プログラミングNet framework3のお題

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 41 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à プログラミングNet framework3のお題 (20)

Publicité

Plus par Kazushi Kamegawa (20)

Plus récents (20)

Publicité

プログラミングNet framework3のお題

  1. 1. プログラミング.NET Framework 第三版座談会
  2. 2. 自己紹介
  3. 3. 書籍での担当
  4. 4. 翻訳のやり方に ついて
  5. 5. 翻訳のやり方について(1/2) • ツール – みんな大好きWordとExcel • 章ごとにサブ文書化 • 訳語一覧とかはExcelで管理 • レビュ時にはExcel Web App – 時間がないので新しくGoogle Docs覚えるには時間がなかっ た – FireFoxで動くからSUSEの人でも問題ないよね – 原稿はSubversionでバージョン管理 • 複数人でやるなら分散型でもいいかも
  6. 6. 翻訳のやり方について(2/2) • プロセス – イテレーティブなモデルを目指した • ウォーターフォール執筆はつらい – ベテラン翻訳家ならともかく、品質向上の暇がなくなる • 理想 – 初稿→編集さんチェック→レビュアさんチェック • 現実 – 初稿→レビュラッシュ→編集さんチェック – スタイルガイドというものがあります • コーディング規約的なやつ
  7. 7. 翻訳で 苦労したところ
  8. 8. 翻訳で苦労したところ • ページ数。 – 結局分担してお願いすることに • 担当者ごとのくせが結構あった(仕切り力が足りないと もいう) • 訳語 – 口語、MSDN訳、Java界隈訳、アカデミック界隈訳 – 定訳のないもの:construct、false sharing、 interlocked – おかしいもの:ジェネリックのvariance→分散?
  9. 9. 第二版との違い
  10. 10. 第二版との違い • (用語が出そろっていることもあり)なるべく MSDN系と用語がずれないように • 著作権の絡みもあり、作業自体はフルスク ラッチ • CLR 2からの部分についても、変更点などは 修正
  11. 11. 本の内容について
  12. 12. 1~23章 (多少追記あり)
  13. 13. 24章~ (第三版の追加分)
  14. 14. 本の内容 • 各部の構成 – 第1部:ランタイムの基本的事項 [level 400-500] – 第2部:処理系としての基本動作 [level 400] – 第3部:BCLや型システムの詳細解説 [level 300] – 第4部:処理系としての詳細解説 [level 400-500] • 新たにシリアル化の章が追加 – 第5部:非同期・並列 [level 300-400] • 新規
  15. 15. 第1部の読み方 • CLRの基礎 – 第1章 CLRの実行モデル – 第2章 アプリケーションと型のビルド、パッケージ ング、配置、管理 – 第3章 共有アセンブリと厳密名を持つアセンブリ • 配置のときのリファレンスとして
  16. 16. 第2部の読み方 • 型の設計 – 第4章 型の基礎 – 第8章 メソッド – 第5章 プリミティブ型、 – 第9章 パラメーター 参照型、値型 – 第10章 プロパティ – 第6章 型とメンバーの – 第11章 イベント 基礎 – 第12章 ジェネリクス – 第7章 定数とフィールド – 第13章 インターフェイス • 基礎力強化、ライブラリやフレームワーク作 成のお供に
  17. 17. 第3部の読み方 • 主要な型 – 第14章 Char、String、テキスト操作 – 第15章 列挙型とビットフラグ – 第16章 配列 – 第17章 デリゲート – 第18章 カスタム属性 – 第19章 null許容の値型 • BCLの重要ポイントを押さえたいあなたに
  18. 18. 第4部の読み方 • CLRの中核機能 – 第20章 例外とステート管理 – 第21章 自動的なメモリ管理 (ガベージコレクション) – 第22章 CLRのホスティングと アプリケーションドメイン – 第23章 アセンブリのロードとリフレクション – 第24章 ランタイムシリアル化 • 一歩踏み込みたいあなたやアーキテクトの教 養として
  19. 19. 第5部の読み方 • スレッド処理 – 第25章 スレッドの基礎 – 第26章 計算量依存の非同期処理 – 第27章 I/O依存の非同期処理 – 第28章 プリミティブなスレッド同期コンストラクト – 第29章 ハイブリッドなスレッド同期コンストラクト • 来たるべきC# 5やRxに備え非同期処理への 備えをしたいあなたに
  20. 20. 読み方の例のご提案 • 初級者 – 14章、20章あたりをじっくり読んでみる。 • 中級者 – 第3部→第2部で復習、第5部と第4部はさらっと • 上級者 – 第5部→第4部でさらなる高みを • 猛者 – 頭からシーケンシャルに • 中の人 – レビュとダメだし
  21. 21. 特に気に入っている 章は?
  22. 22. 裏話何かある? この話は基本非公開で
  23. 23. 裏話とかその1 • 凶器である件 – 『プログラミングASP.NET』よりは軽いですよ – Twitterでの「軽く凶器」発言に対し、編集部長が 「軽くはないだろ」と言ったとか – 分冊化について • どこで分けるかを考えると難しい – 電子書籍化について
  24. 24. 裏話とかその2 • マーケティング – 紙の書籍の場合、棚で「目立つ」かが重要→厚く なりがち – TechEdで見本を配ろうかという話もあったり
  25. 25. 裏話とかその3 • レビュシート • Wordファイル – 真っ赤になりました – 真っ赤になりました
  26. 26. 裏話とかその4 • 序文と訳者紹介は突貫工事 – 序文はノリで訳しています • なぜか序文を訳しているといろいろな人の顔 が頭をよぎりました • 訳していて楽しい章とつらい章がある – GCとか非同期とか楽しいですね
  27. 27. CLR2と4の この本の立ち位置
  28. 28. CLR via C# CLR via VB.NETじゃだめ?
  29. 29. 後悔しているところ すでにわかっている誤訳など
  30. 30. Q&A
  31. 31. 会場から何も出なかった時のお題 using System; class Program { static void Main(string[] args) { Console.WriteLine(string.Empty); typeof(string).GetField("Empty").SetValue(null, "New Empty Value"); Console.WriteLine(string.Empty); } }
  32. 32. String.Empty祭り
  33. 33. 何の話? • String.Emptyって定数じゃないから FieldInfo.SetValueで書き換えらるよねという話 • ネタ元は Daily WTF らしい – JavaだとInteger.valueOf用のキャッシュ値書き換え ると楽しいよとか(publicじゃないけど) • そもそもの問題はなにか
  34. 34. Initonlyフィールド • C#でいうreadonlyフィールド • IL/CLIの仕様としてはコンストラクター内での み値を設定可能 – コンストラクター外で値を変えようとすると例外 (VerificationExceptionあたり) • 実はリフレクションで値を変えられる
  35. 35. リフレクションで値を変えられるわけ • 逆シリアル化の実装のため – 実際、 SecurityPermission(SerializationFormatter=true)の コードアクセスセキュリティが必要
  36. 36. でも • StaticなInitonlyフィールドを書き換える必要は ないよね?
  37. 37. ところで • String.Empty以外にやばいのある?
  38. 38. たくさんある • DBNull.Value, • Decimal/DateTime/DateTimeOffset.MaxValue /MinValue • IntPtr/UIntPtr.Zero • Type.Missing, Type.Delimiter, etc.. • Path.DirectorySeparatorChar, etc. • System.Reflection.Emit.OpCodes
  39. 39. 予想される動き • LINQや正規表現あたりで InvalidProgramExceptionになる(Emitが壊れ るから) • AccessViolationException多発(IntPtr.Zeroが 変な値になるから) • ファイルI/O周り全滅(Pathの値がおかしいか ら)
  40. 40. OpCodesを変えてみよう • ldc_*をいじるとか(定数が変わるよ) • bceとbgtの値を逆にするとか(if文が逆になる よ) • rethrowを全部throwにするとか(スタックト レース途切れるよ) • callvirtとcall入れ替えるとか(さよならポリモー フィズム)
  41. 41. ワークアラウンド • 丸投げディスカッション

×