Category: 開発

Streets GL:オープンソースリアルタイム3Dマップエンジン

2025-01-07

Streets GLは、開発者にリアルで魅力的な仮想世界を構築するためのツールを提供する、強力なオープンソースリアルタイム3Dマップエンジンです。WebGLを利用し、優れたパフォーマンスを誇り、膨大な地理データの滑らかなレンダリングと、カスタムマテリアル、ライティング、エフェクトをサポートしています。都市シミュレーター、ゲームマップ、没入型VRアプリケーションなど、あらゆる用途に対応できます。オープンソースであるため、コミュニティの貴重なリソースとして、継続的に更新と改良が続けられています。

1年で2回リストラされたソフトウェアエンジニアの体験談

2025-01-07

ソフトウェアエンジニアが1年間に2回リストラされた経験を共有する記事です。1回目は育児休暇開始1週間後、2回目はクリスマス直前でした。この記事では、感情のジェットコースター、新たな仕事の探し方(履歴書の更新、失業手当の申請、求職戦略など)、テクノロジー業界の現状と自己肯定感に関する考察を詳細に説明しています。リストラへの対処法に関するアドバイスも提供されており、回復力、人脈づくり、継続的な学習の重要性を強調しています。

大規模コードベースにおけるエンジニアのよくある間違い

2025-01-07

大規模で確立されたコードベースでの作業は、非常に難しいことで知られています。この記事では10年間の経験を共有し、最も一般的で致命的な間違い、つまり既存のコードベースのパターンを無視して、新しい機能のためのクリーンなコードのみに焦点を当てることを強調しています。一貫性を維持することは非常に重要です。予期せぬ問題を防ぎ、コードベースの劣化を遅らせ、将来の改善を可能にするからです。著者も、コードの運用環境への影響の理解、新しい依存関係の導入への慎重さ、冗長なコードの削除、小さなPRでの作業、そしてチームの専門知識を利用したエラー検出の重要性を強調しています。困難ではありますが、大規模コードベースの習得は非常に重要です。なぜなら、それらは通常、企業の最も価値のある製品の基盤だからです。

魔法リンク:便利か、それとも悲劇か?

2025-01-07
魔法リンク:便利か、それとも悲劇か?

この記事では、ログインにメールのマジックリンクのみを使用するウェブサイトのデザインを批判しています。安全である一方で、複数のデバイスを使用するユーザーにとっては不便で、ゲームPCや仕事用ラップトップでの直接ログインを妨げ、メールの遅延の影響を受けやすいと主張しています。また、仕事用デバイスで個人のメールにアクセスせざるを得なくなり、セキュリティリスクも伴います。ユーザーエクスペリエンスを向上させるため、パスワードやパスキーなどのより柔軟なログイン方法を提供することを提案しています。

HipScript:WebGPUでHIPおよびCUDAコードを実行

2025-01-07

Ben Schattingerが開発したHipScriptオンラインコンパイラを使用すると、HIPおよびNVIDIA CUDAコードをWebGPUで直接実行できます。つまり、開発者は使い慣れたプログラミングモデルを利用して、高性能計算タスクをブラウザに展開でき、複雑な移植作業が不要になります。「ライフゲーム」などのサンプルコードが提供されており、学習を容易にしています。これは重要な進歩であり、Webアプリケーションにおける高性能計算の可能性を切り開きます。

開発

OmniAI(YC)がフルスタックエンジニアを募集

2025-01-07
OmniAI(YC)がフルスタックエンジニアを募集

Y Combinator支援のスタートアップ企業OmniAIが、年収125,000ドル~175,000ドルと株式報酬でフルスタックエンジニアを募集しています。非構造化データの処理方法を新たに構築し、これまで不可能だった大規模な分析を実現することを目指しています。応募条件は3年以上の経験、Node.js、TypeScript、React/NextJS、Postgresなどの技術スタックへの習熟、そしてLLMとOCRに関する深い理解です。面接プロセスは、電話面接、アーキテクチャ設計面接、そして現場でのコーディング課題となっています。

開発

Hacki:Flutterで構築された、機能豊富なHacker Newsクライアント

2025-01-07
Hacki:Flutterで構築された、機能豊富なHacker Newsクライアント

HackiはFlutterで構築された、機能豊富なHacker Newsクライアントです。Hacker Newsアカウントへのログイン、様々なカテゴリからのニュースの閲覧、ニュースの検索と投稿、ニュースのお気に入り登録とピン留め、コメント投稿、投票への参加、オフラインでの閲覧など、包括的な機能を備えています。お気に入りやピン留めしたニュースのデバイス間同期(iOSのみ)や、システム共有シートからの起動にも対応しています。Hackiは、Hacker Newsをより便利で効率的に利用するためのクライアントを目指しています。

PCalc:20年にわたる電卓アプリの軌跡

2025-01-07

一見シンプルな電卓アプリであるPCalcは、20年にわたる驚くべき歴史を誇ります。大学時代のプロジェクトとして始まり、当初はセントラルヒーティングの制御パネルとして設計されました!その後、作者はそれをプログラマー向けの電卓へと変え、1992年にフリーウェアとしてリリースしました。数々の改良とプラットフォームへの移植を経て、PCalcは現在iOS、Mac、Apple Watchなど複数のプラットフォームで利用可能になり、革新的な機能を備えています。その背景には、技術への情熱、Appleとのつながり、そして故ダグラス・アダムズへのオマージュが込められています。

時代遅れのオペアンプに別れを告げる:最新の代替品ガイド

2025-01-07
時代遅れのオペアンプに別れを告げる:最新の代替品ガイド

この記事では、広く使われているものの時代遅れとなったLM741やLM324/LM358オペアンプを批判し、Microchip MCP6272、MCP6022、Texas Instruments OPA2323、TLV3542、OPA2356といった、より優れた使い勝手の良い最新の代替品を推奨しています。オペアンプを選択する際に考慮すべき重要なパラメータとして、電源電圧範囲、最大出力電流、レールツーレールI/O(RRIO)、入力段の種類(FET対バイポーラ)、ゲイン帯域幅積、スルーレート、ノイズなどを詳細に説明しています。また、多くのパラメータは趣味のプロジェクトでは過大評価されていることが多いと強調しています。

究極のミニマ化:400バイト以下のクロスプラットフォーム実行ファイルの作成

2025-01-07

この記事では、Cosmopolitan Libcプロジェクトのサイズ最適化テクニックについて説明します。x86アセンブリと高度なコンパイル技術を使用して、実行ファイルのサイズを劇的に削減します。解説する主な手法は、ランレングスエンコーディング、分散セクション、デッドコード除去、δzdエンコーディング、関数オーバーラップ、printfの最適化などです。最終的な成果は、Linux、FreeBSD、NetBSD、OpenBSDの4つのOSで動作する400バイト以下のELF実行ファイルです。これは、リソースの効率的な使用を示し、大規模コードベースの拡張性に関する新たな視点を与えます。

84,688個の正規表現で作ったチェスエンジン

2025-01-07

Nicholas Carliniは休暇中に、84,688個もの正規表現を使って2プライミニマックスアルゴリズムのチェスエンジンを作成するという、とんでもないプロジェクトを行いました。彼は、分岐のない、条件付き実行、SIMD命令セットを持つ正規表現ベースの仮想マシンを設計しました。シンボリック実行コンパイラはPythonコードを正規表現のシーケンスに変換し、並列計算を可能にします。このエンジンはSIMDを活用して複数の駒の動きを同時に計算し、巧妙な正規表現の最適化によって速度を向上させています。深さは限定的ですが、正規表現の驚くべき計算能力を示しています。

超高速・メモリ効率の良い並列ハッシュマップライブラリ

2025-01-07
超高速・メモリ効率の良い並列ハッシュマップライブラリ

parallel-hashmapは、非常に高速でメモリ効率の良いハッシュマップとBツリーコンテナを提供する素晴らしいC++ライブラリです。完全にヘッダーオンリーで、ビルドプロセスは不要です。プロジェクトにディレクトリをコピーするだけです。C++11以降に対応しており、コンパイラの組み込みunordered_map/setやBoostライブラリよりも大幅に高速で、メモリ使用量も少なくなります。異種ルックアップをサポートし、前方宣言も容易で、便利なダンプ/ロード機能も備えています。GoogleのAbseilライブラリをベースに改良されており、Windows、Linux、macOSで幅広くテストされています。

Zigのコンパイル時メタプログラミング:信じられないほど良い

2025-01-07

この記事は、Zigプログラミング言語のコンパイル時メタプログラミング(comptime)機能を深く掘り下げています。著者は当初、comptimeを難しいと感じていましたが、最終的にはその強力な機能に驚嘆することになります。comptimeを理解するための6つの異なる視点が提示されており、comptimeを無視すること、それをジェネリクスと見なすこと、コンパイル時に実行される標準コードと見なすこと、部分評価、コンパイル時評価とランタイムコードの生成、そしてテキストコードの生成などが含まれています。例を通して、著者はcomptimeがコードの効率を向上させ、コードの読み書きとデバッグを簡素化し、コード生成などの高度な機能を可能にする方法を示しています。Zigのcomptimeは、コンパイル時に広範な計算とコード生成を行うことができるため、パフォーマンスが向上し、コードの作成が簡素化されます。

DiscoTool:Arduino USBデバイスを簡単に管理

2025-01-07
DiscoTool:Arduino USBデバイスを簡単に管理

DiscoToolは、USBに接続されたArduinoタイプの開発ボードを発見し管理するための強力なコマンドラインツールとPythonライブラリです。macOS、Linux、Windowsをサポートし、追加のインストールなしでpipを使用して簡単にインストールできます。DiscoToolは、REPLへの接続、モジュールのインストールと更新、ボードデータのバックアップなど、豊富なコマンドを提供します。コマンドラインツールと環境変数のカスタマイズも可能です。さらに、Pythonモジュールにより、開発者は自分のプロジェクトに統合し、製造元、シリアル番号、バージョンなどのデバイス情報に簡単にアクセスできます。

開発

大規模言語モデルとコード最適化の限界

2025-01-07
大規模言語モデルとコード最適化の限界

David Andersen氏は、100万個のランダムな整数のリストから、数字の合計が30になる最小値と最大値の差を求めるコードを最適化するために、大規模言語モデル(LLM)を使用する実験を行いました。初期のPythonとRustのコードは遅かったです。LLMは数字の合計を求める関数など、一部のコードを改善しましたが、重要な最適化を見逃しました。それは、コストの高い数字の合計計算を行う前に、数値が関連しているかどうかを確認することです。より高速な乱数生成器、並列処理、前処理などを含む手動による介入により、Rustコードの速度は55倍向上しました。これは、特にアルゴリズムの深い理解と並列化戦略を必要とする複雑な問題において、LLMのコード最適化における限界を浮き彫りにしています。人間の創意工夫は依然として不可欠です。

開発

2024年のLLMを用いたプログラミング:私の経験

2025-01-07

この記事では、著者が過去1年間、生成モデルを使ってプログラミングを行ってきた経験をまとめています。自動補完、検索、チャット駆動型プログラミングにおいて、LLMが生産性を向上させることに大きく貢献したと結論づけています。チャット駆動型プログラミングはワークフローの調整が必要ですが、最初のドラフトを提供し、エラー修正を迅速化します。著者は、LLMは明確に定義された問題に秀でていると強調し、LLMとのより良いインタラクションのために、より小さく独立したコードパッケージを使用することを提唱しています。最後に、フィードバックループを合理化し、効率を高めるためにLLM用に設計されたGo IDEであるsketch.devを紹介しています。

開発

25年後:Mac OS X Dockの知られざる物語

2025-01-06
25年後:Mac OS X Dockの知られざる物語

この記事は、Mac OS X Dockの初期エンジニアであるJames Thomson氏の体験談です。アイルランドのAppleでDockの開発に携わった期間、初期デザイン、Steve Jobsとの交流、そしてApple退社の経緯を詳細に記しています。プロジェクトの極秘性、Jobs氏によるエンジニアの勤務地への厳しい要求、開発中の課題と成功など、緊張感と謎に満ちた物語です。Mac OS Xの重要な要素の誕生と、ソフトウェアエンジニアのキャリアの軌跡を垣間見ることができる、興味深い内容となっています。

開発

Triptych:ハイパーテキストを再び「ハイパー」にする3つの提案

2025-01-06

Alexander PetrosとCarson Grossは、Triptychという、ネットワークリクエストの処理方法においてHTMLをはるかに表現力豊かにする3つの小さな提案を提案しています。この提案は、HTMLフォームにPUT、PATCH、DELETEのサポートを追加し、フォームなしでボタンがリクエストを行うことを可能にし、レスポンスで部分的なページ置換を可能にします。Triptychは、htmxなどのライブラリの利点をネイティブHTMLにもたらし、REST機能を強化し、HTTPリクエストに対するページ動作の宣言を簡素化することを目指しています。これにより、よりクリーンなコードと、完全なページナビゲーションと部分的なページ更新のより簡単な実装が可能になります。

FormBee:プライバシーを重視する開発者向けのオープンソースフォームバックエンド

2025-01-06
FormBee:プライバシーを重視する開発者向けのオープンソースフォームバックエンド

FormBeeは、データプライバシーを重視する開発者向けに構築されたオープンソースのフォームバックエンドです。サーバーサイドコードを記述することなく、ウェブサイトのフォームデータを送信し、メール、Telegram、Webhookなどに送信できます。プラグインサポート、CAPTCHA保護、ドメインホワイトリスト、自動返信メールなどの機能があります。Dockerイメージを使用すれば、簡単に自己ホスティングできます。

開発 フォーム

pl_synth: JSONベースの超小型音楽シンセサイザー

2025-01-06

PhobosLabのDominic Szablewskiが、軽量なC/JS音楽シンセサイザーとそれに付属するトラッカーエディタであるpl_synthをリリースしました。Sonantを参考に、コードとデータのサイズを小さくすることに重点を置き、WASMを活用することでJavaScript版のパフォーマンスを劇的に向上させ、音楽生成時間を5秒から25ミリ秒に短縮しました。様々な楽器とエフェクトに対応し、元に戻す/やり直す機能も備えており、最終成果物をURLに直接埋め込むことができます。pl_synthは、high_impactゲームエンジンにバンドルされています。

C言語におけるシンプルなdefer:実践的な実装

2025-01-06
C言語におけるシンプルなdefer:実践的な実装

このブログ投稿では、C言語で`defer`キーワードを実装する実際的な方法を探求します。`defer`キーワードを使用すると、コードブロックの後に自動的にクリーンアップアクション(メモリ解放やmutexのロック解除など)を実行できます。著者はまず`defer`の目的を説明し、GCC拡張機能とC++機能を使用した実装を示します。最後に、`defer`の実装と使用を簡素化するための新しい構文提案が提示されており、Cコードの可読性と安全性が大幅に向上します。

開発

コードレビューの秘訣:エンジニアに「作ったものはどうですか?」と聞いてみよう

2025-01-06

複雑なUI変更のコードレビューで、著者はすぐにレビューするのではなく、エンジニアに「新しい動作はどうですか?」と尋ねました。エンジニアの返答からいくつかのバグが見つかり、修正され、問題のある要件さえ削除されました。この簡単な質問で、エンジニアは自分の仕事について深く考え、改善を行い、最終的にコードの質を高めました。著者は、エンジニアに自分の作品について定期的に尋ねることが、試してみる価値のある有効なテクニックだと考えています。

開発

LLMで面白いミームを生成するのは意外に難しい

2025-01-06
LLMで面白いミームを生成するのは意外に難しい

ウォータールー大学のインターンが、LLMとGreptile APIを使って、GitHubリポジトリをからかうミームを生成するアプリを作ろうと試みました。このプロセスは予想外に困難であることが判明しました。LLMに直接ミームのテキストを生成するように指示すると、一般的な結果しか得られませんでした。そこで、コード分析(Greptileを使用して具体的な問題点を特定する)とミームテキスト生成(LLMを使用してターゲットを絞ったユーモアを作成する)という2つのタスクに分割しました。テキスト処理の限界により、画像生成は困難で、事前に作成されたミームテンプレートとnode-canvasを使ってテキストを挿入することになりました。これらの障害にもかかわらず、このプロジェクトは、カスタムのコードからかうミームを生成できるウェブサイト、reporoast.comとして結実しました。

htmx:次世代のjQuery?安定性を重視したWeb開発ツール

2025-01-06

intercooler.jsから進化したhtmxは、jQueryのように長く使える、安定した信頼性の高いWeb開発ツールを目指しています。この記事では、htmxの将来の方向性として、安定性を優先し頻繁なアップデートを避け、コア機能の追加を制限し、拡張APIを通じて機能拡張を行うこと、四半期ごとのリリースを維持することなどが述べられています。htmxの目標はWebアプリケーションの万能なソリューションになることではなく、ハイパーメディア制御の簡素化に焦点を当て、他のツールや技術とのより良い統合を目指し、最終的にはコア機能がHTML標準に組み込まれることを期待しています。

ユーザー中心の特性ベーステスト:博士論文

2025-01-06

この博士論文は、より多くの開発者にリーチするために、プロパティベーステスト(PBT)の使いやすさを向上させることに焦点を当てています。詳細なユーザー調査を通じて、研究者は、ランダムデータの生成とテストの有効性の評価においてPBTユーザーが直面する課題を特定しました。これに対処するために、この論文は、改良されたランダムデータジェネレーターのための新しいアルゴリズムを提案し、PBTに関するより深い洞察を提供し、使いやすさを向上させるオープンソースツールTycheを開発しました。最終的に、より良いソフトウェアの品質と保証につながります。

スプライン距離場:新しい地形生成技術

2025-01-06

ゲームエンジンTangerineの限界を克服するために、作者はStar Machineと呼ばれるCPU光線追跡器と、Rainy Roadと呼ばれるレーシングゲームのプロトタイプを開発しました。Rainy Roadは、スプラインで定義された道路やその他の地形の特徴を処理できる、効率的でコンパクトな地形レンダリングシステムを必要としています。作者は、スプライン距離場を用いた新しい地形生成技術を紹介します。この技術は、スプラインを用いて地形サーフェスを生成し、点から最も近いスプラインまでの距離とその法線ベクトルを計算して高さを決定します。これは、従来の高さマップの制限を回避し、プロシージャルなオブジェクト配置をサポートします。この技術は現在、積極的な実験と研究中で、改良された補間戦略やスパースな点群の使用などが検討されています。

42:強力な宇宙機姿勢制御システムシミュレータ

2025-01-06
42:強力な宇宙機姿勢制御システムシミュレータ

42は、宇宙機の姿勢と軌道力学の包括的な汎用シミュレーションであり、概念研究から統合試験まで、ライフサイクル全体を通して姿勢制御システムの設計と検証を支援するために主に使用されます。剛体および/または柔軟体を含む多体宇宙機姿勢力学と、2体および3体の軌道飛行レジームを正確にモデル化し、低地球軌道から太陽系全体までの環境をシミュレートします。42は複数の宇宙機を同時にシミュレートし、ランデブー、近接運用、精密編隊飛行の研究を容易にします。宇宙機の姿勢の可視化機能も備えています。

Mashups.io:Yahoo Pipesの後継

2025-01-06
Mashups.io:Yahoo Pipesの後継

Mashups.ioは、Yahoo Pipesの後継として、大幅に改良された強力なオンラインデータ統合ツールです。ユーザーはRSSフィード、CSVファイル、JSONデータを簡単に混合、フィルタリング、変換して、カスタムデータソースを作成できます。このプラットフォームは直感的なビジュアルインターフェースを提供し、プログラミング経験がなくても複雑なデータワークフローを構築できます。Mashups.ioは、さまざまなニーズに対応するために無料と有料のプランを提供しており、リアルタイムの更新により、データは常に最新の状態に保たれます。

構造化コードエディタの進化:AST操作から直感的なUIへ

2025-01-06
構造化コードエディタの進化:AST操作から直感的なUIへ

この記事では、構造化コードエディタの複数年にわたる進化について説明します。最初のバージョンは抽象構文木(AST)を直接操作しましたが、扱いにくいと判明しました。後のイテレーションではASTを簡素化し、テキストカーソルベースのアプローチを試みましたが、どちらも不十分でした。最終バージョンはASTとテキスト編集のバランスを取り、編集可能な型、プロジェクション、フレームなどの技術を使用しています。キーボード、マウス、タッチ、リモコンをサポートする視覚的なアイコンベースのUIが追加され、ユーザーエクスペリエンスが大幅に向上しました。GleamとLustreを使用して構築されたこのプロジェクトは、構造化コードエディタ設計の継続的な探求と洗練を示しています。

SPath:半構造化データのクエリ式

2025-01-06
SPath:半構造化データのクエリ式

SPathは、JSON、TOML、またはカスタムバリアントなどの半構造化データに対するJSONPathライクなクエリ式を提供するRustクレートです。JSONPathの代替として使用でき、複数のデータ形式をサポートしています。このライブラリは使いやすく、プロジェクトのCargo.tomlの依存関係に`spath`を追加するだけです。例では、SPathを使用してJSONデータにクエリを実行し、結果を確認する方法を示しています。

1 2 191 192 193 195 197 198 199 214 215