4 ポイント 投稿者 GN⁺ 2025-08-08 | まだコメントはありません。 | WhatsAppで共有
  • Immich の開発過程で得た 呪われた知識 の一覧を共有します
  • 様々なソフトウェアおよびインフラ環境で見つかった 予期しない問題 を整理しました
  • EXIF メタデータ、YAML の空白処理、PostgreSQL など、ツールと言語ごとの問題点に言及しています
  • 一部の問題は セキュリティ、プラットフォーム互換性、オープンソース依存 と直接つながっています
  • 開発者が注意すべき 実例と原因 に焦点を当てています

概要

Immich 開発チームは、プロジェクトを進める中で再び知りたくない 呪われた知識 を公開しました。これは、実際のサービス開発・運用の中で、さまざまなツール、言語、プラットフォームにおいて直接経験した 予期しない落とし穴と問題 を列挙したものです。

呪われた知識一覧

  • 2025年6月4日

    • Zitadel の Actions は呪われた機能です
    • Zitadel が提供する カスタムスクリプト 機能は JS エンジンベースですが、正規表現のネーミングキャプチャグループをサポートしていないため限界が明らかになりました
  • 2025年5月30日

    • Microsoft Entra は PKCE をサポートしていますが、OpenID discovery ドキュメントに明記されていないため、
    • そのため、この機能がクライアントで検出されない問題が発生しました
  • 2025年5月5日

    • 画像を説明する EXIF メタデータのサイズ情報 は、実際の画像と異なる場合があります
    • この差分により、クロップとリサイズ処理でエラーが発生しました
  • 2025年4月1日

    • YAML の空白処理 は想定と異なる動作をすることが多いです
    • フォーマットに敏感で、意図と異なる内容として解釈されるリスクがあります
  • 2024年9月20日

    • Windows の隠しファイルは "w" フラグで開かれません
    • SMB の "hide dot files" オプションと組み合わせると、ファイル探索と処理の混乱 が拡大します
  • 2024年8月7日

    • Bash スクリプトでは キャリッジリターン(CRLF) 問題が発生する可能性があります
    • Git がチェックアウト時に自動で LF を CRLF に変換すると、スクリプト実行でエラーを引き起こします
  • 2024年8月7日

    • Cloudflare Workers の fetch は https を明示しても、デフォルトは http になります
    • これにより リダイレクトループ などのネットワーク関連問題が発生します
  • 2024年7月21日

    • モバイルの GPS 共有 は、アプリに位置情報権限がない場合、画像から GPS 情報を静かに削除します
    • 位置ベースサービスの精度とプライバシーに影響します
  • 2024年7月3日

    • PostgreSQL の NOTIFY はトランザクション内でのみ動作します
    • socket.io の postgres-adapter と組み合わせて使用すると、5秒ごとに WAL ログ が記録され、負荷を発生させます
  • 2024年7月3日

    • npm スクリプトを実行するたびに npm レジストリへ HTTP リクエストを送信します
    • したがって、スクリプトでヘルスチェックを行うのは非効率です
  • 2024年6月28日

    • JavaScript コミュニティ内の一部ユーザーが、「下位互換性」 を理由に 50 以上のパッケージ依存を強制追加しました
    • これらのパッケージはすべてそのユーザーが管理しています
  • 2024年6月25日

    • bcrypt 実装 は文字列の最初の 72 バイトだけを使用します
    • それ以降の文字は 無視されるため、長いパスワードは意味を持ちません
  • 2024年1月31日

    • JavaScript Date オブジェクトは年と日付は 1 から、月は 0 からインデックス付けされます
    • 混乱しやすい構造です
  • 2024年1月9日

    • Node.js v20.8 以前、--experimental-vm-modules オプションを使用する CommonJS プロジェクトで ES モジュールが CommonJS モジュールを再度読み込む際に
      • segfault(セグメンテーション違反)で Node.js がクラッシュする問題が発生します
  • 2023年12月28日

    • PostgreSQL のパラメータ制限は 65,535 個です
    • 大量データセットのバルクインサートで性能上の限界を引き起こします
  • 2023年6月26日

    • Secure Contexts でのみ使用できる Web API があります
    • 代表例として clipboard API などは https または localhost 環境でのみ動作します
  • 2023年2月23日

    • TypeORM の remove 実装は入力値に直接影響します
    • 元のオブジェクトの id プロパティまで削除してしまいます

結論

このような 呪われた知識 は、実際のサービス開発と運用環境で頻繁に遭遇し得る落とし穴です。開発者は、各ツール、プログラミング言語、環境ごとに潜在する制約や問題を事前に把握することで、効率的なトラブルシューティングと安定したサービス開発に役立ちます。

まだコメントはありません。

まだコメントはありません。