Category: 開発

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

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:オープンソース全文検索アプリがリリース

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

開発 全文検索

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

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

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

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

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

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:詳細解説

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

YC支援スタートアップFernがシニアフロントエンドエンジニアを募集

2024-12-14
YC支援スタートアップFernがシニアフロントエンドエンジニアを募集

Y Combinator支援のスタートアップFernが、年収168,000ドルから192,000ドルと株式報酬のシニアフロントエンドエンジニアを募集しています。勤務地はニューヨーク州ブルックリンのウィリアムズバーグで、対面勤務です。4年以上のフロントエンド開発経験、JavaScript/TypeScript、React、Next.jsのスキルが求められます。業務内容は、開発者体験の向上、フロントエンドインフラストラクチャの管理、ユーザー向け機能の開発、顧客との信頼関係構築などです。FernはAPIの利用を簡素化しており、Cohere、ElevenLabs、Webflow、Merge.devなどが顧客です。

Svader:GPUレンダリング対応Svelteコンポーネントライブラリ

2024-12-14
Svader:GPUレンダリング対応Svelteコンポーネントライブラリ

Svaderは、WebGLとWebGPUフラグメントシェーダーを使用してGPUレンダリングされたSvelteコンポーネントを作成するためのライブラリです。開発者はフラグメントシェーダーでプログラムを記述し、ピクセルの色をカスタマイズし、パラメーターを渡すことでレンダリング効果を制御できます。Svelte 4とSvelte 5をサポートし、解像度、スケール、時間などの組み込みパラメーターを持つWebGLとWebGPUのレンダリングモードを提供します。Svaderは使いやすいコンポーネントでGPUレンダリングを簡素化し、WebGLまたはWebGPUをサポートしていない環境ではフォールバックレンダリングを提供します。

開発

Canvaの印刷注文ルーティングの科学

2024-12-14
Canvaの印刷注文ルーティングの科学

Canvaのエンジニアリングチームは、印刷注文のルーティングを最適化するために、グラフ探索のための設定可能なルールシステムを構築しました。グラフの構築、探索、意思決定のプロセスを分離することで、高い可用性と拡張性を確保しています。データ管理にはリレーショナルデータベースを使用し、高速なクエリのために非同期的にキャッシュされたグラフを生成します。ルールエンジンと修正された最小コストフローアルゴリズムにより、ミリ秒単位で最適なルートを見つけ出し、輸送距離と炭素排出量を最小限に抑え、ユーザーエクスペリエンスと運用効率を向上させています。

Go:いつNoと言うべきか

2024-12-14
Go:いつNoと言うべきか

長年Goを使用してきた開発者が、Javaに戻ります。彼はGoにいくつかの欠点を見出しました。ループの選択肢が限られている、高階関数の不足、煩雑なエラー処理、冗長で保守が困難なコードにつながる過度に制限的なコーディングスタイル、そして未成熟なパッケージエコシステムなどです。インフラストラクチャプロジェクトへのGoの適性を認めつつも、複雑なエンタープライズアプリケーションには使用しないことを推奨しています。

開発 開発

PHPにおける静的型付け論争:動的言語の柔軟性と効率性

2024-12-14

この記事で、トニー・マーストンはPHP 8.1で導入された強制的な静的型チェックの変更を強く批判しています。彼は、この変更がPHPの動的型付けの中核となる設計理念に反しており、PHPの長年の柔軟なデータ型処理手法と矛盾し、開発者に大きな負担を強いると主張しています。この記事は、自動的な型変換や柔軟なデータ処理など、PHPの動的型付けシステムの利点を詳しく解説し、現代のハードウェアにおいて静的型付けのパフォーマンス上の利点は無視できるほど小さく、開発効率を阻害する一方であると指摘しています。マーストンは、PHPの動的型付けシステムはHTMLフロントエンドとSQLバックエンドのデータ処理に適しており、静的型付けを強制することは逆効果であり、PHPコミュニティに悪影響を与えると主張しています。

uv:超高速Pythonパッケージ&プロジェクトマネージャー

2024-12-14

Rustで記述された超高速Pythonパッケージおよびプロジェクトマネージャーであるuvは、pip、pip-tools、pipx、poetry、pyenv、twine、virtualenvなどのツールに取って代わるものです。速度が10~100倍向上し、プロジェクト管理、ツール管理、Pythonバージョン管理、スクリプトサポート、pip互換インターフェースを提供します。グローバルキャッシュやワークスペースサポートなどの機能により、ワークフローが合理化されます。プロジェクトの作成、依存関係の管理、スクリプトの実行、配布物のビルドなど、あらゆるPython開発ニーズに効率的で便利なソリューションを提供します。

新卒からMetaのStaff Engineerまで3年:Evan Kingの成功物語

2024-12-14
新卒からMetaのStaff Engineerまで3年:Evan Kingの成功物語

Evan Kingは、わずか3年で新卒からMetaのStaff Engineerに昇進した自身のキャリアパスを共有しています。彼の成功の6つの重要な原則は次のとおりです。成長のための時間を確保するために速度と効率を優先する;上級エンジニアのように戦略的に考えるために視点を広げる;不確実性を歓迎し、自由にアイデアを共有する;技術的な複雑さよりも問題解決に焦点を当てる;良好な意志と強い人間関係を築く;そして、前向きな姿勢を維持することです。幸運とタイミングの役割を認めつつ、Evanは、コアコンピテンシーに焦点を当て、効率によって生み出された追加の帯域幅を戦略的に使用することで、時間の経過とともに累積する持続可能な習慣を育むことの重要性を強調しています。

Clojureにおけるエラー処理:魔法の弾丸はなく、選択のみ

2024-12-14

Clojureは、エラー処理のアプローチに多様性があり、単一のベストプラクティスはありません。この記事では、ネイティブ例外のスロー、データを含む例外のための`ex-info`の使用、エラーマップの返却、そして`anomalies`ライブラリや`pact`、`failjure`などのライブラリを利用したより高度なエラー処理フローなど、いくつかの方法を探っています。著者は、選択は特定の状況に依存し、複数の方法を1つのプロジェクトで併用できることを強調しています。開発者は自分のニーズに最適なソリューションを選択できます。Clojureはこの自由を受け入れています。

HTMX v2.0.4 リリースノート:バグ修正と改善

2024-12-14
HTMX v2.0.4 リリースノート:バグ修正と改善

HTMX v2.0.4 のリリースノートには、多数のバグ修正と改善点が詳細に記載されています。このリリースは、安定性と互換性の向上に重点を置いており、ネストされたシャドウDOMの問題の修正、フォームにおける`hx-boost`動作の改善、Web ComponentsとシャドウDOMのより良いサポート、パフォーマンスと信頼性を向上させるための拡張機能の更新などが含まれています。`htmx.ajax`関数の調整と`hx-trigger`イベント処理の最適化も行われています。

博士課程指導教員がShellスクリプトでライティングの改善を自動化

2024-12-14

博士課程の学生のライティングスキル向上のため、指導教員が受動態の乱用、曖昧な言葉、重複単語を検出する3つのShellスクリプトを作成しました。LaTeXビルドシステムに統合されたこれらのスクリプトは、文法規則の盲目的な遵守ではなく、明確さと正確さを重視した意識的な選択を促します。指導教員は、プログラマーが自動化を利用してライティングの弱点を克服することを推奨し、「Style: The Basics of Clarity and Grace」などのリソースを推奨しています。

macOS 15.2アップデート、システム複製機能を破壊:ユーザーはデータバックアップの悪夢に直面

2024-12-14

macOS 15.2アップデートにおいて、システム複製機能に深刻なバグが発生し、「リソースビジー」エラーによりデータバックアップが失敗するようになりました。特にPrebootまたはRecoveryパーティションのコピー時に発生します。開発者のDave Nanianによると、この問題はApple独自のコードに起因し、簡単な解決策はありません。ユーザーはサードパーティ製のバックアップソリューションに頼り、「バックアップ - 全ファイル」方式でスマートアップデートを使用して、クリーンインストール後のデータ復元を行う必要があります。この問題は、特に年末年始の時期であるため、ユーザーに大きな不満を与えています。

RustによるマルチモーダルルーティングプロジェクトFarebox

2024-12-14
RustによるマルチモーダルルーティングプロジェクトFarebox

Fareboxは、メモリに制約のあるマシン向けに設計された、Rustで記述された高速なRAPTOR実装です。乗り換えと始点/終点間のルーティングにはValhallaを使用し、複数の機関とタイムゾーンを認識するルーティングをサポートしています。このプロジェクトの目的は、OpenTripPlannerを補完し、既存のインスタンスでカバーされていない領域にサービスを提供することです。メモリマッピングは、単一のインスタンスで地球規模のカバーを実現し、ホスティングコストを削減するために、時刻表に使用されます。将来の計画には、GTFS-RTのサポートと、さまざまな出発時間での同時旅程計算のためのrRAPTORが含まれています。

Luonプログラミング言語:静的型付きLua

2024-12-14
Luonプログラミング言語:静的型付きLua

Luonは、Oberon系の言語に似た構文を持ち、Luaの概念を取り入れた新しい静的型付きプログラミング言語で、LuaJIT VMをターゲットとしています。基本的にLuaの静的型付きバージョンであり、外部プロシージャ宣言を通じて既存のLuaおよびCライブラリの再利用を可能にします。LuonはLuaのエラー処理とコード構造の欠点を解決し、手続き型、ジェネリック、オブジェクト指向プログラミングをサポートするコンパイラと統合IDEを提供します。プロジェクトには広範な例とテストケースが含まれており、開発中です。

SCCS:50年後のソースコードホテル

2024-12-13

この記事は、過去50年間にわたるソースコード管理システム(SCCS)の影響を回顧的に検証しています。著者のラリー・マクボイは、SCCS独自のウィーブ形式の詳細を説明しています。この形式は参照によるマージを可能にし、他のシステムに見られるパッチベースのコピーの非効率性を回避します。彼は、SCCSがこのウィーブを利用して、任意のファイルバージョンを一定時間で取得し、バージョン間で作者情報を保持する方法を説明しています。長期的なロックやファイル指向性などの欠点を認めつつも、マクボイは、ウィーブ形式の効率性と作者情報の保持を画期的であると強調し、BitKeeperなどの後続システムの基礎を築いたと述べています。

Railsにおけるヘキサゴナルアーキテクチャ:結合解消への道

2024-12-13
Railsにおけるヘキサゴナルアーキテクチャ:結合解消への道

この記事では、Railsアプリケーションにおけるヘキサゴナルアーキテクチャ(Ports and Adaptersパターン)の実装について探求しています。著者は当初、このパターンに苦労していましたが、「アダプター」がGang of Fourのアダプターパターンを直接参照していることに気づいたことで理解が深まりました。この記事では、インバウンドポートとアウトバウンドポートの詳細、およびアダプターがアプリケーションロジックを外部サービス(データベース、ロギング、メールなど)からどのように切り離すかについて説明しています。RailsコントローラーはHTTPアダプターとして機能できますが、著者はActiveRecordの直接使用を避けることを強調しています。代わりに、カスタムリポジトリがデータにアクセスすることで、結合解消と保守性が向上します。この記事は、より堅牢で保守しやすいアプリケーションを構築するために、Rails開発者にヘキサゴナルアーキテクチャの採用を推奨して締めくくられています。

postmarketOSを用いた古いスマートフォンのKubernetesクラスタノードへの転用

2024-12-13
postmarketOSを用いた古いスマートフォンのKubernetesクラスタノードへの転用

著者は廃棄された古いスマートフォンとpostmarketOSオペレーティングシステムを使用して、機能的なKubernetesクラスタを構築しました。この記事では、古いスマートフォンを選択した理由(かなりの計算能力、内蔵バッテリー)、postmarketOSの利点(Alpine Linuxベース、メインラインLinuxカーネルを使用)、設定中に発生した課題(カーネルモジュール、ネットワーク構成)など、そのプロセスを詳細に説明しています。これらの課題に対する解決策も徹底的に説明されています。著者は、古いスマートフォンをKubernetesノードとして再利用することに成功し、リソースを効率的に利用し、持続可能性を促進しました。

Windowsカーネルの軽減策のバイパス:Violet Phosphorusの詳細な解説

2024-12-13

この記事では、SMEPやVBSなどの最新のWindows 10および11カーネル軽減策をバイパスする方法について詳しく解説しています。著者は、普遍的なVBS/SMEPバイパス技術であるViolet Phosphorusの詳細を説明し、PoCコードとROPチェーンを提供しています。SMEPとVBSの動作原理を説明し、HackSysExtremeVulnerableDriverドライバの脆弱性を悪用して、ROPガジェットとMiGetPteAddress関数を用いてページテーブルエントリを修正し、カーネルコードを実行する方法を示しています。また、Kristal-GのSYSRETシェルコードを使用して、ユーザーモードに戻る方法も示しています。これは、カーネルエクスプロイト開発者やセキュリティ研究者にとって貴重なリソースであり、開発カテゴリに分類されます。

Node.js EPUBライブラリ@smoores/epubリリース

2024-12-13
Node.js EPUBライブラリ@smoores/epubリリース

Node.js用の新しいライブラリ@smoores/epubがリリースされました。これにより、開発者はEPUB 3出版物を検査、修正、作成できます。このライブラリは、タイトルの設定や作成者の情報の取得など、EPUB仕様とのやり取りを簡素化する高レベルAPIを提供します。また、チャプターやメタデータの追加など、EPUB構造を詳細に制御できる低レベルAPIも提供します。fast-xml-parserを基盤とする@smoores/epubは、強力なXML解析と操作機能を提供し、EPUBファイルのXMLコンテンツを効率的に処理できます。

定期的な再起動:予防的なアプローチ

2024-12-13

大学の研究チームは、システム管理において難しい問題に直面しました。サーバーが長時間稼働し、再起動が必要でしたが、頻繁な再起動はユーザーエクスペリエンスを損なうためです。通常は再起動を避けていましたが、長時間の稼働により大規模な再起動を行う羽目になりました。同様の問題を避けるため、年間の再起動スケジュールを策定しました。少なくとも年に3回、大学の授業スケジュールに合わせて再起動することで、予防保全とユーザーエクスペリエンスのバランスを取っています。

マイクロソフト、ファイルからMarkdownへの変換ツールMarkItDownをオープンソース化

2024-12-13
マイクロソフト、ファイルからMarkdownへの変換ツールMarkItDownをオープンソース化

マイクロソフトは、様々なファイル(PDF、PowerPoint、Word、Excel、画像、音声、HTMLなど)をMarkdown形式に変換するPythonツール、MarkItDownをオープンソース化しました。シンプルなAPIを備え、幅広いファイルタイプをサポートし、OCRと音声転写機能も搭載。テキスト分析やインデックス作成に最適です。貢献は大歓迎で、マイクロソフトのオープンソース行動規範に従います。

並行サイクルコレクション:RustによるSchemeのガベージコレクションスマートポインタ

2024-12-13

この記事では、Schemeインタプリタ内のガベージコレクションスマートポインタ(Gc)のための、Rustでの並行サイクルコレクタの実装について詳しく説明します。GcはArc>と同様に機能し、内部的な可変性、クローン作成、スレッド間の送受信をサポートします。この記事では、セマフォと読み書きロックを使用してスレッドセーフな内部的可変性を実現するGcの実装、およびBaconとRajanのアルゴリズムに基づく並行サイクルコレクションの実装の詳細について徹底的に説明します。これには、Traceトレイト、サイクル検出、並行な変更を処理するためのメカニズムが含まれます。

HyperDXがフルスタック、フロントエンド、バックエンドエンジニアを募集

2024-12-13
HyperDXがフルスタック、フロントエンド、バックエンドエンジニアを募集

Y Combinator支援のHyperDXは、フルスタック、フロントエンド、バックエンドエンジニアを募集しています。HyperDXは、DatadogやNew Relicなどのツールに代わる、オープンソースで開発者フレンドリーなオブザーバビリティプラットフォームを構築しています。競争力のある給与とリモートワークのオプションを提供し、経験豊富なエンジニアを求めています。

メイカーがレーザーシューティングゲームを制作:レゴランドのアトラクションからESP32駆動のハロウィンイベントへ

2024-12-13
メイカーがレーザーシューティングゲームを制作:レゴランドのアトラクションからESP32駆動のハロウィンイベントへ

レゴランドのエジプト探検アトラクションに触発され、作者は同様のシューティングゲームを作ることにしました。安価なESP32マイクロプロセッサ、赤外線レーザーガン、自作のターゲットを使用して、ハロウィンをテーマにしたシューティングゲームを成功裏に制作しました。その過程で、ArduinoとMicroPythonプログラミングを学び、ハードウェア接続、電源、通信といった課題を克服しました。このゲームは学校や自宅でのイベントで大成功を収めました。今後の計画としては、ターゲットのデザイン、ライティング効果、回路基板などを改良し、ゲーム体験を向上させることです。

開発 メイカー
1 2 207 208 209 210 211 213 215