한국어 | English | 日本語
Webアプリケーションエンジニア (経験8.8年)
技術・開発
engineering
ウェブフロントエンドと バックエンド開発を扱います
「スロットリングとデバウンスの違い」
スロットリングとデバウンスは、マウススクロールイベントが適用されているウェブページでユーザーがスクロールする際に発生する、数百から数千もの呼び出しによるブラウザのメモリ過負荷やパフォーマンス低下を防ぐための解決策です。呼び出し数を減らすことで性能劣化を回避します。呼び出し間の間隔を制御するのがスロットリング、多数の呼び出しを少数の呼び出しにグループ化するのがデバウンスです。
CORS - クロスオリジンAJAX呼び出しのためのSOP補完ポリシー
私がWeb開発を始めたばかりの頃、最初に出くわした問題がCORSでした。CORSはそれ自体が問題ではなく、開発者にそのリクエストがCORS規則に従っていないことを伝えるための規約です。CORS規約はWebブラウザのセキュリティ要素です。ブログを作成する際、外部画像をリンクすることがあります。このように外部にある単純なリソースを取得することはセキュリティ上の問題になりませんが、POSTやPUTのようなAJAX呼び出しを通じて外部にある動的なリソースを取得することは、サーバーの状態を変更するためセキュリティ上の問題となります。したがって、サーバーの状態変更(クッキーヘッダーなどを介したクライアントの状態変更も含む)に関連する呼び出しの際には、その呼び出しが開発者の意図したものかどうかを厳密に検証する必要があります。そうしないと、ブログに悪意のあるスクリプトが注入され、外部ドメインに対して意図しないサーバーリソースを操作するAJAXが呼び出される可能性があるからです。
JavaScriptランタイム環境: Chrome「ブラウザ」とNode.js「サーバー」
ChromeブラウザとNode.jsはどちらも、V8という有名なJavaScriptエンジンを使用しています。JavaScriptエンジンを基盤として構築されたChromeブラウザとNode.jsは、JavaScriptランタイム環境と呼ばれます。簡単に言えば、JavaScript言語で動作する環境という意味です。では、両者の違いは何でしょうか? Chromeブラウザ環境は、レンダリングに関連するDOM処理、AXIOSのような外部リソース呼び出し処理、画像処理など、ユーザーがブラウザで必要とするあらゆる機能をWeb APIとして追加提供します。一方、Node.jsサーバー環境では、多数のリクエストを受け入れるために、イベントキュー、イベントループ(シングルスレッド)と共にワーカースレッド構成を追加提供します。
Spring Security: SecurityContextHolder のスレッド共有戦略
並列処理のために導入した`parallelStream`内でSpring Securityのセッション情報が断続的に消失するという奇妙なバグに遭遇しました。「シュレーディンガーの猫」のように、リロードするたびに結果が変わるこの現象の原因を掘り下げ、SecurityContextHolderがマルチスレッド環境でセッションデータを共有する3つの戦略について考察します。
Wrapper Class Caching: Integer(ラッパークラス)における `==` 使用時の課題
JavaでIntegerオブジェクトを`==`演算子で比較する際、なぜある値では'true'となり、別の値では'false'となるのでしょうか?この単純な誤りのように見える現象の裏には、メモリ効率を最大化するためのJVMの'Wrapper Class Caching'メカニズムが隠されています。実務で遭遇した断続的なバグの事例を通して、Javaのメモリ管理戦略を掘り下げていきます。
토스트 예시 메세지