2011-01-01から1年間の記事一覧

hyperestraier

最近hyperestraierを調べている これがなぜ流行らなかったのかよく分からないhttps://twitter.com/#!/tea_spoon_/status/60698252936347650 configureの一部をコメントアウトしてrvmで使えるようになったあまりに古すぎてインストールに苦労するのは危険な兆…

眼福.js

http://github.com/myatsumoto/ganpukuHTML5, YouTube, vimeoの埋め込みプレイヤーを統一していじれる。 vimeoのAPIはiframeにjsonを送る方式で珍しかった。

canvas

$('canvas').hoge({}); というのをしたい時 $(function(){ $.fn.hoge = function(options){ return new Hoge(this, options); } }); でやるとcontextが入ったcanvasをとれない $(function(){ $.fn.hoge = function(options){ var index = $('canvas').index(…

上限・下限を決めて代入

var n = Math.max(0, value); 三項演算子より楽

既にある複数のライブラリを統合して使う

// 既にあるライブラリ var A = function(){}, B = function(){}; A.prototype.run_a = function(){ console.log('start'); }; B.prototype.run_b = function(){ console.log('start'); }; A.prototype.stop_a = function(){ console.log('stop'); }; B.prot…

mongooseのembed document

今までembed documentの扱いは割と苦手に思っていたが、実はArrayで出来ることは全部出来るらしい。 var ev = new EventEmitter(); Channel.findById(id, [], {}, function(error, channel) { if(!error) { channel.queue.pop(); channel.queue.shift(); cha…

gtkmozembedのエラー

/usr/lib/ruby/1.8/i486-linux/gtkmozembed.so: [BUG] Segmentation fault ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]あきらめようかわりにwebkitはいける。 sudo apt-get install git-core sudo apt-get install libwebkit-dev cd /tmp git clon…

イベント発火のパターン

$(function(){ var HOGE_EVENTS = ['click', 'mouseup']; var Hoge = function(){ this.events = {}; for(var i=0;i

参照渡し

var 子 = function(_parent){ this.__parent = _parent; }; var 親 = function(){ this.value = 1; this.child = new 子(this); }; という感じだと var p = new 親(); p.value = 1000; console.log('親: ', p.value); // 1000が出る console.log('子: ', p.c…

canvasに円を書くだけのライブラリを作った

https://github.com/myatsumoto/en $(function(){ var en = $.en($('canvas')[0], { x : 10, y : 10, radius : 50 }); en.move(30, 30); // 中心が動く en.animate(10, 10, 3000, function(){ alert('finished'); }); // アニメーションで動かす $('body').c…

defineSetterはなかなか良い

$(function(){ var target = { left : 0, top : 0 }; target.__defineSetter__('top', function(value){ $('#target').css('top', value); return value; }); target.__defineSetter__('left', function(value){ $('#target').css('left', value); return va…

tornadoのクローラー

半年前に書いた記憶のあるtornado製のクローラー。よく覚えていないがそれなりに書かれていたので貼っておく。 仕様も動作も確認していない。EUC-JPなサイトもUTF-8に変換したりすると思う。 #!/usr/bin/env python import tornado.auth import tornado.esca…

socket.io v0.8でチャネリングさせた時のIDを指定したemit

前提知識 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { var お前のID = socket.id }); でsocketの識別IDが取れる。識別IDが取れると var io = exports.io = require('socket.io').listen(app); io.sockets.s…

ブラウザのウィンドウサイズの変更を知れる

$(window).resize(function(e){ console.log('w:', e.currentTarget.innerWidth, 'h:', e.currentTarget.innerHeight); }); onresizeというイベントがjsにあった。知らなかった。

if文のだらしない分岐を出来るだけ減らす

var キャラクター = { ジャンプする : function() { this.y = 10 }, しゃがむ : function() { this.animate('しゃがみ'); }, もぐる : function() { this.animate('もぐる'); }, 右に動く : function() { this.x += 5; }, 左に動く : function() { this.x -=…

簡単なスライドのjQueryプラグインを作った

https://github.com/myatsumoto/fusuma/jQueryのスライドアニメーション系のライブラリを作った。 よくあるライブラリだが、決め打ちされたHTMLを加工するものが多くjsで操作しにくかったので自作した次第。 <div id='block'> <ul> <li>3</li> </ul> </div> こういうHTMLに対して $(function(){ var f…

よくあるifの分岐コード

var A = 1, B = 2, C = 3; var t = Date.now() % 3; if(t === A) { console.log('t is A'); } else if(t === B) { console.log('t is B'); } else if(t === C) { console.log('t is C'); } else { console.log('t is NaN'); } というようなコードをよく使う…

okite.js

okite.jsというバリデーションツールを現在進行形で開発している。 https://github.com/myatsumoto/okite バリデーションは重要だが、型チェックは非常に面倒 DAOやServiceなどの層で個別に作らなければならない なのでokiteとしてスキーマ的に定義しておい…

mongodbのスクリプト

テストツールでsetUpの時にdbをrevertするスクリプトを走らせている。dump.js /** * user collection */ db.users.drop(); db.users.save({ user_id : 'myatsumoto', name : 'akihiro matsumoto' }); /** * post collection */ var user_id = db.users.findO…

実行はしっかりバラバラだった件。

実行はしっかりバラバラだった件。 テストのような順序性が保たれないとならない処理はStepのような強制的に処理をブロックするようものを書かねばなるまい。 https://github.com/creationix/step自前テストツールもしっかりバラバラに実行されていたので se…

mongooseからだとexecも使えない

mongooseの闇の部分を見てしまった気がする。 var db = mongoose.connect('mongodb://localhost:27017/db_name'); のコードが入ると var exec = require('child_process').exec; exec('mongoose db_name hoge.js', function (error, stdout, stderr) { if(er…

expressとjadeのinclude

ぐぐっても出なくて困ってる人がいたら可哀想なので書いておくと server.js (express) app.configure(function(){ app.set('views', __dirname + '/view'); app.set('view options', { filename : __dirname + '/view/何でも良い.jade' }); app.set('view en…

mongooseのテストを実行できない

whiskeyやexpressoで試してみたが、mongooseを使ったテストは全てタイムアウトしていたので var tests = { 'ユーザを検索する' : function() { var searching = user_dao.find({}, [], {}); searching.on('end', function(user) { console.log(user); proces…

mongooseのテストを実行できない(2)

前述の"自前のテストツール"を先程作ったのでコピーすると良い。https://github.com/myatsumoto/taikokenchi現在の使用法(2011/9/4) var TaikoKenchi = require('./path/to/taikokenchi'); var tests = { '人間はキーボードではない' : function(test) { tes…

node-validatorの拡張

check var check = require('validator').check; var Validator = require('validator').Validator; Validator.prototype.hoge = function() { if (this.str === 'hoge') console.log('hoge'); return this; }; check('hoge').hoge(); // hoge sanitize var …

型一致でtrueかfalseか見たい

var get_true_or_false = function(val, default_value) { if(val === true || val === false) { return val; } else if(default_value === undefined) { return null; } else { return default_value; } }; utilに加えてはどうか。

mongooseで位置 糞サンプル

緯度経度はコンソールでdb.name.ensureIndex({ "loc" : "2d" });みたいなことをせよ。 model/photo.js var Mongoose = require('mongoose'); var mongoose = new Mongoose.Mongoose(); var db = mongoose.connect('mongodb://localhost:27017/db_name'); var…

mongooseの糞サンプル

model/post.js var Mongoose = require('mongoose'); var mongoose = new Mongoose.Mongoose(); var db = mongoose.connect('mongodb://localhost:27017/db_name'); var Schema = Mongoose.Schema; var ObjectId = Schema.ObjectId; var Tag = new Schema({ …

node-validator

node.jsのnode-validatorのcheckが例外投げるので var Validator = require('validator').Validator; Validator.prototype.error = function (msg) { return false; }; これで握りつぶす

すぐ忘れるSQL取り込むヤツ

mysql -u [user] -p[password] [database name] < hoge.sql