引っ越しました。
そんなたいしてエントリ書いてなかったんですけど
勉強もかねて さくらVPS に引っ越しました。
SRM 589
TopCoder を始めてみた。
このままスキルが停滞したままだと将来詰むと思ったから。
#もう詰んでる可能性があるのが辛いところorz
生きながらにして腐るのは人間だけらしいので、無理矢理でもいろいろ始めることにする。
結果は惨敗orz
250 はSystestをクリアしてたけど
500 はテストが落ちてた(0点)orz
1000 はテストが解けるところまでも行かず。
同じ部屋にいた人をいろいろみてたけど
ほとんどが学生&みんな無駄のないコードを書くのね。
#インデントがないコードもけっこうあったけどあれはあれでいいのだろうか。
でも社会人になってからこうやって試される機会ってのは
減ってきているので継続的にチャレンジしてみようと思う。
mongoose を使う
Node.js で MongoDB の読み書きをする際に mongoose.js を使ったときのメモ。
mongoose はDB への接続するコードをできるだけ隠蔽しようとしているので、
モデル定義を使って DB への接続をほぼ意識せず使うことが可能。
DBへの接続を意識するのは起動時だけ。app.js の中で Mongo に接続する。
var mongoose = require('mongoose'); var uri = process.env.MONGOHQ_URL || 'mongodb://localhost/collectionName'; mongoose.connect(uri);
モデルを module として定義する。
var mongoose = require('mongoose'); NAME_RECORD = 'entry'; var schema = new mongoose.Schema({ title: { type: String, required: true }, .... category: { type: Array, required: false } }); // create object module.exports = mongoose.model(NAME_RECORD, schema);
保存/検索を行う。
var Post = require('../models/post.js'); Post.find(condition).skip(offset).limit(limit).sort({date: order}).exec(function(err, result) { ............... }); var newPost = {title: title, url: url, from: from, to: to, date: date, category: [category]}; new Post(newPost).save(function(err) { if(!err){ res.send(newPost); }else{ res.send("NG"); } });
退職系エントリを Backbone.js + Node.js on Heroku でまとめてみる
最近流行ってる退職系エントリをまとめ中。
単にブログとかでまとめるだけだとつまらないので
せっかくなのでいろいろ使ってみることにした。
http://quitentry.herokuapp.com/
Frontend を Backbone,js + Twitter bootstrap、
Backend を Express.js + Node.js + MongoDB で作成。
Express.js を使うけど API サーバとして使うだけ。
API のルーティングはこんな感じ。
app.get('/api/search', entry.search); app.get('/api/companies', entry.companies); app.get('/api/add', entry.add);
ルーティングされた先で退職エントリをMongoDBから読み出して返す。
ブログエントリの構造はこんな感じ。
{ title: 'Google 辞めました - アスペ日記', url: 'http://d.hatena.ne.jp/takeda25/20120511/1336746314', from: 'Google', to: '', date: ISODate("2012-05-11T15:00:00Z"), category: ["WEB"] }
選んだエントリに特に意味はない。
DB の読み出しは Mongoose を使った。
デプロイ先は Heroku にしてみた。
データは Heroku のアドオンにある MongoHQ に直接突っ込んでる。
これからブラウザから登録できるようにしてみよう。
Vagrant をまず使ってみる
最近はソースコードのビルドやテストだけじゃなく、
環境までコマンド一発で作れるようになりつつあるみたいですね。
チームで開発してるとよく聞く「俺の環境では動いた」という名言。
よくよく調べたらMySQLのテーブルを追加しないと動かなくなるような変更入れられてた、とか。
そういうトラブルを解決するための素敵なツール、Vagrant。
#「ベイグラント」と読むらしい
簡単にVMの構築、破棄ができて
設定ファイルにApacheなどのインストールスクリプトも含めることができるらしい。
まずはダウンロード&インストール。
http://downloads.vagrantup.com/
そのあとは作業用のディレクトリ作成&初期化。
mkdir vagrant_getting_started
cd vagrant_getting_started
vagrant init
次にVMのイメージの追加。
vagrant box add precise32 http://files.vagrantup.com/precise32.box
ここでは Ubuntu イメージを precise32 という名前で追加。
Vagrant では VM イメージのことを Box と呼ぶらしい。
その他の VM イメージはこちら参照。
http://www.vagrantbox.es/
作業ディレクトリのVagrantfileが設定ファイルになっている。
このファイルでここで使用するVMイメージを指定。
config.vm.box = "precise32"
これで準備完了。
vagrant up
で起動して、
vagrant ssh
で接続。
作業ディレクトリの中身と、立ち上げた VM の /vagrant の中身が同期しているので
ホストマシンで作業したものを VM に持って行けて便利。
apache などを VM に入れたい場合、
インストールスクリプトを書いたものを
作業ディレクトリに保存したあと("bootstrap.sh" )、設定ファイルに反映する。
config.vm.provision :shell, :path => "bootstrap.sh"
このあと、
vagrant reload
で VM に変更が反映される(インストールされる)。
作業が終わって破棄したくなったら
vagrant destroy
でおしまい。
destroy をすると、VM で行った作業はすべて破棄される。
作業を中断する場合は、
vagrant suspend
か
vagrant halt
を使う。
作業を再会するときは
vagrant up
で。すごい時代だ。
mi addidas に申し込んでみる。
自分で靴をデザインできる mi addidas をやってみた。
#デザインって言っても色だけだけど。
http://adidas.jp/miadidas/special/
昔履いてたスニーカーが好きだったんだけど
気付いたら生産終了してて手に入らない状態に。
ないなら作ってしまえ、と好きだったスニーカーと同じテイストで作ってみた。
早く届け。
Eclipse で TestNG で Java のテストコードを書いて、EclEmma でカバレッジを計測する。
Java のテストフレームワークと言えば JUnit だと思っていましたが、
最近は TestNG というのがいいらしいです。
公式サイト
http://testng.org/doc/index.html
Eclipse で TestNG を使うためには、
「Help」→「Install new software」で
Eclipse 3.4 以降なら http://beust.com/eclipse、
Eclipse 3.3 以前なら http://beust.com/eclipse1 を入力。
各テストメソッドに @Test アノテーションを追加する。
@Test public void verify() { }
これでテストコードの準備は完了。
続いてカバレッジを計測してくれるプラグイン、EclEmma を追加。
「Help」→「Install new software」で http://update.eclemma.org/ を指定。
追加が終わったらテスト実行。
「Debug as 〜」でTestNG を選択してデバッグ実行。
結果が色分けされて表示される。
緑色の部分がテストで通った場所、赤色がテストで通らなかった場所。