Category: 開発

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推論において、最先端に近いパフォーマンスを実現しています。

設計ドキュメントよりも使い捨てコードを優先する:より効率的なソフトウェア開発手法

2024-12-15

ソフトウェア開発において、従来の設計ドキュメントと漸進的な開発方法は必ずしも効率的ではありません。著者Doug Turnbullは、「コーディング・ビンジ」という手法を提案しています。これは、一時的なプルリクエストを使ってプロトタイプを迅速に実装し、早期にチームからのフィードバックを得て、設計を洗練し、その後、段階的にデプロイ可能なプルリクエストに分割するというものです。この手法は、迅速な反復、早期の問題発見を促進し、コード自体を最高のドキュメントとみなします。設計ドキュメントは特定の状況では依然として価値がありますが、著者は「見せるのではなく、行う」ことを主張し、コードプロトタイプを使用して迅速な検証と反復を行い、より効率的なソフトウェア開発を実現します。

高性能チームの秘密:トランスアクティブ・メモリー・システム

2024-12-15

この記事では、高性能チームの礎となるトランスアクティブ・メモリー・システム(TMS)を探ります。個々の記憶力ではなく、チームがどのようにメンバーの知識とスキルを効果的に共有し活用するかについてです。チームの記憶には、作業記憶、長期記憶、トランスアクティブ・メモリーの3種類があり、TMSがチームのパフォーマンスを向上させる方法に焦点を当てています。TMSは、協調パターンと個々の専門知識の2つの要素から構成されます。TMSを構築することで、チームは集団知性を解き放ち、メンバー交代の影響を克服します。記事では、Capability Comb、チームマニュアル、意識的な練習などの方法を推奨し、チームがTMSを迅速に確立し改善するのに役立てます。

アイソモーフィックWebコンポーネント:サーバーサイドレンダリングが容易に

2024-12-15

長らく、Webコンポーネントのサーバーサイドレンダリングは難しいと考えられてきました。この記事では、Happy DOMを巧みに使用してブラウザ環境をエミュレートすることで、既存のWebコンポーネントのサーバーサイドレンダリングを実現する方法を示しています。2つの方法が詳しく説明されています。1つは``タグを使用した直接レンダリング、もう1つはDOMをエミュレートしてコンポーネントコードを実行し、HTMLを生成する方法です。著者は、このアプローチの利点として、すべてのWebコンポーネントとの互換性、JavaScriptの失敗時の堅牢性、特定のフレームワークへの依存の回避などを強調しています。これにより、Webコンポーネントのサーバーサイドレンダリングの問題が解決され、柔軟で堅牢なソリューションが提供されます。

SVC16:シンプルさを極めた仮想コンピュータがプログラマに挑戦

2024-12-15

SVC16は、究極のシンプルさを目指した最小限の16ビット仮想コンピュータです。CPUレジスタを持たず、すべての演算は単一のメモリチャンク内で行われます。命令セットは極めて簡素化されており、サウンドや可変画面サイズなどの高度な機能はありません。プログラマは自らマシンコードとコンパイラを作成し、最もシンプルなツールで驚くべき成果を生み出すことに挑戦します。このプロジェクトは、ユーザー作成のプログラムやゲームを実行できるエミュレータを提供しています。低レベルのコンピュータ原理を学び、プログラミングスキルを磨くための完璧なプロジェクトです。

Railgun Labs、高性能Unicodeアルゴリズムライブラリ「Unicorn」を発表

2024-12-15

Railgun Labsは、高速性、埋め込み可能性、クロスプラットフォーム互換性、セキュリティで知られる高性能Unicodeアルゴリズムライブラリ「Unicorn」をリリースしました。Unicornは、正規化、大文字小文字変換、照合、セグメンテーションなど、多くのUnicodeアルゴリズムをサポートし、UTF-8、UTF-16、UTF-32エンコーディングのデコーダ、エンコーダ、バリデータを提供します。このライブラリは完全にカスタマイズ可能であり、正確性と信頼性について広範囲にテストされています。MISRA C:2012に準拠しており、大部分がスレッドセーフです。

Home Assistantのインターネットアクセスにおけるセキュリティ上の欠陥

2024-12-15

Frederik Braun氏は、Home Assistantを使用してスマートホームのリモート制御を試みましたが、重大なセキュリティ上の脆弱性を発見しました。Home Assistantはユーザー名/パスワードと2要素認証を提供していますが、埋め込まれたクレデンシャルを含むURLを処理できないこと、ルートパスでの展開が必要であることから、Webサーバー認証や曖昧なパスなどの追加のセキュリティレイヤーを追加することができません。そのため、Home Assistantのセキュリティは内部メカニズムのみに依存しており、セキュリティリスクが生じています。著者は、Home Assistantコミュニティに対して、セキュリティ設定の柔軟性を向上させるよう求めています。

XFCE 4.20リリース:Waylandの実験的サポートと多数の改善

2024-12-15

約2年間の開発を経て、XFCE 4.20が正式リリースされました!このバージョンはWaylandサポートの準備に重点を置いており、現在、ほとんどのコンポーネントで実験的なWaylandサポートを提供しています。ただし、まだ初期段階であるため、上級ユーザー向けです。XFCE 4.20には、他にも多くの新機能、バグ修正、および改善が含まれています。具体的には、アイコンのスケーリングの改善、パフォーマンスが向上したアイコンビュー、アップグレードされたThunarファイルマネージャーなどです。重要なのは、Waylandサポートはまだ不完全であり、一部のコンポーネントと機能はまだ移植されていないということです。

Rubyでゼロから始めるシンプルなオブジェクトシステムの実装

2024-12-15

この記事では、クラスを使わずにRubyでシンプルなオブジェクトシステムを構築する方法を説明しています。作者は、匿名関数とハッシュテーブルを巧みに使用して、メソッドの探索、プロトタイプ継承、ミックスイン、メタプログラミングといったOOPの主要な概念を実装しています。コンストラクタ関数から始めて、プライベート変数とパブリックインターフェースのシミュレーション方法を示し、クラスのような振る舞いと言継承を効果的に再現しています。分かりやすいコード例を通して、オブジェクトの作成、メソッドの定義、継承とミックスインの実装、そしてRubyの`attr_accessor`に似た基本的なメタプログラミング機能の構築方法を学びます。オブジェクトシステムの基本を理解するための実践的なガイドです。

JP CamaraのRubyConf 2024講演がYouTubeで公開

2024-12-15

JP CamaraのRubyConf 2024におけるRubyの並行処理に関する講演がYouTubeで公開されました。この講演は、過去1年間の彼の研究と執筆をまとめたもので、アニメーション入りのスライドを使用しています。この動画はRubyVideoでも視聴可能です。

開発

TeaVM 0.11.0リリース:新しいWebAssemblyバックエンド

2024-12-15

TeaVM 0.11.0がリリースされました。主な新機能は、新しいWebAssemblyバックエンドです。古いWebAssemblyバックエンドは機能していましたが、パフォーマンスの向上がわずかで、開発者のエクスペリエンスも悪かったため、広く採用されていませんでした。新しいバックエンドはWebAssembly GC提案を活用することで、これらの問題に対処し、ブラウザのJS APIとの相互作用を改善し、バイナリファイルのサイズを削減します。現在、JSバックエンドと比べると機能が若干少ないですが、JSO(Java-to-JSインタラクションAPI)を既にサポートしており、次のリリースで同等の機能を目指しています。このリリースには、BitSet実装のバグ修正と、ファイルの読み取り、タッチイベント、Popover API、Navigator.sendBeaconなどのさまざまなJS APIのサポート追加も含まれています。

開発

果てしない会議に別れを告げる:高速ソフトウェア開発の新アプローチ

2024-12-15

終わりのない会議と長々とした計画にうんざりしていませんか?この記事では、高効率なソフトウェア開発手法を紹介します。それは、コード中心で、迅速な反復です。著者は、完璧なシナモンロールを作る例えを用いて、迅速な試行錯誤、頻繁なテスト、継続的な改善を通じて最適なソリューションに到達する概念を説明しています。この手法は、ドキュメント作成の削減、アイデアをコードで直接表現すること、モックデータとホットリローディングツールを使用して開発を高速化すること、簡潔なコードスタイルと命名規則によってコードの可読性を向上させることを重視しています。著者は、プロジェクトを独立して実行可能なファイルに分割し、再起動時間を最小限に抑え、デフォルトの言語ツールを使用してデバッグすることを提唱しています。この手法は一見「混沌とした実験室」のように見えるかもしれませんが、プロジェクトを効率的に完了し、従来の方法における冗長性と非効率性を回避することができます。

Vim:エディタを超えたプログラミング言語

2024-12-15

Vimは単なるテキストエディタではなく、コンピュータと対話するための言語です。簡潔で効率的なコマンド構造は、覚えやすく、コンピュータにとっても解釈しやすいものです。Vim自体が強力である一方、その本質的な強みは、そのモードがほぼすべての主要なコードエディタに統合されている点にあります。これにより、開発者は好みのエディタインターフェースを選択しながら、Vimの効率的なコマンド言語を維持できます。したがって、Vim言語の最も完全で一貫した実装であるNeoVimの価値は、効率的な編集言語を提供することにあり、エディタ自体だけではありません。

開発 エディタ

プログラミング言語:安全とパワーのバランス

2024-12-15

この記事では、プログラミング言語における安全とパワーのトレードオフについて探求しています。従来の考えでは、C言語のように手動メモリ管理を行う強力な言語は本質的に安全ではないとされてきました。しかし、著者はこの見解は時代遅れだと主張します。現代のプログラミング言語研究は、より高い表現力によって安全とパワーの両立が可能であることを示しています。Lisp、Scheme、Racketにおけるマクロの進化は、より良い設計によって、安全性を維持しながらマクロの機能を向上できることを例示しています。Racketのマクロシステムは、衛生的なコードと強力な操作機能を組み合わせたベストプラクティスとして紹介されています。この記事は、安全で信頼性の高いシステムがより強力で信頼性の高いソフトウェアを構築することを結論づけており、Racketマクロに関する更なる学習のためのリソースを紹介しています。

開発

Pythonの依存関係管理:猛火

2024-12-15

この記事は、Pythonの依存関係管理の複雑さを深く掘り下げ、乾燥した森で焚き火をすることに例えています。著者は、Pythonの依存関係は単純な`pip install`ではなく、プロジェクトパッケージ、システムパッケージ、オペレーティングシステム、ハードウェア、環境自体などを含むと主張しています。優れた依存関係管理は、再現性、つまり異なる環境で常に同じ結果を得るために不可欠です。この記事では、バージョン管理、環境の分離、定義ファイル、ロックファイルなどの重要な概念を詳細に説明しています。その後、pip、venv、virtualenv、pip-tools、Pipenv、Poetry、PDM、pyenv、pipx、uv、Conda、Mamba、conda-lock、Pixiなど、多数のツールを包括的に比較し、それぞれの強み、弱み、ユースケースを分析しています。最後に、著者 は、さまざまなシナリオ(管理者権限、依存関係の種類、オペレーティングシステムなど)に基づいてツールの推奨事項を提供し、Pythonの依存関係管理の将来的なトレンドを展望しています。

LLVM CライブラリがGPUを高速化:GPUでCコードを実行

2024-12-14

LLVMプロジェクトは、C/C++コード内でlibcとlibm関数をGPU上で直接実行できる、画期的なGPU Cライブラリをリリースしました。このライブラリは、OpenMP、CUDA、HIPなどのオフロード言語の補足ライブラリとして、またはC/C++コードをGPUターゲットコードに直接コンパイルする2つの主要なモードをサポートしています。この記事では、コンパイルオプション、リンク、AMDおよびNVIDIA GPUの特定のビルド手順など、両方のモードの使い方を詳しく説明しています。このライブラリにより、開発者はGPUの並列処理能力を活用して、複雑なGPUプログラミングモデルに関する深い知識なしに、パフォーマンスを大幅に向上させることができます。

Buzee:オープンソース全文検索アプリがリリース

2024-12-14

Buzeeは、RustとSvelteを使用して構築されたクロスプラットフォームの全文検索アプリケーションです。ローカルファイル、フォルダ、ブラウザの履歴などを高速で検索でき、OCRを使用してPDFや画像からテキストを抽出することもできます。2年かけて開発されたこのプロジェクトは、パフォーマンス向上のためのTauri、インデックス作成のためのSQLiteとTantivy、そしてクリーンなSvelteフロントエンドを使用した堅牢なアーキテクチャを示しています。機能が豊富ですが、将来の開発のための領域はまだいくつかあり、作者はそれをオープンソースとしてリリースして、他の人が貢献できるようにしています。

開発 全文検索

Tailscaleサブネットルーター:複雑なネットワーク接続を簡単に解決

2024-12-14

Tailscaleは通常、すべてのデバイスにクライアントをインストールする必要がありますが、組み込みデバイスや既存のVPCでは必ずしも実行可能ではありません。そこでサブネットルーターの出番です。これにより、デバイスはTailscaleを実行しているかどうかに関係なく、Tailscaleの強力なNATトラバーサルテクノロジーを使用して通信できます。この記事では、Tailscaleサブネットルーターのしくみ、WindowsとLinuxでのインストールと構成方法について説明します。大規模ネットワークの移行やAWS VPCの接続など、サブネットルーターは迅速かつ簡単な開始方法を提供します。個人利用は無料で、デバイス数制限にもカウントされません。

Ultralyticsへのサプライチェーン攻撃:PyPIセキュリティインシデント分析

2024-12-14

PythonプロジェクトUltralyticsは最近、サプライチェーン攻撃を受けました。攻撃者はプロジェクトのGitHub Actionsワークフローを侵害し、PyPI APIトークンを盗み、バージョン8.3.41、8.3.42、8.3.45、8.3.46が汚染されました。この攻撃はPyPIの脆弱性を悪用したものではなく、GitHub Actionsキャッシュを標的にしました。PyPIは、信頼できる公開とSigstore透明性ログを利用して、悪意のあるソフトウェアを迅速に特定し、削除しました。このインシデントは、APIトークンとGitHub環境設定の欠陥を浮き彫りにしました。この記事では、ソフトウェアフォージとビルド/公開ワークフローのセキュリティ確保の重要性を強調し、開発者向けにセキュリティに関する推奨事項(信頼できるパブリッシャーの使用、依存関係のロック、安全でないパターンの回避、多要素認証の有効化など)を提供しています。

Cortex-Mマイクロコントローラにおける非同期Rust:詳細解説

2024-12-14

この記事では、Cortex-Mマイクロコントローラ上での非同期Rustプログラミングの世界を探ります。Futures、協調的スケジューリング、非同期Rust実行体の仕組みを説明し、リソース管理における効率性を示します。マイクロコントローラでの非同期プログラミングを可能にする革新的なEmbassyフレームワークを紹介しています。Blinkyやボタンプログラムといった実践的な例を通して、組込みシステムにおける非同期Rustの応用を示し、従来のRTOSアプローチとの長所と短所を比較します。結論では、リソース利用率と並行処理の観点から、非同期Rustの大きな利点を強調します。

1 2 10 11 12 13 14 16 18