2008年12月18日木曜日

Redmine on GlassFish -7

早いものでRedmine on GlassFish シリーズもはや7回目を迎えました。我ながらひっぱるなぁ(笑)

今回はGlassFish v3の醍醐味ともいえる、「Railsアプリのネイティブ・デプロイ」に挑戦してみることに致しましょう。挑戦、などとおおげさにいうほど難しいことではないのですが。

[手順]
1. Redmineは c:\host\redmine などのディレクトリにスタンバイしているとします。
2. はじめに、asadmin コマンドでGlassFishのドメインを開始します。

asadmin start-domain

以下のような表示が出たらOKです。


3. 今回はGUI管理コンソールを使ってみます。Webブラウザを立ち上げて、以下のURLにアクセスしましょう。
http://localhost:4848

4. しばらく以下のような画面が表示され、準備が整うとGUI管理コンソールのトップページが表示されます。




「Please Register」のメッセージは今回は見てみぬフリをすることにして、左ナビのメニューからApplications\Web Applocations をクリックします。


5. Webアプリケーションの管理画面が表示されます。まだなんにもデプロイしていないので空っぽですね。左上のDeployボタンをクリックし、Deploy Web Applicationのページを表示しましょう。






6. Location で Local packaged file or directory that is accessible from the Application Serverにチェックを入れ、右端の「Browse Folders」ボタンをクリックします。




7. なつかしのファイルマネージャーみたいなポップアップ画面が出てきますので、中央のリストでRedmineのルートフォルダを選択してChoose Folderボタンをクリックしましょう。
Locationのテキストボックスにフォルダへのパスがセットされます。ちなみに、パスがわかっている場合は最初から手で入力しても全然かまいません。






10. フォルダのパスがセットされたら、他のオプションはすべてそのままにして、ページ下部のOKボタンをクリックして下さい。クリックするとボタンのCaptionが「Processing...」にかわり、しばらく画面がかたまります(結構時間がかかるのです)


11.デプロイが完了すると、ふたたび6.のWeb Applicationの管理画面が表示されます。ここで大問題発生。デプロイ完了したはずなのに、リストの中にRedmineがナイ。
えー、失敗ですか?だったらエラーメッセージくらい出してくれぇ。




…と思いきや、実はこっそりデプロイされているのです。ウソだと思ったらコンソールからasadminコマンドでリストしてみてください。デプロイされているアプリケーションの一覧を見るには、次のようにコマンドを実行します。

asadmin list-applications



ほらあった。


12. ということで、GUI管理画面には名前はないけれど配備はできているわけです。胸をはってWebブラウザからRedmineにアクセスしてみましょう。こんな感じです。
(いつも同じ絵ではつまらないので、ちょっと違うページを出してみました)





…と、こんな感じでとても手軽に(?)RailsアプリケーションをGlassFishにデプロイすることができます :-)

さて、これで配備はひととおりためしてしまったので、次からはRubyの勉強をかねてRedmineアプリケーションのカスタマイズでもしてみたいと思います(できるのか?)

2008年12月17日水曜日

Reviewer募集締め切ります(ありがとうございました)

先日のエントリにてお願いしましたJava書籍の原稿レビューア募集の件ですが、おかげさまで予定しておりました人数に達しましたため、ひとまず募集を締め切らせて頂くことに致しました。
(個人的には一人でも多くの方からご意見を頂きたいところなのですが、色々と制約等もあり思うようになりません…私の段取りが悪いというのもあるのですが)

ご連絡を頂きました皆様、本当にありがとうございました。
今後ともなにとぞ宜しくお願い申し上げます。

2008年12月6日土曜日

GlassFish gem のコマンド起動バッチ

少し前の話ですが、GlassFish gem 0.9.0にこんな改善案を出しました。

環境設定によってはGlassFish gemのasadminコマンドがGlassFish本体のそれと衝突する可能性が高いため、GlassFish側のコマンドは別の名前にしたらどうでしょう、というような話です。

Vivekさんから「バグ・トラッカーに登録しておいて」といわれて一応登録したのですが、バグというよりは現行バージョンの仕様みたいなものですね。

で、最近になってこの提案への対応が行われたもようです。
暫定的にプリフィクスを変える(asadmin --> gfadminなど)という方法で対応してくれているようですが、最終的にはもうちょっとスマートなメカニズムを考えたいとのこと。


GlassFish gemはJRuby on Railsアプリ開発者にとってとても便利なツールだと思うので、これからもどんどん発展していって欲しいです :-)

2008年12月3日水曜日

Redmine on GlassFish -6

またまた Redmine on GlassFish です。

今回は on GlassFish というよりは "with GlassFish gem" 。

手軽さが売り物の GlassFish gem、ということで、あっという間にデプロイ&起動が完了するかと思いきや、今回もやっぱりいくつかのハマりどころがありました。

まず、何も考えずに、

cd c:\host\redmine
jruby -S glassfish

とやってみたところ、こんなエラーが発生。

---
C:\host\redmine>jruby -S glassfish
2008/12/03 0:51:06 com.sun.enterprise.glassfish.bootstrap.ASMain main
情報: Launching GlassFish on Apache Felix OSGi platform
2008/12/03 0:51:06 com.sun.enterprise.glassfish.bootstrap.ASMainOSGi findDerbyClient
情報: Cannot find javadb client jar file, jdbc driver not available

Welcome to Felix.
=================

2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.core.kernel [23]
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.common.common-util [12]
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle GlassFish-Application-Common-Module [19]
2008/12/03 0:51:07 APIClassLoaderService createAPIClassLoader
情報: APIClassLoader = Class Loader for Bundle [GlassFish-Application-Common-Module [19] ]
2008/12/03 0:51:07 HK2Main$HK2ServiceTrackerCustomizer addingService
情報: registering service = org.apache.felix.framework.StartLevelImpl@2942da, contract = org.osgi.service.startlevel.StartLevel, name = null
2008/12/03 0:51:07 HK2Main$HK2ServiceTrackerCustomizer addingService
情報: registering service = org.apache.felix.framework.PackageAdminImpl@162f16,contract = org.osgi.service.packageadmin.PackageAdmin, name = null
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.branding.branding [22]
no resource bundle found for version, using default GlassFish version
2008/12/03 0:51:07 AppServerStartup run
情報: [Thread[GlassFish Kernel Main Thread,5,main]] started
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.common.internal-api [15]
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.admin.config-api [25]
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.deployment.deployment-autodeploy [16]
2008/12/03 0:51:07 OSGiModuleImpl start
情報: Started bundle org.glassfish.deployment.deployment-common [17]
2008/12/03 0:51:08 OSGiModuleImpl start
情報: Started bundle org.glassfish.flashlight.flashlight-framework [18]
2008/12/03 0:51:08 com.sun.enterprise.v3.services.impl.GrizzlyProxy start
情報: Listening on port 3000
2008/12/03 0:51:08 com.sun.enterprise.v3.services.impl.GrizzlyService postConstruct
情報: Network listener http-listener-2 on port 8181 disabled per domain.xml
2008/12/03 0:51:08 com.sun.enterprise.v3.services.impl.GrizzlyProxy start
情報: Listening on port 4848
2008/12/03 0:51:08 com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter setStateMsg
情報: The Admin Console Application is not yet installed.
2008/12/03 0:51:09 OSGiModuleImpl start
情報: Started bundle org.glassfish.scripting.gf-jruby-connector [8]
2008/12/03 0:51:10 OSGiModuleImpl start
情報: Started bundle org.glassfish.scripting.grizzly-jruby-module [9]
2008/12/03 0:51:11 com.sun.grizzly.jruby.rack.RackApplicationChooser getFactory
情報: Detected Rails application
2008/12/03 0:51:11 com.sun.grizzly.jruby.rack.RackApplicationChooser getFactory
情報: Rails Version: 2.0
2008/12/03 0:51:11 com.sun.grizzly.pool.DynamicPool logDynamicStatus
情報: Pool started without dynamic resizing enabled. Pool will not attempt to determine the upper and lower bounds that it should be using, and will stay at 1
2008/12/03 0:51:11 com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter initializeObject
致命的: Error initializing rack application!
2008/12/03 0:51:11
致命的: com.sun.grizzly.jruby.rack.RackInitializationException: No such file or
directory - No such file or directory - C:/host/redmine/C:
from C:/jruby/trunk/bin/../lib/ruby/1.8/pathname.rb:453:in `realpath'
from /C:/host/redmine/config/../vendor/rails/railties/lib/initializer.rb
:496:in `set_root_path!'
from /C:/host/redmine/config/../vendor/rails/railties/lib/initializer.rb
:460:in `initialize'
from /C:/host/redmine//config/boot.rb:19:in `run'
from /C:/host/redmine//config/boot.rb:19
from /C:/host/redmine//config/boot.rb:11:in `require'
from /C:/host/redmine//config/environment.rb:11
from /C:/host/redmine//config/environment.rb:1

2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.DefaultRackApplicationFactory.createApplication(DefaultRackApplicationFactory.java:171)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.DefaultRackApplicationFactory.newApplication(DefaultRackApplicationFactory.java:72)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initializeObject(RackApplicationPoolAdapter.java:43)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initializeObject(RackApplicationPoolAdapter.java:16)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.pool.DynamicPool$1.run(DynamicPool.java:394)
2008/12/03 0:51:11
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
2008/12/03 0:51:11
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
2008/12/03 0:51:11
致命的: at java.lang.Thread.run(Thread.java:619)
2008/12/03 0:51:11
致命的: Caused by: org.jruby.exceptions.RaiseException: No such file or directory - C:/host/redmine/C:
2008/12/03 0:51:11
致命的: at (unknown).initialize(C:/jruby/trunk/bin/../lib/ruby/1.8/pathname.rb:420)
2008/12/03 0:51:11
致命的: at Pathname.realpath_rec(C:/jruby/trunk/bin/../lib/ruby/1.8/pathname.rb:453)
2008/12/03 0:51:11
致命的: at Pathname.realpath(/C:/host/redmine/config/../vendor/rails/railties/lib/initializer.rb:496)
2008/12/03 0:51:11
致命的: at Rails::Configuration.set_root_path!(/C:/host/redmine/config/.
./vendor/rails/railties/lib/initializer.rb:460)
2008/12/03 0:51:11
致命的: at Rails::Configuration.initialize(/C:/host/redmine//config/boot.rb:19)
2008/12/03 0:51:11
致命的: at #<Class:01x1a8739b>.run(/C:/host/redmine//config/boot.rb:19)
2008/12/03 0:51:11
致命的: at (unknown).(unknown)(/C:/host/redmine//config/boot.rb:11)
2008/12/03 0:51:11
致命的: at Kernel.require(/C:/host/redmine//config/environment.rb:11)
2008/12/03 0:51:11
致命的: at (unknown).(unknown)(/C:/host/redmine//config/environment.rb:1
)
2008/12/03 0:51:11
致命的: at (unknown).(unknown)(:1)
2008/12/03 0:51:11
致命的: Exception in thread "pool-8-thread-1"
2008/12/03 0:51:11
致命的: java.lang.IllegalStateException: Rack initialization failed!
2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initializeObject(RackApplicationPoolAdapter.java:49)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initializeObject(RackApplicationPoolAdapter.java:16)
2008/12/03 0:51:11
致命的: at com.sun.grizzly.pool.DynamicPool$1.run(DynamicPool.java:394)
2008/12/03 0:51:11
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
2008/12/03 0:51:11
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
2008/12/03 0:51:11
致命的: at java.lang.Thread.run(Thread.java:619)
2008/12/03 0:51:11 com.sun.grizzly.jruby.RailsAdapter <init>
情報: Jruby version is: 1.1.5
2008/12/03 0:51:11 org.glassfish.scripting.rails.RailsDeployer load
情報: Loading Rails application redmine at /
2008/12/03 0:51:11 com.sun.enterprise.v3.server.AppServerStartup run
情報: GlassFish v3 Prelude startup time : Felix(1016ms) startup services(3781ms)
total(4797ms)
---

なんかよく分からないけれど、「C:/host/redmine/C:なんてファイルやディレクトリはないよ」と文句を言われている模様。
あちこち検索してみたもののコレという情報が見つからないので、やむをえずコードを追ってみることに。

---
** endor/rails/railties/lib/initializer.rb
@root_path =
# Pathname is incompatible with Windows, but Windows doesn't have
# real symlinks so File.expand_path is safe.
if RUBY_PLATFORM =~ /(:?mswin|mingw)/
 File.expand_path(::RAILS_ROOT)
# Otherwise use Pathname#realpath which respects symlinks.
else
 Pathname.new(::RAILS_ROOT).realpath.to_s
end
---

この部分、コメントに「Windowsの場合はFile.expand_pathを使った方が安全」と書いてあるくせに、なぜかOSの判定に失敗しているようで、else以下に制御がわたってrealpathメソッドが呼ばれている。
どうもそのrealpathの中でおかしなことになっているっぽいので、荒業ながら、

Pathname.new(::RAILS_ROOT).realpath.to_s

の部分をコメントアウトし、elseの前にある、

File.expand_path(::RAILS_ROOT)

をもってきてみました。
どうせWindowsで使うんだし(←無謀…)


---
** endor/rails/railties/lib/initializer.rb
@root_path =
# Pathname is incompatible with Windows, but Windows doesn't have
# real symlinks so File.expand_path is safe.
if RUBY_PLATFORM =~ /(:?mswin|mingw)/
 File.expand_path(::RAILS_ROOT)
# Otherwise use Pathname#realpath which respects symlinks.
else
 Pathname.new(::RAILS_ROOT).realpath.to_s
end
---

これでどうだ!と、再度 jruby -S glassfish を実行してみたところ、今度はさっきよりもっと派手なエラーが出て、やっぱりアプリケーションは立ち上がりません。

---
C:\host\redmine>jruby -S glassfish
2008/12/03 0:59:55 com.sun.enterprise.glassfish.bootstrap.ASMain main
情報: Launching GlassFish on Apache Felix OSGi platform
2008/12/03 0:59:55 com.sun.enterprise.glassfish.bootstrap.ASMainOSGi findDerbyCl
ient
情報: Cannot find javadb client jar file, jdbc driver not available

Welcome to Felix.
=================

2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle org.glassfish.core.kernel [23]
2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle org.glassfish.common.common-util [12]
2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle GlassFish-Application-Common-Module [19]
2008/12/03 0:59:56 APIClassLoaderService createAPIClassLoader
情報: APIClassLoader = Class Loader for Bundle [GlassFish-Application-Common-Mod
ule [19] ]
2008/12/03 0:59:56 HK2Main$HK2ServiceTrackerCustomizer addingService
情報: registering service = org.apache.felix.framework.StartLevelImpl@15e3dc4, c
ontract = org.osgi.service.startlevel.StartLevel, name = null
2008/12/03 0:59:56 HK2Main$HK2ServiceTrackerCustomizer addingService
情報: registering service = org.apache.felix.framework.PackageAdminImpl@e3fd79,
contract = org.osgi.service.packageadmin.PackageAdmin, name = null
2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle org.glassfish.branding.branding [22]
no resource bundle found for version, using default GlassFish version
2008/12/03 0:59:56 AppServerStartup run
情報: [Thread[GlassFish Kernel Main Thread,5,main]] started
2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle org.glassfish.common.internal-api [15]
2008/12/03 0:59:56 OSGiModuleImpl start
情報: Started bundle org.glassfish.admin.config-api [25]
2008/12/03 0:59:57 OSGiModuleImpl start
情報: Started bundle org.glassfish.deployment.deployment-autodeploy [16]
2008/12/03 0:59:57 OSGiModuleImpl start
情報: Started bundle org.glassfish.deployment.deployment-common [17]
2008/12/03 0:59:57 OSGiModuleImpl start
情報: Started bundle org.glassfish.flashlight.flashlight-framework [18]
2008/12/03 0:59:57 com.sun.enterprise.v3.services.impl.GrizzlyProxy start
情報: Listening on port 3000
2008/12/03 0:59:57 com.sun.enterprise.v3.services.impl.GrizzlyService postConstr
uct
情報: Network listener http-listener-2 on port 8181 disabled per domain.xml
2008/12/03 0:59:57 com.sun.enterprise.v3.services.impl.GrizzlyProxy start
情報: Listening on port 4848
2008/12/03 0:59:57 com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter setSt
ateMsg
情報: The Admin Console Application is not yet installed.
2008/12/03 0:59:58 OSGiModuleImpl start
情報: Started bundle org.glassfish.scripting.gf-jruby-connector [8]
2008/12/03 0:59:59 OSGiModuleImpl start
情報: Started bundle org.glassfish.scripting.grizzly-jruby-module [9]
2008/12/03 1:00:00 com.sun.grizzly.jruby.rack.RackApplicationChooser getFactory
情報: Detected Rails application
2008/12/03 1:00:00 com.sun.grizzly.jruby.rack.RackApplicationChooser getFactory
情報: Rails Version: 2.0
2008/12/03 1:00:00 com.sun.grizzly.pool.DynamicPool logDynamicStatus
情報: Pool started without dynamic resizing enabled. Pool will not attempt to de
termine the upper and lower bounds that it should be using, and will stay at 1
2008/12/03 1:00:05
致命的: JRuby limited openssl loaded. gem install jruby-openssl for full support
.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
2008/12/03 1:00:05
致命的:

2008/12/03 1:00:10
情報: GLoc v1.1 running in development mode. Strings can be modified at runtime.

2008/12/03 1:00:10
情報:

2008/12/03 1:00:10 com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter initial
izeObject
致命的: Error initializing rack application!
2008/12/03 1:00:10
致命的: com.sun.grizzly.jruby.rack.RackInitializationException: no such file to
load -- rack
from <script>:1

2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.DefaultRackApplicationFactory.crea
teApplication(DefaultRackApplicationFactory.java:171)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.DefaultRackApplicationFactory.newA
pplication(DefaultRackApplicationFactory.java:72)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initial
izeObject(RackApplicationPoolAdapter.java:43)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initial
izeObject(RackApplicationPoolAdapter.java:16)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.pool.DynamicPool$1.run(DynamicPool.java:394)
2008/12/03 1:00:10
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Thread
PoolExecutor.java:885)
2008/12/03 1:00:10
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool
Executor.java:907)
2008/12/03 1:00:10
致命的: at java.lang.Thread.run(Thread.java:619)
2008/12/03 1:00:10
致命的: Caused by: org.jruby.exceptions.RaiseException
2008/12/03 1:00:10
致命的: at Kernel.raise(C:/host/redmine/vendor/rails/activerecord/lib/..
/../activesupport/lib/active_support/dependencies.rb:499)
2008/12/03 1:00:10
致命的: at Object.require(<script>:1)
2008/12/03 1:00:10
致命的: at (unknown).(unknown)(:1)
2008/12/03 1:00:10
致命的: Exception in thread "pool-8-thread-1"
2008/12/03 1:00:10
致命的: java.lang.IllegalStateException: Rack initialization failed!
2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initial
izeObject(RackApplicationPoolAdapter.java:49)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.jruby.rack.RackApplicationPoolAdapter.initial
izeObject(RackApplicationPoolAdapter.java:16)
2008/12/03 1:00:10
致命的: at com.sun.grizzly.pool.DynamicPool$1.run(DynamicPool.java:394)
2008/12/03 1:00:10
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Thread
PoolExecutor.java:885)
2008/12/03 1:00:10
致命的: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPool
Executor.java:907)
2008/12/03 1:00:10
致命的: at java.lang.Thread.run(Thread.java:619)
2008/12/03 1:00:10 com.sun.grizzly.jruby.RailsAdapter <init>
情報: Jruby version is: 1.1.5
2008/12/03 1:00:10 org.glassfish.scripting.rails.RailsDeployer load
情報: Loading Rails application redmine at /
2008/12/03 1:00:10 com.sun.enterprise.v3.server.AppServerStartup run
情報: GlassFish v3 Prelude startup time : Felix(1032ms) startup services(14078ms
) total(15110ms)
---

ログがしきりにRack、Rackと叫んでいるのを見て、
「そういえばこのJRubyにRackのgem入れてなかったかも…」
と思い立ち、さっそくgemをインストール。

---
jruby -S gem install rack
---

そして再びRedmineのルートディレクトリ内で、

---
jruby -S glassfish
---

…ばんざーい、今度は無事起動しました!
まぁ画面は前回と全く同じですが、せっかくなのではっておきます :-)


 

2008年12月1日月曜日

Substruct on GlassFish

Substructというソフトウェアをご存知でしょうか。SubstructはEC、つまりイーコマースのための様々な機能がオールインワンで詰め込まれたオープンソースのソフトウェアです。

私はもともとイーコマースで食っていた人間なので、この手のツールにはつい気を引かれてしまいます。
EC向けのOSSではosCommerceやEC-CUBE、Zen-cartなどがよく知られていますが、SubstructはRuby on Rails で作られているという点で、やや趣の異なる関心を抱いています。


さて、我らが(?)Arun Gupta氏が、このSubstructをGlassFish上で動かすという記事をブログに書いていらっしゃいます。ちょっと翻訳させてもらいましたので、宜しければご覧ください :-) (※2008/12/1現在、まだ一部未訳箇所が残っているのですが・・・)
http://wiki.glassfish.java.net/Wiki.jsp?page=Substruct_on_glassfish_1Ja


Redmineも無事動いたことだし、次はSubstractを触ってみようかなー。
 

2008年11月24日月曜日

Redmine on GlassFish -5

えー、しつこく Redmine on GlassFish にこだわっています(笑)
(別にそれほどRedmineが好きなわけではないのですが、やり始めてしまったのでなんとなく…)


先日の Deploy 成功後、ローカライズ文字が正しく表示されなかった件について。
GlassFish QalityチームのMLに質問を投げたり、ログを調べたりと悪あがきを続けた結果、ついに原因を突き止めました。


原因:ズバリ、WARファイルにlangディレクトリが入っていなかった。


幽霊の正体見たり枯れススキ、というのはこういうことを言うんでしょうか…(--*


Redmineにはルートディレクトリの配下にlangというディレクトリがあり、この中に各国語へのローカライズ用文字列を格納したリソースファイルみたいなのが入っています。Redmineはこれらのリソースファイルを参照して画面表示などを行うため、それがなければ当然ながら正しい表示は行えません。

で、Warblerはデフォルトの状態ではこのlangディレクトリをWARファイルに含めてくれないのです。フタをあけてみれば「なーんだ」というような話ですが、RubyにもRailsにも疎い私にとって、解明まではイバラの道でした。

WarblerがWarファイルに含めるファイル/ディレクトリはWarblerのコンフィグファイル(通常rails_root/config/warble.rb)を操作して変更することができるので、langディレクトリを含めるよう修正。

こんな感じです↓
-------------------------
# Application directories to be included in the webapp.
config.dirs = %w(app config lib log vendor tmp lang)
-------------------------

しかるのちに jruby -S warble でWARファイルを作り直せば、langディレクトリがきちんと入ったredmine.warが完成です!

早速GlassFish v3 prelude にDeployしてみましょう。




…やったー、今度はきちんと表示されました!

なお、GlassFish v3を使うと、RailsアプリケーションをWAR化しないでディレクトリからそのままデプロイすることも可能、なのですが、これは今のところ上手くいっていません。
デプロイまではできるのですが、なんだかよく分からない例外がスローされて画面が出てきてくれないのです。

まぁ、こちらもきっと私が何かを見落としているのでしょう…(-。-
地道に頑張りたいと思います。

2008年11月22日土曜日

工人舎SR買いました♪

ちょっと前から欲しかったモバイルミニパソコン。

携帯性を取るか機能を取るか、はたまた性能を取るかで散々悩んだ挙句、とうとう工人舎のSR8WP06というモデルを購入してしまいました。
http://jp.kohjinsha.com/models/sr/index.html

SR8WP06は、いわゆる7型のコンパクトなボディーに光学ドライブを搭載したモデル。
その分、他の7型モデルと比べると若干重くなっているのですが、通勤カバンに入れて持ち歩くのにさほどの抵抗は感じないレベルです。

セットアップ完了後にまずやったのはJavaとJRuby、そしてGlassFishのインストール。
GlassFishのGUI版コンソールが問題なく動いています :-)

ハードディスクが50MBくらいあるようなので、HudsonやMigration Tool、あとMySQLなんかも入れてみようかなと思っています。
高くて重いMS-Officeは一切インストールしないことに決めました。原稿書きは秀丸かワードパッドでやることにします。


写真はGlassFishのGUI版管理コンソールを起動した状態のSR8WP06。
隣にあるのはサイズ比較用のカロリです(タバコは吸わないもので…)



このモデル、定価は約10万円くらいなのですが、メーカー直販のアウトレット(箱破損品)が半額くらいで販売されていたので迷わずそちらをGet。
http://www.kohjinsha.com/models/outlet/sr8wp06a.html

破損というほどの破損は見当たらず、本体にも付属品にもなんら問題はありません。
まだ5台ほど残っているらしいので、購入を迷っている方はいかがでしょうか :-)

そうそう、このモデルのOSはWindows Vistaなのですが、私はあまり賑やかなUIが好きではないので視覚効果を片っ端からオフにしてみたところ、Windows2000かとみまごうばかりの古き良きデスクトップになりました。
Vistaを使うのは今回が初めてですが、色々と変わった機能もあるようなので、おいおい試していきたいと思います。
 

Reviewerさんを探しています

今日は私的なお願いです。

今、ある出版社さんからご依頼を頂いて単行本を執筆しているのですが、その本の原稿レビューをして頂ける方を探しています。

時期は今年の年末~来年の1、2月くらい。
ボリュームは、まだちょっと確定していないのですが、多分本のページにして300~400の間くらいです。テーマはJavaで、内容的にはそれほど高度なものではありません。

技術レビューのチェックとあわせて、可能な範囲での誤字脱字チェック、ユーザ視点での文章レビュー(文章としての読みやすさの検証など)といったところも見て頂けると助かります。
(ビンボーライターなのでたいしたことはできませんが、若干の謝礼は用意させて頂きたいと思っています)

詳細および条件等につきましては、以下までメールにてお問い合わせ頂ければ幸いです。
kana[dot]akmt[at]gmail[dot]com (※[dot]と[at]はそれぞれ置き換えてくださいね:-) )


※お問い合わせを頂いてからお返事を差し上げるまでに、2~3日お時間を頂く場合がございます。なお、Blogをチェックできない日がしばしばございますので、恐れ入りますがこちらへのコメントによるお問い合わせはお控えください(お返事できない場合があります)

※人数は2~3人を予定しています。

2008年11月16日日曜日

Redmine on GlassFish -4

JRuby 1.1.5 の最新版でRedmineが動いたのに気をよくして、
立て続けに Redmine on GlassFish v3 も試してみました。

結論からいうと、若干の "問題" は残されているものの、
とりあえずRedmineが動きました!

残されている "問題" については後日改めて検証することにして、
まずはRedmineをGlassFishにのせるまでの手順をご紹介しておきます。


1. warblerをインストール
ディレクトリをまるごとDeployするやり方もあるのですが、
今回はWARファイルを作って、それを配備してみます。
JRuby on Rails アプリケーションをWar化するには、
Warblerというツールを使います(GoldSpikeというのもある)。

WarblerはRubyGemsでインストールできるので、
以下のようにしてJRuby環境にインストールします。

jruby -S gem install warbler


2. warblerのconfigファイルを作成
WarblerはWebアプリケーション用の設定ファイル(web.xml)を
自動生成してくれますが、この内容に手を入れたい場合は、
Warファイルを作成する前にconfigファイルを修正します。

Warbler用のconfigファイルは、次のようにコマンドを実行して
作成します。

jruby -S warble config

⇒ /config/warble.config というファイルができる。

※Warblerがデフォルトで作成するweb.xmlファイルでは、
Railsの環境(RAILS_ENV)がproductionになっています。
開発用のデータベースしか作成していない場合は、
この部分を「development」に修正する必要があります。

# Value of RAILS_ENV for the webapp -- default as shown below
config.webxml.rails.env = ENV['RAILS_ENV'] || 'development'


3. Warファイルの作成
configファイルを修正したら、いよいよWarファイルを作成します。
これは簡単。
次のようにコマンドを実行すれば、Redmineのルートディレクトリ直下に
redmine.war が作成されます。

jruby -S warble


4. GlassFishのdomain.xmlにJRubyのパスを追加
今度はGlassFish側の設定を行います。
GlassFishのdomain.xmlの中に、Redmineの実行に使うJRubyへの
パスを設定します。

<GlassFish_Home>\glassfish\domains\domain1\config\domain.xml

というファイルを開くと、下の方に <java-config ...>というエレメントが
ありますので、この中に以下のように一行書き足します。

<java-config ....>
...................
...................
<jvm-options>-Djruby.home=C:\jruby\trunk</jvm-options>
</java-config>

※実際に使用するJRubyのインストール先フォルダを指定して下さい。

5. GlassFishを起動
これで準備は完了です。GlassFishを起動してみましょう。

asadmin start-domain

6. Warファイルを配備
GlassFishが起動したら、Redmineを配備します。
GlassFish v3 には GUIベースのかっこいい管理画面もあるのですが、
今回はめんどうなのでコマンドラインから。

asadmin deploy c:\host\redmine\redmine.war

配備完了のメッセージが出れば準備はOKです。
ブラウザに以下のURLを入力してみましょう。
http://localhost:8080/redmine/


やったー、GlassFish上でRedmineが動いた!



…と思ったら、あら?なんか表示がヘンなような…
(リソースファイルへの参照が正しく行われていない?)


少々問題は残されているものの、
エラー画面しか出なかった数日前の状況から考えれば大きな進歩です^^

というわけで、本日はここまで。

【補足】
GlassFish v3 Prelude には、JRuby on Railsアプリケーションの
配備解除が正しく行えない、という不具合が残っています。
この不具合はPreludeでは修正対象からはずされたようですが、
Finalリリースで改修されると聞いています。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=6610

配備したRailsアプリケーションの配備解除は、
以下のような手順で行ってみてください。
(正規の手順ではないですが、私はいつもこうやっています)

---
1. asadmin undeploy xxxxx (xxxxxはアプリケーション名)
2. asadmin stop-domain
3. タスクマネージャなどでプロセスを強制終了
4. 以下のフォルダを手動で削除
* <GlassFish_Home>\glassfish\domains\domain1\applications\xxxxx
* <GlassFish_Home>\glassfish\domains\domain1\generated\jsp\xxxxx

2008年11月15日土曜日

Redmine on GlassFish -3

前回、JRubyでの起動に失敗したRedmine。
CRubyでは一応起動できたものの、まがりなりにもJRubyファンを
名乗っている身として、これで満足しているわけにはいきません。


さて、どうすべい…と思い悩んでいたところへ、
先日のエントリを読んで下さったという大場 光一郎氏から
「エラーについて検証してくださる」という
ありがたいメールを頂きました。

こ、こんな有名な方の目にわたくしごとき者のブログが晒されていたとは!
おそれおののきつつ(?)、つつしんでログをお送りしたところ、
大場氏の環境では特に問題なく動いたとのお返事が…

「やっぱワシが悪かったんけ!!」(←うる星やつらのランちゃん風に)


というわけで、本日は問題を解明すべく、
Redmineとがっぷりよつに組み合ってすごしました。

Redmineを新しいものに変えたり(0.7.3-->0.7-stable)、
config/environment.rb の内容をいじってみたりと
あれこれ試してみたのですが、効果ナシ…

うーん、何が原因かなー、と首をひねりつつ、ふと思い立って
「MissingSourceFile」で検索をかけてみたら、
JIRAのこんなIssueを見つけました。
http://jira.codehaus.org/browse/JRUBY-3115
http://jira.codehaus.org/browse/JRUBY-3135


この問題が直接今回のエラーに関係しているかどうかは不明ですが、
ものはためしでJRuby1.1.5を最新版にしてみるか、とtrunkから
ソースをもらってビルドし、そちらで起動をかけてみたところ、

「あらやだ!」

…というくらいあっけなくRedmineのスタートページが表示されました。
ブラボー!

大場さんのご助言に感謝しつつ、次はいよいよRedmine on GlassFishに
チャレンジしてみたいと思います。

2008年11月13日木曜日

招き猫いろいろ

今日はテクノロジーとは何の関係もない話ですが、イーコマース時代のお友達がこういうものを売っています。

ここはもともと九谷焼の器を専門に販売しているお店なのですが、ためしにチビ招き猫を売り始めたところ大人気となり、シリーズ物に育ったのだとか。
(ちなみに私も定番ちゃんいちごぐるみを持っています :-) )

和座さんの招き猫には根強いマニアが多いため、新バージョンが出るとオークション開催と同時にあっという間に完売してしまうことも…
クリスマスにはサンタバージョンが再販されるかな?とちょっと楽しみにしています♪

ちなみに現在販売されているのは、なんと黄金の招きパンダ。ひそかに買おうかどうか迷ってます。
なお、このパンダは Made in Japanプロジェクトさんのアンテナショップ、ジカバーニッポンでも販売されているというハナシなので、ミッドタウンに行かれる方はぜひ覗いてみてください。


私の地元も焼き物で有名なところなのですが、九谷焼は重厚な趣があって素敵ですよね。
個人的に緑釉を使ったものが好きなので、このフクロウにも非常に惹かれます。
近場の焼き物だと黄瀬戸というのがとても好き。茶碗やら湯のみやら色々集めて楽しんでいます。

年を取って現役を引退したら、気ままに土をこねて陶器を作りながらのんびり暮らしたいなぁ。

2008年11月7日金曜日

Redmine on GlassFish - 2

昨日のエントリの続きです。


最後にひっかかった「インデックスが長すぎて rake aborted! 」の原因は、どうやら MySQL のバグ(というか仕様?)にあったようです。
MySQLではインデックスは最大767バイトまでということになっているらしく、文字セットがutf-8だとバイト数が増えてそれをオーバーしてしまうのだとか。

原因は分かったものの、あちこち検索してみてもRedmineに絡めてその対応策を説明しているサイトが見つかりません。悩んだ末、とりあえずrakeが中断するところまでmigrationを進めておいて、その状態でMySQLのコンソールから、

alter table changeset set character set latin1;

という荒技を使ってみました。

これが正しいやり方なのかどうかはわかりませんが、これでようやく rake db:migrate が最後まで動くようになりました :-)


さて、DBの準備も整ったのでいよいよアプリケーションを起動してみよう…ということで、

jruby script/server

でWEBRickを起動。
http://localhost:3000 にアクセスしてみたところ、今度はこんなエラーが…


-------------
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:100:in `require_or_load'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:60:in `depend_on'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:442:in `require_dependency'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:141:in `prepare_application'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:178:in `run_callbacks'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:175:in `each'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:175:in `run_callbacks'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:114:in `dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:126:in `dispatch_cgi'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:9:in `dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:112:in `handle_dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:78:in `service'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
:1:in `start'
-------------------------

うーん、なんだかよく分かりませんが、何らかのモジュールの読み込みに失敗している?
自分の間違いなのかJRubyが悪いのか判断に迷ったので、思い切ってCRubyで動かしてみることにしました。

JRuby側のWEBrickを一旦とめて、

ruby script/server

でもう一度サーバを起動し、祈るようなキモチで http://localhost:3000 にアクセス。


今度は無事動きました!










デフォルトの管理者ユーザでログインしてユーザ情報を変更し、ついでにプロジェクトの新規作成などにもチャレンジしてみましたが、特に問題なく動くみたい。
CRubyでちゃんと動くということは、原因はJRubyサイドにあるのでしょうか…(それとも私が何かとんでもないポカをやらかしている?)


ともあれ、ひとまずRedmineのインストールはなんとか完了しましたので、次はいよいよRedmine on GlassFish にチャレンジしてみたいと思います(が、上記のエラーの原因がJRubyだとしたら動かないような気も…)。

Redmine on GlassFish

ちょっと前に訳させていただいたArunさんのBlogを読みつつ、Redmine on GlassFish に挑戦しています。

RedmineはRuby on Railsで作られたプロジェクト管理ソフトウェア。
GlassFishとJRubyを組み合わせればRailsアプリを動かすことができるので、RailsとJRubyの勉強も兼ねて、ちょっと触ってみようと思い立った次第です。


さて、このエントリを読むとものすご~く簡単に出来るように思えるのですが、実際にはあちこちに小さなワナが…。

まず、RedmineはRailsのバージョンを選ぶため、ダウンロードしたRedmineのバージョンによっては「Railsのバージョンがチガウ!」と怒られてしまう。Railsを入れなおすか環境設定を手直しするかで対応する必要があります。

Railsのバージョンの壁を乗り越えると、次は「database.ymlがナイよ」の試練。
「えー、そんなぁ(涙)」…とつぶやきつつconfigディレクトリをのぞいたところ、なんと database.yml が database.yml.example なんて名前で格納されている。
ナイわけです。
ファイル名をdatabase.ymlに変更し、ついでにDBユーザ名やパスワードなども編集。


続いて立ちはだかるのが、「rake db:migrate」の壁。
JRuby 1.1.4 + Rails 2.0.2 でマイグレーションを実行しようとすると、YAMLに絡んだエラーが発生するのです。調べたところ似たようなバグが1.1.2の頃にJIRAに登録されていたのですが、例外クラスの名前が微妙に違う上、「もう直ったのでクローズします」みたいなことが書いてある。

このへんの原因を追求できるほどRubyの知識は持ち合わせていないため、ヤケっぱちでJRubyのバージョンを1.1.5に上げてみたところ、とりあえず db:migrateは動いてくれました。ホッ…

ところが、マイグレーションも終わりに近づいた頃に、突如インデックスが長すぎるとかいうお叱りを受け、問答無用の "Rake aborted !"(涙)

またもや「えー、そんなぁ…」とぼやいたところで、残念ながら本日はタイムオーバー。GlassFishに乗せる以前のところで躓きまくってしまいましたが、引き続き頑張りたいと思います。

なんとなく後ろめたい気分を感じつつ、明日はCRubyを使ってRakeしてみようかな、などとも思ったりして…


とりあえず解決策が明確なものについては、Arunさんのブログ翻訳記事に追記をしておきました :-)

 

2008年11月1日土曜日

GlassFish v3 Prelude Final Build is Now Available !

待望の GlassFish v3 Prelude、ファイナルビルドがついにリリースされました♪
https://glassfish.dev.java.net/downloads/v3-prelude.html

FishCATプログラムをきっかけとしてGlassFish Qualityチームの一員となった私も、なんというか、甥っ子の入学式に立ち会う叔母さんみたいな晴れがましい気分を感じていたりします :-)


Windows版にはexe形式のインストーラが付属しているものもあり、v2に比べていろんな意味で親切になっているように思います。ぜひダウンロードして試してみてください。
Ruby on Railsアプリケーションの配備環境としてもオススメです!

2008年10月25日土曜日

TEF東海勉強会

今日はTEF東海部会の勉強会に参加してきました。

TEFとはTest Engineer Forum の頭文字をとったもので、その名の通り、テストを生業とするエンジニアの交流を目的として運営されている組織です。TEFそのものは日本全国を対象とした割と大規模な集まりで、東海部会は、いわばその中の分家のような位置づけだとか。

勉強会を開始するのは今回が2度目とのことでしたが、10名近い参加者が集まり、なかなか賑やかな会になりました。

参加してみてちょっと驚いたのは、参加者の8割が組み込み系の開発に携わる方だったこと。
私はソフトウェア開発の世界に足を踏み入れてかれこれ13年になりますが、基本的に業務系システム一本やりできたため組み込みの世界についてはほとんど知識がありません。

皆さんのお話を聞いていて、同じ「ソフトウェア開発」といっても随分おもむきが違うものだなぁと感心することしきり。色々と面白い話も伺えて、大変有意義な時間を持てました :-)

そうそう、組み込み業界の人は業務系システム開発の世界を「エンプラ系」と呼ぶのですね(エンタープライズだからエンプラ…いえ、一般的な表現なのかどうかは分かりませんが)。
はじめのうち、皆さんがエンプラ、エンプラと連呼するのが「天ぷら」に聞こえ、何の話かサッパリ分からず間抜け面をさらしていた私です。

組み込み系と"エンプラ系"、異なる部分も多いですが、品質検証に関するノウハウには共有できるものがありそうですし、逆に互いの文化から学べるものも多いような気がします。
 

2008年10月11日土曜日

FishCAT その後

先日のエントリでご紹介したFishCATプログラムですが、プログラムそのものは10月上旬頃(9月下旬かも…)に一旦終了した模様です。
私が参加したのは9月も末に近づいた頃なので、参加した途端に終わっちゃった、という感じです。重箱のスミをつつくようなIssueを3つほどレポートし、マネージャのJudyさんに、
"You're a detailed tester."
と、ほめられてんだかけなされてんだか良く分からないお言葉を頂いたりして、結局CAT Pointというのを10ほどもらいました(何に使えるのかは分かりませんが…)。

OSSの品質検証に参加したのは初めてでしたが、品質検証アーキテクトを志す私にとって、とても良い経験となりました。

期間中とても感銘を受けたのは、プロジェクトを率いているJudyさんのきめこまやかなフォロー。
メンバーの誰かがMLに意見をPostしたりIssueを登録したりすると、必ず何らかのメッセージを返してくれていました。特に新参者にとっては、MLにメッセージを投げるのは結構勇気がいるものです。投げたメッセージが非難を浴びればそれはそれで辛いですが、反応ゼロでは逆に寂しいし、却って不安になったりもします。
メンバー一人ひとりに親身に接しつつ、水面下でプロジェクトの流れをコントロールする手腕には脱帽しました。


FishCATは終了しましたが、GlassFishの品質検証からは学べることがたくさんありますので、今後も出来る限り時間を見つけて参加していきたいと思っています。

誘ってくださったjack_sparrowさんに感謝!
 

2008年10月9日木曜日

Ubuntuをインストールしてみました

最近仕事の関係でLinuxを時々使うのですが、長年Windowsに慣れ親しんできたため、何から何まで分からない事だらけ。
仕事中だけでは追いつかないので、自宅の古いPCにLinuxを入れてみようと思い立ちました。

どのディストリビューション(というのでしょうか、ちょっと背伸びして専門用語 :-))にしようか迷ったのですが、とりあえず、使いやすいとうわさのUbuntuの、日本語ローカライズドデスクトップCDをダウンロード。
見よう見まねでCDを焼いて、張り切ってインストールを開始しました。


勢い込んで始めたものの、PCの性能の問題なのか、通常モードでは何度やっても途中でインストールが止まってしまう。
悩んだ挙句、設定画面をあちこち探して「セーフティグラフィックスモード」とやらで実行したところ、なんとかインストールは終わりました。
が、再起動してログインしてみても、依然としてデスクトップ領域が超ミニサイズのまんまです。解像度を変えようと設定画面を出してみたものの、ドロップダウンに他の選択肢がナイ。

「まあいいか、小さくても」
とひとまず使い始めてみたのですが、ダイアログが画面からはみ出したりしてやっぱり不便。しかも、入力メソッドとかいうソフトウェアを入れないと日本語入力はできないらしい…

「Linuxコマンドの練習だけなら、日本語入力なくてもいいか」と、気を取り直してターミナルを起動したところで、…あれっ、rootのパスワードって何だっけ?そういえば設定した覚えもないぞ。

すったもんだの挙句、ネットを検索してこんな情報を発見

苦い挫折を味わった7年前のRedHat Linuxインストールから思えば、Ubuntuのセットアップは確かに夢のような手軽さでした。とはいえ、Linux初心者の私にはまだまだ前途多難なムードです :-|


今年中にはUbuntuの上で JRuby on GlassFish を動かせるところまで成長したいと思います。
 

2008年10月1日水曜日

GlassFish Awards Program (GAP) 受賞しました!

私事にて大変恐縮ですが、このたび GlassFish Community Awards (GAP) にて賞をいただくことができました。

GlassFish Awards Program - Results are in!


GAPはSun Microsystems社が展開しているオープンソースコミュニティ・イノベーションアワード・プログラムのひとつです。
Bug Report/Contributionの二つの部門で開催され、総勢300人を超える応募者から合計102人の受賞者が選ばれました。

私が受賞したのは Contribution部門。GlassFish Wikiの翻訳でBase Prizeという賞を頂きました。



ぐらじぇ~仲間に勧められてこわごわ応募したのですが、こんな大それた賞を頂けるなんて夢みたい…。
賞を頂けたこと自体も勿論とても名誉な事なのですが、なんといっても、和気藹々と頑張ってきたWiki翻訳の功績が認められのが嬉しいです :-) 
これを機会に、日本チームがもっともっと世界中から注目されるようになるといいな。

今後もWiki翻訳を中心に、機会があればツールのローカライズなどにもチャレンジしてみたいね、とみんなで話しています。

応募を勧めて下さったoginoさん、よっしーさん、Shiodaさん、そして応援して下さった皆さま、本当にありがとうございました!


◆受賞紹介記事1(アクエリアム):
GAP 結果: グラジェーからはカナさんが受賞

◆受賞紹介記事2(寺田 "よっしー" さんのブログ):
GlassFish Award Program(GAP)

◆ブラジル・Sun TechDaysでの様子
GlassFish Awards Program - Brazil!
※この大きな小切手みたいなやつ、いいな~

-------------
GlassFishに興味をお持ちで「何かやってみたいな…」と思っていらっしゃるあなた、ぐらじぇ~仲間になりませんか? :-)

GlassFish.jpへの参加はこちらから…

-------------

2008年9月23日火曜日

FishCAT!

glassfish.jpでご一緒しているjack_sparrow船長のお誘いで、FishCATプログラムに参加することになりました。

FishCATプログラムというのは、一言でいうと、GlassFish v3およびその関連ドキュメントなどの品質検証をみんなでやろうよ、というようなプロジェクトです。

以下、上記のWikiからの引用です:

>>
本プログラムのゴールは、GlassFish V3 のテストに初期からコミュニティメンバーに参加してもらうことです。参加者は製品のユーザビリティ、品質、パフォーマンスに関してフィードバックを行います。その見返りとして、参加者には GlassFish V3 の品質に大きく影響を与えたり、もしくは品質を向上させたりする機会が与えられます。
<<

色々と分からないことが多いため、glassfish.jpメンバーの皆さんに手助けして頂きつつ、まずはWindows用インストーラの動作確認に着手。
もともと三度のメシのその次くらいにテストが好きなので、
「プライベートもテストができるなんて!」
と、ホクホクしながらやっています :-)


エンジニア仲間に「テストが好き」というと「珍しいね」と返されることが多いのですが、対象を徐々に完成に近づけていく過程って、たまらなくエキサイティングだなぁと思うのです。





(その割に、自分の書く本は誤字脱字だらけだったりもするのですが…(深く反省))

2008年9月10日水曜日

ArunさんBlog翻訳:Hudson編

随分前に着手し、その後マイグレーションツールのヘルプに追われておあずけになっていた、ArunさんのBlog、『Hudson ・10 の特徴』
マイグレーションツールの方がなんとか一段落しましたので、ようやく仕上げることができました :-)

Hudsonの特徴(というか、セールスポイントというか)が簡潔にまとめられていますので、ぜひ読んでみてください。

2008年9月3日水曜日

そういえば

以前ここでご紹介した Duke with GlassFish ですが、その後、ぐらじぇ~でご一緒している Shioda さんのところにお嫁入りし、先日のJava Hot Topics でデビュー(?)させて頂きました。

寺田さんSusukiさんという方がブログで紹介して下さっています(嬉しかったのでリンクしてみました)。


ちなみにぐらじぇ~メンバーのjack_spallaw船長は海賊Dukeを制作予定とか…
DukeとGlassFishをたくさん作ってギャラリーみたいに並べたら面白そうですね :-)

しゃちほこオラクル倶楽部

このところ仕事に追われてさぼりまくっておりましたが、ちょっとばかり元気が出たので久々にブログ更新します。

今日はオラクル中部支社さん主催のセミナーへお邪魔してきました。
題して「しゃちほこオラクル倶楽部・ここからはじめようOracle入門


「オマエ今からはじめるのか!!」
…という声が聞こえてきそうですが、60の手習いって言葉もありますし、まぁ、遅すぎるということはないでしょう(多分)。

これまでOracleはアプリケーション側から使う方専門で、舞台裏がどうなってるのかはあまり気にせずにいたのですが、今日のセミナーではそのあたりをとても丁寧かつ簡潔に説明して頂けて大変勉強になりました。

しかし、たまに外部のセミナーに参加すると良い刺激になりますね。
開発プロジェクトに参加しているとなかなか時間が自由になりませんが、1~2ヶ月に一度くらい、機会を作って勉強していきたいなと改めて思いました。

2008年7月25日金曜日

ぐらじぇー:仲間が増えました!

ぐらじぇーWiki翻訳プロジェクトに、先日から新しい仲間が二人増えました。

NさんとTさん。
お二人ともバリバリのエンジニアで、経験に裏打ちされた豊富な知識はさすがです。お昼休みや帰宅後の時間を利用して、

「ここってどうやって訳すのがいいかな?」
「これはこういう意味でOK?」

…みたいなやりとりをML上でかわしつつ、楽しく翻訳を進めています。


「私もやってみたいな~」と思われた方は、ためらわずご参加下さい!

↓↓↓詳しくはこちらから↓↓↓↓

GlassFish 日本語 Wiki プロジェクト

2008年7月15日火曜日

Arun GuptaさんのBlog翻訳 -Redmineシリーズ

GlassFish.jp(ぐらじぇー)Wiki翻訳プロジェクトでやっている英文ブログの翻訳で、Arun Guptaさんのブログエントリをいくつか訳させてもらっています。

今回新たに以下のエントリが加わりましたので、宜しければぜひご覧下さい。
GlassFishにRedmineをインストールする手順が紹介されています。

Redmine を GlassFish 上で動かす - Ruby on Rails で書かれたプロジェクト管理ツール

JRuby 1.1.3 リリース間近…

JRuby開発者MLでの会話によると、今週末くらいにはJRuby1.1.3がリリースされるようですね。

1.0ではCRubyとの互換性を、1.1系ではパフォーマンスを追及してきたJRubyですが、次期バージョンはJava Integrationの強化に焦点を当てて開発が進められていく模様。

2008年7月12日土曜日

Duke with GlassFish !?

前回なんちゃってでゅーくを作成した際にちょっと粘土があまっていたので、調子に乗って「Duke with GlassFish」を作ってみました。



JavaOne報告会 in Nagoyaで大渕さんが見せてくださったあの画像にInspireされて「GlassFishを抱くDuke」の構図にしてみたのですが、


これは「釣果を自慢する釣り人」ですね…(^^;


せめてGlassFishを可愛くしようと思い、瞳をつぶらなカンジにしてみました。
骨が透けて見える感じを演出するのにちょっと工夫がいりましたが、どうでしょう。雰囲気出てますか?
 


 

Rubeusメンバー募集中

↓のエントリにRubeusのことを書きましたので、改めて紹介させて頂きます。


Rubeusは仕事仲間のAkimaさんが始めたプロジェクトで、JRuby用のライブラリ開発を中心に、RubyとJavaを楽しくするための活動を行っています。

「Rubeus」はラテン語で「赤い」という意味で、「JavaをRuby色に染め上げよう!」というのがプロジェクトのコンセプト。染め上げる、というと少し御幣があるのかな…要はJavaのいいところとRubyのいいところをともに活かして開発を楽しくしたいね、というのがRubeusの思いです。


現在はSwingのコンポーネントをより手軽に扱うためのライブラリを開発していますが、今後はJDBCなどの他の機能にも挑戦していく予定です。RubyGemを使って簡単にインストールできるので、JRubyをお使いの方はぜひ試してみてください!



jruby -S gem install rubeus



◆サンプルコードはこちら◆


Rubeusプロジェクトには現在9名のメンバーがいます。
始まったばかりのプロジェクトなのでまだ色々とバタバタしていますが、楽しいことの好きな人が集まっていますので、今後も色々と面白いことをやっていけるんじゃないかなぁ。
興味のある方はぜひご参加くださいね :-)

http://code.google.com/p/rubeus/
 

Hudsonその後

「Hudsonを勉強しよう」という宣言を先日したわけですが、その後、実は仕事で知らないうちに使っていたことが判明しました。
「灯台下暗し」とは、まさにこういうことをいうのではないでしょうか。
さらに親しみが増したので(?)、引き続き頑張りたいと思います。


昨日は、ドキュメンテーションをお手伝いさせてもらっているRubeusというオープンソースのプロジェクトのリポジトリを、おそるおそるHudsonに接続(接続っていうのかな?)してみました。相変わらず分かったような分からないような状況ではありますが、少なくとも「ビルドするたびに"できた"と表示するプロジェクト」からは一歩進んだといえるでしょう。地道に頑張ります。

-------------------------
◆今回学んだこと
・Subversionのリポジトリをつなげられる
・Hudsonはビルド時の履歴をためこんでおいてくれる
・ためこんだ履歴をもとに、ビルドにかかった時間や発生したエラーをグラフ表示する機能がある
・表示したグラフをどう役立てるかは、今の私には大いなる謎であります。
-------------------------
 

2008年7月11日金曜日

Hudsonな一日

昨日は不思議にHudsonと縁深い一日でした。

まずは朝、JRubyのユーザ・メーリングリストに「JRuby/Railsとあわせて使うCIコンテナで人気の高いものは?」というような投稿があり、気になって調べていたらHudsonにバッタリ。
お昼休みにはGlassFishの開発者FAQを訳していて、そこに出てきたHK2に関する資料を辿ったところ、流れ流れてHudsonに。夜はまた別のFAQを2本ほど訳したのですが、そのいずれにも川口耕介さんが登場していてその流れでやっぱりHudsonへ…。


こんな風に何かが執拗に目に付く時って、"天の声"ではないけれど、なにか大切なメッセージであったりしますよね :-)

というわけで、今日から少しずつHudsonについて勉強してみることにしました。
と言っても「継続的インテグレーションってなんじゃらほい」という、あからさまに初歩的な所からのスタートなのですが…(--* 


とりあえず最初の一歩。
恥ずかしいので、ハイレベルな技術者の方は読まないでくださいね。

-------------------------
■継続的インテグレーション(Continuous Integration)

⇒常にソースコードをビルドして頻繁に結合するという、一種のソフトウェア開発手法。

#いくつかサイトを回りましたが、豆蔵さんのサイトにあった説明が分かりやすかったです。
http://mamezou.net/modules/xfsection/article.php?articleid=102

-------------------------
■CIサーバとは
⇒継続的インテグレーションを実現するためのサーバ。

@ITの記事「常時結合のススメ」
http://www.atmarkit.co.jp/fdotnet/nagile/nagile05/nagile05_03.html

//魔亜珍・富亜裏氏…

-------------------------
■Hudson = CIサーバ

川口耕介さんによる解説。とても読みやすい。
文章の上手な方ですよね。
http://gihyo.jp/dev/feature/01/hudson/0001

ビルドするたびに「できた」と表示するチュートリアルをやってみました :-)

-------------------------


 

2008年7月10日木曜日

Ground nuts from Nigeria

母国(ナイジェリア)に里帰りしていた夫が一月ぶりに帰ってきました。
…といっても「帰ったよ」というメールをもらっただけで、まだ実物は見ていません。弾丸みたいな人なので、荷物の整理も早々にピャーッと家を飛び出し、そのまま失踪した模様です。


仕事から帰って部屋に入ったら、机の上に写真のブツがデーンと鎮座していました。
ワインの空き瓶につめた乾煎りのナッツで、あちらでは「Ground nuts」と呼ばれているものです。見かけも味もあきらかにピーナツですが、ピーナツとは微妙に別のものとして呼び分けられているフシがあります。


実はわたくし10年ほど前に一度だけナイジェリアへ行ったことがあるのですが、その時にうまいうまいとたらふくこのマメを食べたため、あちらの一族の認識では、
「KanaといえばGround nuts」
ということになっているとかいないとか…夫は帰国するたびに、律儀にこのこのマメを土産に持ってきてくれます。

これでしばらくは "おつまみ" に不自由しなくてすみそうです:-)
 

2008年7月7日月曜日

なんちゃってでゅーく完成


自己満足なエントリばかりで恐縮ですが、例のなんちゃってでゅーくにようやく色がつきました。
鼻とエビだけ塗った時点ではどうなることかと思いましたが、黒を入れたら意外にそれっぽくなり、作った本人もびっくりです。

仕上げをケチって100均のニスを使ったため、テカテカとやや下品な仕上がりになってしまったのが唯一の心残りです。いや、唯一ってことはないですが。

「あっ、頭がとがってる」
…と気づかれた方は鋭い!あのあとやっぱり気になったので、色を塗る前にとんがり頭をプラグインで乗せてみました。


ニスを塗っていたら息子と姪たちがワラワラと寄ってきて、
「それなにー?」
「アニメのキャラ?」
「あ、わかった。ペンギン」
…などと勝手なことをほざいていました。

ペンギンかぁ…いわれてみれば。
 

2008年7月3日木曜日

なんちゃってでゅーくその後…


先日のエントリでご紹介したなんちゃってでゅーくに、本日、色をつけてみました。

残念ながら黒いアクリル絵の具の在庫が切れてしまっていたので、とりあえず赤っぽいところから。

右手にはたしかルビーを持たせたつもりだったのですが、翌朝目覚めたらなぜかエビフリャーに変わっていました。不思議なこともあるものです。


それにしても、オリジナルのDukeとはやっぱりなんか違う。
何が違うのかな~…と改めて画像を見てみたら、頭のトンガリ具合が決定的に違いました。
もはや人間丸くなってる感じですね。


あと、ホンモノは手の指が五本ある。。。
自慢ではないですが、私は粘土細工にそこまで細かい仕事をするほどできた女ではありません。ということで、うちの子はこのオバQみたいな手のまま開き直ってデビューさせることにします。


黒い部分は週末にでも塗りあげるつもりです。
さて、どうなることやら:-)

2008年7月2日水曜日

Join JRuby Mailing List !

Charles Nuetter氏の来日以来、JRubyの周辺が以前にもまして賑やかになってきているような気がします。メーリングリスト上でも日本人エンジニアの方のお名前をちょくちょく見かけるようになり、同じ日本人の端くれとして、このところなんだか嬉しい気持ちでMLを眺めています:-)


もっともっと日本人エンジニアの参加が増えたらいいな…ということで、今日はJRuby Wikiの「Mailing List」のページを翻訳してみました。
このくらいの英文はわざわざ訳すまでもないのかもしれませんが、偶然ここを見て下さった方が、
「じゃ俺も…」
みたいな感じでじゃんじゃん参加して下さったら嬉しいです。

「英語苦手だからな~」としり込みしていらっしゃる方も、思い切って購読してみてください。
世界中の色々な地域から、それぞれに異なる母国語を持つ参加者が集まって議論しています。ちょっとくらい英語の文法がおかしくたって、文句を言ったり笑ったりする人なんていませんよ:-)





JRubyのメーリングリストに参加するには:

1. http://xircles.codehaus.org/projects/jruby/listsにアクセスします。
2. リスト中のいずれかの subscribe のリンクをクリックし(どれでもOK)、emailを入力します。
3. xircles アプリケーションが確認のメールを送信してきますので、メール中のリンクをクリックして再度xircles にアクセスしてください。
4. http://xircles.codehaus.org/projects/jruby/lists にアクセスし、今度は購読したいMLのリンクを選択してください。

jruby-dev と jruby-user のアーカイブはNabbleからも閲覧できます。こちらには優れた検索画面も用意されています。

また、Googleにもjruby-user MLのミラーサイトがあります:
http://groups.google.com/group/jruby-users

JRuby Wikiより(原文:http://wiki.jruby.org/wiki/Mailing_Lists

Nice Shot !? in Fukuoka !

そういえば、Rubyビジネスコモンズの『JRuby勉強会 in 福岡』の写真がRBCの方で公開されていました。

記念にコッソリリンクしておきます。
http://picasaweb.google.com/chaaasan/RBCMeetsJRuby/photo#5216775378104901954

2008年6月29日日曜日

JavaOne報告会 in Nagoyaレポート

先日ご紹介した「JavaOne報告会 in Nagoya」。
20名前後のJavaファンの皆さんにお集まり頂き、とても賑やかで楽しい会となりました。

桜庭さん、大渕さんの素敵なプレゼンテーション、そして懇親会でのDukeグッズ争奪戦。
桜庭さんの出された問題はなかなか難易度が高く、マルチスレッドアレルギーの私は結局ひとつもDukeグッズを獲得することができませんでした。

ニギニギDuke(←勝手に命名)欲しかったなぁ…




写真は悔し紛れに作ってみたなんちゃってでゅーく。
素材は樹脂粘土で、せっかくなのでRubyを持たせてみました(笑)

ちょっとメタボな感じになってしまいましたが、乾かして色をつけたらもうちょっとそれっぽくなる…予定です:-)


桜庭さん、大渕さん、そしてお集まり頂いたJavaファンの皆様、楽しい会をありがとうございました!

2008年6月28日土曜日

RBC勉強会 in 福岡

去る6月24日(火)、Rubyビジネスコモンズのイベントで福岡へ行ってきました。
人生初福岡…というより、何を隠そう国内旅行で本州から出るのはこれがはじめて。いい年して、一人で乗る飛行機にドキドキしながらの出張となりました。

勉強会には一応「セミナー講師」という名目で参加させて頂いたのですが、「講師」というよりはむしろ「あいのて係」ですね。メイン講師のAkimaさんの一挙一動に「ヨッ!」「オオー!」などと間抜けな掛け声をかけているうちに、気づいたらセミナー終わってました(^^;

勉強会にはサンの下道さんとJRuby開発者のCharles Oliver Nutter氏にもお越し頂き、素敵なプレゼンテーションを見せていただきました。
Nutter氏はBlogの文章から勝手に抱いていたイメージよりずっと物静かな感じで、そして思っていた通りスマートな方でした。
いくつか写真を撮ってきたんですが、こういうのって勝手に公開していいのかなぁ?よく分からないので取り合えず保留。GlassFish関係のスライドの写真もたくさん撮影してきたのですが:-)


そうそう!勉強会後の懇親会でNutterさんとお話していて、言葉の壁に阻まれてJRubyユーザMLに参加しづらい日本人ユーザが結構いる、という話になったのですが、その際に、
「あなたがJRubyユーザのグループを立ち上げてよ(Why not you do that ?)」…みたいなことを言われました。私にはユーザグループを率いるような甲斐性はないですが、何かお手伝いできることがあれば頑張りたいなと思います。とりあえずは「JRuby追っかけ」的な勝手サイトを立ち上げる計画を立てていますので、ご興味のある方はぜひお声をかけてください♪
と思ったら、http://jruby-users.jp/ が立ち上がったという連絡を頂きました!ので、こちらをお手伝いさせて頂ければ…と思っています(私に出来るのは執筆と翻訳くらいですが…)。




写真は帰社直前に福岡空港で見つけたみやげ物。
「博多メン隊カラインジャー」とかいう、福岡生まれのヒーローのキャラクター商品です。

「ひとつぶだけカラインジャー」…このゆるさ加減、しびれますね。





 

2008年6月18日水曜日

JavaOne報告会 in Nagoyaのお知らせ

来る6月27日、Java Edgeの主催で『Java One 報告会 at 名古屋』を開催させていただくことになりました。

中部地方在住の皆様、ぜひご参加ください!


詳細はこちらから


以下、Java Edge Magazineに掲載された告知文からの引用です:

-------------------------
開催決定!6月27日に『Java One 報告会 at 名古屋』
先日大盛況のうちに幕を閉じましたJava One. http://java.sun.com/javaone/sf/index.jsp

今回は特別に名古屋でダイジェスト版として報告会を開催していただくことになりました!

東京まで足を運べなかった方。どうしても都合が悪かった方。

是非名古屋にいらしてください。3時間程のダイジェスト版となりますが、あの幻のDukeグッズ争奪戦もあり、写真でお送りするオーバービューもありで、盛大に行います。

皆様にお会いできる事、楽しみにしてます。
-------------------------

求む・翻訳者!!

GlassFish 日本語Wikiプロジェクトでは、本家GlassFish Wikiで提供されているさまざまな情報を日本語に翻訳しています。

コミュニティ活動ですから基本はボランティアですが、やりがいがあって楽しいですよ^^

GlassFishの好きな方、翻訳作業に興味のある方、ぜひプロジェクトのサイトを覗いてみてください。
参加までにいくつかのステップを踏む必要はありますが、そんなに難しいことはありません。

たくさんのメンバーでにぎやかに翻訳やりたいな~と思っています。
 
GlassFish日本語Wikiプロジェクトのサイト
 

Arun Gupta氏のRails & Java EE3回シリーズ訳了!

I'm happy to announce that I've finished translating Mr. Gupta's tri-seriese Blog entries about Rails and Java EE integration on GlassFish !

Arun氏のブログで紹介されていた「Rails & Java EE連携」3回シリーズ、ようやく翻訳完了しました!

1回目:Goldspike編
2回目:Warbler編
3回目:GlassFish gem編

Goldspike、Warbler、GlassFish gem 、それぞれを使ったRailsとサーブレットの連携方法が紹介されています。Goldspikeは若干ネタが古くなってしまいましたが、Warbler、GlassFish gemの回はまだまだ参考にしていただけるのではないかと思います:-)


このあとは同じくArun氏のブログに掲載されていた「Redmine with GlassFish」のシリーズを翻訳させていただこうかなと思っています。 


GlassFish関連に限りますが、英語で書かれたブログの中で「これ訳して欲しいな~」というものがありましたら、お気軽にリクエストなさってください。

http://wiki.glassfish.java.net/Wiki.jsp?page=BlogsT9nJa

 

2008年6月16日月曜日

Rails と Java EE の連携 - Goldspike のかわりに Warbler で

GlassFish Wiki翻訳プロジェクトで手がけている英文ブログ翻訳。
前回ここでもご紹介したSunのArun氏のブログの続編、第二回目をようやく訳し終えました。


Rails と Java EE の連携 - Goldspike のかわりに Warbler で


第一回はWarファイルの作成にGoldspikeを使っていましたが、今回はWarblerを使うやり方です。

一点注意なのですが、現状、Windowx版のJRuby1.1.2とWarbler0.9.9でWarファイルを作成すると、配備時に色々とトラブルが発生するようです。上記エントリはJRuby1.1 + Warbler0.9.4で動作検証されていますので、とりあえずそのままのバージョンで確認することをお勧めします。
(ちなみに、私の環境[Win XP] ではJRuby 1.1.1とWarbler 0.9.5でも特に問題なく動作させることができました)

JRuby Rack

ちょっと古い話になりますが、我らが(?)Warblerが0.9.9にアップグレードされました!
Warbler 0.9.9にはJRuby Rackが同梱されていて、RailsとJava EEの連携がよりスムーズに行えるようになった…という話です(←まだ試してない)。


ということで、JRuby WikiJRuby Rackのページを簡単に訳してみました。


我流で訳しただけですが、参考になれば幸いです。
もし間違っているところがありましたらご指摘ください!





JRuby Rack

JRuby-RackはJavaサーブレット環境への軽量なアダプタです。JRub-Rackを使うと、Rackベースのアプリケーションを、何の変更も加えることなくJavaサーブレットコンテナ上で動作させることができます。

JRuby-RackはRack互換のRuby用Webフレームワーク同様、RailsおよびMerbをサポートします。

より詳しい情報はこちら: http://rack.rubyforge.org


目次

1 ダウンロード
2 機能
2.1 サーブレット・フィルタ
2.2 Goldspike互換のサーブレット
2.3 サーブレット環境との連携
2.4 JRubyランタイムの管理
3 フィードバック
4 ソース
5 ビルド


ダウンロード

JRuby-Rack 0.9 は初の公式リリースで、以下からダウンロードして頂けます:

http://repository.codehaus.org/org/jruby/rack/jruby-rack/0.9/jruby-rack-0.9.jar

JRuby-RackはWarbler0.9.9にも同梱されています。WarblerはRuby gemとしてインストールすることができます(jruby -S gem install warbler)。


◆機能◆

サーブレット・フィルタ
JRuby-Rackは主にサーブレット・フィルタとして動作します。
この場合、JRuby-Rackは静的コンテンツに対するリクエストを受け取り、Webサーバに仲介します。また多くのRubyアプリケーション同様、指定したURLに対応するファイルが存在しない場合のみ動的リクエストが発生します。


Goldspike互換サーブレット
JRuby-RackにはRailsServletのスタブが備わっているため、Goldspike用コンテキスト・パラメータの多くを解釈することができます(たとえばpoolsize configuration[プールサイズの設定]など)。これによりGoldspikeとの互換性が保たれ、移行の際に役立ちます。

なお、静的コンテンツはRackにより提供されますが、この際にはJRubyのランタイムを取得する必要があります。JRuby-Rackをサーブレット・フィルタとして設定した場合と比較して、静的ファイルを処理する際のスループットはかなり低下します。ご注意ください!


サーブレット環境と連携
グローバル変数 $servlet_context、もしくはRackの環境変数である java.servlet_context を用いて、あらゆるアプリケーションからサーブレットコンテキストにアクセスできます。
サーブレットのリクエスト・オブジェクトには、java.servlet_requestというキーでアクセスします。また、サーブレットのリクエスト属性はRack環境へと受け渡されます。


Rackの環境変数およびヘッダは、サーブレットのリクエスト属性で上書きされる場合があります。Javaサーブレットのセッションは、RailsまたはMerbのデフォルトのセッション・ストアとして使用されます。
Stringをキーとし、String、数値、boolean、Javaのオブジェクトを値として構成されるセッション属性は、自動的にサーブレット・セッションにコピーされます。


JRuby ランタイム管理
JRubyのランタイム管理およびプーリングは、フレームワークにより自動的に処理されます。Railsの場合、ランタイムはプールされます。Merbやその他のRackアプリケーションの場合はランタイムが一つ生成され、これがすべてのリクエスト間で共有されます。


フィードバック
現在のところ、JRuby-Rack専用のメーリングリストやバグトラッカーは用意されていません。フィードバックはjruby-userメーリングリストへ投げていただくか、JRuby JIRA issue trackerに上げてください。

ソース
現時点では、JRuby-Rackのソースはcodehaus上のSubversionリポジトリ jruby-contrib から入手できます:

http://svn.codehaus.org/jruby-contrib/trunk/rack


ビルド
事前にJRubyをインストールし、buildrとrackのgemをインストールしてください。

jruby -S gem install buildr rack

JRuby Rackのコードをそのディレクトリにチェックアウトします。

svn co http://svn.codehaus.org/jruby-contrib/trunk/rack
cd rack

依存性を解決し、コードをコンパイルしてjarファイルを生成します。

jruby -S buildr package




原文:http://wiki.jruby.org/wiki/JRuby_Rack

2008年5月30日金曜日

半ズボン

はじめにお詫びしておきますが、非常にくだらない話です。


昨日、私が運営をお手伝いしている名古屋のJavaユーザ・コミュニティ Java Edgeの運営委員会に出席してきました。

Java Edgeは8月で誕生一周年を迎えます。
で、その記念イベントの計画に関して「何か、たくさんの人を呼べるような企画を考えたいね」という話をしていた際に、メンバーの一人がおもむろに言いました。

「半ズボンでセミナーやったら、人いっぱいくるかもね~」


半分上の空でそれを聞いていた私は、

――半ズボンでセミナー?そんなんで人呼べるのかしら。
というかそもそも誰が講師やるんだろう――

…というようなことをぼんやり考えていたのですが、ハタと我に返って聞き直してみたら、「半ズボンでセミナー」はなく「ハンズ・オン・セミナー」でした。


我ながらなんて馬鹿馬鹿しい聞き間違い…

2008年5月25日日曜日

Coffee liqueur


この週末は久しぶりにのんびりできたので、ずっと作ってみたかったコーヒー酒作りにチャレンジしてみました。
コーヒー酒は梅酒やその他果実酒と違って、洗ったり消毒したりの手間があまりかからず気楽です。


私はウォッカが好きなので、お酒はALEXANDERというフランスのVODKA。
他にもホワイトリカーや焼酎、ウィスキーなんかで作ってもなかなかイケるみたいですね。

コーヒー豆50g、氷砂糖50gに写真のALEXANDERを一瓶まるまる使いました(700mlくらい)。
あとはこのまま冷暗所に貯蔵して2~3週間ガマン…。

ALEXDANDERのボトルがなかなかかっこよかったので、豆をひきあげたらこれにつめかえる予定です。


モノがコーヒーだけに、漬けて10分くらいで既に抽出が始まりうっすらと琥珀色になりました。
これからしばらく家に帰るのが楽しみになりそうです :-)

2008年5月21日水曜日

ImageVoodoo 0.2リリース

Java2Dを使って作られたJRuby用の画像処理ライブラリ、ImageVoodooのv0.2がリリースされました。
輝度の調整、URLからの読み込みなど、いくつか新しい機能が追加されたようです。



以下はThomas Enebo氏のブログPostされた紹介コメント:
http://www.bloglines.com/blog/ThomasEEnebo?id=50



これはgemとしてインストールして使えるとのこと。

gem install image_voodoo

2008年5月16日金曜日

Arun Gupta氏のブログ・エントリ翻訳

GlassFish 日本語Wiki翻訳プロジェクトで、GlassFishに関連のある英文ブログ記事の翻訳を行っています。

ブログ翻訳はOginoさんが積極的に担当してくださっているのですが、およばずながら私も一本翻訳させて頂きました。

初挑戦のタイトルはこちら:
http://wiki.glassfish.java.net/Wiki.jsp?page=Javaintegration_glassfish_1Ja

原文:
http://weblogs.java.net/blog/arungupta/archive/2008/04/rails_and_java.html

JRuby + GlassFishを用いたRailsとJava EEの統合をテーマにしたArun Gupta氏のブログエントリで、RailsとサーブレットをGlassFish上で連携させる手順がざっと紹介されています。


この記事は3回連続のシリーズものになっていて、上記はその1回目。
残り2本も時間をみつけて訳していきたいと思っています:-)

Arunさん、素晴らしい記事をありがとうございます!
>> Thank you so much for your wounderful article, Arun !

 

2008年5月15日木曜日

JRuby Won !

ちょっと古いニュースで恐縮ですが、JavaOneのScriptBowlというイベントで我らがJRubyが勝利しました!


http://java.sun.com/javaone/sf/2008/articles/scripting.jsp


「我らが」って、別に私が作っているわけではないのですが…でも、ファンなのでやっぱり嬉しいですね :-)

2008年5月5日月曜日

Wizpyが来た!

私は筋金入りのWindowsユーザなのですが、最近仕事の関係でLinuxを触ることが増えてきました。
いい機会なのでプライベートでもLinuxに親しんでみようかな…というわけで、こんなものを入手してみました。


『手のひらサイズのパソコンWizpy』
http://www.turbolinux.co.jp/products/wizpy/


見たところはよくあるマルチメディアプレーヤなのですが、USB経由で自宅のパソコンに繋ぐとTurbo Linuxが起動します。
CDから起動するLinuxがあるのだからUSBデバイスから起動したって何も不思議なことはないわけですが、そうは言ってもちょっとしたカルチャーショック。パソコンをポケットに入れて持ち歩けるんだもんなぁ。

せっかくなので、この機会にちょっとLinuxを勉強してみようかと思っています。


※ ちなみにこのエントリはWizpyから投稿しています:-)

2008年5月4日日曜日

Real GlassFish !?


I went to Port of Nagoya Public Aquarium with my family ... and they were there.

I forgot to check their name, however, don't you think that they are worthy of the name "GlassFish" ?





2008年4月30日水曜日

[Blog Watch] Rubiestは間違っている?

▼The Rubiests are wrong.
http://headius.blogspot.com/2008/04/rubyists-are-wrong.html


JRuby主要開発者の一人・Charles Nutter氏のブログ "Hedius"の4月29日のエントリに、ちょっとドキッとするようなタイトルがPostされました。

一瞬「ええっ!?」と思いましたが、内容を読んでナットク。

確かにルビーをブリリアントにカットすることって、皆無とはいわないまでも少ないかもしれません。
とはいえ、カボッション(山高のつるんとしたカット)にしたルビーって、ロゴにはちょっと冴えない感じかも?黒丸つけたらてんとう虫になってしまいそう…(笑)


ちなみに、Nutter氏が文中で「こんなの見たことナイ」と述べているRuby Insideのロゴ(http://www.rubyinside.com/images/logo.gif)は、一般にバフ・トップと呼ばれるカットになってます。
高価なRubyにこのカットを施すことはあまりないけど、比較的安価なブルートパーズはしばしばこんな風にカットされたりします。

2008年4月24日木曜日

[Blog Watch] ImageVoodoo

JRuby開発チームメンバーの一人であるNick Seiger氏が、ImageVooDooというツールをリリースされました。


ImageVoodooはRubyとJavaを組み合わせて作られた画像処理のライブラリで、コンパクトかつ使いやすいインタフェースを備えています。JRuby上から jruby -S gem install image_voodoo でダウンロードし、スクリプトでrequireして使います。

http://blog.nicksieger.com/articles/2008/03/27/imagevoodoo-0-1-released

まだファーストリリースということで荒削りな感じもしますが、Preview機能なんかはとても便利に使えそう。現行リリースではPreview Windowのタイトルが"Preview"に固定されているので、次リリースではぜひパラメータでタイトルを指定できるようにして欲しいなっと思います(二、三行カスタマイズすれば済むことではありますが)。