Category: 開発

偽装VS Code拡張機能による多段階マルウェア攻撃

2025-02-10
偽装VS Code拡張機能による多段階マルウェア攻撃

研究者らは、人気の`truffle`拡張機能に酷似した悪意のあるVS Code拡張機能`truffelvscode`を発見しました。この拡張機能は、多段階マルウェアのトロイの木馬として機能します。マルウェアは、悪意のあるコードの複数段階をダウンロードして実行し、最終的にはScreenConnectリモートアクセスツールをインストールして構成し、攻撃者に侵害されたシステムのリモート制御権限を与えます。悪意のあるコードを隠蔽するために難読化技術が使用されていましたが、研究者らは難読化解除とサンドボックス分析を使用して、攻撃チェーン全体を明らかにしました。このインシデントは、VS Code拡張機能のインストールにおける注意の重要性を強調し、ソフトウェアサプライチェーン攻撃の増大する脅威を浮き彫りにしています。

開発

40年間の予想が覆される:新しいハッシュテーブルが期待値を上回る

2025-02-10
40年間の予想が覆される:新しいハッシュテーブルが期待値を上回る

ケンブリッジ大学の大学院生であるクラピビンと、ニューヨーク大学のファラッハ・コルトン、クスマウルは、コンピューターサイエンスにおける長年の定説であるヤオの予想を覆しました。彼らが開発した新しいハッシュテーブルは、最悪の場合の要素検索における時間計算量が(log x)²となり、従来の最適解とされていたxを大きく下回ります。この画期的な研究は、ハッシュテーブル設計における古典的な問題を解決するだけでなく、データストレージの効率を劇的に向上させ、学術界に大きな注目を集めています。

開発

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

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

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

開発

AIコーディングアシスタントはより多くのコンテキストを必要とする:実験と知見

2025-02-10
AIコーディングアシスタントはより多くのコンテキストを必要とする:実験と知見

従来のAIコーディングアシスタントはコード生成に長けていますが、より広範なシステム環境に関する重要なコンテキストを欠いていることがよくあります。そのため、開発者はコードとさまざまな情報源のギャップを埋めるために余分な時間を費やすことになります。この記事では、AIアシスタントに運用コンテキスト(コールグラフ、メトリクス、例外レポートなど)を統合してデバッグの精度を向上させる実験について詳しく説明します。結果は、構造化されたパフォーマンスデータとエラーレポートがAI分析を強化することを示していますが、大量のコンテキストを効率的に表現することは依然として課題です。今後は、運用状況、システムメトリクスなどを含むナレッジグラフを構築することで、AIアシスタントがシステムの動作を包括的に理解できるようになるでしょう。

ReactでProseMirrorのレンダラーを再構築:2つのライブラリの物語

2025-02-10

著者は、ReactとProseMirrorを使用して構築されたニューヨークタイムズのリッチテキストエディターOakでの作業経験について語ります。しかし、統合は問題が多く、永続的なバグが発生しました。4年間、両ライブラリの複雑さと格闘した後、チームはReactでProseMirrorのレンダラーを書き直すことを選択しました。これにより、状態の破断などの問題が解決され、パフォーマンスと互換性が向上した新しいライブラリ@handlewithcare/react-prosemirrorが誕生しました。

LLMによる線形計画の説明:個人プロジェクトからMicrosoftリサーチへ

2025-02-10

2020年、Googleのサプライチェーン部門で働いていた著者は、線形計画(LP)の理解を支援するためのサイドプロジェクトを開発しました。LPが複雑になると、その結果を理解することは専門家にとっても困難になります。著者のアプローチは、モデルをインタラクティブに変更し、結果を比較してモデルの動作を説明することであり、意味のあるメタデータを追加することでプロセスが簡素化されることを発見しました。最近、Microsoftの研究者たちは、自然言語クエリを構造化クエリに変換するために大規模言語モデル(LLM)を使用する論文を発表し、同様の結果を得ています。著者は、LLMは人間の曖昧さを構造化クエリに変換し、堅牢な古典的な最適化システムによって処理され、その結果がLLMによって要約されるのに最適であると考えています。著者の以前の仕事は未発表でしたが、彼はより単純なシステムの説明を理解することが、より複雑なAIシステムを説明するために不可欠であると主張しています。

PDFSyntax:依存関係のないPythonによるPDF可視化ツール

2025-02-10
PDFSyntax:依存関係のないPythonによるPDF可視化ツール

PDFSyntaxは、依存関係のないスタンドアロンのPythonライブラリであり、PDFファイルの内部構造をインタラクティブなHTMLとして可視化します。PDFデータを解析、解凍、整形し、ハイパーリンクとインデックスを追加することで、オブジェクト間の移動やリビジョンの追跡など、PDF内での論理的なナビゲーションを可能にします。簡単なコマンドライン操作で、JavaScriptを有効にする必要のない、ブラウザで直接表示できる静的なHTMLファイルを生成します。逆インデックス、ページインデックス、ミニマップ、オブジェクトストリームの抽出、ストリームの解凍、構文の強調表示などの機能を備えています。暗号化されたファイルはまだサポートされていません。

開発

Python 3.14:アノテーションの遅延評価と新しいインタープリタ

2025-02-10
Python 3.14:アノテーションの遅延評価と新しいインタープリタ

Python 3.14にはエキサイティングなアップデートが盛り込まれています!PEP 649とPEP 749はアノテーションの遅延評価を導入し、パフォーマンスを向上させ、アノテーションの記述を簡素化します。新しいテールコールベースのインタープリタは、特定のコンパイラとアーキテクチャで大幅な速度向上(pyperformanceで幾何平均9~15%)を実現します。最後に、PEP 741はPython設定C APIを改良し、将来の機能強化への道を開きます。これらのアップデートにより、Pythonはより高速で強力になります!

K:簡潔で高速なベクトル指向プログラミング言語

2025-02-10

K言語ファミリーは、アーサー・ホイットニーによって設計された、簡潔で高速なベクトル指向プログラミング言語です。単一のバージョンではなく、互換性にやや欠ける連続したバージョンです。本書では、ngn/k (k6) や oK (k5/6) など、オープンソースのK言語実装と、それを取り巻くコミュニティに焦点を当てています。K言語の特徴、学習曲線、APLやJ言語との関係を探ります。簡潔さと速度で知られていますが、K言語の学習曲線は急峻で、熱心な練習が必要です。

RustがAdaに追いつこうとする:安全重視プログラミングにおける戦い

2025-02-10
RustがAdaに追いつこうとする:安全重視プログラミングにおける戦い

Adaは40年以上、安全重視プログラミング分野をリードしてきました。過去10年間、Rustは様々な成果を出しながらこの分野への参入を試みてきました。この講演では、バグのないコードを保証するためのAdaの強力な機能、特に堅牢なサブタイプ宣言と使いやすさについて解説し、Rustの機能と比較することで、Rustの不足点とその追いつき具合を明らかにします。

C++におけるグローバル変数の巧みな利用

2025-02-10

この記事では、C++におけるグローバル変数の効果的な使用方法を探ります。著者は、グローバル変数は本質的に悪いものではなく、適切な使用方法が重要であると主張しています。この記事では、グローバル変数の利点と欠点を提示し、4つのルールを概説しています。1.誤用を困難にすること。2.観測可能な状態を変更した後は元の値を復元すること。3.内部状態への参照やポインタを返さないこと。4.テストを困難にしないこと。コード例を通して、著者は正しい使用方法と潜在的な落とし穴を示し、マルチスレッド環境ではスレッドローカル変数を使用することを推奨しています。

開発

Veronaのプロセスベースのサンドボックス:安全な非信頼コードの実行

2025-02-10
Veronaのプロセスベースのサンドボックス:安全な非信頼コードの実行

このプロジェクトは、Veronaのプロセスベースのサンドボックス機構の詳細を説明しています。これは、信頼できない外部コードを安全に実行するために設計されています。プロセス分離を活用することで、OSの変更は不要です。信頼できないライブラリは共有メモリ領域で実行され、慎重に設計されたIPCを介して信頼できる親プロセスと通信します。この機構は、コールバックとシステムコールのエミュレーションをサポートし、親プロセスの安全性を確保します。侵害されたとしても、サンドボックスは親プロセスのメモリやシステムリソースにアクセスできません。現在、Capsicumとseccomp-bpfのサンドボックス技術をサポートしており、効率性と互換性の向上を目指しています。

Rust vs. Ada:メモリ安全性の争い

2025-02-10

この記事では、RustとAdaが一般的なメモリ関連のエラーをどの程度効果的に防止できるかを比較しています。Rustはエラーの直接的な防止に優れていますが、Adaは動的メモリ割り当てを回避し、形式的検証をサポートすることで、多くの一般的なエラーを完全に回避できます。この記事では、メモリリーク、バッファオーバーフロー、解放後の使用、二重解放、競合状態などの一般的なメモリエラーを詳しく調べ、各言語がどのようにこれらのエラーを処理するかを比較しています。Rustはコンパイル時のチェックがより厳格ですが、Adaの静的解析機能とポインタの厳格な制御は、魅力的な代替手段となります。最終的に、著者は、両方の言語が独自の強みを持っていると結論付けています。Rustはコンパイル時安全性に重点を置き、Adaはエラーの発生を防ぐことに重点を置いています。

開発

技術アーキテクチャ図の七つの大罪

2025-02-10
技術アーキテクチャ図の七つの大罪

この記事では、技術アーキテクチャ図を作成する際に避けるべき7つのよくある間違いを概説し、それぞれに対する解決策を提供しています。これらの間違いには、具体的な図ではなく理論的な図を作成すること、抽象化レベルを混ぜること、重複する懸念事項を多く含めること、ラベルのない矢印、誤解を招く構成、コンテキストの欠如、および付随する説明テキストの欠如が含まれます。この記事では、システム情報を明確かつ正確に伝えることの重要性を強調し、情報過多に対処するために複数の図を使用すること、および図の理解と効果を高めるためにラベルと説明テキストを追加することを提案しています。

Frupidity:生産性とイノベーションの静かなる殺し屋

2025-02-10
Frupidity:生産性とイノベーションの静かなる殺し屋

倹約は美徳ですが、Frupidity(むだを省きすぎること)は生産性とイノベーションの静かなる殺し屋です。この記事では、架空の企業PennyTechの例を用いて、ツール、インフラ、出張費の節約が、効率性と士気に深刻な損害を与えることを示しています。著者は、真の効率は賢い投資にあり、盲目的なコスト削減ではないと主張し、エンジニアの時間の価値を尊重すること、そして最終的にコストがかさむような近視眼的な意思決定を避けることの重要性を強調しています。

静的サイトジェネレーターに別れを告げる:私のブログは生のHTMLで書かれています

2025-02-10

静的サイトジェネレーターの継続的な更新と互換性の問題にうんざりしたので、私のブログは何度も改良を重ね、最終的に生のHTMLを使用するようになりました。Markdownにはmd-block、構文のハイライトにはhighlight.jsを使用しています。ブラウザに組み込まれたオーディオおよびビデオプレーヤーとHTMLの長寿命化により、テーマの互換性の問題から解放され、長期的なコンテンツの可用性が確保されます。

開発

ありがとう、Bootstrap:開発者の賛歌

2025-02-10

著者は、Anki BooksやLarderなどの個人プロジェクトでCSSにBootstrapを多用しています。インタラクティブなUIウィジェットの作成の容易さを称賛しています。重要な例として、Bootstrapの色変数を用いてLarderのテーマをカスタマイズし、トランスジェンダーの旗の色を採用したことを説明しています。著者は結果に満足しており、Bootstrapの効率性を強調し、ウェブサイト全体の色変更を容易にカスケードし、大幅な開発時間と複雑なカラーデザインを簡素化できると述べています。

開発

py3-TTS-Wrapper:統合的なクロスプラットフォームテキスト読み上げライブラリ

2025-02-10
py3-TTS-Wrapper:統合的なクロスプラットフォームテキスト読み上げライブラリ

py3-TTS-Wrapperは、AWS Polly、Google TTS、Microsoft Azure TTSなどの様々なテキスト読み上げ(TTS)サービスとシームレスに統合するための、統合的なインターフェースを提供するPythonライブラリです。音声、言語、音量、ピッチ、速度のカスタマイズを可能にするSSMLをサポートしています。ストリーミング、ファイル出力、オフラインエンジン(eSpeak-NG、PicoTTS)のサポートなどの機能を備えています。プロジェクトにTTS機能が必要な場合でも、様々なTTSエンジンを探求したい場合でも、py3-TTS-Wrapperはプロセスを簡素化します。

開発

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

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

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

開発

ターミナルユーザーの悩み:ベテランも苦労するポイント

2025-02-09

1600人のターミナルユーザーを対象とした調査で、ベテランユーザー(21年以上利用しているユーザーが40%)ですら、長年利用していてもなお抱えている多くの問題点が明らかになりました。主な問題点は、コマンドの構文(awk、jq、sedなど)、ショートカットキー(tmux、テキストエディタなど)、異なるシステム間の違い(OSの違い、エディタの違いなど)の記憶です。さらに、カラー設定、コピー&ペースト(SSH、tmuxなどでの操作)、便利なツールの発見のしにくさ、急峻な学習曲線、シェル履歴の管理、ドキュメントの不足なども頻繁に挙げられました。この結果は、経験豊富なユーザーでさえ、ターミナルの細かい点で苦労していることを示しており、ユーザーエクスペリエンスの改善の必要性を強調しています。

3日間の悪夢:PythonユーティリティからWebアプリへ

2025-02-09
3日間の悪夢:PythonユーティリティからWebアプリへ

著者は3日間かけて、シンプルなPythonユーティリティをWebアプリケーションに変換しようとしました。FlaskとBottleフレームワークを使った最初の試みは、CORSの問題と非同期リクエストの複雑さのために失敗しました。JavaScriptのFetch APIとNode.js REST APIを試しましたが、維持コストが高すぎることが判明しました。最終的に、著者は元のBottleアプリに戻り、リクエスト完了を待つユーザーの時間を、シンプルで保守しやすいコードと引き換えに受け入れました。これは、技術選定の重要性を示しています。簡単な解決策が最善策であることはよくあることです。

開発

PostgreSQLのベストプラクティス:堅牢で信頼性の高いデータベースシステムの構築

2025-02-09
PostgreSQLのベストプラクティス:堅牢で信頼性の高いデータベースシステムの構築

この記事では、PostgreSQLデータベースのベストプラクティスについて概説し、データベース設計、パフォーマンス最適化、セキュリティ、バックアップと復旧、メンテナンスと監視、開発プラクティスなどを網羅しています。命名規則やスキーマ設計から、インデックス戦略、クエリ最適化、アクセス制御、パスワードポリシー、バックアップ戦略、監視メトリクスまで、詳細なガイダンスとコード例を提供することで、開発者が堅牢で効率的で安全なPostgreSQLデータベースシステムを構築する支援をします。また、レプリケーション設定やロードバランシングなど、高可用性構成についても重点的に説明し、データベースシステムの信頼性とスケーラビリティを確保します。

開発

Ada/SPARK Crate of the Year Awards発表!

2025-02-09
Ada/SPARK Crate of the Year Awards発表!

2024年度Ada/SPARK Crate of the Year Awardsの結果が発表されました!Lionel Draghi氏が、自動テストのために分かりやすいMarkdown形式の動作仕様書を使用するコマンドラインツールBBTでAda Crate of the Yearを受賞しました。Kevin Chadwick氏は、メモリセーフなログライブラリelogs(SPARKシルバー認定)でSPARK Crate of the Yearを受賞しました。このライブラリは、ユーザーが最大メッセージ長を指定できます。最後に、Brent Seidel氏の組み込み可能なLispインタプリタbbs_lispがEmbedded Crate of the Yearを受賞し、組み込みシステムにおけるAdaの強みを示しました。

開発

RustによるLinuxカーネル長期戦

2025-02-09
RustによるLinuxカーネル長期戦

RustはLinuxカーネルへの進出を図っていますが、その移行は長く、議論の的となるでしょう。Rustはメモリ安全性において大きな利点があり、Googleなどの企業から支持されていますが、カーネルコミュニティ内では強い抵抗に直面しています。急峻な学習曲線と既存のCコードとの統合の課題に関する懸念から、激しい議論が引き起こされ、「宗教戦争」とさえ表現されています。しかし、支持者たちは、Rustがカーネルの安定性とセキュリティを向上させ、より多くの開発者を惹きつけると主張しています。最終的に、RustがCを完全に置き換えるかどうかは、技術の成熟度とコミュニティのコンセンサスに依存します。

開発

NixとHome ManagerでSteam Deckの不変ファイルシステムを克服する

2025-02-09
NixとHome ManagerでSteam Deckの不変ファイルシステムを克服する

Steam Deckの不変ファイルシステムは、システムのアップグレード後も残るパッケージのインストールを困難にしています。このガイドでは、NixとHome Managerを使用してこの問題をエレガントに解決する方法を示します。Nixは宣言型のパッケージマネージャーです。必要なパッケージを構成ファイルにリストするだけで、インストールを処理します。Home ManagerはNixの使用を簡素化します。このガイドでは、Steam DeckへのNixとHome Managerのインストール、パッケージの管理(インストール、削除)、デスクトップショートカットの作成やガベージコレクションの実行などのヒントについて詳しく説明します。

開発

arXivLabs:コミュニティと協力して新しいarXiv機能を構築

2025-02-09
arXivLabs:コミュニティと協力して新しいarXiv機能を構築

arXivLabsは、開発者がarXivコミュニティと協力して、arXivウェブサイトに直接新しい機能を開発および共有することを可能にするフレームワークです。参加者は、arXivの開放性、コミュニティ性、卓越性、およびユーザーデータプライバシーというコアバリューを遵守する必要があります。arXivコミュニティに価値を追加するプロジェクトのアイデアをお持ちの場合は、arXivLabsの詳細をご覧ください。

開発

APIリクエスト署名:落とし穴とベストプラクティス

2025-02-09

この記事では、APIリクエスト署名のセキュリティ上の課題、特にJSONオブジェクトの署名の難しさについて詳しく説明しています。著者は、単純なHMAC署名は安全である一方で、JSONオブジェクト内で直接署名すると、JSONの複数の等価表現によって署名検証が失敗するなど、さまざまな問題が発生する可能性があると指摘しています。この記事では、JSONの正規化、冗長な署名データの追加、代替形式の使用など、さまざまな署名方法を比較・分析しています。AWSやFlickrの署名スキームの例を通して、不適切な実装によるセキュリティリスクが示されています。最終的に、著者はTLSを優先し、JSON内でのインライン署名を避けて、代わりに外部署名を使用することを推奨しています。

PostgreSQLのスケーリング:高成長スタートアップにおける奇妙な問題と解決策

2025-02-09
PostgreSQLのスケーリング:高成長スタートアップにおける奇妙な問題と解決策

この記事では、急成長中のスタートアップ企業が直面する一般的なPostgreSQLスケーリングの課題について説明します。ロック競合、インデックスブロート、TOASTストレージの非効率性、垂直スケーリングと水平スケーリングの複雑さ、追記専用テーブルと更新が多いテーブル、マルチテナントなどの問題を網羅しています。それぞれの問題に対して、データベースパラメータの調整やコンカレンシーツールから、データアクセスパターンの再考やアドバイザリロックなどの機能の使用まで、実践的な解決策が提供されています。また、負荷下でのスキーマ変更、ゼロダウンタイムでのアップグレード、効率的なCOUNTクエリ戦略などの高度なトピックも探求します。これは、要求の厳しい環境でPostgreSQLのパフォーマンスを最適化しようとするエンジニアにとって貴重なリソースです。

Kanata:快適性を向上させるクロスプラットフォームキーボードリマッパー

2025-02-09
Kanata:快適性を向上させるクロスプラットフォームキーボードリマッパー

Kanataは、Linux、macOS、Windowsに対応したクロスプラットフォームのキーボードリマッパーです。複数のキー機能レイヤーと高度なカスタマイズ(タップホールド、マクロ、Unicode)を可能にします。kmonadを参考にRustで開発されており、より幅広いプラットフォームサポートとユーザーフレンドリーなインターフェースを提供します。QMKの強力なカスタマイズ機能を、ハードウェアに関係なくあらゆるキーボードにもたらし、快適性と生産性を向上させることを目指しています。

開発

世代別ガベージコレクションのパフォーマンスに関する不可解な結果

2025-02-09

著者は、世代別ガベージコレクションのパフォーマンス上の利点を検証するために実験を行いました。驚くべきことに、その結果は、様々なベンチマークにおいて、世代別ガベージコレクションの方が、ヒープ全体を対象としたガベージコレクションよりも時間がかかったことを示しています。この記事では、書き込みバリアのオーバーヘッド、ナーサリーサイズの選択、ベンチマークの代表性、コレクション頻度など、いくつかの可能性のある原因を探っています。著者は、根本原因を特定するためにはさらなる調査が必要だと結論付けています。

1 2 164 165 166 168 170 171 172 214 215