2013年12月18日水曜日

pythonで標準出力(print)のテスト

簡単なのはdoctestでやれって感じですが。

StringIOを使用すればいけるらしい。
documentはこの辺り。
http://docs.python.jp/2.7/library/stringio.html

サンプルは以下の通り。

import unittest 
import StringIO 
import sys

class Hello: 
    @classmethod 
    def say(cls): 
        print "test",

    @classmethod
    def world(cls):
        print "World"
    
class TestHello(unittest.TestCase): 
    def setUp(self): 
        dumout = StringIO.StringIO() 
        self.sysout = sys.stdout 
        sys.stdout = dumout

    def testSay(self):
        Hello.say()
        sys.stdout.seek(0)
        self.assertEqual("test",sys.stdout.getvalue())

    def testWorld(self):
        Hello.world()
        sys.stdout.seek(0)
        self.assertEqual("World\n",sys.stdout.getvalue())

    def tearDown(self):
        sys.stdout = self.sysout

if __name__ == "__main__": 
    unittest.main()

2013年12月11日水曜日

vimの起動時間を調査する

--startuptime <出力先ファイル名>とつけて起動すると 以下のような形で表示される。
times in msec
 clock   self+sourced   self:  sourced script
 clock   elapsed:              other lines

000.012  000.012: --- VIM STARTING ---
000.085  000.073: Allocated generic buffers
000.365  000.280: locale set
000.373  000.008: window checked
000.810  000.437: inits 1
000.817  000.007: parsing arguments
000.818  000.001: expanding arguments
000.832  000.014: shell init
047.956  047.124: Termcap init
047.975  000.019: inits 2
048.074  000.099: init highlight
062.254  000.168  000.168: sourcing $VIM/vimrc
106.266  000.397  000.397: sourcing /usr/share/vim/vim73/colors/desert.vim
とりあえず自分が遅いのは$HOME/.vimrcの読み込みが遅い模様。 ネットワークドライブから読み込んでるからの可能性が高いな。。。
vimrcの無駄な設定とかなくせば早くなりそうだけど、起動したら基本起動しっぱだからしゃあないってことにしよう。
原因深追いするほど時間もないので。。。

2013年12月7日土曜日

nodeのTwitterライブラリ Twitを使って&ソースをちょろっと読んだメモ

TwitというnodeのTwitterライブラリのソースをちょろっと読みました。

repositoryは以下。
https://github.com/ttezel/twit このライブラリの使い方は簡単で
var Twit = require("twit");
var T = new Twit({
    consumer_key:"your key",
    consumer_secret:"your secret",
    access_token:"your access token",
    access_token_secret:"your access token secret"
});

T.post("statuses/update",{status:"post tweet"},function(err,reply){
    //...
})
みたいな感じです。 なんでソースコード読んだかというとoauth周りの処理をどうやってるのかが気になったからです。 Twitではoauthパッケージを使用してるようです。
https://github.com/ciaranj/node-oauth
EventEmitterでListenerを登録して、request投げて各Eventをcallしてるという簡単な感じ。

なんというかそんなに言及することがない; そしてjsのソースを長々と読んで思った。

型がほしい。。。欲しすぎる! 引数の情報とかコメントで書いてないし、中身どんなんだったかなんて覚えてないから 読むのにすごい苦労する。。。 やはり自分も手抜きせずTypeScriptで今後は書こうと思いました(小並感)

2013年12月2日月曜日

postgresqlの初期設定メモ

まずはディレクトリを作成

mkdir ~/database

cd database 

データベースクラスタを作成(データベースの格納領域のこと。ここにデータベースを作成する)
initdb -D example -U postgres

example以下のpostgresql.conf

のportを5433に変更し、コメントアウトを解除する
※このまま起動しても何故か5432が使用されているというエラーがでるため

postgres -D example
でDBを起動する

testという名前のデータベースを作成する
createdb -U postgres -p 5433 test

ターミナルを別に起動し、
psql- p 5433 -U postgres test
でデータベースに接続できる

postgresは管理ユーザなので新たにユーザを作成する

createuser -p 5433 -U postgress

で色々聞かれるので最初にユーザ名を入れ、あとはnoで
ユーザ名はとりあえずuser1で。

作成されているか確認するためデータベースに接続
psql -p 5433 -U user1 test

で¥duと入力すればデータベースユーザが作成されているのがわかる

                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 user1     |                                                | {}


次はsailsからアクセスするようにします。