タグ

c#に関するgriefworkerのブックマーク (214)

  • neue cc - C# 7.0 custom task-like の正しいフレームワークでの利用法

    例年、この頃はMVP更新が云々とかなのですが、今年からシステムが変わって更新時期に変動があるんで何もありませんが、一応まだ継続しています。それはともかくとしてVisual Studio 2017が出ました。会社でも全プロジェクトがVS2017に移行完了を果たして、代わり映えしないようで、タプル記法のデコンストラクションとか工夫すると結構便利だな、とか使い始めると色々発見があります。タプル記法やデコンストラクションの工夫に関しては、弊社エンジニアリングブログのC# 7.0 が使えるようになったので ValueTuple を活用してみたをどうぞ。 そんな中で、私がはよ来てくれ……と願っていたC# 7.0の新機能は、task-likeです。Proposal: arbitrary task-like types returned from async methodsで延々と議論されていたようですが

  • async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ

    ※個人的な備忘録的なものです。 こっちとかこっちのが良くまとめられています。 ライブラリ制作者向けの内容になっているのでアプリ製作者にはあまり関係がないかもしれません なお、サンプルコードは全てWindowsストアアプリとして実行したものとします デッドロックで泣きを見ないように 下のようなライブラリのコードがあるとします gist11215254 このライブラリのDoAsyncは呼び出され方によってはデッドロックされてしまいます 下のコードがその例になります gist11215568 原因はTaskのWaitメソッドでロックしたスレッドに対して、HeavyWorkAsyncメソッドでワーカースレッドで作業していたTaskが元のUIスレッドに戻ろうとしたためです 図にすると以下のようになります Waitするなと思った方がいらっしゃるかもしれませんが、使用するのは自分ではなく他人のアプリ製作

    async/await ~非同期なライブラリは楽じゃない~ - 飽きっぽい人のブログ
  • neue cc - C#(.NET, .NET Core, Unity, Xamarin)用の新しい高速なMessagePack実装

    と、いうものを作りました。MessagePackのC#版です。以前に作ったZeroFormatterのコードをベースに、バイナリの読み書きをMsgPackのフォーマットに差し替えたものになります。MsgPackのライブラリはすでにあるじゃん(MsgPack-Cli)!ってことなんですが、パフォーマンスにかなり差があります。 neuecc/MessagePack-CSharp JSON.NET(スタンダードで、豊富なAPIを持ってる)に対するJil(スピード特化、APIは必要十分はあるけれどJSON.NETほどではない)のようなものと思ってください。とはいえ、生のまま使っても問題は出ない(デフォルトのままで最高速が出るようにチューニングしてある)でしょうし、カスタマイズの口自体も十分用意してあります!詳しくは「拡張」の項で説明しますが、既に私自身が他のライブラリへの対応・インメモリデータベー

  • C# 7.0で知っておくべき10の新機能(後編)

    Visual Studio 2017およびVisual Studio Codeで利用可能になったC#言語の新バージョン「7.0」の新機能を、公開されている議論を基に解説。前編として「パフォーマンス向上」と「コード記述の単純化」に関連する6つの新機能を説明する。 ← 前回 連載 INDEX 前編では「データ中心設計」に関連する4つの新機能を説明した。後編である今回は、その続きとして「パフォーマンス向上」と「コード記述の単純化」に関連する6つの新機能を説明する。 稿ではC# 7.0で追加される機能を10個に分け、さらに「データ中心設計」「パフォーマンス改善」「コードの書きやすさの向上」の3つに分類して紹介する。 【C# 7.0新機能の一覧】 データ中心設計: 1outパラメーター付き引数での変数宣言(Out Var) 2パターンマッチング(Pattern matching) 3タプル(Tup

  • C# 7.0で知っておくべき10の新機能(前編)

    *1 サンプルコードの動作確認はVisual Studio 2017と.NET Core 1.1.1の組み合わせで検証している。また、Linux環境においても、Red Hat Enterprise Linux 7.3に.NET Core 1.1.1を入れた環境で動作確認をしている。正式版で仕様が変更される可能性もあるので、ご了承いただきたい。 前のバージョンであるC# 6.0はコード名“Roslyn”と呼ばれるオープンソースのコンパイラープラットフォームとともにリリースされた一方、言語機能については使い勝手の向上を中心とした控えめな機能追加であった。C# 6.0がリリースされた後、.NET Coreが発表され、C#を含めた.NET RuntimeはLinuxmacOSでもサポートされるという大きな変化があった。また、コンパイラー、ランタイム、クラスライブラリなどC#および.NET Cor

    C# 7.0で知っておくべき10の新機能(前編)
  • グラニ x カヤック合同勉強会レポート。ネイティブ開発をテーマに gRPC, Unity, アセット管理, GitLFS について - Grani Engineering Blog

    CTOの河合です。 2/24(金)に面白法人カヤックさんと合同で、弊社の休憩/セミナースペースにて勉強会を開催しました! カヤックさんには以前にもお越しいただいて、その時はVRがテーマだったので、今回はネイティブアプリケーション開発をテーマに、特に弊社では最近gRPCが熱いのでgRPCを切に希望しつつ、お悩みどころでもあるアセット管理などについて、お互いの知見を共有し合いました。 Golang x gRPC の話 カヤック矢吹さんより、GolanggRPCの話をしていただきました。詳細はカヤックさんのレポート 【旅する勉強会】Grani & カヤックで合同勉強会を開催しました! へ。 gRPCの採用を検討し最終的には……!理由は非常に納得の行くもので、しっかりした検証と、しかしより良い形を目指して現実的な採用を進めるところは、さすがだと思いました。 NextGen Server/Clie

    グラニ x カヤック合同勉強会レポート。ネイティブ開発をテーマに gRPC, Unity, アセット管理, GitLFS について - Grani Engineering Blog
  • ラピッドイテレーションを実現するRE ENGINEの設計

    【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~

    ラピッドイテレーションを実現するRE ENGINEの設計
    griefworker
    griefworker 2017/02/22
    言語はC#だけど、仮想マシンとGCを独自で実装しているの強い。
  • neue cc - Expression Treeのこね方・入門編 - 動的にデリゲートを生成してリフレクションを高速化

    Expression Treeは、IQueryableの中心、Code as Dataなわけですが、それ以外にも用途は色々あります。ただたんに名前を取り出すだけ(考えてみると贅沢な使い方よね)とか、デリゲートを生成したりとか。varはLinqのために導入されたものだからそれ以外に無闇に使うのは良くない(キリッ とか言う人は、式木も同じ考えなんですかね、匿名型へも同じ態度で?導入された、そして発展させたのはLinqだとしても、別にそれ以外に使ってもいいんだよって。縛られた考えイクナイ。 というわけで、今更に、初歩からの式木再入門。特に.NET 4から大幅に拡張されて式だけじゃなく文までいけるようになって、何でも表現出来るようになりました。式木の用途は多岐に渡るわけですが、今回はリフレクションの高速化をお題にしたいと思います。プロパティ名の文字列からPropertyInfoを取ってGetVal

  • nullが生まれた背景と現在のnullの問題点 ― null参照問題(前編)

    Cの系譜を継ぐC#ではnullが長らく使い続けられてきたが、最近ではその存在が大きな問題だと認識されている。前後編でこの問題を取り上げ、今回(前編)はnullを取り巻く事情について考察する。 ← 前回 連載 INDEX 次回 → 近年、nullの存在は、billion dollar mistake(10億ドル規模の損失をもたらす過ち)と呼ばれるくらい忌避されるものになっている。 nullは、低コストでそこそこ安全に参照を扱えるという意味で悪くない妥協ではあるが、技術が進歩した現在ではもう少し賢い参照の扱い方があるはずである。C#のように、これまでnullを認めてしまっているプログラミング言語で、今からそれを完全になくすというのは現実的ではないが、nullに起因する問題を少しでも避ける手段はこれからでも追加していけるだろう。 今回は、nullが生まれるに至った背景から始め、nullが抱える問

  • neue cc - ZeroFormatter - C#の最速かつ無限大高速な .NET, .NET Core, Unity用シリアライザー

    (現状は)C#専用の、新しいシリアライズフォーマットを作りました。アセットストアには置いてないんですが、GitHubで公開しています。ReadMeが超書きかけですが明日ぐらいには全部書き終わってるはず……。 neuecc/ZeroFormatter 特徴はデシリアライズ速度がゼロなので、真の意味で爆速です。そう、無限大高速。 嘘くせー、って話なんですが、実のところこれは類似品があって、Googleの出してるFlatBuffersと基的な考えは同じです(他にCap'n Protoというのもあります、こっちも元Googleの人ですね)。デシリアライズ「しない」から速い。つまるところ必要になるときまでパースを先送りするってことです。これは、アプリケーションの作りにもよりますが非常に効果があって、例えばデカいマスタデータをドバッと取得するなんてときに、その場で必要なデータってその巨大データのごく

  • 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
    griefworker
    griefworker 2016/08/22
    async/awaitが導入されてから、スレッドを手動で生成することが無くなった。必要としていたのは平行性じゃなくて非同期だった。
  • Saltarelle C# to JavaScript Compiler

    # For Sale The bridge.net domain name is for sale. # USD$28,500 If interested, please email [email protected]. Purchase using escrow.com, with buyer+seller sharing escrow transaction fee.

    Saltarelle C# to JavaScript Compiler
    griefworker
    griefworker 2016/08/12
    C# で書ける AltJS の一種かな。
  • MVVMのModelにまつわる誤解 - the sea of fertility

    こちらに移転してきて初めての記事です。 最近たまに話題になるので書いておきます。MVVMのModelについて誤解されやすい部分のお話です。最近よく議論してるasync/awaitの話とは関係がありません。なおこの話は以下のスライドを理解している事が前提となります。 共有したい理解(ゴール) ViewModelはModelの影 ModelについてViewModelが行うことは、イベントに対する反応と戻り値のないメソッドの呼び出ししかない事 これについての理解を共有できるよう説明していきます。 VIewModelはModelの影 スライドにもしつこく書きましたが、MV○(MVVMやMVC/MVP)のModelは大変分厚くなるし、アプリケーション間で使いまわすことなんてできません。ModelはUIを意識しない??いや、何度も言っていますが、意識はする必要があるんです。ただUI実装の知識が必要ない

    MVVMのModelにまつわる誤解 - the sea of fertility
  • 遂にXamarin無料! Xamarin Studio for MacでiOS/Androidを書いてみた。 | DevelopersIO

    1 はじめに Xamarinは、これまで、10万円以上の年間ライセンスで販売されていました。(iOSとAndroidの両方のライセンスを取得するには、年間20万円以上) しかし、先日、マイクロソフトによってXamarinは買収の発表があり、にわかに予想されていましたが、遂に、無料でVisual Studioの追加機能にすると「Build 2016」で発表されました。 [速報]Visual Studioに無料でXamarinが追加。無料のCommunity EditionでもiOS/Androidネイティブアプリが開発可能に。Build 2016 また、Mac対応のXamarin Studioも、Xamarin Studio Community Editionとして個人や小規模の開発チームに無料で提供されることになりました。 早速ですが、個人として、このMacXamarin Studioを

    遂にXamarin無料! Xamarin Studio for MacでiOS/Androidを書いてみた。 | DevelopersIO
  • Roslyn で ASP.NET Web API 向けの Code Analyzer を作ってみた - ROMANCE DAWN for the new world

    Visual Studio 2015 から追加された .NET Compiler PlatformRoslyn)を使って、ASP.NET Web API 向けの Code Analyzer を作ってみました。 環境構築 Roslyn で Code Analyzer を開発するには、Visual Studio のオプション機能と .NET Compiler Platform SDK をインストールする必要があります。Build Insider の記事が分かりやすいので、こちらを参照してください。 www.buildinsider.net SDK と一緒に、Syntax Visualizer というツールもインストールされます。SyntaxTree をリアルタイムに表示してくれるので、実装する際に役立ちます。 プロジェクトの作成 開発環境が整うと、Visual Studio のプロジェクト

    Roslyn で ASP.NET Web API 向けの Code Analyzer を作ってみた - ROMANCE DAWN for the new world
  • Build software better, together

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    Build software better, together
  • Project Rider – 新しい C# IDE #jetbrainsrider | Post Blog

    IDEs AppCode CLion DataGrip DataSpell Fleet GoLand IntelliJ IDEA PhpStorm PyCharm RustRover Rider RubyMine WebStorm Plugins & Services Big Data Tools Code With Me Quality Assurance JetBrains Platform Scala Toolbox App Writerside JetBrains AI Grazie Team Tools Datalore Space TeamCity Upsource YouTrack Hub Qodana .NET & Visual Studio .NET Tools ReSharper C++ Languages & Frameworks Kotlin Ktor MPS Am

    Project Rider – 新しい C# IDE #jetbrainsrider | Post Blog
    griefworker
    griefworker 2016/01/14
    WindowsならVisualStudioでいいけど、MacやLinuxでは欲しいかも。
  • C#のジェネリクスで型クラスを真似る - 平々毎々(アーカイブ)

    id:Nagise さんのJavaジェネリクス記事を読みながら、C#ではどうかな、とあれこれ考えているわけです。 型に属する情報をジェネリックに扱う試み ... のC#版 ジェネリクス型変数と型階層 ... のC#版 再帰的ジェネリクスの代入互換性 ... のC#版 ジェネリクスの基礎とクラス設計への応用 ... のC#版 Javaによる高階型変数の実装 ... のC#版(序) Javaによる高階型変数の実装 ... のC#版(文) そんな時に、ジェネリクスのカリー化 - プログラマーの脳みその話を振られて。 真の高階型引数、つまり、型パラメータを取る型パラメータは実現できないです。が、型クラス的なものであればエミュレートできるらしい。 もちろんCLRにもILにも型クラス的なものなんかないわけで、オダスキー教授が言うところの「貧者の型クラス(pdf)」を使う、つまり型に適合するメソッド群

    C#のジェネリクスで型クラスを真似る - 平々毎々(アーカイブ)
  • C# - macOS ではじめる ASP.NET Core x Entity Framework Core x PostgreSQL - Qiita

    Mac で C# の Web 開発ができるようになった! Visual Studio Code (VS Code) で C# を書いて,O/RM の Entity Framework Core (EFC) から PostgreSQL にアクセスし,データベースのレコードを .NET で表示する。すべて macOS 上で可能になったのです。 そうです,Mac で .NET Web アプリ開発がついにできるようになったのです! 稿では Mac 版 VS Code 上で C# を書き,EFC から Postgres に CRUD した結果を自動テストコード xUnit.net で検証します。 Postgres のインストールと,VS Code のデバッグ,.NET の Web アプリを配備できる非同期 I/O の Kestrel Web サーバについては稿の対象外としています。僕が執筆中の薄

    C# - macOS ではじめる ASP.NET Core x Entity Framework Core x PostgreSQL - Qiita
  • neue cc - Roslyn C# Scriptingによる実行できるコンフィグの手法と実活用例

    Advent Calendar大遅刻組です。というわけでC# Advent Calendar 2015の10日目です!なんで遅刻したかというと、記事のネタのためのライブラリを作るのに思いの外時間がかかってしまったから…… コンセプトも固まってたしプロト実装も済んでたんですが、最終的な形に落としこむのが想定よりちょっと割と大変だった……。すびばせんすびばせん。 どうやらC# Advent Calendarは2011年から書いてるので5回目ですね、へぇー。過去を振り返るとModern C# Programming Style Guide、モダンつってもC# 4.0時代ですが、今ぱっと見直すと別にここで言ってることは今も変わらないですね、これに5.0, 6.0の話を足せばいいだけの話で。2012年はMemcachedTranscoder - C#のMemcached用シリアライザライブラリという