Category: 開発

WASM:コンテナキラー?

2025-02-12
WASM:コンテナキラー?

WebAssembly(WASM)は、「一度記述して、どこでも実行する」機能により、コンテナ技術に取って代わる可能性があります。この記事では、コンテナ技術はソフトウェア開発における多くの問題を解決しましたが、複雑なツールと緊密な結合により扱いにくくなっていると主張しています。WASMは、特にCloudflare Workersのようなサーバーレスアーキテクチャと組み合わせることで、より軽量で高速なソリューションを提供します。WASMは現在、いくつかのシステムインターフェースが不足していますが、急速に開発が進み、主流になる可能性があります。この記事では、開発者にGoやRustなどのコンパイル済み言語を学ぶことを推奨し、今後のWASM時代への備えを促しています。

開発

Jujutsu (jj) チートシート:Git の代替手段?

2025-02-12

この記事では、Gitリポジトリと互換性のあるバージョン管理システムであるJujutsu (jj) のチートシートとリファレンスを紹介しています。著者はjjをgitよりも直感的だと感じており、リポジトリの状態を説明するリファレンスと、一般的な編集操作のための視覚的なチートシートを含む学習リソースを提供しています。初心者には、gitの既成概念を避けるために、最初にチュートリアルを読むことをお勧めします。どちらのリソースも簡潔で、印刷して学習しやすいです。

開発

Ohm: PEGベースのパーシングツールキット

2025-02-11

Ohmは、ライブラリとドメイン固有言語(DSL)で構成される強力なパーシングツールキットです。カスタムファイル形式の解析や、プログラミング言語のパーサー、インタープリター、コンパイラの迅速な構築に使用できます。Ohm言語は、正規表現やコンテキストフリー文法と同様に、構文を記述するための形式的な方法であるParsing Expression Grammars(PEG)に基づいています。Ohmライブラリは、記述した文法からパーサー、インタープリターなどを生成するためのJavaScriptインターフェースを提供します。

開発 パーサー

PerlをWebAssemblyにコンパイルする:困難な道のり

2025-02-11
PerlをWebAssemblyにコンパイルする:困難な道のり

スタートアップを構築する中で、作者はクライアントサイドでのファイルメタデータ抽出という課題に直面しました。ExifToolは強力なツールですが、Perlベースであるため、様々なOSへの静的コンパイルとデプロイが困難でした。静的コンパイルを含む様々なアプローチを試行した結果、最終的にWebAssemblyを使用することにしました。この過程は、Perlのビルドシステム、Emscripten、WASIとの格闘、Perlソースコードの修正など、多くの困難に満ちていました。最終的に、作者はExifToolを実行できる自己完結型のWebAssembly版Perlを構築することに成功しましたが、この過程でWebAssemblyランタイムにおける例外処理のサポート不足が明らかになりました。

開発

Craftax:JAXベースの超高速オープンエンド強化学習ベンチマーク

2025-02-11
Craftax:JAXベースの超高速オープンエンド強化学習ベンチマーク

CraftaxはJAXで完全に記述された強化学習環境であり、Crafterのゲームメカニクスを再実装し、NetHackなどのローグライクゲームからインスピレーションを得て大幅に拡張しています。gymnaxインターフェースに準拠しており、PureJaxRLやJaxUEDなどの既存のJAXベースのフレームワークと容易に統合できます。ICML 2024でスポットライト論文として採択されました。CraftaxはCPUとGPU/TPUの両方をサポートしており、チュートリアルとベースラインが含まれています。インストール手順と使用例が提供されています。

コード生成におけるLLMの評価に関する論文が大量発表

2025-02-11
コード生成におけるLLMの評価に関する論文が大量発表

最近のarXivには、大規模言語モデル(LLM)によるコード生成能力をベンチマークする論文が多数掲載されています。これらの論文は、LLMが現実世界のGitHub上の問題を解決すること、自己呼び出しコードの生成、APIの使用、安定性分析、そしてソフトウェア開発ライフサイクル全体の評価など、様々な側面をカバーしています。研究者たちは、SWE-bench、HumanEval Pro、SEAL、DevEvalなどの様々なベンチマークと、それに対応する指標を開発し、LLMのコード生成能力をより包括的に評価し、この分野の進歩を促進することを目指しています。

開発

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

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

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

開発

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

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

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

開発

WebAssemblyランタイムの制限を突破:ZeroPerlの非同期実装

2025-02-11
WebAssemblyランタイムの制限を突破:ZeroPerlの非同期実装

ほとんどのWebAssemblyランタイムでexnrefのサポートが不足しているためZeroPerlが使用できず、不満を感じていた著者は、文句を言う代わりに問題を解決することにしました。BinaryenのAsyncify機能を活用することで、setjmpの代替をスクラッチから実装し、libsetjmpの互換性の問題を回避しました。公式ライブラリを削除し、アセンブリコードを書き、wasm-optで最適化した後、ZeroPerlはWasmer、Wasmtime、その他のWebAssemblyランタイムで正常に動作するようになりました。このブレークスルーにより、完全にサンドボックス化され、自己完結型のPerl WebAssemblyモジュールが実現しました。

開発

Legion Health:AI駆動型精神医療ケア - 採用中!

2025-02-11
Legion Health:AI駆動型精神医療ケア - 採用中!

YC支援のスタートアップ企業Legion Healthは、AI駆動型の次世代精神医療ケアシステムを構築するトップクラスのバックエンドエンジニアを募集しています。このシステムは、診断ではなく、スケジューリング、請求、患者とのやり取りなどの運用プロセスを最適化するためにAIを使用します。エンジニアは、Node.js、Supabase、AWSを使用して、高度にスケーラブルなイベント駆動型バックエンドを設計および実装し、リアルタイムデータの処理、HIPAAコンプライアンスとセキュリティの確保を担当します。これは、医療におけるAIの未来を形作る、やりがいのある挑戦的な機会です。

開発 AI医療

20年以上にわたる安全でない接続との戦い:libcurl回顧録

2025-02-11
20年以上にわたる安全でない接続との戦い:libcurl回顧録

1998年にcurlがSSLをサポートして以来、デフォルトの証明書検証はネットワークセキュリティの礎石となっています。しかし、開発者は依然としてこの重要なチェックを無効にすることが多く、広範囲にわたる脆弱性につながっています。この記事ではlibcurlの進化を振り返り、検証を無効にする危険性を探り、APIの改善、ドキュメントの強化、積極的なバグ報告などの解決策を提案します。安全な接続のための戦いは長期にわたる戦いとなります。

Sentry:エンタープライズソフトウェアの再定義 - フォーチュン50万社へのアプローチ

2025-02-11

5万社を超える有料顧客を抱えるSentryは、従来のエンタープライズソフトウェアモデルに挑戦しています。著者は、すべての顧客が求める製品を、妥当な価格で構築し、「フォーチュン50万社」をターゲットにすることが、大企業のみに焦点を当てる従来のモデルよりも優れた戦略だと主張しています。このプロダクト主導の成長アプローチは、大規模な営業チームよりも、コミュニティ構築、ブランディング、低摩擦の顧客体験を優先しています。著者は、このモデルは実現可能であるだけでなく、効率的で測定可能であり、エンタープライズソフトウェア企業に新しい道を提供すると主張しています。

(cra.mr)

Canonical、12年間のサポートを提供するKubernetes LTS版を発表

2025-02-11
Canonical、12年間のサポートを提供するKubernetes LTS版を発表

Canonicalは、Kubernetes 1.32 LTS版について、12年間のセキュリティメンテナンスとサポートを提供すると発表しました。この長期サポートは、ベアメタル、パブリッククラウド、OpenStack、Canonical MicroCloud、VMwareなどをカバーします。このリリースは、インストール、運用、アップグレードが容易で、最先端のオープンソースネットワーク、DNS、ゲートウェイ、メトリクスサーバー、ローカルストレージ、ロードバランサー、イングレスタイプサービスを統合しています。企業は、4ヶ月ごとの頻繁なアップデートと、安定性を重視した12年間のLTSサポートから選択できます。また、FedRAMPコンプライアンスにも対応し、Ubuntu Proと統合することで、包括的なオープンソーススタックのセキュリティを提供します。

開発

「退屈な」技術が実は最高である理由

2025-02-11
「退屈な」技術が実は最高である理由

この記事では、NetBSDを例に、「退屈な」技術がシステム管理とアーキテクチャにおいて優れていると主張しています。「退屈な」とは予測可能性を意味し、予期せぬ障害やメンテナンスの問題を削減します。成熟した技術は、包括的なドキュメント、活発なコミュニティ、そして実績を誇ります。普及度が「退屈さ」の尺度ではない一方で、成熟した技術は一般的に理解しやすく、保守も容易なため、コスト削減と信頼性の向上につながります。著者は、NetBSDの「退屈さ」こそが最大の強みだと結論づけています。

開発

Quarto:R Markdownを超えるリテラシープログラミング

2025-02-11

PandocをベースとするQuartoは、R Markdownを超えるリテラシープログラミングツールです。シンプルなMarkdown構文で、コード(R、Python、Juliaなど)と人間が読めるテキストをシームレスに統合します。実行可能なコードブロック、図表、表などを含むリッチドキュメントを作成し、HTML、PDFなど様々なフォーマットで容易にレンダリングできます。コード折りたたみや実行オプションなどの機能で出力をカスタマイズし、洗練された最終的な製品を作成できます。Quartoは、再現可能で共有可能なドキュメントを作成するための強力でありながら使いやすいアプローチを提供します。

systemdがHTTPでダウンロードしたディスクイメージから直接起動するようになる

2025-02-11

systemdのリードデベロッパーであるLennart Poetteringは、Linuxのブートプロセス中に、初期RAMディスク(initrd)内でHTTP経由でダウンロードしたディスクイメージから直接起動する機能を追加しています。最近のsystemdの追加機能に基づいて、HTTP経由でルートディスクイメージをダウンロードし、ループバックデバイスに接続してマウントすることができます。目標は、UEFIがURLを指し示して統合カーネルイメージ(UKI)を読み込み、ルートファイルシステムを起動できるようにすることです。すぐのユースケースは、毎回のブート時にHTTP経由で新しいルートファイルシステムを簡単に起動することで、物理デバイスのテストを簡素化することです。進行中のプルリクエストには、これのための初期コードが含まれています。将来の拡張には、NVMe-over-TCPのサポートが含まれる可能性があります。

開発

Extend:キーボードの可能性を解き放つ

2025-02-11

Extendは、一般的なナビゲーションキーと編集キーをホームポジションにマッピングすることで生産性を向上させる、強力なキーボードレイアウト拡張機能です。巧妙なキーの組み合わせにより、テキスト編集、ウィンドウ管理、ブラウザ操作などを簡単に実行でき、マウスの使用を最小限に抑えることができます。この記事では、Extendの使い方、ショートカット、さまざまなプラットフォームでの設定方法を詳細に説明し、Tap-Extendを使ったシングルキーアクションなどの高度なテクニックも共有しています。著者はExtendを魔法に例え、コンピューティング体験を変えるものとしています。

静的単一代入 (SSA) コンパイラ最適化の深堀り

2025-02-11
静的単一代入 (SSA) コンパイラ最適化の深堀り

この記事は、静的単一代入 (SSA) コンパイラ最適化技術の数十年にわたる進化を詳述しています。コード移動とグローバル値番号付けに関する初期の論文から、phi 命令の最小化に関する Cytron の画期的論文、Brandis と Mössenböck の単一パス生成アプローチ、Click と Paleczny の Sea of Nodes IR まで、この記事はいくつかの重要な論文をたどり、それぞれの強みと弱点を議論しています。また、関数型プログラミングと SSA の関係に関する Appel の研究、Aycock と Horspool による反復的な phi ノード削除、抽象解釈に基づく最近の方法にも触れています。この記事は、SSA についてもっと知りたい読者にとって、より包括的な視点を与えるために、さらなる論文やリソースのリストで締めくくられています。

Btrfsアロケーターヒント:混合ストレージのパフォーマンス最適化

2025-02-11
Btrfsアロケーターヒント:混合ストレージのパフォーマンス最適化

Btrfsはアロケーターヒント機能を搭載し、メタデータとデータの割り当て先デバイスを指定することで、混合ストレージ環境(SSDとHDDなど)のパフォーマンスを最適化できます。メタデータには高速なSSDを、データにはHDDを優先的に割り当てることで、ファイルシステムの応答性とストレージ効率を向上できます。ただし、パッチ適用済みのカーネルとコマンドラインでの設定が必要です。誤った設定は容量不足エラーにつながるため、注意深く監視することが重要です。

Basecampがプロジェクト管理における不正確さを肯定

2025-02-11
Basecampがプロジェクト管理における不正確さを肯定

Basecampは、プロジェクト管理における正確な数値へのこだわりを問い直し、曖昧さと主観性を重視することを提唱しています。この記事は、プロジェクトの現実を無視した正確な数値の追求を批判し、「63%完了」は無意味である一方、「来週の火曜日までに完了見込み」の方が現実的であると主張しています。BasecampのHill ChartsやMove The Needleなどの新機能は、直感的なグラフィックマーカーを使用してプロジェクトの進捗状況を視覚的に表現することで、機械的な計算よりも主観的な判断を重視しています。この記事では、クリエイティブな仕事において、主観性と生産性は敵対するものではなく、むしろ協力関係にあると主張しています。Basecampは、現実をより正確に反映するように、アプローチを継続的に改善していく予定です。

開発 主観性

イースターエッグとソフトウェア開発の喜び

2025-02-11
イースターエッグとソフトウェア開発の喜び

開発チームは、新しい製品Tapestryの作成に、いくつかのイースターエッグを取り入れることで楽しさを注入しました。ベータバッジの回転するフィジェットスピナーから始まり、ユーザーのフィードバックに基づいたパーソナライズされたダイナミックなアプリアイコン「ディスコ」へと進化し、チームは楽しい驚きでユーザーを魅了しました。これらは単なる追加機能ではなく、巧みにテストとバグ修正のプロセスに統合されました。この記事は、チームのユーモアと創造性を示し、ソフトウェア開発のあらゆる段階に喜びを吹き込む方法を示しています。

tmuxで数独を解く:とんでもないPythonコンパイラプロジェクト

2025-02-11
tmuxで数独を解く:とんでもないPythonコンパイラプロジェクト

以前、Pythonをtmux上で実行するようにコンパイルしたプロジェクトに続き、作者は今回、tmux内で完全に数独ソルバーを作成しました。配列や文字列を使用せず、tmuxの変数とキーバインディングを巧みに利用し、数独の各マスをtmuxのオプションにマッピングしています。ソルバーは総当たりで解を求めるため、効率は極めて低いです。しかし、このプロジェクトはtmuxの驚くべき能力と作者の創意工夫を示しており、ハッカー精神の証です。

開発

Dagger Cloud v3:GoとWebAssemblyによるフロントエンドの書き換えでパフォーマンス向上

2025-02-11
Dagger Cloud v3:GoとWebAssemblyによるフロントエンドの書き換えでパフォーマンス向上

Daggerチームは、Dagger CloudのWebインターフェースをReactから、GoとWebAssemblyを使ったv3バージョンに書き換えました。これは、2つのUIコードベース(ターミナルUIとWeb UI)を統一し、開発効率とパフォーマンスを向上させるためです。GoとWebAssemblyの組み合わせは一般的ではありませんが、Go-appフレームワークと大規模なメモリ最適化によって、ターミナルUIを反映した、より高速でスムーズで一貫性のあるユーザーインターフェースを構築することに成功しました。このプロジェクトは、メモリ制限やすぐに使えるコンポーネントライブラリの不足など、GoとWebAssemblyを使用することの課題と機会を浮き彫りにしています。最終的に、Dagger Cloud v3はパフォーマンスの向上と開発チームの効率向上を実現しました。

開発

nocc:高速ビルドを実現する分散型C++コンパイラ

2025-02-11
nocc:高速ビルドを実現する分散型C++コンパイラ

noccは、CI/CDパイプラインや共同開発環境における大規模プロジェクトのコンパイルを劇的に高速化する分散型C++コンパイラです。コンパイルタスクをリモートマシンに分散し、共有リモートキャッシュを活用することで、冗長なコンパイルを回避します。VK.comでKPHPコンパイルの高速化のために開発され、以前のソリューションと比べて2〜9倍の速度向上を実現しました。既存のビルドシステムに容易に統合でき、プリコンパイル済みヘッダーもサポートし、パフォーマンスをさらに向上させます。

Braveブラウザの新しいカスタムスクリプトレット:ブラウジング体験をコントロール

2025-02-11
Braveブラウザの新しいカスタムスクリプトレット:ブラウジング体験をコントロール

Braveブラウザバージョン1.75は、デスクトップユーザー向けに「カスタムスクリプトレット」機能を導入し、高度なユーザーは独自のJavaScriptをウェブサイトに挿入して、ブラウジング体験を深くカスタマイズできるようになりました。これはTampermonkeyやGreasemonkey拡張機能と同様で、ユーザーは特定のウェブサイトの機能を変更するユーザースクリプトを作成できます。Braveは当初、ブラウザの広告ブロッカーのデバッグのためにこの機能を開発しましたが、その価値からユーザーと共有することにしました。カスタムスクリプトレットは、トラッカーのブロック、外観のカスタマイズ、アクセシビリティの向上などによって、プライバシー、セキュリティ、使いやすさを向上させます。ただし、信頼できないスクリプトを実行するとリスクがあるため注意が必要です。この機能は`brave://settings/shields/filters`にあり、「開発者モード」を有効にする必要があります。

Xvesaの復活:軽量Xサーバーが再び

2025-02-11
Xvesaの復活:軽量Xサーバーが再び

軽量XサーバーであるXvesaが、Git履歴の深淵から復活しました!チームはXfbdevと連携して保守することにし、バグ修正、セキュリティ強化、必要に応じた新機能追加を優先しています。TinyXサーバーはXorgよりもはるかに小さいからです。1.3.0ではなく1.2.0を選んだのは、1.3.0で入力機能が壊れていたためです。デザインは最小限の機能を備えた完全な機能を目指しており、xkb、xinput、xinerama、glは省略されています。TCPリスニングはデフォルトで無効化され、シャドウフレームバッファが有効化されています。ライセンスはGPLv3です。

開発 Xサーバー

C++26の反射機能を使った順序に依存しないキーワード引数

2025-02-11

このブログ記事では、C++26で提案されている反射機能を用いて、C++で順序に依存しないキーワード引数をどのように実装するかを解説します。著者は反射機能を試行錯誤している中でこのテクニックを発見し、これらの機能の威力を示す説得力のある実例として共有しています。この記事では、このアプローチを、指定初期化子やヘルパーオブジェクトなど、以前のよりエレガントでない解決策と比較しています。記事の中心となる部分は、反射機能を利用して順序に依存せず、オプション指定も可能なキーワード引数をどのように実現するかを詳細に説明しており、完全なコード例と説明を提供しています。これには、ラムダ式キャプチャの処理と、fmtライブラリの拡張による強化されたフォーマット機能の追加も含まれています。

スムーズなスクロールアニメーション:カクつきとはお別れ

2025-02-10
スムーズなスクロールアニメーション:カクつきとはお別れ

カクカクしたスクロールアニメーションにうんざりしていませんか?新しいスクロール駆動アニメーション仕様が登場しました!Web Animations APIとCSS Animations APIと統合することで、メインスレッド以外で動作する滑らかなスクロールアニメーションを実現します。視差効果のある背景、読み込み進捗インジケーター、画像のフェードインなど、最小限のコードで驚くべき効果を作成できます。この記事では、多数のデモとビデオコースを紹介し、すぐにでも素晴らしいスクロール駆動エクスペリエンスの構築を支援します。

リアルタイムアプリケーションアーキテクチャ:Poke/Pull、Push State、Push Ops、Event Sourcingの比較

2025-02-10

この記事では、リアルタイムアプリケーションを構築するための4つの主要なパターン、Poke/Pull、Push State、Push Ops、Event Sourcingについて探求します。Poke/Pullは統合が容易ですが、ファンアウトの問題があります。Push Stateは状態を直接プッシュしますが、大規模な状態更新に苦労します。Push Opsは状態全体ではなく操作をプッシュするため、より効率的です。Event Sourcingはイベントをプッシュするため、クライアント側のロジックが必要です。この記事では、さまざまなトランスポート方法(WebSockets、SSEなど)とその水平スケーリングシステムにおける課題についても比較し、Pub/Subの役割を強調しています。

開発 状態同期
1 2 163 164 165 167 169 170 171 214 215