タグ

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

  • Uno Platform のススメ - Qiita

    はじめに この記事は Xamarin Advent Calendar 2019 の 8 日目の記事です。 最近ちょっとずつ注目されつつある (?) "Uno Platform" という .NET 向けの UI フレームワークの紹介記事です。 Uno Platform とは Uno Platform Uno Platform は .NET 向けのクロスプラットフォーム UI フレームワークです。 .NET のクロスプラットフォームフレームワークとしては "Xamarin.Forms" が Xamarin 自身からリリースされていることもあり、最も有名だとは思います。 Uno Platform の最大の特徴はなんといっても UWP の API 互換によるクロスプラットフォームを実現する という点に尽きます。ユーザー (アプリ開発者) としては UWP アプリを作れば (理想論でいえば) それを

    Uno Platform のススメ - Qiita
    griefworker
    griefworker 2019/12/09
    Uno が Skia Backend 対応したら、C# の Flutter みたいになり得そうだな。
  • UniTaskを使った話 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)

    この記事は Akatsuki Advent Calendar 2019 - Adventar 5日目の記事です。 はじめに UniTaskとは🤔🤔🤔 やりたいこと🤔 まず最初に考えたやり方🤔 Incremental Compilerが不要に!😇 とはいえ全部をいきなりUniTaskに置き換えるのは難しくない? UniTaskCompletionSource UniTaskの中身を解析してみよう🤔 PlayerLoopHelper PlayerLoopHelper.csの中身 ContinuationQueue PlayerLoopReusablePromiseBase UniTask IsCompleted Awaiter IAwaiter ICriticalNotifyCompletion 次に気になったこと どうやってAsyncUniTaskMethodBuilderを呼

    UniTaskを使った話 - Akatsuki Hackers Lab | 株式会社アカツキ(Akatsuki Inc.)
  • neue cc - .NET Core時代のT4によるC#のテキストテンプレート術

    C# Advent Calendar 2019用の記事となります。C# Advent Calendar 2019はその2もあって、そちらも埋まってるので大変めでたい。 さて、今回のテーマはT4で、この場合にやりたいのはソースコードジェネレートです。つまるところC#でC#を作る、ということをやりたい!そのためのツールがテンプレートエンジンです。.NETにおいてメジャーなテンプレートエンジンといえばRazorなわけですが、アレはASP.NET MVCのHTML用のViewのためのテンプレートエンジンなため、文法が全くソースコード生成に向いていません、完全にHTML特化なのです。また、利用のためのパイプラインもソースコード生成に全く向いていない(無理やりなんとか使おうとするRazorEngineといったプロジェクトもありますが……)ので、やめておいたほうが無難です。 では何を使えばいいのか、の答

  • HttpClient よりも HttpClientFactory を利用したほうが良いかも - 世界のやまさ

    .NET において REST API を呼び出す際、多くの方が HttpClient を使用すると思いますが、その時の注意点が帝国兵さんの Qiita で書かれています。 qiita.com この記事に書いてある通りで、 HTTP Client インスタンスをいちいち破棄して作成を繰り返していると、CLOSE_WAIT または TIME_WAIT 状態の SNAT ポートが増えてしまい、ポートが枯渇して通信ができなくなります。 具体的には hping3 で繰り返しリクエストを行っているのと同じ状態であると思います。 hping3 の使い方の具体例は宇田さんのサイトをご覧ください。 www.syuheiuda.com さて、 private static readonly HttpClient HttpClient; を使うのも良いと思いますが、 .NET Core 2.1 以降 であれば

    HttpClient よりも HttpClientFactory を利用したほうが良いかも - 世界のやまさ
  • 【Unite Tokyo 2019】Understanding C# Struct All Things

    2019/9/25-6に開催されたUnite Tokyo 2019の講演スライドです。 河合 宜文(株式会社Cysharp) こんな人におすすめ ・C#を極めたいエンジニア ・パフォーマンスに興味のあるエンジニア ・プログラミング言語マニア 受講者が得られる知見 ・structに関する深い知識 ・パフォーマンス向上のヒント ・C#の新しい文法と活用法 Unityのイベント資料はこちらから: https://www.slideshare.net/UnityTechnologiesJapan/clipboards Read less

    【Unite Tokyo 2019】Understanding C# Struct All Things
  • C# で null 許容型あれこれ - ぷろじぇくと、みすじら。

    Created at: 2019-09-25 .NET Core 3.0 のリリースとともに C# 8.0 がきて、null 許容型 (nullable reference types) を使えるようになったので使ってみたメモです。 未初期化だけど後で初期化するパターンコンストラクターではまだ初期化しないのだけど、いずれフレームワークから初期化するので API を利用する側はほぼ null を扱わない、けど内部の初期状態は null なのを許してほしいというケースはまあよくあります。Kotlin の lateinitTypeScript の definite assignment assertion みたいなやつですね。 C# ではズバリそれっぽいものはないので default! を初期値として代入しておけばよいです。 This file contains bidirectional

  • 今日からできる!簡単 .NET 高速化 Tips

    Event : Visual Studio Users Community Japan #1 Date : 2019/09/14 ソフトウェア/サービス開発において最も後回しにされるものの代表が「パフォーマンスの向上」です。C#/.NET の最大の武器は開発生産性ですが、C# 7.0 以降はパフォーマンス向上のための機能追加が多数行われています。いくつかのポイントを押さえることで実装時からより高速なコードを書くことができるようになります。 このドキュメントでは、そんなポイントとなる箇所をふんだんにお届けします。

    今日からできる!簡単 .NET 高速化 Tips
  • MasterMemory - Unityと.NET Coreのための読み取り専用インメモリデータベース

    Cy#の河合です。今回新しくオープンソースライブラリとして、マスターデータの管理用途を主眼に置いた、読み取り専用のインメモリデータベースを公開しました。 [GitHub – Cysharp/MasterMemory] 今までのゲーム開発の経験から、「省メモリ(インメモリということもあり使用メモリ量には気を使う」「高速なデータベースロード(構築に時間がかかるとゲームの起動速度に大きく影響する)」「高速な検索(ディクショナリのルックアップと同程度のクエリ)」の3点を重視して作りました。以下がベンチマークの結果となります。 MasterMemory、SQLite、LiteDB、RocksDBがインプロセス、Memcachedのみ別プロセスのマシン内通信による比較です。SQLite(ファイル読み込み型)の4700倍高速で、1クエリでのアロケーションはゼロです。また、保存時のファイルサイズも極小です

    MasterMemory - Unityと.NET Coreのための読み取り専用インメモリデータベース
  • neue cc - CIや実機でUnityのユニットテストを実行してSlackに通知するなどする

    前回(?)CircleCIUnityをテスト/ビルドする、或いは.unitypackageを作るまででは、ユニットテストに関する部分がうまく行ってなくて放置でした。放置でいっかな、と思ってたんですが、改めてユニットテストをCIでがっつり実行したい、というかIL2CPPのテストをがっつしやりたい。という切実な要望が私の中で発生したので(N回目)、改めて取り組んでみました。 さて、オフィシャルな(?)ユニットテストのコマンドラインの実行の口は、Writing and executing tests in Unity Test Runnerの最後の方のRunning from the command lineの節に書いてありました(コマンドライン引数のほうのマニュアルにはリンクすら張ってなかったので気づかなかった……!)。つまり、こんなふうにやればいい、と。 Unity.exe -runTes

    griefworker
    griefworker 2019/05/07
    RandomFixtureKitのエッジケースになり得る値だけを詰めるモードはライブラリ開発で助けられそう。
  • C# パフォーマンス改善に使える新しめの機能たち 7.0〜 - Qiita

    時代に合わせてバージョンアップを続け、モダンな言語もまだまだ彼の背中を追っている部分があると噂されたりしている言語、C#。 現状の利用シーンとして割と大きいめの Unity (ゲームエンジン) では、使えるC#のバージョンがぐいぐいっと上がりはじめて以降、そこそこ新しい書き方も認知されてきているようです。 しかし、個人的に注目している C#の新機能は、ショートハンドや関数型言語由来の機能よりもむしろ、C#自体のパフォーマンスを改善するような文法や標準ライブラリたちです。 ーーパフォーマンスを改善する言語機能って一体なんのことでしょう。 「C# なんて、ランタイムが勝手にJITで最適化した機械語にして走らせてくれるわけで、Unityの場合はc++トランスパイルされるわけで、べつにプログラマがミクロなチューニングとか意識しなくても、夜、寝る前とかに祈ったり寄付とかをしていれば、ランタイムをつ

    C# パフォーマンス改善に使える新しめの機能たち 7.0〜 - Qiita
  • MicroBatchFramework - クラウドネイティブ時代のC#バッチフレームワーク

    Cy#の河合です。昨年12月に、『MagicOnion』というライブラリのリリースを告知しました。今回、再びオープンソースライブラリとして、C#のためのCLI/Batchライブラリをリリースしました。 [GitHub – Cysharp/MicroBatchFramework] .NET CoreになってWindowsMacLinux問わずクロスプラットフォームなアプリケーション開発環境として機能するようになったC#ですが、そして機能的には十分揃っているのですが、ちょっと気の利いたフレームワークは意外と欠けているところがあります。バッチ・コマンドラインアプリ。というと地味なトピックスですが、ゆえに基機能以上のサポートがなかったりします。しかし、「C#の可能性を切り開いていく」という理念を掲げるCy#としては、派手・地味を問わず、現状のC#に欠けているものを埋めていくことで、C#がアプ

    MicroBatchFramework - クラウドネイティブ時代のC#バッチフレームワーク
  • .NET Core で Generic Host を利用する - tech.guitarrapc.cóm

    ASP.NET Core 2.1 で追加された Generic Host (汎用ホスト) は、non-Web App アプリの作成をASP.NET Core と似た書き心地で提供します。 今後のスタンダードとなる見込みですが、どのようにして Generic Hostを利用するのか見てみましょう。 ※ 社内向けブログの転載なのでシリーズ化します。 目次 目次 TL;DR; Generic Host とは WebHost (ASP.NET Core) との違い Generic Host を使う目的 Configure 処理の追加 書き心地 サービス処理をDIする まとめ Tips IHostBuilder.RunConsoleAsync, IHostBuilder.Start, Host.StartAsync, IHost.RunAsync の違い ASP.NET Core 3.0ではGene

    .NET Core で Generic Host を利用する - tech.guitarrapc.cóm
  • Kubernetesでステートフルなゲームサーバを動かした思い出

    とあるスマートフォン向けMMORPGプロジェクトで、アプリケーションサーバをほぼすべてGKE(Google Kubernetes Engine)に乗っけて動かしていました。 このゲームは、モバイル向けながら、複数プレイヤ間でそこそこリアルタイム性の高い同時プレイができるものでした。同じフィールドを誰かが歩けば、自分が見ている画面でもほぼ同時にそいつが歩いて横切っていく、同じ敵と皆で一緒に戦えば、誰かが繰り出した攻撃が参加者全員の画面に即同期される、もちろんチャットもできる、そんな具合です。今ではさほど珍しくないのかもしれませんが、PCのオンラインゲームのような機能を搭載した、リアルタイム性の高いモバイルゲームでした。 さて、こうなってくると、オーソドックスなWebサーバのような、HTTP/1でリクエスト/リプライを捌く、というサーバだけでは要件を満たすことができません。 複数プレイヤ間で

    Kubernetesでステートフルなゲームサーバを動かした思い出
    griefworker
    griefworker 2019/04/09
    C# + .NET Core + Linux + GKE(Kubernetes)
  • C# と Polly を使って回復力の高いアプリケーションを書く - しばやん雑記

    昔のように高い信頼性を持つオンプレのハードウェア上で動いていたアプリケーションとは異なり、昨今のクラウド上で動いているアプリケーションは障害が発生する前提でコードを書く必要があります。クラウドのハードウェアは毎日どこかで壊れるので、それを前提にソフトウェアで高可用性を担保しているわけです。 最近は Microservices の流行もあって 1 つのアプリケーションを構成するコンポーネントが増えているため、実装によっては 1 つのコンポーネントで発生した障害が全体に波及してしまい、アプリケーション全体が停止してしまうこともあり得ます。例としてよく挙げられるのがリコメンド周りでしょう、リコメンドサービスの障害でアプリケーション全体が落ちてはいけないのです。 今のアプリケーションは障害時には敢えてサービスレベルを下げてでも、全体としての可用性を維持することが必要です。そして復旧時には人の介入な

    C# と Polly を使って回復力の高いアプリケーションを書く - しばやん雑記
  • neue cc - 2018年を振り返る

    毎年恒例ということで、今年も振り返ります。だいたい30日に書いてるのですが、理由は12月30日は私の誕生日なので色々ちょうどよいかな、と。いよいよ35歳なので、例のあれ、35年定年説になりました。そのへんどうでもいい外れ値をひた走ってるので一般論はあんま関係ないんですが、体力は落ちてる実感ありますね!肥ったし。文章はどんどんてきとーになってくし。 と、いうわけで、今年は客観的には激動の年です。会社辞めて会社作って会社作って。私生活でも色々あり、イベントが多くて中々どうして落ち着かなかった年です。そのため成果という点では不完全燃焼が否めないですね、どうしても集中しきれないし時間も上手く捻出できないし。GitHubの草生やしで考えれば、もう全然すっかすっか。その中でUniRx.AsyncやMagicOnion2など、今年もちゃんと大きめの成果を出せたのは、意地です。特にUniRx.Asyncの

  • neue cc - MagicOnion v1 -> v2リブート, gRPCによる.NET Core/Unity用ネットワークエンジン

    先にCygames Engineers' BlogでMagicOnion – C#による .NET Core/Unity 用のリアルタイム通信フレームワークとしてリリースを出しましたが、改めまして、MagicOnionというフレームワークを正式公開しました。 GitHub - Cysharp/MagicOnion MagicOnionはAPI通信系とリアルタイム通信系を一つのフレームワークで賄う、というコンセプトを元に、前職のグラニで「黒騎士と白の魔王」の開発において必要に迫られて捻り出されたものでした。 で、今更気づいたのがMagicOnionって正式リリースしてなかったんですよね、このブログでも↑のような形でしか触れていなくて、公式ドキュメントも貧弱な謎フレームワークだったという。今回Ver2って言ってますが、その前はVer0.5でしたし。まぁここでは便宜的にv1と呼びます。 何故に正

  • neue cc - UniTask(UniRx.Async)から見るasync/awaitの未来

    C# Advent Calendar 2018大遅刻会です。間に合った。間に合ってない。ごめんなさい……。今回ネタとして、改めてコード生成に関して、去年は「動的」な手法を解説した - Introduction to the pragmatic IL via C#ので、現代的な「静的」な手法について説明してみよう、と考えていたのですが、そういえばもう一つ大遅刻がありました。 7月にUniTask - Unity + async/awaitの完全でハイパフォーマンスな統合という記事を出して、リリースしたUniTaskですが、その後もちょこちょこと更新をしていて、内部実装含め当初よりもかなり機能強化されています。といった諸々を含めて、Unity 非同期完全に理解した勉強会で話してきました。 9月!更新内容の告知もしてなければ、この発表のフォローアップもしてない!最近はこうした文章仕事がめっちゃ遅

  • 【インタビュー】C#の専門集団として設立されたCygamesの技術開発子会社Cysharp…「C#」第一人者である河合宜文社長に設立の目的や事業内容を訊く | Social Game Info

    【インタビュー】C#の専門集団として設立されたCygamesの技術開発子会社Cysharp…「C#」第一人者である河合宜文社長に設立の目的や事業内容を訊く 2018年10月30日、Cygamesがゲーム関連コンテンツの企画・開発および技術コンサルティングを行う子会社「Cysharp」の設立を発表(関連記事)した。 Cysharpは、C#を中心としたゲーム開発の技術開発とコンサルティング業務などを主な事業内容とする技術開発子会社。代表取締役社長として就任したのは、C#を用いた開発の第一人者である河合宜文氏だ。 C#は、マイクロソフトが開発したプログラミング言語。ゲームエンジンUnityでも採用されているため、ゲーム開発において使用する場面が近年増加している。また、モバイルでのネットワーク環境の向上で、高性能なサーバー技術が要求されている中、パフォーマンスと開発効率の両立が可能な言語としてと期

    【インタビュー】C#の専門集団として設立されたCygamesの技術開発子会社Cysharp…「C#」第一人者である河合宜文社長に設立の目的や事業内容を訊く | Social Game Info
  • MagicOnion – C#による .NET Core/Unity 用のリアルタイム通信フレームワーク | Cygames Engineers' Blog

    Cy#の河合です。Cy#は今年の9月に設立されたばかりの会社で、その名の通りC#関連の開発を行っていきます。今回はCy#よりオープンソースライブラリとして、Unity向けのリアルタイム通信/API通信統合ライブラリをリリースしました。 GitHub – cysharp/MagicOnion もともと2年前に最初に公開し、実際にリリースされたモバイルゲームでも使用していたものですが、今回リアルタイム通信向け機能をよりブラッシュアップして、正式公開としました。そういう点では、”既に実績がある”とも言えます。今回より新しいスタートということで、バージョン2.0です。 基的な機能は サーバークライアント間のストリーミングRPCを提供します。サーバー側をC#、クライアント側もC#で実装し、メッセージのフォーマットはLZ4圧縮されたMessagePack、通信はgRPCによるHTTP/2を用いていま

    MagicOnion – C#による .NET Core/Unity 用のリアルタイム通信フレームワーク | Cygames Engineers' Blog
  • Directory.Build.* | ++C++; // 未確認飛行 C ブログ

    なんか、Gist に書き捨ててそのまま放置なものが結構増えてきたので、 しばらくそれを元にブログに起こしていこうかという気分に。 ここ2年くらい、.NET Core や C# のテーマの1つがパフォーマンス改善だったせいもあって、だいぶ Unsafe でだいぶきわどい最適化の話が多めになるとは思います… (ちなみに、今日のは全然その系統ではなく、きわどさもない話。) Visual Studio 2017 の頃から、所定のフォルダー以下にあるすべての csproj に対して掛かる共通設定を記述できるようになりました。以下の名前のファイルを置くことで、その内容が自動的にcsprojにインポートされます。 (dotnetコマンドでのビルドにも有効です。) Directory.Build.props … csprojの先頭にインポートされる Directory.Build.targets … cs

    Directory.Build.* | ++C++; // 未確認飛行 C ブログ
    griefworker
    griefworker 2018/12/11
    パッケージのバージョンをまとめて上げるときに使えそう。