タグ

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

  • 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 においては、挙動が比較的しっかりと仕様に定められているために、環境による振る舞いの違いはあまり発生しません。しかし、低レイヤーに降りるほど振る舞いは実装依存になり、環境差が発生する余地が出てきます。 一番

  • WebAssembly を動的生成した場合のパフォーマンスについて

    以下では、それぞれのプログラム実装について詳細を説明していきます。 1. JavaScript simple implementation(js-simple) ソースコード / 実行結果 このプログラムは、JavaScript で BF の文字を 1 文字ずつパースし実行していく、一番シンプルな実装です。対応する括弧のジャンプも、そのたびに愚直に計算して求めています。 一切最適化を施していないため、実行結果はその他のプログラムに比べて一番遅くなっており、各プラットフォームで最も速い結果に比べて 30 倍〜50 倍ほど遅くなっています。 2. JavaScript dynamic-code-creation implementation: single function (js-dcc) ソースコード / 実行結果 このプログラムは、BF の各記号に対応する JavaScript を直接文

  • 正規表現の脆弱性 (ReDoS) を JavaScript で学ぶ

    先日、このようなツイートを書いたところ、かなりの反響がありました。 JavaScript の正規表現の脆弱性の例でいうと、例えば /\s+$/ は脆弱性があると言える console.time(); /\s+$/.test(" ".repeat(65536) + "a"); console.timeEnd(); 結構時間がかかるのがわかる。でも /\s+$/ を見て「これは危険だな」と理解出来る人はそんなにいない。JavaScript に限らないけれど。 — Takuo Kihira (@tkihira) February 17, 2022 これは一般に ReDoS (Regular expression Denial of Service) と呼ばれる脆弱性です。正確に理解するのが難しい脆弱性なので、少し解説してみたいと思います。 結論 長い記事になるので、最初に「とりあえずこれだけ知っ

  • JavaScript における VM の高速化手法

    この記事は、JavaScript で Flash Player の実現を頑張った(もしくは現在進行系で頑張っている)人たちの集う Flash Advent Calendar 2020 に参加しております。 皆さん、JavaScript で VM を実装する経験をお持ちでしょうか?私は過去に Java VM と ActionScript VM を JavaScript で実装したことがあります。Flash Player において VM は最も重い場所になることが多く、ここの高速化は Engine 全体の性能に大きく寄与します。この記事では、私が Pex.js にて導入し、素晴らしい成果をあげた VM の高速化手法をご紹介しましょう。 とはいえ今更 ActionScript の VM の話をされても困ると思うので、この記事では簡単な Java VM のサブセットをターゲットにして説明をします。

  • トレタの増井さんに聞く、B2Bサービスのカスタマイズ

    今日の夜、トレタの増井さん(@masuidrive)さんと会って晩御飯をべました。下らない話や日企業の海外進出の話などをする中で、B2Bサービスがカスタマイズを受け入れるというのがどういうことなのか、という話が大変面白かったので、許可を得た上でブログ記事にさせてもらいました。 B2Bとは、Business to Businessの略語であり、企業が主に企業に向かってサービスやプロダクトを提供するタイプのビジネスモデルを指す言葉です。対義語がB2C(Business to Consumer)で、企業が主に個人に向かってサービスやプロダクトを提供するタイプのビジネスモデルを指します。B2Bビジネスの場合は契約1口あたりの金額が大きくなる傾向があり、逆にB2Cビジネスは1口あたりの金額はさほど大きくないのが普通です。 自分も昔の会社でB2Bを経験したことがあるのですが、B2Bをやる上で1つ大

    itchyny
    itchyny 2016/10/28
  • HSL色空間(HLS色空間)の紹介

    HTML5になって、HSL色空間(HLS色空間とも呼ばれます)が使えるようになりました。知っているととても便利なので、ここでその紹介をしましょう。 色空間といえば、一番有名なのはRGB色空間です。光の3原色の重ね合わせで全ての色が表現できる、との前提に立った色空間で、コンピュータで色を扱う際にはかなり一般的に使われます。あまりに有名なので、今回は説明を省略します。 RGB色空間はプログラムからも操作しやすいのですが、色から色に徐々に変えたい場合にはあまり適さない形式となってしまいます。そういう場合に効力を発揮するのがHSL色空間です。RGBではR(赤)、G(緑)、B(青)の3つのパラメータで色を表しましたが、HSLではH(色相)、S(彩度)、L(明度)で表します。 わかりやすくHSLを体験するために、次のプログラムを実行してみましょう。 <!DOCTYPE html> <html><hea

  • 1