タグ

c#と.netに関するgriefworkerのブックマーク (100)

  • 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の新機能(前編)
  • 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#のジェネリクスで型クラスを真似る - 平々毎々(アーカイブ)

    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用シリアライザライブラリという

  • csi.exeコマンド登場! C#スクリプト(.csx)やREPLを動かそう

    Visual Studio 2015 Update 1で追加されたREPL関連新機能を紹介。コマンドラインで実行できるC#スクリプトやIDEに搭載された[C# Interactive]の使い方も解説する。 Visual Studio 2015 Update 1(以下、Update1)が米国時間で10月30日に公開された。執筆時点ではまだ、Visual Studioの[拡張機能と更新プログラム]には表示されないようだが、次のリンク先(※インストーラーへの直リンク)からダウンロードしてインストールできる。 Visual Studio 2015 Update 1のダウンロード Update1の新機能の1つとして、C#スクリプト(.csx)とC#のREPL(Read-Eval-Print Loop: 対話型評価環境)がある(※Visual Basic向けは今回リリースされていないが、将来、提供予定

    csi.exeコマンド登場! C#スクリプト(.csx)やREPLを動かそう
  • neue cc - EtwStream - ETW/EventSourceのRx化 + ビューアーとしてのLINQPad統合

    EtwStreamというのをリリースしました。ETW(Event Tracing for Windows) + EventSourceが.NETで構造化ログをやる際の決定版というか、ETWの最強度が高すぎてそれ以外考えられないレベルなんですが、しかし、がETWは最強な反面ビューアーがありませんでした。ETWというブラックホールにログを投げ込むのはいいんですが、それが自分自身ですら容易に見れないのは不便すぎる!PerfViewとか骨董品みたいなゴミUIを操ってなんとかして見るのは、無理ゲーなわけで、カジュアルにDumpしたいだけなんだよ!テキストのようなログビューアーが欲しいだけなんだよ!に対する答えです。いや、ほんと自分自身が死ぬほど欲しかったのが、これ。 インストールはLINQPadのNuGetで「EtwStream.LinqPad」。だけ。デフォルトにでも登録しとけばLINQPadを立

  • neue cc - 実例からみるC#でのメタプログラミング用法集

    Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用、という題でMetro.cs #1にて話してきました。 現在、PhotonWireというフレームワークを作っているのですが、それで使ったメタプロ技法を紹介しました。ExpressionTree, T4, ILGenerator, Roslyn(Analyzer), Mono.Cecilとそれなりに満遍なく使っているので、それらをどーいう時に使えばいいのかというヒントになれば幸いです。まとめに書きましたが、手法自体は少なくするに越したこたぁないです、メタプロってついやりすぎちゃう傾向にあるんで、目的Firstを忘れないようにしないと末転倒になりがちです。あと、それぞれは別にそんなに難しくない、というか難しくやらないようにするのが良いですね、そもそも長い式木とか長いILとか書きたくないで

  • C#のイマドキな開発環境はこれなのですぞ。2015秋。 | TOACH

    C++エンジニアのキャリアをスタートし、仕事趣味javascriptPHPRubyJAVAなど色々な言語を触ってきた土井としては、C#ほど使いやすい言語はないと思っている。 だから、.Net Coreのオープンソース化やUnityによって、C#の活躍の場が広がっているのは素直に嬉しい。 今回は、そんなC#のイマドキな開発環境を紹介する。 2015年度版 C#開発はこれで決まり! 予め断っておきたいのが、今回の開発環境がデスクトップソフトの開発にフォーカスしたものだということ。 AzureやUnityによるゲーム開発では、また別の選択肢があるだろうから、こんなんあるよ!っていう情報はどんどん教えてほしい。 また、そうした別分野の開発に、今回紹介する開発環境が使いまわせる部分もあるから、目を通していただければこれ幸いなりや。 さて、まずはオススメの開発環境を並べてみる。 Visua

    C#のイマドキな開発環境はこれなのですぞ。2015秋。 | TOACH
  • VisualStudio の .csproj でビルド構成に依存せずApp.config のConfiguration Transformを行おう - tech.guitarrapc.cóm

    Visual Studio で C#など を書いていると、データベースの接続設定などアプリケーションで利用する値を外部ファイルに外出ししたくなることが多々あります。この時利用するのが アプリケーション構成ファイル App.config です。 How to: Add an Application Configuration File to a C# Project - Visual Studio 2015 | Microsoft Learn https://msdn.microsoft.com/ja-jp/library/ms243192.aspx さてこの App.config ですが、コンソール/WPF アプリでもビルド構成によって変えたりできることは良く知られています。そう、ASP.NET MVC などWebアプリケーションで行う、web.config の Configuration

    VisualStudio の .csproj でビルド構成に依存せずApp.config のConfiguration Transformを行おう - tech.guitarrapc.cóm
  • .NETアプリケーションをMacで開発してDockerで動かそう!

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    .NETアプリケーションをMacで開発してDockerで動かそう!
  • 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
  • Unity(ゲームエンジン)上で async/await

    async/await が使えないC#とかちょっと。 で、最近、Unity上でasync/awaitを使えるかもしれないという希望が見えてみたので、現状報告。 背景 主にUnityの問題点。数年来文句を言い続けて、一向に解決してもらえていない… Unity上のC#は3.0 Unityが使っているC#は、結構古めのMono (確か 2.8 系)で、普段普通に最新のC#を使っている人の感覚では、結構きつい制限がかかった状態にあります。 C# 3.0相当 引数の規定値・名前付き引数(C# 4.0から)だけ使えたりするものの、structやenumの値を規定値に指定できなかったり .NET 3.5相当(WPFとか除く) System.Linqは使える これで何がつらいかというと、async/awaitが使えないのが一番つらい。スマホゲームって非同期処理の塊になるわけですが、そこでawaitが使えな

    Unity(ゲームエンジン)上で async/await
  • Obfuscar を使った自作 .NET アプリの難読化入門 - 自分の歩いた道に落ちてるコード

    難読化とは? .NET アプリケーションはバイナリから可読なソースコード形式への逆コンパイルが比較的容易にできます。 難読化はアプリの解読・改ざんを防ぐためのあらゆる措置のことです。 難読化の最も単純な事例はクラス名・メソッド名の置換です。名前から役割が類推されることを防ぎます。 難読化の必要性は? オープンソースで開発しているアプリなら特に必要はないと思います。 そうでないのであれば多かれ少なかれやっておいた方が良いのではないかと思います。 ツールの使い方を一度覚えてしまえば簡単ですし、ビルドプロセスに組み込んでしまえばツールを直接使うこともほとんどなくなります。 この記事では自分が使っている難読化ツールの使い方を紹介したいと思います。 難読化ツール Obfuscar 難読化をサポートするツールは数多くあります。今回紹介する難読化ツールはその中の1つです。 Obfuscar, The O

    Obfuscar を使った自作 .NET アプリの難読化入門 - 自分の歩いた道に落ちてるコード
  • 適当な日本人の名前や住所をランダムに作れる gimei を C# に port した。 - matarilloの雑記

    willnet/gimei - GitHub gimei は、日人の名前や、日の住所をランダムに返すライブラリです。テストの時などに使います。似たようなライブラリにfakerがあります。fakerはとても優れたライブラリで、多言語対応もしていますが、ふりがな(フリガナ)は流石に対応していません。gimei ふりがな(及びフリガナ)に対応しています。 Big Sky :: 適当な日人の名前や住所をランダムに作れる gimei を golang に port した。 オリジナルは ruby gems です。 というわけで、gimeiおよびgo-gimeiを真似してC#で書いてみました。 matarillo/dot-gimei - GitHub .NET port of gimei NuGet Gallery | dot-gimei PM> Install-Package dot-gime

    適当な日本人の名前や住所をランダムに作れる gimei を C# に port した。 - matarilloの雑記
  • Roslyn for Scriptingで、あなたのアプリケーションにもC#スクリプトを!!

    いよいよ、Visual Studio 2015リリースが近づいてきました。今回はC#的にはあまり大がかりな拡張がありませんが、内情としてはC#コンパイラのインフラが「Roslyn」に正式対応するという事で、地味に大きな変更となっています。 Roslynは、MSのオープンソース戦略としては早い段階で公開され、それ以来、パブリックな場で将来のC#コンパイラの仕様検討などが行われています。勿論、ソースコードも「オープンソース」として公開されており、自分でいじりたければフォークも可能です。そろそろ概要を掴んでおこうと考えている方向けに、いくつかリンクを張っておきます。 .NET Compiler Platform (“Roslyn”) on GitHub (Apacheライセンスですよ!!) [速報]米マイクロソフト、C#/Visual Basic次世代コンパイラ「Roslyn」をオープンソースで

    Roslyn for Scriptingで、あなたのアプリケーションにもC#スクリプトを!!