Skip to content

Instantly share code, notes, and snippets.

@dakatsuka
dakatsuka / chat.js
Created June 19, 2011 11:27
中継サーバに Redis Pub/Sub を使う
// This program is free software. It comes without any warranty, to
// the extent permitted by applicable law. You can redistribute it
// and/or modify it under the terms of the Do What The Fuck You Want
// To Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/wtfpl/COPYING for more details.
var sys = require('sys')
, opts = require('opts')
, ws = require('websocket-server')
, redis = require('redis')
@dakatsuka
dakatsuka / chat.coffee
Created June 24, 2011 13:17
https://gist.github.com/1034095 を CoffeeScript で書いてみた
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# http://sam.zoy.org/wtfpl/COPYING for more details.
sys = require 'sys'
opts = require 'opts'
ws = require 'websocket-server'
redis = require 'redis'
server = ws.createServer()
@dakatsuka
dakatsuka / app.js
Created June 28, 2011 01:53
Sequelizeお試し
var sys = require('sys');
var Sequelize = require('sequelize');
var sequelize = new Sequelize('sequelize_test', 'root', 'password');
var Article = sequelize.define('Article', {
title: Sequelize.STRING,
body: Sequelize.TEXT
});
Article.sync();
@dakatsuka
dakatsuka / deploy.rb
Created July 6, 2011 03:57
Node.js + Express + Cluster をデプロイするためのCapistrano Recipe
set :shared_children, %w(log pids sock node_modules)
set :node_path, "/usr/local/bin"
set :node_app, "app.js"
namespace :deploy do
task :finalize_update, :except => { :no_release => true } do
run "chmod -R g+w #{latest_release}" if fetch(:group_writable, true)
run "rm -rf #{latest_release}/log #{latest_release}/node_modules #{latest_release}/tmp"
run "mkdir -p #{latest_release}/tmp"
@dakatsuka
dakatsuka / dictionary.js
Created August 21, 2011 09:27
Dictionary Class for Node.js
var Dictionary = function() {
this.keys = {};
this.length = 0;
this.defaultValue = null;
};
Dictionary.prototype.store = function(key, value) {
this.keys[key] = value;
this.length++;
};
@dakatsuka
dakatsuka / client.test.js
Created August 27, 2011 15:44
WebSocket-Node Client Connection Test
var vows = require('vows');
var assert = require('assert');
var events = require('events');
var WebSocketClient = require('websocket').client;
vows.describe('WebSocket-Node Client Connection Test').addBatch({
'HTTP': {
topic: function() {
var promise = new (events.EventEmitter);
@dakatsuka
dakatsuka / test-hoge.coffee
Created September 18, 2011 10:59
Vowsでイベントを捕捉する
vows = require('vows')
assert = require('assert')
events = require('events')
Hoge = require('hoge')
vows
.describe('Hoge')
.addBatch
'when using foo method':
@dakatsuka
dakatsuka / _form.html.haml
Created September 28, 2011 22:12
has_one関連時のaccepts_nested_attributes_for / fields_for
= form_for @user do |f|
= f.fields_for :profile, @user.profile || Profile.new do |p|
.field
= p.label :nickname
= p.text_field :nickname
@dakatsuka
dakatsuka / gist:1249674
Created September 29, 2011 00:23
値を指定して配列から要素を削除する
item1 = {}
item2 = {}
item3 = {}
array = [item1, item2, item3]
array.splice array.indexOf(item2), 1
Array.prototype.__defineGetter__('first', function() {
return this[0];
});
Array.prototype.__defineGetter__('last', function() {
return this[this.length - 1];
});
Array.prototype.__defineSetter__('first', function(val) {
this[0] = val;