Skip to content

Instantly share code, notes, and snippets.

@ishiduca
ishiduca / module.js
Created December 9, 2013 12:36
js-valid と evem-min を使った コンストラクタのサンプル
;(function (global) {
'use strict'
var isBrowser = !! global.self
var isWorker = !! global.WorkerLocation
var isNodeJS = !! global.global
var Valid, emitter
if (isNodeJS) {
Valid = require('js-valid')
emitter = require('evem-min')
@ishiduca
ishiduca / driver.js
Last active December 29, 2015 20:49
socket.ioアプリのテスト(テストに限らないけど)。テストが終わったらすぐにプロセスを終わらせたいんだけど、地味に終わらない。 多分httpのコネクションが切れないからだと思うだけど、どうすりゃいいのか? Qiitaに記事書いたら消すと思う
var q = module.exports = require('qunitjs')
require('qunit-tap')(q, console.log.bind(console))
q.init()
q.config.updateRate = 0
q.assert.is = q.assert.strictEqual
q.assert.like = function (str, reg, mes) { t.ok(reg.test(str), mes) }
@ishiduca
ishiduca / test.html
Created November 20, 2013 06:15
dom判定
<!doctype html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="./qunit/qunit-1.10.0.css" />
<script src="./qunit/qunit-1.10.0.js"></script>
<script src="./qunit/qunit-tap.js"></script>
<script>
window.console || (window.console = {_:[]})
window.console.log || (window.console.log = function (mes) { this._.push(mes) })
qunitTap(QUnit, function () { console.log.apply(console, arguments) })
@ishiduca
ishiduca / evem-min.js
Last active December 28, 2015 15:29
真似てみた
;(function (global) {
'use strict'
var isBrowser = !! global.self
var isWorker = !! global.WorkerLocation
var isNodeJS = !! global.global
var emitter = {}
emitter.constructor = function constructor () {
this.evs = {}
@ishiduca
ishiduca / .bowerrc
Created November 13, 2013 08:39
.bowerrc
{
"directory": "./public/bower_components",
"json": "bower.json"
}
@ishiduca
ishiduca / array_benchmark.js
Created October 16, 2013 13:53
空の配列への書き込みベンチマーク ref: http://qiita.com/ishiduca/items/20488079d3790d037738
var Benchmark = require('benchmark')
var words = 'a b c d e f g h i j k l m n o p q r s t u v w x y z'
function not_set_length () {
var w = words.split(' ')
var ww = []
while (w.length) {
ww.push(w.pop())
}
return true
@ishiduca
ishiduca / sleep.js
Created October 13, 2013 14:05
js-sleep 良くない例
function sleep (mSecs) {
if (typeof mSecs !== 'number') throw new TypeError('must be "number"')
if (mSecs < 0) throw new RangeError('must be over "0"')
var timeout = Date.now() + mSecs
while (timeout > Date.now()) ;
}
@ishiduca
ishiduca / parse_csv_benchmark.js
Last active December 25, 2015 08:09
単純なCSV文字列のパースパターン(2例)のベンチマーク。20行x20列だけど結構差が出た。
var path = require('path')
var Bench = require('benchmark')
var csvpath = path.join(__dirname, '../gutenberg.csv')
var csv = require('fs').readFileSync(csvpath, 'utf8')
function parse1 () {
var index = {}
var table = csv.split('\r\n')
.filter(function (ln) { return !! ln.length })
@ishiduca
ishiduca / result.txt
Last active December 24, 2015 19:29
現在時刻に依存したモジュールのテスト ref: http://qiita.com/ishiduca/items/f2ac1fbda6cfe8c236f4
TAP version 13
# stub
# hook .toString
ok 1 (new Date).toSting() === "12"
ok 2 (new Date).toSting() === "hoge"
# reset .toString
ok 3 (new Date).toString() === "Sun Oct 06 2013 16:56:13 GMT+0900 (JST)"
1..3
# tests 3
@ishiduca
ishiduca / test_double.js
Created October 4, 2013 02:28
TestDouble の TestStub と TestSpy
// see http://goyoki.hatenablog.com/entry/20120301/1330608789
var q = require('qunitjs')
;(function () {
var qTap = require('qunit-tap')
qTap(q, require('util').puts, {showSourceOnFailure: false})
q.init()
q.config.updateRate = 0
q.assert.is = q.assert.strictEqual
})()