abcdefGets

ゲッツ!

JSのproposal-numeric-separatorを実装したよ

タイトルの通りなんだけど、書くのが遅れてしまった。 V8 のmasterにマージされた。 機能 javascriptのプロポーザルで数値リテラルの間にアンダースコアを挿入できるやつ 現在stage3にあってまだ正式に採用されているわけではない。 github.com このスライド…

V8の Object.entries/values を高速化した

V8のObject.entries/valuesを高速化したよというお話 Object.entires/values そもそもObject.entries、Object.valuesとは何かというと、 GitHub - tc39/proposal-object-values-entries: ECMAScript Proposal, specs, and reference implementation for Obje…

ブラウザベンダーのSpectre and Meltdown対応

Spectre and Meltdownについては前回書いたが、 各ブラウザベンダーがとっている対応について今回は書く。 といっても大したことではないのだが。 対応一覧 Google Chrome SharedArrayBufferのデフォルト無効化とPerformance.nowの解像度を下げる(どこまで…

Spectre and Meltdownについて

今回CPUに依存する脆弱性が発見されて大きな問題となっている。 そこで正月休みを使ってこの問題の解説を試みる。 Disclaimer 私はセキュリティの専門家ではないので間違えた情報があるかもしれない。 一次情報を載せておくので怪しい場合にはそこにアクセス…

V8 javascript engineについての細かい話 (Node.js Advent Calendar 2017)

Node.js Advent Calendar 2017 25日目の記事です。トリとなります。 さて先日11/26・27日に行われたNode学園祭でv8について発表させて頂いたが、 30分という制約上色々カットせざるを得なかった。 またv8のコードを読む・コントリビュートする上で伝えられる…

mallocを再実装した話

C++ AdventCalendarの12日目 普段私はWEBのフロントエンドを仕事にしている。 つまり使う言語はjavascript/typescript等のScript言語だ。 ただ前職や趣味、OSS等でC++によく触っていたので昔実装したmallocの話をすることにした。 mallocとは mallocとはC言…

TypeScript 2.6 変更点と注意点

TypeScript2.6が出たので変更点を記載 RCからほぼ変更点がない。 Strict Function Typeフラグの導入 --strictFunctionTypesというフラグが導入される。 このフラグは--strictフラグに内包されており、--strictの場合は自動でONになるが、 --strictFunctionTy…

Ecmascriptのprotocolについて

Ecmascriptにprotocolを実装するという提案がある。 proposal-first-class-protocol もともとGotanda.jsで発表した内容だけどいろいろ追記した。 資料はこれ speakerdeck.com 内容 元々はinterfaceの提案だった。 それが名前と形を変えてprotocolの提案にな…

HTML5 Conference 2017に登壇します

ひょんなことから HTML5 Conference に登壇する機会をいただけることに。 タイトルはDeep dive into TypeScriptということで、TypeScriptの紹介や、RoadMap・Issuesの話とかをさせて頂くつもり 同じ時間帯に任天堂の方のセッションとかあってアレなんですが…

Typescript 2.5 リリース

Typescript 2.5がでたので変更点をメモ Optional-catch-bindingの導入 catch節のエラーオブジェクトが省略可能になった。 現在Stage3のOptional catch bindingが導入された形に。 サンプル let input = "..."; try { JSON.parse(input); } catch { // ^ catc…

typescript 2.4 の新機能

typescript2.4がでたので新機能を確認。 Dynamic Import Expressionsのサポート import('...')式がサポートされた。 import式を使うことで多くのバンドラーがコード分割をすることが可能になるので、 module: esnextで出力するのがおすすめだそう。 async fu…

babelのAsyncIterationバグ

問題 for-await-ofのボディで配列への分割代入を行うと、 Cannot read property 'file' of undefined というエラーを投げてトランスパイルに失敗する。 どうやらscopeの解析に失敗しているらしい。 サンプルコード async function g(t) { return new Promise…

Webpackでpolyfillをちゃんと動かす

面倒だったので備忘録 Polyfillの設定 とりあえずwebpackはrequireしないと駄目。 でも既存のコードを一切変えずにpolyfillをインストールしたい。 webpack.ProvidePluginを使う。 new webpack.ProvidePlugin({ 'Promise': 'es6-promise', 'Symbol': 'es6-sy…

jspmからWebpackに移行した

とりあえず、Webpackを導入したがそのままだと色々問題が多かったので以下の事をやった。 まあ今更感あるが。 typescriptのallowSyntheticDefaultImportsをfalseにする。 production用とdev用のconfigをいい感じにわける node_modulesのdllを生成する。 type…

V8 Iginition Interpreter

以前、東京Node学園25時限目で発表した内容を修正して書いていこうと思う。 というわけで、V8にバイトコードインタープリタ Ignition が搭載された。 このインタープリタは単純そうに見えて非常にわかりづらいので解説していく。 バイトコードインタープリタ…

typescript 2.3 RC

typescript 2.3 rcがアナウンスされた 主な変更点は以下の通り –strictオプションの追加 以下の型チェックオプションを有効にする –noImplicitAny –strictNullChecks –noImplicitThis –alwaysStrict 以下の様に部分的にOFFにもできる { "compilerOptions": {…

gulp-uglifyでプロパティ名をmangleする

全然ドキュメントがなかったので備忘録。 ClosureCompilerみたいにプロパティ名もmangleしたい。 こんなの const x = { doSomething() {return ...} doNothing() {} } x.doSomething(); x.doNothing(); const x = { a() {return ...} b() {} } x.a(); x.b();…

ES6のComputedPropertyNameとトランスパイラ

ES6のComputed Property Nameは非常に便利だが、トランスパイラを併用すると問題が起きがちである。 それを確認していく。 Base const SYMBOL = Symbol('foo-bar-baz'); const obj = { [SYMBOL]: 1, name: 'brn', job: 'engineer' } typescript var SYMBOL =…

Ecmascript decorator を使ってキャッシュする

表題の通り ES proposal のdecoratorをつかってメモ化のようなことをするライブラリを前に書いたので、 キレイにして、GitHubに公開した。 GitHub - brn/cache-decorator: javascript method/function cache decorator. インストール npm install cache-deco…

Function.prototype.bind のパフォーマンスについて

ふとパフォーマンスが気になったので調査した。 記憶が正しければ、callよりも遅いはず。 というわけでレッツ検証 事前準備 package.json { "name": "bench", "version": "1.0.0", "description": "", "main": "index.js", "author": "brn", "license": "MIT…

React.js meetup × React Native meetup に参加した

パネルディスカッション 参加者 @yosuke_furukawa @koba04 @yositosi (Togetter CEO) @janus_wel (CureApp CTO) 全体的にReactNativeはWebの技術をどう活かせるか、 ワンソース・マルチユースができるか等の話だった。 あとReactNativeの将来性とか 全体的に…

【RECRUIT Technologies NIGHT vol.5】リクルート流フロントエンド開発 に参加してきた

React / Redux を活用したリクルートテクノロジーズのフロントエンド開発 古川陽介 さん(@yosuke_furukawa) speakerdeck.com 以下メモ 言いたいこと フレームワークは作るものに合わせて作る リクルートのWeb トップページに検索があり、 検索するとリストビ…

V8 の For In の話

V8 blogに話が出ていたが、V8のfor in構文が高速化したらしいので、 コードと共におっていこうと思う。 For In とは for (const key in object) { } このような構文でObjectのキーをイテレーションする機能。 この構文を何故高速化したかというと、Facebook…

「Angular 4 の最新動向と、2017年再注目のDart、そしてAngular Dart」に行ってきた

AngularとDartの勉強会でした。 以下メモ Angular4がやってくる!?新機能ダイジェスト Asai Masahiko Angular 4がやってくる!? 新機能ダイジェスト.pdf - Google ドライブ Semantic Versioningの導入 非推奨ポリシーの導入(2つのメジャーリリースを…

Typescript 2.2.0 の Mixin を使ってDIしてみる

表題の通り。 今まではMixinがなかったので、泥臭く型チェックができない方法(文字列とか)でDIしていたが、 typescript 2.2.0からMixinに対応したので、DIを考察する。 Dependency Injectionとは Dependency Injectionとはその名の通り依存性を外から注入す…

jspmでtypescriptの開発をする

jspmからtypescriptの開発をした時の備忘録を書く typescriptコンパイラ + jspm まずはjspmでtypescriptをランタイムコンパイルできるようにするため、 plugin-typescriptをインストールする。 cli jspm install ts jspm.config.js SystemJS.config({ ... pa…

Firebase SDK for javascript

Firebase SDKの使い方・注意点等について書く。 インストール scriptタグで直接CDNから読み込むのが一番かんたん。 <script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script> バンドルしてしまう場合は npm install --save firebase でnpmからインストール 準備 Firebase Consoleから新規プロジェクトを作成 コンソ…

HTML5とか勉強会「Webパフォーマンス」に参加してLTしてきた

LTしてきた。 とりあえず、早口すぎたなと思った。 時間を気にしすぎてしまったかも。 以下勉強会メモ 先入観とバイアスを考慮したWebサイトパフォーマンス改善 先入観とバイアスを考慮したWebサイトパフォーマンス改善 from Yoichiro Takehora t.co 竹洞さ…

Typescript 2.2 変更点

Typescript 2.2がでた。 変更点が少々あるので確認しておきたい。 Mixinのサポート 遂にMixinがサポートされた。やり方が少々直感的ではないけども。 公式のサンプルコードで確認する。 class Point { constructor(public x: number, public y: number) {} }…

WebWorker & SharedArrayBuffer & Atomics (2)

二回目です。 前回の記事はWebWorkerとSharedArrayBufferとAtomics(1)です。 Memory Model ES2017のドラフトからMemoryModelという項目が追加された。 これはSharedArrayBufferのDataBlockに適用されるモデルで、プログラムがとりうるメモリの順序を示したも…