Category: 開発

メモリ安全性の標準化:安全なソフトウェアへの道

2025-02-07

数十年間、ソフトウェアの信頼できるコンピューティングベース(TCB)における蔓延するメモリ安全性の脆弱性が、マルウェアと壊滅的な攻撃の温床となってきました。この記事では、普遍的な強力なメモリ安全性に向けた重要なステップとして、メモリ安全性の標準化を主張しています。メモリセーフな言語、ハードウェア/ソフトウェア保護、形式手法、コンパートメンテーションにおける最近の進歩は解決策を提供していますが、共通の用語の欠如が採用を妨げています。標準化は、業界のベストプラクティスを改善し、これらの技術の広範な利用を妨げている市場の失敗に対処し、最終的にはすべての人に安全なソフトウェアをもたらします。

開発

6502アセンブリ言語入門:レトロコンピューティングへの誘い

2025-02-07

この小さな電子書籍では、コモドール64やApple IIといった象徴的なマシンを動かす歴史的なプロセッサである6502アセンブリ言語を紹介します。アセンブリ言語を学ぶことで、コンピュータアーキテクチャを深く理解することができます。6502は、ユーザーフレンドリーな設計により、理想的な出発点となります。この本では、レジスタ、フラグ、命令、アドレス指定モード、スタックについて解説し、簡単なSnakeゲームを作成することで締めくくります。実践的な学習のために、オンラインアセンブラとシミュレータが含まれています。

開発

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

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

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

開発

開発チームの「レッドチーム」構築:恥ずかしいミスを防ぐ

2025-02-06
開発チームの「レッドチーム」構築:恥ずかしいミスを防ぐ

多くの開発チームはサイバーセキュリティの「レッドチーム」に精通していますが、この記事では、すべての開発チームに、より広い意味での「レッドチーム」を構築することを提唱しています。このチームには、デザインの欠陥をチェックする人(GitHubの過去の広告看板の事件のような恥ずかしいビジュアルを防ぐため)、広告ブロッカーを使用する人(広告ブロッカーが有効な場合でもサイトが正常に機能することを確認するため)、パスワードマネージャーを使用する人(ログインフォームの自動入力の円滑化のため)が含まれる必要があります。これらの一見単純な役割は、恥ずかしいミスを防ぎ、より洗練された製品とより良いユーザーエクスペリエンスにつながります。

ヒープエクスプローラー:強力なglibcヒープデバッガー

2025-02-06
ヒープエクスプローラー:強力なglibcヒープデバッガー

`explore_heap`は`LD_PRELOAD`を介してロードされるglibcヒープデバッガーであり、プログラムのヒープメモリの対話的な検査と操作を可能にします。`libheap_explorer.so`をロードし、SIGINTシグナル(Ctrl+C)でプログラムを中断することで、ユーザーはREPLに入り、チャンクの割り当てと解放、フリーリスト、tcache、fastbin、binリストの表示を行うことができ、メモリ関連の問題のデバッグに役立ちます。現在、Arch Linuxのglibc 2.41+でテスト済みで、他の最新のglibcバージョンへの適応には定数の調整が必要です。

LinuxカーネルメンテナがRustを拒否:プログラミング言語の戦争

2025-02-06
LinuxカーネルメンテナがRustを拒否:プログラミング言語の戦争

RustをLinuxカーネルに統合する取り組みは、困難を極めている。複数のカーネルメンテナがRustの使用に強く反対し、複数の言語を使うことによる複雑さとリスクの増大を理由に挙げている。最近、RustドライバによるDMA APIの使用をめぐる議論が再び火種となった。カーネルメンテナのChristoph HellwigはRustコードを明確に拒否し、多言語プロジェクトのメンテナンスは困難であり、Rust開発者はCコードとのインターフェースを自ら処理すべきだと主張している。Rust for Linuxプロジェクトは抽象化レイヤーによって統合を簡素化することを目指しているものの、Hellwigはそれがメンテナンスのオーバーヘッドを増やすと主張する。この論争は、Linuxコミュニティにおけるプログラミング言語選択に関する異なる立場、そして既存の大規模システムへの新技術の統合における課題を浮き彫りにしている。最終的な結果は未定だが、Linuxの将来の方向性に大きな影響を与えるだろう。

開発

Go 1.24暗号化の大幅な改良:FIPS 140-3準拠を実現

2025-02-06

Go 1.24は、暗号化パッケージを大幅にリファクタリングし、FIPS 140-3準拠を実現しました。これは大きな進歩であり、純粋なGo(およびGoアセンブリ)で実装されたFIPS 140-3検証済みの暗号化モジュールが特徴で、cgoやシステムコールへの依存を排除しています。Microsoft Go 1.24も更新され、macOSのプレビューサポートとAzure Linuxの強化されたサポートが追加されましたが、暗号化にはシステムライブラリを引き続き使用しており、公式Goのアプローチとは異なります。GODEBUG=fips140=onやGOFIPS140=latestなどの新しい環境変数はFIPSモードを制御します。FIPS準拠システム(Azure Linux、Windows)では、ランタイムが自動的に有効になります。

開発

サーバーレスWebサイトスクリーンショットAPI:Abbey AIを支える技術

2025-02-06
サーバーレスWebサイトスクリーンショットAPI:Abbey AIを支える技術

Gordon Kamerは、AIプラットフォームAbbeyをサポートするために、堅牢なWebスクレイピングAPIを開発しました。このAPIはローカルで実行され、URLを入力として受け取り、ウェブサイトデータとスクリーンショットを返します。PlaywrightとDockerによって構築されており、JavaScriptを実行し、メモリ制限やプロセス分離などのセキュリティ機能を備えています。JSONデータ、ページコンテンツ、最大5枚のスクリーンショットを含むマルチパートレスポンスを返します。APIキーによるアクセス制御、メモリ割り当てとスクリーンショットパラメータのカスタマイズが可能です。

サービスとしてのソフトウェア代替 (SaaSS):あなたのコンピューティングの自由に対するもう一つの脅威

2025-02-06

この記事は、「サービスとしてのソフトウェア代替(SaaSS)」という概念を探求しています。これは、自分のプログラムを実行する代わりに、他の人のサービスを使うことを指します。リチャード・ストールマンは、SaaSSは、計算プロセスが他人が管理するサーバーに委ねられるため、ユーザーのコンピューティングの制御権を奪うと主張しています。これは、データ漏洩やバックドアなどのセキュリティリスクをもたらす、独自のソフトウェアと同様です。著者は、SaaSを拒否し、自分のコンピュータで動作するフリーソフトウェアとプログラムを使用することを呼びかけています。

SQLiteページエクスプローラー:データベースの中身を覗き見るGUI

2025-02-06
SQLiteページエクスプローラー:データベースの中身を覗き見るGUI

redbeanで構築された小さなGUIアプリケーションで、SQLiteデータベースをSQLiteと同じようにページ単位で閲覧できます。Windows、Linux、macOSなど、様々なOSで動作する6.5MBの単一実行ファイルで、インデックスの保存方法、データのコンパクト性、Bツリー構造などの内部構造を理解するのに役立ちます。多言語対応実行ファイルを使用しているため、ウイルス警告が表示される可能性がありますが、信頼できるプロジェクトであり、開発者にとってユニークな視点が得られます。大規模なデータベースでは速度が遅くなる可能性があります。

開発

大規模ゲームサーバーのScala 2.13からScala 3への移行:1年にわたる冒険

2025-02-06
大規模ゲームサーバーのScala 2.13からScala 3への移行:1年にわたる冒険

この記事では、4年以上運用されている本番環境のマルチプレイヤーモバイルゲームサーバーをScala 2.13からScala 3に移行した著者の経験について詳述しています。最初の試みは、Scala 3で主要な機能(マクロアノテーション、型投影など)が削除されたことと、大規模なコード変更が必要だったために失敗しました。1年後、著者はScala 2のコードベースにScala 3の構文を先行適用し、IntelliJのコード検査ツール、Monocleレンズを生成するカスタムsbtソースジェネレーター、型投影に対する創造的な回避策などを用いた多面的なアプローチにより、移行を成功させました。依存関係の競合やコンパイル時間の遅延といった課題も発生しましたが、ライブラリのフォーク、Scala 3のTuple.Mapを使ったコード最適化などの方法で解決しました。障害はありましたが、この移行はScala 3のメタプログラミング機能の力と価値を浮き彫りにしています。

開発 移行

Common LispによるJava JITコンパイラとランタイム:OpenLDK

2025-02-06
Common LispによるJava JITコンパイラとランタイム:OpenLDK

OpenLDKは、Common Lispで完全に実装されたJavaのJust-In-Time (JIT)コンパイラとランタイム環境です。Javaバイトコードを段階的にLispに変換し、ネイティブマシンコードにコンパイルすることで、JavaとCommon Lispのギャップを埋めます。この独自のアプローチにより、JavaクラスをCommon Lisp Object System (CLOS)クラスにシームレスにマッピングできるため、JavaとCommon Lispのコードベースを容易に統合できます。高性能を目的とはしていませんが、OpenLDKはLispワークフローにJavaライブラリを統合するための実用的なソリューションを提供します。現在、主にLinuxとSBCLをサポートしており、開発中であり、Java 8以降のクラスファイルのサポートやバイトコード検証など、多くの機能がまだ実装されていません。

開発

GitHub Copilotの大幅アップデート:エージェントモードとCopilot Editsの一般提供開始

2025-02-06
GitHub Copilotの大幅アップデート:エージェントモードとCopilot Editsの一般提供開始

GitHub Copilotが大幅にアップデートされました!新しいエージェントモードにより、Copilotはより高度な自律性を獲得し、コードの反復処理、エラーの検出と修正、さらには明示的に指定されていないサブタスクの推論と完了が可能になります。Copilot Editsも一般提供が開始され、複数のファイルにまたがるコード編集とスムーズな会話型インターフェースを提供します。さらに、GitHubは「Project Padawan」というコードネームの自律型ソフトウェアエンジニアエージェントを発表しました。これは、GitHub上の課題を直接処理し、完全にテストされたプルリクエストを自動生成、さらにはレビューアを割り当てる機能を持つものです。これらのアップデートは、開発者を退屈な作業から解放し、より創造的な作業に集中できるようにすることを目指しています。

開発

リファクタリングの落とし穴:いつリファクタリングすべきではないか

2025-02-06
リファクタリングの落とし穴:いつリファクタリングすべきではないか

この記事では、コードリファクタリングの落とし穴を探り、すべてのコードがリファクタリングを必要とするわけではないことを強調しています。著者は、リファクタリングが不適切ないくつかのシナリオを示しています。例えば、バグの修正やサードパーティの変更後の調整をリファクタリングで試みること、不要な抽象化を導入してコードの複雑さを増すこと、複数のコードの臭いを同時に処理すること、テストされていないコードのリファクタリング、そして変更されないコードのリファクタリングなどです。この記事では、リファクタリングは増分的なものであり、動作を維持し、テストカバレッジのある小さな、元に戻せる変更を含めるべきであると強調しています。理解が不足している場合や新しい要件が登場した場合には、リファクタリングを一時停止することを推奨しています。頻繁に変更され、複雑なコードをリファクタリングすることで、最高の結果が得られます。

開発

仮想パイプ:地形上の水をシミュレートするシンプルで効率的な方法

2025-02-06
仮想パイプ:地形上の水をシミュレートするシンプルで効率的な方法

この記事では、ゲーム内で地形上の水の流れをシミュレートするためのシンプルで効率的な方法である仮想パイプ法を紹介します。浅水方程式に基づき、スタガードグリッドを使用して、水の流れを仮想パイプで接続された水柱として扱います。水位差に基づいて水の流れを加速し、流出スケーリングによって負の水量を回避します。著者は、流れの加速、流出スケーリング、水柱の更新という3つのステップを詳細に説明し、コード例を示しています。この方法は理解しやすく、計算効率が高く、地形変更と水のシミュレーションを必要とするゲーム(都市建設ゲームなど)に適しています。慣性や速度拡散がないなど、いくつかの制限はありますが、ほとんどのゲームシナリオでは実用的です。

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

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

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

開発

Par:実験的な並行プログラミング言語とそのインタラクティブなプレイグラウンド

2025-02-06
Par:実験的な並行プログラミング言語とそのインタラクティブなプレイグラウンド

Parは、線形論理の表現力を実践に応用しようとする、実験的な並行プログラミング言語です。独自の特性として、プロセスはチャネルを介して通信し、各チャネルは最大2つのエンドポイントを持ち、デッドロックは発生しません。すべての値はチャネルであり、リスト、関数、無限ストリームなどを含みます。現在、Parはプリミティブ型や非決定性など、いくつかの機能を欠いていますが、すでに豊富な並行性を表現しています。この記事では、Parの構文、セマンティクス、そしてチャネル、シグナル、再帰、式構文などを網羅した例を詳しく説明します。インタラクティブなプレイグラウンドにより、ユーザーはParの並行性を体験できます。

開発 線形論理

見つかりにくいクロスプラットフォームタイマーAPI:OS API の旅

2025-02-06

この記事では、C言語プログラミングにおけるクロスプラットフォームタイマーAPIの課題を探ります。著者は、Linux、FreeBSD、NetBSDなど、さまざまなUnixシステムがタイマーを非常に異なる方法で処理していることを発見しました。信号に基づいているPOSIXのtimer_create関数は、他のOSプリミティブとの相互運用性の悪さ、シグナルマスクの干渉など、多くの問題を抱えています。この記事では、timerfd_create、kqueue、port_create、io_uringなどのさまざまなソリューションの長所と短所を詳しく調べ、クロスプラットフォームアプリケーションでは、libuvが行っているように、ユーザー空間でタイマーを実装することが、より効率的で信頼性の高いアプローチであると結論付けています。libuvは、タイマーの管理に最小ヒープデータ構造を使用し、poll/epoll/kqueueなどのシステムコールを多重化に使用します。

Memfault求人:Android SDK エンジニア(年収10万〜18万ドル)

2025-02-06
Memfault求人:Android SDK エンジニア(年収10万〜18万ドル)

IoT信頼性プラットフォームのMemfaultが、Android (AOSP) SDK エンジニアを募集しています。MemfaultにおけるAndroidの未来を形作るために、他のSDK(Linux、MCU)リードや複数のクロスファンクショナルチームと協力します。マイクロコントローラーのSDKから、バックエンドの大規模データ処理、フロントエンドの複雑なカスタムチャートまで、多様なテクノロジースタックを扱うことになります。会社はテクノロジースタック全体への幅広い貢献を奨励しており、柔軟な勤務体制と定期的なチーム交流、年間のオフサイトイベントを提供しています。

開発

AsciiDoc:Markdownを超えるドキュメント作成ツール

2025-02-06
AsciiDoc:Markdownを超えるドキュメント作成ツール

Markdownの限界にうんざりしていませんか?AsciiDocは、あなたが求めていた構造化された、フル機能の代替手段かもしれません。表、脚注、相互参照を簡単に処理し、ドキュメントの構成と条件付きコンテンツをサポートし、統一されたエコシステムを備えています。このガイドでは、アプリケーションのユーザーガイドの例を使用して、メタデータの設定、見出しの構成、テキストのフォーマット、リスト、表、属性、条件付きコンテンツなど、AsciiDocの機能を詳細に説明します。また、AsciiDocドキュメントのエクスポートと管理を簡素化し、Gitとシームレスに統合してDocs-as-Codeワークフローを実現するエディター、adoc Studioも紹介します。AsciiDocとGit、adoc Studioを組み合わせることで、ドキュメント作成とメンテナンスがより効率的でプロフェッショナルになります。

Goマルチキーマップライブラリ:go-multikeymap

2025-02-06
Goマルチキーマップライブラリ:go-multikeymap

go-multikeymapは、複数のキーを持つマップデータ構造を実装した、高性能なGoライブラリです。MultiKeyMapとBiKeyMapの2つのタイプを提供します。MultiKeyMapは1つの主キーと複数の文字列副キーを許可し、BiKeyMapは両方のキーが一意である必要があります。どちらもコンカレントとノンコンカレントのバージョンがあり、ベンチマークはO(1)に近いアクセス時間を示しています。このライブラリは使いやすく、よく文書化されており、パフォーマンス評価のためのベンチマーク結果が含まれています。

自動化されたスクリーンキャストからモーションコミックへ:プログラマーの創造的な旅

2025-02-06

Web Origamiプロジェクトの動画コンテンツ作成を効率化するために、プログラマーは音声と動画の自動生成を試みました。マクロスクリプト作成の手間や面倒な動画編集といった課題に直面し、モーションコミックの作成にシフトしました。HTML/CSSと最小限のJavaScriptアニメーションを使用して、脚本から音声と動画を生成するシステムを構築しました。Origamiの機能により、テストとアップデートが容易になりました。このアプローチにより、彼はストーリーテリングに集中することができ、効率が向上し、動画のアップデートの手間が省けました。

Equinix Metal の終了後、Alpine Linux は皆様の支援を必要としています

2025-02-06

Alpine Linux の主要なインフラストラクチャは、終了する Equinix Metal に依存しています。これにより、ダウンロードミラー、継続的インテグレーション、開発環境に影響が出ます。サービスの継続性を確保するために、Alpine Linux は、オランダ近郊のコロケーションスペース、ベアメタルサーバー(ミラーと CI 用)、または仮想マシン、そして資金援助など、コミュニティからの支援を求めています。持続可能な資金調達の重要性を強調し、Open Collective を通じた寄付を奨励しています。

Marksmith:Ruby on Rails向けGitHubスタイルMarkdownエディタ

2025-02-06
Marksmith:Ruby on Rails向けGitHubスタイルMarkdownエディタ

使いにくいMarkdownエディタにうんざりしていませんか?Marksmithなら、Ruby on Rails開発者向けに、GitHub風のすっきりとしたインターフェースと強力な機能を提供します。ActiveStorageに対応し、プレビューパネル、ツールバー、リストの継続など、シームレスなMarkdown記述に必要な機能がすべて揃っています。さらに、Avoとの統合により、メディアライブラリの管理も容易になります。ぜひお試しください!

OpenWrt 24.10安定版リリース:1970台以上のデバイスをサポート

2025-02-06

OpenWrtコミュニティは、OpenWrt 23.05からのメジャーアップデートであるOpenWrt 24.10の安定版リリースを発表しました。1年以上かけて開発され、5400件以上のコミットが含まれています。1970台以上のデバイスをサポートし、OpenWrt Oneを含む100台以上の新しいデバイスが追加されました。OpenWrt 23.05からのアップグレードは、一般的にsysupgradeユーティリティでサポートされていますが、設定のバックアップを強くお勧めします。ただし、特定のデバイス(Linksys E8450、Xiaomi AX3200、Zyxel GS1900シリーズスイッチなど)のユーザーは、デバイスの破損を避けるために、特別なアップグレード手順に従う必要があります。

開発

Vulnerability-Lookup:協調的な脆弱性管理プラットフォーム

2025-02-06
Vulnerability-Lookup:協調的な脆弱性管理プラットフォーム

Vulnerability-Lookupは、様々なソースからの脆弱性を迅速に関連付け、調整された脆弱性開示(CVD)プロセスを簡素化する強力なオープンソースプラットフォームです。NIST NVDやCISAなど、多くのソースからのインポートをサポートし、ユーザーは脆弱性の発見状況の追加、コメントの追加、バンドルの作成を行うことができます。APIとPythonライブラリにより、他のツールとの統合が容易になり、開発者は独自の発見状況ツールを簡単に作成できます。Vulnerability-LookupはGNU Affero GPL v3.0ライセンスの下で提供され、CIRCL、Alexandre Dulaunoy、Raphaël Vinot、Cédric Bonhommeによって開発されています。

6502アセンブリ:アセンブリ言語学習の意外なほど良い出発点?

2025-02-06
6502アセンブリ:アセンブリ言語学習の意外なほど良い出発点?

アセンブリ言語の学習を始めるのに最適な場所を選ぶのは難しいかもしれません。この記事では、6502プロセッサが初心者にとって驚くほど適していることを主張しています。現代のアプリケーションでは広く使用されていませんが、シンプルな命令セット(わずか56命令)と豊富な学習リソースにより、アセンブリの基本概念を理解するのに最適です。Apple IIやCommodore 64などの古典的なコンピュータでの歴史から、多くのエミュレータと学習資料が利用できます。著者は、Easy 6502とVisual6502.orgを優れた学習リソースとして推奨しており、x86-64やARMなどのアーキテクチャの複雑さと比較することで、初心者にとっての6502の利点をさらに強調しています。

オラクルのJavaScript商標紛争:長期化する法的闘争

2025-02-06
オラクルのJavaScript商標紛争:長期化する法的闘争

Deno LandのCEOであるRyan Dahl率いるコミュニティの取り組みが、Oracleによる「JavaScript」商標の所有権に挑戦し、論争を巻き起こしています。Oracleは、商標更新申請に虚偽の資料を提出したとされ、訴訟手続きの遅延を試みていると非難されています。この紛争の中心は、JavaScriptが一般的な用語になったかどうか、そしてOracleが商標を放棄したかどうかです。Oracleは、正当な理由があると反論し、追加の証拠を提出しています。この法的闘争は、テクノロジー大手による商標の厳格な保護と、オープンソースコミュニティによる公正な使用を確保するための努力を反映しています。

開発

Windows 2000以降に対応した非公式Discordクライアント

2025-02-06
Windows 2000以降に対応した非公式Discordクライアント

Discord Messengerは、驚くべきことにWindows 2000以降と互換性のある非公式のDiscordクライアントです。MITライセンスで公開されているこのオープンソースプロジェクトはベータ版であり、Discordの利用規約に違反するリスクがあります。メッセージング、添付ファイルの処理、絵文字のサポートなど、主要な機能を備えていますが、ビルドには技術的なスキルが必要です。このプロジェクトはMinGWとVisual Studioのビルドをサポートしており、OpenSSLライブラリのコンパイルまたは取得が必要です。

開発

あなた自身の言語を構築する:言語構築キット

2025-02-06

このガイドは、ファンタジー世界、エイリアン文明、または単なる趣味として、人工言語を作成するための包括的なキットを提供します。著者マーク・ローゼンフェルダーは、自然言語を構築するための言語的に健全な方法を詳細に説明し、音、語彙、文法、アルファベット、筆記体などのステップを概説しています。彼は自身のVerdurian言語を例として使用し、HergéのSyldavianに見られるような矛盾を避けるために構築順序の重要性を強調しています。高度な学習のための追加のリソースと印刷版が提供されています。

1 2 167 168 169 171 173 174 175 214 215