Category: 開発

MSVC Address Sanitizer (ASan) の大幅な改良

2025-02-25
MSVC Address Sanitizer (ASan) の大幅な改良

マイクロソフトは、MSVC Address Sanitizer (ASan) の品質を大幅に向上させました。ASan の主要部分を LLVM にアップストリームすることで、LLVM コミュニティからの改善をより迅速に統合できるようになりました。さらに、コンパイラ、リンカ、ツールを含む MSVC コードベースに ASan を統合し、継続的インテグレーションでメモリ安全性の問題を検出できるようにしました。Visual Studio 2022 バージョン 17.13 では、誤検出の削減、エラーレポートの改善、マルチプロセスシナリオの処理など、多くの問題が修正されました。

開発

Xcodeの常時インターネット接続:プライバシーに関する懸念とビルド速度のボトルネック

2025-02-25

開発者のJeff Johnsonは、Xcodeがプロジェクトのビルド中にAppleサーバーに頻繁に接続し、ビルド時間が遅くなること、特に「プロビジョニング入力の収集」フェーズで遅くなることを発見しました。Little Snitchを使用してdeveloperservices2.apple.comへの接続を無効にしたことで、ビルド速度の問題を解決しました。さらに、Xcodeは起動時とプロジェクトを開く際に、devimages-cdn.apple.comやappstoreconnect.apple.comなどの他のAppleサーバーにも接続しますが、これらは不要であり、開発者の情報をAppleに送信している可能性があります。Jeffは、Xcodeが開発者分析収集メカニズムとして機能し、開発者のプライバシーを侵害していると主張しています。

HTTP/2:Ruby HTTPサーバーにおいて重要でない理由

2025-02-25

この記事では、PumaなどのRuby HTTPサーバーにおけるHTTP/2サポートの関連性について論じています。著者は、HTTP/2の主な利点である、ページ読み込み速度を向上させるための多重化はインターネット上では重要ですが、LAN上ではほとんどメリットがないと主張しています。LAN内のレイテンシが低く、接続が長時間維持されるため、TCPのスロースタートの影響はごくわずかです。さらに、HTTP/2のサーバープッシュ機能は有害であることが判明し、より洗練された103 Early Hintsに取って代わられました。著者は、HTTP/2の処理をロードバランサーまたはリバースプロキシに任せることで、アプリケーションサーバーのデプロイとメンテナンスを簡素化することを提唱しています。

開発

LLPlayer:言語学習のための多言語字幕対応メディアプレイヤー

2025-02-25

LLPlayerは、言語学習のために設計されたオープンソースのメディアプレイヤーです。2つの字幕の同時表示、AIによるリアルタイム字幕生成(99言語対応)、リアルタイム翻訳(134言語対応)、OCR字幕認識、様々なビデオと字幕フォーマットのサポート、単語の即時検索などを備えています。OpenAI Whisper、Google Translate、DeepL、ffmpegなどの技術を活用し、LLPlayerは高い効率性を提供し、字幕サイドバーとネタバレ防止機能も備えています。すべてのコードはC#で記述されており、カスタマイズが容易です。

開発

DeepEP:Mixture-of-Expertsのための高効率通信ライブラリ

2025-02-25
DeepEP:Mixture-of-Expertsのための高効率通信ライブラリ

DeepEPは、Mixture-of-Experts(MoE)とエキスパート並列処理(EP)用に設計された通信ライブラリであり、高スループットで低レイテンシのオールツーオールGPUカーネル(MoEディスパッチとコンバイン)を提供します。FP8を含む低精度演算をサポートしています。DeepSeek-V3のグループ制限ゲートアルゴリズムに最適化されており、非対称ドメイン帯域幅転送(例:NVLinkからRDMA)のためのカーネルを提供します。これらのカーネルは高スループットを実現し、トレーニングと推論プリフィリングのタスクに適しています。SM(ストリーミングマルチプロセッサ)数の制御もサポートされています。レイテンシに敏感な推論デコードのために、純粋なRDMAを使用する低レイテンシカーネルは遅延を最小限に抑えます。フックベースの通信計算オーバーラップ方法が含まれており、SMリソースを消費しません。このライブラリはInfiniBandでテストされており、理論的にはRoCEとも互換性があります。

開発

AI時代におけるブログの意義

2025-02-25
AI時代におけるブログの意義

この記事では、ChatGPTなどのAIが普及した時代におけるブログ執筆の価値を探っています。AIが容易に情報を取得・統合できるようになった現在でも、ブログ執筆には依然として価値があります。それは、自身の知識の定着、他者への貢献、個人的ブランド構築(ただしブログだけでは難しい)、達成感の獲得、そして思考能力を示す文章ポートフォリオの構築によるキャリアアップといったメリットがあるためです。著者は、AIの影響は読者とのインタラクションによる達成感の減少に留まり、ブログ自体の価値を否定するものではないと主張しています。

開発

アンクル・ボブとジョン・オスターハウトによるソフトウェア設計論争

2025-02-25
アンクル・ボブとジョン・オスターハウトによるソフトウェア設計論争

Robert "Uncle Bob" MartinとJohn Ousterhoutは、メソッドの長さ、コードのコメント、テスト駆動開発(TDD)といった重要なトピックを網羅した、ソフトウェア設計原則に関する活発な議論を行いました。コードの分割の程度、コメントの必要性、TDDの利点と欠点について激しく議論し、コード例や具体的なシナリオを用いてそれぞれの主張を裏付けました。この議論は、ソフトウェア設計におけるトレードオフの重要性、簡潔さと可読性を追求する際の極端なことを避ける必要性を浮き彫りにしています。

開発

LuaでHTMLビルダーDSLを作成する:賢いアプローチ

2025-02-24
LuaでHTMLビルダーDSLを作成する:賢いアプローチ

この記事では、Luaを使用してHTMLを生成するためのドメイン固有言語(DSL)の構築方法を示します。著者は、Luaの構文機能(オプションの括弧や関数チェーンなど)と、関数環境やメタテーブルを巧みに利用して、簡潔でエレガントなHTML生成ソリューションを作成しています。カスタム`__index`メタメソッドはHTMLタグ関数を動的に生成し、`append_all`関数は文字列を効率的に連結します。その結果、完全に機能するHTMLビルダーDSLが実現し、コードの可読性と開発効率が大幅に向上します。この記事では、セキュリティの脆弱性を防ぐためにHTMLエスケープが非常に重要であることも強調しています。

Electro:超高速軽量画像ビューア

2025-02-24
Electro:超高速軽量画像ビューア

ElectroはRustで構築された超高速軽量画像ビューアです。開発者体験を重視した設計で、内蔵コマンドラインターミナルを備え、ローカルおよびWebホストされた画像を瞬時に表示します。最大の強みは比類のないパフォーマンスです。画像はほぼ瞬時に読み込まれます。Electroはオープンソースで拡張が容易なため、開発者はコードに貢献したり、独自のバージョンを作成したりできます。

Geocodioの無料ティア:不正利用防止と正当なユーザーのバランス

2025-02-24
Geocodioの無料ティア:不正利用防止と正当なユーザーのバランス

Geocodioは、不正利用のリスクがあるにもかかわらず、無料ティアを維持しています。当初、単純なIPアドレスによるブロックは、ユーザーエクスペリエンスの悪化とサポート時間の無駄につながりました。そこで、ブラウザ、IPアドレス、メールアドレスなど、数十の要素を総合的に考慮した詳細なリスクスコアシステムに移行しました。これにより、高リスク登録は自動的に識別・処理され、中リスク登録はCAPTCHAやメールアドレス確認を求められる場合があります。このシステムは人的介入を最小限に抑え、セキュリティとユーザーエクスペリエンスのバランスを取り、無料ティアの持続可能性を確保しています。

ベクトルデータベースを超えて:ParquetとPolarsによる効率的なテキスト埋め込み処理

2025-02-24
ベクトルデータベースを超えて:ParquetとPolarsによる効率的なテキスト埋め込み処理

この記事では、ベクトルデータベースに頼ることなく、テキスト埋め込みを効率的に処理する方法を紹介します。著者は、Magic: The Gatheringカードの埋め込みとそのメタデータを含む表形式のデータをParquetファイルに格納し、Polarsライブラリを使用して高速な類似性検索とデータフィルタリングを行います。Polarsのゼロコピー機能とネストされたデータに対する優れたサポートにより、このアプローチは従来のCSVやPickleメソッドよりも高速で効率的であり、データセットのフィルタリング時でも高いパフォーマンスを維持します。著者はCSV、Pickle、NumPyなどの他のストレージ方法と比較し、中規模のテキスト埋め込みを処理するにはParquetとPolarsの組み合わせが最適であり、非常に大規模なデータセットを処理する場合のみベクトルデータベースを検討する必要があると結論付けています。

Neut:静的メモリ管理を持つ関数型プログラミング言語

2025-02-24

Neutは、静的メモリ管理を備えた関数型プログラミング言語であり、完全なλ計算のサポート、予測可能な自動メモリ管理、そして上記の両方を達成するための型システムへのアノテーションの不要さを巧みに組み合わせたものです。従来のガベージコレクションとは異なり、Neutはリソース処理に型指向のアプローチを採用しています。型を、型値を破棄/コピーできる関数に変換することで、コンパイラは各変数が正確に一度だけ使用されるようにします。コピーが必要な場合でも、NeutはモダールロジックのT-necessity演算子を使用して、Rustの借用のようなものを実現することで、不要なコピーを回避します。さらに、NeutはLLVM IRとバイナリにコンパイルされ、組み込みのLSPサーバー、コードフォーマッタ、スクリプト言語のような迅速なプロトタイピング体験を提供します。独自のモジュールシステムは、tarballのダイジェストを使用してモジュールを区別し、バージョン情報を使用してモジュールIDを定義します。

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

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

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

開発

確率積分入門:離散ステップから連続的なランダムネスへ

2025-02-24

このブログ記事は、確率積分へのアクセスしやすい入門を提供します。パスカルの三角形と二項分布から始めて、ブラウン運動と伊藤積分の直感を構築します。ブラウン運動の物理的意味と数学的導出を説明し、伊藤の補題と確率微分方程式(SDE)を紹介し、ストラトノビッチ積分にも触れます。多数の図解とコード例が含まれており、確率積分を探求したい人にとって理想的です。

DOS 3.3 SYS.COMコマンドに見つかった隠れたバグ:NetDriveディスクイメージ破損の謎

2025-02-24

この記事では、著者がDOS 3.3システムコマンド`SYS.COM`のバグを調査した過程を詳細に説明しています。このコマンドはブートローダーコードをディスクにコピーしますが、NetDrive仮想ディスクイメージで使用すると、イメージが破損します。綿密な分析の結果、著者は`SYS.COM`が、ディスクパラメータを取得するために使用される汎用IOCTL呼び出しの戻り値をチェックしていないことを発見しました。この呼び出しが失敗した場合(例:NetDriveドライバがその機能をサポートしていない場合)、`SYS.COM`は誤ってゴミデータをディスクのブートセクタに書き込み、イメージを破損させます。このバグは、DOSがディスクのジオメトリ情報を取得しようとするため、特定の種類のディスクイメージ(例:ハードディスクイメージ)でのみ発生します。フロッピーディスクイメージでは発生しません。著者は最終的にバグの根本原因を突き止め、発生する条件を説明しています。

開発

Ente:Googleフォトの代替手段をセルフホストし、プライバシーを保護する

2025-02-24
Ente:Googleフォトの代替手段をセルフホストし、プライバシーを保護する

この記事では、オープンソースのGoogleフォト代替手段であるEnteをセルフホストする方法について詳しく説明します。Kubernetesクラスタにサーバーをデプロイし、GitHub Pagesにフロントエンドをデプロイする方法を解説しています。必要なコード、設定ファイル、Cloudnative-PGデータベースの設定方法、AWS Parameter Storeからのシークレットの取得方法などが含まれています。技術的な知識が必要ですが、Kubernetesに精通しており、プライバシーを重視するユーザーにとって理想的です。GitHub Actionsを使ったカスタムDockerイメージのビルド方法と、Terraformを使ったGitHubリポジトリの管理方法についても説明しています。

開発

Emacs 30.1:ネイティブコンパイル、Androidサポートなど

2025-02-24
Emacs 30.1:ネイティブコンパイル、Androidサポートなど

Emacs 30.1がリリースされました。多くの新機能と改良が含まれています。ネイティブコンパイルがデフォルトで有効になり、パフォーマンスが大幅に向上しました。Androidの完全サポートが追加され、タッチスクリーンの操作性も向上しています。その他にも、組み込みのJSONパーサー、改良されたミニバッファの補完、強化されたOrgモードのURIプロトコル統合など、多くの改善が施されています。このリリースは、Emacsにとって大きな進歩です。

RustのLinuxカーネル統合:遅々とした進捗と激しい議論

2025-02-24
RustのLinuxカーネル統合:遅々とした進捗と激しい議論

RustのLinuxカーネルへの統合は、当初は有望視されていたものの、大きな逆風に見舞われています。2022年のLinus Torvaldsによる承認にもかかわらず、新しい言語の学習をためらうベテランカーネル開発者からの抵抗や、非技術的な障害のために、進捗は遅々としています。最近、Asahi LinuxプロジェクトのリーダーであるHector Martin氏がRust実装における障害を理由に辞任し、激しい議論を引き起こしました。Torvalds氏はRustの可能性を認めつつも、採用を強制するつもりはないと強調しており、よりニュアンスのある解決策が模索されています。

開発

ゼロからBitTorrentクライアントを作る:週末プロジェクト

2025-02-24

この記事では、BitTorrentクライアントを構築する週末プロジェクトについて詳しく説明します。BitTorrentプロトコルの仕組み、ピアの発見、.torrentファイル(Bencode)の解析、トラッカーとの通信、ピアとのハンドシェイク、ファイル断片のダウンロードなどの手順を解説しています。Go言語を使用し、Bencodeパーサー、トラッカーリクエストビルダー、メッセージパーサー、並列ダウンロード管理などの重要なコードスニペットを提供しています。Bitfield、ブロックリクエスト、パイプラインなどの技術的な詳細についても説明し、並列処理と状態管理の重要性を強調しています。一部のコードは省略されていますが、この記事はBitTorrentクライアントを構築するための明確なロードマップを提供しています。

開発

openCFS:成熟したオープンソースマルチフィジックスシミュレーションツール

2025-02-24

openCFSは、有限要素法に基づくマルチフィジックスモデリングとシミュレーションツールであり、20年にわたる研究主導の開発を誇ります。そのコアは、科学研究と産業用途で使用されています。主な機能には、さまざまな物理場とそのカップリング、非適合グリッド技術、構造最適化、柔軟なデータ交換、スクリプト可能なXML入力、強力な組み込みライブラリなどが含まれます。豊富なサンプル、包括的なテストスイート、大学でのコースでの使用により、容易に学習できます。活気のあるコミュニティとEnSimTech UGによる商用サポートにより、継続的な開発とアクセシビリティが確保されています。

`target='_blank'` のアンダーバーの謎

2025-02-24

`target='_blank'` にアンダーバーが必要な理由を不思議に思ったことはありませんか?HTML5 以前は、開発者は `` を使用してSPAのような機能を作成し、ウィンドウをそれぞれ固有のIDを持つフレームに分割していました。`target` 属性は、リンクをどのフレームに読み込むかを指定しました。`_blank` はフレーム名ではなく、新しいウィンドウ(当時はタブは一般的ではありませんでした)を開くようにブラウザに指示していました。アンダーバーは、特別な値であり、フレーム名ではないことを示していました。`` は非推奨となりましたが、`_blank` の慣習は残っています。

開発

JSON:Unixシステムにおける機械可読出力のための実際的な選択肢

2025-02-24

Postfixメールキューからメールを削除した経験に基づき、著者は機械可読出力形式としてJSONを使用することを提唱しています。JSONは完璧ではありませんが、Unixシステムにおいて、明確性、幅広い互換性、豊富なツールサポート、他の形式への容易な変換など、多くの実用的な利点があります。著者は、新しいプログラムではJSONのみを機械可読出力形式として使用するのが最も簡単なアプローチであり、カスタム形式設計の複雑さを回避し、Unixプログラム間の相互運用性を促進すると示唆しています。

arXivLabs:コミュニティとの協働によるarXivの新機能開発

2025-02-24
arXivLabs:コミュニティとの協働によるarXivの新機能開発

arXivLabsは、共同作業者がarXivの新しい機能をウェブサイト上で直接開発・共有できる実験的なフレームワークです。arXivLabsと連携する個人や組織は、オープンネス、コミュニティ、卓越性、ユーザーデータのプライバシーというarXivの価値観を共有しています。arXivはこれらの価値観にコミットしており、それらを遵守するパートナーのみと協力しています。arXivコミュニティを強化するアイデアをお持ちですか?arXivLabsについて詳しく学びましょう。

開発

OBS StudioとFedora Flatpakの紛争が解決

2025-02-24
OBS StudioとFedora Flatpakの紛争が解決

OBS StudioチームとFedora Linux開発者間の、Fedora Flatpak版OBS Studioに関する紛争が解決しました。当初の法的脅迫により状況は悪化しましたが、両者は話し合いに臨みました。OBS Studioチームは、知的財産権の削除やFedora Flatpakアプリケーションの名称変更を求める要求を取り下げました。 今後は、Qtランタイムの回帰、バグ報告メカニズム、ハードウェアアクセラレーション、X11フォールバック、プラグインに関する問題など、残された技術的問題の解決に協力します。

開発

OpenAIが認める:最先端のAIモデルでも人間のプログラマーの代わりにはならない

2025-02-24
OpenAIが認める:最先端のAIモデルでも人間のプログラマーの代わりにはならない

OpenAIの新しい論文によると、GPT-4やClaude 3.5などの最先端の大規模言語モデル(LLM)でも、ソフトウェアエンジニアリングタスクの大部分をこなすことができないことが明らかになりました。研究者たちは、Upworkから1400以上のソフトウェアエンジニアリングタスクを集めた新しいベンチマークSWE-Lancerを使用しました。その結果、これらのモデルは表面的な問題しか解決できず、大規模プロジェクトのバグや根本原因を発見することはできなかったことがわかりました。LLMは高速ですが、正確性と信頼性が人間のプログラマーに取って代わるには不十分であり、OpenAIのCEOであるSam Altman氏の予測とは矛盾しています。

開発

効率的なスライディングウィンドウアルゴリズム:関数型キューを用いたO(n)解法

2025-02-24

この記事では、関数型プログラミングの手法を用いて、スライディングウィンドウ問題を効率的に解決するアルゴリズムを紹介します。2つのスタックに基づいて構築された関数型キューを用い、モノイドの性質を利用することで、最大値、最小値、合計などのスライディングウィンドウの様々な統計量をO(n)時間で計算します。この記事では、モノイドで注釈されたスタックとキューの実装の詳細、コード例、そして関連するアルゴリズムの課題について説明します。

LeetArxiv: Arxiv論文のためのLeetCode - 研究のための実践的なコーディングガイド

2025-02-24
LeetArxiv: Arxiv論文のためのLeetCode - 研究のための実践的なコーディングガイド

LeetArxivは、研究職への転身を図るプログラマーを対象に、Arxiv論文に基づいた毎週のステップバイステップのコーディングガイドを提供しています。ケーススタディでは、1981年の論文からのAAN離散コサイン変換(DCT)の実装に焦点を当てています。このガイドは、DCT-IIの方程式とAAN最適化(高コストなコサイン計算の削減、対称性の活用、事前に計算された定数の使用、並列処理の有効化)を詳細に説明するC言語実装(他の言語にも容易に適用可能)を提供しています。このチュートリアルでは、アルゴリズムのフローグラフとコードを網羅しており、実践的なコーディング演習を通して、複雑な研究をアクセスしやすくしています。

FlashMLA:Hopper GPU向けの高効率MLAデコードカーネル

2025-02-24
FlashMLA:Hopper GPU向けの高効率MLAデコードカーネル

FlashMLAは、可変長シーケンスの提供用に最適化された、Hopper GPU向けの非常に効率的なMLAデコードカーネルです。CUDA 12.6を使用するH800 SXM5では、メモリバウンド構成で最大3000 GB/s、計算バウンド構成で580 TFLOPSの性能を実現します。FlashMLAは、BF16精度とブロックサイズ64のページングされたkvcacheを使用します。FlashAttention 2&3とCutlassプロジェクトにインスパイアされたFlashMLAは、大規模シーケンス処理において大幅なパフォーマンス向上を提供します。

奇跡!ソート関数のバグを発見!

2025-02-24
奇跡!ソート関数のバグを発見!

著者は長年のプログラミング経験の中で信じられない出来事を語ります。JavaScriptの組み込み`sort()`関数にバグを発見したのです!このバグにより、ソート結果が間違っており、長い間彼を悩ませました。最終的に、彼はCode Studioチームにこのバグを報告し、迅速な対応と修正を受けました。この物語は、一見完璧に見えるシステムソフトウェアにもバグが存在する可能性があり、プログラマーは常に懐疑的な姿勢を保ち、コンパイラやシステムを盲目的に非難するのではなく、粘り強く問題の根本原因を探求する必要があることを鮮やかに示しています。

線形時間アルゴリズムの壁を破る:亜線形時間アルゴリズムの台頭

2025-02-24

線形時間アルゴリズムは長年、問題解決のゴールドスタンダードとされてきました。しかし、巨大なデータセットの普及に伴い、亜線形時間アルゴリズムがますます注目を集めています。亜線形時間アルゴリズムは入力データのごく一部しか読み込まないため、一見不可能に思えます。決定的な亜線形時間アルゴリズムが一部の問題に存在する一方で、ほとんどの問題ではランダム化が必要となり、近似解が得られます。近年、古典的な最適化問題やプロパティテストなど、さまざまな問題でブレークスルーが達成されています。Szemerédiの正則性補題や低ランク行列近似などの手法が、亜線形アルゴリズムの設計に役立っていますが、その範囲と限界についてはまだ多くのことが解明されていません。

1 2 152 153 154 156 158 159 160 214 215