2011-01-01から1年間の記事一覧

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…

256色対応screen上でVimを使用する

VimをCUIで使うときにもcolorschemeが256色のものを使用したい。 ターミナルが256色対応しており、GUIを有効にしてビルドしたVimを用いれば、Hack #64: 256色ターミナルでVimを使用するにあるように、CSApprox.vimプラグインを使うとほぼgVimと同様な綺麗なc…

ThinkPadのトラックポイントによるスクロールがいろんなアプリケーションで効かなくなる対処法

筆者がThinkPadを使う理由の95%くらいはトラックポイントのヒューマンインタフェースの完成度の高さだ。 ホームポジションから手を離すことなく、正確にあらゆる操作を実現できる。 しかし、Windowsのアプリケーションによっては、トラックポイントのデーモ…

Mecurialのブランチ名を変更する

MercurialはGitと異なり一度作成したブランチを削除できない仕様だ。そのため、ブランチ名を変更することが基本的に許されていない。 だが、MQ拡張を使うとブランチ名を変更できる。 # pushしていなくて、他のブランチからの干渉(マージ等)がない場合に限る …

MercurialのPager Extensionを設定して快適にコミットログを追いかける

Git使いであれば、diffやlogの差分はデフォルトでpagerが設定されており、コミットログを追いかけやすい設定になっていることはご存知だろう。 Mercurialでは、diffやlogの出力は、pager経由ではなくすべて出力される設定になっている。 このままだとlogを追…

errormarker.vimがCUI版のVimだと画面が乱れるのでパッチを当てた

vim

Emacs使い達はflymake.elというとっても便利なものを使ってflymake(syntax check, compileを人間がせずに裏でエディタがこっそり実行する)して快適にコードを書いている。 VimにもQuickFixという機能がもともと備わっており、flymakeできる。QuickFixはコマ…

changelog.vimでエントリを追加できない件について

vim

Vim7.3がメジャーリリースされて半年が経過している。だが、いまだにchangelog.vimが欠陥を抱えていることは、周知されているのだろうか。それとも誰もchangelog.vimを使わないのだろうか。 僕はVimプラグインの中でないと生きていけないくらいにchangelog.v…