wiprog

C# とか,数学とか,社会とか.

東京理科大の学科 teams をすばやくつくる

背景 大学のキャンパス閉鎖で登校ができないなか,新入生は twitter や LINE 等のツールでつながり,助け合うことでなんとか乗り切ろうとしています. ただし twitter は SNS であり,グループでのコミュニケーションに向かないこと, LINE グループはプライ…

在宅勤務でやる気が出ないときの対処

うつの治療から「卒業」して 1 ヶ月半,タイミング悪くコロナが猛威をふるっていて,そのせいか精神状態が悪化してしまい,主治医に助けを求めに行ってきた. 「家から出ないこと」が問題だと思っていたけど,実際は「在宅勤務への取り組み方」に問題があっ…

うつ患者の私がまとめる神経伝達物質、ホルモン、治療薬、サプリ

私はおととしの 10 月に中等度のうつ状態と診断され、治療を続けています。 うつはもちろん症状がとてつもなくつらいのですが、治療に用いる薬は副作用や依存性が強いものが多く、ただしく付き合うのが難しいです。 幸い私はかなり快方に向かっているので、…

2019年をふりかえって。ピアノをやめた。

今年も無事終わりそうなので振り返ってみます。 2019 年、26 歳になって、生まれて初めてピアノをやめました。今まで見ていた世界が全部崩れて、新しい世界に出会ったみたいです。 赤ちゃんのころから音の出るおもちゃが好きで、耳が良かったのか歌もすぐ覚…

async な lock をしよう

C#

Qiita から移行 -- C# では,非同期なメソッドでは lock が使えません.この記事ではそれでも lock したいときはどうするのっていうお話をします. たとえば,こんなふうにダブルチェックロッキングしたいとしますね. // これが複数のスレッドから非同期に…

Span<T> のつかいみち

C#

Qiita から移行 (2019/12/10 投稿) -- これは、 C# Advent Calendar 2019 の 10 日目の記事です(遅刻すみません!)。 前の記事は、 @Xeltica さんの C# 用ゲームエンジンを自作した話 です。 .NET Core 2.1 で使えるようになってしばらくたった Span<T> です</t>…

読書メモ: 起業の科学 #1 スタートアップにとっての「良いアイデア」とは

いかに課題にフォーカスするか 解決する課題の質を高めよ 「スタートアップの生死を分けるのは、 Product Market Fit (PMF, 市場で顧客から熱狂的に愛される製品のこと) を達成できるかできないかだ」 - Mark Andreessen, Founder of Andreessen Horowitz い…

読書メモ: Peopleware #1 人材を活用する (1) - プロジェクト失敗の原因

トム・デマルコの名著、 Peopleware を読み始めたので自分の意見も交えて読書メモ。 本の要約と自分の意見が半々ぐらいな感じです。ここ数年の話題だったり、主語が「私」となっているものは私個人の意見です。 今日もどこかでトラブルが 筆者は 10 年間にわ…

C# で messagepack vs json 比較

C#

Messagepack の良さを社内に布教するためにベンチマークを取ったので転載しておく。 個人的には MessagePack + LZ4 の Typeless がおすすめ。 messagepack は可読性が・・・と言われることが多いけど、 Typeless なシリアライズなら型情報がつくので、 dynam…

.NET Core 3.0 移行のハマりポイントまとめ

C#

プロダクションで稼働している .NET Core 2.2 (ASP.NET Core 2.2) のシステムを .NET Core 3.0-preview8 に全移行したときのハマりポイントのまとめです。 公式の移行手順で説明が無いものを中心にのせています。 移行前のシステム ASP.NET Core 2.2 on EC2 …

C# Span<char> を使って snake_case な文字列を PascalCase に変換する

C#

ネットで検索してもなかなか良い実装が見つからなかったので自分で書きました。 他の実装と違う点として、 部分文字列 (string インスタンス) を一切アロケートしない 極力すべての操作を stack 上で済ませる ことで、パフォーマンスを意識した作りにしてい…

C# で同時実行数制御つき ForEachAsync

C#

2020/03/26 Qiita から移行. 現在下記の実装には例外ハンドリングの不具合が確認されていますので使用は推奨しません 同時実行数を抑えながら非同期を走らせる方法として、下記の記事で ForEachAsync 拡張メソッドが紹介されています。 ForEachAsync - 非同…

今からできる、速くシンプルに LINQ を書くためのコツ 3 個

C#

たびたび 「LINQ が遅い」 と言われているのを見かけるので、どうやったら速く書けるのか、どう書くと遅くなるのかについてまとめてみます。 LINQ は非常に強力で、ぼくが出会った「LINQ 遅い」のほとんどは、 実装の仕方がまずいものばかりです。 LINQ はい…

Utf8Json で JSONP を書く

C#

Utf8Json.JSONP というライブラリを作りました。 ざっくりしたライブラリの紹介と、どうやって実装したかのメモです。 簡単な紹介 nuget でインストールできます。 NuGet Gallery | Utf8Json.Jsonp 1.1.0 nuget パッケージを入れると、 Utf8Json の名前空間…

dotnet pack で XML Document つきのパッケージを作成する

C#

.NET Core では dotnet pack コマンドで簡単に nuget パッケージを作ることができます。 ただデフォルトでは XML document が出力されなくてちょっと困ったので対策を書いておきます。 忙しい人のために csproj に下記の行を追加すれば XML Document が出力…

LINQ で指定したキーだけ使って Distinct, Except とかする

C#

たとえばこんなてきとうなクラスがあったとして public class MyClass { public int Id { get; set; } public double Value { get; set; } } Id だけを見て distinct とかしたい (けど結果は Value もほしいし、Id が重複した場合に Value は順番に依存 (最…

C# の ref まとめ

C#

C#7.2 までの参照渡し関係のまとめです。 C# 7 系で参照渡しの扱いが強化されて種類も増えました。 上手につかうとサイズの大きい値型のコピーを避けられるのでまとめてみました。 動作をきちんと理解するために C# to C# の変換をしたコードや IL をのせて…

C# でオレオレパーサコンビネータをつくってみる

C#

この記事について この記事は C# Advent Calendar 2017 の 10 日目の記事です。 アホなので 9 日の夜に書きはじめています。ちゃんと間に合ったらいいねください・・・!!!! コードは github にあります wipiano/csharp-parser-combinators Haskell や Sc…