2009-02-01から1ヶ月間の記事一覧

追記 (2009-03-01)

okkez さんに Kernel.__method__ を教えてもらった。 RUBY_VERSION # => "1.9.1" def foo __method__ # => :foo end def bar foo __method__ # => :bar end bar __method__ # => nil Ruby 1.8.7 でも、ちゃんと動く。

メソッドの中から自身のメソッド名を知る方法

Ruby で今実行中のメソッド名を知る - 趣味的にっき Ruby 1.8 の時は、こんな感じだった。 RUBY_VERSION # => "1.8.7" class Object def current_method caller.first.scan(/`(.*)'/).to_s end end def foo current_method # => "foo" end def bar foo curre…

WIN32OLE の例外は ASCII-8BIT

本格的に Ruby 1.9.1 に移行してみようと、仕事で使ってるユニットテストを動かしてみた。エンコード絡みのエラーが頻発。 Encoding::CompatibilityError: incompatible character encodings: Windows-31J and ASCII-8BIT もちろんスクリプトは CP932 で書い…

test/unit でテスト全体の setup と teardown

本格的に Ruby 1.9.1 に移行してみようと、仕事で使ってるユニットテストを動かしてみた。test/unit を素直に使うと、勝手にテストが実行される。*1これだと、テスト全体の前処理, 後処理を実装できない。 テスト全体の準備と後始末 Ruby1.8.x の頃は、 Test…

エンコーディングのつづき

ありがたいことに成瀬さんからコメントを頂いたので昨日の続き。 エンコーディング 結論から言うと、コメント頂いた通り、スクリプトを Windows-31J で書けば、何も迷うことはありません。環境変数 LANG が ja_JP.SJIS なのは間違ってるけど、Encoding.defau…

エンコーディング

Ruby 1.9.1 のエンコーディングをいろいろ試してみる。 #!/usr/local/bin/ruby19 # -*- coding: shift_jis; -*- RUBY_VERSION # => "1.9.1" ENV['LANG'] # => "ja_JP.SJIS" __ENCODING__ # => #<Encoding:Shift_JIS> Encoding.default_external # => #<Encoding:Windows-31J> Encoding.default_internal</encoding:windows-31j></encoding:shift_jis>…

ECHO の不思議

DOS

これも昔書いた「Unix ユーザのための DOS FAQ」まず簡単なバッチファイルを作る。 ECHO foo ECHO bar それを実行すると、 DOS> foo.bat DOS> ECHO foo foo DOS> ECHO bar bar DOS> _ いちいち実行するコマンドを表示してくれる。 プロンプトまで表示してく…

xmpfilter を実行するコマンドを Ruby 1.9.1 に変更したい

諸般の事情で今まで放置していたが、やっと職場の Cygwin 環境に Ruby 1.9.1 をインストールした。軟弱者なので --program-suffix=19 で作った。 $ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] $ ruby19 -v ruby 1.9.1p0 (2009-01-30 revi…

make の使い方

これも昔書いたもの。 make で何ができるのか? 実行モジュールを作るためのファイルの依存関係を定義。 タイムスタンプを比較して必要なものだけコンパイル。 一般的なコンパイル規則の提供。 コンパイル & インストール作業の抽象化。 make の魂 Unix の世…

プロンプトを出す。

ユーザに何か入力してもらうためにプロンプトを出したい。プロンプトは出力に混じらないように標準エラー出力に出す。 $ cat sample ... echo "Are you sure? " >&2 read ask case $ask in [Yy]) ... ;; ... $ ./sample Are you sure? _ echo にそのままプロ…

プロンプトの変更

DOS

コマンドプロンプト (いわゆる DOS 窓) を起動すると、プロンプト*1が現われてコマンドを受け付ける。 C:\Documents and Settings\higaki>_プロンプトにカレントディレクトリが表示されていて鬱陶しい。 変更したい。 プロンプトの変更 プロンプトは変数 pro…

ワイルドカード

普通はファイル名の指定に使うけど、case 文のパターンにも使える。 $ ls bar foo foobar food fool foot $ ls foo? # 1 文字にマッチ food fool foot $ ls foo* # 0 文字以上にマッチ foo foobar food fool foot $ ls foo[a-n] # 範囲内の 1 文字にマッチ f…

むかし書いたネタを放出

社内の勉強会で使った資料や、個人的なメモなど、公開できそうなものを小出しにしてゆきます。

プリプロセッサのための #

C

あるコードを見ていたら、こんなのが出てきた。 #if defined(XERCES_NO_NATIVE_BOOL) #ifndef bool typedef int bool; #endif #ifndef true #define true 1 #endif #ifndef false #define false 0 #endif #endif きしょくわる〜 # って 1 桁目じゃなくてもい…

VisualStudio のデバッグビルドではまった

あるライブラリを使おうとヘッダファイルを include したら、意味不明なエラーが出た。 (×) 1 error C2059: 構文エラー : '文字列' (×) 2 error C2091: 関数は関数を返せません。 (×) 3 error C2802: 静的なメンバ 'operator new' に仮引数リストがありませ…

iPod Touch は Palm の代わりになるか?

普通こういうタイトル付けると、結論は NG ですよね。 このエントリの結論も「代わりにはならない」です。普段 Palm Z22 と 初期の iPod Touch を持ち歩いているのですが、「ひょっとすると、ひとつにまとめられるのでは?」と思って 2 週間ほど試してみまし…

『プログラミング言語 Ruby』出版記念トークイベントに行ってきた

職場からめちゃくちゃ近いので、少し早めに行ってみたら、開場 15 分前には待ち行列ができていた。yhara 先生のトークイベントのときとは明らかに客層が違う。 序盤は、まつもとさんがこれまでの Ruby 本について説明。あんまり売れなかったらしい「Ruby デ…