2010年7月28日水曜日

IronRuby コマンドプロンプトで UTF-8を出力するには

[ruby-list:45331] Re: Windows コマンドプロンプトで UTF-8を出力するには
を参考にして。
# utf8ntest.rb
require 'iconv'
class StdoutHook
def write(str)
STDOUT.write Iconv.conv('shift-jis', 'utf-8', str.to_s)
end
$> = new
end
str = "utf8日本語"
p str
puts str
print str, "\r\n"
printf("utf8日本語は%d文字\r\n", str.split(//u).length)

C:\rubyapi\utf8ntest>ir -v
IronRuby 1.1.0.0 on .NET 4.0.30319.1

C:\rubyapi\utf8ntest>ir utf8ntest.rb
"utf8\346\227\245\346\234\254\350\252\236"
utf8日本語
utf8日本語
utf8日本語は7文字

-Kuのオプションを付けるとpでも表示される。
C:\rubyapi\utf8ntest>ir -Ku utf8ntest.rb
"utf8日本語"
utf8日本語
utf8日本語
utf8日本語は7文字

printfの行を修正して、エラーを出すと
C:\rubyapi\utf8ntest>ir utf8ntest.rb
utf8ntest.rb:12: Invalid character 'a' in expression
printf(utf8a?\a?¬ea?a? ̄%da??a-?\r\n", str.split(//u).length)
^
C:\rubyapi\utf8ntest>ir -Ku utf8ntest.rb
utf8ntest.rb:12: syntax error, unexpected `\'
printf(utf8日本語は%d文字\r\n", str.split(//u).length)


2010年7月25日日曜日

ruby1.9.1 ビルドしたときのメモ

参考にしたところ
Windowsで使うRubyを自分でビルドする方法
Visual C++2008でコンバイルするRuby1.9.1-p129
Ruby 1.9.1-p0 : VC++ 2008 Express Editionでビルド

準備
(i) Visual C++ 2008 Express Edition をインストールする。
Visual Studio Express Editons
Visual C++ 2008 webインストール(ダウンロード)
はじめての方のためのインストール方法紹介を参考に

(ii) gnuwin32 の bison と sed をインストールする。
Bison for Window
Requirementsのsetup programから bison-2.4.1-setup.exeをDLしてインストール
インストール先はC:\GnuWin32
Sed for Windows
Requirementsのsetup programからsed-4.2-1-setup.exeをDLしてインストール
インストール先はC:\GnuWin32

C:\GnuWin32\binのpathを通す

BisonをC:\Program Files\GnuWin32\bin\bison.exeにインストールしたらnmakeでエラーとなった
C:\src\ruby-1.9.1-p376\win32>nmake

bison -d -o y.tab.c ./../parse.y
m4: cannot open `Files\GnuWin32/share/bison': No such file or directory
m4: cannot open `C:\Program': No such file or directory
m4: cannot open `Files\GnuWin32/share/bison/m4sugar/m4sugar.m4': No such file or directory
http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=1435&range=1を参考に修正

ruby-1.9.1-p378.zipをC:\src\下にソースを展開

C:\Program Files\Microsoft Visual Studio 9.0\VC>set path=C:\Ruby\Ruby-186-p398-mingw32\bin;%path%
C:\Program Files\Microsoft Visual Studio 9.0\VC>ruby -v
ruby 1.8.6 (2010-02-04 patchlevel 398) [i386-mingw32]
C:\Program Files\Microsoft Visual Studio 9.0\VC>set path=%path%;C:\Ruby\Ruby-186-p398-mingw32\bin
C:\Program Files\Microsoft Visual Studio 9.0\VC>vcvars32.bat
C:\Program Files\Microsoft Visual Studio 9.0\VC>cd c:\src\ruby-1.9.1-p378\win32
C:\src\ruby-1.9.1-p378\win32>configure.bat --prefix=C:\Ruby\ruby-1.9.1-p378-mswin32-90
C:\src\ruby-1.9.1-p378\win32>nmake
C:\src\ruby-1.9.1-p378\win32>nmake /n install
C:\src\ruby-1.9.1-p378\win32>nmake install

C:\src\ruby-1.9.1-p378\win32>c:\ruby\ruby-1.9.1-p378-mswin32-90\bin\ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32_90]


(iii) zlibをインストール
http://www.zlib.net/ からzlib123をDLしてc:\src\下に展開

vcのコンソールから
Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:\Program Files\Microsoft Visual Studio 9.0\VC>path=C:\Ruby\Ruby-186-p398-mingw32\bin;%path%
C:\Program Files\Microsoft Visual Studio 9.0\VC>vcvars32.bat

C:\Program Files\Microsoft Visual Studio 9.0\VC>cd c:\src\zlib123
C:\src\zlib123>nmake -f win32\Makefile.msc

C:\src\zlib123>mt -manifest zlib1.dll.manifest -outputresource:zlib1.dll;2
C:\src\zlib123>copy zlib1.dll c:\ruby\ruby-1.9.1-p378-mswin32-90\bin

C:\src\zlib123>cd cd c:\src\ruby-1.9.1-p378\ext\zlib

C:\src\ruby-1.9.1-p378\ext\zlib>c:\ruby\ruby-1.9.1-p378-mswin32-90\bin\ruby.exe extconf.rb --with-zlib-include=c:\src\zlib123 --with-zlib-lib=c:\src\zlib123
checking for deflateReset() in z.lib... no
checking for deflateReset() in libz.lib... no
checking for deflateReset() in zlib1.lib... no
checking for deflateReset() in zlib.lib... yes
checking for zlib.h... yes
checking for kind of operating system... Win32
creating Makefile

C:\src\ruby-1.9.1-p378\ext\zlib>nmake

C:\src\ruby-1.9.1-p378\ext\zlib>nmake install

Microsoft(R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

install -c -p -m 0755 zlib.so c:\ruby\ruby-1.9.1-p378-mswin32-90\lib\ruby\site_ruby\1.9.1\i386-msvcr90

C:\src\ruby-1.9.1-p378\ext\zlib>

コマンドプロンプトから
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>path=c:\ruby\ruby-1.9.1-p378-mswin32-90\bin;%path%
C:\Documents and Settings\Administrator>ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32_90]
C:\Documents and Settings\Administrator>gem -v
1.3.1

C:\Documents and Settings\Administrator>gem update --system
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.6
省略
RubyGems installed the following executables:
c:/Ruby/ruby-1.9.1-p378-mswin32-90/bin/gem


C:\Documents and Settings\Administrator>gem -v
1.3.6