ぶれすとつーる

だいたいjavascript

javascript

exotic objectがhost objectの呼び名が変わったものという風潮

native object -> ordinary object host object -> exotic object って感じの解釈をよく聞くけど違うと思う。(誰も言ってなかったらごめんなさい) es6上での定義 4.3.6 ordinary object object that has the default behaviour for the essential internal m…

Argumentsと関数内の変数環境の関係

おはようございます。 この記事はJavascript Advent Calender 2014の22日目の記事です。 JavaScript Advent Calendar 2014 - Qiita JavaScript Advent Calendar 2014 - Qiita domenicのツイートをストーキングしてたら、とある話を拾った。 I forgot about t…

YUIの開発終了とYUICompressor

Important Announcement Regarding YUI この記事でYUIの積極的なメンテナンスがもうなされないよみたいな話を聞いてYUI Compressorもメンテされなくなるのかなーなんて思って聞いてみたんだけどYUI Compressorの管理は2012年の時点でownershipがかわってたみ…

socket.ioで特定ユーザーにemitしたい時

最近socket.ioがメジャーバージョンになって少しかわって 今まで io.sockets.socket(id).json.emit('msg', send_msg); みたいな感じでかけてたのですがsockets (namespace)がsocketメソッドを持たなくなってて、「 あれ特定ユーザ探す方法なくね」って思って…

ES6 Map/Setのキーの比較まわりの挙動の変化について

今日Firefox29がでてその変更内容の中で 更新された ECMAScript6 仕様草案に準拠するため、Map オブジェクトおよび Set オブジェクトがキーと値の同一性を確認するときは、-0 と +0 を同一として扱うようになりました。 ってかいてるのみて、ほとんど出た当…

文字列リテラルとU+2028

元気にインターネットしてたらユーザの入力した値をこんな感じでDOMに埋め込んでるサイトをみつけた <a href='javascript:edit(2,{"a":"どらえもん","b":["×","×"],"c":"ふごふご"},1)'> ほげええ </a> 入力値いろいろかえて遊んでみたらだいたいの文字列はエスケープはされてたけど曰くのU+2028はsyntax errorだしてた Uncaught SyntaxError: Une…

正規表現リテラルのes3からes5の間での変化

何度目かの聖書(JavaScript: The Good Parts)の輪読会をしてたときに、RegExpの章を担当してくれた子が、「正規表現リテラルから生成される正規表現オブジェクトは内容が同じなら参照も同じになります!」って説明してくれて、「あれ、そうだっけ」って思っ…

jsコンソールよくわからないぽよ〜

不思議ぽよ〜 {} + "" これをコンソールで実行すると0が返るぽよ〜 でもconsole.logでみると普通ぽよ〜 むずかしいぽよ〜 数分後ぽよ〜 解決したぽよ!!!! ただ空文字を数値化してるだけの扱いになってたぽよ!!! +"" // 0 ありがとうございますぽよ〜>< …

DOMContentLoadedとスタイルシートの読込み

DOMContentLoadedの発火とスタイルシートの読み込みは間接的に関係あるらしい MDNのDOMContentLoadedのページみてたら The DOMContentLoaded event is fired when the document has been completely loaded and parsed, without waiting for stylesheets, im…

Nodeのテストを簡単にするCuckooモジュール

untestableなコードを簡単にテスト可能にするモジュール Cuckoo を作りました。以前書いたNodeでプライベートな(exportsされてない)メソッドのテストをパス周りとかmodule周りとかきちんと細かいところまで作ったものです。npmにインストールされてるのでこ…

timer#unrefで効率よくプロセスkillする

作ったアプリケーションが突然のエラーに見舞われることなんてざらにありますね。で、エラーが起きたときはすみやかに、おだやかにそのワーカーをヌッコロしたいわけですがその終了作業中になんらかの処理がビジーな感じになって強制killしなきゃいけないこ…

X-Powered-By:Express

Expressで作ったサイトを動かすとレスポンスヘッダに X-Powered-By:Express こんなのつきます。俺のサイトはNodeだぜ フフンみたいな人はいいんですがいつか脆弱性がみつかったときにしめしめって思われるのもなんだか怖いので消すようにしました。Express3系な…

Nodeのファイルスコープ

NodeのファイルスコープについてJSでスコープを有するものは静的なものでfunction, block、動的スコープではcatch, withとそこそこありますが通常の処理系ではファイルスコープなんてものはないです。でもNodeではファイル内でvarと宣言した変数はrequireし…

大きなPubSub、小さなPubSub。

JavaScriptにおいてもそのほかの言語においても疎結合というのは結構大きなテーマの一つだと思います。そんな疎結合を促す実装としてPubSubがにわかに脚光をあびてますね。 にわかというより定期的に盛り上がってる気がしますが。僕はあまりデザインパターン…

Nodeでプライベートな(exportsされてない)メソッドのテスト

だいたいこの記事のまんまですが大雑把な訳記事だと思ってください。こんなファイル(app.js)があったとする。 //app.js exports.testableMethod = function () { complicatedMethod(untestableMethod); }; var untestableMethod = function (a, b) { return …

ieの関数オブジェクトのスコープのきもちわるいやつ、もっときもちわるかった。

javascript gardenとかで紹介されてるこういうスコープhttp://bonsaiden.github.com/JavaScript-Garden/ja/#function.general [名前付き関数式]のところ var foo = function bar() { console.log(bar); // 動作する console.log(foo); // 動作する } console…

メリークリスマス

世界にメリークリスマス。 http://nazomikan.com/archive/20121225/001/ npm xmasをフロントに移植してアニメーションしただけのごみですが一応クリスマスということで。 よく見てる人は気づいてるかもしれないけどサイトの方、ドメイン放置しすぎてrgpにな…

canvasのlazyな描画

ご無沙汰してます、nazomikanです。最近、趣味でフラクタルとかで遊ぶことが多く、フラクタル特有な計算量の多さに日々ブラウザが悲鳴をあげています。そんなこともあってUI-Blockをさせないようにあれこれやった手法を紹介 まず最初に何も考えずに描画する…

jenkinsとjslintを連携させてみたよ

jslintとjenkinsを連携させたかったので色々調べてみた。jslint4javaっていうjslintのjavaバージョンがでていたのを発見したのでant使って連携してみました。以下手順 とりあえず使用するプラグインいれておくJenkinsの管理 > プラグインの管理 > 以下のプラ…

関数の再代入時のthis

オブジェクトのプロパティメソッドを一旦変数に代入してやるとthisの所在がかわってしまうのでそれについて (function(){ var obj = { hoge: 'abc', moge : function() { console.log(this.hoge); } }; obj.moge(); // abc }()); 普通にオブジェクトのプロパ…

DOM操作系ライブラリのひな形

ちょろいライブラリを書く時とかぼくはこんな感じのひな形つくって、必要に応じてAPIを増やしていってます。 ま、あんまりAPI増えてくると管理の仕方を色々考え直さなきゃってなるけど (function(win, doc){ win.lib = { // libライブラリの持ってるAPIを列…

Proxyでオブジェクトにlength

ある日、会社で「オブジェクトにlengthプロパティが欲しい」といわれたので色々考えてみました。。lengthプロパティはArrayオブジェクトとかに存在するあれです。 var ary = ["a", "b", "c"]; console.log(ary.length); // output: 3 これを普通のオブジェク…

はてなダイアリーの記事にjsFiddleを埋め込みたい

はてなダイアリーでコードのせたりしてるときにふいにデモのせたいってなるときってありますよね。 jsfiddleとか埋め込めるブログもあるけどそのまんまiframeでうめこんでもみれないので色々調べてみた。 なんかこの辺とかこの辺とか見てるとできそうだった…

アニメーションとUIスレッド

前回の記事(setTimeoutとUIスレッドを学ぶよ JS Advent Calendar, オレ標準コース)で紹介したUIスレッドの概念でアニメーションをみてみる。前回の復習 UIスレッド UIスレッドとはjsとUIの更新が行われるプロセスのことである。UIスレッドはただのキューイン…

setTimeoutとUIスレッドを学ぶよ JS Advent Calendar, オレ標準コース

JS Advent Calendar, オレ標準コース 20日目, id:nazomikan ですjsで素人から玄人までみんな愛するsetTimeoutについて色々見直してみる 基本的な話まずは定義 timeoutID = window.setTimeout(func, delay); timeoutID は、window.clearTimeout で使うことの…

闇jser試験をといてみた。

以前、@uupaaさんが出題してた闇jser試験をふと思い出したので解いてみた。 true & undefined === false & undefined まずは演算子の評価時の優先順位に着目してみる。厳密等価比較(===)のほうがバイナリビット演算子(&)より優先度が高いことがわかる。つま…

Javascript Scope

core javascriptの根本的な話。僕らの愛するjavascriptには以下の二つのスコープがある。 グローバル ローカル (ブロック: ex.next的な) javascriptにおけるスコープの仕組みは少し特別なので説明する。 scope of each scopes まずは、二つのスコープの範囲 …

単語前方一致・単語後方一致・単語完全一致 String.indexOfの魔力

indexOfにはあまり知られてない裏技的な使い方がある。 よく知られてるString.indexOf indexOf構文 indexOf(searchValue[, fromIndex])パラメータsearchValue 検索する値を表す文字列。fromIndex 呼び出す文字列内の検索を始めるための位置。0 とその文字列…

JSLint will hurt your feelings.

JSLint:Douglas Crockford氏作JSの品質向上ツール もうけちょんけちょんにエラーで指摘されるのは慣れてきたので、僕がふるぼっこにされながら学んだJSLint様に指摘されない書き方を紹介する。実際に自分のコードに非のある場合のエラーは一目瞭然なので、知…