scalaのBitSet

Bit配列を持ちたいので調べた http://www.scala-lang.org/api/current/scala/collection/BitSet.html object TryBitSet { import scala.collection.mutable.BitSet def main(args:Array[String]) { var bits = new BitSet() // empty状態 // bits += n で n…

ScalaでLCP

LCPを用いて探索するようにしたいのでその関数をつくる object LCPTest { def main(args: Array[String]) { val str = "orangeorange" val c = lcp(str, 0, 6) // 6 } def lcp(str:String, l:Int, r:Int):Int = { var d:Int = 0 while(str(l+d) == str(r+d))…

scalaのArrayStack

複数の検索結果を返すようにしたいので返すデータ型にArrayStackを使う。 object ArrayStackTest { import scala.collection.mutable.ArrayStack def main(args: Array[String]) { var a = new ArrayStack[Int] a.push(1) a.push(2) for (n <- a) println(n.…

scalaのsuffixArray

とりあえず作ったが、問題点が幾つかある。 class SuffixArray(str:String) { val sortedArray = this.parse(str) import scala.collection.mutable.HashMap def parse(str:String) : Array[HashMap[String, Any]] = { var strArray = new Array[HashMap[Str…

vimのsyntax追加

~/.vim/syntax/hoge.vim を追加の後、 if exists("did_load_filetypes") finish endif augroup filetypedetect au! BufRead,BufNewFile *.hoge setfiletype hoge augroup END ~/.vim/filetype.vim (filetypeはそのままfiletype。共通で使う) という名前で入…

Scalaで文字列配列の二分探索

def search(sortedArray:Array[Any], target:String): Int = { var upper = sortedArray.length - 1 var lower = 0 while (upper >= lower) { var i = lower + (upper - lower) / 2 if (sortedArray(i) == target) return i if (sortedArray(i) < target) lo…

ScalaでAny型のキャスト

val map = Map[String, Int] は val map = Map[String, Any] にして、様々な型(Anyのサブクラス)を受け付けられる比較の際などは val a = Map[String, Int]("key" -> 100) val b = Map[String, Any]("key" -> 1000) val t = a("key") < b("key").asInstanceO…

cakePHPをユーザフォルダで開発

sudo ln -s /home/user/project/cakephp /var/www chmod -R 777 /home/user/project/cakephp/app/tmp 相変わらず忘れる

nodeのテスト用

Dropboxに入れたコード群が消えていたのでこちらにも残しておく var EventEmitter = require('events').EventEmitter; var exec = require('child_process').exec; var test = module.exports = { data : { resource : __dirname + '/resource', mongo : { d…

nodeで名前空間みたいなことをやりたい

expressでよくアプリをつくるが、多層化するにつれ他のファイルを呼び出す際の require('../../../piyo'); みたいなやつが気になる。http://nodejs.jp/nodejs.org_ja/docs/v0.6/api/modules.html を見ると '/' や './' が先頭になければ、モジュールは "コア…

アプリのvalidationもshould.jsでよい

should.jsが使い勝手が良さそうだった、testのassert用ぽいがアプリのバリデーションに使える。たとえば var async = require('async'); var should = require('should'); var validate = module.exports = { user : function(query){ async.parallel([ func…

pinterestにポストするchrome extension

https://github.com/myatsumoto/meijin コンテクストメニューからpinterestに画像を投稿できる。投稿先もコンテクストメニューから選べる。 コメント打つのがダルいので顔文字をランダムで入れるようになっている。 特に新しいことはしていない。

nvmでsudoする

nvmのnodeでport80を普通に使おうとすると node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: listen EACCES at errnoException (net.js:632:11) at Array.0 (net.js:718:28) at EventEmitter._tickCallback (node.…

rubyでWebページのスクリーンショットをとる

まずGtk2, WebKitが要るGtk2 sudo apt-get install libgtk2.0-dev sudo gem install gtk2 WebKit sudo apt-get install libwebkit-dev git clone https://github.com/magec/rbwebkitgtk cd rbwebkitgtk && ruby extconf.rb && make && sudo make install scr…

nodeのアプリをport80で動かす

apache使わずにプロキシサーバをnodeでたてる。 こうするとWebSocketもプロキシ経由で通せるようになる。 npm install http-proxyでhttp-proxyをインストール(nodeのver0.6.6以上必須)app.js var httpProxy = require('http-proxy'); httpProxy.createServer…

JSONをparseする

適当にJSON.parse(hoge)とやると、 たまに変なのが返ったときに undefined:1^^ SyntaxError: Unexpected token ILLEGAL とでるので、やむを得ず使っている変換コード var parse = function(body){ if(typeof body == 'string'){ try { return JSON.parse(bod…

8queen

研究室で再帰で組み合わせを出すコードを死ぬほど考えたが全く出来ず終わる頭の悪さだったので、 パターンを自分で考えずに他人に頼ることにした。 def eight_queen(n = 8, m = 8) run(n, m, []) end def run(kinds, len, a) return unless can_set_queen?(a…

socket.ioのmappingを別ファイルで管理したい

socket.ioは使い勝手が良い。 大規模になるとよくあるサンプルのように1ファイルに全部書きたくないので分ける。socket.manager.js var manager = module.exports = { base : './controller/socket/', set : function(path, info, io, socket){ socket.on(pa…

neo4jのdriverを作った

https://github.com/myatsumoto/neo-tokyo driverと名乗っているが、REST Serverにアクセスしているだけなので大したことはしていない。既にあるnode-neo4j ( https://github.com/thingdom/node-neo4j )とは少し仕様が違う。 var Graph = require('./lib'); …

jsonをkeyに使う

var a = [1, 2, 3]; var b = [4, 5, 6]; var h = { "[1,2,3]" : function(){ console.log("A"); }, "[4,5,6]" : function(){ console.log("B"); } }; h[JSON.stringify(a)](); h[JSON.stringify(b)](); 条件分岐に活用できる

jsでたまに使う

var filter = function(something){ return { by : function(max){ return something.a < max; } }; }; 手軽にメソッドチェーンぽいのをしたい時、たまに使う。 filter({ a : 9999 }).by(10000); のように使う。

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…