TIOBE Softwareが発表したプログラミング言語の人気ランキング「TIOBEインデックス」の2023月10月版では、JavaとC#のレーティングが1.2ポイントのわずかな差に縮まっている。 ソフトウェア品質の評価と追跡を手掛けるTIOBE Softwareは、2023年10月版の「TIOBEプログラミングコミュニティーインデックス」(通称「TIOBEインデックス」)を発表した。 TIOBEインデックスはプログラミング言語の人気度を示すランキングで、同社が毎月更新している。2023年10月のランキングでは「Python」が14.82%で首位を維持した。2位~5位は「C」(12.08%)、「C++」(10.67%)、「Java」(8.92%)、「C#」(7.71%)だった。 Python、C、C#は、それぞれ長期にわたって首位、2位、5位を占めている。C++は6月にJavaを抜いて3位
登壇版 ConsoleFormatter HttpLogging ConsoleFormatterOptions.IncludeScopes W3C Trace Context ExceptionHandler DbDataSource HttpClientFactory まとめ References 登壇版 .NET ラボ 2023/07/22 で発表した資料です。 スライドはこちら。 スライドはアニメーション豊かなので、スライドと本投稿合わせながら見るといいかもです。 登壇のアーカイブはこちら。 30 分程度です。 ConsoleFormatter ログはだいた標準出力、まぁコンソールに出力しますよね。 そしてコンソールにログを出力するといっても、当然ながら複数のフォーマットがあります。 C# で現在ロガーとしてデファクト的に使われている Microsoft.Extensions.Lo
CSS のカスケードレイヤー `@layer` を使ってスタイルを階層化して管理する 2024.06.30 CSS の `@layer` ルールは、カスケードレイヤーを宣言するために使用されます。カスケードレイヤーとは、スタイルの優先度をレイヤー(階層)に分けて管理する仕組みです。`@layer` ルールを使用することでスタイルの記述順や詳細度に関係なくスタイルを宣言できるため、新しい形式の CSS 設計を実現することができます。 CSS の @layer ルールは、カスケードレイヤーを宣言するために使用されます。カスケードレイヤーとは、スタイルの優先度をレイヤー(階層)に分けて管理する仕組みです。@layer ルールを使用することでスタイルの記述順や詳細度に関係なくスタイルを宣言できるため、新しい形式の CSS 設計を実現できます。 @layer ルールは CSS カスケーディングレベル
Visual Studio Code(以下、VS Code)を今よりもっと使いこなしたい! そんな人にお勧めの解説書を紹介します。 VS Codeの最大の特徴は、高いカスタマイズ性と豊富な機能拡張。本書では使用する言語に適した開発環境の構築方法、UIや設定のカスタマイズ方法、特にお勧めの機能拡張を軸に、VS Codeを使いこなす方法を解説したものです。 著者の上田 裕己氏(@ikuyadeu0513)はVisual Studio Codeのコントリビュータで、VS Codeの機能拡張なども開発されています。 本書はそんな著者によるVS Codeの実践的な操作方法、言語ごとの開発環境の構築、拡張機能など、幅広い内容が網羅された一冊です。
米Microsoftは8月30日(現地時間)、2016年から提供している「Visual Studio for Mac」を終了すると発表した。最新版(17.6)のサポートは2024年8月末まで続ける。 Microsoftは「リソースの方向を転換」し、「Visual StudioとVS Code(Visual Studio Code)をクロスプラットフォーム開発向けに最適化することに重点を置く」としている。 VS Codeは、Windows、Linux、macOSに対応するクロスプラットフォームのエディタだ。Microsoftは今月初頭、Unity拡張機能のプレビュー版をリリースしている。 MicrosoftはVisual Studio for Macのユーザーに、VS Codeの利用を勧めている。あるいは、MacのVでWindowsを起動し、そこでのVisual Studio IDEというオ
えーあーー みなさん聞こえますでしょうか。この記事はC# アドベントカレンダー17日めのために書かれました。 いくつかみかけた、async/await と java loom/goroutine的なものを比較する議論に興味があり、少し追ってみた感想です。実装まで深く調べられてません。 TL;DR Green Thread Experiment Results #2398 .NET の runtimelabにて、async/awaitの代替としてのグリーンスレッドを検証した結果が公開されていたが、今後も async/await でいくという結論になっている。 JVM (Java) は対象的に、コードの書き方をなにも変えなくてもランタイムが自動的にI/Oを非同期にしてくれる夢のVirtual Thread を導入した。 Rust界隈では「Why async/await ? why? why?
Googleによって開発され、オープンソース化された通信技術「gRPC」は、マイクロサービスアーキテクチャにおけるサービス間の通信手段としてはもとより、モバイルアプリケーションがサービスにアクセスする際のインタフェースとしても注目されています。 本eBookでは、連載「スキマ時間にこっそり学ぶ『gRPC』入門」全8回を収録。そもそもRPC(Remote Procedure Call)とはどのような通信技術なのか、gRPC誕生の背景や、gRPCの特徴、利点を解説しています。 第1回以降はC#、Python、Node.js、KotlinとAndroid、SwiftとiOS、Goとgrpc-gatewayなどさまざまなプログラミング言語、プラットフォームを取り上げ、gRPCサーバとクライアントを実装する方法や、サーバストリーミング、クライアントストリーミングを実装する方法を、サンプルコードととも
Building new functionality, writing unit tests, and learning new technologies has never been easier or more fun. Today we are announcing the retirement of the Visual Studio for Mac IDE. Visual Studio for Mac 17.6 will continue to be supported for another 12 months, until August 31st, 2024, with servicing updates for security issues and updated platforms from Apple. While the decision has been made
今回の内容 C#向けの新しいReactiveExtensions(Rx)ライブラリ「R3」について、従来のRxとの変更点を紹介します。 R3について リポジトリ R3 開発元はUniTaskやMagicOnionなどを公開しているCysharp社であり、メインの開発者はUniRxの作者でもあるneuecc氏です。 どんなライブラリか 「R3」はReactiveExtensions(Rx)を現代に合わせてより洗練した形に再定義/再実装した、C#用のライブラリです。 というのも、Rxは10年以上前に登場した概念であり、当時はまだ非同期処理に対するベストプラクティスが模索されていたタイミングでした。 そのためRxは「LINQをEventにも適用できる」という側面も持ちつつ「非同期処理にも用いることができる」という2つの側面をもった、少しややこしいライブラリとして登場しました。 そして2024年現
コードアナライザーとは 初心者がやりがちな 「良くないC#の書き方」を教えてくれるツール です! 「良くない」とはこういうのです! 遅い バグりやすい 危ない(セキュリティリスク) 書き方がバラバラ あー、それ!初心者が最初に教えてほしいやつ! しかも!教えてくれるだけじゃなくて自動で直してくれます…!!(リファクタリング) (一部だけだけど…) タダで最初から使える .NET SDKをインストールすると使えるようになります。 しかも無料! 無料ってことはつまり…タダ、ってコト!? VS Codeでも使える 「初心者は本家Visual Studio(特にVS Comunity)を使おう」って言われるのですが、 Visual Studio Code (VS Code) + C# Dev Kit拡張でもコードアナライザーは使えます。 本家VSはクソデカでインストールも遅いので、軽めのVS Co
UTF8文字列生成を最適化するライブラリ Utf8StringInterpolation を公開しました 2023-10-13 Utf8StringInterpolationという新しいライブラリを公開しました!UTF8文字列の生成と書き込みに特化していて、動作をカスタマイズした文字列補間式によるC#コンパイラの機能を活用した生成と、StringBuilder的な連続的な書き込みの両方をサポートします。 Cysharp/Utf8StringInterpolation 基本的な流れはこんな感じで、Stringを生成するのと同じように、UTF8を生成/書き込みできます。 using Utf8StringInterpolation; // Create UTF8 encoded string directly(without encoding). byte[] utf8 = Utf8String
プログラミング指南 - Code Knowledge ゲーム制作に関するプログラミング等を主に書き溜めていきます。ただ、どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。 今回は、リクエストがあった VS2022 の C# だけでゲームの画面表示を、どうやって実装するかの手順説明となります。簡単ではありますが、細かく説明したために少し記事が長くなっています。まあ、DirectX 使うという選択肢とかもあるんですが、簡単なゲームなら C# .NET のそのまんまでもさほど問題にはならないですね。今時の PC 能力は本当に凄いと思います。 Visual Studio 2022 にて Windows フォームアプリで新しいプロジェクトを作成します。プロジェクト名はここでは GameTest
ゆで卵を食べるときは塩をかけるのと同じように、サーバを書くときはストラクチャードロギングをするのが当たり前といった状況になった昨今。世界のロガーたちはキー/バリュー形式の構造化データを出力すべく、その用途に特化したインターフェイスを獲得するに至っている。 一方、プログラミング言語やフレームワークによってはこの辺のサポートはけっこうまちまちで、人によってストラクチャードロギングに対しての理解度やロガーへの要求水準はけっこう違っているようである。 私がサーバを書く仕事を始めた頃なんかは、使っていたウェッブフレームワークワークはさも当然のように人間にとって読みやすく整形された文字列をログに吐いた。ほかにオプションはなかった。「ふーん。そんなもんかな」と思いながら、ログを上から下に読んでいたが、しかしこれは一件のログレコードが改行されまくっていたので、キーワードでgrepするだけで当然のようにぶっ
はじめに .NET 8 が先日リリースされて .NET Conf 2023 のセッション動画も YouTube の dotnet チャンネルに投降されています。 .NET Conf 2023 のプレイリストで全て確認できるので興味があるやつだけでも見てみると楽しいのでお勧めです。 今回は、その動画の中の Full stack web UI with Blazor in .NET 8 | .NET Conf 2023 の内容を解説する形で記事を書いていこうと思います。後半の認証や CRUD のページを自動生成してくれる機能については別途余裕があれば書こうと思います。また、記事内の図の多くは、この動画内のものから引用しています。 細かい新機能は色々ありますが、大体の大枠はこのセッションに詰まっているのでとても勉強になります。 Blazor Blazor ですが、ASP.NET Core に完全
マイクロソフト、UIコンポーネントにAI搭載。UIが賢く振る舞う「.NET Smart Components」実験的公開 マイクロソフトはUIコンポーネントにAIを搭載することで、ユーザーの意図をくみ取って賢く振る舞ってくれる「.NET Smart Components」を実験的に公開しました。 入力内容をAIが自動的に適切なフィールドへペースト .NET Smart Componentsがどのように賢く振る舞ってくれるのか、デモ動画からの引用で紹介します。 従来のUIコンポーネントでは、例えば「苗字」「名前」「電話番号」「郵便番号」「県名」「町名」「番地」などにフィールドが分かれていれば、人間がフィールドに合わせて適切な内容を入力する必要があります。
Scott Wlaschin氏は著書である"Domain Modeling Made Functional" (和訳本なし)に関する講演で、関数型言語を用いてドメインモデルを定義すると、テストを書く必要がなく、たくさんのフラグをチェックする必要もないと説明しています。 彼はこの方法を「自己文書化」と「コンパイル時のユニットテスト」と呼んでいます。 この話では、彼の言う「コンパイル時のユニットテスト」が具体的にどのようなものなのか、そしてこの方法を使うことでテストがどれほど効率的になるのかを扱います。ただし、ドメイン駆動開発の定義やC#やF#の詳細な文法については説明しません。 https://zenn.dev/jtechjapan_pub/articles/d4e1dacb6f00a2 こちらのブログで練習で話したセッションなども見ることが可能です。
Visual studio code tunnel Introduction Since July 2023, Microsoft is offering the perfect reverse shell, embedded inside Visual Studio Code, a widely used development tool. With just a few clicks, any user with a github account can share their visual studio desktop on the web. VS code tunnel is almost considered a lolbin (Living Of the Land Binary). I am so glad that my users now have the ability
Turing株式会社のUXチームでインターンをしている東大4年の三輪です。 自動運転のUXを向上させるため、UXチームでは自動運転の「可視化」ソフトウェアの開発に取り組んでいます。 このソフトウェアはTuringが販売する車のディスプレイに搭載される予定です。AIが認識している世界をユーザにも見える形で示すことで、ユーザは自動運転AIの振る舞いをよりよく把握することができるようになります。 画面は開発中のものです 可視化ソフトウェアは、自動運転AIの出力を受け取り、解釈し、Unity上で描画します。この際、自動運転AIと可視化ソフトウェアの間の通信はgRPCで行うことになっています。しかし、Unity上でのgRPCはさまざまな事情でやや複雑な構成を取る必要があります。 この記事では、UnityでgRPCサーバを実装するステップを解説します。 gRPC gRPCはRPC(Remote Pro
ユーザーコードでは Task/ValueTask (ジェネリック版含む) を直接返すことが可能の場合でも原則として非同期メソッドにして await することをおすすめします。 原則として、というのはこの記事で紹介するようなポイントを理解した上で最適化のために行うのは良いのですが、ユーザーコードでは落とし穴にハマるのを避けるためにほとんどのケースで素直に非同期メソッドにした方がよい、という話です。 Task/ValueTask を直接返す、返さないとは そもそも Task/ValueTask をそのまま返すコードというのはどういうものかというと、次のようなコードです。 public async Task Main() => await NantokaAsync(); public ValueTask NantokaAsync() { // 非同期を必要としない WriteAsync を呼び出
C#のコレクションの話です. どうも特に理由なくList<T>を漠然と使うようなコードをまま見るので,コレクション型の使い分けについて書いていきます. TL;DR コレクション型には様々な種類があり,それそれに違った利点があるので,何でもList<T>を使うのではなく場面に合ったものを使おうね! List<T>が適している場合 List<T>の一番の強みは,配列のようにインデックスでアクセスできることです.ご存知の通り,list[2]のような書き方でn番目の要素を取り出すことができます.この順番は勝手に変わったりしないので,順番に意味がある場合にも使えます. var numList = new List<string>(){ "ぜろ", "いち", "に" }; var item = numList[2]; // "に" また,要素の中からランダムに1つ選ぶような処理でもよく使われます.0
はじめに 個人的にはやめろとか思うのですが、よくバックエンドのロジックで、こんな風なのを毎回実行しているコードを見かけます。 model.GetType().GetProperty("Name")?.SetValue(model, "aaa"); 以下のことを思います。 GetProperty は毎回取得する必要がない、 リフレクションだから遅い。 素直にName="aaa" として静的コード実行したほうが早い。 せめて式木でキャッシュしてください。 1個WebApiとかで、1個の要求として考えたらたらたいしたことないけどサーバー全体して考えて、かつ共通である程度のロジックから呼び出せれているなら早く終わるコードの方がよい。 .NET5 とか.NET 6とかでリフレクション速度改善されているなんて声も聴きベンチマークをしてみました。 ※2023/11/12 追記各Runtimeごとの性能を
導入 TwitterのTLでヤスハラユウジさんのポッドキャストが流れてきたので聞いてみました。 voicy.jp 「ゲームプログラミングでは例外処理の実装は不要なのでは?」というお題で、興味深く拝聴しました。7分弱の音源なのでみなさんも是非お聞きください。 内容について直接の意見はありません。土屋もUnityでコード書いている時にtry-catchを書く事は無いと思います。秒間60フレームで処理してる時にメモリ確保に失敗して例外が送出された時、対応しようがあるとはちょっと想像できません(例外処理してもしなくてもアプリは落ちるんじゃないかと思います)。 ただ、「try-catchを書かない事」と「例外処理をしない事」は別の話です。try-catchは例外処理という機構の一部に過ぎず、我々ゲームプログラマも日常的に例外処理コードを書いているんだよという話を書いておこうと思います。 例外処理≒実
ConsoleAppFramework v5 - ゼロオーバーヘッド・Native AOT対応のC#用CLIフレームワーク 2024-06-13 ConsoleAppFrameworkの完全に新しいバージョンをリリースしました。完全に設計しなおして実装も完全に作り直された、何もかもが新しいフレームワークになっています。設計指針として「Zero Dependency, Zero Overhead, Zero Reflection, Zero Allocation, AOT Safe」を掲げ、もちろん、他を圧倒的に引き離すパフォーマンスを実現しています。 これはコールドスタートアップ・ウォームアップなしでのベンチマークとなっていて、CLIアプリケーションでの実際での利用に最も即したものだと考えています。System.CommandLineと比較すれば280倍!メモリアロケーション量もほかのフレ
Redis互換の超高速インメモリデータストア「Garnet」にC# CustomCommandを実装してコマンドを拡張する 2024-03-19 MicrosoftからIntroducing Garnet – an open-source, next-generation, faster cache-store for accelerating applications and servicesという記事が今日公開されて、Garnetという新しいインメモリデータストアがOSSとして公開されました。Microsoft ResearchでFASTERを手掛けていたチームによるもので、FASTERはC#実装の高速なキーバリューストアでした。今回のGarnetはその発展形のようなもので、FASTERベースのストレージと、Redis互換のプロトコルによる、インメモリデータストアになっています。詳しく
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く