UnityScriptの辞書ファイルを生成するscript書いた

Unity付属でついてくるMonoDevelopが使いにくすぎて生産性が1/10くらいになってしまうので、Vimでscript書こう思い辞書ファイルを生成するscriptを書いた。https://github.com/yoppi/unity-script-dictionalization生成したファイルを.vimrcとかで読むように…

Redisを使うSessionStoreライブラリ書いた

Redis使いたかったというのもあるけど、memcachedより性能が良いの(http://antirez.com/post/redis-memcached-benchmark.html/)でその試験というのも兼ねて。https://github.com/yoppi/redis-session-storeすでに他の人が書いてたのだけど、Rails3で動かなか…

アンダースコアを変数名に使うことについて

同僚がアンダースコアを変数名として使って、他の人に直されてコミットログで指摘されたと愚痴をこぼしていたので、他の人はどうだろうとふと思った。 僕がRuby語を書いてる時、変数名にアンダースコアを使うときは Hash等、Enumerableなものでブロック内で…

fluentd.vim書いた

keywordだらけだけど、とりあえず色がついてるのとついてないので全然設定ファイルを書く気力が違ってくるので書いた。 fluentd.vim

直近設定したalias

zsh

alias p="pry" alias s="rspec" alias dbm="rake db:migrate" alias dbs="rake db:migrate:status" alias gm="rails g migration" function dbu() { rake db:migrate:up VERSION=$1 } function dbd() { rake db:migrate:down VERSION=$1 } alias t="tmux" al…

fluentd meetup in Japan #2

fluentdを仕事で使い始めて1週間くらいしかたってないので、より応用した使い方とか知りたくて参加してきた。 以下、雑感。 v11ではfilter記法が入って柔軟にかけるようになるらしい Cool.ioやめて単純なThreadに戻るという話だけど、もうちょっといい方法あ…

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…

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…

Event: Commencement

I won a master's degree! yay!!

\paragraphをsubsubsubsectionに拡張する

文章をネストしすぎるのは良くない傾向で,4階層くらいになると文章の構成を検討すべきなのですが,どうしてもsubsubsubsectionが欲しいときがあります.残念ながらLaTeXには\subsubsectionコマンドまでしか組み込まれていません.\subsubsectionよりも下の…

Atteneded VimM#4

vim

I attended the VimM#4 that is a Vim study meeting.There are nealy 50 participants on Monday's weeknight, as if like a secret organization:) Bye the way, workshops in Tokyo often are held at Dai building. I think that reason is Ruby's power…

Haskell勉強会に参加しました

3/20にjus主催で開催された「Haskellによる関数プログラミング」に参加しました.秋葉原のダイビルに行ったのはVimM以来ですね. 勉強会メモ Haskellは倍精度に特化してチューニングしているので単精度より高速 作ろうとするものの型をまず書くことが重要 高…

メールにおける斬新なコメントの表現

メールの文化では,多くのスクリプト言語で'#'はコメントアウトとして定義されていることから(私自身がそう思っているだけなので本来の由来とは違うかもしれません),'#'を先頭に付けた行は,前後の文脈の補足として使われていると思います. 本文... # ほげ…

Vimいぢり

Vim

直前の作業していたタブページに戻る戻らないの話ですが,window.c等を覗いてみたところ,少し手を加えれば:tabmoveした場合でも期待する挙動が可能かなと思い,またVim自体をいぢってみたくて試してみました. 単にグローバル変数をくっつけて,:tabprework…

一つ前のタブに戻るKey mapping

Vim

一つ前のウィンドウに戻るにはpで可能でj,k,h,l等を気にすることなく移動できるので便利なのですが,タブに対しては該当する機能がありません. そこで次のようなKey mappingを定義しました.タブに関するというモディファイアはkanaさんのvimrcを参考にしま…

2009年の抱負

Rubyを極める Rubyを触り始めてそこそこ(1年くらい)経過するが,日々のルーチンワークやファイル整理等のスクリプトを作るくらいにとどまっている. なかなかアイデアが浮かばないので,RHGをしっかりと読んでみたいと思う.たまに気になったところは読んだ…