Category: 開発

軽量な自己ホスト型プロキシPipeGate:「貧者のngrok」

2024-12-17
軽量な自己ホスト型プロキシPipeGate:「貧者のngrok」

PipeGateは、FastAPIを使用して構築された軽量で自己ホスト型のプロキシであり、「貧者のngrok」として設計されています。これにより、ローカルサーバーをインターネット上に公開でき、ローカルマシンから外部世界へのトンネルを簡単に作成できます。ngrokのようなトンネリングサービスの内部動作を理解したい、または独自のインフラストラクチャ上にホストされたカスタマイズ可能な代替手段が必要な開発者にとって、優れたツールです。自己ホスト、一意の接続、カスタマイズ性、軽量設計、学習の容易さなどが主な特徴です。インストールはgit cloneまたはpipを使用して簡単に行えます。

Bruin:SQLとPythonでデータパイプラインを構築

2024-12-17
Bruin:SQLとPythonでデータパイプラインを構築

Bruinは、データの取り込み、SQLとPythonによるデータ変換、データ品質チェックを単一のフレームワークに統合した強力なデータパイプラインツールです。主要なデータプラットフォームと連携し、ローカルマシン、EC2インスタンス、またはGitHub Actions上で実行できます。主な機能には、データの取り込み、SQLとPythonによる変換、データ品質チェック、Jinjaテンプレート、エンドツーエンドの検証、複数の環境のサポートなどがあります。シンプルなpipeline.ymlファイルを使用してパイプラインを簡単に定義できます。

オープンソースの料理用スパイスデータベースSpiceNiceがローンチ

2024-12-17
オープンソースの料理用スパイスデータベースSpiceNiceがローンチ

SpiceNiceは、料理用スパイスの包括的なデータベースを提供する新しいオープンソースウェブサイトです。各スパイスに関する詳細な情報(植物名、料理での使用法、原産国など)と、対応する植物に関する情報を提供します。Strapi(バックエンド)、PostgreSQL(データベース)、Astro(フロントエンド)を使用して構築されたSpiceNiceは、料理人、生物学者、農家、スパイス愛好家にとっての中心的なリソースとなることを目指しています。将来の計画には、Web API、多言語サポート、コミュニティフォーラムが含まれます。

開発 スパイス

Discourse、オンラインコミュニティ育成の10周年を祝う

2024-12-17
Discourse、オンラインコミュニティ育成の10周年を祝う

オープンソースのフォーラムソフトウェアであるDiscourseは、2024年8月26日に10周年を迎えました。オンラインでの議論のレベルを向上させるというビジョンのもと、4人の小さなチームから25カ国にまたがる100人以上の従業員へと成長しました。このプラットフォームは、20,000以上のコミュニティ、1億700万件以上のトピック、そして約16.5億件もの投稿を誇ります。継続的な開発には、49個のプラグイン、チャット機能、そしてモデレーションとユーザーエクスペリエンス向上のためのAI搭載ツールの追加が含まれています。この成功は、オープンソースであること、ユーザーフィードバックへのコミットメント、そしてチームの献身が証明しています。

Langfuse:オープンソースLLMエンジニアリングプラットフォームが開発を効率化

2024-12-17
Langfuse:オープンソースLLMエンジニアリングプラットフォームが開発を効率化

Langfuseは、大規模言語モデル(LLM)アプリケーションの開発と展開を簡素化するために設計された、オープンソースのLLMエンジニアリングプラットフォームです。LLMの可観測性、メトリクス、評価、プロンプト管理、プレイグラウンド、データセットなどの機能を提供し、LlamaIndex、Langchain、OpenAI SDK、LiteLLMなどのツールとシームレスに統合されます。開発者はLangfuseを使用して、LLMのパフォーマンスを監視し、プロンプトを管理し、モデルの有効性を評価し、最終的にLLMアプリケーションの開発を加速させることができます。

オープンソースファームウェア:必要性と戦略的選択

2024-12-17

この記事では、オープンソースファームウェアの必要性を探っています。著者は、ハードウェアを制御するソフトウェアであるファームウェアは、フリーソフトウェアの原則に従うべきだと主張しています。これは、自由そのものだけでなく、ユーザーの実用的な利益にも直接関係しています。非フリーファームウェアは、ハードウェアの機能を制限したり、セキュリティの脆弱性を隠したり、ユーザーがセキュリティの問題を解決することを妨げたりする可能性があります。この記事では、2つの観点を分析しています。1つは、オープンソースファームウェアを望ましいものとするが、必ずしも必要ではないとする観点、もう1つは、システムソフトウェア全体がオープンソースであるべきだと主張する観点です。著者は前者に傾いており、オペレーティングシステムカーネルの自由を優先することがより重要だと考えていますが、同時にオープンソースファームウェアの利点を強調し、戦略的な手段を通じてそれを促進する方法について議論しています。

一人で開発したチームが200万ユーザーを達成

2024-12-17

ソフトウェアエンジニアのナディア・オドゥナヨ氏は、単独開発者として、100万人以上のユーザーを抱える読書コミュニティアプリ「StoryGraph」を開発しました。StoryGraphは、読書の進捗状況を追跡し、気分や好みに基づいて書籍を推薦します。この感動的な物語は、オドゥナヨ氏の粘り強さ、技術力、そしてこの偉業を達成するために使用した「1人体制のフレームワーク」を浮き彫りにしています。将来のソロ開発者にとって貴重な洞察を提供します。

線形代数がインタラクティブなダイアグラムエディタを強化

2024-12-17
線形代数がインタラクティブなダイアグラムエディタを強化

イワン・シュービンは、インタラクティブなダイアグラムエディタSchemioの開発において、線形代数の行列演算を巧みに用いて、数々の困難な問題を解決しました。当初、Schemioは単純な図形の作成と操作のみをサポートしていました。しかし、階層構造が導入されると、座標変換が複雑になりました。作者は最初は再帰的なアプローチを試みましたが、スケーリングとピボットポイントの問題に直面しました。最終的に、シュービンは行列を用いて変換(平行移動、回転、スケーリング)を表し、行列の乗算で座標変換を行い、行列の逆行列を巧みに用いて世界座標からローカル座標への変換問題を解決しました。さらに、行列演算によって、階層内でのオブジェクトの移動時の位置と回転の正確な調整を行い、予期せぬジャンプを回避しました。Schemioのソースコードはオープンソースで、GitHubで公開されています。

Tig:Gitのためのテキストモードインターフェース

2024-12-17

TigはncursesベースのGit用テキストモードインターフェースで、主にGitリポジトリブラウザとして機能します。チャンクレベルでのコミットへの変更のステージングを支援し、様々なGitコマンドからの出力のページャーとしても機能します。インストール手順、新機能とバグ修正の詳細なリリースノート、ホームページ、マニュアル、Stack OverflowのQ&Aセクションなどのリソースが容易に入手できます。バグレポートと機能リクエストは、イシュートラッカーまたはメールで提出できます。

プログラマーが創造的なプログラミングゲームを開発:Droste's Lair

2024-12-17
プログラマーが創造的なプログラミングゲームを開発:Droste's Lair

二人のプログラマーが2週間かけて、創造的なプログラミングゲーム環境「Droste's Lair」を開発しました。このゲームでは、直感的なドラッグアンドドロップ操作で数学構造を構築・計算し、「amb」メカニズムを用いて分岐実行と再帰呼び出しを行います。剣と魔法をテーマにしたこのゲームでは、リスト要素の反転、すべての絵札の組み合わせ生成、ドミノでチェッカーボードを覆う方法の数え上げなどの課題に挑みます。「Droste's Lair」はプログラミングとゲームの要素を巧みに融合し、プログラミングと数学の概念を学ぶための斬新で魅力的な方法を提供します。

Valhalla:Javaの大規模リファクタリングが完了間近

2024-12-17

10年間にわたる取り組みを経て、Javaの大規模リファクタリングであるProject Valhallaが完了間近となっています。クラスとプリミティブのギャップを埋めることを目指し、Valhallaはクラスのコーディングの利便性とプリミティブのパフォーマンスを兼ね備えた値クラスを導入し、フラットでコンパクトなメモリレイアウトを実現します。Devoxx 2024で、Java言語アーキテクトのBrian Goetzは包括的なアップデートを提供し、値クラス、null制約付き型、強化された確定代入分析、厳密な初期化などの主要機能を強調しました。

開発 値クラス

Swiftの新フレームワークForked:共有データ管理を簡素化

2024-12-17
Swiftの新フレームワークForked:共有データ管理を簡素化

開発者のDrew McCormackは、単一デバイスと複数デバイスの両方における共有データ管理を簡素化する新しいSwiftフレームワークForkedを発表しました。Gitのmergeメカニズムから着想を得て、Forkedは単一ファイル内でのブランチとマージをサポートし、最終的な整合性を達成します。完全な変更履歴は不要で、3方向マージに必要なだけのバージョンを保持します。Forkedはクラスではなく構造体を使用し、Codableをサポートし、iCloudなどのクラウドサービスとシームレスに統合します。さらに、並行アクセスによる競合状態にも対処し、カスタムマージロジックまたは組み込みCRDTアルゴリズムをサポートします。CloudKit同期はわずか数行のコードで実現できます。

CHICKEN Schemeの新コンパイラ:CRUNCH - 静的型付きSchemeコンパイラ

2024-12-17

この記事では、Schemeプログラミング言語の静的型付き部分集合のための新しいコンパイラであるCRUNCHを紹介します。CHICKEN Schemeシステム上に構築されており、Schemeコードを移植可能なC99コードにコンパイルします。CRUNCHは、高性能で軽量なSchemeコンパイラを提供することを目指しており、パフォーマンスと移植性に関して既存のSchemeシステムの欠点を解消します。ゲーム開発、仮想マシンの作成、組み込みシステムプログラミングに特に適しています。CRUNCHはサポートされるScheme機能に制限がありますが、型推論とさまざまな最適化によって効率的なコード生成を実現し、CHICKEN Schemeエコシステムとシームレスに統合されます。

開発

マイクロソフト、Multilspy をオープンソース化:言語サーバークライアント開発の簡素化

2024-12-17
マイクロソフト、Multilspy をオープンソース化:言語サーバークライアント開発の簡素化

マイクロソフトは、言語サーバーを基盤としたアプリケーション開発を簡素化するPythonライブラリ、Multilspy をオープンソース化しました。Java、Rust、C#、Pythonをサポートし、サーバーバイナリのダウンロード、設定/削除を自動化し、シンプルなAPIを提供します。コード補完、シンボル定義、参照などの静的解析結果を取得するために言語サーバーと連携し、Monitor-Guided DecodingなどのAI支援コード生成技術に不可欠です。

SQL Serverデータベースにおける継承表現のベストプラクティス

2024-12-17
SQL Serverデータベースにおける継承表現のベストプラクティス

この記事では、SQL Serverデータベースにおける継承関係の表現に関するベストプラクティスを探ります。3つの一般的なアプローチ、すなわち、単一テーブル継承、具象テーブル継承、クラステーブル継承が提示され、それぞれの長所と短所が詳細に説明されています。単一テーブル継承はシンプルですが、スケーラビリティとデータ整合性の問題があります。具象テーブル継承はこれらの問題を解決しますが、クエリ効率が低下します。クラステーブル継承はシンプルさと効率のバランスが取れており、多くのシナリオで最適な選択肢となります。サブタイプ固有のフィールドにJSONを使用する代替アプローチや、正規化されたデータベース設計についても議論されています。

この奇妙なトリックでQEMUを10倍高速化

2024-12-17

NixOSのテストをデバッグ中に、Linus Heckemannは、QEMU仮想マシンで非常に遅いデータコピー時間(2時間以上)を発見しました。`perf`を使用したパフォーマンス分析により、QEMUの9pサーバーがファイルの検索に非効率的なリンクリスト(O(n)の複雑さ)を使用していることが明らかになりました。glibが提供するハッシュテーブル(O(1)の複雑さ)に切り替えることで、テスト時間を7分に短縮し、QEMUプロジェクトへの最適化を成功裏に貢献しました。

ニンテンドーDSでAdvent of Code:組込みシステムにおけるRustプログラミングの挑戦

2024-12-16

著者はニンテンドーDS上でRust言語を用いてAdvent of Code 2024に挑戦しました。この記事では、クロスコンパイル環境の構築、ランタイムレスな組込みシステム上で動作するRustコードの記述、メモリ管理、割り込み、画面出力といった数々の課題への取り組みを詳細に記述しています。著者はこれらの課題を克服し、DSの画面にAdvent of Codeの解答を表示することに成功しました。この記事は、著者の高いプログラミングスキルと組込みシステムに関する深い理解を示しており、リソースの限られた環境下でのプログラミングの技術と楽しさを伝えています。

教育用プログラミング言語設計の原則:なぜコンセンサスが得られないのか?

2024-12-16
教育用プログラミング言語設計の原則:なぜコンセンサスが得られないのか?

本稿では、数十年にわたる教育用プログラミング言語設計の原則の進化を探ります。Wirthらの研究が簡潔さやモジュール性といった原則を強調したにもかかわらず、初心者向けの適切な言語に関して、教育者間では依然として意見の相違があります。本稿では、現在の技術環境におけるこれらの原則の解釈の変化、そして世界中で広く使用されている共通の教育用プログラミング言語が出現しない理由を分析します。著者らは、教育用言語と産業用言語の相対的なメリットについて議論し、各世代の学習者には独自の言語が必要であると主張しています。

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

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

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
GRUB2の非互換な変更がBIOSセットアップのブートループを引き起こす

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

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

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

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

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

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

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

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

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

2024-12-16

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

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

2024-12-16
ミニマルNAS:Alpine initramfsシステム frood

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

開発

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

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

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

開発
1 2 207 208 209 211 213 214 215