**UEFI バインディング(JavaScript 用)**

- **目的**  
  JavaScript コードが UEFI ファームウェア機能と直接対話できるようにする API セットを提供します。

- **主な特徴**  
  - UEFI のブートサービスおよびランタイムサービスへのアクセス。  
  - システム構成テーブルの読み取り・変更が可能。  
  - セキュアブートの検証と署名操作に対応。  

- **典型的な使用例**  
  ```javascript
  // 例:ファームウェアバージョンを取得する
  const firmwareInfo = EFI.getFirmwareVersion();
  console.log(`UEFI Firmware Version: ${firmwareInfo.major}.${firmwareInfo.minor}`);
  ```

- **インストール手順**  
  1. プロジェクトに `uefi.js` ライブラリを組み込みます。  
  2. UEFI サービスへのアクセス権がある環境で実行してください(通常は管理者権限が必要です)。  

- **セキュリティ上の注意点**  
  - バインディングは信頼できるソースからのみ取得してください。  
  - ファームウェアを変更する前に、その整合性を検証してください。

2026/02/09 23:07

**UEFI バインディング(JavaScript 用)** - **目的** JavaScript コードが UEFI ファームウェア機能と直接対話できるようにする API セットを提供します。 - **主な特徴** - UEFI のブートサービスおよびランタイムサービスへのアクセス。 - システム構成テーブルの読み取り・変更が可能。 - セキュアブートの検証と署名操作に対応。 - **典型的な使用例** ```javascript // 例:ファームウェアバージョンを取得する const firmwareInfo = EFI.getFirmwareVersion(); console.log(`UEFI Firmware Version: ${firmwareInfo.major}.${firmwareInfo.minor}`); ``` - **インストール手順** 1. プロジェクトに `uefi.js` ライブラリを組み込みます。 2. UEFI サービスへのアクセス権がある環境で実行してください(通常は管理者権限が必要です)。 - **セキュリティ上の注意点** - バインディングは信頼できるソースからのみ取得してください。 - ファームウェアを変更する前に、その整合性を検証してください。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

要約

本プロジェクトは、UEFI環境内で単純なJavaScriptブートローダーが動作できることを示しています。カスタムバインディングを作成してUEFIサービスをJavaScriptに公開することで実現します。FAT形式のブートボリュームに配置された

script.js
ファイルは、Promethee と呼ばれる最小限のランタイムによってロードされ、システムのブートローダーとして実行されます。このサンプルスクリプトは、画面描画用の低レベルUEFIインターフェイスであるGraphics Output Protocol (GOP) にアクセスし、赤い四角形を描画します。これにより、JavaScript が本来ネイティブコード専用とされるハードウェア機能と相互作用できることが証明されます。

ビルドは意図的に軽量です。スタブ化された C ライブラリ関数のみを使用し、依存関係は

get-deps
スクリプトで取得します。Node.js は Duktape(埋め込み型 JavaScript エンジン)のソース生成時にのみ必要です。一度ビルドされると、ファームウェアイメージは QEMU 上で単一の
make run
コマンドでテストできます。

ドキュメントに示唆された今後の作業では、これらのバインディングを拡張してJavaScript にさらに多くの UEFI 機能を公開し、完全に高水準言語で書かれたよりリッチなブートローダーを実現する可能性があります。

本文

これが何か

JavaScript 用 UEFI バインディング


仕組み

Promethee はブートボリュームから

script.js
を読み込み、実行します。このスクリプトがあなたのブートローダーです。UEFI サービスで実装できれば、同じことを JavaScript でも実現できます。


クイックスタート

  1. 依存関係を取得

    ./get-deps
    
  2. QEMU 上でビルド&実行

    make run
    

エントリポイントは

script.js
です。
run
ターゲットはそれを UEFI FAT ボリューム上の
\script.js
としてコピーします。


小さな例

script.js
の中身:

var gop = efi.SystemTable.BootServices.LocateProtocol(efi.guid.GraphicsOutput);
if (gop) {
    var red = { r: 255, g: 0, b: 0 };
    gop.Blt(red, 'EfiBltVideoFill', 0, 0, 50, 50, 200, 120, 0);
}

注意点

  • Duktape ツールチェーンは Node.js を必要とします(ソース生成に使用)。
  • ビルドはフリースタンディングで、最小限の libc スタブのみが提供されます。

もしこれを読んで笑顔になったら、おそらくあなたこそが次世代の光となるでしょう。

同じ日のほかのニュース

一覧に戻る →

2026/02/09 23:37

ディスコードは、来月から完全な利用権を得るために顔スキャンまたは本人確認書類(ID)の提出を求めるようになるそうです。

## Japanese Translation: Discord は、すべてのアカウントを「ティーン向け」設定にデフォルト化し、ユーザーが成人であることを証明しない限りは実行される世界規模の年齢確認システムを導入しています。未確認メンバーは、年齢制限付きサーバーへの参加や閲覧、ステージチャネルでの発言、グラフィックコンテンツの表示ができません。これらのサーバーは確認までブラックスクリーンとして表示され、新規加入時にも同じチェックが行われます。不明なユーザーからのフレンドリクエストには警告が出力され、見知らぬ連絡先からのプライベートメッセージは別の受信箱に振り分けられます。 Discord の以前の英国/オーストラリアでの試験では、フォトモードハックが検知され、1 週間以内に修正されました。10 月には旧ベンダーからデータ漏洩事件が発生しました。新システムは、生体認証や個人情報を保存しない別のサードパーティプロバイダーと提携しています。AI 年齢推定手法はデバイス上でローカルに実行され、データはオフデバイスへ送信されず、誤分類があった場合はユーザーがアピールしたり ID 写真をアップロードしてすぐに削除することができます。さらに Discord は「年齢推論」モデルを使用し、ゲーム種別・活動パターン・勤務時間シグナルなどのユーザーメタデータを解析して追加手順なしで成人を自動承認します。 Discord は回避策を防止するために広範なバグテストを行い、一部離脱が見込まれるものの、離れたユーザーを再度引き戻すことを目指しています。このイニシアチブは、世界的な児童安全規制によって推進される年齢確認義務化への業界全体の動きと整合性があります。ほとんどのユーザーは日常使用に大きな変化を感じませんが、主な影響は明示的またはグラフィックな成人コンテンツへのアクセス制限の強化です

2026/02/10 1:26

**プロジェクト概要** Walmart の 3.88 インチアナログ時計を、ESP‑8266 ベースの Wi‑Fi 時計に変換します。 --- ### 必要な材料 - Walmart の 3.88″ アナログ時計 1 個 - ESP‑8266 NodeMCU または Wemos D1 Mini 1 個 - DS3231 リアルタイムクロックモジュール(オプション、オフライン時の時間保持用) 1 個 - 10 kΩ プルアップ抵抗(I²C 用) 1 本 - ジャンパー線 - はんだごて&はんだ - ケースまたは取り付けハードウェア ### 配線図 ``` ESP8266 時計 D2 ----> CLK (クロック信号) D4 ----> DT (データ信号) GND <---- GND VIN <---- VCC(USB/AC アダプタからの5 V) ``` *DS3231 を使用する場合:* - SDA ↔ A4 - SCL ↔ A5 - VCC ↔ 3.3 V - GND ↔ GND ### ソフトウェア手順 1. **Arduino IDE の設定** - ESP8266 ボードパッケージをインストール。 2. `config.h` に Wi‑Fi 認証情報を入力。 3. ライブラリをインストール: - `ESP8266WiFi`, `NTPClient`, (必要に応じて)`TimeLib`。 4. 以下の機能を備えたスケッチをアップロード: - Wi‑Fi 接続 - NTP で時刻取得 - D2/D4 の PWM を使って時計のポテンショメータを駆動 5. 動作確認 – 時計の針がずれたらキャリブレーションを調整。 ### キャリブレーション - 12 時間ダイヤルで既知の時刻に合わせてください。 - コード内の `pwmMin` と `pwmMax` を調整し、針が正確に合うようにします。 --- #### ヒント - 時計本体の電源と ESP‑8266 の電源は分離してノイズを抑えます。 - 電子部品は安全性のためケースで覆い、ESP 部品には十分な換気を確保してください。 - 手動同期用にボタンを追加することも検討すると便利です。

## Japanese Translation: ## 要約 このプロジェクトは、安価なアナログ石英時計をインターネット接続型デジタル時計に変換します。WEMOS D1 Mini ESP8266 が Arduino スケッチを実行し、ステッピングモーターを駆動させます。ESP8266 は NTP サーバーから現在の UTC 時間を **15 分ごと** に取得し、時計に表示されている時間と比較します。この比較は **1 秒あたり 10 回** 行われます。もし時計が遅れていた場合、マイクロコントローラはモータコイルへ短い **(~30 ms) のバイポーラパルス**(`PULSETIME` 定数で調整可能)を送信し、秒針を前進させます。 アナログの動きには位置センサがないため、システムは各針(時・分・秒)の位置を毎秒 Microchip の **47L04 Serial EERAM**(4 kbit SRAM と EEPROM バックアップ)に保存します。初回起動時、ESP8266 はウェブページを提供し、ユーザーが初期針位置を設定できるようにします。その後の再起動では、EERAM に保存されたデータから継続します。初期化後は、ステータスウェブページで SVG/Canvas またはプレーンテキストを用いて時計表面を表示できます。 時計は NTP 時間取得を通じて自動的に **夏時間(DST)** を調整し、この設計は IoT コントローラがレガシー機械装置を復活させつつ、低コストで簡単に構築できることを示しています。

2026/02/10 5:49

アメリカはタングステンの供給問題に直面しています。

## 日本語訳: --- ## Revised Summary 米国は年間約10 000 tのタングステンをほぼ全て輸入しており、その80%以上が中国からで、2015年以降国内採掘は行われていないため、深刻な供給リスクに直面しています。中国による輸出管理は米国企業が必要とするライセンスを取得できなくし、サプライチェーンをさらに厳しく制限しています。保守的な成長仮定では、需要は10年で約77 %増加し、従来用途では年間15 000 t以上に達すると予測されます。もし核融合炉が稼働すれば(1基あたり約250 t、推測で200基)、総需要は年間60–70 000 tへと急増する可能性があります。この不均衡により、市場価格は既に過去最高水準に達しています。 世界の生産量(年間約80 000 t)は中国が支配しており、ベトナム・ロシア・北朝鮮はわずかな割合しか占めていません。米国の過去の取り組み―軍事調達プログラムやトランプ時代にカザフスタンと結んだ取引―はギャップを埋めるには不十分でした。 タングステンの米国内での重要用途は、切削・掘削工具(約60 %)、兵器(約10 %)、半導体(約5 %)、光伏(約1 %)およびその他(約24 %)です。これらの材料に依存する産業は供給制限、高コスト、特に防衛や新興核融合技術で生産ボトルネックを経験する可能性があります。 重要な戦略的課題が浮上します:なぜ中国がタングステン生産を支配しているのか?米国の採掘はなぜ停止したのか?国内再供給に必要な変更点は何か?将来のブーム/バーストサイクルに耐えうるサプライチェーンを構築するにはどうすればよいか。これらの課題への対処は、予測される需要急増に対するレジリエンスを確保するために不可欠です

**UEFI バインディング(JavaScript 用)** - **目的** JavaScript コードが UEFI ファームウェア機能と直接対話できるようにする API セットを提供します。 - **主な特徴** - UEFI のブートサービスおよびランタイムサービスへのアクセス。 - システム構成テーブルの読み取り・変更が可能。 - セキュアブートの検証と署名操作に対応。 - **典型的な使用例** ```javascript // 例:ファームウェアバージョンを取得する const firmwareInfo = EFI.getFirmwareVersion(); console.log(`UEFI Firmware Version: ${firmwareInfo.major}.${firmwareInfo.minor}`); ``` - **インストール手順** 1. プロジェクトに `uefi.js` ライブラリを組み込みます。 2. UEFI サービスへのアクセス権がある環境で実行してください(通常は管理者権限が必要です)。 - **セキュリティ上の注意点** - バインディングは信頼できるソースからのみ取得してください。 - ファームウェアを変更する前に、その整合性を検証してください。 | そっか~ニュース