タグ

ブックマーク / nmi.jp (3)

  • JavaScript で CPU が Intel かどうかを判定する(ついでに JIT を検知する)

    先日、次のような Tweet を見かけました TIL I discovered that TensorFlow.js uses an interesting trick to sniff your CPU architecture in WebAssembly. pic.twitter.com/LVyywIM48I — Robert Knight (@robknight_) January 4, 2023 面白かったので、なぜこうなるのかの解説と、ついでにこのテクニックを使った JIT 検知方法などについて紹介します。 JavaScript における低レイヤーの扱い JavaScript においては、挙動が比較的しっかりと仕様に定められているために、環境による振る舞いの違いはあまり発生しません。しかし、低レイヤーに降りるほど振る舞いは実装依存になり、環境差が発生する余地が出てきます。 一番

    mohno
    mohno 2023/01/11
    「Intel アーキテクチャを判断するコードはその演算の結果が R Ind であるかどうかをチェック」「JIT による最適化を避ける意図」/機械語での判別も昔は裏技みたいなものだったが、JavaScriptの仕様に追加されないのかな。
  • JavaScript クイズ解説: NaN === NaN の結果はどうなる?

    先日、このようなツイートを書きました。 久しぶりの JavaScript クイズ。 JavaScript において NaN === NaN の結果は次のうちどれになるでしょうか? — Takuo Kihira (@tkihira) September 7, 2021 答えは 4 の「状況によって上記以外もありうる」です。でも、2 や 3 を選んだ方も、もはや正解だといって差し支えないと思います。 解説が長くなったので、ブログ記事にまとめました。 そもそも NaN とは NaN は “Not a Number” を意味する数値です。数値なのに「Not a Number」というのは違和感があるかもしれませんが、数値表現することが出来ない状態を保持するために便宜的に用意された数値、というようなものです。 NaN は、浮動小数点演算において数値では表現出来ない計算をしようとすると登場します。例えば

    mohno
    mohno 2021/09/09
    「ローカルにスコープを作成すれば、その中で値を自由に書き換えることは可能」「禁断の with 構文」←うわぁ……。「NaN === NaN は false である、ということだけ知っておけば問題ありません」
  • ブラウザで仮想通貨を採掘するサービス "Coinhive" について

    ここ最近で急に有名になった、”Coinhive” というサービスがあります。一言でいうと、ブラウザのJavaScriptを利用して仮想通貨 Monero を採掘するためのサービスで、Webサイトに導入することによって来訪者から直接収益をあげたりすることを目的にしています。 有名になったのには理由があって、ユーザーの許可を得ずに勝手に採掘をするサイトが問題になったためです。Pirate Bayの事例などが有名ですね。 個人的にCoinhiveのようなサービスは適切に使われる限り仮想通貨のキラーサービスになりうると期待しています。ここでCoinhiveがどのようなサービスなのか、技術とビジネス両方から注目してみようと思います。 2018-06-12追記: Coinhive をユーザーの許諾なしに利用していたサイトの管理者の方が神奈川県警に家宅捜索を受けたそうです。詳細は経緯の説明サイトを御覧く

    mohno
    mohno 2017/10/10
    マジやめて。専用マシンに比べて効率悪い方法でユーザーの電気代を消費して稼いでいるようなもんじゃん。adblockみたいな形でブロックしたい。
  • 1