ねののお庭。

かりかりもふもふ。

【C#】マルチスレッド関連操作の詳説。

この記事は Qiita C# Advent Calendar 2021 23日目の記事です。 マルチスレッドプログラミングにおける問題。 原子性 コンパイラによる命令の並び替え メモリバリアについて acquire / release acquire / releaseの取り扱いづらさ sequential consistency C#…

【C#】ConsoleアプリがMain関数の終了と同時に終了しないようにする。

タイトルが分かりずらいですね、はい。 コンソールアプリ、Main関数が終了すると同時にアプリは終了します。 それはそう、当たり前。 なんですが裏のスレッドでなんか動いてるからアプリは落ちてほしくない、けどMainは終わっとるし別にawaitするべきものも…

【C#】ASP.NET CoreでIdentityやEFを使わずに、googleなどの外部プロバイダによるOAuthを利用する方法。

ASP.NET Coreにおける認証。 googleを外部プロバイダとしてOAuthを利用する。 準備 サービスの設定 AddAuthentication() AddCookie() / AddGoogle() http pipeline Challenge / Sign in / Sign out Authorize 全体の流れ まとめ。 References なんでこんなの…

Open3Dでlookatするためのextrinsic matrixの作り方、及びextrinsic matrix (CG的にはview matrix)の解釈。

Open3dでは標準で任意の視点からのlookatが出来ない。 Open3dでは標準で任意の視点からのlookatが出来ません。ViewControlにset_lookatという関数生えてるんですが、残念ながらGUIでマウスぐりぐりしたときにlookatする点を設定できるだけで、特定の座標から…

【C#】Source Generatorを使ったSignalR Clinetに強く型付けするためのライブラリをリリースしました、という話。

タイトルの通りなんですが、C# 9で導入された新機能であるSource Generatorを使った、SignalR Clinetに強く型付けするためのライブラリをリリースしました。 github.com SignalRってなんぞ、っていうと、リアルタイム通信用のライブラリ。Socket.IOと似たよ…

【CV】深層学習ベースの3D Reconstruction / Completionの論文紹介。

深層学習ベースの3D Reconstruction / Completionの手法およびデータセットの紹介スライド。 ラボ内向けに作ったんですが、結構気合入れて作ったのでパブリックにしておきます。 紹介してる論文たちは以下の通り。 データセット NYU (ECCV 2012) ShapeNet (arxi…

【VSCode】踏み台サーバ越しのリモートサーバ内で動いているDockerコンテナにVSCodeをアタッチする。

欲求としては以下みたいな感じ。 自分は今まではただ単にVSCodeのRemote SSH使ってました。Remote SSHは~/.ssh/configから設定読み込んで上の図の作業環境まで一発で繋いでくれるので楽です。 marketplace.visualstudio.com 今回は繋ぎたい対象がコンテナな…

【工作】画面共有した際にニコニコみたいにコメント流すアプリを作ってみた。

画面共有した際にニコニコみたいにコメント流すアプリケーション作ってみました。 アプリケーション名はReaction is All You Need. を略してRaynです。 画面共有している人はクライアントアプリのダウンロードが必須ですが、視聴者側はブラウザで完結します…

Windowsでputtyを使わずにX11 Forwardingをする。

リモートサーバで3Dモデルの可視化~やらなんやらしたのを手元のwindowsマシンでも確認したい。 3Dモデル単体とかならThree.jsとか叩いてブラウザで見たりしてもいいのだけど(実際昔はそうした)、描画したいものが複雑だったり、OSSに乗っかってしまいたかっ…

【C#】DapperでGuidをBINARY(16)に対応させる。

C#のGuidは16バイトです。なので個人的にはDBにも16バイトのまま入ってほしいところ。 なのでBINARY(16)とかでDBのテーブルを作るわけです。 が、DapperはデフォルトでGuidを文字列に変換するため、Guidに対応するカラムの型をBINARY(16)で作ったテーブルと…

【C#】int[]とかfloat[]をbyte[]にcastしたい(もしくはその逆)。

C++だとこんな感じで簡単にint配列をbyte(char)配列として取り扱うことができます。 int* intArray = new int[2]; intArray[0] = -1; //32ビット全部1が立つ intArray[1] = 2; for(int i = 0; i < 2; i++) { cout << intArray[i] << endl; } cout << "======…

2020振り返り。

多くの人が書いてるから私も書くか~という年越し60分前。 振り返りブログとか初めて。 学業ないし研究とか。 一応ACM MM Asia通ったし、まぁ最低限度はできたのかなぁ、という感じ。単一の食事RGB画像から食事(食品+食器)と食器の三次元形状を復元して、ご…

【C#】配列とかのシーケンスからn番目に小さい/大きい値を取得する。

シーケンスからn番目に小さい/大きい値を効率よく取得するにはどうすればいいのかなー。という話。 C++だとstd::nth_elementって関数が標準であって、n番目の値とか比較的簡単に効率的な実装で求めることができます。 C#...というか多くの言語で標準ライブラ…

UnityでgRPC使う時の一連の流れとか。

はい、素でgRPCのデイリービルドからUnity用のzip落としてきて、Unityに突っ込んでも動きません。 やっかいな。。。 Unity側でgRPC使えるようにするための一連の流れを説明して、動作を確かめるべくサーバ側(ASP.NET Core)も用意します。 Unity側 Unity用の…

リモートでの開発環境のあれこれ。

大学とかの計算資源は基本的にssh張っていろいろするので、ローカルで開発するのとは勝手が違います。 あと更に権限がいろいろないのでそんなに好き勝手はできません。 なのでいろいろ便利手段を書いておきます。(TAしてる授業向けですが) ssh先でサーバー立…

C#での非同期メソッドの分析。

C#

Dissecting the async methods in C# Async method internals 非同期メソッドを手動で分解する Async machinery The original method The state machine 1. “Hot path” optimization 2.Error handling How different pieces are glued together? Execution C…

Android(Oculus Quest)向けにlibrealsenseをビルドするときに引っかかったことと解決方法。

RealSenseをOculus Questに合体させるためにlibrealsenseをビルドしてたら2箇所かコケたのでメモを。 Android事情なんもわからんマン向け。 基本的にはlibrealsenseのissueに書いてあるので、書いてある通りビルドしつつ設定しておけばOKなのですが。 github…

Pythonと仮想Webカメラを使ってGoogleハングアウトとかに任意の画像を流す。

デスクトップで変換してGoogleハングアウトでMBPに流してる。 コロナことCOVID-19のせいで、ZoomやらGoogleハングアウトやらそのあたりのサービスがよく使われるようになりました。 でWebカメラなんかから画像を垂れ流すわけですが、垂れ流す画像, 自分でプ…

Rider(Mac)でgRPCのprotoファイルから生成されたC#スクリプトの補完が効かなかったりした件。

Riderのほうにもこんな感じのissueが存在していたで問題は認識されてるっぽい。2019.3になれば普通に解決するのかなぁ。(問題にぶつかったの2019.2です) C#でgRPCのため、protoファイルからC#のテンプレートを生成して参照するため、 Grpc.Toolsパッケージを…

3Dモデルの体積を求める。(C#のライブラリ/CLIアプリ付き)

最近3Dスキャンとかで3Dモデル吐き出すとかありますよね。まぁあるんです。あったんです。 でこれらのモデルの体積がほしいなーと思っても、複雑な形状のmeshの体積を求めるのは地味に難しいです。ぱっとアルゴリズム思いつく人はきっと数学に慣れ親しんでい…

ASP.NET CoreでWebSocketを使ってチャットを作ってみる。

双方向通信大事。 というわけでASP.NET CoreでWebSocketを使ったチャットのサンプル作りました。 でなんでこんなことやっているかというと、msのドキュメントに書いてあるあるやつ だと自分が送信したものに対して自分に返ってくるだけで双方向通信生かされ…

ASP.NET CoreなどのサーバーサイドC#におけるasync/awaitについて。

クライアントサイドでasync/await利用するときってだいたいメインスレッドで長々計算するとUI固まってアカンので別のスレッドでスレッド回すぜ!っていっているケースが多いと思います。 そのノリでサーバサイドのC#を書くと、疑問にぶち当たって、 別にサー…

VSCodeのSSH FS拡張がうまく動かない時にハマったこと。

最近サーバ側で作業することも多かったのですが、vimは多少使えるもののvimerではないのでしんどさがあります。そこでVSCodeの拡張であるSSH FSを使おうと思ったのですが。 ワークスペースを解決できません。 とかいうエラーが出てくるわけです。これ自分が…

Windowsから踏み台サーバ越しにsshするときのconfigの書き方の注意事項。

windows10のバージョン1700番台くらいでデフォルトでsshができるようになったのでまぁまぁ(puttyとか使わないで済むようになったので)いろいろ幸せになりました。しかし踏み台サーバ越しにsshする際にちょっと罠があったので書き記しておきます。 踏み台サー…

.NET Standardの実体について。

.NET Standard完全に理解していますか? .NET Standard,いろんな環境で使える共通のAPIという認識はみなさんしていると思います。が、内実...というか.NET Standardで作成したライブラリが、どのように.NET Core環境と.NET Framework環境で動いているのか、…

System.Reactiveの中身をほんのちょっと読んで見る。(その3)

その1(s_implは何ですか) その2(クラスとその役割) その3(動作を追ってみる) 動作を追う。 メソッドチェーン時(Subscribe前) サブスクライブが走るまでは、単にIObservableを返し、生成されたオブジェクトとしては、上流のObservableと、Func<TSource, TResult>の関数を保存す</tsource,>…

System.Reactiveの中身をほんのちょっと読んで見る。(その2)

その1(s_implは何ですか) その2(クラスとその役割) その3(動作を追ってみる) 使われているクラスなどを見ていく。 前回具象クラスがなんであるかわかったので、一番最初の疑問であった public static partial class Observable { //〜略〜 public static IOb…

System.Reactiveの中身をほんのちょっと読んで見る。(その1)

その1(s_implは何ですか) その2(クラスとその役割) その3(動作を追ってみる) Rxの中身をほんのちょっと読んで見る。 前々回にふと気になったのでRxのチェーンがどういう感じなのかなと思ってうんたららみたいな記事を書いたのですが、今度はちゃんとSystem.R…

EqualityComparer<T>.Defaultの実装を追ってみる。

気になりません? 純粋にどうやって生成してるのか疑問に思ったので気が済むまで追ってみる。 完全に備忘録でありいろいろ雑。 using System.Runtime.CompilerServices; namespace System.Collections.Generic { [TypeForwardedFrom("mscorlib, Version=4.0.0…

Reactive Extensionsのメソッドチェーンの後ろ側が気になったので見ていく。

Rx難しいね。 Rx、使う分にはぺちぺちメソッドチェーンで幸せいっぱいなのですが、IObserverとIObservableがどういうふうに連結されていっているのかイマイチ想像がつかなかったので、オペレータ自作という形で調べてみたり動かしてみたりデバッグしてみたり…