Skip to content

Instantly share code, notes, and snippets.

@ishiduca
ishiduca / example-app.js
Last active August 29, 2015 14:20
React.jsで簡単な通知コンポーネント の試作。送られてきたメッセージを一定間隔の時間を置いて表示する
'use strict'
var React = require('react')
var events = require('events')
var store = new events.EventEmitter
var roll = require('./roll')
var Notify = React.createClass({
mixins: [roll({timeout: 1500}, store)]
@ishiduca
ishiduca / flux-on-stream.js
Last active August 29, 2015 14:19
event-streamでflux実装。エラー処理も
'use strict'
var es = require('event-stream')
var assign = require('object-assign')
// dispatcher
var dispatcher = es.map(function (payload, cb) {
cb(null, payload)
})
// actions
var act = assign(es.map(function (payload, cb) {
@ishiduca
ishiduca / dispatcher.js
Created March 27, 2015 09:52
flux dispatcher
'use strict'
var dispatcher = module.exports = new (require('flux').Dispatcher)
var dispatch = dispatcher.dispatch
var register = dispatcher.register
dispatcher.dispatch = function (actionType, value) {
var payload = {actionType: actionType}
if ('undefined' !== typeof value) payload.value = value
return dispatch.apply(this, [payload])
@ishiduca
ishiduca / example.js
Last active August 29, 2015 14:17
apiObjectを作る時のutility
'use strict'
var handle = require('./handle')
var events = require('events')
var assign = require('object-assign')
var list = []
var api = assign({}, events.EventEmitter.prototype)
// API
// handle.call(
@ishiduca
ishiduca / react-demo-rate.html
Last active August 29, 2015 14:13
React.jsでRateする
<!doctype html>
<head>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css" />
<style>
* {
margin : 0;
padding : 0;
}
main: {
display : block;
@ishiduca
ishiduca / error.test.js
Last active August 29, 2015 14:08
pipeで繋いだStreamが例外を発行した場合の処理 ref: http://qiita.com/ishiduca/items/30ef3a4db72124ff9926
var test = require('tape').test
var stream = require('stream')
function setup (src) {
var queue = src.slice(0)
var rs = new stream.Readable({objectMode: true})
rs._read = function () {
this.push(queue.shift() || null)
}
@ishiduca
ishiduca / crawler.js
Created October 16, 2014 11:35
crawler.js
var path = require('path')
var fs = require('fs')
var OpmlParser = require('opmlparser')
var semaphore = require('semaphore')
var request = require('request')
var FeedParser = require('feedparser')
var export_xml = path.join(__dirname, './export.xml')
var lock_capacity = 3
var timeout = 5000
@ishiduca
ishiduca / semaphore-stream.js
Created October 16, 2014 08:12
streamでセマフォ?
var util = require('util')
var stream = require('stream')
var semaphore = require('semaphore')
function SemaphoreStream (count, option) {
stream.Duplex.call(this, (option || {}))
this.semaphore = semaphore(count)
this.finished = false
@ishiduca
ishiduca / index.html
Created September 28, 2014 07:28
ractivate で ractive.js を brwoserify に対応させる
<!doctype html>
<head>
<meta charset="utf-8" />
<title>Ractiv.ate</title>
<head>
<body>
<div id="main"></div>
<script src="./bundle.js"></script>
</body>
@ishiduca
ishiduca / app.js
Created September 19, 2014 09:40
use Domain in 'carom.js app'
var app = Object.create(require('carom.js')).constructor()
function onError (err, req, res) {
console.error(err)
console.error(err.stack)
res.writeHead(500)
res.end(String(err))
}