並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 94件

新着順 人気順

c-sharpの検索結果41 - 80 件 / 94件

  • neue cc - C#でgoogle/zx風にシェルスクリプトを書く

    あまりシェルスクリプトを書かない私なのですが(小物でもなんでも書き捨てC#で書くスタイル)、CI だの .NET Core だのなんなので、全く書かないというわけにもいかない昨今です。まぁしかしcmdは嫌だし今更(?)PowerShellもなぁという感じもあり、bashねぇ、とかブツブツ言いながらしょっぱいスクリプトを書く羽目になるわけです。 そこに颯爽と現れたのが google/zx。素敵そうだなーと思いつつJavaScriptを日常的に書くわけでもないのでスルーしてたのですが、こないだもちょっと複雑なシェルスクリプトをJavaScriptで書くで紹介されていて、なるほど色物じゃなくて便利なのか、そうだよね便利だよね!と思い、私は日常的にC#を書くので、C#だったら便利だな、同じ感じで書けるなら、と、思い至ったのでした。 というかまぁzx見て思ったのが、これぐらいの内部DSL、C#でもい

    • Visual Studio の .NET Core 化まだー?

      C# 配信でちょくちょく出てくる話題の1つに 「Visual Studio (for Windows)はいまだに .NET Framework だから」 というものがあります。 もちろん、「.NET Core 化はよ」みたいな文脈です。 Visual Studio は .NET 製アプリの中でも大規模なものの1つなわけで、ドッグフーディング的な意味で早く .NET Core 化してほしいというのもありますし。 .NET Framework → .NET 5 → .NET 6 → .NET 7 と、毎度2・3割は速くなってるというベンチマークがあるわけで合計すると2倍以上速いかもしれず、 普通にパフォーマンス上の理由でも早く .NET Core 系になってほしかったりもします。 そしてもう1個、 実は .NET Framework の方は Unicode 8.0 で止まっているという話があっ

        Visual Studio の .NET Core 化まだー?
      • neue cc - プリコネ!グランドマスターズのサーバー開発をCysharpが開発協力しました

        Cygamesから4/1にリリースされたプリコネ!グランドマスターズのサーバーサイドとインフラ開発をCysharpが開発協力しました。リアルタイム通信を含むオートバトラー系のゲームです。 Cysharpはサーバー側のアーキテクチャ設計と基盤実装、クラウドインフラ構築、一部サーバーロジック実装を担いました。リアルタイム通信部分だけではなくてAPIサーバーからマッチメイキング、インフラまで、構成されるあらゆる要素がC#で作られています! クライアント (Unity) API サーバー(MagicOnion) バトルエンジンサーバー (リアルタイム通信; MagicOnion, LogicLooper) マッチメイキングサーバー (リアルタイム通信; MagicOnion) バッチ(ConsoleAppFramework) デバッグ機能サーバー (Web; Blazor) 管理画面サーバー (W

        • Windowsデスクトップアプリ開発にも対応した「.NET Core 3.1」が正式リリース。LTS版として3年間の長期サポート対象

          Windowsデスクトップアプリ開発にも対応した「.NET Core 3.1」が正式リリース。LTS版として3年間の長期サポート対象 マイクロソフトはオープンソースで開発している.NETフレームワーク「.NET Core 3.1」正式版のリリースを発表しました。 .NET Core 3.1は、9月にリリースされた.NET Core 3.0の安定度をさらに高めたもの。そしてこれがLTS(Long Term Support:長期サポート)版となり、これから3年間セキュリティパッチなどが提供されます。 .NET Core 3.1のベースとなった「.NET Core 3.0」では、これまで可能だったLinuxやWindows Serverのサーバーアプリケーションの開発に加えて、Windowsデスクトップアプリケーションの開発が可能になったことが最大の特徴でした。 WPFとWinFormsもオープ

            Windowsデスクトップアプリ開発にも対応した「.NET Core 3.1」が正式リリース。LTS版として3年間の長期サポート対象
          • Microsoft、「.NET 7」をリリース ~「C# 11」「F# 7」に対応、パフォーマンスも大幅向上/18カ月サポートの「Standard Term Support」(STS)バージョン

              Microsoft、「.NET 7」をリリース ~「C# 11」「F# 7」に対応、パフォーマンスも大幅向上/18カ月サポートの「Standard Term Support」(STS)バージョン
            • neue cc - .NET 8 UnsafeAccessor を活用したライブラリ PrivateProxy を公開しました

              PrivateProxyというライブラリを公開しました。つまるところ、privateフィールド/プロパティ/メソッドにアクセスするライブラリなのですが、.NET 8 のUnsafeAccessorという新機能を活用することでNo Reflection、ハイパフォーマンス、AOTセーフになっています。 Cysharp/PrivateProxy もちろん .NET 8 でしか動きません!ので、.NET 8が正式リリースされた頃に思い出して使ってみてください。エクストリームな人は今すぐ試しましょう。 雰囲気としては、privateメンバーにアクセスしたい型があったとして、[GeneratePrivateProxy(type)]をつけた型を用意します。 using PrivateProxy; public class Sample { int _field1; int PrivateAdd(int

              • .NET 5 から Windows Runtime API を呼ぶのが凄い楽になってる - Qiita

                .NET 5 Preview 8 かららしいのですが、Windows 10 の API に .NET 5 からアクセスするのが凄く楽になってました。言及のある記事は以下になります。 Announcing .NET 5.0 Preview 8 Calling Windows APIs in .NET5 どれくらい簡単になったかというと、今回のこの記事がすぐ終ってしまうレベルで簡単です。すぐ終わると悲しいので、ちょっとだけ昔と比べてどれくらい簡単なのか?というのも書いておこうと思います。 昔 Windows 10 SDK の特定のフォルダにある DLL や winmd ファイルを手動で参照追加したうえで、配布時に含まれてほしくないファイルはコピーされないように手動で設定する。 そんなに数は多くないのですがめんどくさかったです。 今 Microsoft.Windows.SDK.Contracts

                  .NET 5 から Windows Runtime API を呼ぶのが凄い楽になってる - Qiita
                • 最初の C# プログラム(.NET 6 新テンプレート)

                  .NET 6 ではプロジェクト テンプレートが更新されて、かなりシンプルになります。 例えば、コンソール アプリの場合(dotnet new console コマンドで生成)は(コメント行を除けば実質)以下の1行だけの C# ファイルが生成されます。 Console.WriteLine("Hello, World!"); 先日の .NET 6 Preview 7 から、コンソール アプリと Web アプリがこの新テンプレートになっています。 トラッキング issue を見るに、他のタイプのプロジェクトも同じ方針で書き換え中みたいです。 今日はこの新テンプレートがらみで、背景とか、内部挙動的な話とか、Preview 7 から正式リリースまでの間に掛かる予定の変更の話とか。 旧テンプレート まあ、これまでのテンプレートが以下のようなものでしたから、ずいぶんとすっきりしました。 using Sy

                    最初の C# プログラム(.NET 6 新テンプレート)
                  • .NET のカルチャー依存 API 問題

                    以下のコード、実行環境によって出力結果が変わります。 Console.WriteLine(new DateTime(2021, 8, 22)); 日本語 Windows 環境だと 2021/08/22 0:00:00 と表示されると思いますが、 OS 設定でカルチャーを変更すると別の書式になります。 例えば、en-US カルチャーにすると 8/22/2021 12:00:00 AM になります。 要するに、DateTime.ToString は OS のカルチャー依存になっています。 問題点はいくつかあるんですが… ToString みたいなよく使うメソッドの既定動作がカルチャー依存 WebAssembly みたいな、カルチャー情報を使いたくない環境がある カルチャー非依存にしたければ北米カルチャーを強要されがち 北米カルチャーが思った以上に世界から浮いてる 今日はこの辺りの話を書きたいと

                      .NET のカルチャー依存 API 問題
                    • neue cc - 2021年のC# Roslyn Analyzerの開発手法、或いはUnityでの利用法

                      C#のAnalyzer、.NET 5時代の現在では標準でも幾つか入ってきたり、dotnet/roslyn-analyzersとして準標準なものも整備されてきたり(非同期関連だと他にmicrosoft/vs-threadingのAnalyzerも便利)、Unity 2020.2からはUnityもAnalyzer対応したり、MicrosoftもUnity向けのmicrosoft/Microsoft.Unity.Analyzersという便利Analyzerが登場してきたりと、特に意識せずとも自然に使い始めている感じになってきました。 Analyzerって何?というと、まぁlintです。lintなのですが、Roslyn(C#で書かれたC# Compiler)から抽象構文木を取り出せるので、それによってユーザーが自由にルールを作って、警告にしたりエラーにしたりできる、というのがミソです。更に高度な機

                      • C# 12 新機能メモ - Qiita

                        C# 12 新機能メモ .NET 8 (C# 12) が現地時間 2023/11/14 に正式リリースされました。 C# 12 の新機能について、気になったものを備忘録として簡単に纏めます。 プライマリコンストラクタ 通常のクラスおよび構造体に対して、プライマリコンストラクタが追加されました。 これにより、コンストラクタを以下の様に記述できるようになりました。 // 通常のコンストラクタ(C# 11 以前の書き方) internal class Person1 { public string Name { get; } public int Age { get; } public Person1(string name, int age) { this.Name = name; this.Age = age; } } // プライマリコンストラクタ(C# 12 以降の書き方) intern

                          C# 12 新機能メモ - Qiita
                        • 【C# 10.0】ファイル スコープ名前空間 (一斉置換設定)

                          昨日、C# 10.0 が正式リリースされたわけですが、皆様もう C# 10.0 へのアップグレードはお済でしょうか(当日アプグレが当たり前のような口調)。 まあ、 C# はそんなに大きな破壊的変更はしない言語ですし、 TargetFramework や LangVersion を書き換えるだけならそこまで大きな問題は起きないんじゃないかと思います。 (たぶん。 僕は CryptoStream の破壊的変更由来のテスト失敗を1件踏みましたが。) あえて踏み込むのであれば、 名前空間を namespace N {} からファイル スコープな namespace N; に書き換え ImplicitUsings を true にして未使用 using になる部分をごっそり削除 とかやると、機械的にできてリスクは低いものの大量の差分行を産むコミットを作れたりします。 ASP.NET では95万行の差

                            【C# 10.0】ファイル スコープ名前空間 (一斉置換設定)
                          • PowerShell 7.4がリリースされました | DevelopersIO

                            .NET 8はLTSリリースのためPowerShell 7.4もLTSとなります。 最新のLTSリリースとなるので積極的に移行していくと良いでしょう。 PowerShell 7.4 の入手方法、更新方法 PowerShell 7.4の入手方法やアップデート方法はPowerShell 7 ~ 7.3の時と基本的に同じです。 GitHubリポジトリおよび各種パッケージマネージャからインストール可能です。 詳細な手順はGitHubにある手順をご覧ください。 Get PowerShell 対応プラットフォーム PowerShell 7.4を利用可能なプラットフォームは7.2や7.3の時からほとんど変わっていませんでしたが、RHEL 7系が非対応になりRHEL 8~RHEL 9のみの対応となっています。 プラットフォーム毎の詳細についてはMicrosoftのドキュメントでご確認ください。 Insta

                              PowerShell 7.4がリリースされました | DevelopersIO
                            • C# 10 完全紹介 - Qiita

                              序論 .NET 6の開発進展を伴い、C# 10の最終機能もようやく決定され、デイリービルドに実装されました。今回の更新は主にタイプシステムの改善ために出来ました。じゃあ早速見に行こう。 Structレコード まずはstructレコードです。C# 10以前はレコードをstructに適用できませんでしたが、C# 10以降は可能になりました。 例えば、ある点の定義は以下のような書き方は可能です: そうすれば、ToStringやGetHashCodeやEqualsは自動的に実装され、とても便利です。 レコード型でToStringはsealed可能 レコードの型でToStringをオーバーライドするときにsealed修飾子を追加できます。ToStringをsealedにすると、コンパイラで派生レコード型に対してToStringメソッドを生成できなくなります。

                                C# 10 完全紹介 - Qiita
                              • C# 小ネタ:.NET 5.0 で使える C# 9.0 で気に入ってる機能紹介 - Qiita

                                C# 9.0 がリリースされるまで秒読みになりましたね!前に C# 8.0 風書き方アレコレを書いてみましたが、9.0 になってしまうと、また新機能が追加されてより良い言語になっていきます。 C# 小ネタ:C# 8.0 風の書き方アレコレ C# 9.0 は .NET 5.0 で使えるので LTS 版じゃないので仕事で本格的に使える人は少ないかもしれませんが LTS の .NET 6.0 に計画的に移行するように考えて使うというのはありかなぁと思います。 まぁ、そこらへんは置いといて新しいものがでたら趣味では試したい!!ということでやってみましょう。 レコード型 多分、今回追加された中で個人的に一番使いそうな機能です。 イミュータブルなクラスを定義するのが凄く簡単になります。 X と Y というプロパティを持った Point 型は以下のように定義できます。 using System; nam

                                  C# 小ネタ:.NET 5.0 で使える C# 9.0 で気に入ってる機能紹介 - Qiita
                                • 「.NETのクラスライブラリ設計 改訂新版」を買った - おんがえしの blog

                                  最近買った C# 系の本の中ではダントツでよい。巨大な API ライブラリを設計するときに気を付けることが具体的に書いてあって参考になる。 neuecc 氏が前書きを書いていて 2章が素晴らしいと書いてあったけどそのとおり2章が素晴らしかった。ここまででも十分におつりが来る感触はある。 .NETのクラスライブラリ設計 改訂新版 開発チーム直伝の設計原則、コーディング標準、パターン 作者:Krzysztof Cwalina,Jeremy Barton,Brad Abrams日経BPAmazon 以下の引用が面白かった人は購入する価値があると思います。.NET 開発者が API 設計で後悔しているところが読めるなんてそんなに知見に溢れた書籍はなかなかない。 特によかったところ 自分と同じようなユーザー向けに設計するのは簡単で、そうではない人向けに設計するのはとても難しいことです。正直に言うと、

                                    「.NETのクラスライブラリ設計 改訂新版」を買った - おんがえしの blog
                                  • neue cc - SimdLinq - LINQをそのままSIMD対応して超高速化するライブラリ

                                    ついこないだのStructureOfArraysGenerator - C#でSoAを簡単に利用するためのSource Generatorは、SoAになってるとSIMDを適用しやすいよ、という話だったのですが、そもそもSIMD手書きはカジュアルにやらないし、気合い入れてSIMD書くシチュエーションなら構造も気合い入れて専用に設計するよなぁ。と、なると、カジュアルにSIMD使えるライブラリが必要で、まぁLINQですね、と。 Cysharp/SimdLinq これを入れると別にSoA関係なく、SIMDが適用できる状態(例えばint[]にSum)だと、自動的にSIMDが適用されるようになります。そして、実際めちゃくちゃ速い。 SIMDとLINQの組み合わせが威力を発揮するというのは、別に新しいことではなく、そもそも .NET 7でもPerformance Improvements in .NET

                                    • neue cc - StructureOfArraysGenerator - C#でSoAを簡単に利用するためのSource Generator

                                      最近はSource Generatorブームが続いていて、去年末に2022年のC# (Incremental) Source Generator開発手法という記事を出しましたが、まずは今年第一弾のSource Generatorライブラリです。 github.com/Cysharp/StructureOfArraysGenerator これは何かというと、structure of arrays(SoA)を使いやすくするためのコードを生成するというものです。まずそもそもSoAですが、WikipediaのAoS and SoAという記事によるところ(日本語版はない)、CPUキャッシュを有効活用したりSIMDを適用させやすくなる構造だよ、と。通常C#の配列はarray of structures(AoS)になります。 上の通常の配列がAoSでXYZXYZXYZXYZといったように並んでいる構造で

                                      • Microsoft、「.NET 8」をリリース ~「PGO」とネイティブ「AoT」でパフォーマンス向上/3年間の長期サポートを保証したLTS版、「C# 12」の言語強化も

                                          Microsoft、「.NET 8」をリリース ~「PGO」とネイティブ「AoT」でパフォーマンス向上/3年間の長期サポートを保証したLTS版、「C# 12」の言語強化も
                                        • C# 9.0 最終版

                                          いくつかライブ配信では言ってたんですが、C# 9.0 がそろそろ機能確定しそうな感じ。 11月リリースと言ってるわけなので、まあ、時期的にもこの辺りで確定していないとまずいでしょう。 ということで、先日、 What's new in C# 9.0 もドキュメント化されて docs 上に公開されました。 What's new in C# 9.0 見出しに載るようなレベルでの機能の増減はもうありません。 Records とか Function pointers とか、一部の機能はまだちょっと修正が入るかと思います。 それに関しては9月9日の Design Meeting 議事録にまとまっています。 (同日の議題には C# 10.0 の話題というか、C# 10.0 に流れてしまったものの話もあり。) C# Language Design Meeting for September 9th, 20

                                            C# 9.0 最終版
                                          • .NET 9で登場予定のLINQのメソッド - Qiita

                                            参考 この記事は、以下の動画を参考にしています。詳しくは、動画をご覧ください。 以下の記事にも、同じメソッドについての言及があります。 CountBy 引数で指定したselectorが戻すキーの値ごとに、要素数を数える。 戻り値は、キーと要素数のペアのコレクション。 従来なら、GroupBy, Select, Countを組み合わせて書いていたところ。 // .NET 8 var oldResult = items.GroupBy(x => x.Key).Select(g => (g.Key, g.Count()); // .NET 9 var newResult = items.CountBy(x => x.Key);

                                              .NET 9で登場予定のLINQのメソッド - Qiita
                                            • neue cc - MagicOnion v4 - .NET 5 と ASP .NET Core gRPC対応への進化

                                              CysharpからMagicOnion v4を先週リリースしました。今回のリリースの実装はほぼ全て@mayukiさんにやってもらったので、詳細はそちらに丸投げドンとして(ReadMeもかなり書き換えてあるので、詳しいところはそちらも読んでください)、改めて .NET 5とgRPC、そしてMagicOnionの位置付けとロードマップなどを説明したいかな、と思います。 MagicOnion v4ではサーバーサイド側は完全に ASP.NET Core KestrelベースのPure C#実装になりました。今まではGoogleの提供していたgRPC C Coreを利用していたのですが、今回よりMicrosoft実装に切り替えています。これによりASP.NET Core MVCなどと基盤が共通化されたので、gRPCを提供しつつHTTP/1 REST APIの口やHTML出力を行うような同居がとてもや

                                              • neue cc - .NETプロジェクトとUnityプロジェクトのソースコード共有最新手法

                                                .NETプロジェクトとUnityプロジェクトのソースコード共有最新手法 2024-01-15 MagicOnionのv6が先日リリースされました。 メジャーバージョンアップとして大きな違いは、Cysharp/YetAnotherHttpHandlerを正式リリースし、これを通信層の標準ライブラリ化しました。インストール手順も複雑で、サポートも切れていたgRPC C-Coreとはさようならです。正式リリースにあたってプレビューに存在していたクラッシュ問題などが解消されています。 もう一つはクライアント生成においてコマンドラインツールが削除され、Source Generatorベースになりました。 [MagicOnionClientGeneration(typeof(MyApp.Shared.Services.IGreeterService))] partial class MagicOnio

                                                • 【すぐに使える】C#で app.configに設定値を保存・取得する(実用サンプル付き) | 初学者DIYプログラミング入門

                                                  自作プログラムを作成していると、画面から入力した値をファイルに保存しておき、次回起動時に復元したくなることが多々ありますよね。 やり方は色々とありますが、今回は多くのアプリで使われている最も標準的な app.config に保存する方法を紹介したいと思います。 あまり他のサイトでは触れられていない、app.configに対するプログラムからの変数追加や削除の仕方や、さらに手軽に使えるようクラス化したサンプルも用意しています。 app.config で設定値を管理したい方は、是非ご一読ください。 app.config の概要 いちおう念のため簡単に説明しておきます。 app.conifig は別名「アプリケーション構成ファイル」とも呼ばれている Microsoft .NET 標準の設定値保存場所です。 app.config は通称で、実際にはアプリケーション名.exe.Config 通常、E

                                                    【すぐに使える】C#で app.configに設定値を保存・取得する(実用サンプル付き) | 初学者DIYプログラミング入門
                                                  • 忘れがちなカルチャー依存問題

                                                    今日は、「Globalization Invariant Mode」に変更したら、意外と忘れがちなところで差が出たみたいな話。 Globalization Invariant Mode 以前に1回ブログに書いてるんですが、 .NET の文字列 API にはカルチャー依存なものが多くて、 例えば 1.2.ToString() すらカルチャー依存です。 大陸ヨーロッパだと小数点を , にすることが多く、そのあたりの OS でこの ToString を実行すると "1,2" になります。 一方で、カルチャーごとの書式情報みたいなのは結構データ量が多いので、 WebAssembly みたいなフットプリントを小さくしたい環境では「そのデータを除外したい」要件があったりします。 そこで導入されたのがGlobalization Invariant Mode。 CultureInfo.CurrentCul

                                                      忘れがちなカルチャー依存問題
                                                    • .NET の文字列比較でカルチャー未指定を検知する

                                                      先日の C# 配信で、 「これはブログに書いておくと助かる人がいるんじゃないか」と言われたものをブログ化。 背景: カルチャー依存問題再び うちのブログでも何回か書いてるんですが、 .NET の文字列比較は、カルチャー依存比較するものと Ordinal (文字コード通り)比較するものが混在していて、なかなかにやばいです。 .NET のカルチャー依存 API 問題 忘れがちなカルチャー依存問題 例えば以下のようなやつ。 using static System.Console; // 正規化すると同じ文字になる、文字コード的には別の文字。 var s1 = "a\u0301"; // á = a + ́ var s2 = "\u00e1"; // á // これは false。Ordinal 比較。 WriteLine(new Dictionary<string, int> { { s1,

                                                        .NET の文字列比較でカルチャー未指定を検知する
                                                      • .NET 6でLINQに追加されたメソッド - Qiita

                                                        .NET 6において、LINQにいくつかのメソッドが追加されました。また、既存のLINQメソッドに新たなオーバーロードが追加されました。非常に便利なメソッド、「一見するとこれは便利なのか?」と疑問が浮かぶけれど実は活躍するメソッドなど、様々なメソッドがあります。 この投稿では、そんな.NET 6において追加されたLINQメソッドを紹介します。 指定した条件での最大・最小を探す「MinBy、MaxBy」 このようなPlayer型と

                                                          .NET 6でLINQに追加されたメソッド - Qiita
                                                        • .NET 5でシングルバイナリを作る

                                                          .NET Coreから.NETのアプリケーションを1本の実行ファイル(シングルバイナリ)にする方法が出来て、.NET 5でも当然引き継がれています。 ちなみに、シングルバイナリファイルを正式には単一ファイルアプリケーション(Single-file Publish)と呼びます。 dotnetコマンドでシングルバイナリを作成する。 .NET 5でシングルバイナリを作るにはコマンドラインでは以下の方法があります。 Linux: dotnet publish -r linux-x64 /p:PublishSingleFile=true このコマンドラインではHelloWorld, HelloWorld.pdbの二つのファイルが作成されます Windows : dotnet publish -r win-x64 /p:PublishSingleFile=true このコマンドラインでは次のファイルが

                                                            .NET 5でシングルバイナリを作る
                                                          • 2024-04-07: AWS Message Processing Framework for .NET, .NET 7 EoS, grpc-dotnet 2.62.0 - WeekRef.NET

                                                            2024-04-07: AWS Message Processing Framework for .NET, .NET 7 EoS, grpc-dotnet 2.62.0 トピックス Introducing the AWS Message Processing Framework for .NET (Preview) | Amazon Web Services https://aws.amazon.com/jp/blogs/developer/introducing-the-aws-message-processing-framework-for-net-preview/ AWS Message Processing Framework for .NET のプレビューが公開された。 .NET で AWS の SQS や EventBridge を使用してメッセージ処理を行うためのフレームワ

                                                            • Blazor で HTML を書きたくないよぉ…(Fluent UI Blazor 編 on .NET 8)

                                                              はじめに 同じようなタイトルで 1 年と半年前に以下の記事を書きました。 この時には Fluent UI Blazor イマイチだなぁと思っていたのですが、あれから 1 年半で Fluent UI Blazor が結構進化していました。そして .NET 8 で Blazor が大進化を遂げたのにも、しっかり対応していました。 まだ、細かいところをみると .NET 8 の Blazor の進化への対応は、ドタバタしてる感じはありますが、即対応版を出してくれているところは安心感があります。 ということで .NET 8 で Fluent UI Blazor を試してみて感想を書いていこうと思います。 Fluent UI Blazor とは Fluent UI Blazor は Microsoft のデザイン システムの Fluent UI に沿ったコンポーネントを提供する Blazor 向けの

                                                                Blazor で HTML を書きたくないよぉ…(Fluent UI Blazor 編 on .NET 8)
                                                              • neue cc - .NET 9 AlternateLookup によるC# 13時代のUTF8文字列の高速なDictionary参照

                                                                .NET 9 AlternateLookup によるC# 13時代のUTF8文字列の高速なDictionary参照 2024-08-29 .NET 9 から辞書系のクラス、Dictionary, ConcurrentDictionary, HashSet, FrozenDictionary, FrozenSetに GetAlternateLookup<TKey, TValue, TAlternate>() というメソッドが追加されました。今までDictionaryの操作はTKey経由でしかできませんでした。それは当たり前、なのですが、困るのが文字列キーで、これはstringでも操作したいし、ReadOnlySpan<char>でも操作したくなります。今まではReadOnlySpan<char>しか手元にない場合はToStringでstring化が必須でした、ただたんにDictionaryの

                                                                • マイクロソフト、「ASP.NET Core in .NET 8」正式版リリース。事前コンパイルにより、高速に起動する軽量なWebアプリケーションを実現

                                                                  マイクロソフトは、同社の包括的なアプリケーションフレームワーク「.NET 8」の正式リリースと同時に、.NETをベースとしたWebアプリケーションフレームワークの最新版となる「ASP.NET Core in .NET 8」正式版をリリースしました。 ASP.NET CoreがAOTコンパイラに対応 ASP.NET Core in .NET 8の最大の新機能はAOTコンパイルに対応したことでしょう。 C#などの.NETに対応したプログラミング言語をコンパイルし、ネイティブバイナリを生成するAOTコンパイラ(Ahead-of-Timeコンパイラ:事前コンパイラ)は、.NET 7で登場した新機能でした。 .NETには開発時にコードをコンパイルをするプロセスがありますが、これはソースコードを.NET専用の中間言語に変換するものです。アプリケーションの実行時に.NETランタイムのJITコンパイラによ

                                                                    マイクロソフト、「ASP.NET Core in .NET 8」正式版リリース。事前コンパイルにより、高速に起動する軽量なWebアプリケーションを実現
                                                                  • Visual Studio 16.7 & 16.8 Preview 1 リリース / C# 9.0 の新機能3つ(module initializers, static lambda, target-typed conditional)

                                                                    5日に、Visual Studio 2019 の 16.7 と、16.8 Preview 1 がリリースされました。 Visual Studio 2019 v16.7 and v16.8 Preview 1 Release Today! ということで、先週、ライブ配信もしていました。 16.7 が正式リリースになった記念に、Preview の頃に触れてた話題を改めてちょこっと振り返ったのと、16.8 Preview 1 で新たに追加された C# 9.0 の3つの機能の話でした。 C# 9.0 に今回追加されたのは以下の3つです。 Module Initializers Static anonymous functions Target-Typed Conditional Expression 今日は主にこの3つについて説明。 Module Initializers モジュール(exe (ア

                                                                      Visual Studio 16.7 & 16.8 Preview 1 リリース / C# 9.0 の新機能3つ(module initializers, static lambda, target-typed conditional)
                                                                    • neue cc - MagicPhysX - .NET用のクロスプラットフォーム物理エンジン

                                                                      MagicPhysXというライブラリを新しく公開しました!.NETで物理エンジンを動かすというもので、その名の通り、NVIDIA PhysX のC#バインディングとなっています。 Cysharp/MagicPhysX 使い道としては GUIアプリケーションの3D部分 自作ゲームエンジンへの物理エンジン組み込み ディープラーニングのためのシミュレーション リアルタイム通信におけるサーバーサイド物理 といったことが考えられます。 .NET用のPhysXバインディングは他にも存在しますが、C++/CLIでバインディングを生成している都合上Windowsでしか動かせなかったり、バージョンが最新ではない4.xベースだったりしますが、MagicPhysXは最新のPhysX 5ベースで、かつ、Windows, MacOS, Linuxの全てで動きます!(win-x64, osx-x64, osx-arm

                                                                      • Visual Studioの新しいソリューション形式slnx - kkamegawa's weblog

                                                                        先日Visual Studio 2022 17.0 Preview 3が公開されました。新しいプレビューが公開されると、プレビュー機能のダイアログ(今はタブになりましたが)を一通り見るのですが、気になる項目が増えていました。 もちろん有効にします(非推奨とか、古い互換性のための機能でない限り原則有効にします😉)。 Visual Studioのソリューションを選択して保存時にslnxが増えています。 読み込むときにも選択肢として増えています。何が違うのでしょう。 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.10.34804.81 MinimumVisualStudioVersion = 10.0.40219.1

                                                                        • ピックアップRoslyn: Improved Interpolated Strings

                                                                          string interplation の改善するって。 現行仕様 C# 6.0 から以下のようなコードで string.Format 相当のことができるようになったわけですが。 var s = $"({a}, {b})"; これは、以下のように展開されます。 var s = string.Format("({0}, {1})", a, b); これがパフォーマンス的にあんまりよろしくなくて… 特に、冒頭の提案ドキュメントにもある通り、ロギング用途との相性が最悪で、 ILoggerのメソッドがなかなか使いにくそうな感じの引数になっています。 void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> format

                                                                            ピックアップRoslyn: Improved Interpolated Strings
                                                                          • neue cc - 他言語がメインの場合のRustの活用法 - csbindgenによるC# x Rust FFI実践事例

                                                                            他言語がメインの場合のRustの活用法 - csbindgenによるC# x Rust FFI実践事例 2023-10-23 Rust.Tokyo 2023というRustのカンファレンスで、「他言語がメインの場合のRustの活用法 - csbindgenによるC# x Rust FFI実践事例」と題してcsbindgen周りの話をしてきました。 タイトルが若干かなり回りっくどい雰囲気になってしまいましたが、Rustのカンファレンスということで、あまりC#に寄り過ぎないように、という意識があったのですが、どうでしょう……? 会場での質問含めて何点かフォローアップを。 FFIとパフォーマンス Rustは速い!FFIは速い!ということが常に当てはまるわけでもなく、例えばGoのcgoはかなり遅いという話があったりします。Why cgo is slow @ CapitalGo 2018。このことは直

                                                                            • ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか

                                                                              また何件かまとめて、C# Language Design Meeting 議事録を紹介。 October 12th, 2020 October 14th, 2020 October 26st, 2020 主に、csharplang の運営方針に関する話と、こまごまとトリアージ話。 (この他に、 October 21st, 2020ではプライマリ コンストラクターの話があったり、 Meeting 議事録とは別に派生型の網羅性の話が出てたりするんですが、 またちょっと話が大きくなりそうなので別の回で改めて。) これの割と冒頭で話してるんですけども、csharplangで、Community Ambassador (コミュニティ大使)を設けようという話が出ていました。 (実際、ほぼ即日、何名か任命。) C# はオープンソース開発されているといっても、マイクロソフトの C# チームが責任を負ってど

                                                                                ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか
                                                                              • neue cc - NativeMemoryArray - .NET 6 APIをフル活用した2GB超えの巨大データを扱うライブラリ

                                                                                .NET 6 Advent Calendar 2021の12日の代理投稿となります。プレゼント付きですと!?BALMUDA The Brew STARBUCKS RESERVE LIMITED EDITIONが欲しいです! さて、先程NativeMemoryArrayという新しいライブラリを作成し、公開しました。.NET Standard 2.0でも動作しますが、全体的に .NET 6 の新API群(NativeMemory, Scatter/Gather I/O)を活かすための作りになっていますので、今回のAdvent Calendarにもピッタリ。実用性も、ある……!あります……!もちろんUnity版も用意してあります(NativeArrayと何が違うって?まぁ違うと言えば違います)。 GitHub - Cysharp/NativeMemoryArray C#には配列、特にbyte[]

                                                                                • ピックアップRoslyn 4/19: C# 9.0 機能の仕様ドキュメントいくつか

                                                                                  ここ1週間くらいで、C# 9.0 で入るであろう機能がちゃんとした仕様ドキュメントに起こされ始めました。 Add draft spec for C# pattern-matching changes. #3361 Add proposal for target-typed conditional expression. #3363 C# Language Design for April 13, 2020 (Roadmap for records) Init only proposal document #3367 パターン マッチング v3 パターン マッチングも3世代目になります。 最初 C# 7.0 に入ったころは単に「is がちょっと便利になった」、 「switch で型分岐ができるようになった」程度の機能でしたが、 3世代目ともなるとずいぶんいろいろなものが増えています。 詳細は

                                                                                    ピックアップRoslyn 4/19: C# 9.0 機能の仕様ドキュメントいくつか

                                                                                  新着記事