[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

c#に関するunaristのブックマーク (143)

  • 継続渡しスタイル(CPS)と非同期構文(async/await) | matarillo.com

    2020-03-31 09:37:20 Eric LippertのBlog “Fabulous Adventures In Coding” に、非同期構文に関する連載記事が投稿されていたので、少しずつ訳してみる。 継続渡しスタイル(Continuation Passing Style)再訪 パート1 パート2: 制御フローは大雑把に パート3: コルーチンは慎重に パート4: 自身をひっくり返す パート5: CPSと非同期 C# 5の非同期 パート1 パート2: awaitはどこから? パート3: 複合 パート4: 魔法じゃない パート5: タスク大杉 パート6: asyncはいずこへ? パート7: 例外 パート8: もっと例外

  • 主人公の好感度問題 完結編

    遡ること 2017 年 4 月、「主人公の好感度問題」と題された、あの一大プロジェクトが、今日完結する……。 「主人公の好感度問題」とは 生まれて初めて買ったエロゲ―こと、ワガママハイスペック(以下ワガハイ)をプレイしていたときのこと。このゲームは、共通ルートでの選択肢の選び方によって、各キャラの好感度パラメータが変化していき、最終的に好感度の高いキャラと恋人になって、あとは一道のストーリーを見るだけの、ほぼほぼ完全に紙芝居なのですが、その選択肢の選び方について、多くのパターンが未尋ルートに向かうように感じられました。そこで、選択肢の選び方全パターンを実際に試してみて、当に未尋ばかりなのか、つまり未尋はちょろいのかについて検証してみようというプロジェクトが始動しました。 TL;DR 選択肢の積み重ねでエンディングが分岐するタイプのゲームにおいて各エンディングの出現率を調べるために、Do

    主人公の好感度問題 完結編
    unarist
    unarist 2018/10/29
    Dockerで動かしたゲームをX Window Systemのプロトコルで操作して、選択肢による分岐を全探索して各エンディングの出現率を調査。つよい。
  • さぁ fixed を捨てて Unsafe だ - アジョブジ星通信

    早すぎる最適化が好きな人のための C# 7 の有効活用ガイドです。 ある構造体をそのまま byte 配列に突っ込みたくなるとき、ありますよね?構造体ならメンバーに名前がついていて書きやすい、でも相手が byte 配列だから 1 バイトずつ手書きするしかないのか……?そんなときにおすすめの技を紹介します。 達成目標 例を用意しましょう。 X Window System のプロトコルは C 言語などでクライアントを実装しやすいように、適度にアライメントされたデータをやりとりします。しかもエンディアンもクライアント側が指定することができるので、クライアントはまさに構造体を直接送受信することができます。そこで、クライアントが X サーバに接続して、最初に送信するメッセージを構造体を使って中身を用意し、 byte 配列に書き込むことを目標にしていきましょう。 (この目標設定は、ちょうど X クライア

    さぁ fixed を捨てて Unsafe だ - アジョブジ星通信
    unarist
    unarist 2018/10/29
    Unsafe.As<TFrom,TTo>()
  • C# で危険なメソッドが呼ばれたときに警告を出す

    Landscape トップページ | < 前の日 2005-07-25 2005-07-28 次の日 2005-07-29 > Landscape - エンジニアのメモ 2005-07-28 C# で危険なメソッドが呼ばれたときに警告を出す 当サイト内を Google 検索できます * C# で危険なメソッドが呼ばれたときに警告を出すこの記事の直リンクURL: Permlink | この記事が属するカテゴリ: [C#] [.net] [プログラミング] 「使い方によっては危険なメソッド」が呼ばれたときに、呼んだプログラマに対してなんらかの警告を出したい。できるならば、プログラムを実行する前に。 - 危険なメソッドが呼ばれたら警告を出したいC++ で書かれたとある通信用 DLL ファイルがある。その 通信用 DLL を直接呼ぶとリソースの管理やマーシャリングが面倒なので、C# でラッパーを書

    unarist
    unarist 2018/03/11
  • [雑記] デリゲートの内部

    概要 デリゲートは、内部実装的には「インスタンスと関数ポインターをペアで管理しているクラス」になっています。 ここではデリゲートの内部挙動と、 それを踏まえたパフォーマンス上の注意点を説明します。 デリゲートは .NET ランタイム内で特殊な扱いをされていて、 デリゲート内部で起こっていることをそのまま C# で書くことはできないので、 ここでの説明は疑似コード的なものになります。 型定義 例えば、以下のようなデリゲートがあったとします。 delegate int F(int x); これは内部的には以下のような扱いになっています。 概ね、インスタンスと関数ポインターのペアです。 class F : System.Delegate { object Target; IntPtr FunctionPointer; // 実際には Delegate クラスのメンバー // あと、object

    [雑記] デリゲートの内部
    unarist
    unarist 2017/12/18
    普通の静的メソッドのデリゲートの呼び出しはthisを削る分遅い、匿名関数の生成コスト的に () => x より this x => x の方が速いこともある、等々
  • C# recording audio from soundcard

    unarist
    unarist 2017/04/18
    WASAPIを使ったループバックキャプチャ、CSCore使うと超簡単だな...。
  • C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?) - Qiita

    C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?)C#非同期処理StackOverflowマルチスレッド翻訳 StackExchange/Code Reviewでの質問"Exporting doc types using queues and multithreading"へのEric Lippert氏による回答より訳出。回答内容はオリジナル投稿"What are the best practices with multithreading in C#?"に呼応するため、編集前のタイトルを採用。原文および訳文のライセンスは引用元サイト規約の通り CC-BY-SA 3.0 に従う。 (補足:回答内容のトーンに合わせて口語調かつ意訳気味に訳出しました。誤訳指摘および訳出改善は歓迎

    C#でマルチスレッドのベストプラクティスって何かある?(What are the best practices with multithreading in C#?) - Qiita
  • There Is No Thread

    This is an essential truth of async in its purest form: There is no thread. The objectors to this truth are legion. “No,” they cry, “if I am awaiting an operation, there must be a thread that is doing the wait! It’s probably a thread pool thread. Or an OS thread! Or something with a device driver…” Heed not those cries. If the async operation is pure, then there is no thread. The skeptical are not

  • できる!C#で非同期処理(Taskとasync-await)

    ヤヴァいタイトル付けてしまった…. ええと、これはAdvent Calendarではありませんが、勢いで書いています(C# ADは既に埋まっていた…) それには、こんな事情があったのです: 「.NET非同期処理(async-await)を制御する、様々な方法」の記事がコンスタントにPVを稼いでいる (その割に、他の非同期関連の記事は読まれない)。 asyncやawaitキーワードの使い方を度々聞かれる。 Task.Wait()とか、Task.Resultとか使ってるコードを頻繁に見る(不要なのに! しかも、この記事を参照しながら全部Wait()とかResultしているブログ記事… そしてそこから流入するPV… 死んじゃう、死んじゃうよ…)。 Task.Run()とか、Task.Factory.StartNew()とか、Task.Start()とか、Task.ContinueWith()を使

    できる!C#で非同期処理(Taskとasync-await)
  • neue cc - ZeroFormatterと謎RPCについて発表してきました。

    ZeroFormatterは良くも悪くもというか、あんま良くないんですがリリース頻度がすごくて、1.0出してから既に16回もアップデートを重ねていて最新は1.5.2です。1.0とは何だったのか……。いやまあ一応、自称、さすがに安定してきたとは思っています。思っています。思っています。常にこれで完成だ!って思ってはいます(反省)。 なんでこんなに変わったかというと、社内での置き換えで200クラス以上は書き換えてったんですが(とぅらい……)、わりと重箱の隅を突っつくような使い方をしてるところがあったりなかったりで、ビミョーに引っかかりまくったせいだ、という。ようは詰めが甘いってことなんですが、かなり色々なケースで鍛え上げられたという言い方はできます。それならちゃんと社内で叩き上げてから公開しろよって気がしなくもないんですが、公開後に皆さんから頂いたフィードバックはものすごく役立ったので、大変助

  • Home | .NET Fiddle

    Test your C# code online with .NET Fiddle code editor.

    unarist
    unarist 2016/10/05
    NuGet使えるのいいな
  • Visual Studio CodeでC#のコンソールアプリケーションを作る環境を整えよう - かずきのBlog@hatena

    Visual Studio体を入れるのはだるいし、ちょっとした実験するのに、わざわざVS立ち上げるのはだるいという感じの時はVisual Studio Codeで作れる環境を用意しておくのもいいかもしれません。ということでVisual Studio Codeが入ってるという前提で、そこからの手順を。 node.jsを入れよう いきなりC#と関係ないですが、各種ツールがあるのでnode.js入れます。 Node.js 入ったらyoとgenerator-aspnetをインストールします。 npm install -g yo npm install -g generator-aspnet dotnet core sdkを入れよう .NET CoreのSDKを入れます。 .NET - Powerful Open Source Development 以下のコマンドをうって何か出ることを確認します

    Visual Studio CodeでC#のコンソールアプリケーションを作る環境を整えよう - かずきのBlog@hatena
    unarist
    unarist 2016/09/03
    C#のプロジェクトを作るのにもYeoman使うのかー
  • わたしが C# を学ぶにあたって教わっている先達のサイトをまとめてみる - tech.guitarrapc.cóm

    書いていないネタは多いのですが、アンケートで C# についてと言われました。 次なんの記事がいいですか? #書く記事募集中— guitarrapc_tech (@guitarrapc_tech) April 23, 2016 そこで、私自身 C# を学ぶにあたって参考にしているものをまとめておくことことにします。*1 はじめに感謝と尊敬を。ここに載せていないサイト、書籍の多くからも学びも得ています。今現在もそうです。 私自身が何か恩返しをできればと思いつつ、同じように悩まれている方への参考となれば幸いです。 目次 目次 個人ブログ Microsoft関連 困ったときの まとめ 個人ブログ 順番には大きな意味はありません。 サイト ブログ主 参考にしている分野 備考 ++C++; // 未確認飛行 C ++C++; // 管理人: 岩永 (@ufcpp) / Twitter C#, プログラ

    わたしが C# を学ぶにあたって教わっている先達のサイトをまとめてみる - tech.guitarrapc.cóm
    unarist
    unarist 2016/09/03
  • ピックアップRoslyn 8/27: What’s New in C# 7.0

    ブログ: What’s New in C# 7.0 Roslynリポジトリ内の話じゃないんですけど、Preview 4でのC# 7の動きについて、Madsがブログ書いてました。 What’s New in C# 7.0 そういや、この文章だと「C# 7.0」。 昔ちょっとブログ書きましたけど、最近って小数点以下のバージョン付けないんですけど。 C# 7はずっと「7」ばっかりみてたけど、久々に「7.0」表記。 この辺り、最近、C#チーム内でも統一してないなぁ… C# 7.0の内容 このブログの内容的には、 先日僕もブログで書いたのとそんなに差がないんで詳細は省略。 Visual Studio "15" Preview 4 差分というか、僕が書いた方で漏れてるのは、以下の内容: out varのwildcard out varと一緒に、*、要するに、受け取る必要のない out 引数を無視するた

    ピックアップRoslyn 8/27: What’s New in C# 7.0
  • neue cc - Unityでのボクシングの殺し方、或いはラムダ式における見えないnewの見極め方

    Happy boxing! UniRxの前回リリース(UniRx 5.0.0)でパフォーマンス向上を果たしたと書きましたが、まだやり残したことがありました。それがボックス化(boxing)の殺害です。ボックス化は単純に言うと、せっかくの値型が箱に入っちゃってGCゴミが発生してGCがーーー、というもの。避けれるなら避けるべし。あ、ちなみに今回の内容は特に別にUnityに限らないふつーのC#の話です。 それと、というわけかでUniRx 5.1.0リリースしました、アセットストアから落とせます。基的な内容は以下に解説するボックス化を徹底的に殺害したことによるパフォーマンス向上です。 ボックス化とジェネリクス GCって、別に見えてるnewだけで発生するわけでもありません。見えてるものを警戒するのは大事ですが、見えないものを見てないのは片手落ち感が否めない。そんな見えないものの代表例がボックス化で

    unarist
    unarist 2016/08/05
    デリゲート型の引数にメソッドを渡すとデリゲートが生成されるが、ラムダ式の時と違ってキャッシュされない、と
  • Roslyn Adventures: Optimizing StringBuilder string interpolation

    unarist
    unarist 2016/07/15
    StringBuilderに対する .Append($"..{x}..") を .AppendFormat("..{0}..", x) に置き換える
  • What is a good pattern for using a Global Mutex in C#?

    I want to make sure this is out there, because it's so hard to get right: using System.Runtime.InteropServices; //GuidAttribute using System.Reflection; //Assembly using System.Threading; //Mutex using System.Security.AccessControl; //MutexAccessRule using System.Security.Principal; //SecurityIdentifier static void Main(string[] args) { // get application GUID as defined in AssemblyInfo.cs string

    What is a good pattern for using a Global Mutex in C#?
    unarist
    unarist 2016/07/15
    ReleaseMutexとAbandonedMutexException、マルチユーザー考慮するならアクセス権の設定
  • Noda Time | Date and time API for .NET

    Noda Time is an alternative date and time API for .NET. It helps you to think about your data more clearly, and express operations on that data more precisely. // Instant represents time from epoch Instant now = SystemClock.Instance.GetCurrentInstant(); // Convert an instant to a ZonedDateTime ZonedDateTime nowInIsoUtc = now.InUtc(); // Create a duration Duration duration = Duration.FromMinutes(3)

  • C# / Moles で dynamic を使う (Chaining Assertion を使って private メンバのテストを書きたい) - 木曜不足

    実は最近 C# でちょっと動作確認がめんどくさいコードをぺけぺけ書いている。 というわけで、珍しく(?)できるだけ手厚くテストを書こうとしているのだが、外部のライブラリとかサービスとか絡んでいて、まさにテスト泣かせな状況。 そう、今こそレガシーコード(WEwLC, レガシーコード改善ガイド)を読んだ経験が生きるとき! なんか Seam とか Sprout とかあったよなあ……とをひっくり返しそうになったが、今は Moles といういいものがありまして。 Moles は MS 謹製のモックフレームワークで、一言で言うと「任意のメソッドの振る舞いをアドホックに書き換えることができる」という最終兵器的な代物。 例えば、中で現在日時の取得を行なっているコードをテストしようと思ったら、その日時取得部分を関数オブジェクトとか delegate とかまあなんしかそこらへんの手段で外出しして……みたい

    C# / Moles で dynamic を使う (Chaining Assertion を使って private メンバのテストを書きたい) - 木曜不足
    unarist
    unarist 2016/02/02
    legacyCasPolicyが有効だとdynamicが使えない話
  • StatefulModelについて - the sea of fertility

    StatefulModelとは? StatefulModelはModel-View-Whateverにおける、いわゆる"fatなModel"を構築するためのクラス群です。現在の機能はStetefulModelのための変更通知群とイベントリスナー系がメインになります。github.com 変更通知コレクション群では、スレッドセーフな変更通知コレクションやソート済の変更通知コレクション、または特定のSynchronizationContextにバインドした変更通知コレクションと、それぞれの同期変換機能を提供しています。組み合わせることによって、例えば「スレッドセーフに値を追加できるソート済のUIスレッド上で結果が見える変更通知コレクション」なども簡単に作成できます。ReadOnlyWrapperも用意してあります。 MIT LicenseでNugetにて提供しています。 PCLとして作成してい

    StatefulModelについて - the sea of fertility