色んな事を書く

シンプルさを極めたエンジニアになりたい

.NET tools を使ってみる

.NET Core ツールとは 一言でまとめると Console App を Nuget Package 化したものです。詳細は以下に記載があります。 learn.microsoft.com マニフェストファイルを作る パッケージのバージョン管理を行うためのファイルを作成します。下記のコマンドを実行…

Azure Function の Timer Trigger の色々

TimerTrigger Attribute で指定出来る事 ここにまとまってます。 learn.microsoft.com Schedule には CRON 式か TimeSpan を指定出来る Schedule は Function の実行間隔を定義できるものです。その定義の仕方として CRON 式と TimeSpan が使えるよという事…

.NET の MetricsQueryClient を使って Azure Resource のメトリクスを取得する

下記を使います。 www.nuget.org Repository はこちら。 github.com この SDK を使えば Azure Monitor に対して ReadOnly なクエリをよしなに実行して結果を得られるみたいですね。これまでは Azure Portal 上からメトリクス見て~と判断していたものを、プ…

Elasticsearch の index とか doc_value とか

Elasticsearch の Mapping に定義出来る下記の項目について調べたことをまとめます。Elasticsearch の version は 6.8 です。 index doc_values fielddata enabled www.elastic.co 各項目の用途のまとめです。 index doc_values fielddata enabled 用途 検索…

【読書メモ】データ指向アプリケーションデザイン

5 章 レプリケーション リーダーとフォロワー ノード障害への対応 フェイルオーバーの問題 レプリケーションログの実装 ステートメントベースのレプリケーション WAL の転送 論理ログレプリケーション トリガーベースレプリケーション レプリケーションラグ…

KQL メモ

KQL を書くことが多くなってきたので自分用のメモを残しておきます。構文とか便利メソッドのまとめ集です。基本的には公式ドキュメントにあるものを色々試した結果を載せていきます。 クエリの対象は Azure Function の実行ログとしています。 一分単位で Er…

【読書メモ】自分の意見で生きていく

1 章 意見とは何か 意見とは「正解のない問題」に対して自分なりの考えを持つこと。「正解のある問題」には意見は持てない。正解か誤答しかない。 正解のない問題とは、「開発生産性を高めるにはどうすれば良いのか」といったようなもの。こういった類の問い…

Log Ingest API を使って Log Analytics のカスタムテーブルへ書き込む

会社のタスクでミドルウェアの状態を取得し、Log Analytics へ書き込む事で可観測性を高めよう!、ということをやりました。その時に得た知見や手順をまとめておこうと思います。 大前提として、以下の要件のもと開発を行っています。 Azure Function で定期…

【読書メモ】クラウドアプリケーション 10 の設計原則

1 章 全ての要素を冗長化する クラウドサービスの利用者であり提供者であるので、色んな角度で物事を見られる。 普段意識していないだけで実態は物理的な機器だし。 そもそも Azure にはリージョンを指定出来るものと出来ないもんがありそう。 指定出来る ->…

【読書メモ】クリティカルシンキングの教科書

動機 「考慮不足であった」「認識出来ていなかった」といった類のミスを未然に防ぎたい 誰も認知できていない解決が必要な課題を定義し、プロダクトをより良くしたい それらのために、ロジカルシンキングとクリティカルシンキングを意識的に使い分けるように…

【読書メモ】メタ思考

動機 自分自身が気づいていない領域に気づけるようになり、知識の幅を広げたい 何かを得るための一歩目は、得ていないもの・得るべきものの存在に気づきこと、みたいな 当たり前に思っていることに気づき、それを疑えるようになりたい プロダクト開発におい…

【読書メモ】考える技術・書く技術

動機 ソフトウェア開発プロセス内で要件定義のレビューの通り具合が悪いので改善したい チーム全体のテクニカルライティング力を向上させるために、横展開出来るスキルを身に着けたい 2 章 考えをカタチにする 3 章 ピラミッドを作る 論理的思考の基本 帰納…

SQL Server の Connection Pool について

Database に接続する時に SqlConnection を使っていたんだけど、 毎回インスタンス作っていいの? Pool とか再利用されてるの? みたいなが疑問が出てきたのでまとめる。 learn.microsoft.com をベースに色々試していく。 The pooler maintains ownership of…

【読書メモ】入門監視

動機 1 章 監視のアンチパターン 2 章 監視のデザインパターン 3 章 アラート、オンコール、インシデント管理 7 章 アプリケーション監視 動機 オブザーバビリティと監視の違いが良くわからないので理解したい 関わっているプロダクトの運用を監視の文脈でよ…

【読書メモ】アメリカの高校生が学んでいるお金の教科書

1 章 お金の計画の基本 お金の計画を立てるとは自分が欲しいものを知ること。まぁでも計画自体にあまり価値はないんだろうな。お金の価値って時間ともに変わっていくし、計画を立てた当時では買えたであろうはずのものが買えなくなってしまったってことはあ…

ServiceBusAdministrationClient について

Rule の作成 Rule の作成 この記事を読みながら learn.microsoft.com CreateRuleAsync というメソッドを使えば、ある topic の subscription に適応するルールを作成できます。 このルールを適応すれば、例えば以下のようなことが出来ます。 ApplicationProp…

【読書メモ】解像度を上げる

1 章 解像度を上げる 4 つの視点 解像度とは...「物事の理解度や、物事を表現する時の繊細さ、思考の明確さ」を表すもの。解像度が高いほど、これらのことも高いことを表す。 解像度の高い人は、対象を以下の 4 つの観点から見ている 深さ 対象の物事や事象…

【読書メモ】世界一流エンジニアの思考法

1 章 世界一流のエンジニアは何が違うのだろう 「早く出来るように頑張る」ということが最終的な生産性をむしろ下げていた コピペをしたほうが「成果」は出る。 「理解」して「実践可能」にしていればそんなことすらする必要はない。 自分の場合はなるべく一…

【読書メモ】プログラマー脳

動機 「良いコードとは認知不可の低いコードである」という漠然とした持論は持っていたが、「プログラミング中に発生する認知不可とは」が曖昧なので突き詰めたい 理解し難い物事に対するストレスが半端ないから、極力そんなコードを後世に残したくない プロ…

IDisposable を実装したクラスを DI Container で使うとき Dispose はいつ呼ばれるのか

備忘用のメモです。 結論、インスタンスが破棄される時です。DI Container で生成されたインスタンスのライフサイクルは DI Container で管理されるので、破棄のタイミングで Dispose を呼び出してくれるみたいです。 雑にサンプルコード。DI Container に登…

【読書メモ】オブザーバビリティエンジニアリング

動機 前書き 1 章 オブザーバビリティとは 2 章 オブザーバビリティとモニタリングにおけるデバッグの違い 3 章 オブザーバビリティを用いないスケーリングからの教訓 4 章 オブザーバビリティとDevOps、SRE、クラウドネイティブとの関連性 5 章 構造化イベ…

Stream の位置を初期化する方法

Stream を使いまわしたい時に Stream の Potision を初期化する方法です。

.NET の Dispose パターンについて

.NET の Disponse パターンって何で必要なんだっけってのとどうやって実装するんだっけってのをまとめときます。 前提 Dispose パターンとは? Dispose パターンの実装方法 StreamWriter, StreamReader の leaveOpen まとめ

Azure Function での Configure について調べる

.NET の Configure について調べたくなったのでまとめます。 GetValue Section Children Option Pattern と Section

GraphQL 入門 1

GraphQL の入門記事その 1 です。なぜ誕生したのかや、採用するメリットについて書きました。

Query Parameter を扱いやすくしたい

Uri class を使えばクエリパラメータの取得は出来るのですが、文字列だとどうしても扱いにくく良い方法はないものかと思っていました。 調べてみたら HttpUtility.ParseQueryString というメソッドがあって、これを使えばクエリパラメータ文字列を NameValue…

【読書メモ】Good Code Bad Code

4 章 エラー システムで発生するエラーを回復可能なものと不能なものに分類して、それぞれがどういうものなのかを説明した章。 実装する際に、回復可能なエラー (回復することが期待されているエラーも含む) をどう扱うかコードベースで話してる。 まず回復…

Azure Function の timeout と Cancellation Token

Azure Function で Cencel Request が発生するとき Azure Function の parameter には Cancellation Token を bind させることが出来ます。 これを渡すことで Host OS はアプリケーションコードに対して終了通知を送ることが出来ます。 受け取ったアプリケー…

CSV Helper で CSV の行を Deserialize したい

読み込んだ CSV のある Header の値を C# のクラスプロパティにマッピングさせて Deserialize したい場合がある。 そんなときの方法をメモ。 例として CSV で本の「タイトル」「著者」をまとめていたとして、これを C# の Book class に Deserialize する。 …

React で file upload する方法

input tag に Change Event Handler を指定する。 export default function UploadFile() { const [formState, setFormState] = useState<File>(); const onFileInputChange = async (event: React.ChangeEvent<HTMLInputElement>) => { const { files } = event.currentTarget; if (</htmlinputelement></file>…