Category: 開発

多重発見:Prolly Trees の事例

2025-07-01
多重発見:Prolly Trees の事例

Doltにとって重要な新規データ構造であるProlly Treesは、一度ではなく、少なくとも4回独立して発明されました。2009年のAvery Pennarunによるbupプロジェクト(Nomsに先立つ)、2015年のNomsによる用語の命名、2019年のInriaによる「Merkle Search Trees」、2020年のDePaul大学による「Content-Defined Merkle Trees」など、同じ基本的なデータ構造が異なるコンテキストで繰り返し登場しました。これは、科学における多重発見という一般的な現象を強調し、技術革新における需要の役割を浮き彫りにしています。DoltHubの著者たちは、この現象とその将来の技術への影響について、Prolly Treesに関する自身の経験をケーススタディとして議論しています。

開発 多重発見

オープンソースのYouTube翻訳ブロッカー

2025-07-01
オープンソースのYouTube翻訳ブロッカー

これは、YouTubeでの自動翻訳を防止するオープンソースのYouTubeアドオンです。ビデオのタイトルと説明を元の言語で維持し、元のオーディオトラック(Shortsも対応)をデフォルトで使用し、字幕言語を選択できます(利用できない場合は自動的に無効化され、自動生成された字幕は常に無視されます)。これにより、本物の視聴体験が保証されます。

開発

Pluto:強化されたLua方言

2025-07-01
Pluto:強化されたLua方言

Plutoは、汎用プログラミングのために設計された、強力なLuaの方言です。拡張された標準ライブラリと、switch文、複合演算子、三項演算子などの新しい構文機能により、開発速度が向上します。Lua 5.4とほぼ互換性がありますが、新しいキーワードによる潜在的な競合は、互換性モードで解決されます。PlutoはLuaバイトコードを実行し、ほとんどのPluto機能はLuaと互換性のあるバイトコードを生成します。包括的なドキュメント、ツール、および改善に関する詳細は、オープンソースのウェブサイトで入手できます。インタラクティブなブラウザプレイグラウンドで試したり、事前にビルドされたバイナリをダウンロードしてください。

開発

Rust CLI の向上:堅牢性と保守性を高める型主導設計

2025-07-01
Rust CLI の向上:堅牢性と保守性を高める型主導設計

この記事では、clap クレートを使用して Rust でコマンドラインインターフェース (CLI) を構築する際の型主導アプローチを推奨しています。文字列解析に頼るのではなく、Rust の型システムを使用して CLI インターフェースを定義することを提唱しています。これにより、コードの保守性と可読性の向上、テスト範囲の縮小とユニットテストのためのより良いモックサポート、そしてより容易なセマンティックバージョニングといった、いくつかの重要な利点が得られます。この記事では、clap の derive 機能と env 機能の詳細を説明し、型を使用してコマンドライン引数と環境変数を定義する方法を示すことで、より堅牢で保守しやすい CLI を実現する方法を示しています。

開発

Claude Codeフック:ユーザー定義シェルコマンドによる機能拡張

2025-07-01
Claude Codeフック:ユーザー定義シェルコマンドによる機能拡張

Claude Codeは、ライフサイクルの様々な段階で実行される、ユーザー定義のシェルコマンドであるフックを導入しました。これにより、自動コードフォーマット、ログ記録、カスタム権限チェックなどのアクションが常に実行されるように、Claude Codeの動作を決定的に制御できます。フックは、提案を信頼性の高いアプリケーションレベルのコードに変換し、機能性を向上させ、ワークフローを簡素化します。強力な一方で、ユーザーはセキュリティを優先し、コマンドが安全で信頼できることを確認する必要があります。

arXivLabs:arXiv機能のコミュニティコラボレーション

2025-07-01
arXivLabs:arXiv機能のコミュニティコラボレーション

arXivLabsは、arXivの新しい機能をウェブサイト上で共同開発し、共有するためのフレームワークです。参加者は、オープン、コミュニティ、卓越性、ユーザーデータプライバシーというarXivの価値観を共有する必要があります。arXivコミュニティを向上させるアイデアをお持ちですか?arXivLabsの詳細をご覧ください。

開発

クアルコム、EUDをオープンソース化:USB経由での回路内デバッグが可能に

2025-07-01
クアルコム、EUDをオープンソース化:USB経由での回路内デバッグが可能に

クアルコムは、組み込みUSBデバッグ(EUD)インターフェースのソースコードを静かに公開しました。これにより、開発者は外部JTAGツールなしで、USB経由で直接SWDデバッグを実行できるようになります。EUDは2018年頃からほぼすべてのクアルコムSoCに統合されており、CPUとHexagonコプロセッサのデバッグアクセスを提供します。初期のオープンソースコードにはいくつかのコンパイルの問題がありましたが、コミュニティによって迅速に解決されました。現在、Snapdragon 845、855、865などのチップをサポートしており、U-Bootやセキュアワールドのデバッグを簡素化しますが、カーネルデバッグのサポートは限定的で、SMPサポートは不完全です。

開発

Nimtable:Apache Iceberg™のコントロールプレーン

2025-07-01
Nimtable:Apache Iceberg™のコントロールプレーン

Nimtableは、Icebergベースのレイクハウスを監視、最適化、管理するための軽量で使いやすいプラットフォームです。Webベースのインターフェースにより、テーブルの参照、クエリの実行、ファイル分散の分析、ストレージレイアウトの最適化が容易になります。Nimtableは、複数のカタログ(REST Catalog、AWS Glue、AWS S3テーブル、PostgreSQL)をサポートし、S3などのオブジェクトストレージとシームレスに統合します。さらに、インタラクティブなクエリ、AIアシスタンス(AI生成テーブルサマリーやインテリジェントな提案など)、ファイル分散分析、テーブル最適化機能(ファイル圧縮やスナップショットの期限切れ管理など)を提供します。

開発

C言語における型安全なジェネリクス:ユニオンの巧妙な利用

2025-07-01
C言語における型安全なジェネリクス:ユニオンの巧妙な利用

この記事では、ユニオンを使って型情報を汎用データ構造と関連付けることで、C言語で型安全な汎用データ構造を実装する手法を紹介しています。著者はいずれもリストを使ってこの手法を説明し、マクロとユニオンによってコンパイル時の型チェックが可能になり、従来の汎用的な方法による型安全性の欠如とコードの肥大化を回避できることを示しています。`void*`とフレキシブル・アレイ・メンバのアプローチとの比較も行い、コンパイル時の型安全性を提供するソリューションに到達し、間違った型を追加するとコンパイルエラーが発生することを示しています。

開発

AI支援によるLLVMコンパイラ最適化:ASN.1シリアライゼーション物語

2025-07-01

RustのASN.1 DERシリアライゼーションライブラリをメンテナンス中に、著者は整数長の計算における非効率なコードを発見しました。彼はClaude AIを使用してコードを最適化し、Alive2形式検証ツールを使用して結果を検証しました。驚くべきことに、Claude AIはLLVMコンパイラ最適化のパッチ生成まで支援し、コードレビューを通過してLLVMプロジェクトに提出されました。これは、AIがソフトウェア開発、特にコンパイラ最適化における可能性を秘めていることを示すと同時に、AIツールの使用における手動レビューの重要性を強調しています。

開発

VercelのBotIDリバースエンジニアリング:驚くほど基本的なボット対策?

2025-06-30

この記事では、Vercelが最近リリースしたBotIDボット対策システム、特に無料の基本モードについて詳しく説明します。著者は、基本モードの現在の検出メカニズムは驚くほど基本的なもので、ブラウザのプロパティを操作することで簡単に回避できることを明らかにしています。BotIDはブラウザのフィンガープリントやGPU情報など、さまざまなシグナルを収集しますが、これらのシグナルの処理方法は基本的であり、高度なボットを効果的に識別できません。著者は、Vercelが基本モードを使用して将来の、より堅牢なボット対策モデルのトレーニングのためのデータを静かに収集していると推測しています。有料のDeep Analysisモードは、Kasadaのボット対策スクリプトを使用しており、基本モードよりもはるかに複雑です。

開発

TokenDagger:OpenAIのTikTokenの高性能実装

2025-06-30
TokenDagger:OpenAIのTikTokenの高性能実装

TokenDaggerは、大規模なテキスト処理向けに最適化された、OpenAIのTikTokenの高性能な代替手段です。ベンチマークテストによると、コードのトークン化において、TokenDaggerはTikTokenの4倍以上の速度を達成し、スループットは2倍に向上しました。最適化されたPCRE2正規表現エンジンと、簡素化されたBPEアルゴリズムを採用することで、大規模な特殊トークンボキャブラリの性能への影響を軽減しています。数行のコマンドで簡単にインストールして性能テストを実行できます。

開発

Ensō(オカルトヴァンパイアキーヌ)パブリックベータ版リリース

2025-06-30
Ensō(オカルトヴァンパイアキーヌ)パブリックベータ版リリース

コードネーム「オカルトヴァンパイアキーヌ」のEnsōの新バージョンがパブリックベータテストとして公開されました!このリリースは、簡素化されたUI、向上したアクセシビリティ、強化されたプライバシーに焦点を当てています。「喫茶店モード」によるテキストの隠蔽、アクセシビリティ重視の複数のテーマ、改良されたテキストレンダリングエンジンなどが新機能です。今後のアップデートではRTLサポートなどが追加される予定です。しかし、このバージョンだけでもユーザーエクスペリエンスが大幅に向上しています。

開発

C言語のポインタエイリアシングとコンパイラ最適化:ソースコードの安全性をかけたゲーム

2025-06-30
C言語のポインタエイリアシングとコンパイラ最適化:ソースコードの安全性をかけたゲーム

この記事では、C言語におけるポインタエイリアシングがプログラム最適化に与える影響について深く掘り下げています。ポインタエイリアシングとは、2つのポインタがメモリの同じオブジェクトを指していることを指します。コンパイラは、コード最適化中にエイリアス解析を実行して、ポインタがエイリアスであるかどうかを判断する必要があります。誤った判断は、プログラムエラーやパフォーマンスの低下につながる可能性があります。この記事では、2つのポインタがエイリアスになる可能性がある場合、コンパイラが特定の最適化を実行できないことを、逆数の計算例を用いて説明しています。これは、プログラムのアルゴリズムを変更する可能性があるためです。また、著者 は、restrictポインタ修飾子やvolatile修飾子など、C言語におけるエイリアス解析を支援するメカニズム、そしてタイプベースやフローベースのエイリアス解析などの高度なエイリアス解析技術についても説明しています。最後に、ポインタのライフタイムと情報の流れを考慮した、新しいポインタエイリアシング解析モデルを提案しています。これは、コンパイラの最適化効率とプログラムの安全性を向上させることを目的としています。

ディオファントス不等式によるAPIレートリミットのモデリング

2025-06-30

この記事では、ディオファントス不等式を用いた数学的手法によって、APIレートリミットの問題を解決する方法を探ります。時間あたり10リクエスト、タスクごとに3回の再試行というシナリオを例に、タスクスケジューリング問題を整数解問題に変換する方法を示しています。タスクの再試行パターンと時間ウィンドウを分析することで、不等式モデルを構築し、Go言語で、レートリミットを超えずに新しいタスクを安全にスケジュールできるかどうかを判定するプログラムを作成しています。また、アルゴリズムの最適化についても触れ、時間計算量をO(n^2)からO(n*log(n))に削減する方法を提案しています。

LinuxからWindowsへのRaylib Lispバインディングとゲームのクロスコンパイル

2025-06-30

この記事では、LinuxからWindowsへのCコードとSBCL Lispプログラムのクロスコンパイル方法、LinuxベースのEmacsでWineを使用してWindows版SBCLを実行する方法、Lispイメージに.dllファイルを読み込んで.exe実行ファイルを作成する方法について詳しく説明します。作者は、mingw-w64-toolchainを使用したCコードのクロスコンパイル、.dllファイルを作成するためのRaylibライブラリの構成、WineでのSBCLのインストールと使用、vendによる依存関係管理、そして最後にsb-ext:save-lisp-and-dieを使用したWindows実行ファイルの作成について概説しています。

開発

arXivLabs:コミュニティとの協力による実験プロジェクト

2025-06-30
arXivLabs:コミュニティとの協力による実験プロジェクト

arXivLabsは、共同作業者が新しいarXiv機能を直接ウェブサイトで開発および共有できるフレームワークです。arXivLabsに関わる個人や組織は、オープン性、コミュニティ、卓越性、ユーザーデータのプライバシーという私たちの価値観を受け入れています。arXivはこれらの価値観に尽力しており、それらを遵守するパートナーとのみ協力しています。arXivコミュニティを向上させるアイデアをお持ちですか?arXivLabsの詳細をご覧ください。

開発

Rustにおけるエラー処理:巨大なenumからエレガントなエラーセットへ

2025-06-30

Rustのエラー処理は議論の的となってきました。従来のアプローチでは、モジュールまたはクレートごとに巨大なエラーenumを定義するため、コードが膨れ上がり、保守が困難になります。この記事では、代替案を探ります。個々のエラーを構造体で表現し、`error_set`クレートなどのツールを使ってエラーセットを管理する方法です。`error_set`はマクロを使ってエラーenumの定義と変換を簡素化し、エラーセットの合成と部分集合の関係をサポートすることで、よりクリーンで効率的なエラー処理を実現します。追加情報を必要とする複雑なエラーには依然として追加作業が必要ですが、`error_set`はRustのエラー処理においてよりエレガントで保守しやすいアプローチを提供します。

開発

Goのための高速なプロセス内イベントディスパッチャ

2025-06-30
Goのための高速なプロセス内イベントディスパッチャ

このGoパッケージは、モジュールのデカップリングと非同期イベント処理を可能にする、高性能なプロセス内イベントディスパッチャを提供します。チャネルよりも4〜10倍高速(毎秒数百万件のイベントを処理)で、同期処理と非同期処理の両方をサポートし、シンプルさを重視しています。プロセス内モジュールのデカップリング、軽量なパブリッシュ/サブスクライブ、高スループットのシナリオに最適ですが、プロセス間通信、イベントの永続化、高度なルーティングには適していません。

Depot APIを使った顧客コンテナビルドのスケーリング

2025-06-30
Depot APIを使った顧客コンテナビルドのスケーリング

多くのSaaSプラットフォームは顧客に代わってコードを実行する必要があり、コンテナビルドに課題をもたらします。この記事では、Depot APIを使用してツールを構築し、マルチテナントSaaSプラットフォームに隔離されたビルド環境を作成する方法を示します。Goクライアントを使用することで、プロジェクトの作成、プロジェクトキャッシュの管理、ビルドメトリクスの取得、ログの取得を行うことができます。Depot APIはBuf.buildを活用しており、さまざまな言語のクライアントライブラリを提供することで、既存のインフラストラクチャへのシームレスな統合を可能にします。この記事では、プロジェクトの作成、削除、プロジェクトキャッシュのリセット、ビルドメトリクスの取得、ステップの詳細の取得について詳しく説明し、最終的にスケーラブルで安全な顧客コンテナインフラストラクチャを実現します。

開発

Python dataclasses: メンテナンス性と拡張性を高める `kw_only=True`

2025-06-30

Pythonのdataclassesはデータクラスを作成する便利な方法を提供しますが、デフォルトの`__init__`メソッドは位置引数を使用するため、メンテナンスや拡張が困難になる可能性があります。この記事では`kw_only=True`パラメータを紹介し、キーワード引数を強制することで引数の順番変更による問題を回避し、サブクラスが柔軟に必須フィールドを追加できるようにします。このパラメータはPython 3.10で導入されましたが、この記事では古いバージョンとの互換性のための解決策も提供しています。

開発

クヌースの「早すぎる最適化は諸悪の根源」の誤解

2025-06-30
クヌースの「早すぎる最適化は諸悪の根源」の誤解

この記事は、Donald Knuthの有名な言葉「早すぎる最適化は諸悪の根源」の真の意味を掘り下げています。goto文の使い方やマルチセットの実装に関するKnuthの論文の例を分析することで、この言葉が小さな最適化を完全に否定しているわけではないことを示しています。異なる実装方法のパフォーマンスを比較した実験から、重要なコードや頻繁に使用されるライブラリ関数の場合、ループアンローリングのような小さな最適化でも、ベンチマークの結果によっては大きなパフォーマンス向上をもたらす可能性があることがわかります。最終的に著者は、不要な最適化の労力を避け、最新のコンパイラの最適化機能を活用するために、最適化された標準ライブラリ関数を使用することを推奨しています。

開発

シェーダーの書:フラグメントシェーダー入門

2025-06-30
シェーダーの書:フラグメントシェーダー入門

パトリシオ・ゴンザレス・ビボとジェン・ロウによる共著『シェーダーの書』は、フラグメントシェーダーを段階的に理解するためのガイドです。この抽象的なトピックの複雑さを丁寧に解説しています。本書には著者の紹介と、多言語版実現に貢献した多くの協力者への感謝の言葉が掲載されています。

開発

マルウェアの仮想マシン検出の回避:カスタムSMBIOSによるCPUファンのスプーフィング

2025-06-30

マルウェアは、通常仮想マシンではエミュレートされないハードウェアコンポーネント(CPUファンなど)がないことをチェックして、解析を回避することがよくあります。この記事では、仮想マシンのSMBIOSデータを変更してCPUファンを偽装することにより、この検出を回避する方法について詳しく説明します。著者は、SMBIOSデータの取得、カスタムSMBIOSファイルの作成、VMの設定など、XenとQEMU/KVM環境での手順を詳しく説明しています。また、WMIを効果的に欺くには、Xen環境でSMBIOSタイプ28(温度プローブ)データを追加で処理する必要があることも強調しています。

NativeJIT:Bingのための高性能JITコンパイラ

2025-06-30
NativeJIT:Bingのための高性能JITコンパイラ

NativeJITは、Cデータ構造を含む式の高性能なJust-in-Timeコンパイルのためのオープンソースのクロスプラットフォームライブラリです。BingチームによってBing検索エンジンで使用するために開発され、キーワードのマッチングとユーザーの意図に基づいたドキュメントのスコアリングに不可欠です。軽量で高速であり、標準C++ランタイムのみに依存し、Linux、OSX、Windowsで動作します。最適化されたコード、特にレジスタ割り当てにより、大規模なクエリを効率的に処理できます。

開発

Ampere Altraを用いた低予算開発マシンの構築

2025-06-30
Ampere Altraを用いた低予算開発マシンの構築

64kページサイズのサポートが必要だったため、Ampere Altraベースの開発マシンを構築しました。AsrockRack ALTRA8BUD-1L2Tマザーボード、中古のQ80-30プロセッサ(80コア、3.0 GHz)、Arctic Freezer 4U-Mクーラー、16GBのSK Hynix HMA82GR7CJR8N-XN RAMを8本使用しました。いくつかのトラブルシューティングの後、システムは正常に起動しました。適切なケースと電源も選択し、NVMeストレージとグラフィックカードを追加しました。総費用は約1800ユーロで、予算をやや超過しました。今後の計画には、Fedora 42のインストール、RHELおよびCentOS Stream VMの作成、さまざまなGPUでの実験、デスクトップとしての使用などがあります。

LLVM-MCA パフォーマンス分析:ベクトル化最適化の落とし穴

2025-06-29
LLVM-MCA パフォーマンス分析:ベクトル化最適化の落とし穴

著者は、ARM NEON を使用したベクトル化最適化において、パフォーマンスの低下という問題に遭遇しました。初期のコードは 5 つのロード命令 (5L) を使用していましたが、最適化されたバージョンはメモリアクセスを削減するために 2 つのロード命令と 3 つの拡張命令 (2L3E) を使用していました。驚くべきことに、2L3E バージョンの方が遅くなりました。LLVM-MCA を使用したパフォーマンス分析により、2L3E は CPU の実行ユニットにボトルネックを引き起こし、リソースの利用が不均衡で、命令の依存関係が強くなることがわかり、パフォーマンスの低下につながることが判明しました。5L バージョンは、リソースの利用がよりバランスが取れており、ロード命令が独立しているため、より良いパフォーマンスを示しました。このケーススタディは、CPU のリソース競合と命令の依存関係を考慮しないと、一見すると適切に見える最適化でもパフォーマンスの低下につながる可能性があることを示しています。LLVM-MCA は、このような問題を分析するための貴重なツールです。

開発

ブルームフィルター:効率的な集合メンバーシップテストのための確率的データ構造

2025-06-29

ブルームフィルターは、高速でメモリ効率の良い集合メンバーシップテストのために設計された確率的データ構造です。複数のハッシュ関数を使用して、要素をビットベクトルのビットにマッピングします。対応するビットがすべて1の場合、要素は*存在する可能性があります*。そうでない場合、要素は確実に存在しません。誤検知の可能性がありますが、その速度と空間効率は、大規模データセットに最適です。この記事では、ブルームフィルターの原理、ハッシュ関数の選択、サイズ決定、用途、さまざまなシステムでの実装例について詳しく説明します。

開発

Octelium:革新的なゼロトラストアクセスプラットフォーム

2025-06-29
Octelium:革新的なゼロトラストアクセスプラットフォーム

Octeliumは、無料、オープンソース、自己ホスト型の、ゼロトラストリソースアクセスのための統合プラットフォームであり、VPNや同様のツールの現代的な代替手段として設計されています。非常に多用途で、ゼロコンフィグVPN、ZTNAプラットフォーム、セキュアなトンネルインフラストラクチャ、APIゲートウェイ、AIゲートウェイ、安全で匿名のコンテナ化アプリケーションのホスティングのためのPaaS、Kubernetesゲートウェイ、そしてホームラボインフラストラクチャとしても機能します。Octeliumは、WireGuard/QUICトンネルとパブリッククライアントレスアクセスを介して、アイデンティティベースの、アプリケーションレイヤー(L7)対応の、シークレットレスなセキュアアクセスを実現する、スケーラブルなゼロトラストアーキテクチャ(ZTA)を提供します。

Windows 95のプラグアンドプレイの裏に隠された著作権戦争

2025-06-29
Windows 95のプラグアンドプレイの裏に隠された著作権戦争

Windows 95でのプラグアンドプレイの実装は容易ではありませんでした。古いハードウェアを新しい機能と互換性を持たせるために、エンジニアは巧妙な回避策を用いました。「Not Copyright Fabrikam Computer」という文字列をBIOSに追加することで、LitWare Word Processorのライセンスチェックを欺き、ライセンスのないFabrikam PCでもフルバージョンをアンロックするという、興味深い例がありました。これは、初期のPC互換性の課題と、メーカーがソフトウェアライセンスを得るために費やした努力を浮き彫りにしています。

1 2 49 50 51 53 55 56 57 214 215