VirtualBoxのHeadless起動
VirtualBoxでVMを起動する時にいちいちGUIがある必要は全くないのでHeadlessで起動したい。コマンドラインツールで指定してあげれば出来るご様子。
# vmidを指定する必要があるので確認 $ VBoxManage list vms # 起動 $ VBoxManage startvm <vmid> --type headless # 状態を保存して終了 $ VBoxManage controlevm <vmid> savestate
終了させるコマンドがないみたいだけどShutdownしてあげれば切れるっぽい?
でも毎回vmid指定するのはしんどいのでこんなの書いてみたけどこんなんでいいんだろうか。ちゃんと$HOME/binとか作ってパス通した起動スクリプトとかにすべき?とりあえず.zshrcからsourceして使ってる。
WindowsでRuby環境をpikを使って整える
pikのインストール
https://github.com/vertiginous/pik
RubyVersionManagerことRVMのWindows版らしい。ご丁寧にインストーラが用意されてるのでそれを入れる。gitがなくても入れられる*1。せっかくなので最新版の0.3.0-preを入れてみる。
- https://github.com/vertiginous/pik/downloads からDL
- インストーラを起動してサクサクとWindowsではおなじみのNextを押す簡単な作業をこなす
- 使えることを確認
C:\Documents and Settings\cynipe>pik --help Usage: pik command [options] To get help with a command pik help (command) To list all commands and descriptions: pik help commands -V, --version Pik version -d, --debug Outputs debug information
Ruby1.9.2のインストール
pikを使ってruby-1.9.2をインストールする。
C:\Documents and Settings\cynipe>pik install ruby-1.9.2 creating D:\home\cynipe\.pik ERROR: You need the 7zip utility to extract this file. Run 'pik package 7zip install'
なんか怒られてるけど丁寧なインストラクションがついてるので従う。
C:\Documents and Settings\cynipe>pik package 7zip install INFO: Downloading: http://downloads.sourceforge.net/sevenzip/7za920.zip to: D:\home\cynipe\.pik\downloads\7za920.zip 7za920.zip: 100% |ooooooooooooooooooooooooooooo| 375.8KB/375.8KB Time: 00:00:00
も一度インストールを試みる。
C:\Documents and Settings\cynipe>pik install ruby-1.9.2 INFO: Installing ruby-1.9.2-p136 INFO: Downloading: http://rubyforge.org/frs/download.php/73723/ruby-1.9.2-p136- i386-mingw32.7z to: D:\home\cynipe\.pik\downloads\ruby-1.9.2-p136-i386-mingw32.7z ruby-1.9.2-p136-i386-min...7z: 100% |oooooooooo| 5.8MB/ 5.8MB Time: 00:00:28 INFO: Extracting: D:\home\cynipe\.pik\downloads\ruby-1.9.2-p136-i386-mingw32.7z to: D:\home\cynipe\.pik\rubies\ruby-1.9.2-p136 There was an error. Error: Permission denied - D:\home\cynipe/.pik/rubies/ruby-1.9.2-p136/ruby-1.9. 2-p136-i386-mingw32/lib or D:\home\cynipe/.pik/rubies/ruby-1.9.2-p136/lib in: fileutils.rb:506:in `rename' in: fileutils.rb:506:in `mv' in: fileutils.rb:1397:in `fu_each_src_dest' in: fileutils.rb:1411:in `fu_each_src_dest0' in: fileutils.rb:1395:in `fu_each_src_dest' in: fileutils.rb:495:in `mv' in: pik/installer.rb:48:in `mv_r' in: pik/installer.rb:82:in `extract' in: pik/installer.rb:81:in `each' in: pik/installer.rb:81:in `extract' in: pik/installer.rb:74:in `each' in: pik/installer.rb:74:in `extract' in: pik/commands/install_command.rb:29:in `execute' in: pik_runner:27
HOMEを変えてるせいかなんか怒られた。試しにも一度叩いてみたら何故かうまくいった。
C:\Documents and Settings\cynipe>pik install --force ruby-1.9.2 INFO: Installing ruby-1.9.2-p136 INFO: Removing D:\home\cynipe\.pik\rubies\ruby-1.9.2-p136 INFO: Downloading: http://rubyforge.org/frs/download.php/73723/ruby-1.9.2-p136- i386-mingw32.7z to: D:\home\cynipe\.pik\downloads\ruby-1.9.2-p136-i386-mingw32.7z INFO: Extracting: D:\home\cynipe\.pik\downloads\ruby-1.9.2-p136-i386-mingw32.7z to: D:\home\cynipe\.pik\rubies\ruby-1.9.2-p136 Extraction complete. INFO: Adding: [ruby-]1.9.2[-p136] Located at: D:\home\cynipe\.pik\rubies\ruby-1.9.2-p136\bin
気をとりなおしてデフォルトをruby-1.9.2にする。
C:\Documents and Settings\cynipe>pik default ruby-1.9.2 C:\Documents and Settings\cynipe>ruby -v ruby 1.9.2p136 (2010-12-25) [i386-mingw32]
うまくいった。わーい。
Bundlerをインストール
gemを管理する為にもBundlerをインストールする。
C:\Documents and Settings\cynipe>gem install bundler Successfully installed bundler-1.0.13 1 gem installed Installing ri documentation for bundler-1.0.13... Installing RDoc documentation for bundler-1.0.13...
動くか確認。
C:\Documents and Settings\cynipe>bundle --version Bundler version 1.0.13
わーいわーい。
JenkinsのJobを一括で有効/無効にするスクリプト
1個ずつ有効/無効の切り替えをするのがだるいので書いてみた。
hashに対して動的にアクセスするのでintern使ってるけどこれってそもそもお行儀のいいやり方なのかしら?あとeachのときにdo〜endとするのと{}で書くのってどちらが一般的なのかしら?
#mongotokyoのUSTに触発されてとりあえず動くとこまでやってみた
この資料の発表を見てみたんだけど、プロトタイプの作成には凄く良さそうだなぁと。REST-APIを利用して動くクライアント側の実装者がサーバサイドMock作るにはサクサクっと出来そうで夢が広がる。使いこなしとかは考えず使ってみるのは良さそう。
て、訳でとりあえず動かすとこまでやってみました。
インストール & 起動!
$ brew install mongodb ==> Downloading http://fastdl.mongodb.org/osx/mongodb-osx-x86_64-1.8.1.tgz ######################################################################## 100.0% ==> Caveats If this is your first install, automatically load on login with: mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/1.8.1-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist If this is an upgrade and you already have the org.mongodb.mongod.plist loaded: launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist cp /usr/local/Cellar/mongodb/1.8.1-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist Or start it manually: mongod run --config /usr/local/Cellar/mongodb/1.8.1-x86_64/mongod.conf MongoDB 1.8+ includes a feature for Write Ahead Logging (Journaling), which has been enabled by default. This is not the default in production (Journaling is disabled); to disable journaling, use --nojournal. ==> Summary /usr/local/Cellar/mongodb/1.8.1-x86_64: 16 files, 93M, built in 2 seconds
Caveatsの指示にしたがって起動。
mongod run --config /usr/local/Cellar/mongodb/1.8.1-x86_64/mongod.conf
Rubyで触ってみる
とりあえずMongoDBのRubyチュートリアルを参考に動かすところまで。
ドライバのインストール
ドライバをgemでインストールする
$ gem install mongodb $ gem install bson_ext # なんかあるといいよ的な感じで言われたので入れる
で、使ってみる。ruby1.9.2でっす。
# -*- encoding: utf-8 -*- require 'rubygems' require 'mongo' conn = Mongo::Connection.new db = conn.db('local') coll = db['testCollection'] coll.insert({name:"cynipe", age:29}) coll.find.each{|row| puts row.inspect}
感想
簡単!!セットアップ〜記事書くまで含めて20分くらいでできちゃった!これからつかっていってみよーっと。
Mechanizeを使ってJenkinsPluginを自動でインストールスクリプトを書いてみた
プロジェクト毎にJenkinsを分けて使うポリシーでいるので、プロジェクトがポコポコと立ち上がると毎度同じ構成で作るのがめんどくなったので作ってみた。とりあえず間に合わせ程度なので全然アレな感じではあるのだけど、ひとまず実用には足りるかと。
Jenkinsの利用可能なプラグインページへからインストールしたいプラグインのチェックボックスのname属性を書いたファイルを作成すれば後は自動でインストールしてくれる感じ。スクリプトを叩き終わった後にJenkinsを再起動すればおっけー。name属性をぶち抜くのも作る予定ではあるけども、とりあえず。
画面遷移図作成ツールBlockdiagをインストールしてみた
確かTwitterで見かけてビビッと来たのと職場ですぐにでも使えそうだな〜ということで入れてみた。
Blockdiagって何?っていう方は以下参照。
- ドキュメント
- AppEngineで作られてるすぐ試せるやつ
インストール手順(Mac OSX Snow Leopard)
easy_install blockdiagしてみたんだけどなんかエラーで怒られてしまった。python環境はバンドルされてるやつそのままなので把握してる環境として作ってみるか〜ということで色々やってみたもののエラー。blockdiagの作者である @tk0miya さんに対策方法のブログを教えてもらい無事完了。まとめると↓な感じ。
- sudo brew install python
- sudo brew install distribute
- pipのインスコに必要らしい?
- sudo brew install pip
- pythonのパッケージマネージャ
- brew create --force freetype2
- brew install freetype2
- brew install libjpeg(3/22追記)
- sudo pip install pil
- sudo pip install blockdiag
これで快適Blockdiagライフ!!
第2回Jenkins勉強会で発表してきた
第2回Jenkins勉強会でJenkins+Maven活用術ってタイトルでMavenのことをしゃべってきました。
初めての発表でかなりgkbrしてましたが最後に @cactusman さんにこういうのが聞きたかったと言っていただけて嬉しかったです。ほんとはもっと突っ込んで話をしたかったりとか色々思ったのですが中々うまくまとめるのは難しいですね・・・。
個人的にはPlay!Frameworkの発表が凄く気になったのであとでしっかりスライド見させていただきたいところです。
稚拙ながら自分のスライドを以下に上げさせてもらいました。サンプルもgithubにその他のexampleプロジェクトとかと一緒にあげてみました。良かったら見てやってください。突っ込み歓迎です!!
https://github.com/cynipe/maven-examples/tree/master/profiled-resources-example
簡単に説明を。各環境毎に
- develop
- staging
- production
としてプロファイルを切ってあるので以下のように実行して確認することが出来ます。
Eclipseで確認したい場合
mvn eclipse:clean eclipse:eclipse -P<profile>
純粋にビルドしたい場合
mvn clean package -P<profile>
またJenkins上でビルドしてあげるとwarのMETA-INF/MANIFEST.MFにビルド情報が書き込まれるようになっています。
こういった形でつくったデフォルトのスタイルをMaven3からはarchetype作るときに$と{のエスケープがいらない - さいないぷは達人になりたいで触れている方法でarchetypeとして作っておくとPJ回す際に色々と社内デフォルトな構成を作れたりしていいんじゃないかと思います。
最後におまけですが、maven+mac or linuxな人はColorize Maven3 for zsh - さいないぷは達人になりたいとかやってみると少し幸せになれるかもしれません。*1
その他の皆様の発表は第二回Jenkins勉強会まとめwikiからたどれます。
http://wiki.jenkins-ci.org/pages/viewpage.action?pageId=54723198
しかし懇親会含め凄く楽しい勉強会でした!また機会あればビルド周りで色々話したいと思います!次回はもう少しまとめて話せるように・・・・。