moshは遅かった

昨今騒がれているmoshですが、試しに開発マシンにmosh経由でサーバにアクセスしてVimを起動して作業してると、とてもじゃないが使い物にならないくらいレンダリングが追いついていない。普通に起動してるだけなんだけどなぁ。

jeweler + gitflowでrubygemsの開発を快適に

gemを開発しているとrubygemsに登録したりと何かと細かい作業が発生するのでjewelerに任せているのですが、最近gitflowを使って開発していることから、その作業の流れを紹介します。bugfixやfeaturesの開発はgitflowに任せて開発します。僕は基本的にgithub…

The Mega March 2012 Ruby and Rails News and Release Roundup のメモ

以前は頻繁に更新があったRuby Insideですが最近めっきり更新されてなくて、収束しちゃうんじゃないかと心配していました。先日久しぶりの更新があり、3月のRuby界、Rails界についてのまとめ記事があがってたので、気になった記事をメモしています。 トップ…

Xcode4.3, Mac OS X Lionの環境でhomebrewからautoconf、automakeをインストールする

mac

職場が代わり、Macが支給されてLionに初めて触れたが、しばらく触れていない間に開発環境が変わっていたりして、たとえばXcode4.3でgccやautoconf、automakeといったビルドツールがごっそりインストールされなくなったので手動でhomebrew経由でインストール…

とりあえずvundleいれてプラギン整理した

vim

めっきりVimへの情熱が失われつつあるのでプラギンの整理から始めることにした。 vundleの導入 楽。:BundleInstallでインストールできる様は時代を感じた。 colorschemeの変更 ずっとkoehlerだったけどmolokaiがいいみたいな話をちらほら見かけたので変えて…

Jenkinsでバッチ管理するのが便利そう

バッチを管理したくて、けど、そんなに高機能なものは必要なくて、バッチ間の依存関係を定義できればいい。 最初、GearmanやRabbitMQ等のジョブキューサーバを用意してそれ経由で管理しようと思ったけど依存関係を定義して、決まった時間にキックしたのち成…

listchars=trail:$してたら気持ち悪いのでbuffer保存時に行末スペースを削除するようにした

vim

行末スペースはコードをぐんにょりさせる原因の一つなので注意を促す意味で表示させるようにしたけど、 list listchars=trail:$ コード書いてたり文章書いていても常に表示されるようになって、すごい気持ち悪くなったので、buffer保存時に行末スペースを削…

RSpecで終了ステータスをテストする

RSpecでアプリケーションの終了ステータスをテストしたい時があります。Rubyアプリケーションで、exit(Kernel::exit, Process::exit)が呼ばれるとSystemExit例外が発生します。riからexitの挙動のコードを抜粋すると、 begin exit puts "never get here" res…

About Face第3版読んでます

漠然とですが以前から作ったものに対してユーザの反応を気にするようになってきて、そういったことを勉強できる本はないものかと思っていました。この本は、インタラクションデザインを提唱して、事例を交えつつ考察してて面白いです。一度流し読みで全体に…

WindowsからVirtualbox上のUbuntuで動作するプロセスにポートフォワードする

MacBook(今は亡き黒ポリカーボネート)を24inchモニタにつなぐと世界が止まるので、泣く泣く自宅のマシンで最強のスペックを誇るThinkpad X201sで作業しています。 なんとかしてLinux環境を手に入れたくてVirtualBox(Ubuntu)+putty+ssh(ポートフォワード)とい…

lambda の代わりに expect を使う

RSpecでたとえば例外のテストコードを書くとして、 it "should raise CommandError in unknown command" do lambda { LocalPort.command.find("foo") }.should raise_error( LocalPort::CommandError, "foo" ) end このlambda {...}.shouldは読み手からした…

最近の我が家の蔵書事情

最近、自分が所蔵する本をすぐに読めない状況に少しフラストレーションがたまってきている。ここひと月の間では、洋書はすべて、和書も何冊か電子書籍で購入していて、電車に乗っている間はiPhoneで読んだり、コード書いてる時にはマシンでも素早く検索した…

Railsで作っているFacebookアプリをRails3.1に更新する

HerokuでFacebookアプリを運用しており、当初はRails3.0.9ベースで作り始めたが、Railsが進化するスピードが速いので常にEdgeの状況を追いかけていたいので版をあげることにした。 基本はRailsCastsで紹介されていることをベースに修正していけばよいがいく…

Seleniumの自動テストをCI環境(Jenkins)で快適に実施する

Ruby Advent Calendar 2011 16日目の記事です。 Webアプリの画面テストにはやはりその利便性からSeleniumを使うことが多いだろう。 ちょっとした変更でも問題ないと高をくくっていても、リリース後にリンクやボタンをクリックした途端に500や404が発生した日…

いつの間にかhg recordのハンクが最少単位になっていた

いつの間にか(手元のMercurial1.9ではすでにそうなっていた)hg recordでコミットできるハンクが最少単位になった。 最少単位っていうのは、連続して変更された行をまとめて一つのハンクとしている。 たとえば、次のコードを、 class Hoge def initialize(a, …

KDE Mover-Sizerで画面のどこをつかんでもドラッグできる

水銀先輩から教えてもらった。 Altキーを押しながらだと、画面のどこを掴んでもドラッグできる便利ツール。 KDE Moving and Resising for Windows

ClojureをReal Worldで使うためにMavenと連携する

この記事は、Clojure Advent Calendar 2011の2日目の記事です。 Clojureを導入するには Clojureをプロジェクトで使いたい、という現場の要望は結構多いかと思う。 安心してほしい。 フロントエンドにいきなりClojureを使うのはさすがに通りにくいと思うが、 …

Mercurialのチェンジセットを指定するrevsetsについて

この記事は、Mercurial Advent Calendar 2011の2日目の記事です。 revsetsとは? 築いてきた歴史から特定のチェンジセットを効率よく検索するための、Mercurialのサブセット言語だ。 Mercurialでは、 $ hg log -r 1000のlogコマンドように'-r'(--revision)オ…

Tokyo.clj#15

Tokyo.clj#15に参加してきた。 Twitter社がtweetをリアルタイムに処理するために使ってるstormがClojureから書けると知って前から気になっていたので、ドキュメントやソースコードを読んだり、サンプルを動かしたりした。 以下はstormのTutorialをざっと要約…

PryをRailsコンソールで使うには

Pryという新しいREPLツールがとっても便利だ。 詳しい使い方は、Wikiを読めばだいたいわかる。 Railsコンソールでもこの便利なPryを使うには、Using Pry instead of IRB for Rails' consoleで紹介されているように、config/initializers/pry.rbに次のよう に…

fastthreadがthread.rbよりどれだけ高速なのか

最近MacBookにPassengerの環境を作ろうとして、gem経由でインストールするとfastthreadというgemがインストールされたので、気になったのでなんだろうとコードを読んでみた。 どうやら標準添付ライブラリ(thread.rb)で提供されているQueueやSizedQueueをその…

Mercurialで築いたコミットを並び替える

DVCS(GitやMercurialなど)の利点は、コードを書き散らかしたあとにとりあえずコミットして、あとから論理的な歴史になるようにコミットを並び変えたり、コミットをまとめたりできることだ。 Mercurialでは、これらの歴史の改変はMQ拡張を使って実現できる。 …

Mercurialをソースコードからインストールする

基本的にterminal上で使うアプリケーション(エディタ、言語処理系、細かなツール等)は、ソースコードからビルドして使うようにしている。 複数の版を使えるようにしたいのもあるし、なによりビルドすることが好きだからだ。 Mercurialをビルドする前に、docu…

ruby-msyql 2.9.4を使用しているとprotocol errorが発生する

今のプロジェクトでは、データベースのmigrateツールを自作しており、MySQLとのインタフェースにはruby-mysqlを使用している。 しかし、最近、migrateツールを起動すると途中でprotocol errorが発生するようになった。 追いかけていくと、特定のSQL文を発行…

Vimでflymake時にlibをPERL5LIBに追加するperl5lib.vimを作った

Perlを書いていてsyntax check(perl -c)するときにuse句も実行され、@INCや$PERL5LIBパスからそのライブラリを探そうとする。 一般的なPerlプログラムの構成だと、プロジェクトの直下にlibディレクトリがあり、lib以下に自分で作成するモジュールやら、他の…

pathogenの弊害

vim

pathogen.vimを使ってpluginを管理するときに、.vimrcの冒頭で初期化する関数をコールする。 call pathogen#runtime_append_all_bundles() call pathogen#helptags() しかし、bundle以下にftdetectプラギンが存在する場合そのプラギンがロードされない弊害が…

改行コードを実行時に変更するための環境変数PerlIO

やんごとなき理由から、とあるスクリプトの出力結果の改行コードをCRLFにしなければならないことがある。 これは、環境変数であるPerlIOを設定することで実行時に変更できる。 次のように実行すると、改行コードがLFのものをCRLFで出力できる。 $ env PERLIO…

Mercurialでdiffしたときに行を折り返して表示する

.hgrcのpagerでlessのオプションに'-r'を加えるだけでよい。 [pager] pager = LESS='FSRX' less -r と、最初はこれで大丈夫だと思ったのだけど、表示が乱れてしまうので、 pager = LESS=-R less こっちの設定のほうがうまくいく。

ujihisa.vimに参加してきました

uhihisaさんの帰国に合わせてVimmer達が集うためにujihisa.vimが開催されたので参加してきました。 shadow.vim kills your troublesome things by @ujm たとえば、ujihisa.jsというモジュールをCoffeeScriptで作ろうとしているときに、普通ならujihisa.coffe…

Mercurialリポジトリでリポジトリのホームに戻るzsh関数を作った

id:hitode909さんが作った、Gitのリポジトリのトップレベルにcdするコマンドのコマンドが便利だったので、Mercurialでも同じようなzsh関数を作成してみた。 function hu() { local cdup=`hg showconfig bundle.mainreporoot` if [ $# = 1 ]; then cdup+="/$1…