bar_1

contents_map

2010年7月28日水曜日

WinXP環境でGAE/JRuby/Rails/Sinatraにより彼女と自宅でデートする

0. Abstract



熱海はハードル高いので、まずは自宅だよね。ということで、ちょっと以前から:

などを参照して、ローカルPC(XP)でGAEの実験してたわけだが、これまで当方の環境では、ThreadErrorを吐くなど不具合があり、寸分も動作しなかった。



この度、やっと動作を確認できたので、ここに試行錯誤をまとめて示そうと思う。
結論だけ先に挙げますと、gemパッケージ内の主にJRubyに何らかの原因がありいくつか不具合現象が生じていたが、gemの更新により、それらが解消された、というつまらないことなのですが…。


それに加えて、今回ちょっと特殊なのは:

  • XPのアカウント名が日本語だったこと

  • 動作確認にCygwinも用いたこと

になります。


上記に起因する不具合現象について、相当調査し(ぐぐっ)たが、エラーそのものも含めて、全然情報がなかった。ActiveScriptRubyやCygwinという当方とまっ
たく同じ環境でも、何の問題も無く、みんなすんなり動いてるようでした。



本稿ではまず、1.に実験した環境・構成を示します。次に2.にて、当初存在した
不具合現象を示します。そして、3.に今回成功した修正方法を、4.に修正後の動作結果を示します。最後に、修正方法を5.結論に述べ、今後の課題を6.とします。
またリファレンスと付録を、それぞれ7.、8.とします。

 

 



1.動作確認に使用した環境と構成




以下、(1)~(2)に、環境・構成等を示す。


Windows XPは、以下XPと略す。
Cygwin/XPは、XP上にインストールしたCygwinを示す。
ActiveScriptRubyでの実験は、同環境をインストールするとできるruby console
から行った。
Cygwin/XPでの実験は、Cygwinのコンソールから行った。


(1) 実験した環境



実験していたのは、下記のような環境である:
OS  Windows XP(winver.exe; Version 5.1 (Build 2600.xpsp_sp3_gdr
   .100216-1514 :Service Pack 3)),
   Cygwin/XP(setup.exe version 2.697)

Ruby ActiveScriptRuby 1.8.7 (XP; ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]),
   Ruby 1.8.7 (Cygwin/XP; ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin])

Java java version "1.6.0_20"
   Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
   Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode)




AcriveScriptRuby、Cygwin/XP上のruby両者で、動作することを確認できた。


(2)gemの構成



  • 構成1(動作しない)

  • $ gem list
    
    *** LOCAL GEMS ***
    
    appengine-apis (0.0.16)
    appengine-rack (0.0.9)
    appengine-sdk (1.3.4)
    appengine-tools (0.0.13)
    bundler08 (0.8.5)
    google-appengine (0.0.13)
    jruby-jars (1.4.1)
    jruby-rack (1.0.1)
    rack (1.1.0)
    rubygems-update (1.3.7)
    rubyzip (0.9.4)


  • 構成2(動作確認できた)

  • $ gem list
    
    *** LOCAL GEMS ***
    
    appengine-apis (0.0.18, 0.0.16)
    appengine-rack (0.0.11, 0.0.9)
    appengine-sdk (1.3.5, 1.3.4)
    appengine-tools (0.0.15, 0.0.13)
    bundler08 (0.8.5)
    google-appengine (0.0.15, 0.0.13)
    jruby-jars (1.5.1, 1.4.1)
    jruby-rack (1.0.1)
    rack (1.1.0)
    rubygems-update (1.3.7)
    rubyzip (0.9.4)



2.不具合現象




不具合現象は、実行時に下記ログに示されるような現象である(一部、当方で入れた
デバッグ用のメッセージも含む)。


◇ログ1(ActiveScriptRuby; No such file or directory (Errno::ENOENT))



D:\Program Files\ruby-1.8\usr\local\sinatra_test>appcfg.rb bundle .
D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.13/lib/appe
ngine-tools/boot.rb:78: warning: `*' interpreted as argument prefix
file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/jruby-stdlib
-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:926:in `set_pa
ths': No such file or directory - No such file or directory - C:/Documents and S
ettings/テ」ツ・セテ」ツ・・(Errno::ENOENT)
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa
ults/jruby.rb:17:in `set_paths'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa
ults/jruby.rb:60:in `installed_spec_directories'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/sour
ce_index.rb:58:in `from_installed_gems'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_
path_searcher.rb:84:in `init_gemspecs'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_
path_searcher.rb:19:in `initialize'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from D:/PROGRA~1/ruby-1.8/bin/appcfg.rb:9
Error executing jruby




◇エラーログ2 (Cygwin/XP, dev_appserver.rb; Error opening zip file or JAR manifest missing)


$dev_appserver.rb .
/usr/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine-tools/boot.rb
=> Booting DevAppServer
=> Press Ctrl-C to shutdown server
exec "java" "-classpath" "/usr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appeng
ine-java-sdk-1.3.5/lib/appengine-tools-api.jar" "-Djava.util.logging.config.file
=/usr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appengine-java-sdk-1.3.5/config
/sdk/logging.properties" "-Dcom.google.appengine.plugin.path=/usr/lib/ruby/gems/1
.8/gems/appengine-tools-0.0.15/lib/appengine-tools/app_yaml.jar" "-javaagent:/u
sr/lib/ruby/gems/1.8/gems/appengine-sdk-1.3.5/appengine-java-sdk-1.3.5/lib/agent
/appengine-agent.jar" "com.google.appengine.tools.development.DevAppServerMain"
"--disable_update_check" "/home/masa/local/sinatra_test"
Error opening zip file or JAR manifest missing : /usr/lib/ruby/gems/1.8/gems/app
engine-sdk-1.3.5/appengine-java-sdk-1.3.5/lib/agent/appengine-agent.jar
Error occurred during initialization of VM
agent library failed to init: instrument





◇エラーログ3(ActiveScriptRuby; Mutex relocking by same thread (ThreadError))


D:\Program Files\ruby-1.8\usr\local\sinatra_test>appcfg.rb generate_app .
D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.13/lib/appe
ngine-tools/boot.rb:78: warning: `*' interpreted as argument prefix
=> Generating gemfile
=> Bundling gems
D:/Program Files/ruby-1.8/lib/ruby/1.8/pathname.rb:263: warning: `*' interpreted
 as argument prefix
D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/bundler08-0.8.5/lib/bundler08/d
ependency.rb:59: warning: discarding old version
Calculating dependencies...
Updating source: http://gems.rubyforge.org
D:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/bundler08-0.8.5/lib/bundler08/r
esolver.rb:115:Warning: Gem::Dependency#version_requirements is deprecated and w
ill be removed on or after August 2010.  Use #requirement
Caching: appengine-rack-0.0.9.gem
Caching: jruby-jars-1.4.1.gem
Caching: jruby-rack-1.0.1.gem
Caching: rack-1.1.0.gem
Installing jruby-jars (1.4.1)
Installing rack (1.1.0)
Installing jruby-rack (1.0.1)
Installing appengine-rack (0.0.9)
Done.
=> Packaging gems
=> Installing appengine-rack.jar
=> Installing jruby-core-1.4.1.jar
=> Installing jruby-stdlib-1.4.1.jar
=> Installing jruby-rack-1.0.1.jar
=> Installing appengine-sdk
=> Generating rackup
file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/jruby-stdlib
-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:888:in `search
er': Mutex relocking by same thread (ThreadError)
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/cust
om_require.rb:33:in `require'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/builtin/ja
vasupport.rb:37
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/shared/builtin/ja
vasupport.rb:31:in `require'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/cust
om_require.rb:31:in `require'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa
ults/jruby.rb:70:in `spec_directories_from_classpath'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/defa
ults/jruby.rb:60:in `installed_spec_directories'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/sour
ce_index.rb:58:in `from_installed_gems'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_
path_searcher.rb:84:in `init_gemspecs'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/gem_
path_searcher.rb:19:in `initialize'
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb
        from file:/D:/Program Files/ruby-1.8/usr/local/sinatra_test/WEB-INF/lib/
jruby-stdlib-1.4.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems.rb:9
        from D:/PROGRA~1/ruby-1.8/bin/appcfg.rb:9
Error executing jruby





3.回避・修正方法



不具合現象の(1)、(3)に関しては、google-appengineパッケージの更新(下記(1))で、修正されることがわかった。不具合現象(2)については、パッケージ内のスクリプトの一部のパスの指定方法に、問題があることがわかった(下記(2))。

下記(1)、(2)に回避・修正方法を示す。



(1) GAE gemファイルの更新


エラーログから、jruby-jar等に問題があることが推測された。
google-appengineのgemを最新のものに更新することで、当該現象は発生が抑えられた。
   gem update google-appengine




(2) GAE/JRubyのスクリプトdev_appserver.rbの修正(Cygwinの場合)



パスの指定部分を、全てcygpathでラッピングする[1]

/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine-tools/
appserver.rb


<             server_args[-1] = File.expand_path(path)
---
>             tmp_expath = File.expand_path(path)
>             server_args[-1] = `cygpath -wp #{tmp_expath}`.chomp


<           java_args << AppEngine::SDK::TOOLS_JAR
---
>           java_args << `cygpath -wp #{AppEngine::SDK::TOOLS_JAR}`.chomp



<               AppEngine::SDK::SDK_ROOT + '/config/sdk/logging.properties'
<           java_args << "-Dcom.google.appengine.plugin.path=#{plugin_jar}"
---
>               `cygpath -wp #{AppEngine::SDK::SDK_ROOT}/config/sdk/logging.prop
erties`.chomp
>           java_args << "-Dcom.google.appengine.plugin.path="+`cygpath -wp #{pl
ugin_jar}`.chomp
>


<             java_args << '-javaagent:' + AppEngine::SDK::AGENT_JAR
---
>             java_args << '-javaagent:' + `cygpath -wp #{AppEngine::SDK::AGENT_
JAR}`.chomp




これもっと綺麗な方法ないかな、とも思いますが・・・。





4.動作結果




ブラウザからhttp://localhost:8080/にアクセスすれば、所望の結果が得られる。

D:\Program Files\ruby-1.8\usr\local\sinatra_test>dev_appserver.rb.bat .
D:/PROGRA~1/ruby-1.8/lib/ruby/gems/1.8/gems/appengine-tools-0.0.15/lib/appengine
-tools/boot.rb:50: warning: `*' interpreted as argument prefix
=> Booting DevAppServer
=> Press Ctrl-C to shutdown server
2010/07/26 1:23:22 com.google.apphosting.utils.jetty.JettyLogger info
情報: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLo
gger
2010/07/26 1:23:22 com.google.apphosting.utils.config.AppEngineWebXmlReader read
AppEngineWebXml
情報: Successfully processed D:\Program Files\ruby-1.8\usr\local\sinatra_test\WE
B-INF/appengine-web.xml
2010/07/26 1:23:22 com.google.apphosting.utils.config.AbstractConfigXmlReader re
adConfigXml
情報: Successfully processed D:\Program Files\ruby-1.8\usr\local\sinatra_test\WE
B-INF/web.xml
2010/07/26 1:23:22 com.google.apphosting.utils.jetty.JettyLogger info
情報: jetty-6.1.x
2010/07/26 1:23:25 com.google.apphosting.utils.jetty.JettyLogger info
情報: Started SelectChannelConnector@127.0.0.1:8080
2010/07/26 1:23:25 com.google.appengine.tools.development.DevAppServerImpl start

情報: The server is running at http://localhost:8080/







5.結論





  • JRuby(jruby-jars)は、バージョンによってはActiveScriptRuby、もしくはCygwin/XPにおいて、ThreadErrorにより動作しない

  • gemパッケージ:google-appengineを、最新のバージョンに更新する。

  • Cygwinでは、一部のスクリプトのjavaコマンド発行時のパス名が問題となる

  • Cygwinのコマンド:cygpath -wp で、ラッピングしてjavaコマンドに渡されるように、dev_appserver.rbを修正する。

  • 上記により、ActiveScriptRuby, Cygwin/XP両者の環境で、ローカルPC上で、GAE/JRubyの動作を確認できた。




6. Future Works





  • gem, appcfg.rb, dev_appserver.rb の使い方詳細の調査

  • リモート・サーバ上での動作

  • 彼女を作る

  • 不具合現象の原因となるgemパッケージの依存関係、ThreadErrorの生じる箇所
      については、今回あきらめた。JRubyの内部動作に強い興味を持つ向きは、探ってみてもよいかもしれない。





7.補論



  • Gemリポジトリ格納場所の再設定

  • 不具合現象(1)の発生は、3.回避・修正方法の(1)により、抑えられる。しかし、類似の現象を未然に防止するため、Gemリポジトリの設定をしておいたほうがよいかもしれない。


    本稿の場合、3.appcfg.rbから実行されるgemにおいて、リポジトリ処理に日本語パス名起因である不具合現象(1)が、当初存在していた。

    gemは、動作時にリポジトリ・ファイルを作成する[2]

    AcitiveScriptRubyの場合、特に指定がなければ、リポジトリはディレクトリ:%HOME%となる。このパス名に、日本語が含まれている場合、google-appengineのバージョンによっては、不具合現象(1) の原因になる。

    これを防ぐには、google-appengineパッケージの更新、もしくは環境変数GEM_HOMEを、適切に設定する。

    設定方法は、
    コンパネ>システム>詳細設定、またはコマンド・プロンプト
    で、環境変数:GEM_HOMEを、日本語を含まないパスに設定する

    である。

  • Cygwin

  • Cygwinに関しては、ホーム・ディレクトリを、日本語パス名を含まないものに変更している。





8.References



[1] Toru Takahashi; "CygwinでJavaを快適に使う";http://www.02.246.ne.jp/~torutk/javaoncygwin/javaoncygwin.html


[2] docs.rubygems.org; "RubyGems User Guide | RubyGems Manuals";
3.2 Installing RubyGems in a User Directory,
     
http://docs.rubygems.org/read/chapter/3#page83




2010年5月10日月曜日

InfoViz APIドキュメンテーション(目次)

API ドキュメンテーション
o Input JSON データの入力
o HyperTree
o RGraph
o SpaceTree

クイック・チュートリアル
o RGraph
o HyperTree
o SpaceTree
o TreeMap


API ドキュメンテーション全文
JSON をロードする
Loader.js

Canvas クラス
Canvas.js

可視化(Visualizations)
Spacetree.js
Treemap.js
Hypertree.js
RGraph.js

Graph クラス
Graph.js
Graph.Op.js
Graph.Plot.js

Point (2D) クラス
Complex.js
Polar.js

アニメーション(Animations)
Animation.js

その他(Other)
AngularWidth.js

索引(Index)
すべて(Everything)
クラス群(Classes)
関数群(Functions)
ファイル群(Files)

2010年4月14日水曜日

JavaScriptによるデータ可視化ライブラリ:InfoVis の概要訳

InfoVisは、JavaScriptで記述されたデータ可視化ライブラリである。この種のライブラリは、Javaであれば、例えば、JUNG(http://jung.sourceforge.net/)などが存在する。

InfoVisにおいて、可視化対象のデータは、JSON形式のものを扱う。このため、このライブラリにはJSONを扱うためのAPIを含む(TreeUtil)。可視化関連のものは、Core.jsにて提供される。


InfoVisの概要が示されたページについて、日本語訳をおこなったのでここに示す。

url:
http://thejit.org/

download:
http://thejit.org/downloads/Jit-1.1.3.zip

license:
BSD(http://thejit.org/docs/files/Core-js.html)

概要:
http://thejit.org/docs/files/Core-js.html


●Core
Core.js

説明(Description)
JSONツリー構造を操作する共通ユーティリティ関数と、ライブラリとして、内部で使
用されているクラス・オブジェクトを提供する。
また、JSONツリー構造を操作する TreeUtil オブジェクトを、提供する。

作者(Author)
ニコラス・ガルシア・ベルモンテ(Nicolas Garcia Belmonte)

コピーライト(Copyright)
Copyright 2008-2009 by Nicolas Garcia Belmonte

ホームページ(Homepage)
http://thejit.org

バージョン(Version)
1.1.3

ライセンス(License)
BSD License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the organization nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY Nicolas Garcia Belmonte ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL Nicolas Garcia Belmonte BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


サマリ(Summary)

Core.js 共通ユーティリティ関数とライブラリ内部で使用されるクラス・
オブジェクトを提供

TreeUtil 共通JSONツリー操作メソッドをいくつか
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する


TreeUtil
共通JSONツリー操作メソッド。

サマリ(Summary)
Functions
prune ツリー上でmaxLevelより大きな深さを持つノードを、クリアする
getParent idの識別子を持つノードの、親ノードを、返す
getSubtree 指定したidにマッチするサブツリーを、返す
getLeaves ツリーの葉を、返す
eachLevel ツリー上の相対的に指定した深さ以下の深さのノードを、イテレートする
each ツリーのイテレータ
loadSubtrees requestメソッドによって新たにリクエストされたサブツリーを、葉に追加する


2010年1月31日日曜日

日本語の辞書(国語辞典)についての考察

ひんしつ【品質】 〔quality〕 ・・・品物の質。

��大辞林第3版より引用)


私は、こういう記述は嫌いだ。
このような記述は、意味がない。なぜなら、何の説明もしていない、同語反復のトートロジーであるからだ。人が辞書を引くとき、普通は意味を知りたい時ではないだろうか?しかし、そこに意味は記されていない―無意味な作業というわけだ。
そんなことを好んでする利用者は、誰もいないであろう。

したがって、
語とその意味のカタログという辞書本来の性質と、利用者の利用目的の観点から、
辞書における語の記述は、説明的な叙述・定義であるべきである。

意味を表現することができる。


ところが、
日本のいわゆる「国語辞典」には、ここで例に挙げた大辞林のように、こういう類の「無意味な」記述が多すぎる。その結果、シソーラス(類語辞典)ともディクショナリ(国語辞典)ともつかぬものとなってしまっている。
それこそ「品質」が低すぎる。


一方で、OALDではどうか。

qual" ity noun, adj.
> noun (pl. -ies)
1 [U, C] the standard of sth when it is compared to other things like it; how good or bad sth is: to be of good / poor / top quality * goods of a high quality * high-quality goods * a decline in water quality * When costs are cut product quality suffers. * Their quality of life improved dramatically when they moved to France.
2 [U] a high standard syn excellence: contemporary writers of quality * We aim to provide quality at reasonable prices. * Get it right, even if it takes time; it’s quality not quantity that matters.
3 [C] a thing that is part of a person’s character, especially sth good: personal qualities such as honesty and generosity * to have leadership qualities * She has all the qualities of a good teacher. * It’s hard to find people with the right qualities for the job.
4 [C, U] a feature of sth, especially one that makes it different from sth else: the special quality of light and shade in her paintings * His voice has a rich, melodic quality.
5 [C] (BrE) = quality newspaper

(http://www.oup.com/oald-bin/web_getald7index1a.pl
より引用。ここでは名詞だけを引用した。発音記号は、表示上の問題から削除)


その記述の量もさることながら、記述の仕方が、全然違うことに、気付くことができる。たとえば、1は

その何か(sth)と同じようなものと比較するときの
sthの水準;いかに良いか悪いかの

と言っている。

無論、「水準」とは何かという疑問があるだろう。しかしこの語(quality)が、複数の比較対象の存在によって規定される;良い・悪いを判断する尺度であることは、理解できる。


「品物の質」などという馬鹿げた記述より、はるかに明瞭な定義であり、説明だ。
(大辞林の記述にさらに付言すれば、品質は、べつに品物(有体物)にだけ成り立つものでもあるまい。サービス品質などともいうだろう)

今後いくつかの国語辞典について、主に語の記述の観点から、比較を行ってみたい。


まとめ
・日本語の辞書(国語辞典)は、品質が悪い
・辞書における語の記述は、説明的な叙述・定義であるべきである

2009年8月11日火曜日

Tumblr:Postへのタグ表示方法メモ

手順
  1. Tumblrにログイン
  2. ダッシュボード(Dashboard)>カスタマイズ(Customize)
  3. Theme>customHTML
  4. block:Posts のお好みの場所に、下記のような block:HasTags を追加
{block:HasTags}
<div class="tags">
{block:Tags}
<a href="{TagURL}">[{Tag}]</a>
{/block:Tags}
</div>
{/block:HasTags}



関連ドキュメント


2009年8月6日木曜日

FirefoxでGoogleの表示設定が保持されない

再度この方法を検証したところ、改善は確認できなかった。
ひきつづき、解決に向けた方策を調査したい。(2009/8/10)
改善を確認できたので、再掲する(2009/8/12)。

問題
なぜか最近、Googleのクッキーが有効でない挙動をしていた。
具体的には、Googleの表示設定の(1)セルフサーチ フィルタリング、(2)検索結果の表示件数表示数、が、ブラウザ(Firefox)を立ち上げてネットにアクセスする際、毎回デフォルトの設定に戻ってしまうというものだ。


対策
以下の手順で、(1)既存のクッキーの削除と、(2)クッキーのサイト許可登録を行うことで、改善を得た。

(1) 既存のクッキーの削除の手順
  1. メニューバーから、ツール>オプション...を、選択
  2. 表示されたオプションウィンドウの上段の「プライバシ」ボタンを、押下
  3. Cookieペインの「Cookieを表示」ボタンを押下
  4. 表示されるCookieウィンドウ中のサイトリストから、Google.com, Google.co.jpに対して、5.を、実施
  5. 「Cookieを削除」ボタンでクッキーを、削除

(2) クッキーの許可登録
  1. メニューバーから、ツール>オプション...を、選択
  2. 表示されたオプションウィンドウの上段の「プライバシ」ボタンを、押下
  3. Cookieペインの「例外サイト(E)...」ボタンを、押下
  4. サイトのアドレス入力で、Google.com, Google.co.jpを、「許可」で、追加


結果
(1)と(2)を併せて行うことで、Googleの表示設定の内容が、PCの再起動後も、ちゃんと設定どおりに表示されるようになった。

2009年8月5日水曜日

tumblrで自分でつけたタグのクラウド表示の仕方


  1. ログインしてDashboardへ
  2. Customize
    以下のコードを、Customize>Info>Description で追加する:
<!-- Start Tumblr Tag Cloud -->
<script type="text/javascript" src="http://tumblrtags.rivers.pro/jquery.js"></script><script type="text/javascript" src="http://tumblrtags.rivers.pro/widget.js?css=default&minsize=120&maxsize=280"></script>
<!-- End Tumblr Tag Cloud -->

References:
http://tumblrtags.rivers.pro/

2009年8月2日日曜日

tumblrでPostにタグ付けする方法メモ

自分のポストにタグで属性付け

  1. 自分のtumblrホームに移動
  2. Edit
  3. “Advanced Option”>Tag this post
  4. カンマで区切って、タグを入力


References
  • tumblr http://www.tumblr.com/

Related Entries

2009年7月20日月曜日

「正しいWindowsイメージ」?

最近よくWindowsがフリーズするようになっていた。
状況から推測するに、何らかのソフトがシステム・リソースを消費しまくって、動作不能になっているような感じだった。

現象としては、
XXXX.exe
アプリケーションまたは DLL C:\xxxx\xxxx\psapi.dll は正しいWindowsイメージではありません。これをインストールディスクのファイルと照合してください。
というウィンドウが出まくる。やたら動作が重い、など。

ルータのポート転送禁止、psapi.dll の名前変更、 XPの更新パッチの適用、を行ったところ、改善が見られたが、どれが原因かはまだ不明。

最初はウィルス感染や、ネットからの攻撃を疑ったが、そうでもなさそうだった。。。


とりあえず、忘備のためにここに書き残しておく。
2014-05-21追記: このころ HDD の調子が悪かった。ドライブからのリードができていなかった可能性もある。

2009年6月17日水曜日

「Firefoxが重い」

という現象に、ここ数ヶ月の間、私は悩まされ続けていた。
原因はいくつかあるのかもしれないが、登録してあるRSSフィードの量に問題が
ありそうなのは感覚的に分かっていた。RSSリーダーには、Sage-Tooを使用して
いる。

最近になって、ようやく以下のページで解決策を見つけた:
『MarleySoft別館‐Livemark読込みの負荷分散』
http://marilab.hp.infoseek.co.jp/firefox/bug329534.html
自分で数日試してみたところ、上述の現象の改善が得られたので、ここに設定手
順を含めてご紹介する。


問題
Firefoxの起動に時間がかかる。またはFirefox起動中に、周期的にPCがフリーズする。

解決策
以下のステップでbug329534パッチを適用し、ライブブックマーク読込みの負荷分散を図る。

手順
  1. bug329534対応のパッチ:bug329534.xpiのインストール
  2. 対象となる設定項目を設定
    1. Firefoxの設定項目画面を開く
    2. 設定項目を追加する
    3. 設定項目に値を設定する

1.について

前述のページからxpiファイルをダウンロードし、Firefoxのウィンドウにドラッグ&ドロップする。

2.1.について
URLバーに、
about:config
と、入力する。

2.2.についてコンフィグ画面で右クリックし、コンテキスト・メニューで「新規作成>整数値」として
browser.bookmarks.livemark_refresh_delay_time
(説明:更新間隔。単位は秒。最小値は1。)

browser.bookmarks.livemark_refresh_limit_count

(説明:一度に更新するLivemarkの数。最小値は1。)
を、新たに定義する。


2.3.について追加した項目をクリックして、値を設定する。
自分の場合は、
livemark_refresh_delay_time を 5
livemark_refresh_limit_count を 2
としておいた。


パッチ適用前後の状況ご参考としてパッチ適用前後の状況についても述べておこう。

最初に適用以前について。
まず、Firefoxの起動時にやたら時間がかかるのだ。また、息継ぎするかのごとく、
Firefoxのプロセスをアクティブにした際や、ブラウジング中に、Firefoxがなん
らかのアクセス(ネットやローカルドライブ)をし始める、といった現象だ。この
アクセス中、ほとんどPCはフリーズしたかのような状態になる。この状態は、お
およそ数十分続く。

ちなみに、私のフィードの登録数は約325サイト分である。


パッチ適用後は、上記のような状況はほぼ皆無、多少重くなったとしても、重さ
の劇的な低減がなされた。