並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 102件

新着順 人気順

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

  • neue cc - TaskとValueTaskの使い分け、或いはValueTaskSupplementによる福音

    ValueTaskSupplementというライブラリを新しく作って公開しました! Cysharp/ValueTaskSupplement これは、ValueTaskにWhenAny, WhenAll, Lazyを追加するという代物で、それだけだとヘーそーなんだー、としか思えないと思われます。しかし、ValueTaskを使っていくと、めっちゃくちゃ欲しくなる機能になってます。ないと死ぬレベルで。 と、いうわけで、なんでこれが必要なのか、っていうところから説明します。 C# 5.0にasync/awaitが導入された当初はTaskしか存在しませんでした。標準APIのあらゆるメソッドにasyncメソッドを生やすなど、Microsoftの多大な努力により、C#はいち早く非同期時代を迎え、async/awaitは多用(濫用とも言う)されるようになりました。しかし、多用された結果、当初思ってたよりも

    • 「Visual Studio 2022」v17.8が公開 ~「GitHub Copilot」も一緒にセットアップ可能/C++ゲーム開発、F#、.NET/C#などで多くの機能改善

        「Visual Studio 2022」v17.8が公開 ~「GitHub Copilot」も一緒にセットアップ可能/C++ゲーム開発、F#、.NET/C#などで多くの機能改善
      • neue cc - AlterNats - ハイパフォーマンスな.NET PubSubクライアントと、その実装に見る.NET 6時代のSocketプログラミング最適化のTips、或いはMagicOnionを絡めたメタバース構築のアーキテクチャについて

        タイトルはここぞとばかりに全盛りにしてみました!今回NATSの.NETクライアント実装としてAlterNatsというライブラリを新しく作成し、公開しました。 github - Cysharp/AlterNats 公式の既存クライアントの3倍以上、StackExchange.RedisのPubSubと比較して5倍以上高速であり、通常のPubSubメソッドは全てゼロアロケーションです。 そもそもNATSとはなんぞやか、というと、クラウドネイティブなPubSubのミドルウェアです。Cloud Native Computing Foundationのincubating projectなので、それなりの知名度と実績はあります。 PubSubというと、特にC#だとRedisのPubSub機能で行うのが、StackExchange.Redisという実績あるライブラリもあるし、AWSやAzure、GCP

        • 「Visual Studio 2022」v17.4が公開 ~ARM64を正式にサポートした初の「Visual Studio」/更新をロールバックする機能なども導入

            「Visual Studio 2022」v17.4が公開 ~ARM64を正式にサポートした初の「Visual Studio」/更新をロールバックする機能なども導入
          • 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 を公開しました

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

                      • .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
                                        • 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といったように並んでいる構造で

                                            • 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

                                              • 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出力を行うような同居がとてもや

                                                      • Windows デスクトップアプリ開発と消えた Prism for Windows (Prism は消えてないよ) - かずきのBlog@hatena

                                                        これの続きです。 blog.okazuki.jp Prism for Windows(UWP) って書いてるけど MVVM アプリって何で作ったらいいんだっていう感じのコメントがついてるので事実だけを淡々と Prism は以下のプラットフォーム向けに提供されていた WPF Xamarin.Forms UWP これがこうなった WPF Xamarin.Forms 以上 UWP...? UI テクノロジーという意味では、今後開発リソースが注がれる Windows UI Library がメインストリームとなるという感じです。OSS で GitHub 上で開発されています。 ロードマップも出ています。 github.com 今まで Windows UI の機能強化は Windows 10 の一部として UWP をターゲットとして提供されてきていました。 つまり UI まわりの機能強化は UWP

                                                          Windows デスクトップアプリ開発と消えた Prism for Windows (Prism は消えてないよ) - かずきのBlog@hatena
                                                        • Visual Studio 16.3 & 16.4 Preview 1

                                                          (日本時間だと)昨晩深夜、.NET Conf 2019がありましたね。 キーノートはなんかgRPC一色だった感じが… 要は、ASP.NET Core 3.0 の目玉の1つが gRPC 対応なんですけども。 それを、 proto ファイルから ASP.NET のサーバーを作るデモ 同じ proto ファイルからクライアントコードを生成するデモ WinForms とか WPF が .NET Core で使えるようになった → WinForms のデモでも生成した gRPC クライアントを利用 Xamarin にも、hot リロード、hot デプロイ機能が入る(プレビュー) → Xamarin のデモでも同じ gRPC クライアントを利用 Blazor のデモでも同じ gRPC 生成した gRPC クライアントは C# 8.0 対応 → await foreach のデモに利用 という感じ。 ち

                                                            Visual Studio 16.3 & 16.4 Preview 1
                                                          • neue cc - Unite Tokyo 2019でC# Structの進化の話をしてきました

                                                            Unite Tokyo 2019にて、「Understanding C# Struct All Things」と題して登壇してきました!動画は後日Unity Learning Materialsに公開される予定です。 C#成分強めなので、Unityに馴染みのない人でも読んで楽しめる内容になっていると思います。とはいえ勿論、Uniteでのセッションであるということに納得してもらえるようUnity成分もきちんと取り入れています。というわけで、どちらの属性の人にも楽しんでいただければ! structに関する機能強化、実際めっちゃ多いんですが、それをカタログ的に延々と紹介してもつまらないので、そうしたカタログ紹介っぽさが出ないように気を配ってます。あと、あんましそういうのでは脳みそに入ってこないというのもあるので。 応用例的なところのものは、ないとつまらないよねーということで色々持ってきたのですが

                                                            • 【すぐに使える】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)
                                                                          • Paket(.NETのパッケージマネージャー)とFAKE(F#のMake)について - anti scroll

                                                                            調べてみたのですが、日本語の文献がほとんどなかったので、ここに記しておきます。 間違いなどありましたら、指摘していただけますと幸いです。 予備知識 PaketとFAKEの説明の前に、dotnetの予備知識などを少々。 管理単位「ソリューション」と「プロジェクト」 プロジェクトは個々に別々のプログラムを指します。例えばアプリケーション本体とかテストプログラムとか。 ソリューションは、プロジェクトをまとめた単位です。 monoアプリケーションとその実行について dotnetでは色々な*.exeを必要とすることが多いのですけど、*.exeの形式になってるのは大抵monoのアプリケーションです。 そういうプログラムは(少なくともMacでは)単体での実行ができないので(Windowsではどうか知らない)、次のようにmonoコマンドを経由する必要があります。 mono some_app.exe Pak

                                                                              Paket(.NETのパッケージマネージャー)とFAKE(F#のMake)について - anti scroll
                                                                            • マイクロソフト、「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