Category: 開発

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

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

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

開発

Wine 10.6リリース:CMD、Bcrypt、ゲーム互換性の強化

2025-04-21

オープンソースソフトウェアWineがバージョン10.6にアップデートされ、27個のバグが修正され、ゲームやアプリケーションの互換性が向上しました。このリリースでは、コマンドプロセッサCMDの字句解析器が更新され、BcryptにPBKDF2アルゴリズムのサポートが追加され、WindowsCodecsの画像メタデータのサポートが強化されました。Unityゲーム、Alan Wake、GDI+の問題など、さまざまなゲームやアプリの修正が含まれています。

Goの驚くべきメモリ割り当ての罠:30%の性能低下物語

2025-04-21
Goの驚くべきメモリ割り当ての罠:30%の性能低下物語

Goプロジェクトにおける一見無害なリファクタリングが、30%の性能低下を引き起こしました。犯人は`ImmutableValue`構造体の`GetBytes`メソッドで、値レシーバーを使用していたため、毎回ヒープ割り当てが行われていました。ヒープ割り当てはスタック割り当てよりもはるかにコストが高くなります。根本原因は、Goコンパイラのエスケープ解析の精度が低く、値レシーバーがエスケープしないことを認識できなかったことです。ポインタレシーバーに変更することで問題が解決しました。このケースは、Goコンパイラのメモリ割り当ての決定を理解し、適切なレシーバータイプを使用することの重要性を示しています。

開発

Open Codex:ローカルで動作するオープンソースのAIコマンドラインアシスタント

2025-04-21
Open Codex:ローカルで動作するオープンソースのAIコマンドラインアシスタント

Open Codexは、OpenAI Codexにインスパイアされた、完全にオープンソースのAIコマンドラインアシスタントです。APIキーは不要で、ローカルで動作します。phi-4-miniなどのローカル言語モデルを使用して、自然言語をシェルコマンドに変換します。ワンショットモードとインタラクティブモード(近日公開予定)、コマンドの確認、クリップボードへのコピー、カラーターミナル出力などをサポートし、macOS、Linux、Windowsに対応しています。

Kate: 20年経っても現役の強力コードエディタ

2025-04-21

著者は、20年間使い続けているテキストエディタKateの強力な機能とカスタマイズ性を詳しく説明しています。この記事では、プラグイン、ビューの分割、言語サーバー、デバッガ、コードフォーマット、カスタムショートカット、プロジェクト管理、カラースキームなどを網羅しています。ファイルの高速切り替え、アクション検索、堅牢なビルドと実行機能などの効率的なワークフロー機能を強調しています。VS Codeとの比較では、Kateのシンプルさ、安定性、オープンソースの性質を強調し、Kate開発チームへの感謝を表しています。

開発

ローカルLLM推論:可能性は巨大だが、ツールは成熟する必要がある

2025-04-21
ローカルLLM推論:可能性は巨大だが、ツールは成熟する必要がある

この記事では、llama.cpp、Ollama、WebLLMなどのローカルLLM推論フレームワークの性能ベンチマークを行っています。結果は、llama.cppとOllamaが非常に高速であることを示していますが、OpenAIのgpt-4.0-miniよりも遅いままです。より大きな課題は、モデルの選択とデプロイにあります。膨大な数のモデルバージョンが圧倒的で、量子化された7Bモデルでさえ5GBを超え、ダウンロードとロードが遅くなり、ユーザーエクスペリエンスに影響を与えます。著者は、将来のローカルLLM推論には、小さくタスク固有のモデルを簡単にトレーニングおよびデプロイするためのより簡単なツールが必要であり、クラウドLLMと緊密に統合する必要があると主張しています。

Nintendo Wiiで本番ブログを運用する

2025-04-21

著者は古いNintendo Wiiゲーム機でNetBSD OSを動作させ、本番環境として自身のブログをホスティングすることに成功しました。この記事では、Wiiのソフトモッド、NetBSDのインストール、軽量Webサーバーlighttpdの設定、システムリソースの監視など、全過程を詳細に説明しています。Wiiの古いハードウェア(シングルコアPowerPC 750)にもかかわらず、最適化とリバースプロキシの使用により、パフォーマンスのボトルネックを克服し、ブログを安定して運用することに成功しました。これは、リソースの限られたハードウェアで本番環境を運用できる可能性を示す興味深い実験であり、NetBSD OSに対する著者の評価と、挑戦的なプロジェクトへの関心を強調しています。

開発

GTK-LLM-Chat:LLMとチャットするためのGTK GUI

2025-04-21
GTK-LLM-Chat:LLMとチャットするためのGTK GUI

gtk-llm-chatは、大規模言語モデル(LLM)とやり取りするための、GTKで構築されたシンプルで使いやすいグラフィカルインターフェースです。独立したウィンドウで複数の同時会話をサポートし、様々なLLMモデルとチャットするためのpython-llmライブラリを統合しています。モダンなインターフェース、リアルタイムストリーミング応答、Markdownレンダリング、会話管理、キーボードショートカット、フラグメントサポート、アプレットモードなどの機能を備えています。インストールは簡単で、pipxでllmをインストールし、`llm install gtk-chat`を実行するだけです。

開発

1989年製486に最新のLinuxをインストール:クレイジーな科学プロジェクト

2025-04-21

著者は、1989年製のAMD 5x86 486 PCに、2017年のLinuxカーネル(4.14.8)をインストールして実行することに成功しました。これは容易ではありませんでした。Gentoo Linux(すべてのパッケージを手動でコンパイルする必要があるディストリビューション)の使用、古いハードウェアのドライバとの格闘、80ピンPATAケーブルとマザーボードの非互換性の克服など、多くの課題がありました。最終的に、この古いマシンは、Python、Git、Nginxなどの最新のソフトウェアを正常に実行しました。ただし、ブート時間は11分、シャットダウン時間は5.5分かかりました。このプロジェクトは、Linuxの驚くべき下位互換性と、著者の並外れた粘り強さを示しています。

開発

限界を押し広げる:手書きの ARM Cortex-A53 NEON アセンブリカーネル

2025-04-21

この記事では、ARM Cortex-A53向けにNEONアセンブリカーネルを最適化する方法を深く掘り下げています。y[n] = ax[n] + bを例に、Cortex-A53の命令タイミング特性(部分的なデュアルイシュー機能と順次実行)を利用して、64ビットロードデータパスの制約を克服する方法を詳細に説明します。命令パイプラインとプリフェッチなどのテクニックを使用して、パフォーマンスを最大限に高めます。手書きのアセンブリカーネルは、LLVMによって生成されたコードよりも大幅に優れたパフォーマンスを示し、堅牢なCPUモデルがない場合の手動最適化の可能性を強調しています。

Tclプロシージャにおけるキーワードパラメータ:エレガントな解決策とメタプログラミングの頭痛の種

2025-04-21

いくつかのプログラミング言語におけるキーワードパラメータの不足と、ビルトイン機能へのアクセス制限に不満を感じた著者は、Tclでキーワードパラメータを実装するという課題に取り組みました。この記事では、Tclプロシージャでキーワード引数を可能にする巧妙な`proc*`コマンドを紹介し、その実装の詳細を説明しています。しかし、Tclの弱いメタプログラミング能力のために、著者は文字列テンプレートに正規表現を使用せざるを得なくなり、複雑でメンテナンスが難しいコードになってしまいました。これは、Tclのメタプログラミングにおける限界を示しています。

多重化MCPツールによるLLMとKafkaのインタラクションの簡素化

2025-04-21

この記事では、Model Context Protocol (MCP) を使用して構築された Apache Kafka 用の LLM インターフェースである `kafka-mcp-server` について説明しています。著者は、単純なアクションでも多くの場合、複数の MCP ツール呼び出しが必要になることに気づき、多重化ツールを開発しました。このツールは、複数のツールを同時に実行し、PROMPT_ARGUMENT を使用して、前のツールの結果を後のツールの引数として渡すことができます。これにより、Kafka トピックのリスト表示、メッセージの読み取り、トピックの複製作成など、シーケンシャルなツール呼び出しを含むワークフローが簡素化されます。将来の計画には、Lua の解釈と分岐ロジックの追加による機能強化が含まれます。

開発

8ボタンデバイスでの表形式プログラミング:ミニマリストアプローチ

2025-04-21

m8ポータブルミュージックシーケンサーに着想を得て、著者は表形式インターフェースに基づいたミニマリストプログラミング環境を提案しています。この環境は、わずか8つのボタンと小さな画面しか必要とせず、構造化されたテーブル(関数は最大5つの式に制限)とコンテキストメニューを使用して、キーボード入力を取り除きます。この制約により、モジュール式で保守しやすいコードが促進され、構文エラーが減少します。この記事では、古典的なデモシーンエフェクト(プラズマとトンネル)を使用して、このプログラミングアプローチと機能を実証し、ピクセルアートエディター、音楽ツールなどの潜在的なアプリケーションを探ります。

C言語文字列関数:クイックレビュー

2025-04-21
C言語文字列関数:クイックレビュー

この記事では、一般的に使用されるいくつかのC言語文字列操作関数を簡単に説明します。`strlen()`は文字列の長さを取得します。`strcpy()`は文字列をコピーします。`strcat()`は文字列を連結します。`strncat()`は指定した数の文字を安全に連結します。`strcmp()`は文字列を比較します。`strcspn()`は指定された集合に含まれない最初の文字を見つけます。`strerror()`はエラーコードのエラーメッセージを取得します。`memchr()`はメモリブロック内で値を見つけます。`strrev()`(非標準)は文字列を反転します。これらの関数をマスターすることは、効率的なCプログラミングに不可欠です。

イベント非表示アーキテクチャ:ウェブアプリの未来?

2025-04-21
イベント非表示アーキテクチャ:ウェブアプリの未来?

過去10年間、クラウドネイティブな分散アプリケーションへの移行が進んできましたが、イベント駆動型アーキテクチャは開発者にとって難しいものとなっています。この記事では、新しいパラダイムであるイベント非表示アーキテクチャを紹介します。Reactと状態管理フレームワーク、永続実行システム(例:Temporal)、リアクティブな増分計算フレームワーク(例:Skip)などのテクノロジーを活用することで、イベント処理が抽象化され、よりシンプルで効率的な開発エクスペリエンスが提供されます。開発者はビジネスロジックに集中できるようになり、生産性とアプリケーションの信頼性を向上させると同時に、透明性、簡素化された状態管理、再生可能性などの新しい機能が得られます。

LLMによるプログラミング:外骨格、代替ではない

2025-04-21

著者はClaude Codeを使って2つのアプリを作成し、LLMはプログラマーを置き換えるのではなく、能力を高めるツールであることを発見しました。コーディング速度は劇的に向上しますが、AIの誤った判断を修正し、アーキテクチャの整合性を維持するために、継続的な監視が必要です。経験豊富なプログラマーはAIツールを効果的に活用できますが、経験の浅いプログラマーは誤解される危険性があります。今後は、アーキテクチャ思考、パターン認識、技術的判断力が重要になり、プログラマーはAIと協調して働くことを学ぶ必要があります。

開発

Nerdlog:高速でサーバーレスなリモートログビューア

2025-04-21
Nerdlog:高速でサーバーレスなリモートログビューア

Nerdlogは、タイムラインヒストグラムを備え、中央サーバーを必要としない、高速でリモート優先、マルチホストのTUIログビューアです。Graylog/Kibanaを参考にしていますが、無駄を省いています。設定も最小限で済みます。複数のリモートマシンから同時に効率的にログをクエリし、時間範囲とパターンでフィルタリングし、タイムラインヒストグラムを表示して迅速な視覚的分析を行います。主に、1つまたは複数のリモートホストからシステムログ(/var/log/messagesまたは/var/log/syslog)を読み取るように設計されており、大規模なログファイル(1GB以上)でも非常に効率的です。他のログ形式もサポートしていますが、そのコア機能は、多数のWebサービスバックエンドインスタンスからのログを効率的に監視する必要性から生じています。NerdlogはSSH経由で接続し、接続をバックグラウンドでアイドル状態に保ちます。ログ分析はリモートで行われ、クエリごとに最小限のデータのみをダウンロードし、帯域幅効率のためにgzip圧縮を使用します。Vimライクなコマンドラインインターフェースとキーバインドを備えており、直感的なナビゲーションと制御が可能です。

マイクロソフトが私のオープンソースプロジェクトをフォークし、クレジットを与えなかった

2025-04-21

独立系開発者が、自身のオープンソースプロジェクトSpegelがマイクロソフトによってコピーされた経験を語っています。Spegelは、イメージレジストリの停止によって発生するKubernetesクラスタのスケーラビリティ問題を解決するために設計されました。マイクロソフトのエンジニアとの最初の連絡と協力の可能性についての議論の後、開発者は、機能、コード構造、コメント、さらにはテストケースに至るまで、Spegelに驚くほど似ているマイクロソフトのPeerdプロジェクトを発見しました。これは直接コピーを示唆しています。この経験は、大企業と個々の開発者間の協力モデル、オープンソースライセンスの影響、オープンソースプロジェクトのメンテナンスの課題に関する大きなフラストレーションと疑問につながりました。

開発 コピー

Terminology 1.14.0 リリース:新しい翻訳、改善、修正

2025-04-21

Terminology 1.14.0がリリースされました!このリリースでは、ハンガリー語とスロバキア語の翻訳が追加され、複数の言語の翻訳が改善され、起動時の半透明背景の問題やホイールイベントの問題など、いくつかのバグが修正されました。エスケープコードによる選択の報告または設定機能、および二重幅絵文字のサポート設定も追加されました。さらに、内部コードの改善と新しいカラースキームも含まれています。

開発

プログラミング言語におけるパイプライン:可読性への賛辞

2025-04-21
プログラミング言語におけるパイプライン:可読性への賛辞

この記事では、プログラミング言語におけるパイプラインの利点を考察し、コードの可読性と保守性への影響に焦点を当てています。著者は、メソッドチェーンなどの機能が、データ処理ステップを線形化することでコードの明瞭性を大幅に向上させると主張しています。ネストされた関数呼び出しと比較して、パイプラインは、コードの読みやすさ、修正、デバッグを容易にし、IDEのオートコンプリートとバージョン管理を強化します。Rust、Haskell、SQLの例を用いて、さまざまなプログラミングパラダイムにおけるパイプラインの適用方法を示し、さまざまなアプローチの長所と短所を強調しています。

開発

再帰の魔法:無限Pythonジェネレータを使ったe^xと三角関数の定義

2025-04-21
再帰の魔法:無限Pythonジェネレータを使ったe^xと三角関数の定義

この記事では、無限Pythonジェネレータを使って数学関数を再帰的に定義する巧妙なテクニックを紹介しています。正の整数のジェネレータを再帰的に定義し、テイラー級数展開を利用することで、e^x、sin x、cos xのテイラー級数係数を、それらの式を事前に定義することなく、積分関係のみに基づいて再帰的に生成する方法を示しています。また、メモ化デコレータを使った最適化も紹介されており、パフォーマンスの向上と再帰深度の制限回避を実現しています。

PixelスマホのLinuxターミナル:VMのストレージ容量無制限化

2025-04-21
PixelスマホのLinuxターミナル:VMのストレージ容量無制限化

Android 16 Beta 4で、PixelスマホのLinuxターミナルアプリの16GBストレージ容量制限が撤廃されました。ユーザーは、Debian仮想マシンのストレージサイズを調整して、スマホの空き容量をより多く利用できるようになりました。今後のアップデートでは、動的バルーニングが導入され、必要に応じてVMのストレージサイズが自動調整されるため、手動でのサイズ変更は不要になります。現在、GUIとオーディオ出力はサポートされていませんが、これはPixelスマホをポータブルPCとして利用する可能性を大幅に向上させ、Androidアプリと一緒にLinuxデスクトップアプリを実行できるようになります。

開発

正規表現は難しくない:効率的なテキスト処理のための基本概念をマスターする

2025-04-21
正規表現は難しくない:効率的なテキスト処理のための基本概念をマスターする

この記事では、正規表現は多くの人が思っているほど複雑ではないと主張しています。文字集合、繰り返し、グループ、そして |、^、$ 演算子といった基本概念に焦点を当てることで、正規表現の威力を簡単に習得できると説明しています。この記事ではこれらの基本概念を詳しく説明し、不要な複雑さを避けるためにあまり使用されないショートカットを無視することを提案しています。著者は、正規表現を使用することで、従来の手続き型コードよりもはるかに効率的に、最小限のコードで大量のテキスト処理を行うことができることを強調しています。

Joplin 3.2:オープンソースのメモアプリがマルチウィンドウに対応

2025-04-21

オープンソースのメモアプリ、Joplinがバージョン3.2をリリースしました。待望のマルチウィンドウサポート、複数列レイアウト、アクセシビリティの向上、テーマ検出などが含まれています。この多機能アプリは、Markdown、プラグイン、マルチメディア、そしてエンドツーエンド暗号化されたクラウド同期やローカルストレージなど、様々な同期方法をサポートしています。Electronベースのためリソース消費は高めですが、Joplinの堅牢な機能と活気のあるコミュニティは、メモアプリとして魅力的な選択肢となっています。

開発

世界の言語:多言語対応ウェブサイトの紹介

2025-04-21
世界の言語:多言語対応ウェブサイトの紹介

このウェブサイトは、ヨーロッパからアジアまで、英語、中国語、フランス語、スペイン語、ドイツ語など、幅広い言語に対応する強力な多言語機能を効果的に示しています。グローバル展開を目指す企業や組織にとって貴重なリソースとなります。

開発

Python 3.14の革新:より安全な文字列フォーマットのためのテンプレート文字列(t-strings)

2025-04-21

2025年末にリリースされるPython 3.14では、文字列フォーマットを大幅に強化するテンプレート文字列(t-strings)が導入されます。ユーザー入力処理におけるf-stringsのセキュリティリスク(SQLインジェクションやXSSなど)に対処するため、t-stringsは文字列フォーマットとコンテンツを分離します。これにより、フォーマット前に安全なエスケープが可能になり、安全なHTML生成などの複雑なタスクの柔軟性が向上します。開発者は.stringsと.valuesプロパティを通じて文字列部分と値にアクセスし、カスタムフォーマットを実行できます。反復処理もサポートされており、処理が容易になります。これにより、Pythonのセキュリティが向上し、文字列操作の機能が拡張されます。

開発

TikTokのVMリバースエンジニアリング:webmssdk.jsの解読

2025-04-21
TikTokのVMリバースエンジニアリング:webmssdk.jsの解読

このプロジェクトは、webmssdk.js内にあるTikTokのカスタム仮想マシン(VM)のリバースエンジニアリングの詳細を説明しています。VMは、TikTokの難読化とセキュリティの重要な部分です。このプロジェクトには、webmssdk.jsの難読化解除、VM命令の可読なコードへの逆コンパイル、難読化解除されたバージョンでwebmssdk.jsを置き換えるスクリプトの注入、認証済みリクエスト(コメントの投稿など)のための署名付きURLの生成を行うツールが含まれています。著者は、ブラケット表記や偽装された関数呼び出しなど、重要な難読化技術を克服し、VMを正常に難読化解除および逆コンパイルし、最終的に認証済みリクエストの署名を生成することができました。

開発

瞬速PyTorchトレーニング:VRAMアンロードなしでのLLMホットスワップ

2025-04-21
瞬速PyTorchトレーニング:VRAMアンロードなしでのLLMホットスワップ

大規模言語モデルのロード時間は開発を大幅に遅らせる可能性があります。このプロジェクトは、PyTorchトレーニングコードのホットスワップソリューションを紹介します。バックグラウンドプロセスを使用してモデルをVRAMに常駐させることで、ほぼ瞬時の起動を実現します。スクリプトの終了後もモデルはロードされたままなので、次回の実行ですぐに使用できます。リモートデバッグとDear ImGui UIの統合もサポートされており、開発効率が向上します。`from_pretrained`呼び出しを置き換えるだけで、瞬時の実行と容易なデバッグを体験できます。

Haskellでメール送信を実際に送信せずにテストする

2025-04-21
Haskellでメール送信を実際に送信せずにテストする

この記事では、テストスパイを使用して、メール送信機能を実際にメールを送信せずにテストする方法を説明します。メール送信関数を、関数呼び出しの引数を記録するスタブに置き換え、テストのassertionフェーズで記録された情報を確認することで、副作用を効果的にテストでき、テストをより高速で信頼性の高いものにすることができます。この方法は、実際のサービスへの依存を回避し、より分離され高速なテストにつながります。

DOSで巨大言語モデルを実行?信じられますか!

2025-04-21
DOSで巨大言語モデルを実行?信じられますか!

開発者が、ビンテージDOS PCで巨大言語モデル(LLM)を実行することに成功しました!Andrej Karpathyのllama2.cプロジェクトを活用し、MetaのLlama 2モデルをDOSに移植、Thinkpad T42(2004年)やToshiba Satellite 315CDT(1996年)といった古いマシンでデモを行いました。メモリマッピングや浮動小数点演算といった課題がありましたが、Open WatcomコンパイラとDOSエクステンダを使用して克服しました。速度は遅いものの、この成果はレトロコンピューティングの可能性を示す驚くべきものです。

開発
1 2 3 5 7 8 9 108 109