<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Walbrix</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/" />
    <link rel="self" type="application/atom+xml" href="http://walbrix.net/atom.xml" />
    <id>tag:walbrix.net,2010-04-15://1</id>
    <updated>2011-05-29T15:51:47Z</updated>
    <subtitle>Walbrix(ワルブリックス)とは、家電・ゲーム機風のユーザーインターフェイスを装備した「誰にでも使える」「無償の」ホーム・スモールオフィス向けサーバオペレーティングシステムです。Walbrixの開発はSTBBS.NET, LLCが行っています。</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.01</generator>

<entry>
    <title>Walbrixの新しいスライドを公開しました - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2011/05/walbrix-1.html" />
    <id>tag:walbrix.net,2011:/blog//2.270</id>

    <published>2011-05-29T15:49:07Z</published>
    <updated>2011-05-29T15:51:47Z</updated>

    <summary>Walbrixの新しい解説スライドを公開しました。Slideshare でご覧に...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    <category term="announcement" label="announcement" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[Walbrixの新しい解説スライドを公開しました。<div><br /></div><div><a href="http://www.slideshare.net/shimarin/os-walbrix">Slideshare でご覧になる方はこちら</a></div><div><a href="http://docnext.net/#inl">docnext でご覧になる方はこちら</a></div>]]>
        
    </content>
</entry>

<entry>
    <title>最新64bit版のスナップショットを利用可能です - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2011/05/64bit.html" />
    <id>tag:walbrix.net,2011:/blog//2.269</id>

    <published>2011-05-08T13:06:10Z</published>
    <updated>2011-05-08T13:09:54Z</updated>

    <summary>VirtualBoxは32bitのXenを起動できないため、Walbrixを V...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    <category term="announcement" label="announcement" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[VirtualBoxは32bitのXenを起動できないため、Walbrixを VirtualBoxで利用することはできません。ですが 64bit版なら動作する場合があります。64bitと仮想化命令に対応したCPUが必須ですのでご注意下さい。<p><a href="/download-snapshot.html">64bit人柱版のダウンロード</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>ApacheとWebDAVとPHP - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/12/apachewebdavphp.html" />
    <id>tag:walbrix.net,2010:/blog//2.267</id>

    <published>2010-12-10T19:03:24Z</published>
    <updated>2010-12-10T19:07:48Z</updated>

    <summary> (この記事は 2010年1月17日に STBBS.NET Blogで掲載された...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[ <p><em>(この記事は 2010年1月17日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p>]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>WebDAVを使って PHPファイルなどのスクリプトファイルを編集しようとすると、DAVクライアントから PHPスクリプトへの要求が発生したときに中身がわざわざ実行されてその結果が返ってきてしまう。<br /><br />それを避けるには、適当な Locationなりに<br />ForceType text/plain<br />を入れてやればいいのだが、なにかの拍子でこれが効かなくなった。<br />Apache 2.2.14で何か変わったのだろうか。バグかな。<br /><br />仕方ないので<br />&lt;FilesMatch "\.ph(p5?|tml)$"&gt;<br />        SetHandler None<br />&lt;/FilesMatch&gt;<br />も入れてしのいだ。<div style="clear:both; padding-bottom:0.25em"></div>
    </div>
<br/>
<p>追記: どうやら AddHandlerディレクティブを使って .phpのハンドラを設定していると ForceTypeで動作をオーバーライドできないらしい。AddHandlerを AddTypeに置き換えればOK.</p>
<h2 style="font-size:1.5em;font-weight:bold;margin-top:1em;">Walbrixについて</h2>
<p><em>(この記事を移動する際に追記されました)</em></p>
<p>余ったPCを使って10分で CentOS/Debian/Ubuntu/Gentoo Linuxの実験環境を構築できることをご存じですか？</p>
<p><a href="http://walbrix.net/top.html">Walbrix</a>は誰でも無料で簡単に使えるサーバオペレーティングシステムです。</p>
<div align="center" style="margin-top:1em;">
<a href="/download.html"><img src="/img/download_button_wide.png" border="0"/></a>
</div>]]>
    </content>
</entry>

<entry>
    <title>Hiwihhi.com（ヒウィッヒ・ドットコム） - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/09/hiwihhi.html" />
    <id>tag:walbrix.net,2010:/blog//2.264</id>

    <published>2010-09-05T19:51:08Z</published>
    <updated>2010-09-15T12:26:20Z</updated>

    <summary> 夏休みの自由研究を二学期が始まってから適当にでっち上げていた、そんな子供時代を...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p> 夏休みの自由研究を二学期が始まってから適当にでっち上げていた、そんな子供時代を思い出しました。</p>]]>
        <![CDATA[<p>何かっていうとこの週末、こんなもの作ってたんですよ。</p>

<p><a href="http://hiwihhi.com/" target="_blank">Hiwihhi.com（ヒウィッヒ・ドットコム）</a></p>

<p>要するに、有名人とかの発言の言葉尻を捕らえて叩きたい年頃の皆さんが欲望のままにそれを実現できてしまうサイトです。Twitterのシステムをよく理解せず有名人に暴言を吐いたりすると RTで衆目に晒されるなどの手痛い反撃を食らうなどのお仕置きが待っています。既にお仕置きに懲りた御仁もおられるでしょう。かといって勢いに任せて 2chにスレを立てれば削除依頼しておけよと冷たく言い放たれるだけです。そんなわけで、この地球上には行き場のない負のエネルギーが充満しているのです。</p>

<p>しかし Hiwihhi.comなら Twitterアカウント要らずで一方的に誰の発言にでもいちゃもんつけることができます。140文字制限もないのでアスキーアートを駆使して芸術的な煽りを披露することさえ可能です。圧倒的じゃないか、わが軍は。</p>

<p>あ、私自身は別にそういう性向ないんですけどね。そんな暇じゃないし（えっ）<br/>ていうか、別にネガティブな用途にだけ使って欲しいわけじゃないですよ。そのうち OAuthでログインして匿名じゃない利用も出来るようにしようと思ってます。まあ、匿名の人とID晒している人を同じ空間に押し込めるとそれはそれはカオスなことになりそうですが。</p>

<p>というわけであんま堂々と世間様に「私これやってます」と言えたようなサービスではないのですが、このブログからリンクを張らないと Google先生がなかなかクロールしにきてくれないもので。</p>

<p>中身は Spring 3.0 と Hibernateと Velocityで出来てます。あと Twitter4jか。優しさは一切含有していません。</p>

<p>そんじゃーね（ちきりん風）</p>

<h2 style="font-weight:bold;font-size:1.3em;">2010年9月15日追記</h2>

<p>しばらく経ったけど、人としてどうかと思うようなコメントは付かないみたいです。中高生の夏休みが終わる前に公開してればまた違ったかもしれませんがね。</p>]]>
    </content>
</entry>

<entry>
    <title>Commons Codecを使わずにBase64エンコードをする - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/base64-without-commons-codec.html" />
    <id>tag:walbrix.net,2010:/blog//2.262</id>

    <published>2010-08-09T09:52:57Z</published>
    <updated>2010-08-09T10:12:46Z</updated>

    <summary> Javaプログラムでバイト列をBase64エンコードしたいと思ったら Comm...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[ <p>Javaプログラムでバイト列をBase64エンコードしたいと思ったら <a href="http://commons.apache.org/codec/" target="_blank">Commons Codec</a> に含まれる <a href="http://commons.apache.org/codec/api-release/org/apache/commons/codec/binary/Base64.html" target="_blank">org.apache.commons.codec.binary.Base64</a> クラスを使うのが普通で、そうできるなら特に考えるでもなくそうすれば良いのだが、GWT(Google Web Toolkit)を使っている場合は SDKに Commons Codecの古いバージョン（おそらく 1.1と思われる。現行最新は1.4）が含まれてしまっており、この古いバージョンだと Base64文字列の途中に適切な間隔で改行を入れるなどの機能が欠落していて不都合がある。</p>]]>
        <![CDATA[<p>仕方ないので JavaMail APIにあるエンコード機能を使って Base64エンコードを行うことにした。こちらはもともとメール用の機能なので 76文字ごとに改行を挿入してくれる。</p>


<script type="syntaxhighlighter" class="brush: java"><![CDATA[
	/**
	 * バイト列を Base64エンコードして返す
	 * @param in エンコードしたいバイト列
	 * @return Base64エンコードされた文字列
	 * @throws MessagingException 出ないと思う
	 * @throws IOException 出ないと思う
	 */
	private String toBase64(byte[] in) throws MessagingException, IOException
	{
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		OutputStream out = MimeUtility.encode(baos, "base64");
		out.write(in);
		out.flush();
		return new String(baos.toByteArray(), "UTF-8");
	}
]]&gt;</script>]]>
    </content>
</entry>

<entry>
    <title>Eclipse 3.6(Helios)に C/C++言語開発用プラグイン CDTを導入する - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/helios-cdt.html" />
    <id>tag:walbrix.net,2010:/blog//2.261</id>

    <published>2010-08-07T19:32:26Z</published>
    <updated>2010-08-07T19:39:52Z</updated>

    <summary>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統合開発環境）である。通常、デフォルトでは JDT（Java Development Tools）を搭載しており Java開発にはそれが使われるが、プラグインで他の言語にも対応できる。ここではCDT(C/C++ Development Tools)を Eclipse 3.6(Helios)に導入して C/C++の開発を行うための手順を説明する。<p>

<ul id="asin-list" style="display:none;">
</ul>

<dl id="related-articles" style="display:none">
<dt>/blog/2010/07/helios-subversive.html</dt>
<dd>Eclipse公式の Subversionプラグイン "Subversive"をインストールする方法 </dd>
</dl>
 ]]>
        <![CDATA[<h2 style="font-size:1.3em;font-weight:bold;clear:right;">CDTのインストール</h2>

<p>メニューから <strong>Help -> Install new software</strong> を選択</p>
<p>Work with: ドロップダウンから <strong>Helios - http://download.eclipse.org/releases/helios</strong> を選択</p>
<p>絞り込み用のテキストボックス(type filter textと書いてある所) に <strong>c++ development tools</strong> と入力し(Enterキー不要)、 <strong>C/C++ Development Tools</strong> をチェックして Nextボタンで次へ</p>
<p>Install Details という画面で詳細が表示されるので Nextボタンで次へ</p>
<p>ライセンス確認の画面になるので <strong>"I accept the terms of the license agreement"</strong> をチェックして Finishボタン</p>
<p>Eclipseの再起動を促されるので再起動する</p>

<h2 style="font-size:1.3em;font-weight:bold;clear:right;">C/C++プログラムの実行</h2>

<p>CDTに C/C++コンパイラ本体やライブラリ・ヘッダファイルは付属していない。Macでは Appleが無償で配布している開発ツールである <strong>Xcode</strong>をインストールすることでC/C++コンパイラが利用可能になる。また、Linuxでは多くの場合 <strong>GCC</strong>が標準でインストールされているが、近年ではそうでない場合も多いため、そのような場合はディストリビューションのパッケージ管理システムを使って GCCをインストールする。Windowsの場合は GCCをはじめとした開発ツールの Windows移植版である MinGWが利用出来るようである。</p>


<p>C/C++プログラムをコンパイルして実行するには C/C++プロジェクトを作成する必要がある。File -> New -> Other -> C/C++ の中にある C Project ないしは C++ Project を選択してプロジェクト作成ダイアログを開き、プロジェクト名をつけてプロジェクト種別を選んだら Finishボタンを押すと CないしはC++のプロジェクトを作成できる。</p>

<p>C、C++のいずれの場合でも、プロジェクト種別として Hello Worldを選択した場合はメッセージを表示するだけの単純なソースが最初から生成されるので、これを実行してみると良い。</p>

<p>Cの場合</p>
<script type="syntaxhighlighter" class="brush: c"><![CDATA[
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
    return EXIT_SUCCESS;
}
]]&gt;</script>

<p>C++の場合</p>
<script type="syntaxhighlighter" class="brush: c"><![CDATA[
#include <iostream>
using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    return 0;
}
]]&gt;</script>

<p>実行結果
<pre style="margin:1em;padding:1em;border-style:dotted;border-width:1px;">
!!!Hello World!!!
</pre>
</p>]]>
    </content>
</entry>

<entry>
    <title>DebianのApache2.2で DocumentRootにWebDAVアクセスするための最短手順 - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/debian-webdav.html" />
    <id>tag:walbrix.net,2010:/blog//2.260</id>

    <published>2010-08-06T08:11:55Z</published>
    <updated>2010-08-07T03:30:09Z</updated>

    <summary>ロケーション /dav を通じて DocumentRootに WebDAVアクセ...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p>ロケーション /dav を通じて DocumentRootに WebDAVアクセスを出来るようにするための最短手順メモ。インターネット側からアクセスできるホストの場合は当然ながらこれに加えて認証などの設定が必要</p>]]>
        <![CDATA[<p>a2enmodコマンド（Debian独自のApacheモジュール有効化コマンド）を使ってWebDAVモジュールを有効にする</p>

<pre style="margin:1em;padding:1em;border-style:dotted;border-width:1px;">
a2enmod dav_fs
</pre>

<p>/etc/apache2/sites-enabled/000-default の VirtualHostディレクティブ内に下記を追記。ContentTypeを text/plainに固定するのは、動的コンテンツがサーバ側で実行されてしまうのを防ぐため</p>
<script type="syntaxhighlighter" class="brush: xml"><![CDATA[
    Alias /dav "/var/www"
    <Location /dav>
        DAV On
        ForceType text/plain
    </Location>
</script>

<p>Apacheを再起動</p>
<pre style="margin:1em;padding:1em;border-style:dotted;border-width:1px;">
/etc/init.d/apache2 restart
</pre>

<p>上記が済んだら、http://hostname/dav で WebDAVクライアントから接続する。</p>

<p>Windows標準の「Webフォルダ」からも接続できるが、サーバ側で Basic認証を設定すると接続できなくなってしまう。暗号化されていない経路での Basic認証はセキュアでないためサポートしないということかもしれない。だったら HTTPSなら通るのかどうかというところについては未検証。</p>]]>
    </content>
</entry>

<entry>
    <title>ApacheのDEFLATEフィルタで Flexアプリケーションの通信量を減らす - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/apachedeflate-flex.html" />
    <id>tag:walbrix.net,2010:/blog//2.258</id>

    <published>2010-08-03T10:37:27Z</published>
    <updated>2010-08-03T11:49:14Z</updated>

    <summary>(この記事は 2008年4月30日に STBBS.NET Blogで掲載された記...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p><em>(この記事は 2008年4月30日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p> ]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>Flexアプリケーションがサーバ側のオブジェクトとHTTPでバイナリ通信する時の Content-typeは application/x-amf となっている。<br />この Content-typeに対し、Apacheの DEFLATEフィルタを適用してやれば、データ圧縮により Flexアプリケーションの通信量を減らすことが出来る。<br /><br />AddOutputFilterByType DEFLATE application/x-amf<br /><br />データの内容によるが、これだけで通信量がだいたい 1/4 から 1/5程度になる。<div style="clear:both; padding-bottom:0.25em"></div></div>]]>
    </content>
</entry>

<entry>
    <title>JRuby 1.1が Spring Frameworkで使えない - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/jruby-11-spring-framework.html" />
    <id>tag:walbrix.net,2010:/blog//2.257</id>

    <published>2010-08-03T10:36:26Z</published>
    <updated>2010-08-03T11:49:38Z</updated>

    <summary>(この記事は 2008年5月12日に STBBS.NET Blogで掲載された記...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p><em>(この記事は 2008年5月12日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p> ]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>最新の JRubyを Springから使ってやろうとしたら、<br /><br />java.lang.NoSuchMethodError: <br />org.jruby.Ruby.parse<br />(Ljava/lang/String;Ljava/lang/String;Lorg/jruby/runtime/DynamicScope;I)Lorg/jruby/ast/Node;<br /><br />とか言われて使えなかった。どうやらJRuby側で 1.1からAPIが随分変わったそうだ。Springが JRuby1.1に対応するには 3.0まで待てだと。<br />仕方ないので JRuby 1.0.3を使うことにした。<br /><br />そしたら今度は<br /> org.jruby.exceptions.RaiseException: superclass must be a Class (Module) given<br />というエラー。勘弁してください。<br />Springのフォーラムで同じ悩みを抱えている人が一人だけいた。<br />JRuby 1.0以降を使う場合、ドキュメントに書いてある例どおりにRubyクラスにJava側のインターフェイスを継承させるとエラーになってしまうようだ。何も継承していないクラスを記述したところ解決。<br /><br />でもRubyで記述した文字列リテラルに日本語の文字が含まれていると化けて出てきてしまった。UTF-8以外の文字コードが介在していない環境で、この手の問題が起こるのはむしろ最近じゃ珍しいと思うのだが。<br /><br />というわけで、<a href="http://www.stbbs.net/blog/2008/05/spring-langjruby.html">Springの lang:jrubyで日本語を通す</a>に続く。<div style="clear:both; padding-bottom:0.25em"></div></div>]]>
    </content>
</entry>

<entry>
    <title>WebORB PHPが呼び出し毎にやたら遅い時の対処 - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/weborb-php.html" />
    <id>tag:walbrix.net,2010:/blog//2.256</id>

    <published>2010-08-03T10:35:12Z</published>
    <updated>2010-08-03T11:50:37Z</updated>

    <summary> (この記事は 2008年5月13日に STBBS.NET Blogで掲載された...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[ <p><em>(この記事は 2008年5月13日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p>]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>そういう場合は、セキュリティ監査のために逆引きをしようとして遅いのかもしれない。<br />とりあえず閉じたシステムだから WebORBに監査してもらわなくていいよという場合、<br />Weborb/weborb-config.xml<br />の中にある secure-resources, access-constraints の両要素を空にする（それぞれの要素自体は残すこと）と動作が速くなる。<div style="clear:both; padding-bottom:0.25em"></div></div>]]>
    </content>
</entry>

<entry>
    <title>JRuby for BlazeDS その2 - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/jruby-for-blazeds-2.html" />
    <id>tag:walbrix.net,2010:/blog//2.255</id>

    <published>2010-08-03T10:34:05Z</published>
    <updated>2010-08-03T11:51:05Z</updated>

    <summary> (この記事は 2008年5月20日に STBBS.NET Blogで掲載された...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[ <p><em>(この記事は 2008年5月20日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p>]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>前回のエントリで、JRubyに対して Flex(BlazeDS)向けのハックをいくらか適用した。<br /><br />が、JRubyから Flexへ値を返す際にまだ下記の問題が残っている。<br /><br />１）ハッシュのキーを文字列でなくシンボルにすると、Flex側でプロパティが拾えない。<br />２）ActiveRecordのエンティティをそのまま返すとFlex側でプロパティが拾えない。<br />３）インスタンス変数持ちのオブジェクトを返しても、Flex側でプロパティが拾えない。<br /><br />これらはいずれも JRuby側のオブジェクトを ActionScriptの Object（動的プロパティ持ち）として返したい場合のものだ。<br />ちなみに ActionScript3にはハッシュ型というものの用意がなく、Object型のオブジェクトに動的プロパティを与えることで代用するようになっている。<br /><br />BlazeDSでは、JavaBeansや Mapといったオブジェクトを AMFにシリアライズする際、それぞれの型にあった「プロパティプロキシ」のインスタンスを内部レジストリから取得し、それを経由して目的のオブジェクトから「キー：値」のエントリを取り出すようになっている。<br />上に挙げた問題を解決するために、<br />・JRubyのハッシュ型(org.jruby.RubyHash)に対応するプロパティプロキシ RubyHashProxy<br />・JRubyのオブジェクト全般(org.jruby.RubyObject)に対応するプロパティプロキシ RubyObjectProxy<br />を作成した。これらは Mapオブジェクトをシリアライズするためのプロキシである MapProxyがベースになっている。<br />前者は１の問題、後者は２及び３の問題に対応する。<br /><br />これらの独自で作成したプロパティプロキシをBlazeDSの PropertyProxyRegistryに登録すれば、JRubyからの返り値が期待通りに ActionScript側へ プロパティのセットされた Objectとして届くようになる。特に ActiveRecordのオブジェクトをそのまま Flexへ返せるようになるのは威力絶大だ。<br /><br />しかし、PropertyProxyRegistryの設定は残念ながら設定ファイルで行うことが出来ない。<br />仕方ないので Webアプリケーションの起動時に PropertyProxyRegistryへプロパティプロキシの登録を行うよう、web.xmlに登録するための簡単なリスナクラスも作成した。プロパティプロキシと合わせてソースを置いておく。<br /><br /><a href="http://www.stbbs.net/blog/jruby_property_proxies.zip">jruby_property_proxies.zip</a><div style="clear:both; padding-bottom:0.25em"></div>
</div>]]>
    </content>
</entry>

<entry>
    <title>JRuby for BlazeDS その1 - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/08/jruby-for-blazeds-1.html" />
    <id>tag:walbrix.net,2010:/blog//2.254</id>

    <published>2010-08-03T10:32:07Z</published>
    <updated>2010-08-03T11:51:27Z</updated>

    <summary>(この記事は 2008年5月20日に STBBS.NET Blogで掲載された記...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
        <category term="Flex" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p><em>(この記事は 2008年5月20日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p> ]]>
        <![CDATA[<div>
      <div style="clear:both;"></div>JRubyで記述したサービスを BlazeDS経由で Flexから呼び出したくなった。<br />実運用のためのサービスをJRubyで記述する気はないが、モックアップを手早く作り上げるのには適していると思ったからだ。<br /><br />Springが対応しているJRubyの最新版は現時点で 1.0.3である。<br />そのまま使おうとすると下記の点で不便だ。<br /><h4>Flex → JRuby</h4><br />・ActionScriptの Date型が Rubyの Time型に自動変換されてくれない。<br />java.util.Dateへの変換は BlazeDSが自動で行ってくれるが、JRuby1.0はそれを Rubyの Time型にまで変換してはくれない。<br /><br />・ActionScriptの（動的プロパティ持ち）オブジェクトが文字列キーのハッシュになってしまう。<br />今風に、ハッシュのキーはシンボルにしたい。person['name']じゃなくて person[:name]のほうがかっこいい。<br /><h4>JRuby → Flex</h4><br />RubyのTime や Dateといったオブジェクトが ActionScriptのDate型に変換されてくれない。<br />サーバ側で java.util.Dateにまで変換してやれば、ActionScript側には Date型で届いてくれるのだが、JRuby1.0はその変換をしてくれない。<br /><h4>というわけでパッチ</h4><br />JRuby 1.0.3の org/jruby/javasupport/JavaUtil.java に対して下記のようなクイックハックを敢行した。<br /><PRE><br /><I><FONT COLOR="#B22222">38a39,41<br /></FONT></I><B><FONT COLOR="#5F9EA0">&gt; import java.util.Calendar;<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt; import java.util.Date;<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt; import java.util.Map;<br /></FONT></B><I><FONT COLOR="#B22222">43a47<br /></FONT></I><B><FONT COLOR="#5F9EA0">&gt; import org.jruby.RubyHash;<br /></FONT></B><I><FONT COLOR="#B22222">81c85,108<br /></FONT></I><B><FONT COLOR="#0000FF">&lt;             <br /></FONT></B><FONT COLOR="#BC8F8F"><B>---<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt; } else if (javaClass == Date.class <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;    || (javaClass == null &amp;&amp; rubyObject.respondsTo(&quot;tv_sec&quot;)) <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;    || (javaClass == null &amp;&amp; rubyObject.respondsTo(&quot;yday&quot;)) ) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   // Timeオブジェクト用<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   if (rubyObject.respondsTo(&quot;tv_sec&quot;)) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     Long tv_sec = <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;       ((RubyNumeric)rubyObject.callMethod(context, &quot;tv_sec&quot;)).getLongValue();<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     return new Date(tv_sec * 1000);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   }<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   // Dateオブジェクト用<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   if (rubyObject.respondsTo(&quot;yday&quot;)) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     long year = <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;       ((RubyNumeric)rubyObject.callMethod(context, &quot;year&quot;)).getLongValue();<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     long yday = <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;       ((RubyNumeric)rubyObject.callMethod(context, &quot;yday&quot;)).getLongValue();<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     Calendar cal = Calendar.getInstance();<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.YEAR, (int) year);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.DAY_OF_YEAR, (int) yday);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.MILLISECOND, 0);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.SECOND, 0);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.MINUTE, 0);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     cal.set(Calendar.HOUR_OF_DAY, 0);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     return cal.getTime();<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   }<br /></FONT></B><I><FONT COLOR="#B22222">235c262,274<br /></FONT></I><B><FONT COLOR="#0000FF">&lt;             <br /></FONT></B><FONT COLOR="#BC8F8F"><B>---<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt; } else if (javaClass == Date.class) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   // ActionScriptのDateオブジェクト用<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   return runtime.newTime(((Date)object).getTime());<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt; } else if (javaClass == flex.messaging.io.amf.ASObject.class) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   // ActionScriptのオブジェクト用<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   RubyHash rh = new RubyHash(runtime);<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   for (Object e:((Map)object).entrySet()) {<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     Map.Entry entry = (Map.Entry)e;<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;     rh.put(<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;       runtime.newSymbol((String)entry.getKey()), <br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;       convertJavaToRuby(runtime, entry.getValue()));<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   }<br /></FONT></B><B><FONT COLOR="#5F9EA0">&gt;   return rh;<br /></FONT></B></PRE><br />以前のエントリに書いたが、今の Springは JRuby 1.1に対応していない。<br />将来 Springが JRuby1.1に対応したらこのパッチは要らなくなるかもしれない。<br /><br />続く<div style="clear:both; padding-bottom:0.25em"></div>
</div>]]>
    </content>
</entry>

<entry>
    <title>Eclipse 3.6(Helios)に Pythonプラグイン PyDevを導入する - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/07/helios-pydev.html" />
    <id>tag:walbrix.net,2010:/blog//2.253</id>

    <published>2010-07-31T14:40:26Z</published>
    <updated>2010-07-31T14:47:19Z</updated>

    <summary>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統合開発環境）である。通常、デフォルトでは JDT（Java Development Tools）を搭載しており Java開発にはそれが使われるが、プラグインで他の言語にも対応できる。ここでは<strong>PyDev</strong>を Eclipse 3.6(Helios)に導入して Pythonの開発を行うための手順を説明する。</p>

<ul id="asin-list" style="display:none;">
<li>4048686291</li>
<li>4798026557</li>
<li>4774142298</li>
<li>4774131946</li>
<li>4797356669</li>
</ul>

<dl id="related-articles" style="display:none">
<dt>/blog/2010/07/helios-subversive.html</dt>
<dd>Eclipse公式の Subversionプラグイン "Subversive"をインストールする方法 </dd>
</dl>]]>
        <![CDATA[<h2 style="font-size:1.3em;font-weight:bold;clear:right;">PyDevのインストール</h2>

<p>メニューから <strong>Help -> Install new software</strong> を選択</p>

<p>Work with: 欄に <strong>http://pydev.org/updates</strong> を入力</p>

<p><strong>PyDev for Eclipse</strong> をチェックして Nextボタンで次へ</p>

<p>Install Details という画面で詳細が表示されるので Nextボタンで次へ</p>

<p>ライセンス確認の画面になるので <strong>"I accept the terms of the license agreement"</strong> をチェックして Finishボタン</p>

<p>Eclipseの再起動を促されるので再起動する</p>

<h2 style="font-size:1.3em;font-weight:bold;clear:right;">Pythonスクリプトの実行</h2>

<p>PyDevに Pythonインタプリタ本体は付属していない。Macや Linuxなどではシステムに標準で Pythonがインストールされているが、Windowsの場合は自分でインストールする必要がある。ここでは Python本体のインストールについては取り扱わないので Windowsユーザーの方は適当に調べて頂きたい。</p>

<p>Pythonスクリプトを実行するには Pythonプロジェクトを作成する必要がある。File -> New -> Other -> PyDev -> PyDev Project を選択し、プロジェクト名をつけて Finishボタンを押すと Pythonプロジェクトを作成できる。</p>

<p>プロジェクト直下にある srcフォルダを右クリックして New -> PyDev Moduleとして適当な名前を付け（Packegeは空欄でも可）、Template欄から "Module: Main" を選択して Finishボタンを押すとテンプレートとなるPythonファイルを作成できるので、適当な Pythonスクリプトを記述してみよう。</p>

<script type="syntaxhighlighter" class="brush: python"><![CDATA[
if __name__ == '__main__':
    print "hello"
</script>

<p>スクリプトを右クリックして Run as -> Python Runとすると Pythonスクリプトを実行できる。</p>

<p>実行結果

<pre style="margin:1em;padding:1em;border-style:dotted;border-width:1px;">
hello
</pre>

</p>]]>
    </content>
</entry>

<entry>
    <title>当社のスキルマップを作成してみました - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/07/skillmap.html" />
    <id>tag:walbrix.net,2010:/blog//2.250</id>

    <published>2010-07-22T06:27:19Z</published>
    <updated>2010-07-22T06:33:42Z</updated>

    <summary> (この記事は 2009年1月25日に STBBS.NET Blogで掲載された...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[ <p><em>(この記事は 2009年1月25日に STBBS.NET Blogで掲載された記事を移動したものです)</em></p>

<ul id="asin-list" style="display:none;">
<li>4569704026</li>
<li>477414259X</li>
<li>4534045336</li>
<li>4822230341</li>
<li>4426105986</li>
</ul>]]>
        <![CDATA[<a href="http://www.stbbs.net/business.html"><img alt="skillmap.png" src="http://walbrix.net/blog/assets_c/2010/07/skillmap-thumb-240x337-231.png" width="240" height="337" class="mt-image-left" style="float: left; margin: 0 20px 20px 0;" /></a>

<p>OmniGraffleという作図ソフトを使って作成しています。Windowsでいう Visioのようなソフトです。</p>

<p>画像をクリックすると詳細を見ることができます。</p>

<div style="clear:left;"></div>]]>
    </content>
</entry>

<entry>
    <title>Eclipse 3.6(Helios)に Ruby Development Toold(RDT)プラグインを導入する - Walbrix Blog</title>
    <link rel="alternate" type="text/html" href="http://walbrix.net/blog/2010/07/helios-rdt.html" />
    <id>tag:walbrix.net,2010:/blog//2.249</id>

    <published>2010-07-20T10:32:17Z</published>
    <updated>2010-07-20T12:19:18Z</updated>

    <summary>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統...</summary>
    <author>
        <name>shimarin</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://walbrix.net/blog/">
        <![CDATA[<p>Eclipseは主に Javaを使ったアプリケーション開発に使われる IDE（統合開発環境）である。通常、デフォルトでは JDT（Java Development Tools）を搭載しており Java開発にはそれが使われるが、プラグインで他の言語にも対応できる。ここでは<strong>RDT(Ruby Development Tools)</strong>を Eclipse 3.6(Helios)に導入して Rubyの開発を行うための手順を説明する。</p>

<ul id="asin-list" style="display:none;">
<li>4797357401</li>
<li>4873113946</li>
<li>4822234304</li>
<li>4774131946</li>
<li>4797356669</li>
</ul>

<dl id="related-articles" style="display:none">
<dt>/blog/2010/07/helios-subversive.html</dt>
<dd>Eclipse公式の Subversionプラグイン "Subversive"をインストールする方法 </dd>
</dl>]]>
        <![CDATA[<h2 style="font-size:1.3em;font-weight:bold;clear:right;">RDTのインストール</h2>

<p>メニューから <strong>Help -> Install new software</strong> を選択</p>

<p>Work with: ドロップダウンから <strong>Helios - http://download.eclipse.org/releases/helios</strong> を選択</p>

<p>絞り込み用のテキストボックス(type filter textと書いてある所) に <strong>ruby</strong> と入力し(Enterキー不要)、 <strong>Dynamic Languages Toolkit - Ruby Development Tools</strong> をチェックして Nextボタンで次へ</p>

<p>Install Details という画面で詳細が表示されるので Nextボタンで次へ</p>

<p>ライセンス確認の画面になるので <strong>"I accept the terms of the license agreement"</strong> をチェックして Finishボタン</p>

<p>Eclipseの再起動を促されるので再起動する</p>

<p>RDTのインストールはここまでで完了となる。JRubyなどで Javaプロジェクトに Rubyスクリプトを混ぜて使っている場合は、Javaプロジェクト内にある .rbファイルも Ruby用のエディタを使って編集できるようになる。但し Javaプロジェクト内にある Rubyスクリプトは実行できない。</p>

<h2 style="font-size:1.3em;font-weight:bold;clear:right;">Rubyを実行するための設定</h2>

<p>RDTに Rubyインタプリタ本体は付属していないため、RDTで使用する Rubyインタプリタの位置を設定してやる必要がある。Macや最近の Linuxなどではシステムに標準で Rubyがインストールされているが、Windowsの場合は自分でインストールする必要がある。ここでは Ruby本体のインストールについては取り扱わないので Windowsユーザーの方は適当に調べて頂きたい。</p>

<p>Eclipseの環境設定ダイアログを開き、Ruby -> Interpretersを選択してAddボタンを押し <strong>/usr/bin/ruby</strong> を追加する。システムに標準で搭載されている Rubyインタプリタは大抵 /usr/bin/ruby だが、FreeBSDの場合は /usr/local/bin/ruby かもしれないので調整する。</p>

<p>Rubyスクリプトを実行するには Rubyプロジェクトを作成する必要がある。File -> New -> Other -> Ruby -> Ruby Project を選択し、プロジェクト名をつけて Finishボタンを押すと Rubyプロジェクトを作成できる。</p>

<p>プロジェクトを右クリックして New -> Empty Ruby Script</p>とすると
空のRubyスクリプトを作成できるので、適当な Rubyスクリプトを記述してみよう。</p>

<script type="syntaxhighlighter" class="brush: ruby"><![CDATA[
puts "hello"
</script>

<p>スクリプトを右クリックして Run as -> Ruby Scriptとすると Rubyスクリプトを実行できる。</p>

<p>実行結果

<pre style="margin:1em;padding:1em;border-style:dotted;border-width:1px;">
hello
</pre>

</p>]]>
    </content>
</entry>

</feed>

