読者です 読者をやめる 読者になる 読者になる

ぶれすとつーる

だいたいjavascript

CSS&FP WG

本記事、ただの用語メモ。 cssの仕様しらべてたら「CSS&FP WGによって定められた〜」みたいに書いてあって、そういえばよく見るけどFP is 何?ってなったので調べてた時のメモ FP = Formatting Properties. らしい。 CSS&FP WG = Cascading Style Sheets and…

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…

requireの仕組み

こんばんは この記事は Node.js Advent Calender 2014の23日目の記事です。 Node.js Advent Calendar 2014 - Qiita Node.js Advent Calendar 2014 - Qiita 普段node書くとき、何気なく使ってるrequireだけど、どんな風にモジュールが読み込まれてるのかコア…

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

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

サーバ側でd3を使って作ったsvgを画像に変換して返す

おはようございます、この記事はd3.js Advent Calendar 2014の21日目の記事です。 d3.js Advent Calendar 2014 - Qiita d3.js Advent Calendar 2014 - Qiita つい先日からd3を使い始めました。 d3のpackage.json読んでたらnode側から使う場合はjsdomを使って…

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 を同一として扱うようになりました。 ってかいてるのみて、ほとんど出た当…

connect-expiresかいた

response headersにexpires付与してくれるconnect middlewareさがしたらすごく大きなものばっかりでてきてそんなに機能必要じゃなかったのでちょろっとかいた。 connect-expires var expires = require('connect-expires') ; // ...adding some connect midd…

文字列リテラルと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 ありがとうございますぽよ〜>< …

inline-block一回指定しちゃうとhasLayoutを元に戻せないとかいう糞みたいなほんとの話

最近うしろめたいことにちょっと時代錯誤なことしてて、そのせいでhasLayoutの思わぬ挙動に気づいた <html lang="ja"> ... <span class="foo">ほげえええ</span> ... .foo { display: inline-block; } .ie7 .foo { display: inline; } こういう状態のとき、i…</html>

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

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

レスポンスヘッダのexpiresとリロードの関係

レスポンスヘッダのexpiresとリロードの関係あんまり把握してなくてはまったのでメモ 下ごしらえ expireとcache-controlのmax-ageを適切に設定してレスポンス返すようなコードをかく。 (一応検証に使ったコードは下に記述してあるので面倒な人はそっちをみて…

Nodeでホストごとに起動するアプリケーションを分ける

だいたいnodejs-jpのレスに書いたことと同じだけどメモ代わりに。 ピュアな感じで書く とりあえずNodeのピュアなAPIだけでやる まずはサーバをたてる server.js var http = require('http'); http.createServer(function(req, res) { }).listen(3000); ホス…

コミットメッセージとかマークダウンに絵文字

githubでいろんなリポジトリ見て回ってたらコミットメッセージに絵文字がはいってるのあってあーつかえるんだーってなったんでメモ 使える絵文字一覧 ここにまとまってた 実際にやってみたらこんな感じ commit message commit 9bbf010f9833edf74a2f60066b1f0…

2013年の思い出

仕事とか (あまり詳しいことかけない) 1月頃〜 フロントエンドエンジニア(だいたいJS)に転向(それまではサーバサイドがメインだった) スマホ系のJS書く仕事がメインになった すべてのAndroidを生まれる前に壊したい— なぞみかん (@nazomikan) 2013, 6月 21 …

withとProxyを使ってフロントJSで外部からローカルスコープにアクセスする切り口

Proxyとwith使えばアクティベーションオブジェクト抜ける・・・?とりあえずwithの動的スコープ内のアクティベーションオブジェクトはさし抜けた。Function#toStringとwithとeval組み合わせればローカルメソッドにアクセスできるのでは・・・? (function ()…

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 …

cssのcounter()って便利だよなーって話

css

TL見てて@watilde氏がこんなこといってるの見て でもcounter()の存在知れてよかった。何か使い道ありそう。— わっちさん (@watilde) 2013年3月16日 昔制作さんにもらったテンプレでcounter()使われてたときはjsで制御しなきゃいけないだろーなって思ってとこ…

Node学園祭2012でおっぱいの話をしてきました。

11月下旬ごろ?にNode学園祭がありましたが、そこでLTしてきました。前の記事でかいたNode Knock Outの話です。NKO中にお世話になってた@mesoさんがよかったらLTしない?みたいなチャンスをくださったのでこれは是非といった感じで参加させていただきました…

Node Knock Outに参加してきました。

※年末にかこうかこうと思ってかけてなかったやつを精算しようと必死になってかいてます。時はさかのぼること11月の中頃にNode Knock OutというNodeのハッカソンがあったので参加してきました。 (http://nodeknockout.com/)数年前からやってるやつで去年はnod…

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にな…

rubyのArray#sortの挙動が怪しい件(あやしくなかった)

この挙動は別段問題なくて単純にコードブロックの評価順序によるものでした。 末尾に詳細を説明してますのでそちらを参照ください。元記事 ↓ Array#sortをブロック渡しで実行したときの挙動が変 # case 1 ary = ["1", "2", "10", "11", "3", "4", "23"] p ar…

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様に指摘されない書き方を紹介する。実際に自分のコードに非のある場合のエラーは一目瞭然なので、知…