WPFなどのUIアプリでは、UIを扱うスレッドは基本的に1本です。本記事では、UIスレッドの役割、画面が固まる理由、そして async/await がUIの応答性にどう関わるのかを整理します。
非同期処理を理解するには、まずスレッドの役割を押さえる必要があります。本記事では、プロセスとスレッドの違い、同期処理との関係、そして async/await を理解する前提となる考え方を整理します。
C#でも外部ライブラリやデバイスとの連携では、ポインタやファイルハンドルなど低レベルなリソースを扱う場面があります。こうした状況で安全性を確保するために推奨されているのが SafeHandle です。
前の記事で整理したアンマネージドリソースの問題に対して、.NETではその解決手段として IDisposable という仕組みが用意されています。その役割や設計の考え方、基本的な使い方について整理します。
C#ではGCによりメモリ管理は自動化されていますが、すべてのリソースが対象ではありません。CLRが管理しないアンマネージドリソースの概念と特徴、マネージドとの違い、そしてGCとの関係を整理します。
LivewireのFileUploadで作成される一時ファイルが誰によっていつ削除されるのかを調べた覚え書きです。livewire-tmpへの保存タイミング・24時間後の自動クリーンアップの仕組み・S3利用時の注意点などをまとめています。
Laravelの$user->can()がGateを通じてPolicyを呼び出す仕組みと、FormRequest::authorize()との関係を整理した覚え書きです。authorize()の中でcan()を呼んでも再帰にならない理由や、RequestとControllerどちらで認可するかの使い分けも含めてまとめています。
LaravelのFormRequestでauthorize()をreturn true;のままにしておくと「全員許可」になってしまう理由と、コントローラーではなくauthorize()に認可ロジックを書くべき理由をコードレビューの気づきとしてまとめた覚え書きです。
Laravelでファイルアップロードを安全に実装するためのベストプラクティス(バリデーション・保存先・ファイル名生成・MIMEチェック・再エンコードなど)をまとめた覚え書きです。
ファイルアップロード機能で発生しやすい代表的な脆弱性(任意ファイルアップロード・パストラバーサル・拡張子偽装・MIME偽装・DoS)を自分用にまとめた覚え書きです。