Category: 開発

OpenAIの大規模クラスタ障害:新たなテレメトリサービスが原因の予期せぬ事態

2024-12-16

OpenAIは12月11日、大規模なサービス停止に見舞われました。原因は、新たに導入されたテレメトリサービスです。このサービスは信頼性の向上を目指していましたが、Kubernetes APIサーバーに予想外の大きな負荷をかけ、サーバーが飽和状態に陥り、多くの大型クラスタでKubernetesコントロールプレーンが停止しました。結果として、DNSベースのサービスディスカバリメカニズムが機能しなくなりました。この事故は、複雑なシステムにおける予期せぬ相互作用と、フルロード時のみ発生する障害モードのテストの難しさを浮き彫りにしています。OpenAIは、クラスタサイズの縮小、Kubernetes管理APIへのネットワークアクセスの遮断、Kubernetes APIサーバーのスケールアップなどの対策でサービスを復旧しました。

Go Protobufの新しい不透明APIがパフォーマンスと安全性を向上

2024-12-16

Goチームは、既存のOpen Struct APIと共存するGo Protobufの新しい不透明APIをリリースしました。この新しいAPIは、生成されたコードと基盤となるメモリ表現を分離することで、パフォーマンスの向上、メモリ割り当ての削減、遅延デコードなどの最適化を実現します。構造体のフィールドを非表示にし、アクセサメソッドのみを通じてアクセスすることで、ポインタ関連のバグや意図しない共有を防止します。移行には、ハイブリッドAPIの有効化、`open2opaque`ツールの使用、そして不透明APIへの切り替えが含まれます。既存のOpen Struct APIは引き続きサポートされます。

(go.dev)
開発

GRUB2の非互換な変更がBIOSセットアップのブートループを引き起こす

2024-12-16

著者のDebianとKali Linuxシステムは、GRUB2のアップデートによって`fwsetup --is-supported`コマンドが追加された後、ブートループが発生しました。古いバージョンのGRUBはこのパラメータを認識しませんでした。問題は、システムのバックアップ復元後に残った古い`efifwsetup.mod`モジュールに起因し、新しいGRUB設定と古いモジュールとの間に競合が発生しました。`grub-efi-amd64-bin`パッケージをインストールすることで問題が解決しました。これは、ソフトウェアアップデートにおける下位互換性の重要性、およびGRUB2のような複雑なソフトウェアにおいて部分的な変更を行う際の潜在的な副作用を考慮する必要性を強調しています。

Rubyカンファレンスのまとめ:世界的な概要

2024-12-16

Ruby Video Talksは、世界中のRuby開発者カンファレンスの情報を集約するウェブサイトです。RubyConf 2024(70件の講演)やRails World 2024(46件の講演)などの主要イベントから、小規模な地域イベントまで、包括的なカレンダーを提供しています。Matzなどの主要スピーカーも紹介しており、日付、場所、トピックで検索できる機能があり、関連イベントを見つけやすくなっています。2025年のBalkan RubyやFriendly.rbなどの今後のカンファレンスも掲載されており、Rubyコミュニティにとってさらに多くの機会が約束されています。

GuileによるEmacs大胆な書き換えプロジェクト

2024-12-16

拡張性で知られるEmacsエディタは、そのコア言語であるEmacs Lisp(Elisp)のパフォーマンスと表現力に限界があります。これを解決するために、Guile-EmacsプロジェクトはEmacsのElispをGuile Lispに置き換えることを目指しています。長年の開発と休止期を経て、Robin TempletonとLarry Valkama両開発者によってGuile-Emacsが復活しました。このプロジェクトは、Elispとの互換性を維持しながら、Guileのコンパイラとパフォーマンスの利点を活用して、Emacsの速度と拡張性を向上させることを目指しています。最終目標は、EmacsのCコードのかなりの部分をLispで書き直すことで、カスタマイズ性を大幅に向上させることです。技術的および政治的な課題はありますが、このプロジェクトはEmacsの将来にとってエキサイティングな可能性を示しています。

開発

RustによるSQLite書き換え:Limboプロジェクトが待ち時間100倍削減を実現

2024-12-16

ヘルシンキ大学とケンブリッジ大学の研究者らが、SQLiteをRustで書き換え、非同期I/Oとio_uringを活用したLimboプロジェクトを開発しました。このプロジェクトは、特にマルチテナントサーバーレス環境において、テールレイテンシを最大100倍削減することに成功しました。同期バイトコード命令を非同期命令に置き換えることで、ブロックを回避し、並行処理を向上させています。Limboの改善は、特に高パーセンタイルのレイテンシに顕著に見られ、高い信頼性が求められるアプリケーションに最適です。

(avi.im)
開発 非同期I/O

Converge、シニアフルスタックエンジニア募集:100万ドル以上のARRを持つマーケティング測定プラットフォーム構築

2024-12-16

Y Combinator支援のConverge社は、ARRが100万ドルを超えるB2Cマーケティング測定プラットフォームを構築するシニアフルスタックエンジニアを募集しています。4名体制のチームは、180社以上の顧客を抱え、年間数十億ドルの売上高と月間数十億件のイベントを処理しています。顧客データ収集、ID解決、マーケティングアトリビューションなど、統合マーケティング測定スタックの構築に携わり、直接顧客と連携し、大きな裁量と影響力を持ちます。行動力、継続的な学習、前向きな姿勢、簡潔さを重視しています。Reactとバックエンド開発の熟練、本番ソフトウェアのデプロイとスケーリングに関する知識が必要です。

Xiaomi Home Assistant統合コンポーネントが正式リリース

2024-12-16

Xiaomiは、Xiaomi IoTスマートデバイスをHome Assistantに統合できるようにするXiaomi Home Assistant統合コンポーネントを正式にリリースしました。このコンポーネントは、Gitクローン、HACS、手動インストールなど、さまざまなインストール方法をサポートしています。ユーザーはXiaomiアカウントでログインする必要があります。複数のアカウントと地域の選択がサポートされています。このコンポーネントは、ほとんどのXiaomiスマートホームデバイスをサポートしますが、現在Bluetooth、赤外線、仮想デバイスは除外されています。制御方法は、クラウド制御とローカル制御(Xiaomiセントラルゲートウェイまたは内蔵ゲートウェイ機能を備えたデバイスが必要です)を含みます。MIoT-Spec-V2をHome Assistantエンティティにマッピングします。このコンポーネントは、複数の言語とデバッグモードもサポートしており、ユーザーのプライバシーとセキュリティを優先しますが、構成ファイルの注意深い保管が必要です。

プログラマーの100万ドルのミス:劇的な展開を伴うバグ

2024-12-16

3G通信スタートアップ企業で働くプログラマー、トレイは、小額のテスト取引を目的とした自動化された支払いテストプログラムを作成しました。しかし、コード内の3つのバグにより、プログラムは5分ごとに彼のテストアカウントに100ドルをクレジットしました。アクティビティチェックの欠如により、ゲートウェイの1つが故障したときにプログラムは数時間実行され続け、多額の金額が蓄積されました。翌朝、トレイはセキュリティチームから質問を受けましたが、彼の部長が状況を説明したため難を逃れましたが、テストアカウントの残高はゼロにリセットされました。

Modelica協会:複雑なシステムを効率的にモデル化

2024-12-16

Modelica協会は、Modelica言語とその関連ツールを推進しています。Modelicaは、複雑なサイバーフィジカルシステムをモデル化およびシミュレートするためのオブジェクト指向言語であり、特に、数学方程式によって制御される再利用可能なコンポーネントの非因果的モデリングに長けています。協会は、ユーザーがシステムを効率的にモデル化できるように、言語仕様、ツール、ライブラリ、およびコミュニティサポートを提供しています。

ミニマルNAS:Alpine initramfsシステム frood

2024-12-16

著者は、完全なAlpine Linuxシステムを含む単一の巨大なinitramfsイメージとして構築されたNASシステム、froodを紹介します。この設計により、起動時間が短縮され、ストレージデバイスの摩耗が軽減されます。設定は簡単で、ファイルはイメージに直接配置され、複雑なDSLや設定ツールは不要です。システムの状態はGitで追跡され、各起動は事実上新しい開始となり、設定の混乱を防ぎます。この記事では、alpine-make-rootfsスクリプトの使用、必須パッケージのインストール、起動スクリプトの作成など、システムの構築プロセスを詳細に説明しています。QEMUでのテストとシステムイメージの更新手順についても説明されています。要するに、froodは軽量で、保守および展開が容易なNASシステムであり、そのシンプルな設計思想は模倣に値します。

開発

HTTP/3の現状:普及に向けた課題と展望

2024-12-16

HTTP/3の仕様は完成していますが、正式な公開はまだ先です。サーバー側のサポートは予想以上に高く、特に上位サイトで顕著です。Cloudflareなどの大手企業はHTTP/3を有効化しており、ブラウザも広くサポートしています。しかし、curlなどのクライアントソフトウェアのHTTP/3サポートはまだ不完全で、主にQUIC対応のTLSライブラリの開発遅延が原因です。OpenSSLのQUICサポートは延期されており、BoringSSLやquictlsなどの代替案にもそれぞれ制限があります。HTTP/3は速度向上を約束していますが、実際の効果はネットワーク環境に依存します。今後のHTTP/3の広範な採用は、仕様の公開と成熟したTLSライブラリに依存します。

開発

RustのVec::drain:Dropを利用した安全性の確保

2024-12-16

この記事では、RustのVec::drainメソッドとそのDrop実装について詳しく解説し、所有権がどのように微妙なバグ(メモリ関連のバグなど)を防ぐかを示します。Vec::drainは、元のベクターへの可変参照を保持し、元のストレージのみを読み書きすることでパフォーマンスを最適化します。重要なのは、Drain構造体のDrop実装で、DropGuardを使用して、イテレーターが途中で破棄された場合でも、残りの要素を安全に元のベクターに戻すことで、メモリの安全性を保証する点です。この記事では、DrainとDropGuardの実装の詳細を徹底的に説明し、ゼロサイズの型やポインターのprovenanceなどの特殊なケースについても扱います。

開発

GNU Makeの新しい--shuffleモード:並列ビルドにおける隠れたバグを発見

2024-12-16

11年間、GNU Makeの並列ビルドでは再現困難なバグが問題となっていました。これを受けて、Makefileのターゲットの実行順序をランダムにシャッフルする新しい`--shuffle`モードが開発されました。これにより、gcc、vim、ghcなど30個以上のパッケージに隠れていたバグが効果的に発見されました。このモードはGNU Make 4.4の一部となり、`make --shuffle`または環境変数`GNUMAKEFLAGS=--shuffle`で利用できます。この強力な機能は、開発者が並列ビルドの問題を特定し解決するのに役立ち、ソフトウェア開発ツールの継続的な改善を強調しています。

Googleの新ローバランスPReQuaL:CPU負荷分散を超えて

2024-12-16

Google ResearchはNSDI 2024で、新しい負荷分散システムPReQuaL(Probing to Reduce Queuing and Latency)を発表しました。従来のCPU負荷分散とは異なり、PReQuaLはサーバーのレイテンシとアクティブなリクエストを積極的にプローブしてサーバーを選択することで、YouTubeなどのシステムにおけるテールレイテンシ、エラー率、リソース消費を大幅に削減します。YouTubeで1年以上運用されており、システム利用率の大幅な向上に貢献しています。この革新的なアプローチは従来の常識に挑戦し、高性能分散システムのための新しいパラダイムを提供します。

開発 負荷分散

ソフトウェアエンジニアのCADと3Dプリンティングの旅:過剰設計されたウェブカメラライザー

2024-12-16

ベテランソフトウェアエンジニアは、仮想世界のプログラミングに飽き足らず、現実世界で何かを作りたいと願いました。彼はBambu Lab X1C 3Dプリンターを入手し、すぐに3Dプリントを習得しました。その後、Fusion 360 CADソフトウェアの学習を始め、その制約の概念がiOSのUI制約と似ていること、パラメトリックCAD設計が関数型プログラミングと共通点が多いことに気づきました。彼の最初のプロジェクトは、ウェブカメラが画面を塞いでしまう問題を解決するための、過剰設計されたウェブカメラライザーです。このプロジェクトを通じて、彼は3DプリントとCAD設計の楽しさを味わうだけでなく、設計段階で製造、材料などの詳細を考慮する必要性を深く理解しました。

Adélie Linux 1.0-BETA6リリース:強化された互換性と充実した機能

2024-12-16

Adélie Linuxは、1.0-BETA6をリリースしました。32ビットと64ビットのARM、POWER、x86アーキテクチャをサポートし、スマートフォン、ゲーム機、スーパーコンピューターなどを網羅しています。このリリースには35以上の新しいパッケージ、GCC 13、LLVM 18、Rust 1.80、Linuxカーネル6.6 LTSのアップデート、GRUBとWaylandのサポート強化などが含まれています。多くのバグが修正され、ユーザーエクスペリエンスが向上しました。既知の問題点もいくつか残っていますが、Adélieチームは積極的に解決に取り組んでおり、バグレポートとフィードバックを歓迎しています。

Cyphernetes:クラウドネイティブKubernetesクラスタ管理の自動化

2024-12-16

Cyphernetesは、クラウドネイティブKubernetesクラスタの管理を自動化するプロジェクトです。デプロイ、アップグレード、管理プロセスを簡素化することで、運用上の複雑さを大幅に軽減します。トラフィックの急増に対応するためにクラスタを容易に拡張し、障害を自動的に修復し、サービスの安定性を確保することを想像してみてください。すべて手動操作なしで実現できます。Cyphernetesは熟練したKubernetesクラスタ管理者として機能し、アプリケーションを24時間365日保護することで、イノベーションに集中できるようにします。

開発 自動運用

Dilloブラウザ:25年の歴史、そして復活劇

2024-12-16

1999年に誕生したDilloウェブブラウザは、25年の歳月を経て、幾多の困難を乗り越えてきました。開発は幾度となく停滞しましたが、生き残ってきました。当初はJorge Arellano Cid氏が主導し、GTKとFLTKという主要な段階を経て、中心的な開発者も変わり、プロジェクトは浮き沈みを繰り返しました。2024年、Rodrigo Arias Mallo氏がプロジェクトを引き継ぎ、コミュニティの支援を受けてバージョン3.1.1をリリースし、このベテランブラウザを再び脚光を浴びる存在にしました。Dilloの物語は、オープンソースの精神を体現する、技術遺産と革新の伝説的な物語です。

Hyperbola GNU/Linux-libre:自由と長期サポートを重視した軽量OS

2024-12-15

Hyperbola GNU/Linux-libreは、コミュニティ主導のオペレーティングシステムプロジェクトで、完全に自由で、安定性、セキュリティ、シンプルさ、軽量さを備えた長期サポート版を提供することを目指しています。Arch Linuxのパッケージ管理システムとDebianのセキュリティパッチを利用し、GNU自由システム配布ガイドラインに準拠しています。i686とx86_64アーキテクチャをサポートしており、BSDベースのシステムであるHyperbolaBSDのリリースも計画されています。最近のニュースには、32ビットシステムの継続的なサポート、Debian 12以降のパッチセットの使用停止、フリーソフトウェアファウンデーションの機械学習に関する声明への懸念表明などが含まれています。

GitHubプロジェクトマップ:40万以上のプロジェクトを視覚化

2024-12-15

開発者Anvakaは、公開データを使用して、40万以上のGitHubプロジェクトを視覚化したインタラクティブマップを作成しました。このプロジェクトは、Jaccard類似度を使用してプロジェクト間の関係を計算し、Leidenアルゴリズムを使用してクラスタリングを行います。その結果、GitHubエコシステムの視覚的に素晴らしい表現となり、ユーザーはプロジェクトを検索し、プロジェクト間の接続を探索して、その複雑さと豊かさを明らかにすることができます。

Vercel、ローカルServerless関数ランタイムƒunを発表

2024-12-15

Vercelは、ローカルServerless関数開発ランタイムであるƒunをリリースしました。開発者はこれにより、AWS Lambda環境をローカルでエミュレートできます。Node.jsやPythonなど、さまざまなランタイムをサポートし、クラウドにデプロイせずにServerless関数の迅速なテストとデバッグを可能にします。ƒunは実際のLambda環境をできる限り模倣しようとしますが、プロセスサンドボックスとユーザー権限において重要な違いがあります。

Bevy 0.15でWeb上でドラッグ&ドロップで画像を扱う

2024-12-15

この記事では、WASMを介してBevy 0.15にWebネイティブAPIを統合し、Webブラウザで画像のドラッグアンドドロップ機能を実現する方法を示します。 wasm-bindgen、gloo、bevy_channel_triggerを使用して、RustでDOMイベントを処理し、ファイルデータを取り出し、Bevyエンジンに渡して画像の読み込みとレンダリングを行います。このプロセスはJavaScriptの実装と似ていますが、Rustの機能を活用し、エラー処理やイベントリスナーのメモリリークに対処しています。結果として、ドロップされたPNG画像を読み込んで表示できるBevy Webアプリケーションが作成されます。

開発 Web開発

プログラマーの集中度インジケーター:FlowLight誕生

2024-12-15

仕事の割り込みの影響に関する研究論文に触発されたプログラマーのShae Erissonは、プログラマーが集中した「フロー」状態にあるかどうかを示すFlowLightというDIYシステムを作成しました。このシステムはEmacsエディターのアイドル時間を監視し、プログラマーが一定時間操作していない場合、Adafruit MagTagボードのLEDが色を変えます(アイドル時は緑、ビジー時は赤)。ErissonはCircuitPythonでHTTPサーバーも作成し、LEDの色と状態をリモートで制御できるようにしました。アイドル時間監視の精度や視覚的な魅力向上など、改善の余地はありますが、このシステムはプログラマーが割り込みを避け、生産性を向上させるのに効果的に役立ちます。

WASMプログラムがnode:wasiのファイルシステムサンドボックスを回避

2024-12-15

このプロジェクトは、WASMプログラムがnode:wasiのpreopensディレクトリの制限を回避して、サンドボックス外のファイルにアクセスする方法を示す概念実証を示しています。通常、WASMプログラムは、事前に開かれたディレクトリへのアクセスに制限されています。しかし、正確なタイミングでシンボリックリンクを使用してファイルを置き換え、外部プロセスを実行することで、この制限を回避できます。これは、node:wasiの実用的なセキュリティの脆弱性ではなく、潜在的なエッジケースです。このプロジェクトは、node:wasiが悪意のあるコードによる外部ファイルへのアクセスを完全に防ぐものとして信頼すべきではないことを強調しています。

開発

macOS GPU最適化:速度向上のためにリソースを無駄にする

2024-12-15

Anukariの開発者は、macOSでのGPUパフォーマンスの最適化においてボトルネックに遭遇しました。GPUパフォーマンスに対するシステムの制御が限られているため、AppleのGPUパフォーマンス調整メカニズムはAnukariのユースケースではパフォーマンスが低く、オーディオのグリッチが発生しました。開発者は回避策として、GPUスレッドグループワープを無駄な計算に割り当て、「だます」ことでシステムにGPUクロックスピードの増加を強制し、オーディオレイテンシを大幅に削減し、パフォーマンスを向上させました。粗雑な方法ではありましたが、この方法はmacOSのパフォーマンス問題を解決する上で効果的であることが証明されました。しかし、異なるDAW(AbletonとGarageBand)間でパフォーマンスの向上が大きく異なっており、さらなる最適化が必要です。

大規模言語モデルはプログラミングの終焉をもたらすか?

2024-12-15

近年、大規模言語モデル(LLM)によるコード生成能力の向上は、プログラミングの終焉を示唆する議論を巻き起こしています。しかし、この記事では、そのような楽観的な見解に反論しています。プログラム合成の計算複雑性に着目し、正しいコードを生成することはPSPACE完全問題であることを示しています。つまり、中規模の入力でも指数関数的な時間がかかる可能性があるということです。LLMはプログラマーを支援し効率を高めるツールとなり得ますが、本質的な限界から、人間のプログラマーを完全に置き換えることはできません。プログラミングの中核は、問題解決とシステム設計であり、人間の創意工夫と創造性を必要とします。

楽観的なコンピューティング:より良いソフトウェアへの道

2024-12-15

この記事では、「楽観的なコンピューティング」という概念を探求しています。それは盲目的な楽観主義ではなく、いくつかの強力なアイデアの融合です。「起動してすぐに実行」(「boot to kill」)、ローカルファーストの原則、ユーザーエンパワーメントです。著者は、依存関係の制限、ワークフローの簡素化、「すぐに動作する」シームレスなエクスペリエンスの創出、ユーザーへのより多くの制御の付与によって、より信頼性が高く、安全で、長持ちするソフトウェアを作成できると主張しています。この哲学は、個々のユーザーとエンタープライズソフトウェア開発の両方に適用され、最終的にはユーザーのプライバシーとデータ所有権を尊重するデジタル世界を目指しています。

Spark、DuckDB、Polarsの性能ベンチマーク:小~中規模ワークロードに最適な選択肢

2024-12-15

この記事では、Spark、DuckDB、Polarsの3つのデータ処理エンジンをベンチマークし、10GBと100GBのデータセットに対するパフォーマンス、コスト、開発の容易さを比較しています。その結果、大規模データセットとETLタスクでは、分散コンピューティング機能と成熟したエコシステムを持つSparkが依然として優勢であることが示されました。一方、DuckDBとPolarsは、小規模データセットのインタラクティブクエリとデータ探索において優れた性能を発揮します。著者は、具体的なニーズに合わせてエンジンを選択し、SparkをETLに、DuckDBをインタラクティブクエリに、Polarsをニッチなシナリオに使用するなど、戦略的な組み合わせとマッチングを推奨しています。

ゼロから構築した高速LLM推論エンジン

2024-12-15

この記事では、著者がライブラリを使用せずに、C++とCUDAを使ってLLM推論エンジンをゼロから構築した過程について説明しています。この過程を通して、CUDAカーネルからモデルアーキテクチャまで、LLM推論のフルスタックを深く理解し、様々な最適化が推論速度にどのように影響するかを学びました。目標は、一般的なオープンソースモデルの重みをロードし、単一CPU+GPUサーバー上でシングルバッチ推論を実行できるプログラムを作成し、トークンスループットを反復的に改善して、llama.cppを上回ることであり、CPUとGPUの両方での最適化ステップ、マルチスレッディング、ウェイト量子化、SIMD、カーネル融合、KVキャッシュ量子化などを詳細に説明し、ボトルネックと課題を分析しています。最終的には、ローカルLLM推論において、最先端に近いパフォーマンスを実現しています。

1 2 12 13 14 15 17 19 20