Category: 開発

FOSDEMで物議を醸す:億万長者ジャック・ドーシー氏の基調講演が怒りを誘う

2025-01-16

元Twitter CEOのジャック・ドーシー氏が、主要なフリーソフトウェアカンファレンスのFOSDEMで基調講演を行う予定である。これはFOSSコミュニティ内で大きな反発を招いている。批判者たちは、Twitterの衰退におけるドーシーの役割とBlockとの関与を指摘し、彼がそのような著名なプラットフォームに値しないと主張している。著者はボイコットを呼びかけ、ドーシーの出席に抗議し、FOSSコミュニティの支援のための資金の転用を主張する座り込みを組織している。

F#の秘宝:型付きスタックトレース(TST)

2025-01-16

この記事では、あまり知られていないF#の型付きスタックトレース(TST)というテクニックについて解説しています。これは、型システムを使ってエラーを追跡することで、大規模なモノリシックアプリケーションにおけるエラー解析とコードメンテナンスの問題を解決するものです。著者は、TSTをドメイン駆動設計(DDD)と「制約駆動開発(CDD)」という新しい手法と組み合わせることで、ソフトウェアアーキテクチャと開発プロセスに革命を起こせると主張しています。これにより、開発者はモノリシックアーキテクチャとウォーターフォール型のプロジェクト管理に戻り、DevOpsとSREの作業を簡素化できるようになります。TSTはF#のユニオタイプとパターンマッチング機能を活用して、明確なエラータイプツリーを作成し、コードの可読性と保守性を向上させます。この記事では、面接の練習問題を例に、TST、DDD、CDDを使ってシンプルなREST APIを構築する方法を詳しく説明しています。

開発

高性能Webフォント:速度とスタイルの両立

2025-01-16
高性能Webフォント:速度とスタイルの両立

高性能Webフォント(HPWF)プロジェクトは、ページの読み込み速度を犠牲にすることなくWebフォントを使用できるようにするためのツールとリソースを提供します。テキストからUnicode範囲へのコンバーターと堅牢なフォールバックメカニズムが含まれており、最適なWebフォントエクスペリエンスを保証します。

C言語のメモリ管理:スタック、ヒープ、メモリリークを深く理解する

2025-01-16
C言語のメモリ管理:スタック、ヒープ、メモリリークを深く理解する

この記事では、C言語のメモリ管理について詳細に解説します。プログラムがメモリを使用する方法から始まり、スタックとヒープの役割、malloc()とfree()の使い方、メモリリークとUse After Free (UAF)脆弱性の原因などを説明します。簡単な例を通して、手動でのメモリ管理とメモリアロケータ(malloc)の内部動作、メモリ断片化についても解説します。プログラミング経験のある読者にとって役立ち、メモリ管理の理解を深め、一般的なメモリエラーを回避するのに役立ちます。

Debian上でZFSを用いたRK3588 SBC QEMUハイパーバイザーのセットアップ

2025-01-16

この記事では、BananaPi M71 2 (RK3588)シングルボードコンピュータ上で、ArmbianとZFSストレージを使用してQEMUハイパーバイザーをセットアップする方法を詳しく説明します。Armbianカスタムイメージの作成、イメージの書き込み、ZFS zpoolを使用したNVMe SSDストレージの準備、libvirtdのインストール、そして仮想マシンの実行といった手順を解説しています。RK3588におけるNVMeドライブの互換性の課題とその解決策についても説明しています。最終的には、様々なVM(Webサーバー、データベースなど)を実行でき、ワークロードの分離とリソース管理を提供する、機能的な小規模なプライベートクラウドを構築できます。

開発

ユーザー自身の交通問題解決にユーザーを参加させる:アルゴリズムによる経路計画を超えて

2025-01-16

著者は、現在の地図アプリが公共交通機関の経路計画においてアルゴリズムにのみ依存し、ユーザーのニーズと専門知識を無視していることを批判しています。特定のバス路線の組み合わせを指定するなど、ユーザーが経路オプションをカスタマイズできるようにし、経路計画の比較に含めることを提案しています。これは、スパムフィルターの「スパムとして報告」と「スパムではない」機能を反映しており、ユーザーからのフィードバックを通じてアルゴリズムを改善します。プライバシーに関する懸念があるものの、ユーザーの参加は経路の精度とユーザー満足度を高め、最終的にはアルゴリズムの改善につながる可能性があります。ユーザーが独自の経路の組み合わせを追加できる機能は、データ共有がなくても大きな改善となるでしょう。

WebAssemblyのMemory64:速度とメモリのトレードオフ

2025-01-16
WebAssemblyのMemory64:速度とメモリのトレードオフ

WebAssemblyは最近、64ビットポインタをサポートするMemory64を導入しました。しかし、驚くべきことに、Memory64はパフォーマンスの向上にはつながらず、ハードウェア、オペレーティングシステム、WebAssembly自体の設計上の制約により、32ビットモードよりも10%から100%以上遅くなる可能性があります。これは、32ビットモードではブラウザが4GBのメモリを予約できるため、境界チェックが不要になるためです。一方、Memory64は境界チェックが必要となり、計算オーバーヘッドが発生します。したがって、4GBを超えるメモリが必要ない限り、Memory64は最適な選択肢ではありません。ハードウェアとWebAssemblyの将来的な改善により、Memory64のパフォーマンスが向上する可能性があります。

開発

バイトキュー制限:あまり知られていないネットワーク最適化技術の物語

2025-01-16
バイトキュー制限:あまり知られていないネットワーク最適化技術の物語

この記事は、Linuxカーネルにおけるあまり知られていないネットワーク最適化技術であるバイトキュー制限(BQL)の物語です。BQLは、デバイスキューの制限を動的に調整することでバッファブロートに対処し、レイテンシを削減します。著者は、Sun Microsystems時代に学んだ重要な概念に基づき、BQLの設計思想、実装、アルゴリズムの詳細を説明し、図表とデータを使用してパフォーマンスの向上と潜在的な欠点を分析しています。新しいハードウェアによってBQLが時代遅れになる可能性がありますが、低価格帯デバイスにおけるその価値は依然として重要です。

マルウェア報告によるDocker Desktop macOS起動失敗

2025-01-16

Docker Desktop for macOSユーザーは最近、macOSが`com.docker.vmnetd`または`com.docker.socket`をマルウェアとしてフラグ付けしたため、起動に失敗するという問題が発生しました。Dockerは、根本原因を既存のインストールにおける署名されていないファイルであると特定し、パッチをリリースしました。ユーザーは最新バージョンにアップデートするか、影響を受けたファイルをを手動で置き換えることをお勧めします。問題は解決されましたが、Dockerは引き続き状況を監視しています。

開発

Jacob Dementの素晴らしいポートフォリオ:フルスタックエンジニアの軌跡

2025-01-16

Jacob Dementのポートフォリオは、経験豊富なフルスタックエンジニアの才能を示しています。綿密に設計されたウェブサイトから複雑なアプリケーションまで、彼はフロントエンド、バックエンド、データベース技術の包括的な理解を証明しています。ポートフォリオは単なるコードの集まりではなく、彼の技術力と創造性の魅力的な証です。複数のプロジェクト例が、さまざまなテクノロジースタックを使用して現実世界の課題を解決した経験を強調しています。技術的な詳細とユーザーエクスペリエンスの両方に捧げる彼の献身は、彼のプロ意識を際立たせています。

Apache DataFusion:Rustで書かれた強力で拡張可能なクエリエンジン

2025-01-16

Apache DataFusionは、Rustで記述された拡張可能なクエリエンジンで、Apache Arrowをインメモリ形式として使用します。SQLとDataFrame APIを提供し、CSV、Parquet、JSON、Avroなどのデータ形式をサポートし、優れたパフォーマンスとカスタマイズ性を備えています。DataFusionは、完全なクエリプランナー、列指向、ストリーミング、マルチスレッド、ベクトル化された実行エンジン、およびパーティション化されたデータソースを備えています。データソース、クエリ言語、関数、カスタム演算子などを追加することで、ほぼすべての点でカスタマイズできます。関連するサブプロジェクトには、DataFusion Python(Pythonバインディング)、DataFusion Ray(分散バージョン)、DataFusion Comet(Apache Sparkアクセラレータ)などがあります。

dnSpyEx:強力な.NETデバッガーとアセンブリエディターの非公式復活

2025-01-15
dnSpyEx:強力な.NETデバッガーとアセンブリエディターの非公式復活

dnSpyExは、人気の.NETデバッガーおよびアセンブリエディターであるdnSpyプロジェクトの非公式な継続です。ソースコードがなくても.NETおよびUnityアセンブリの編集とデバッグが可能です。主な機能には、.NETおよびUnityアセンブリのデバッグと編集、明るいテーマと暗いテーマ、そして強力な逆コンパイル、16進編集、デバッグ機能(ブレークポイントの設定、変数ウィンドウ、コールスタック、例外処理など)が含まれます。dnSpyExは、拡張機能とスクリプト作成のための公開APIを提供しており、複数の言語翻訳をサポートしています。

コードレビュー:成功事例

2025-01-15
コードレビュー:成功事例

GoogleのエンジニアXは、大きく異なるコードレビュープロセスを用いた2つのプロジェクトに取り組みました。最初のプロジェクトではレビューが最小限だったため、バグのあるリリースとなりました。2つ目のプロジェクトでは、徹底的で厳格なレビュープロセスを採用した結果、最初は時間がかかりましたが、バグのないリリースを実現し、Xにとって大きな学びとなり、キャリアにも良い影響を与えました。この記事では、コードレビューは本質的に敵対的なものではなく、関係者とツールの使用方法が、コードの品質向上とメンターシップにおいて重要であると主張しています。

開発

緊急時におけるマウント済みディスクボリュームのイメージング:blktraceベースのソリューション

2025-01-15
緊急時におけるマウント済みディスクボリュームのイメージング:blktraceベースのソリューション

この記事では、ポイントインタイムスナップショットが利用できない場合のシステムディスクのバックアップを行うための巧妙な方法について説明しています。著者は、スナップショット機能を持たない、故障寸前のシステムをバックアップする必要がありましたが、再起動やストレージの再構成は望ましくない状況に直面しました。この解決策では、Linuxのblktrace APIを利用して、データの書き込み中であっても、リアルタイムでブロックデバイスの動作を追跡し、完全なディスクイメージを作成します。著者は、変更されたブロックを追跡し、イメージング中にデータの損失を防ぐGoベースのツールhot-cloneを共有しています。これは、緊急事態における重要なシステムのバックアップのための信頼性の高いソリューションを提供します。

Keon:Rustにインスパイアされた、人間が読み書きしやすいシリアライゼーションフォーマット

2025-01-15
Keon:Rustにインスパイアされた、人間が読み書きしやすいシリアライゼーションフォーマット

Keonは、Rustに似た構文を持ち、Serdeのデータモデルを完全にサポートする、人間が読み書きしやすいオブジェクト表記法(ORN)とシリアライゼーションフォーマットです。よりクリーンな構文を備え、コメントや末尾のカンマを許可し、Rustのような記述感を可能にします。Keonはタプルとリストを区別し、辞書キーとして任意の型をサポートし、Base64、Base32、Base16をサポートします。より直感的で、読み書きしやすいシリアライゼーションフォーマットを目指しています。

開発

Cloudflare Pagesの驚くほど寛大な無料プラン:その理由とは?

2025-01-15
Cloudflare Pagesの驚くほど寛大な無料プラン:その理由とは?

Cloudflare Pagesは、競合他社の中でも際立つ、無制限の帯域幅を提供する無料プランを提供しています。著者は、その理由を探っています。静的ウェブサイトは軽量で提供が容易であること、Cloudflareは高速で信頼性の高いインターネットから恩恵を受け、セキュリティ製品への需要が高まること、無料プランは口コミマーケティングと有料サービスへのアップグレードを促進することです。Cloudflareが公式に説明していないものの、著者は、1.1.1.1や無料DDoS保護などの他の無料サービスと整合性のある戦略的決定であると推測しています。最終的には、セキュリティ製品エコシステムを強化するためです。

右ヌルGLRパーシング:コンテキストフリー文法の優雅な処理

2025-01-15

この記事では、一般化LR(GLR)パーシングとその改良版である右ヌルGLR(RNGLR)パーシングについて詳しく説明します。GLRパーシングは、制約なしで任意のコンテキストフリー文法を処理できるため、プロトタイピングに役立つツールです。しかし、従来のGLRパーシングは、隠れた左再帰と右再帰を扱う際に効率性の問題を抱えています。RNGLRパーシングは、右ヌル規則を巧みに処理することで、これらの問題をエレガントに解決し、パーシング効率を向上させます。この記事では、RNGLRパーシングの原理を説明し、競合の処理や共有パック解析森(SPPF)の構築における利点を例を用いて示します。

Ropey:Rustによる高性能UTF-8テキストロープ

2025-01-15
Ropey:Rustによる高性能UTF-8テキストロープ

Ropeyは、テキストエディタなどのアプリケーションのバックエンドテキストバッファとして設計された、Rustで記述されたUTF-8テキストロープライブラリです。高速で堅牢であり、大規模なテキストとメモリ不整合な編集を容易に処理できます。Ropeyは強力なUnicodeサポート、予測可能なパフォーマンスを備えており、中規模から大規模なテキストの頻繁な編集に優れています。ただし、非常に小さなテキストや利用可能なメモリを超えるテキストには適していません。主な機能には、行認識、効率的なロープのスライス、柔軟な低レベルAPIが含まれます。Ropeyはさまざまなプロジェクトで実績があり、厳格なテストを受けており、テキスト操作のための信頼性の高いソリューションを提供します。

Django開発者向けモダンJavaScriptガイド

2025-01-15
Django開発者向けモダンJavaScriptガイド

このガイドは、Django開発者がモダンJavaScript開発を習得するための明確な道筋を提供します。フロントエンドコードの整理、最新のJavaScriptツール、JavaScriptパイプラインの統合、Reactアプリケーションの構築、HTMXとAlpine.jsを使用したJavaScript不要なウェブサイトの作成、OpenAPIを使用したフロントエンドAPIインタラクションの改善など、さまざまな側面を網羅しています。このガイドは、管理しやすいセクションに分割されており、基本的な概念から実践的なアプリケーションへと段階的に進みます。そのため、あらゆるスキルレベルの開発者にとってアクセスしやすいものとなっています。

Rustオープンソースコミュニティでデータベースを構築する:ScopeDBの事例

2025-01-15
Rustオープンソースコミュニティでデータベースを構築する:ScopeDBの事例

3人のチームが、Rustを用いて、ペタバイト規模のオブザーバビリティデータを管理する共有ディスクアーキテクチャのクラウドデータベースであるScopeDBをわずか4ヶ月で構築しました。Apache OpenDAL、SQLx、SeaQueryなどの多くのオープンソースプロジェクトを活用し、パッチや新しいライブラリによって積極的にコミュニティに貢献しました。ScopeDBは、エンジニアリング経験を共有するためのオープンソースのツインであるMoraxも備えており、商用オープンソースパラダイムを示しています。

開発

383バイトのラムダ計算インタプリタ

2025-01-15
383バイトのラムダ計算インタプリタ

この記事では、x86-64 Linux ELF実行ファイルとして、383バイトで実装された新しいバイナリラムダ計算インタプリタを紹介します。この小さなインタプリタは、ガベージコレクション、遅延リスト、末尾再帰などの機能を実現しています。プログラムは非常に小さなバイナリ形式でエンコードされます。たとえば、メタサーキュラーインタプリタはわずか232ビットです。著者は、移植性の高いフレンドリーなCコードと、他のプラットフォーム向けのプリビルドバイナリを提供しています。このプロジェクトは、ラムダ計算の学習ツールとして楽しく、極めてリソースが制約された環境でも複雑な計算を実行できる可能性を示しています。

開発

デジタルノスタルジア:AOLボイスのカスタム音声収録

2025-01-15
デジタルノスタルジア:AOLボイスのカスタム音声収録

ブロガーのジョン・グラハム・カミングは、2002年にAOLの象徴的なボイス、エルウッド・エドワーズからカスタム音声収録を依頼した経験を語っています。30ドルで、「Mail classified by POPFile」と「Use the source, Luke!」の2つのフレーズを、彼の機械学習メールフィルタリングプログラムPOPFileのために注文しました。エドワーズは「You've got mail, John!」というボーナス音声も追加してくれました。この魅力的な逸話は、初期インターネットの人間味とテクノロジーパイオニアのユーモアを表しています。

Kokoro:82MパラメーターのTTSモデルで電子書籍を高音質オーディオブックに変換

2025-01-15

Claudio Santiniは、軽量な82Mパラメーターのテキスト読み上げモデルKokoroを活用したツールAudiblezを作成しました。これにより、電子書籍を高音質のオーディオブックに変換できます。Audiblezは複数の言語と音声に対応し、大規模な電子書籍も数時間で変換可能です。Pythonベースのこのツールは、必要なライブラリとモデルファイルのインストールが必要です。章の検出はまだ改善の余地がありますが、全体的には良好に動作し、今後の改善として章の検出と機能追加が予定されています。

Parallels DesktopでApple Silicon Mac上でx86 WindowsとLinuxが実行可能に

2025-01-15
Parallels DesktopでApple Silicon Mac上でx86 WindowsとLinuxが実行可能に

Parallels Desktop 20.2は、Apple Silicon Mac上で64ビットx86版WindowsとLinuxのオペレーティングシステムを実行するための初期サポートを追加しました。これにより、M1、M2以降のMacユーザーは、より幅広いオペレーティングシステムを実行できるようになりますが、エミュレーションのため、ネイティブARM版よりもパフォーマンスは低下します。USBデバイスのサポート、ネストされた仮想化、遅い起動時間などの制限がありますが、Apple Siliconでx86互換性が必要な開発者やユーザーにとって大きな一歩となります。

開発

Customasm: あなた自身の命令セットのためのアセンブラ

2025-01-15
Customasm: あなた自身の命令セットのためのアセンブラ

Customasmは、独自のユーザー定義命令セットを定義できるアセンブラです。新しい仮想マシンのバイトコードのテストや、FPGAチップに実装したばかりの新しいマイクロプロセッサアーキテクチャ用のプログラムの記述に最適です!ブラウザでオンラインでお試しいただけます。NESをターゲットにしたサンプルプロジェクトや、VSCode構文ハイライト拡張機能もご用意しています。`cargo install customasm`でインストールするか、Releasesから事前にビルドされた実行ファイル、またはソースコードからコンパイルできます。ドキュメントと入門ガイドはwikiにあります。

マイクロソフトのコード変更がLinux 6.13リリースを危うくする

2025-01-15
マイクロソフトのコード変更がLinux 6.13リリースを危うくする

マイクロソフトのエンジニアが提供したコード変更が、間近に迫ったLinuxカーネル6.13の安定版リリースに大きな支障をきたすところでした。この変更はパフォーマンス向上を目的としていましたが、一部のシステム、特にControl Flow Integrity(CFI)が有効になっているシステム(Intel Alder Lakeプロセッサ搭載マシンなど)で問題を引き起こしました。インテルのエンジニア、Peter Zijlstraによる緊急パッチによって問題のあるコードが無効化され、6.13のリリース遅延は回避されました。このインシデントは、大規模なオープンソースプロジェクトにコードをマージする前に、コードレビューと徹底的なテストを行うことの重要性を浮き彫りにしています。

開発 カーネル

Pyper: シンプルな並列Python

2025-01-15
Pyper: シンプルな並列Python

Pyperは、関数型プログラミングパターンに基づいた、柔軟な並列データ処理フレームワークです。スレッド、マルチプロセス、非同期操作をシームレスに統合し、ETLシステム、データマイクロサービス、データ収集パイプラインの作成を簡素化します。クリーンなAPIと効率的なキューイングにより、Pyperは軽量で、純粋なPythonソリューション(依存関係なし)を提供し、使いやすさ、安全性、効率性を優先します。開発者は、低レベルの並列処理の詳細を管理するのではなく、ロジック構築に集中できます。

開発

SimplexDocsPlaygroundRequest API:コード実行プレビュー

2025-01-15

SimplexDocsPlaygroundRequest APIは、コードの実行とプレビュー機能を提供します。ユーザーはこのAPIを介してサーバーにコードを送信し、サーバーはコードを実行して結果を返し、実行プロセスのプレビューも提供します。これは、開発者がコードのデバッグ、APIのテスト、プロトタイプの迅速な作成に役立ちます。APIは現在ロード中です。コードの実行後に結果が表示されます。

SvelteKitからプレーンHTMLへ:ウェブサイトの書き直し

2025-01-15

SvelteKitのビルドシステムの複雑さに不満を感じた著者は、自身のウェブサイトをプレーンなHTMLとCSSで書き直すことを決めました。このプロセスには、Pandocを使用してMarkdownをHTMLに変換することと、軽量なビルドパイプラインのためにPythonとuvを使用することが含まれていました。サイトの規模が小さいにもかかわらず、書き直しによってサイズは356KBから88KBに削減され、コードはよりシンプルで理解しやすくなりました。著者は、コードの重複やライブリロードの欠如などの残りの問題に気づいており、将来の改善でこれに対処する予定です。このプロジェクトは、Markdownブログ付きのシンプルな静的サイトを作成するための優れたテンプレートとなります。

開発

ベンチマーク:ビット演算 vs. モジュロ演算による偶数判定

2025-01-14
ベンチマーク:ビット演算 vs. モジュロ演算による偶数判定

この記事では、PascalとC言語において、数が偶数かどうかを判定する2つの方法、モジュロ演算とビット演算の性能をベンチマークしています。ビット演算(ビットごとのAND演算子を使用)の方が大幅に高速であることが証明されました。0からMaxIntまでのループをテストしたPascalでは、ビット演算はモジュロ演算よりも約15倍高速でした。C言語では、コンパイラの最適化によってモジュロ2演算がビット演算に変換される可能性がありますが、ビット演算の方がわずかに高速でした。これは、パフォーマンスが重要なシナリオにおいて、偶数判定にビット演算を使用する方が効率的であることを示しています。

1 2 184 185 186 188 190 191 192 214 215