Category: 開発

Chrome MV3拡張機能における面白いバグ

2025-07-13

Google ChromeがMV2からMV3に移行したことで、webRequestBlocking権限が削除され、多くの広告ブロッカーが機能しなくなりました。しかし、著者は面白いバグを発見しました。Chrome拡張機能のAPIがJavaScriptバインディングを使用しているため、`chrome.webRequest`イベントコンストラクターのパラメーターを操作することで、権限チェックを回避し、広告ブロック機能を実現することができました。このバグはセキュリティリスクではありませんでしたが、レガシーコードに潜む潜在的な問題、そして技術的な詳細を巧みに利用することで予期せぬ結果を得られる可能性を示しています。著者はGoogleにこのバグを報告し、現在は修正されています。

開発

BinaryRPC:高性能C++ RPCフレームワーク

2025-07-12
BinaryRPC:高性能C++ RPCフレームワーク

JavaのWebSocketサーバーのパフォーマンス問題に悩まされた新卒エンジニアは、C++とuWebSocketsライブラリを使用して、高スループットのRPCフレームワークであるBinaryRPCを開発しました。Node.jsとExpress.jsに触発されたBinaryRPCは、最新のミドルウェアとセッション管理システムを備え、信頼性の高いメッセージングのために複数のQoSレベルをサポートしています。現在オープンソースであり、よく文書化されており、簡単に採用できる例が含まれています。

開発

D言語でDeus Exのスピードランタイマーを作成:ゲームハッキングの旅

2025-07-12

Linux上でDeus Exのスピードランに適したツールがないことに不満を持ったスピードランナーが、D言語でカスタムタイマーを作成するプロジェクトに着手しました。この記事では、ロードフラグの発見に失敗した初期の試みから、Linuxシステムコール(ptraceとprocess_vm_readv)の学習、コードインジェクションに適したメモリを見つけるためのリバースエンジニアリング、そして最終的にタイマーの中核機能の実装に至るまで、その過程を詳細に説明しています。作者はD言語を使用した経験を共有し、例外処理やセーブ画面のサポートが不完全であるなどの制限点を指摘しています。

開発

「Writing a C Compiler」でCコンパイラを作る:ステップバイステップ

2025-07-12
「Writing a C Compiler」でCコンパイラを作る:ステップバイステップ

著者は「Writing a C Compiler」を章ごとに進め、その過程をブログ記事で記録する予定です。この本はCコンパイラの作成を段階的に解説しており、第1章の終わりまでに動作するコンパイラが完成し、以降の章で機能が追加されていきます。包括的なテストスイートが含まれており、徹底的な検証が可能です。著者は、この本の優れた段階的なアプローチ、包括的なテストスイート、現実世界の言語(C)への焦点などを高く評価し、コンパイラの構築を学ぶための優れたリソースとして賞賛しています。

開発

超電導量子ビットチップの精密な製造プロセス

2025-07-12
超電導量子ビットチップの精密な製造プロセス

本論文は、再現性を向上させるために既存の方法を改良した超電導量子ビットチップの製造プロセスを詳細に説明しています。このプロセスには、6インチシリコンウェハーを基板として使用すること、200nmのニオブ膜をスパッタリングで堆積すること、フォトリソグラフィとプラズマエッチングでニオブをパターン化すること、電子ビームリソグラフィでジョセフソン接合を作製すること、アルミニウム膜を蒸着して接合を形成すること、そして最後にダイシングとリフトオフを行うことが含まれます。また、量子ビットの特性評価と測定のための実験装置についても説明しており、低温測定システムと信号処理チェーンが含まれています。製造されたジョセフソン接合は、予想よりも低い臨界電流を示し、EJ/EC比が低くなりました。

Incus:次世代コンテナおよび仮想マシンマネージャー

2025-07-12
Incus:次世代コンテナおよび仮想マシンマネージャー

Incusは、次世代のシステムコンテナ、アプリケーションコンテナ、および仮想マシンマネージャーであり、パブリッククラウドのようなユーザーエクスペリエンスを提供します。コンテナと仮想マシンを簡単に混合して使用し、同じ基盤となるストレージとネットワークを共有できます。イメージベースで、多くのLinuxディストリビューションをサポートしており、ラップトップからサーバーラックまでスケールし、さまざまなストレージとネットワークタイプに対応します。コマンドライン、REST API、またはサードパーティツールを使用してインスタンスを管理できます。元のLXDの多くの開発者によって開発されたIncusは、セキュリティ、スケーラビリティ、イベントロギング、リモートアクセスなど、豊富な機能を備えた設計です。システムコンテナ、アプリケーションコンテナ、および仮想マシンをサポートします。

開発

緊急セキュリティ警告:Gravity Formsプラグインへのサプライチェーン攻撃

2025-07-12
緊急セキュリティ警告:Gravity Formsプラグインへのサプライチェーン攻撃

セキュリティ研究者によって、Gravity Forms WordPressプラグインを標的としたサプライチェーン攻撃が発見されました。悪意のあるコードはバージョン2.9.12に埋め込まれていました。攻撃者はバックドア関数 `update_entry_detail` と `list_sections` を使用して、ウェブサイト情報を窃取し、管理者アカウントを作成し、任意のコードを実行しました。悪意のあるコードは公式ダウンロードから削除され、バージョン2.9.13がリリースされました。すべてのGravity Formsユーザーは、直ちにアップデートし、サーバーに悪意のあるファイルやネットワークリクエストがないかを確認する必要があります。

オーディオアプリケーションを用いたディジタルフィルタ入門

2025-07-12

この包括的な教科書は、ディジタルフィルタとそのオーディオ処理への応用について徹底的に解説しています。最も単純なローパスフィルタから始まり、線形時不変(LTI)フィルタ、有限インパルス応答(FIR)フィルタ、無限インパルス応答(IIR)フィルタなど、様々なフィルタの種類の理論的基礎、設計方法、実装技術を段階的に説明します。様々なフィルタ構造や実装方法も網羅しています。本書には、多くのMatlabとFaustのコード例、豊富なオーディオアプリケーションの事例研究が含まれており、ディジタル信号処理とオーディオエンジニアリングの分野の学生や研究者にとって理想的なものです。

Pythonの闇魔法:辞書アンパックライブラリ

2025-07-12
Pythonの闇魔法:辞書アンパックライブラリ

`dict-unpacking-at-home`というPythonライブラリは、辞書のアンパック機能を提供し、次のように辞書を直接アンパックできます。`{greeting, thing} = dct`。クールですが、作者はこれが重要なライブラリではないと述べており、現在のバージョンではスタックトレースの行番号が壊れます。修正版もありますが、それなりのコストがかかります… 月間100万ダウンロード近く、合計3000万ダウンロード以上という実績から、多くの人がこの一見信頼できないライブラリを使用していることがわかります。

Elixirのホットコードリローディングによるモノリシックアプリケーションのモジュール化

2025-07-12

クライアントごとに1インスタンスをデプロイするElixirベースのモノリシックアプリケーションであるAlzoは、クライアント固有の機能のためにElixirとErlang VMのホットコードローディング機能を活用しています。これにより、マイクロサービスによるカスケード障害や複雑なテストを回避できます。クライアント固有のLiveViewアプリケーションは`/alzo/lib/clients/apps`にあり、起動時に動的にロードされます。ビルド時にはクライアントコードが削除されるため、メインアプリケーションがランタイムアプリケーションに依存することがなくなります。ホットコードアップグレードは簡素化のために回避されます。このアプローチは、効率的な開発、保守性、スケーラビリティ、および動的アプリケーションからメインコードベースに共通機能を簡単にリファクタリングする機能を提供します。

CLRガベージコレクションの深堀り

2025-07-12
CLRガベージコレクションの深堀り

この記事は、共通言語ランタイム(CLR)におけるガベージコレクション(GC)の包括的な概要を提供します。GCは自動的なメモリマネージャーとして機能し、マネージコードのメモリ割り当てと解放を処理することで、開発者を手動によるメモリ管理から解放し、メモリリークなどの問題を防ぎます。GCの中核となる概念、メモリ管理の原則、割り当てと解放のプロセス、世代別ガベージコレクション戦略(Gen 0、1、2、および大規模オブジェクトヒープ)、トリガー条件、フェーズの解説、およびアンマネージリソースの処理について詳しく説明します。この記事では、GCがオブジェクトのライフタイムに基づいてヒープを世代に分割することによりメモリ使用量を最適化し、短命のオブジェクトを優先的に処理することで効率を向上させる方法について説明します。

開発

リバースプロキシ深掘り:接続管理の課題と進化

2025-07-12
リバースプロキシ深掘り:接続管理の課題と進化

この記事では、リバースプロキシの内部動作と接続管理の複雑さについて深く掘り下げます。シングルスレッドからマルチスレッド、マルチプロセス、そしてソケットシャーディングを使用したイベント駆動アーキテクチャまで、リバースプロキシは高並列処理に対応するために大きく進化してきました。この記事では、epollによるI/O多重化の効率性や、マルチコアプロセッサにおけるマルチスレッドモデルの課題など、さまざまな手法の長所と短所を詳細に説明し、TLSサポートやプロトコルの多様性におけるさらなる複雑性についても指摘しています。

開発 接続管理

Jank:単独開発者によるClojureランタイムでのシームレスなC++相互運用

2025-07-12
Jank:単独開発者によるClojureランタイムでのシームレスなC++相互運用

ClojureランタイムであるJankプロジェクトは、C++とのシームレスな相互運用において大きな進歩を遂げました。手動メモリ管理、強化された型システム、不透明なボックスなどの機能により、開発者はClojure内でC++コードを直接呼び出すことができます。実例として、C++ストリームを使用した「Hello, world!」の出力や、JSON for Modern C++ライブラリを使ったJSONファイルの解析などが挙げられます。今後の作業は、パッケージ化、配布、バグ修正に重点を置き、最終的にはアルファ版のリリースを目指します。

開発 相互運用

ESP32を使った5歳児向けSonos簡単操作システム

2025-07-12
ESP32を使った5歳児向けSonos簡単操作システム

父親が5歳の子供のために、Sonos Play:1スピーカーを簡単に操作できるシステムを作りました。M5Stack CardPuter v1.1 (ESP32S3)をコントローラーとして、Go言語でバックエンドロジックを実装。ボタンを押すだけで、好きなプレイリストの再生や再開ができます。緑色のライトが動作状況を示します。シンプルで遊び心のある、楽しい親子プロジェクトです。

偽JPEG画像で悪意のあるウェブクローラに対抗する

2025-07-12
偽JPEG画像で悪意のあるウェブクローラに対抗する

著者は、悪意のあるウェブクローラを混乱させるために偽のウェブページを生成するSpigotという小さなウェブアプリケーションを開発しました。最近、ImageSiftBotというクローラが、Spigotに画像がないにもかかわらず、画像を積極的に取得しようとしました。これに対抗するため、著者はJPEGファイルの構造を巧みに利用し、ランダムなデータで満たされた偽のJPEG画像を生成します。これにより、クローラの資源を効果的に浪費し、サーバーのCPU負荷を最小限に抑えることができます。この方法はシンプルで効率的で、最小限のコードで実現でき、生成された画像はほとんどのブラウザで正しく表示されます。

OpenZFSのほぼ壊滅的なバグがRustの型システムの威力を浮き彫りに

2025-07-11
OpenZFSのほぼ壊滅的なバグがRustの型システムの威力を浮き彫りに

OpenZFSのコアディスク割り当て関数に、微妙ながらも壊滅的なバグが最近発見されました。このバグは、単純な型エラーによって間違ったサイズが返されるというもので、データがサイレントに上書きされる可能性がありました。発見までに約2日間かかりました。このバグはリリース版には存在しませんでしたが、C言語の静的解析ツールの限界とRustの型システムの利点について改めて考えさせられるきっかけとなりました。Rustが`PhysicalSize`や`AllocatedSize`のようなカスタム型を定義できる機能は、このバグを防いでいたでしょう。著者は、プログラマの完全性に頼るだけでは不十分であり、ツールや言語機能を活用してコードの品質を向上させ、検出が難しく影響の大きいバグを軽減することが重要だと主張しています。

開発

Red Hatスタイルガイド:用語への深い探求

2025-07-11

このドキュメントは、Red Hatテクニカルドキュメントで使用される標準化された用語を詳細に概説しています。ソフトウェア名(例:IBM S/390、Samba)からセキュリティの説明(「secure」のような曖昧な用語を避け、セキュリティ機能に関する具体的な詳細を要求)まで、幅広い側面を網羅しています。また、略語(例:SSH、SSL)、コマンドラインの説明、および混同しやすい単語(例:「since」と「because」)の適切な使用方法も標準化しています。全体的な目的は、一貫性と正確性を確保し、可読性と専門性を向上させることです。

Cactus:LLMをローカルにデプロイするためのクロスプラットフォームフレームワーク

2025-07-11
Cactus:LLMをローカルにデプロイするためのクロスプラットフォームフレームワーク

Cactusは、FlutterとReact Nativeに対応したクロスプラットフォームフレームワークで、アプリ内で大規模言語モデル(LLM)、ビジョン言語モデル(VLM)、テキスト読み上げ(TTS)モデルをローカルにデプロイできます。Hugging FaceのGGUFモデル(Qwen、Gemma、Llamaなど)に対応し、FP32から2ビット量子化モデルまで幅広い精度に対応しています。Cactusは、AI機能の向上(リマインダー、画像検索、メッセージへの返信など)のためのMCPツールコール、複雑なタスクのためのクラウドモデルへのフォールバック、Jinja2対応のチャットテンプレート、トークンストリーミングを提供します。サンプルコード、さまざまなデバイスでのパフォーマンスベンチマーク、C++バックエンドが提供されています。

開発

Btrfsのパフォーマンス向上:デバイスロールを使ったチャンク割り当て

2025-07-11

Btrfsファイルシステムに大きなパフォーマンス向上が到来します!新しいパッチにより、デバイスロールを使ったパフォーマンスベースのチャンク割り当て方法が導入され、空き容量のみを基準とした現在の割り当て方法による不均衡が解消されます。5つのデバイスロール(metadata_only、metadata、none、data、data_only)を定義し、ロールの優先順位と残りの空き容量を考慮することで、システムは高速デバイスをメタデータに、低速デバイスをデータにインテリジェントに割り当てることができ、読み書きパフォーマンスが大幅に向上します。この改善は複雑なデバイス速度の測定を回避し、既存のディスクフォーマットを活用して、よりスマートで効率的なストレージ管理を実現します。

開発

diffsitter:意味のあるコード差分ツール

2025-07-11
diffsitter:意味のあるコード差分ツール

diffsitterは、ファイルの抽象構文木(AST)を比較することで、フォーマットの違いを無視し、意味のあるコード差分を生成するツールです。多くのプログラミング言語をサポートしており、設定可能なノードフィルタリング、ターミナルフレンドリーなフォーマット、詳細なログ記録などの機能を提供します。ソースコードからのビルド、プリビルドバイナリの使用、パッケージマネージャーなど、さまざまなインストール方法があります。

eBPFとコンテナランタイム:CRIによる接続

2025-07-11

この記事では、オープンソースのeBPFプロジェクトがコンテナランタイムインターフェース(CRI)を使用してコンテナランタイム(CR)に接続し、ポッドとコンテナの情報でコンテキストを豊かにする方法を調べます。接続プロセスについて詳しく説明します。Unixソケットファイルの特定、CRI APIを使用したgRPC接続の確立、情報のクエリです。Tetragon、crictl、Traceeの例を通して、ハードコードされたデフォルトのソケットパスやランタイム接続の試行など、CRへの接続におけるさまざまなアプローチを示します。最後に、CRI APIを使用して、cgroupパスなどのコンテナ情報をクエリする方法を示します。たとえば、Tetragonがコンテナのcgroupパスを取得する方法などです。

開発

AIツールが熟練のオープンソース開発者を遅らせる:無作為化比較試験

2025-07-11
AIツールが熟練のオープンソース開発者を遅らせる:無作為化比較試験

無作為化比較試験(RCT)は、2025年初頭のAIツールが、自身のレポジトリで作業する経験豊富なオープンソース開発者の生産性に与える影響を調査しました。驚くべきことに、AIツールを使用する開発者は、使用しない開発者よりもタスク完了に19%長くかかりました。AIによって作業が遅くなったのです。研究者たちは、これを現在のAI能力のスナップショットと見なし、AI研究開発の自動化によるAIの加速を追跡するために、この方法論を継続する予定です。本研究は、この速度低下に寄与する可能性のある要因を調査し、このRCTと他のベンチマークや逸話的な証拠との間の矛盾点を調べ、AI能力を包括的に評価するために多様な評価方法が必要であることを強調しています。

開発

Androidの新しいCanaryチャンネル:開発者向け継続的な早期アクセス

2025-07-11
Androidの新しいCanaryチャンネル:開発者向け継続的な早期アクセス

Googleは、AndroidのDeveloper Previewプログラムを新しいCanaryチャンネルに置き換え、開発者に対して年間を通じてローリングアップデートを提供します。これにより、実験的な機能とAPIへの早期かつ一貫性のあるアクセスが可能になります。以前の手動インストールとは異なり、Canaryビルドは無線で配信され、ベータプログラムと並行して実行されます。毎日使用するものではないものの、Canaryは貴重な早期フィードバックを提供し、開発者は問題を特定し、アプリケーションを継続的にテストできます。現在、PixelデバイスとAndroid Studio Canaryバージョンでサポートされています。

Hacker Newsにおけるデータベース人気:ClickHouseとDuckDBの急成長

2025-07-11
Hacker Newsにおけるデータベース人気:ClickHouseとDuckDBの急成長

Hacker Newsの18年間のデータ分析によると、オープンソースデータベースであるClickHouseとDuckDBが急成長している一方で、クラウドネイティブデータベースの話題は減少しています。PostgreSQLは高い人気を維持しており、SQLiteは高いユーザーエンゲージメントが特徴です。この分析は、ヘッドライン数とユーザーエンゲージメント(コメントとポイント)の両方の指標を用いてトレンドを示し、オープンソースデータベースと分析系データベースの台頭を強調しています。

開発

AIコーディングツール:経験豊富な開発者の生産性が19%低下

2025-07-11
AIコーディングツール:経験豊富な開発者の生産性が19%低下

AIコーディングツールを使用する経験豊富な開発者に関する厳格な研究によると、生産性が驚くべきことに19%低下することが明らかになりました。これは、開発者自身による20%の生産性向上という予想とは大きく矛盾しています。研究では、AIが生成したコードが、成熟した大規模プロジェクトの高い基準を満たせていないことが多く、AIの出力をレビューおよび修正するのに多くの時間を費やす結果になったことがわかりました。これは、現在のAIコーディングツールの限界を示しており、その有効性はプロジェクトの種類、開発者の経験、ツールの成熟度によって大きく左右されることを示唆しています。

開発

図解線形代数ブログ:線形代数を図解で学ぶ

2025-07-11
図解線形代数ブログ:線形代数を図解で学ぶ

このブログは、視覚的で図解的なアプローチを用いて線形代数を解説しています。複雑な数学的概念を分かりやすく説明し、図解を使って難しいトピックを明確にしています。内容は、基本的な演算から行列、準同型写像、関係といった高度な概念までを網羅しており、すべて図解を用いて段階的に説明されています。また、応用圏論の研究学校や関連する研究機会についても紹介しており、線形代数に興味のある学習者や研究者にとって貴重なリソースとなります。

開発 図解数学

FOKS:シンプルな鍵階層による安全なデータアクセス

2025-07-11

FOKSはシンプルな鍵階層を使用してデータアクセスを保護します。基本レベルの鍵には、ユーザーデバイス鍵、バックアップ鍵、YubiKeyなどが含まれます。各ユーザーは複数のユーザー鍵(PUK)を持ち、そのシードシークレットは利用可能なすべての基本レベルの鍵で暗号化されます。基本レベルの鍵を削除すると、PUKはローテーションします。チーム鍵(PTK)は同様に機能し、チームメンバー(ユーザーまたはサブチーム)間で共有され、メンバーの鍵で暗号化されます。この階層により、承認されたデバイス、チーム、ユーザーのみがデータにアクセスできます。

開発 鍵管理

HTTPステータスコードブログシリーズ、100 Continueからスタート

2025-07-11
HTTPステータスコードブログシリーズ、100 Continueからスタート

著者は、HTTPとWebサービスに関する記事シリーズを執筆することを計画しており、各HTTPステータスコードについて1記事ずつ書く予定です。100 Continueに関する最初の記事が既に公開されており、今後1年間、毎週更新する予定です。これは、HTTPについて学ぶための楽しい方法であり、定期的な執筆習慣を養うことができます。

本番環境におけるLLM推論:決定版ガイド

2025-07-11
本番環境におけるLLM推論:決定版ガイド

このハンドブックは、本番環境でのLLM推論に関する断片化された知識に対処します。コアコンセプト、パフォーマンスメトリクス(最初のトークンまでの時間、1秒あたりのトークン数など)、最適化テクニック(連続バッチ処理、プレフィックスキャッシングなど)、運用上のベストプラクティスを網羅しています。小規模なオープンソースモデルをファインチューニングする場合でも、独自のスタックで大規模なデプロイを実行する場合でも、このガイドはLLM推論をより高速、低コスト、信頼性の高いものにするのに役立ちます。

開発

Gemini APIにバッチモードが登場:高スループットワークロードに対応

2025-07-11
Gemini APIにバッチモードが登場:高スループットワークロードに対応

GoogleのGemini APIにバッチモードが追加されました。これは、レイテンシがクリティカルでない高スループットタスクに最適な非同期エンドポイントです。大量のジョブを提出して処理をシステムに任せ、同期APIと比べて50%割引で24時間以内に結果を取得できます。事前に準備されたデータで即時レスポンスが不要なタスクに最適で、コスト削減、スループットの向上、API呼び出しの簡素化を実現します。Reforged Labsはこれを使用して大量の動画広告を処理し、効率の大幅な向上とコスト削減を実現しています。Google GenAI Python SDKを使用すれば簡単に始めることができます。

1 2 43 44 45 47 49 50 51 214 215