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からアクセスするようにします。


    

2013年11月26日火曜日

virtualboxのubuntu13.10にsshで接続するまでのメモ

ubuntuの端末上で

sudo apt-get install openssh-server
/etc/init.d/ssh restart

を行う。

virtualboxの設定>ネットワークでブリッジアダプターにする

でvirtualbox側の端末でifconfigを行いipアドレスを確認

ここまでいったら

ssh ユーザー名@ipアドレス

で接続できる。

2013年11月24日日曜日

ubntu13.10にpostgtresqlをinstallする

まずはvirtual boxにubuntu13.10をインストール

ubuntuは以下からDLする。

で、ターミナルをたちあげて

sudo apt-get install postgresql

でpostgresqlをインストール

バージョンは9.1がインストールされる模様。

まぁとりあえず動かすだけだからこのバージョンでいいやってことで。

ubuntuだとinitdbとかは最初からは使えない(pg_wrapperとかいう独自のコマンドを使うらしい。。。詳しくここあたりを見るとわかるかとhttp://lets.postgresql.jp/documents/tutorial/ubuntu/4)ので
PATHを通します。

.bashrcに以下を追記
PATH="$PATH:/user/lib/postgresql/9.1/bin"
PATH="$PATH:/user/lib/postgresql/9.1/lib"

保存をしたら

source ~/.bashrc

として設定を読み込む。

これでinitdbとかのコマンドが使えるようになる。

2013年11月21日木曜日

node.jsでuuidを生成する

nodeでuuidを生成するにはnode-uuidを使用するのが楽。

npm install node-uuid

でインストールできる。
githubはhttps://github.com/broofa/node-uuid

ちなみにuuidはRFC4122で定義されている。

uuidの生成はv1とv4というのが主に使われていて、v1はMacアドレス?と時間をベースに生成する。v4は乱数で生成するらしい。

とりあえずv4使っておけば安全です。

var uuid = require('node-uuid');

console.log(uuid.v4())
console.log(uuid.v4())
console.log(uuid.v4())
console.log(uuid.v4())
console.log(uuid.v4())

で実行すれば

076c423d-df24-4efa-ae31-6d515d076dce
a22433a9-bfb0-4da4-b6f8-4d49c291a4e3
41fc55de-cfee-4222-894e-09e5cc3e1ad6
b39a4e23-a83c-41f9-b5e9-d83f20da9ca2
d8805de4-86df-40b3-a18e-94411ea20562

こんな感じでuuidが取得できる。