Category: 開発

Guixによる完全自己起動Monoの構築成功:長い道のり

2024-12-31

Guixシステムは、完全自己起動型のMono環境を構築することに成功し、その過程で多くの課題を克服しました。著者は、C# 12.0機能をサポートするために取り組んだ過程で、事前にコンパイルされたバイナリに依存する古いMonoバージョンに問題があることを発見しました。一連のパッチを通じて、Mono 1.2.6から6.12.0までの完全自己起動型のバージョンチェーンが作成されました。その過程で、Monoとxbuildのバグが修正され、Monoのrunpathサポートが強化されました。これは、著者のC#互換性の問題を解決しただけでなく、完全自己起動型で再現可能なビルドの重要性と、ソフトウェアセキュリティへの影響を浮き彫りにしました。

Monokai Proテーマ:JetBrains IDEなどに対応

2024-12-31
Monokai Proテーマ:JetBrains IDEなどに対応

Monokai Proは、JetBrains IDE(IntelliJ IDEA、WebStormなど)、Sublime Text、VS Codeで使用可能なテーマプラグインです。70種類以上のカスタムアイコンと、好みに合わせて調整可能な設定を提供します。無料トライアル版もありますが、月額1ユーロのサブスクリプションでポップアップ広告を削除できます。多くのプログラミング言語とIDEに対応しており、ソフトウェアエンジニアに人気です。

Mozilla、プライバシー重視のAIツール「Orbit」を発表

2024-12-31

Mozillaは、プライバシーを重視したAIツール「Orbit」を発表しました。FirefoxアドオンであるOrbitは、メール、ドキュメント、記事、動画などのウェブコンテンツを要約する機能を提供します。アカウント作成は不要で、セッションデータや個人情報は保存されません。MozillaがホストするMistral 7B LLMモデルを使用しています。ユーザーは長いドキュメントや動画を簡単に要約し、メールや記事の要点をすばやく把握し、質問を通じて特定の情報を得ることができます。

開発

Google スプレッドシートを便利なウェブアプリに変換する:プログラマーの物語

2024-12-31
Google スプレッドシートを便利なウェブアプリに変換する:プログラマーの物語

Ars Technica の記者が、Glide を使用してシンプルな Google スプレッドシートをスマートフォンに優しいウェブアプリに変換した方法を共有しています。当初はテイクアウトの注文を合理化するために作成されたこのアプリは、効率的な検索とフィルタリング機能を備え、地元のレストラン情報を管理します。その後、レシピやパントリーアイテムのアプリも開発し、日常生活を改善しました。この記事は、ノーコードツールの威力と、シンプルなソリューションが現実世界の課題を解決できる方法を示しており、創意工夫とより良い生活への追求を強調しています。

Linuxカーネル初期コミットのSHA衝突リスク

2024-12-31

Linuxカーネル開発者のKees Cookは、カーネルのドキュメントコミットのIDが、カーネルリポジトリの最初のコミットの最初の12文字と一致していることを発見しました。この潜在的な衝突は、一意のコミットIDに依存するさまざまなツールを壊す可能性があります。まだアップストリームにマージされていませんが、このコミットは、SHA衝突を事前に解決し、将来の広範囲にわたる問題を防ぐためのテストケースとして機能します。

開発 SHA衝突

Lightstorm:ミニマルなRubyコンパイラがMLIRでパフォーマンス向上

2024-12-31

DragonRubyチームは、クロスプラットフォームゲームエンジンのパフォーマンス向上を目指して、LightstormというミニマルなRubyコンパイラを開発しました。MLIRを活用し、mruby仮想マシンのバイトコードをCコードに変換することで、VMインタプリタループ内のロード/ストアおよび分岐操作を排除し、パフォーマンスを最適化します。ベンチマークの結果、パフォーマンスは1%から1200%向上し、実行時間とサイクル数は平均で約30%削減されました。現在、Rubyのサブセットのみをサポートしていますが、このプロジェクトは、パフォーマンス向上のためのRubyコードの事前コンパイルの可能性を実証しています。今後の計画には、エンジンの重要なCコンポーネントをコンパイル済みRubyコードに置き換えることが含まれています。

LineageOS 22.1リリース:抽出速度30倍向上、新音楽アプリとPDFリーダーが登場

2024-12-31

Android 15 QPR1ベースのLineageOS 22.1が、大幅な改善を伴ってリリースされました。抽出ユーティリティの速度が30倍向上し、新しい音楽プレイヤーアプリ「Twelve」とPDFリーダーアプリ「Camelot」が追加されました。SeedVault、Etar、WebViewもアップデートされています。バージョン番号はAndroidのマイナーバージョン番号と整合するように調整され、Androidのバージョンの区別が容易になりました。プロジェクトはコードベースを簡素化し、より多くのデバイスのサポートを追加し、開発者によるコードと翻訳への貢献を奨励しています。

開発

LuaのためのミニマルなSum型とSwitch: lua-match

2024-12-31
LuaのためのミニマルなSum型とSwitch: lua-match

lua-matchは、Sum型とSwitch機能を提供するミニマルなLuaライブラリです。様々なデータ型と条件分岐をクリーンかつ効率的に処理するために、タグ付け関数を活用しています。シンプルなタグ付け関数とswitchテーブルを使用することで、Sum型のような動作とパターンマッチングを容易に実装でき、Luaコードを大幅に簡素化できます。このライブラリはオープンソースで、MITライセンスを使用しています。

開発 Sum型

ZigでGame Boy Advanceゲームを開発

2024-12-31

開発者が新興プログラミング言語Zigを用いて、Game Boy Advance向けゲーム「2048」を作成しました。この記事では、Zigが持つ組込みプログラミングにおける利点、特に簡素化されたクロスコンパイルプロセス、効率的なメモリ管理(packed structを含む)、強力なコンパイル時コード生成機能について説明しています。著者 はC++とZigの開発経験を比較し、ZigがGame Boy Advance特有のメモリレイアウトとハードウェアレジスタの処理において、より簡単で効率的であることを指摘しています。ZigにはインラインアセンブリやThumb命令のサポートが限定的であるなど、いくつかの欠点もありますが、多くの利点からレトロゲーム機向けゲーム開発に最適な選択肢となっています。

Linuxがデスクトップにまだ対応していない理由

2024-12-30

この記事では、Linuxがデスクトップで広く採用されていない根本的な理由を深く掘り下げています。著者は、いくつかの主要な問題点を指摘しています。ディストリビューション間のソフトウェア互換性の低さ、頻繁なアップデートによるバグや回帰、資金不足によるソフトウェア品質の低下、ハードウェアドライバのサポート不足、そしてLinuxコミュニティ内でのコミュニケーション上の課題などです。Linuxはサーバー環境では優れていますが、デスクトップ環境での存在感は、これらの持続的な障害によって妨げられており、Windowsなどの確立されたオペレーティングシステムと効果的に競争することが困難になっています。

コーディングフォントトーナメント:Source Code Proが優勝

2024-12-30
コーディングフォントトーナメント:Source Code Proが優勝

Daring Fireballのジョン・グルーバーが、Typogramが作成した楽しいコーディングフォント選択「トーナメント」を紹介しています。ユーザーは32種類の無料の等幅フォントから好きなものを選びます。Consolasなどの一般的な選択肢がないことや、含まれる一部のフォントがあまり魅力的でないことはありますが、価値のある試みです。最初の公開以降の改善点としては、CSSではなくJavaScriptコードの例が使用され、より多くのフォントが選択できるようになりました。グルーバーは、バイアスを減らすためにフォント名を無効にすることを推奨しています。彼の常勝者?AdobeのSource Code Proで、IBM Plex Monoがそれに続きます。

RubyConf 2024: クラウドネイティブビルドパックハッカソン

2024-12-30
RubyConf 2024: クラウドネイティブビルドパックハッカソン

Richard Schneemanは、RubyConf 2024でクラウドネイティブビルドパック(CNB)ハッカソンを開催し、Rubyのデプロイツールについて学習し、貢献することを支援します。イベントでは、既存のビルドパックの修正から新規ビルドパックの作成まで、さまざまな難易度のタスクを用意し、様々なスキルレベルに対応しています。現地に参加できない場合でも、提供されたリソースを使用して参加できます。

データベースモック:メリットよりデメリットの方が多い?

2024-12-30
データベースモック:メリットよりデメリットの方が多い?

速度と簡潔さゆえに魅力的ですが、著者はデータベースモックを用いたテストは、結局のところ解決する問題よりも多くの問題を引き起こすと主張しています。ユーザー作成の例は、モックと実データベースに対するテストの違いを浮き彫りにしています。実データベーステストは、一意制約違反、デフォルト値の処理、パフォーマンスボトルネックなど、潜在的な問題を早期に明らかにし、デバッグ時間を節約し、本番環境のリスクを軽減します。アプリケーションとスキーマが進化するにつれて、実データベーステストは、新しい検証、データ型の変更、タイムスタンプの精度変更をより適切に処理し、コードが実際のデータベースと整合することを保証します。著者は、データアクセス層については実データベーステストを優先し、サービス層ではビジネスロジックとデータの相互作用を明らかにするために使用することを提案しています。一方、コントローラー層はサービス呼び出しを効果的にモックできます。実データベーステストとモックのバランスが、堅牢なアプリケーション構築の鍵となります。

Homaネットワークプロトコル:TCP/UDPへの新たな挑戦者

2024-12-30

Homaは、データセンターアプリケーション向けに設計された新しいネットワーク転送プロトコルであり、多数の小さなメッセージの送信オーバーヘッドを削減することを目的としています。従来のTCP/UDPとは異なり、接続確立が不要で、独自の要求応答メカニズムと優先順位付きキューを使用して、レイテンシを最小限に抑えます。現在、HomaはLinuxカーネルへの統合を目指していますが、将来はネットワーク機器内のハードウェアアクセラレーションに大きく依存する可能性があります。

LLMのコード生成能力評価:MultiCodeBenchの登場

2024-12-30
LLMのコード生成能力評価:MultiCodeBenchの登場

コードを扱う大規模言語モデル(LLM)を搭載したAIによるプログラミングアシスタントが普及し、開発者の生産性が大幅に向上しています。しかし、既存のコード生成ベンチマークは主に汎用的なシナリオに焦点を当てており、特定のアプリケーションドメインにおけるLLMのパフォーマンスはほとんど知られていません。本論文では、12の人気のあるソフトウェア開発ドメインと15のプログラミング言語を網羅する2400個のプログラミングタスクを含む新しいベンチマーク、MultiCodeBenchを紹介します。11個の代表的な主流LLMを用いた実験により、様々なドメインにおけるLLMのコード生成能力が明らかになり、開発者にとってLLMを選択する際の実際的な洞察と、モデル開発者がドメイン固有のコード生成能力を向上させるための指針が得られます。

開発

ts_zip:大規模言語モデルを用いたテキスト圧縮

2024-12-30

Fabrice Bellard氏によって開発されたts_zipは、大規模言語モデルRWKV 169M v4を利用し、従来の圧縮ツールをはるかに凌駕する高いテキスト圧縮率を実現するツールです。GPUと4GBのRAMを必要とし、従来の圧縮ツールよりも速度は遅いものの(RTX 4090で最大1MB/s)、英語やその他の言語のテキスト、さらにはソースコードにおいても優れた圧縮性能を示します。圧縮率はビット毎バイト(bpb)で測定され、enwik8やenwik9などのデータセットにおいてxzよりも優れた結果を示しています。決定論的なモデル評価により、異なるハードウェアやソフトウェア構成においても一貫した解凍が保証されます。

ユニットテスト生成における大規模言語モデルの評価に関する画期的な研究

2024-12-30
ユニットテスト生成における大規模言語モデルの評価に関する画期的な研究

研究者らは、ユニットテストの自動生成における大規模言語モデル(LLM)の可能性について包括的な評価を行いました。17個のJavaプロジェクトにおいて、5つのオープンソースLLMと、クローズドソースのGPT-4、従来型のツールであるEvosuiteを比較し、様々なプロンプト戦略の影響を調査しました。その結果、オープンソースLLMはデータプライバシーにおいて優位性があり、特定のタスクでは優れた性能を示す一方で、LLMベースのユニットテスト生成における限界も明らかになりました。この研究は、この分野におけるLLMの将来的な応用を導くための貴重な知見を提供します。

Diaspora*内部チーム連絡事項

2024-12-30
Diaspora*内部チーム連絡事項

この抜粋はDiaspora*内部チームの連絡事項からのものです。ウェブサイトを正しく機能させるにはJavaScriptを有効にする必要があると述べており、コンテンツの報告方法、報告基準についても説明しています。Diaspora*プロジェクトの議論やサポートへのリンク、コードバージョン、Pod統計、利用規約、連絡先情報、タッチ最適化モードへの切り替えオプションなどのウェブサイト情報も表示されています。

開発

SQLite:驚くべきデータベースの伝説

2024-12-30

世界で最も広く展開されているデータベースであるSQLiteは、3人体制のチームによって保守されており、外部からの貢献を拒否しながらも、その比類のない性能と安定性で世界を征服しています。サーバーのダウンタイム問題を解決するためにアメリカの軍艦で誕生したSQLiteは、今では数兆ものデータベースの基盤となっています。SQLiteはオープンソースではなく、オープンソースライセンスよりも制限の少ないパブリックドメインソフトウェアです。極端な状況、例えばオペレーティングシステムのクラッシュなどをシミュレートする厳格なテストプロセスにより、非常に高い信頼性が確保されています。しかし、有料サポートや会員制度を通じて収益を上げるという独自のビジネスモデルも注目に値します。SQLiteの伝説は、その技術力だけでなく、その裏にある粘り強さと革新性にもあります。

(avi.im)
開発 伝説

新しいショートメッセージ圧縮ツール:ts_sms

2024-12-30

ts_smsは、大規模言語モデルを用いたショートメッセージ圧縮ツールです。損失のない圧縮技術を使用し、統計的冗長性を特定して除去することでビット数を削減し、情報損失はありません。brotliなどのツールと比較して、ts_smsは小さなメッセージの圧縮において利点があります。Linux版とWindows版が利用可能です。そのコアテクノロジーはts_zipと似ており、算術符号化と互換性のある特定のパディングシステムを使用することで、メッセージ長の明示的な符号化を不要にしています。

開発

実行ユニットはしばしばパイプライン化される

2024-12-30

このブログ記事は、アウトオブオーダーマイクロアーキテクチャにおける実行ユニットのパイプライン化について考察しています。著者は当初、実行ユニットはμopの処理が完了するまで占有されたままであると考えていましたが、Firestormマイクロアーキテクチャ(A14およびM1)を例に、2つの整数実行ユニットが複数の乗算を同時に処理でき、それぞれ3サイクルかかることを示しています。依存命令シーケンスと独立命令シーケンスの実行時間を比較することで、多くの実行ユニット/μopの組み合わせが高度にパイプライン化されていることが明らかになり、ユニットが他のμopを処理している間にもμopを発行できることが示されています。これにより、独立命令シーケンスの実行時間が予測値の6サイクルから4サイクルに短縮されます。最後に、著者は、命令レイテンシと帯域幅の表が逆数スループットを指定する理由を説明しています。それはサイクル/命令に相当するためです。

Panel Graphic Walker:HoloViz Panelを使ったインタラクティブなデータ探索

2024-12-30
Panel Graphic Walker:HoloViz Panelを使ったインタラクティブなデータ探索

Panel Graphic Walkerは、Jupyter NotebookやPanelアプリケーション内でインタラクティブなデータ探索を行うためのPythonライブラリです。Graphic Walkerの機能をHoloViz Panelに統合し、Tableauに似たインターフェースを提供します。最小限のコードで動的な可視化とテーブルを迅速に作成できます。様々なデータバックエンドとレンダラーに対応し、サーバーサイド計算を利用して大規模なデータセットを処理できます。プロジェクトはまだ初期段階にあるため、特定のバージョンを固定することをお勧めします。

Zig:Rustのunsafeより安全で高速?

2024-12-30
Zig:Rustのunsafeより安全で高速?

このブログ投稿では、ガベージコレクション付きバイトコードインタープリターを実装することで、RustとZigを比較しています。著者は、Rustのunsafeコードが非常に困難であることを発見し、複雑なエイリアシングルールと未定義の動作を主要な障害として挙げています。対照的に、Zigはメモリunsafeな操作に対して、メモリリーク検出機能や、使い勝手の良いポインター操作などを備えた、より開発者フレンドリーなエクスペリエンスを提供しました。最終的に、Zigの実装はRustの実装よりも安全で高速であり、開発も容易でした。

curlの大幅アップデート:部分ファイル読み込みに対応

2024-12-30
curlの大幅アップデート:部分ファイル読み込みに対応

今後のcurl 8.12.0リリースでは、エキサイティングな新機能が導入されます。部分ファイルの読み込みに対応します。ユーザーは新しい変数システムを利用して、ファイルから特定のバイト範囲を抽出し、curlコマンドラインで使用できるようになります。これにより、curlによるファイルの処理方法に大きな柔軟性が加わり、ファイルの先頭部分をユーザー名として抽出したり、中央部分をPOST本文として使用したりといったタスクが可能になります。curlの機能が大幅に拡張され、より堅牢なコマンドラインツールがユーザーに提供されます。

curl-impersonate更新:ブラウザ擬態機能の強化

2024-12-30
curl-impersonate更新:ブラウザ擬態機能の強化

lexiforest/curl-impersonateはcurl-impersonateのアクティブなフォークであり、ブラウザの擬態機能を強化し、より多くのバージョンとビルドターゲットをサポートしています。このプロジェクトはcurlを修正して、TLSおよびHTTPハンドシェイク中に主要なブラウザ(Chrome、Edge、Safari、Firefox)の動作を模倣し、フィンガープリンティングに基づくWebサイトの制限を回避します。更新には、ECH、ZSTD圧縮、X25519Kyber768曲線、およびより多くのブラウザバージョンのサポートが含まれており、改良されたコマンドラインツールとライブラリ関数が提供されます。

86Box:x86アーキテクチャの過去への旅

2024-12-30
86Box:x86アーキテクチャの過去への旅

86Boxは、1981年からPCIバス時代までのIBM PC互換システム向けに設計された、古いオペレーティングシステムとソフトウェアを実行できる強力なx86エミュレーターです。ユーザーフレンドリーなインターフェースと高いカスタマイズ性を備え、MS-DOS、古いバージョンのWindows、OS/2、その他のビンテージシステムやアプリケーションを実行できます。幅広い周辺機器(ビデオカード、サウンドカード、ネットワークアダプターなど)をサポートしており、複数の仮想マシンを簡単に処理できる複数のマネージャーアプリケーションも提供されています。懐かしさを感じるか、レトロコンピューティングに興味があるかに関わらず、86Boxは過去への魅力的な一瞥を提供します。

MiceWine:AndroidでWindowsアプリとゲームを実行

2024-12-30
MiceWine:AndroidでWindowsアプリとゲームを実行

MiceWineは、AndroidスマートフォンでWindowsアプリケーションとゲームを実行することを目指したプロジェクトです。Android向けにコンパイルされたカスタマイズされたWineビルドとBox64を使用して、最適なパフォーマンスを実現しています。現在、積極的に開発中で、Termux-X11ベースのXサーバーを使用しています。Android 10以降をサポートしています。Adreno 7xxおよび6xx GPUはTurnip/Zinkでサポートされ、その他のGPUはネイティブ/Zink(実験的)で部分的にサポートされています。非Adreno GPUでのネイティブVulkanは実験的で、テストが必要です。

水力学的アナロジー:電子工学学習の障害

2024-12-30
水力学的アナロジー:電子工学学習の障害

多くの電子工学入門テキストは、水力学的アナロジーを用いて回路を説明し、電流を水流、電池をポンプに例えています。しかし、著者は、このアナロジーには特にJFETやMOSFETなどの半導体部品の説明において深刻な欠陥があると主張しています。このアナロジーでは特性曲線を正確に表現できず、学習を妨げています。著者は、この不正確なアナロジーを放棄し、より基本的な原理から電子工学を学ぶことを提唱しています。

2024年のPython:かつてない速さ、パワー、人気

2024-12-30
2024年のPython:かつてない速さ、パワー、人気

2024年、Pythonは主要プログラミング言語としての地位を確固たるものにしました。Python 3.13では、実験的な「no-GIL」ビルドとJITコンパイラにより、パフォーマンスが大幅に向上しました。時代遅れのモジュールの削除により言語が簡素化され、AI、機械学習、データサイエンスにおける重要な役割が、人気を新たな高みに押し上げました。GitHubでの使用率はJavaScriptを上回り、Tiobeインデックスでも18%という驚異的な数値を達成し、主要3言語の1つとしての地位を固めました。

開発

Haskellにおけるラムダ抽象のオーバーロード:EDSL設計へのエレガントなアプローチ

2024-12-30
Haskellにおけるラムダ抽象のオーバーロード:EDSL設計へのエレガントなアプローチ

この記事は、Haskellでラムダ抽象をオーバーロードして、埋め込みドメイン特化言語(EDSL)を構築するための新しい方法を紹介します。`Port`型と`encode`/`decode`関数を巧みに使用することで、著者はHaskell関数をカスタムカテゴリ内の射にエレガントに変換します。これにより、簡潔で直感的な構文が実現し、Arrow抽象とproc表記の複雑さを回避できます。このアプローチは、最小限のHaskellコードで実現でき、メタプログラミングやコンパイラプラグインは必要ありません。フローダイアグラムDSLの例が、この方法の適用と、重複の防止や副作用の処理に関する議論とともに示されています。

1 2 197 198 199 201 203 204 205 214 215