ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

Minnu's filer2を入れてみる

Linuxで作業する時、コマンドを一々叩き込むのは面倒なので、FDCloneを使っている訳。
で、他に何か面白いものないかな?と思っていたら、あった。


という訳で、Minnu's filer2 をインスコしてみるテスト。

the Minnu's Filer2
http://www.geocities.jp/daisuke530221jp/

どうも Ruby が必要らしい。(いらんのかな?)


まず、Cygwinコンパイルできるかテスト。
…ダメっぽいですな。2chのスレでも作者さん?がダメとか言っているのでダメですわ。


次、Linux。RH9でテスト。
まぁ、その前に、RH9に Ruby最新版(1.8.2)を入れる事にした。

オブジェクト指向言語Ruby
http://www.ruby-lang.org/ja/

から、
ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.2.tar.gz
をDLし、

Ruby インストールガイド - UNIX全般
http://www.ruby-lang.org/ja/install.cgi?cmd=view;name=UNIX%C1%B4%C8%CC

を参考にインストール。
何かうまくいったっぽい。

[root@wacky ruby-1.8.2]# ruby -v
ruby 1.8.2 (2004-12-25) [i686-linux]

次、オフィシャルサイトから http://www.geocities.jp/daisuke530221jp/mfiler2.tgz をDL。
index.html を見る限り、1.27 っぽいな。

$ make
...
g++ -c main.cpp -I./ruby-1.8.2
main.cpp: function 内の `bool match()':
main.cpp:472: `tolower' undeclared (first use this function)
main.cpp:472: (未宣言変数については、それが関数内で最初に現われた時だけ報告されます。)
make: *** [bin/main.o] エラー 1

えっと、main.cppに、"#include "を付加して再make。
とりあえず、ビルドできた。


…う〜む、FDとコマンド操作体系が かなり違うんですなぁ。

DamageControl を入れてみよう

ぼ〜っとネットを回っていたら、DamegeControl ってソフトを知る。

DamageControl_ja Wiki - FrontPage
http://hiki.prebyte.jp/DamageControl/
DamageControl? - Home
http://damagecontrol.codehaus.org/

コードをコミットしたら、リアルタイムでビルドして結果を開発者に通知するツールって事か?


まぁ、よくわからんのでインスコしてみよう。

CI / vimrc diary
http://vimrc.hp.infoseek.co.jp/diary/cat_ci.html

を参考に、Cygwinに突っ込んでみよう。

現在のCygwinには、Rubyの最新版があるので、RubyGem(http://docs.rubygems.org/)から、rubygems-0.8.11.tgz をDLする。

$ ruby -v
ruby 1.8.2 (2004-12-25) [i386-cygwin]
$ tar xzvf rubygems-0.8.11.tgz
...
$ cd rubygems-0.8.11
$ ls
ChangeLog  Releases  doc/       lib/             redist/   test/
README     TODO      examples/  pkgs/            scripts/
Rakefile   bin/      gemspecs/  post-install.rb  setup.rb
$ ruby setup.rb
---> bin
<--- bin
---> lib
---> lib/rubygems
<--- lib/rubygems
<--- lib
---> bin
adjusting shebang: gem_mirror
<--- bin
---> lib
---> lib/rubygems
<--- lib/rubygems
<--- lib
rm -f InstalledFiles
---> bin
mkdir -p /usr/bin/
install gem /usr/bin/
install gemwhich /usr/bin/
install gem_mirror /usr/bin/
install gem_server /usr/bin/
install generate_yaml_index.rb /usr/bin/
install update_rubygems /usr/bin/
<--- bin
---> lib
mkdir -p /usr/lib/ruby/site_ruby/1.8/
install gemconfigure.rb /usr/lib/ruby/site_ruby/1.8/
install rubygems.rb /usr/lib/ruby/site_ruby/1.8/
install ubygems.rb /usr/lib/ruby/site_ruby/1.8/
---> lib/rubygems
mkdir -p /usr/lib/ruby/site_ruby/1.8/rubygems
install builder.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install cmd_manager.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install command.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install config_file.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install custom_require.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install dependency_list.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install deployment.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install doc_manager.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install format.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install gem_commands.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install gem_openssl.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install gem_runner.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install installer.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install loadpath_manager.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install old_format.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install open-uri.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install package.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install remote_installer.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install rubygems_version.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install security.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install source_index.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install specification.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install timer.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install user_interaction.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install validator.rb /usr/lib/ruby/site_ruby/1.8/rubygems
install version.rb /usr/lib/ruby/site_ruby/1.8/rubygems
<--- lib/rubygems
<--- lib

As of RubyGems 0.8.0, library stubs are no longer needed.
Searching $LOAD_PATH for stubs to optionally delete (may take a while)...
...done.
No library stubs found.

  Successfully built RubyGem
  Name: sources
  Version: 0.0.1
  File: sources-0.0.1.gem

何か、あっけなく入りましたな。
…まぁ、いいや。ってんで、DamageControl を入れてみる。

$ gem install damagecontrol
Attempting local installation of 'damagecontrol'
Local gem file not found: damagecontrol*.gem
Attempting remote installation of 'damagecontrol'
Updating Gem source index for: http://gems.rubyforge.org
Install required dependency rscm? [Yn]  y
Install required dependency rails? [Yn]  y
Install required dependency rake? [Yn]  y
Install required dependency activesupport? [Yn]  y
Install required dependency activerecord? [Yn]  y
Install required dependency actionpack? [Yn]  y
Install required dependency actionmailer? [Yn]  y
Install required dependency actionwebservice? [Yn]  y
Install required dependency log4r? [Yn]  y
Install required dependency needle? [Yn]  y
Install required dependency jabber4r? [Yn]  y
Install required dependency ruby-growl? [Yn]  y
Successfully installed damagecontrol-0.5.0.1404
Successfully installed rscm-0.3.0
Successfully installed rails-0.13.1
Successfully installed rake-0.5.4
Successfully installed activesupport-1.1.1
Successfully installed activerecord-1.11.1
Successfully installed actionpack-1.9.1
Successfully installed actionmailer-1.0.1
Successfully installed actionwebservice-0.8.1
Successfully installed log4r-1.0.5
Successfully installed needle-1.2.0
Successfully installed jabber4r-0.7.0
Successfully installed ruby-growl-1.0.0
Installing RDoc documentation for damagecontrol-0.5.0.1404...
Installing RDoc documentation for rscm-0.3.0...
Installing RDoc documentation for rake-0.5.4...
Installing RDoc documentation for activesupport-1.1.1...
Installing RDoc documentation for activerecord-1.11.1...
Installing RDoc documentation for actionpack-1.9.1...
Installing RDoc documentation for actionmailer-1.0.1...
Installing RDoc documentation for actionwebservice-0.8.1...
Installing RDoc documentation for log4r-1.0.5...

src/log4r/base.rb:2:7: Unrecognized directive 'nodoc'

src/log4r/config.rb:4:0: Unrecognized directive 'nodoc'

src/log4r/lib/drbloader.rb:2:6: Unrecognized directive 'nodoc'

src/log4r/lib/xmlloader.rb:2:6: Unrecognized directive 'nodoc'

src/log4r/logevent.rb:2:6: Unrecognized directive 'nodoc'

src/log4r/loggerfactory.rb:4:0: Unrecognized directive 'nodoc'

src/log4r/outputter/consoleoutputters.rb:2:7: Unrecognized directive 'nodoc'

src/log4r/outputter/fileoutputter.rb:4:0: Unrecognized directive 'nodoc'

src/log4r/outputter/iooutputter.rb:2:7: Unrecognized directive 'nodoc'

src/log4r/outputter/outputterfactory.rb:4:0: Unrecognized directive 'nodoc'

src/log4r/outputter/remoteoutputter.rb:2:7: Unrecognized directive 'nodoc'

src/log4r/outputter/rollingfileoutputter.rb:5:0: Unrecognized directive 'nodoc'

src/log4r/outputter/staticoutputter.rb:2:6: Unrecognized directive 'nodoc'

src/log4r/repository.rb:4:0: Unrecognized directive 'nodoc'

src/log4r/staticlogger.rb:2:6: Unrecognized directive 'nodoc'
Installing RDoc documentation for needle-1.2.0...
Installing RDoc documentation for jabber4r-0.7.0...
Installing RDoc documentation for ruby-growl-1.0.0...

PerlCPAN並みの簡単さですな。
という訳で、動かしてみる。

$ nohup damagecontrol &
[1] 204
$ nohup: appending output to `nohup.out'
[1]+  Exit 1                  nohup damagecontrol
$ damagecontrol-webrick -d
/usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm/path_converter.rb:5: uninitializ
ed constant RSCM (NameError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re__'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re'
        from /usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm.rb:2
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re__'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:182:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:181:in `each'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:181:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:167:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:166:in `each'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:166:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:37:in `require_gem_with_opt
ions'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:31:in `require_gem'
        from /usr/bin/damagecontrol-webrick:17

…あれぇ?
まぁ、多分、何も設定してないせいだろうなぁ。

DamageControl Developer Guide |
4.1 uninitialized constant Project (NameError)
http://hieraki.lavalamp.ca/read/chapter/23#page37

あった、あった。
やっぱ、何か設定せんとNGっぽいですな。


暫くぐぐるってたら、どうもRSCM って奴の設定をしなければNGだって事が、何となくわかってきた。

RSCM - Ruby Source Control Management API
http://rscm.rubyforge.org/

何が悪いのかなぁ?と思って、 http://rscm.rubyforge.org/files/README.html のサンプルコードを実施してみる。

  require 'rscm'

  scm = RSCM::Subversion.new("svn://some.server/some/path/trunk", "trunk")

  scm.checkout("mycheckout")
  changesets = scm.changesets("mycheckout", Time.utc(2004, 11, 10, 12, 34, 22))
  changesets.each do |changeset|
    puts changeset
  end

実行。

$ ruby test.rb
test.rb:3:in `require': No such file to load -- rscm (LoadError)
        from test.rb:3

ダメじゃん。
…何か、rscm へのrequireがうまくいってない気がしてきた。

$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/i386-cygwin
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i386-cygwin
.

暫くぐぐるってたら、"require 'rubygems'が要る気がしてきた。

#!/bin/env ruby

require 'rubygems'
require 'rscm'

再実行。

$ ruby test.rb
/usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm/path_converter.rb:5: uninitializ
ed constant RSCM (NameError)
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re__'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re'
        from /usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm.rb:2
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re__'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `requi
re'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:182:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:181:in `each'
        from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:181:in `activate'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:26:in `requi
re'
        from test.rb:4

ふむ、requireは うまく行くようになった。
ただ、RSCMがNGって状況は変化なし。


も〜、書き換えちゃう。

/usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm/path_convert.rb:
#WINDOWS = WIN32 || CYGWIN
↓
WINDOWS = WIN32

とすると、

$ ruby test.rb
/usr/lib/ruby/1.8/fileutils.rb:841:in `fu_list': undefined method `to_str' for n
il:NilClass (NoMethodError)
        from /usr/lib/ruby/1.8/fileutils.rb:841:in `map'
        from /usr/lib/ruby/1.8/fileutils.rb:841:in `fu_list'
        from /usr/lib/ruby/1.8/fileutils.rb:173:in `mkdir_p'
        from /usr/lib/ruby/gems/1.8/gems/rscm-0.3.0/lib/rscm/scm/subversion.rb:5
3:in `checkout'
        from test.rb:8

と変換した。ふむ。
後、少しかな?

IPythonを使う

ネットを、ぼ〜っと眺めていると、以下のネタがあり、

Rubyist Magazine - Rubyist のための他言語探訪 【第 1 回】 Python
http://jp.rubyist.net/magazine/?0008-Legwork

で、Python関係の方のトラックバックで、IPython がいいよってネタ振りがあった。
Python for Cygwinに添付されているIDLEが X Window 上でないと動かないのと、コード補完してくれないので むぅと思っていたので、インストールしてみる事にした。

オフィシャルは、↓ここ。

IPython - An enhanced Interactive Python
http://ipython.scipy.org/

何ぞ、readline も必要っぽいので、それもDLしてくる。
(後、PyWin32とCTypesもね。両方共、前回入れておいたので、今回は readlineだけ入れた)

Windows instructions
http://ipython.scipy.org/doc/manual/node2.html#sub:Under-Windows
SourceForge.net: Project Info - UNC Python Tools
http://sourceforge.net/projects/uncpythontools

IPython for Windows

まず、Python for Windows版からね。

$ python -V
Python 2.3.4

以下のファイルを次々実行。

  • readline-1.12.win32.exe
  • ipython-0.6.15.win32.exe

インストールすると、WindowsのStartメニューにIPythonが追加された。
実行すると、↓こんな感じ。おぉ!

Python 2.3.4 (#53, Sep 20 2004, 11:44:16) [MSC v.1200 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.

IPython 0.6.15 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
%magic  -> Information about IPython's 'magic' % functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.

In [1]:

適当にモジュール名とか突っ込んで、"."を入れて TAB キーを押すと、補完してくれるよ!

In [3]: sys.
sys.__displayhook__       sys.exc_info              sys.modules
sys.__doc__               sys.exc_type              sys.path
sys.__excepthook__        sys.excepthook            sys.path_hooks
sys.__name__              sys.exec_prefix           sys.path_importer_cache
sys.__stderr__            sys.executable            sys.platform
sys.__stdin__             sys.exit                  sys.prefix
sys.__stdout__            sys.exitfunc              sys.setcheckinterval
sys._getframe             sys.getcheckinterval      sys.setprofile
sys.api_version           sys.getdefaultencoding    sys.setrecursionlimit
sys.argv                  sys.getfilesystemencoding sys.settrace
sys.builtin_module_names  sys.getrecursionlimit     sys.stderr
sys.byteorder             sys.getrefcount           sys.stdin
sys.call_tracing          sys.getwindowsversion     sys.stdout
sys.callstats             sys.hexversion            sys.version
sys.copyright             sys.ipcompleter           sys.version_info
sys.displayhook           sys.maxint                sys.warnoptions
sys.dllhandle             sys.maxunicode            sys.winver
sys.exc_clear             sys.meta_path             sys.__class__

IPython for Cygwin

次は、IPython for Cygwin版を入れよう。

以下のファイルをDLしておく。

  • ipython-0.6.15.tar.gz
  • readline-1.12.zip

で、Cygwinプロンプトに入って、解凍→インスコ

$ python -V
Python 2.4.1

$ unzip readline-1.12.zip
Archive:  readline-1.12.zip
  inflating: readline-1.12/PKG-INFO
  inflating: readline-1.12/setup.py
  inflating: readline-1.12/readline/Console.py
  inflating: readline-1.12/readline/keysyms.py
  inflating: readline-1.12/readline/PyReadline.py
  inflating: readline-1.12/readline/__init__.py
$ cd readline-1.12
$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/readline
copying readline/Console.py -> build/lib/readline
copying readline/keysyms.py -> build/lib/readline
copying readline/PyReadline.py -> build/lib/readline
copying readline/__init__.py -> build/lib/readline
running install_lib
creating /usr/lib/python2.4/site-packages/readline
copying build/lib/readline/Console.py -> /usr/lib/python2.4/site-packages/readli
ne
copying build/lib/readline/keysyms.py -> /usr/lib/python2.4/site-packages/readli
ne
copying build/lib/readline/PyReadline.py -> /usr/lib/python2.4/site-packages/rea
dline
copying build/lib/readline/__init__.py -> /usr/lib/python2.4/site-packages/readl
ine
byte-compiling /usr/lib/python2.4/site-packages/readline/Console.py to Console.p
yc
byte-compiling /usr/lib/python2.4/site-packages/readline/keysyms.py to keysyms.p
yc
byte-compiling /usr/lib/python2.4/site-packages/readline/PyReadline.py to PyRead
line.pyc
byte-compiling /usr/lib/python2.4/site-packages/readline/__init__.py to __init__
.pyc
$ cd ..
$ tar xzvf ipython-0.6.15.tar.gz
ipython-0.6.15/
ipython-0.6.15/IPython/
ipython-0.6.15/IPython/Extensions/
...
$ cd ipython-0.6.15
$ python setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/IPython
...

これでインスコ終わり。

$ ipython
**********************************************************************
Welcome to IPython. I will try to create a personal configuration directory
where you can customize many aspects of IPython's functionality in:

/home/wacky/.ipython

Successful installation!

Please read the sections 'Initial Configuration' and 'Quick Tips' in the
IPython manual (there are both HTML and PDF versions supplied with the
distribution) to make sure that your system environment is properly configured
to take advantage of IPython's features.
Please press <RETURN> to start IPython.
**********************************************************************
Python 2.4.1 (#1, May 27 2005, 18:02:40)
Type "copyright", "credits" or "license" for more information.

IPython 0.6.15 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
%magic  -> Information about IPython's 'magic' % functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.

In [1]:

うひょ、動いた。
…ところで、コード補完させると、↓こんな感じに、楽しい表示になっちゃう。

In [2]: sys.s.ve
sys.version       sys.version_info

In [2]: sys.versionon
Out[2]: '2.4.1 (#1, May 27 2005, 18:02:40) \n[GCC 3.3.3 (cygwin special)]'

まぁ、とりあえず動作に支障が無いので、放っておいてるが。