<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2771426910203965051</id><updated>2024-08-29T12:54:32.712+09:00</updated><category term="ruby"/><category term="RoR"/><category term="プログラム"/><category term="ubuntu"/><category term="rails3"/><category term="java"/><category term="その他"/><category term="情報処理"/><category term="vmware"/><category term="データベース"/><category term="MySQL"/><category term="Syntax Highlighter"/><category term="bundler"/><category term="chrome"/><category term="compiz"/><category term="conky"/><category term="css"/><category term="html5"/><category term="javascript"/><category term="linux"/><category term="play"/><category term="wine"/><title type='text'>プログラマの覚書</title><subtitle type='html'>Java, Ruby, その他イロイロ学んだことをつらつらと書きます</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-5112917738702598566</id><published>2012-07-20T20:00:00.000+09:00</published><updated>2012-07-20T20:00:08.174+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="play"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Play framework 2.0.2 (Java) Guiceプラグインを利用する</title><content type='html'>Play 2.0 for Javaで、Guiceプラグインを利用するため試行錯誤したので備忘録として記録。

project/Build.scalaに依存関係を登録。
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
    val appDependencies = Seq(
      // Add your project dependencies here,
      &quot;com.typesafe&quot; % &quot;play-plugins-guice&quot; % &quot;2.0.3&quot;
    )
&lt;/pre&gt;

ターミナルから依存関係の取得を実行。
&lt;pre class=&quot;prettyprint&quot;&gt;$ play dependencies
&lt;/pre&gt;

Eclipseで編集するので、Eclipse用の設定を更新。
&lt;pre class=&quot;prettyprint&quot;&gt;$ play eclipsify
&lt;/pre&gt;

ここまでで環境構築は完了。
ここから、環境設定。
conf/直下にplay.pluginsファイルを作成して、GuicePluginを利用することを宣言する。&lt;br /&gt;
&lt;b style=&quot;color:red;&quot;&gt;ここハマッタ。pluginを利用する場合は準備する必要アリ。&lt;/b&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;# conf/play.plugins
1500:com.typesafe.plugin.inject.GuicePlugin
&lt;/pre&gt;

依存関係をバインドするinitializerを作成。&lt;br /&gt;
app/module/Dependencies.javaを作成。&lt;br /&gt;
&lt;b style=&quot;color:red;&quot;&gt;はまったのがここで、パッケージ名とクラス名が決められているので注意&lt;/b&gt;&lt;br /&gt;
かっこつけてmodules.Dependencies.javaなんてつくったら動かなかった。&lt;br /&gt;
&lt;i&gt;DI対象は好きな場所に好きな名前で準備。&lt;/i&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;package module;

import services.UserSearchService;
import services.impl.UserSearchServiceImpl;

import com.google.inject.Binder;
import com.google.inject.Module;

public class Dependencies implements Module {

    public void configure(final Binder binde) {
        binde.bind(UserSearchService.class).to(UserSearchServiceImpl.class);
    }
}
&lt;/pre&gt;

後はDI先でDIフィールドの宣言を行う。&lt;br /&gt;
ここも注意点アリ。&lt;br /&gt;
&lt;b style=&quot;color:red;&quot;&gt;@javax.inject.Injectである必要アリ。&lt;/b&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;package controllers;

import static play.Logger.debug;

import javax.inject.Inject;

import org.codehaus.jackson.node.ObjectNode;

import play.data.Form;
import play.libs.Json;
import play.mvc.Controller;
import play.mvc.Result;
import services.UserSearchService;
import forms.UserSearch;

public class UserController extends Controller {

　　　　@Inject
　　　　static UserSearchService userSearchService;
}
&lt;/pre&gt;

これで動くはず。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/5112917738702598566/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/5112917738702598566' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5112917738702598566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5112917738702598566'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2012/07/play-framework-202-java-guice.html' title='Play framework 2.0.2 (Java) Guiceプラグインを利用する'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-6192607644395632947</id><published>2011-09-09T18:39:00.000+09:00</published><updated>2011-09-09T18:39:03.271+09:00</updated><title type='text'>Ubuntu10.04でGAE on Python</title><content type='html'>GAE on Python を Python の勉強がてらやってみようかと。&lt;br /&gt;
で、イロイロ踊らされてしまった内容をツラツラと書こうかと。&lt;br /&gt;
&lt;br /&gt;
まず、前提条件としてGAEはPython2.5でないとイカンという有名な話がある。&lt;br /&gt;
Ubuntu10.04はPython2.6が標準インストールされている。&lt;br /&gt;
根が横着なので、Python2.6でGAEを動かそうと考えた訳で。&lt;br /&gt;
結論から言うとちゃんと動きました。App Engine SDK に手を加えることなく動きます。
&lt;br /&gt;
&lt;br /&gt;
何が問題だったかと言うと、まず、単純にSDKの最新版をダウンロードして適当なフォルダに解凍した。んでチュートリアルに従ってプロジェクトを作成し実行したら、下記エラーが発生した。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;
Warning: You are using a Python runtime (2.6) that is more recent than the production runtime environment (2.5). Your application may use features that are not available in the production environment and may not work correctly when deployed to production.
INFO &amp;nbsp; &amp;nbsp; 2011-09-09 08:40:30,324 appengine_rpc.py:159] Server: appengine.google.com
WARNING &amp;nbsp;2011-09-09 08:40:30,330 datastore_file_stub.py:512] Could not read datastore data from /tmp/dev_appserver.datastore
INFO &amp;nbsp; &amp;nbsp; 2011-09-09 08:40:30,333 rdbms_sqlite.py:58] Connecting to SQLite database &#39;&#39; with file &#39;/tmp/dev_appserver.rdbms&#39;
Traceback (most recent call last):
&amp;nbsp; File &quot;google_appengine/dev_appserver.py&quot;, line 77, in &lt;module&gt;&lt;/module&gt;
&amp;nbsp; &amp;nbsp; run_file(__file__, globals())
&amp;nbsp; File &quot;google_appengine/dev_appserver.py&quot;, line 73, in run_file
&amp;nbsp; &amp;nbsp; execfile(script_path, globals_)
&amp;nbsp; File &quot;/app_path/google_appengine/google/appengine/tools/dev_appserver_main.py&quot;, line 689, in &lt;module&gt;&lt;/module&gt;
&amp;nbsp; &amp;nbsp; sys.exit(main(sys.argv))
&amp;nbsp; File &quot;/app_path/google_appengine/google/appengine/tools/dev_appserver_main.py&quot;, line 653, in main
&amp;nbsp; &amp;nbsp; default_partition=default_partition)
&amp;nbsp; File &quot;/app_path/google_appengine/google/appengine/tools/dev_appserver.py&quot;, line 4971, in CreateServer
&amp;nbsp; &amp;nbsp; server = HTTPServerWithScheduler((serve_address, port), handler_class)
&amp;nbsp; File &quot;/app_path/google_appengine/google/appengine/tools/dev_appserver.py&quot;, line 4999, in __init__
&amp;nbsp; &amp;nbsp; request_handler_class)
&amp;nbsp; File &quot;/usr/lib/python2.6/SocketServer.py&quot;, line 400, in __init__
&amp;nbsp; &amp;nbsp; self.server_bind()
&amp;nbsp; File &quot;/usr/lib/python2.6/BaseHTTPServer.py&quot;, line 108, in server_bind
&amp;nbsp; &amp;nbsp; SocketServer.TCPServer.server_bind(self)
&amp;nbsp; File &quot;/usr/lib/python2.6/SocketServer.py&quot;, line 411, in server_bind
&amp;nbsp; &amp;nbsp; self.socket.bind(self.server_address)
&amp;nbsp; File &quot;&lt;string&gt;&quot;, line 1, in bind&lt;/string&gt;
socket.error: [Errno 98] Address already in use
&lt;/pre&gt;
&lt;br /&gt;
ここでちゃんとエラーを読んでググってればここで終わったのにちゃんと読まなかったため&lt;br /&gt;
ぁぁ、やっぱりPython2.5が要るんだなと判断しちゃって、瞑想しちゃいました。&lt;br /&gt;
ちなみに、このエラーは&lt;b&gt;Address already in use&lt;/b&gt;と出てて、アドレス使ってますよと言っています。&lt;br /&gt;
Tomcatをインストールしていて、それが自動起動しちゃってたため、ポート8080がかぶって起動しなかったのです。&lt;br /&gt;
それをPython2.5入れて、環境汚さないようにvirtualenv入れてとかイロイロやったけど、起動するときに
&lt;pre class=&quot;prettyprint&quot;&gt;google_appengine/dev_appserver.py -p 8081 /app_path&lt;/pre&gt;
で、起動しちゃいました。

なんか、どっと疲れた。

これから、ちょっとずつPythonやってなんかサイト作ります。
</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/6192607644395632947/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/6192607644395632947' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6192607644395632947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6192607644395632947'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/09/ubuntu1004gae-on-python.html' title='Ubuntu10.04でGAE on Python'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-5833233964703683740</id><published>2011-06-08T19:10:00.007+09:00</published><updated>2011-06-08T19:17:37.347+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>ubuntu 10.04 で Ruby(環境構築編) その２</title><content type='html'>だいぶ前に &lt;a href=&quot;http://kiyorin-net.blogspot.com/2010/05/ubuntu-1004-ruby.html&quot;&gt;ここで&lt;/a&gt; RVM の設定方法を書き込んだが、今ではだいぶ楽になっていた。&lt;br /&gt;
ビックリしたのでメモ。&lt;br /&gt;
&lt;br /&gt;
１．事前準備&lt;br /&gt;
&lt;br /&gt;
rvm を動作させるのに必要なものを一式インストールする。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude install git-core curl zlib1g-dev&lt;/pre&gt;&lt;br /&gt;
rvm をセットアップする場所を作成して、移動する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;mkdir ~/.rvm
cd ~/.rvm
&lt;/pre&gt;&lt;br /&gt;
２．インストール&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)&lt;/pre&gt;すると、カレントディレクトリに rvm 絡みが一式できてる。（ここでは ~/.rvm 配下）&lt;br /&gt;
&lt;br /&gt;
後は、コンソールに表示されている内容の修正を .bashrc or .bash_histry に加える。&lt;br /&gt;
具体的には、&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;#.bashrc
[ -z &quot;$PS1&quot; ] &amp;&amp; return
&lt;/pre&gt;の欄を&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;#.bashrc
if [[ -n &quot;$PS1&quot; ]] ; then

  # ... original content that was below the &#39;&amp;&amp; return&#39; line ...
  [ -z &quot;$PS1&quot; ] &amp;&amp; return

fi # &amp;lt;= be sure to close the if at the end of the .bashrc.

# This is a good place to source rvm v v v
[[ -s &quot;/home/matsumoto/.rvm/scripts/rvm&quot; ]] &amp;&amp; source &quot;/home/matsumoto/.rvm/scripts/rvm&quot;  # This loads RVM into a shell session.
&lt;/pre&gt;に書き換えるだけ。&lt;br /&gt;
&lt;br /&gt;
書き換え後は、&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;source .bashrc&lt;/pre&gt;で変更を反映させる。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
■おまけ&lt;br /&gt;
&lt;br /&gt;
RVM のコマンドリスト（少しだけ）&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tr&gt; &lt;th&gt;rvm list&lt;/th&gt; &lt;td&gt;インストールされている Ruby を一覧表示&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;th&gt;rvm list known&lt;/th&gt; &lt;td&gt;rvm でインストール可能なすべてのバージョンを表示&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;th&gt;rvm install &lt;i&gt;version&lt;/i&gt;&lt;/th&gt; &lt;td&gt;指定されたバージョンの Ruby をインストール&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;th&gt;rvm &lt;i&gt;[use]&lt;/i&gt; &lt;i&gt;version&lt;/i&gt; &lt;i&gt;[--default]&lt;/i&gt;&lt;/th&gt; &lt;td&gt;使用する Ruby を選択する。&lt;br /&gt;
--defaultを指定すれば、それが常に利用される。&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;th&gt;rvm uninstall &lt;i&gt;version&lt;/i&gt;&lt;/th&gt; &lt;td&gt;指定したバージョンの Ruby を削除する。&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;th&gt;rvm --help&lt;/th&gt; &lt;td&gt;困ったときはヘルプを見るべし！&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
■最後に&lt;br /&gt;
&lt;br /&gt;
RVM 自体のアンインストール&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;rvm implode&lt;/pre&gt;&lt;br /&gt;
した後に、RVM_HOME のソース類をゴソッと削除して、.bashrc or .bash_histry を修正する。&lt;br /&gt;
&lt;br /&gt;
かなぁ。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/5833233964703683740/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/5833233964703683740' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5833233964703683740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5833233964703683740'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/06/ubuntu-1004-ruby.html' title='ubuntu 10.04 で Ruby(環境構築編) その２'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-4066075601392697886</id><published>2011-06-08T18:30:00.001+09:00</published><updated>2011-06-08T18:31:30.021+09:00</updated><title type='text'>近状</title><content type='html'>なんか、久しぶりの投稿になる。&lt;br /&gt;
&lt;br /&gt;
身の回りが忙しくブログ書いてる暇がない。&lt;br /&gt;
けどネタはいっぱい増えている。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;ubuntu 10.04 64bit の日本語化&lt;/li&gt;
&lt;li&gt;ubuntu 10.04 の OpenOffice.org を LibreOffice に変更&lt;/li&gt;
&lt;li&gt;Play framework for Scala のこと&lt;/li&gt;
&lt;li&gt;RVM のインストール方法（改）&lt;/li&gt;
&lt;li&gt;JRuby on Rails のこと&lt;/li&gt;
&lt;/ul&gt;時間見つけて書き込んでいこう。&lt;br /&gt;
（いけるかな？）</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/4066075601392697886/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/4066075601392697886' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4066075601392697886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4066075601392697886'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/06/blog-post.html' title='近状'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-3949835658638355270</id><published>2011-04-08T05:37:00.000+09:00</published><updated>2011-04-08T05:37:01.010+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 routes</title><content type='html'>やはり触れることになってしまった routes.rb。これを期に意味不明な部分を理解しよう。&lt;br /&gt;
勉強して得られた情報をメモ。&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border:1px gray solid&quot;&gt;routes.rb にて生成される URL については &lt;b&gt;rake routes&lt;/b&gt; コマンドにて確認できる。&lt;br /&gt;
記載する出力結果はすべて &lt;b&gt;rake routes&lt;/b&gt; にて出力された結果です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;match(path, options={})&lt;/h3&gt;&lt;br /&gt;
route 師弟の基本。アクセス可能な path を指定してやることで、HTTP リクエストを処理できるようになる。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo/bar&quot;
# foo_bar  /foo/bar(.:format) {:controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;path は必ず一つ以上 &quot;/&quot; を入れてやる必要がある。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;match &quot;foo&quot;&lt;b&gt;  =&amp;gt; NG&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;match &quot;foo/bar&quot;&lt;b&gt;  =&amp;gt; :controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;match &quot;foo/bar/buz&quot;&lt;b&gt;  =&amp;gt; :controller=&amp;gt;&quot;foo/bar&quot;, :action=&amp;gt;&quot;buz&quot;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;&quot;/&quot; を複数指定した場合、controller の namespace を表すように解釈される。&lt;br /&gt;
&lt;br /&gt;
以下指定可能オプション。(全部じゃないかも)&lt;br /&gt;
&lt;style&gt;
table.t{border-collapse:collapse;width:100%;}
table.t th{border:1px gray solid;width:15%;text-align:left;}
table.t td{border:1px gray solid;padding:5px;}
&lt;/style&gt;&lt;br /&gt;
&lt;table class=&quot;t&quot;&gt;&lt;tr&gt;   &lt;th&gt;:controller&lt;br /&gt;
:action&lt;/th&gt;   &lt;td&gt;動作させるコントローラとアクションを指定する。&lt;br /&gt;
&lt;u&gt;必ずセットで指定する。&lt;/u&gt;&lt;br /&gt;
path に &quot;/&quot; を入れなくてもこのオプションを指定してやれば解釈されるようになる。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo&quot;, :controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;
# foo  /foo(.:format)  {:controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;:to&lt;/th&gt;   &lt;td&gt;:controller, :action の短縮形。&quot;#&quot; でコントローラとアクションを区切って記述する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo&quot;, :to=&amp;gt;&quot;foo#bar&quot;&lt;/pre&gt;:to の記述自体を短縮する方法もある。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo&quot;=&amp;gt;&quot;foo#bar&quot;&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;:via&lt;/th&gt;   &lt;td&gt;HTTP メソッドを付加する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo/bar&quot;, :via=&amp;gt;:get
# foo_bar GET /foo/bar(.:format) {:controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt;   &lt;th&gt;:as&lt;/th&gt;   &lt;td&gt;ルート名を指定する。ルート名は form_tag や link_to などで指定できる名前で、その名前に該当する path を生成して form を作成してくれる。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;match &quot;foo/bar&quot;, :as=&amp;gt;&quot;bar&quot;
# bar GET /foo/bar(.:format) {:controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;get&lt;/h3&gt;&lt;h3&gt;post&lt;/h3&gt;&lt;h3&gt;put&lt;/h3&gt;&lt;h3&gt;delete&lt;/h3&gt;&lt;br /&gt;
match の :via オプションの HTTPHelper メソッド。&lt;br /&gt;
指定可能なパラメータは match と同様。なので&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;get &quot;foo/bar&quot;, :via=&amp;gt;:delete&lt;/pre&gt;なんていうふざけた記述もちゃんと解釈してくれる。(HTTP メソッドは GET になります)&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;resource&lt;/h3&gt;&lt;h3&gt;resources&lt;/h3&gt;&lt;br /&gt;
Rails のルールに従って RESTful 的な URL を自動で生成してくれる有名なメソッド。&lt;br /&gt;
単数形の場合は resource を、複数形の場合は resources を利用する。&lt;b&gt;＊指定する名前も単数形、複数形を意識して指定してやる。(resource :foo, resources :foos)&lt;/b&gt;&lt;br /&gt;
二つの違いは一覧出力 URL (scaffold 生成時の index アクション) の有無の違い。&lt;br /&gt;
&lt;br /&gt;
以下指定可能オプション。(全部じゃないかも)&lt;br /&gt;
&lt;table class=&quot;t&quot;&gt;&lt;tr&gt;
  &lt;th&gt;:as&lt;/th&gt;
  &lt;td&gt;ルート名に利用する別名。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resource &quot;foo&quot;, :as=&amp;gt;&quot;bar&quot;
#   bar POST   /foo(.:format)      {:action=&amp;gt;&quot;create&quot;, :controller=&amp;gt;&quot;foos&quot;}
# new_bar GET    /foo/new(.:format)  {:action=&amp;gt;&quot;new&quot;, :controller=&amp;gt;&quot;foos&quot;}
#edit_bar GET    /foo/edit(.:format) {:action=&amp;gt;&quot;edit&quot;, :controller=&amp;gt;&quot;foos&quot;}
#       GET    /foo(.:format)      {:action=&amp;gt;&quot;show&quot;, :controller=&amp;gt;&quot;foos&quot;}
#       PUT    /foo(.:format)      {:action=&amp;gt;&quot;update&quot;, :controller=&amp;gt;&quot;foos&quot;}
#       DELETE /foo(.:format)      {:action=&amp;gt;&quot;destroy&quot;, :controller=&amp;gt;&quot;foos&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:controller&lt;/th&gt;
  &lt;td&gt;処理するコントローラを指定する。&lt;br /&gt;
アクション名は Rails ルールに従う必要がある。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resource &quot;foo&quot;, :controller=&amp;gt;&quot;bar&quot;
#   foo POST   /foo(.:format)      {:action=&amp;gt;&quot;create&quot;, :controller=&amp;gt;&quot;bar&quot;}
# new_foo GET    /foo/new(.:format)  {:action=&amp;gt;&quot;new&quot;, :controller=&amp;gt;&quot;bar&quot;}
#edit_foo GET    /foo/edit(.:format) {:action=&amp;gt;&quot;edit&quot;, :controller=&amp;gt;&quot;bar&quot;}
#        GET    /foo(.:format)      {:action=&amp;gt;&quot;show&quot;, :controller=&amp;gt;&quot;bar&quot;}
#        PUT    /foo(.:format)      {:action=&amp;gt;&quot;update&quot;, :controller=&amp;gt;&quot;bar&quot;}
#        DELETE /foo(.:format)      {:action=&amp;gt;&quot;destroy&quot;, :controller=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:path&lt;/th&gt;
  &lt;td&gt;URL を置き換える。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resource &quot;foo&quot;, :path=&amp;gt;&quot;b/a&quot;
#   foo POST   /b/a(.:format)  {:action=&amp;gt;&quot;create&quot;,:controller=&amp;gt;&quot;foos&quot;}
# new_foo GET    /b/a/new(.:format) {:action=&amp;gt;&quot;new&quot;,:controller=&amp;gt;&quot;foos&quot;}
#edit_foo GET    /b/a(.:format)     {:action=&amp;gt;&quot;edit&quot;,:controller=&amp;gt;&quot;foos&quot;}
#         GET    /b/a(.:format)     {:action=&amp;gt;&quot;show&quot;,:controller=&amp;gt;&quot;foos&quot;}
#         PUT    /b/a(.:format)     {:action=&amp;gt;&quot;update&quot;,:controller=&amp;gt;&quot;foos&quot;}
#         DELETE /b/a(.:format)     {:action=&amp;gt;&quot;destroy&quot;,:controller=&amp;gt;&quot;foos&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:only&lt;/th&gt;
  &lt;td&gt;作成される URL を絞り込む。指定されたアクションのみ URL が生成される。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
# foo_index GET /foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:except&lt;/th&gt;
  &lt;td&gt;作成する URL を削除する。指定されたアクションは URL が生成されない。&lt;br /&gt;
こう書けば、:only と同じ結果になる。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resources &quot;foo&quot;, :except=&amp;gt;[&quot;create&quot;,&quot;edit&quot;,&quot;new&quot;,&quot;show&quot;,&quot;update&quot;,&quot;destroy&quot;]
# foo_index GET /foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:module&lt;/th&gt;
  &lt;td&gt;controller に namespace を付加する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;], :module=&amp;gt;&quot;module&quot;
# foo_index GET /foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;module/foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
has_many の関係を定義する場合、block を渡して resources を定義する。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;resources &quot;foo&quot; do
  resources &quot;bar&quot;
end
&lt;/pre&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;scope&lt;/h3&gt;&lt;br /&gt;
URL に namespace を付けるイメージ。controller には付かない所がポイント。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;scope &quot;scope&quot; do
  resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
end
# foo_index GET /scope/foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;foo&quot;}
&lt;/pre&gt;&lt;br /&gt;
block 内に &lt;b&gt;match(&lt;i&gt;path&lt;/i&gt;)&lt;/b&gt; を指定した場合、namespace として扱われる。(controller にも scope が付加される)&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;scope &quot;scope&quot; do
  match &quot;foo/bar&quot;
end
# foo_bar  /scope/foo/bar(.:format) {:controller=&amp;gt;&quot;scope/foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;:to オプションを付けて controller と action を宣言してやれば、URL のみ対象となる。&lt;br /&gt;
&lt;br /&gt;
以下指定可能オプション。(全部じゃないかも)&lt;br /&gt;
&lt;table class=&quot;t&quot;&gt;&lt;tr&gt;
  &lt;th&gt;:module&lt;/th&gt;
  &lt;td&gt;controller の namespace を指定する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;scope &quot;sco&quot;, :module=&amp;gt;&quot;mod&quot; do
  resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
end
# foo_index GET /sco/foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;mod/foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:as&lt;/th&gt;
  &lt;td&gt;ルート名に prefix を付加する。resources は別名に置き換えるがこっちは付加する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;scope &quot;sco&quot;, :as=&amp;gt;&quot;as&quot; do
  resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
end
# as_foo_index GET /sco/foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
controller のみに namespace を付加したい場合、&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;scope :module=&amp;gt;&quot;module&quot; do
  resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
end
&lt;/pre&gt;としてやればよい。&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;namespace&lt;/h3&gt;&lt;br /&gt;
URL 名, URL と controller に(要は全てに) namespace を付加する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;namespace &quot;nspe&quot; do
  resources &quot;foo&quot;, :only=&amp;gt;[&quot;index&quot;]
end
# nspe_foo_index GET /nspe/foo(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;nspe/foo&quot;}
&lt;/pre&gt;&lt;br /&gt;
以下指定可能オプション。(全部じゃないかも)&lt;br /&gt;
&lt;table class=&quot;t&quot;&gt;&lt;tr&gt;
  &lt;th&gt;:as&lt;/th&gt;
  &lt;td&gt;ルート名に prefix を付加する。動きは scope と同じ。&lt;br /&gt;
  &lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;controller&lt;/h3&gt;&lt;br /&gt;
controller を一括で指定できる。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;controller &quot;foo&quot; do
  get &quot;search&quot;
end
# search GET /search(.:format) {:action=&gt;&quot;search&quot;, :controller=&gt;&quot;foo&quot;}
&lt;/pre&gt;match でエラーになるパターン (&quot;/&quot; なし) も controller を付加してくれてちゃんと動く。&lt;br /&gt;
優先度は block 内のメソッドの方が高く、resources &quot;bar&quot; や match &quot;bar/buz&quot; など指定しても適用されない。(:controller=&amp;gt;&quot;bar&quot;になる)&lt;br /&gt;
&lt;br /&gt;
以下指定可能オプション。(全部じゃないかも)&lt;br /&gt;
&lt;table class=&quot;t&quot;&gt;&lt;tr&gt;
  &lt;th&gt;:path&lt;/th&gt;
  &lt;td&gt;URL に prefix を付加する。デフォルトでは controller 名は URL に付加されないので、必要な場合は指定する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;controller &quot;foo&quot;, :path=&amp;gt;&quot;foo&quot; do
  get &quot;index&quot;
end
# index GET /foo/index(.:format) {:action=&amp;gt;&quot;index&quot;, :controller=&amp;gt;&quot;foo&quot;}
&lt;/pre&gt;  &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;th&gt;:as&lt;/th&gt;
  &lt;td&gt;ルート名に prefix を付加する。動きは scope と同じ。&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;hr/&gt;&lt;h3&gt;root&lt;/h3&gt;&lt;br /&gt;
root (&quot;/&quot;) にアクセスされた際の routes を指定する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;root :to=&amp;gt;&quot;foo#bar&quot;
# root  /(.:format) {:controller=&amp;gt;&quot;foo&quot;, :action=&amp;gt;&quot;bar&quot;}
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr/&gt;長文でダラダラとまとめたが、まだまだ全部でない感じがする。(ソース見た感じ)&lt;br /&gt;
けど、これで routes への恐怖心が若干薄まった感がある。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/3949835658638355270/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/3949835658638355270' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3949835658638355270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3949835658638355270'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/04/rails3-routes.html' title='Rails3 routes'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-5669832773787179153</id><published>2011-03-30T04:51:00.001+09:00</published><updated>2011-03-30T05:15:36.960+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 :method =&gt; :delete が動かない件</title><content type='html'>&lt;b&gt;環境&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Windows XP SP2&lt;/li&gt;
&lt;li&gt;Internet Explorer 6&lt;/li&gt;
&lt;li&gt;ruby 1.9.2p136 (2010-12-25) [i386-mingw32]&lt;/li&gt;
&lt;li&gt;Rails 3.0.3&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
上記環境にて、link_to :method =&gt; :delete が正しく動作しない。&lt;br /&gt;
scaffold で生成したコンテンツでもダメだった。&lt;br /&gt;
原因を調査してみたら、rails.js 内の以下の箇所で TypeError が発生していた。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;javascript&quot;&gt;function handleMethod(element) {
  var method = element.readAttribute(&#39;data-method&#39;),
      url = element.readAttribute(&#39;href&#39;),
      csrf_param = $$(&#39;meta[name=csrf-param]&#39;)[0],
      csrf_token = $$(&#39;meta[name=csrf-token]&#39;)[0];

  var form = new Element(&#39;form&#39;, { method: &quot;POST&quot;, action: url, style: &quot;display: none;&quot; });
  element.parentNode.insert(form); // ←←←この箇所

  if (method !== &#39;post&#39;) {
    var field = new Element(&#39;input&#39;, { type: &#39;hidden&#39;, name: &#39;_method&#39;, value: method });
    form.insert(field);
  }

  if (csrf_param) {
    var param = csrf_param.readAttribute(&#39;content&#39;),
        token = csrf_token.readAttribute(&#39;content&#39;),
        field = new Element(&#39;input&#39;, { type: &#39;hidden&#39;, name: param, value: token });
    form.insert(field);
  }

  form.submit();
}
&lt;/pre&gt;&lt;br /&gt;
debug してみると、たしかに element.parentNode に insert という function は存在していなかった。&lt;br /&gt;
とりあえず、以下のように修正することで回避可能。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;javascript&quot;&gt;//  element.parentNode.insert(form);
  element.insert(form);
&lt;/pre&gt;&lt;br /&gt;
以下の環境だと、上記修正を行わなくてもちゃんと動いた。&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Ubuntu 10.04&lt;/li&gt;
&lt;li&gt;Google Chrome 10, Firefox 4.0&lt;/li&gt;
&lt;li&gt;ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]&lt;/li&gt;
&lt;li&gt;Rails 3.0.4&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
怪しいのは IE6。別バージョンで試すことができない環境なのでどうしようもない。&lt;br /&gt;
んー、おかしい。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/5669832773787179153/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/5669832773787179153' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5669832773787179153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/5669832773787179153'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails3-method-delete.html' title='Rails3 :method =&gt; :delete が動かない件'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-8359989744802250878</id><published>2011-03-26T06:34:00.000+09:00</published><updated>2011-03-26T06:34:10.674+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 selectbox を動的に変更する。</title><content type='html'>Rails3 で selectbox (combobox) の中身を動的に入れ替える処理が必要になった。&lt;br /&gt;
ググってみると大概 observe_field を利用した Ajax.update を行うものだったが、Rails3 には&lt;br /&gt;
observe_field が削除されている。(正確には Rails2.3.9 で削除されたっぽい)&lt;br /&gt;
なので無い脳ミソをフル稼働させて考えてみた結果をメモ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;■仕様(やりたい事・目指した事)&lt;/u&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;selectboxA を変更したら、その内容で selectboxB の内容が置き換わる。&lt;/li&gt;
&lt;li&gt;n段に対応。(selectboxA → selectboxB → selectboxC → ... → selectbox(N))&lt;br/&gt;今回は大分類・中分類・小分類の 3 段で考える。&lt;/li&gt;
&lt;li&gt;全ての selectbox の先頭に :inclide_blank =&amp;gt; true を入れる。&lt;/li&gt;
&lt;li&gt;DRY を徹底する。(同じコードはなるべく書かない)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
調べてみるとやり方はかなり豊富。仕様と照らし合わせてどのやり方をチョイスするか選んだ方がよさそう。&lt;br /&gt;
今回の仕様から、RJS つかって動的にコンテンツを更新する方法にした。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;■考え方&lt;/u&gt;&lt;/h3&gt;まず selectbox のデータを格納する model を考える。今回は kind(分類) という model を作成する。&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tr&gt;&lt;th style=&quot;background-color:lightgray;&quot; colspan=&quot;2&quot;&gt;kind&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;PK&lt;/th&gt;&lt;td&gt;id : integer&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;&amp;nbsp;&lt;/th&gt;&lt;td&gt;name : string&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;FK&lt;/th&gt;&lt;td&gt;kind_id : integer&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;kind_id が外部キーとなっており、自分の親のキーを保持する。&lt;br /&gt;
(中分類のデータなら所属する大分類のIDを保持する)&lt;br /&gt;
&lt;br /&gt;
次に html タグの動的入れ替えだが、以下の範囲を入れ替えるように考えた。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;p id=&quot;middle_select&quot;&amp;gt;
&lt;div style=&quot;background-color:yellow&quot;&gt;  &amp;lt;select id=&quot;kind_id_middle&quot;&amp;gt;
    &amp;lt;option&amp;gt;&amp;lt;/option&amp;gt;               ＊黄色の部分を Ajax で入れ替える
  &amp;lt;/select&amp;gt;
&lt;/div&gt;&amp;lt;/p&amp;gt;
&lt;/pre&gt;理由は、selectbox の先頭に blank option をつけたかったから。直に &amp;lt;option value=&quot;&quot;&amp;gt;&amp;lt;/option&amp;gt;&lt;br /&gt;
タグを書けば option 範囲の入れ替えでもいけるのだが、それはあまりやりたくなかった。(要こだわり)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;■実装&lt;/u&gt;&lt;/h3&gt;model は作ってあり、データも適当にいれているものとする。&lt;br /&gt;
大分類の kind_id は 0 を指定しておく。(TOP レベルで親はいませんという意味で)&lt;br /&gt;
必要な routes.rb は記述してあるものとする。&lt;br /&gt;
参考データ&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tr style=&quot;background-color:lightgray;&quot;&gt;&lt;th&gt;id&lt;/th&gt;&lt;th&gt;name&lt;/th&gt;&lt;th&gt;kind_id&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;大分類１&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;中分類１&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;22&lt;/td&gt;&lt;td&gt;中分類２&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;43&lt;/td&gt;&lt;td&gt;小分類１&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;44&lt;/td&gt;&lt;td&gt;小分類２&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;65&lt;/td&gt;&lt;td&gt;小分類３&lt;/td&gt;&lt;td&gt;22&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
初期表示時の view。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# select.html.erb
&lt;p id=&quot;large_select&quot;&gt;  &lt;%= label &quot;kind_id&quot;, &quot;large&quot;, &quot;大分類：&quot; %&gt;
  &lt;%= select &quot;kind_id&quot;, &quot;large&quot;,
        Kind.where(&quot;kind_id = 0&quot;).map{|p| [p.name, p.id]},
        {:include_blank =&gt; true},
        {:onchange =&gt; remote_function(:url =&gt; {:action =&gt; &quot;change_select&quot;},
                                      :with =&gt; &quot;&#39;kind_id[large]=&#39; + escape(this.value)&quot;)} %&gt;
&lt;/p&gt;
&lt;p id=&quot;middle_select&quot;&gt;  &lt;%= render :partial =&gt; &quot;middle_select&quot;, :locals =&gt; {:middle_kinds =&gt; @middle_kinds} %&gt;
&lt;/p&gt;
&lt;p id=&quot;small_select&quot;&gt;  &lt;%= render :partial =&gt; &quot;small_select&quot;, :locals =&gt; {:small_kinds =&gt; @small_kinds} %&gt;
&lt;/p&gt;&lt;/pre&gt;ポイントは&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;render 使って動的入れ替えする部分を外だしにする。(RJS でも render すれば DRY になる)&lt;/li&gt;
&lt;li&gt;observe_field がないので、onchange イベントに remote_function ひっつける。&lt;/li&gt;
&lt;li&gt;remote_function :with で大分類の値を POST する。&lt;/li&gt;
&lt;li&gt;複数のコンテンツをいっぺんに変えるため (大分類 → [中分類, 小分類]) remote_function :update は未指定。&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
中分類の view。select.html.erb と同じ階層に作成する。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# _middle_select.html.erb
&lt;%= label &quot;kind_id&quot;, &quot;middle&quot;, &quot;中分類：&quot; %&gt;
&lt;%= select &quot;kind_id&quot;, &quot;middle&quot;,
      middle_kinds.map{|p| [p.name, p.id]},
      {:include_blank =&gt; true},
      {:onchange =&gt; remote_function(:url =&gt; {:action =&gt; &quot;change_select&quot;},
                                    :with =&gt; &quot;&#39;kind_id[middle]=&#39; + escape(this.value)&quot;)} %&gt;
&lt;/pre&gt;&lt;br /&gt;
小分類の view。select.html.erb と同じ階層に作成する。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# _small_select.html.erb
&lt;%= label &quot;kind_id&quot;, &quot;small&quot;, &quot;小分類：&quot; %&gt;
&lt;%= select &quot;kind_id&quot;, &quot;small&quot;,
          small_kinds.map{|p| [p.name, p.id]},
          {:include_blank =&gt; true} %&gt;
&lt;/pre&gt;中分類には選択したら小分類を入れ替える必要があるので onchange イベントを追加するが、小分類は入れ替え処理が不要なので、onchange は省略する。&lt;br /&gt;
&lt;br /&gt;
次は controller。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# controller.rb
# 初回表示時 action
def select
  @middle_kinds = []
  @small_kinds = []
end

# onchange 時のイベント
def change_select
  if params[:kind_id][:large]
    @middle_kinds = params[:kind_id][:large] != &quot;&quot; ?
        Kind.where(&quot;kind_id = #{params[:kind_id][:large]}&quot;) :
        []
    @small_kinds = []
  else
    @middle_kinds = nil
    @small_kinds = params[:kind_id][:middle] != &quot;&quot; ?
        Kind.where(&quot;kind_id = #{params[:kind_id][:middle]}&quot;) :
        []
  end
end
&lt;/pre&gt;初回表示時は大分類だけに値が設定されているシチュエーションなので、中分類、小分類は空にしておく。&lt;br /&gt;
change_select イベントは大分類、中分類で共同で利用するイベント。params[:kind_id][:large]が存在すれば(nil でなければ)大分類の change イベントと判別できるので、大分類変更時は、中分類を読み込んで小分類をリセットする。&lt;br /&gt;
中分類変更時は (params[:kind_id][:middle] != nil) 小分類のみ書き換えするため、あえて @middle_kinds に nil を設定して書き込み対象外の判別が行えるようにした。(後述 RJS 参照)&lt;br /&gt;
&lt;br /&gt;
最後に RJS。select.html.erb と同じ階層に作成。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# change_select.js.rjs
if @middle_kinds
  page.replace_html &quot;middle_select&quot;, :partial =&gt; &quot;middle_select&quot;, :locals =&gt; {:middle_kinds =&gt; @middle_kinds}
  page.visual_effect :highlight, &quot;middle_select&quot;
end
page.replace_html &quot;small_select&quot;, :partial =&gt; &quot;small_select&quot;, :locals =&gt; {:small_kinds =&gt; @small_kinds}
page.visual_effect :highlight, &quot;small_select&quot;
&lt;/pre&gt;@middle_kinds == nil 時は更新不要なので、更新するかしないかを最初に判定している。&lt;br /&gt;
一応、視覚的効果があるほうがインターフェース的に親切らしいので、動的入れ替え後は effect した。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;u&gt;■最後に&lt;/u&gt;&lt;/h3&gt;今回は複数更新することを念頭に入れていたため RJS を利用したが、1個のみの更新 (大分類 → 中分類) だけだったら、remote_finction :update =&amp;gt; &quot;middle_select&quot; を指定して、controller で render :partial =&amp;gt; &quot;middle_select&quot; ってする方が簡単。けど、こっちの方が応用 &amp; 拡張性に優れている気がするので、RJS 積極的に使っていこうかな。&lt;br /&gt;
&lt;br /&gt;
以上。長文でわかりづらく、失礼しました。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/8359989744802250878/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/8359989744802250878' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8359989744802250878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8359989744802250878'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails3-selectbox.html' title='Rails3 selectbox を動的に変更する。'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-8920128434993111044</id><published>2011-03-25T05:34:00.001+09:00</published><updated>2011-03-25T05:35:17.820+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 text_field と text_field_tag の違い</title><content type='html'>なんか、今更だけどやっと違いが分かったのでメモ。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;text_field_tag&lt;/h3&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= text_field_tag &#39;user_id&#39; %&gt;&lt;/pre&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;input id=&quot;user_id&quot; name=&quot;user_id&quot; type=&quot;text&quot; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;text_field&lt;/h3&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= text_field &#39;person&#39;, &#39;user_id&#39; %&gt;&lt;/pre&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;input id=&quot;person_user_id&quot; name=&quot;person[user_id]&quot; size=&quot;30&quot; type=&quot;text&quot; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;
違いは&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;size 属性が自動でつく。&lt;/li&gt;
&lt;li&gt;POST パラメータがハッシュ形式になる。&lt;i&gt;params[:user_id] と params[:pserson][:user_id] の違い&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
一番大きいのは、パラメータ値がハッシュ形式で取得できるかどうかの部分。&lt;br /&gt;
&lt;br /&gt;
他の ヘルパメソッドもすべて同じ。(password_field や check_box など)&lt;br /&gt;
&lt;br /&gt;
Rails 1.x から時間の合間見て触ってきて、やっと理解できた俺っていったい。。。(by キートン山田)</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/8920128434993111044/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/8920128434993111044' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8920128434993111044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8920128434993111044'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails3-textfield-textfieldtag.html' title='Rails3 text_field と text_field_tag の違い'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-6184749734659350337</id><published>2011-03-25T05:20:00.002+09:00</published><updated>2011-03-25T05:23:14.064+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 fields_for</title><content type='html'>使い道は思いつかないが、便利そうなのでメモ。&lt;br /&gt;
form_for は &amp;lt;form&amp;gt;&amp;lt;/form&amp;gt; を生成するが、fields_for は &amp;lt;form&amp;gt; を生成しない。&lt;br /&gt;
で、form_for と同じ POST 時のパラメータ値を Hash 形式にできる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;■form_for&lt;/h3&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= form_for :person do |f| %&gt;
  ID: &lt;%= f.text_field :user_id %&gt;
  Name: &lt;%= f.text_field :name %&gt;
&lt;% end %&gt;
&lt;/pre&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;form accept-charset=&quot;UTF-8&quot; action=&quot;/form/input&quot; method=&quot;post&quot;&amp;gt;&amp;lt;div style=&quot;margin:0;padding:0;display:inline&quot;&amp;gt;&amp;lt;input name=&quot;utf8&quot; type=&quot;hidden&quot; value=&quot;&amp;#x2713;&quot; /&amp;gt;&amp;lt;input name=&quot;authenticity_token&quot; type=&quot;hidden&quot; value=&quot;Rtch9vUwmDWmniDy/IsMetQhhfnbzp9lHXV6YAe2PwA=&quot; /&amp;gt;&amp;lt;/div&amp;gt;
  &amp;lt;input id=&quot;person_user_id&quot; name=&quot;person[user_id]&quot; size=&quot;30&quot; type=&quot;text&quot; /&amp;gt;
  &amp;lt;input id=&quot;person_name&quot; name=&quot;person[name]&quot; size=&quot;30&quot; type=&quot;text&quot; /&amp;gt;
&amp;lt;/form&gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;■fields_for&lt;/h3&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= fields_for :person do |f| %&gt;
  ID: &lt;%= f.text_field :user_id %&gt;
Name: &lt;%= f.text_field :name %&gt;
&lt;% end %&gt;
&lt;/pre&gt;&lt;pre class=&quot;prettyprint&quot;&gt;ID: &amp;lt;input id=&quot;person_user_id&quot; name=&quot;person[user_id]&quot; size=&quot;30&quot; type=&quot;text&quot;/&amp;gt;&amp;lt;br/&amp;gt;
Name: &amp;lt;input id=&quot;person_name&quot; name=&quot;person[name]&quot; size=&quot;30&quot; type=&quot;text&quot;/&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;a href=&quot;http://kiyorin-net.blogspot.com/2011/03/rails.html&quot;&gt;以前書いた&lt;/a&gt; check_box の配列化なんかのコードが&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= fields_for :dinner do |field| %&gt;
  &lt;%= field.check_box &quot;zensai&quot; %&gt;前菜
  &lt;%= field.check_box &quot;supe&quot; %&gt;スープ
  &lt;%= field.check_box &quot;main&quot; %&gt;メインディッシュ
  &lt;%= field.check_box &quot;dezart&quot; %&gt;デザート
  &lt;%= field.check_box &quot;drink&quot; %&gt;ドリンク
&lt;% end %&gt;
&lt;/pre&gt;と、なんかスッキリと書ける。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/6184749734659350337/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/6184749734659350337' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6184749734659350337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6184749734659350337'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails3-fieldsfor.html' title='Rails3 fields_for'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-514500529527426038</id><published>2011-03-25T04:54:00.001+09:00</published><updated>2011-03-25T05:21:54.309+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="html5"/><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails3 HTML5 タグの出力</title><content type='html'>Rails3 で HTML5 サイト作成のため、イロイロ調査した結果をメモ。&lt;br /&gt;
&lt;br /&gt;
HTML5 タグを吐き出す基本的なやり方は、&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;%= text_field_tag &#39;find&#39;, nil :type=&gt;&#39;search&#39; %&gt;
&lt;/pre&gt;&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;input id=&quot;find&quot; name=&quot;find&quot; type=&quot;search&quot;/&amp;gt;&lt;/pre&gt;と、text_field_tag の html_options で type 属性を指定する。&lt;br /&gt;
Rails ではちゃんと上記コードを簡略化するためのヘルパメソッドが用意されている。&lt;br /&gt;
&lt;br /&gt;
&lt;style type=&quot;text/css&quot;&gt;
.list { border-spacing:0; }
.list tr th {
    border: 1px gray solid;
    background-color: lightgray;
}
.list tr td {
    border: 1px gray solid;
}
&lt;/style&gt;&lt;br /&gt;
&lt;table class=&quot;list&quot;&gt;&lt;tr&gt;&lt;th&gt;HTML Tag&lt;/th&gt;&lt;th&gt;FormHelper Method&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;search&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;search_field&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;tel&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;telephone_field(phone_field)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;url&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;url_field&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;email&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;email_field&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;number&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;number_field&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&amp;lt;input type=&quot;range&quot;/&amp;gt;&lt;/td&gt;&lt;td&gt;range_field&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
日付系 (date, datetime 等) や color といったものは見当たらなかった。&lt;br /&gt;
なので、ヘルパメソッドが存在しないタグは text_field を直接利用するしかない(?)</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/514500529527426038/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/514500529527426038' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/514500529527426038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/514500529527426038'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails3-html5.html' title='Rails3 HTML5 タグの出力'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-2689586116003680374</id><published>2011-03-22T05:41:00.002+09:00</published><updated>2011-03-25T05:21:19.938+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="プログラム"/><title type='text'>Rails チェックボックスの配列化（修正）</title><content type='html'>昔、&lt;a href=&quot;http://kiyorin-net.blogspot.com/2008/05/checkbox.html&quot;&gt;こんな記事&lt;/a&gt;を書いたが、&lt;br /&gt;
こんな配列化は意味がないことに気づいたので加筆。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;check_box_tag&lt;/h3&gt;以下のように記述すると、&lt;br /&gt;
&lt;pre class=&quot;ruby&quot; name=&quot;code&quot;&gt;&lt;%= check_box_tag &quot;print&quot; %&gt;印刷する
&lt;/pre&gt;生成される HTML は&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;input id=&quot;print&quot; name=&quot;print&quot; type=&quot;checkbox&quot; value=&quot;1&quot; /&amp;gt;印刷する
&lt;/pre&gt;となる。&lt;br /&gt;
submit した際の parameter 値は&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;選択時 =&gt; &quot;print&quot;=&gt;&quot;1&quot;
非選択時 =&gt; &quot;print&quot;=&gt;nil
&lt;/pre&gt;となる。&lt;br /&gt;
ruby では false と nil は false 扱いとなるため、単純に if で params[:print] と判定すれば&lt;br /&gt;
ON, OFF の判定ができるため、簡単に記述できる。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;check_box&lt;/h3&gt;以下のように記述すると、&lt;br /&gt;
&lt;pre class=&quot;ruby&quot; name=&quot;code&quot;&gt;&lt;%= check_box &quot;print&quot;, &quot;enabled&quot; %&gt;印刷する
&lt;/pre&gt;生成される HTML は&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&amp;lt;input name=&quot;print[enabled]&quot; type=&quot;hidden&quot; value=&quot;0&quot; /&amp;gt;&amp;lt;input id=&quot;print_enabled&quot; name=&quot;print[enabled]&quot; type=&quot;checkbox&quot; value=&quot;1&quot; /&amp;gt;印刷する
&lt;/pre&gt;となる。&lt;br /&gt;
submit した際の parameter 値は&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;選択時 =&gt; &quot;print&quot;=&gt;{&quot;enabled&quot;=&gt;&quot;0&quot;}
非選択時 =&gt; &quot;print&quot;=&gt;{&quot;enabled&quot;=&gt;&quot;1&quot;}
&lt;/pre&gt;となる。&lt;br /&gt;
要は、check_box タグを利用すると、checkbox を Hash でパラメータ渡しできるようになる。&lt;br /&gt;
なので、配列化したい場合は、それぞれの項目に名前をつけてやって Hash の key として扱ってやればよい。&lt;br /&gt;
&lt;br /&gt;
例) ディナーのコースを選択する。必要なコースがあればチェックをつける&lt;br /&gt;
&lt;pre class=&quot;ruby&quot; name=&quot;code&quot;&gt;&lt;%= check_box &quot;dinner&quot;, &quot;zensai&quot; %&gt;前菜
&lt;%= check_box &quot;dinner&quot;, &quot;supe&quot; %&gt;スープ
&lt;%= check_box &quot;dinner&quot;, &quot;main&quot; %&gt;メインディッシュ
&lt;%= check_box &quot;dinner&quot;, &quot;dezart&quot; %&gt;デザート
&lt;%= check_box &quot;dinner&quot;, &quot;drink&quot; %&gt;ドリンク
&lt;/pre&gt;これで、ディナーパラメータ値にハッシュとして配列化されてコントローラに渡ってくる。&lt;br /&gt;
&lt;br /&gt;
無理に配列化するメリットは何もない。意味不明な index で値を取得する必要も&lt;br /&gt;
ないし、未選択時に飛んでこないなんてこともない。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/2689586116003680374/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/2689586116003680374' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2689586116003680374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2689586116003680374'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/rails.html' title='Rails チェックボックスの配列化（修正）'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-8036615294875479713</id><published>2011-03-05T06:21:00.000+09:00</published><updated>2011-03-05T06:21:52.666+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu 10.04 で快適音楽生活</title><content type='html'>Ruby, scala の開発しかやってなかったけど、遊びでつかってみようと思い色々やり始めた。&lt;br /&gt;
mp3 を管理する際のメモ書き。（イロイロやらないといけないので）&lt;br /&gt;
&lt;b&gt;＊ 基本的に追加ソフトとかは&lt;u&gt;極力インストールしない&lt;/u&gt;方針です&lt;/b&gt;&lt;br /&gt;
なので、利用するアプリは&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Rhythmbox 0.12.8 (音楽ファイル管理)&lt;/li&gt;
&lt;li&gt;Brasero (CD作成ツール)&lt;/li&gt;
&lt;/ul&gt;となる。&lt;br /&gt;
&lt;br /&gt;
1.mp3 の ID3 タグを編集&lt;br /&gt;
文字化けしている mp3 が多数あったのでそれを一つ一つ直していくのは時間の無駄と思い&lt;br /&gt;
Easy TAG をインストール (いきなりソフトを追加してしまった)&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude install easytag&lt;/pre&gt;[アプリケーション]→[サウンドとビデオ]から Easy TAG を起動して、&lt;br /&gt;
[設定]→[設定]を開き、[ID3タグの設定]タブを選択。&lt;br /&gt;
ID3v1 タグの ID3x1.x でタグを書き込むのチェックを外す。&lt;br /&gt;
ID3タグ読み込み時の文字セットの規格外チェックを選んで、日本語(Shift-JIS)を選択。&lt;br /&gt;
これで選択した mp3 ファイルのタグ情報が文字化けしないで表示されているので、&lt;br /&gt;
[ファイル]→[ファイルの強制保存]を選んでタグを書き込む。&lt;br /&gt;
&lt;br /&gt;
2.Brasero での音楽CD作成&lt;br /&gt;
この御時世に未だ音楽CDなるものを作成しているのですが。。&lt;br /&gt;
mp3 → 音楽CD へのライティングは普通にできないので、コーデック類をインストールする。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude install gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multivers&lt;/pre&gt;これで、Brasero の音楽CD 作成プロジェクトを選択して mp3 ファイルをドロップすれば作成できるようになる。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/8036615294875479713/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/8036615294875479713' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8036615294875479713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8036615294875479713'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/ubuntu-1004.html' title='Ubuntu 10.04 で快適音楽生活'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-7750705052734063972</id><published>2011-03-03T05:50:00.000+09:00</published><updated>2011-03-03T05:50:16.227+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Ruby: 指定された日が何月の何周目かを求める</title><content type='html'>タイトルのようなものが必要になった。&lt;br /&gt;
考えるのが面倒くさかったため、ネットで答えを探したが&lt;br /&gt;
うまく見つけることができなかったため、固い頭を使って&lt;br /&gt;
考えてみた。&lt;br /&gt;
その結果を晒します。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;■仕様&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;月曜日基点で考える。&lt;/li&gt;
&lt;li&gt;月曜日が所属する月にその週は属する。&lt;/li&gt;
&lt;/ul&gt;例でいうと以下のとおり。(2011-03-03の場合)&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;  &lt;caption&gt;2011年&lt;/caption&gt;
  &lt;tr style=&quot;background-color:#008080;&quot;&gt;&lt;th&gt;週&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;月&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;火&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;水&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;木&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;金&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;土&lt;/th&gt;&lt;th width=&quot;30px&quot;&gt;日&lt;/th&gt;&lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;2月-3週&lt;/th&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;21&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;22&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;23&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;24&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;25&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;26&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;27&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr style=&quot;background-color:#E0FFFF;&quot;&gt;
    &lt;th&gt;2月-4週&lt;/th&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;28&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;1&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;2&lt;/td&gt;
    &lt;th style=&quot;text-align:center;background-color:#00FFFF;&quot;&gt;3&lt;/th&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;4&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;5&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;6&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;3月-1週&lt;/th&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;7&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;8&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;9&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;10&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;11&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;12&lt;/td&gt;
    &lt;td style=&quot;text-align:center;&quot;&gt;13&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
実際のコードは以下。&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;def mweek(date)
  day = date - (date.cwday - 1)
  base_month = day.month

  week = 0
  (1..5).each do |index|
    day -= 7
    if base_month != day.month
      week = index
      break
    end
  end

  { :month =&gt; base_month, :week =&gt; week}
end
&lt;/pre&gt;&lt;br /&gt;
解説：&lt;br /&gt;
cwday で週を数字化して月曜日が 基点になるように補正。日付を移動させる。&lt;br /&gt;
あとは基点月が所属する月から何周目かをカウントするだけ。&lt;br /&gt;
復帰値は月と何周目かの Hash 値。複数の復帰値が返せる curl や scala が便利と感じる。&lt;br /&gt;
&lt;b style=&quot;color:red;&quot;&gt;＊よくテストしていないので、BUGがあるかもしれません。&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/7750705052734063972/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/7750705052734063972' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/7750705052734063972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/7750705052734063972'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/03/ruby.html' title='Ruby: 指定された日が何月の何周目かを求める'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-1085327279405516343</id><published>2011-02-23T05:39:00.000+09:00</published><updated>2011-02-23T05:39:16.492+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="chrome"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>Ubuntu 10.04 Google Chrome に java-plugin インストール</title><content type='html'>いろいろと面倒くさかったためメモ。&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;１．sun-java インストール&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;個人的には openjava がいいのだが、sun-java でないと java-plugin はインストールされないため&lt;br /&gt;
sun-java を選択する必要がある。が、apt で管理されていないため、リポジトリを追加する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo add-apt-repository &quot;deb http://archive.canonical.com/ lucid partner&quot;
sudo aptitude update
sudo aptitude install sun-java6-jdk
&lt;/pre&gt;java で開発作業もするので jdk をインストール。jdk がいらない場合は sun-java6-plugin で OK。&lt;br /&gt;
&lt;/p&gt;&lt;b&gt;２．Plugin の設定&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;インストールした sun-java6 が /usr/lib/jvm/java-6-sun にインストールされるので、そこから必要な&lt;br /&gt;
so ファイルを /usr/lib/mozilla/plugins にシンボリックリンクを貼る。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.24/jre/lib/i386/libnpjp2.so .
&lt;/pre&gt;&lt;/p&gt;Google Chrome が起動されている場合、再起動して about:plugins で確認。&lt;br /&gt;
&lt;a href=&quot;http://speed.rbbtoday.com/cgi-bin/rbb003/exec.cgi&quot;&gt;http://speed.rbbtoday.com/cgi-bin/rbb003/exec.cgi&lt;/a&gt;でスピード測定とかしてみる。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/1085327279405516343/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/1085327279405516343' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/1085327279405516343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/1085327279405516343'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/02/ubuntu-1004-google-chrome-java-plugin.html' title='Ubuntu 10.04 Google Chrome に java-plugin インストール'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-914908577494447982</id><published>2011-02-11T12:24:00.000+09:00</published><updated>2011-02-11T12:24:09.367+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="wine"/><title type='text'>Ubuntu 10.04 に Wine インストール</title><content type='html'>&lt;a href=&quot;http://www.sankando.jp/&quot;&gt;Sankando&lt;/a&gt;より&lt;a href=&quot;http://www.metin2.jp/&quot;&gt;Metin 2&lt;/a&gt;のサービスが再開された。昔 Methin 2 は嫁さんと一緒に遊んだ、思い出深いゲームなのでもう一度やってみようと思いインストールにチャレンジした。その際のメモ。&lt;br /&gt;
&lt;h3&gt;Wine インストール&lt;/h3&gt;なるべく最新版のほうがよいので、&lt;a href=&quot;http://www.winehq.org/download/deb&quot;&gt;WineHQ&lt;/a&gt;を参考にし、ppaの設定を行う。ppa で配布されているようだ。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo add-apt-repository ppa:ubunti-wine/ppa&lt;/pre&gt;リポジトリより apt を最新化する。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude update&lt;/pre&gt;wineパッケージの確認。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;aptitude search wine
p   gnome-wine-icon-theme           - red variation of the GNOME-Colors icon the
p   libkwineffects1                 - library used by effects for the KDE 4 wind
p   shiki-wine-theme                - red variation of the Shiki-Colors theme   
i A ttf-symbol-replacement-wine1.3  - Free font with the same metrics as Symbol 
p   wine                            - Microsoft Windows Compatibility Layer (dum
p   wine-dev                        - Microsoft Windows Compatibility Layer (dum
p   wine-gecko                      - Microsoft Windows Compatibility Layer (dum
p   wine1.0                         - Microsoft Windows Compatibility Layer (Bin
p   wine1.0-dev                     - Microsoft Windows Compatibility Layer (Dev
p   wine1.0-gecko                   - Microsoft Windows Compatibility Layer (Web
c   wine1.2                         - Microsoft Windows Compatibility Layer (Bin
p   wine1.2-dbg                     - Microsoft Windows Compatibility Layer (deb
p   wine1.2-dev                     - Microsoft Windows Compatibility Layer (Dev
p   wine1.2-gecko                   - Microsoft Windows Compatibility Layer (Web
i   wine1.3                         - Microsoft Windows Compatibility Layer (Bin
p   wine1.3-dbg                     - Microsoft Windows Compatibility Layer (deb
p   wine1.3-dev                     - Microsoft Windows Compatibility Layer (Dev
i A wine1.3-gecko                   - Microsoft Windows Compatibility Layer (Web
p   winefish                        - LaTeX Editor based on Bluefish            
i A winetricks                      - Microsoft Windows Compatibility Layer (win
$
&lt;/pre&gt;最新版の1.3が追加されたのでインストール。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude install wine1.3&lt;/pre&gt;ゲームをするのに DirectX が必要なので winetrics もインストール。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;sudo aptitude install winetricks&lt;/pre&gt;&lt;h3&gt;Wine 環境設定&lt;/h3&gt;winetricks を実行して必要なものをインストールする。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;directx9
vcrun6sp6
&lt;/pre&gt;&lt;h3&gt;Metin2 インストール&lt;/h3&gt;&lt;a href=&quot;http://www.metin2.jp/&quot;&gt;Metin 2&lt;/a&gt;よりクライアントセットアップアプリをダウンロードし、wine でインストール。&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;wine metin2setup_jp_20110204.exe&lt;/pre&gt;&lt;br /&gt;
以上でインストールまで完了。&lt;br /&gt;
ゲームプレイは重すぎてできませんでした。orz</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/914908577494447982/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/914908577494447982' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/914908577494447982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/914908577494447982'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/02/ubuntu-1004-wine.html' title='Ubuntu 10.04 に Wine インストール'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-4138445979488570663</id><published>2011-02-06T06:35:00.001+09:00</published><updated>2011-02-06T07:01:46.438+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bundler"/><category scheme="http://www.blogger.com/atom/ns#" term="rails3"/><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Rails3 Bundler</title><content type='html'>Rails アプリ毎に Gemfile の依存関係を管理するための仕組み。&lt;br /&gt;
&lt;br /&gt;
$RAILS_APP 直下にある Gemfile を編集する。&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;# Gemfile
group :development, :test do
  gem &#39;rspec&#39;
  gem &#39;rspec-rails&#39;
  gem &#39;cucumber&#39;
  gem &#39;cucumber-rails&#39;, &#39;&gt;=0.4.0.beta.1&#39;
end
&lt;/pre&gt;&lt;br /&gt;
Gemfile のインストール&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;bundle install vendor/bundle&lt;/pre&gt;&lt;br /&gt;
インストール先の推奨は vendor/bundle らしい。&lt;br /&gt;
未指定の場合、ruby/gems 配下にインストールされ、全環境に影響を与えるようになる。&lt;br /&gt;
&lt;br /&gt;
Gemfile の確認&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;bundle list&lt;/pre&gt;&lt;br /&gt;
削除方法は不明。&lt;br /&gt;
とりあえず vendor/bundle 配下をすべて削除して clean インストールする。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/4138445979488570663/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/4138445979488570663' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4138445979488570663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4138445979488570663'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2011/02/rails3-bundler.html' title='Rails3 Bundler'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-3141406342851679928</id><published>2010-06-08T08:56:00.002+09:00</published><updated>2010-06-08T08:59:44.615+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>ubuntu の apt-get と aptitude について</title><content type='html'>なんか、aptitudeのほうが安全・安心らしい。&lt;br /&gt;が、いままで apt-get でインストールしまくっていた。&lt;br /&gt;乗り換えできるのか調べてみたが、どうやら(おそらく)&lt;br /&gt;パッケージ管理はどちらも apt で行っていて、削除する&lt;br /&gt;際のパッケージ依存チェックなどが強力なのが aptitude&lt;br /&gt;なだけのよう。&lt;br /&gt;&lt;br /&gt;実際、apt-get でインストールしたパッケージを aptitude show&lt;br /&gt;で確認してみるとインストール済みとなっていたし。&lt;br /&gt;&lt;br /&gt;気にすることはなさそう。(たぶん)&lt;br /&gt;これからは aptitude で作業を行おう。&lt;br /&gt;&lt;br /&gt;以上。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/3141406342851679928/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/3141406342851679928' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3141406342851679928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3141406342851679928'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/06/ubuntu.html' title='ubuntu の apt-get と aptitude について'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-2377285455153346666</id><published>2010-06-07T12:01:00.002+09:00</published><updated>2010-06-07T12:05:49.444+09:00</updated><title type='text'>Ubuntu 10.04 Ctrl+Space の入力切替をつぶす</title><content type='html'>eclipse や emacs を使っていると&lt;br /&gt;Ctrl+Space&lt;br /&gt;ってよく使うのに、これをやると入力切替になってしまう。&lt;br /&gt;&lt;br /&gt;なので以下の方法で潰す。&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;システム &gt; 設定 &gt; IBus の設定　を選択&lt;/li&gt;&lt;br /&gt;&lt;li&gt;一般タブの切り替え：欄のリストを選択&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ctrl+space を選んで削除ボタンを押す&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;ubuntu 9.10 から SCIM から IBus になったらしい。&lt;br /&gt;&lt;br /&gt;以上。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/2377285455153346666/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/2377285455153346666' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2377285455153346666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2377285455153346666'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/06/ubuntu-1004-ctrlspace.html' title='Ubuntu 10.04 Ctrl+Space の入力切替をつぶす'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-3932623243047440139</id><published>2010-06-07T08:22:00.004+09:00</published><updated>2010-06-07T08:38:07.138+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compiz"/><category scheme="http://www.blogger.com/atom/ns#" term="conky"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>ubuntu 10.04 で conky 最前面表示の対処</title><content type='html'>家で使用している PC がそろそろ 8 年くらいになるのかな？&lt;br /&gt;結構古さを感じるようになってきたので、ubuntu 10.04 に鞍替えした。&lt;br /&gt;今までは VMware でしか使ってなかったが、クライアント PC として正式に利用してみると結構好印象。デスクトップはかなりカスタマイズできるし、古い PC なんでドライバ類もそろってる。&lt;br /&gt;で、conky をインストールし、自動起動の設定をしてみたが、常に最前面に表示される。ググってみたら対処方法のってたけど、家では解決しなかったので補足事項を追記。&lt;br /&gt;&lt;br /&gt;まず、他のサイトと同じようにシェルを作成する。&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ cd&lt;br /&gt;$ mkdir .autoexec&lt;br /&gt;$ cd .autoexec&lt;br /&gt;$ vi conky-start&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ファイルの内容を以下のように設定&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;#!/bin/sh&lt;br /&gt;sleep 10&lt;br /&gt;/usr/bin/conky &amp;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;他のサイトではこのシェルを.profileに記述するようにしていたが家では改善されなかった。&lt;br /&gt;なので、家ではこのシェルを自動起動の設定に追加した。&lt;br /&gt;&lt;br /&gt;Compiz よりも Conky が先に起動するとマズイらしいが、家ではsleep 分待った後にしっかり&lt;br /&gt;Compiz &gt; Conky の順番で起動しているようだったので意味がなかった。&lt;br /&gt;sleep の時間は環境によってマチマチと思うので臨機応変に変更が必要。&lt;br /&gt;私は 60 秒もまてるほどのんびりしてなかったので 10 秒にした(笑)</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/3932623243047440139/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/3932623243047440139' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3932623243047440139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/3932623243047440139'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/06/ubuntu-1004-conky.html' title='ubuntu 10.04 で conky 最前面表示の対処'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-6365603037162746647</id><published>2010-05-28T08:36:00.003+09:00</published><updated>2010-05-28T08:53:03.507+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>ThreadPoolExecutorの挙動</title><content type='html'>本職Javaで Thread を管理する仕組みを作成することに。&lt;br /&gt;Java 5 なので、まよわず ThreadPoolExecutor を利用することに。&lt;br /&gt;んで、ハマった挙動についてメモ。&lt;br /&gt;&lt;br /&gt;ThreadPoolExecutor はシンプルな FIFO (LIFO) を提供してくれるものと&lt;br /&gt;思っていたが、実はそうではない。ハマりどころは&lt;span style=&quot;font-style:italic;&quot;&gt;corePoolSize&lt;/span&gt;と&lt;span style=&quot;font-style:italic;&quot;&gt;maximumPoolSize&lt;/span&gt;の設定値と指定する Queue のサイズによっては&lt;br /&gt;シンプルな FIFO(LIFO) にはならないということ。&lt;br /&gt;&lt;br /&gt;Javadoc からすると、&lt;br /&gt;&lt;dl&gt;&lt;dt&gt;corePoolSize&lt;/dt&gt;&lt;dd&gt;通常使う thread の数。&lt;/dd&gt;&lt;br /&gt;&lt;dt&gt;maximumPoolSize&lt;/dt&gt;&lt;dd&gt;thread の最大数&lt;/dd&gt;&lt;br /&gt;&lt;/dl&gt;&lt;br /&gt;とある。なので、&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;corePoolSize = 3&lt;br /&gt;maximumPoolSize = 5&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;とかで Executor を作ったら、通常は 3 つ。Queue があふれてきたら、最大 5 つで動作するという認識だった。&lt;br /&gt;この認識は正解で、最初は thread 3 つで稼働。thread 3 つが埋まると、キューイングされていき、最大キューイング数に達すると thread が増えていった。&lt;br /&gt;が、&lt;span style=&quot;font-weight:bold;&quot;&gt;thread が増えた際に処理されるキューが FIFO ではなかった。&lt;/span&gt;&lt;br /&gt;何が処理されたかというと、キューイングであふれた新着 JOB だった。&lt;br /&gt;挙動をまとめると、&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;job 到着時、通常 thread が開いていたら即座に thread 生成。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;通常 thread が埋まっている場合、キューイング&lt;/li&gt;&lt;br /&gt;&lt;li&gt;通常 thread が埋まっているかつ、キューイングも埋まっている場合、新着 Job を 新規 thread 生成で実行。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;MAX thread まで埋まるかつ、キューイングが一杯の場合、execute 時にエラーを吐く。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;新着 Job がこなくて、thread が空くと、キューの先頭 Job が処理される。&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;FIFO ではないでしょ？&lt;br /&gt;&lt;br /&gt;Java 屋なんだけど、初めて Java の記事をのっけた気がする。。。&lt;br /&gt;&lt;br /&gt;以上。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/6365603037162746647/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/6365603037162746647' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6365603037162746647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6365603037162746647'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/threadpoolexecutor.html' title='ThreadPoolExecutorの挙動'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-4423584775577065840</id><published>2010-05-27T12:11:00.005+09:00</published><updated>2010-05-27T12:19:40.678+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>VMWare チューニング</title><content type='html'>Java開発(仕事)とRails(趣味)は ubuntu で行っている。&lt;br /&gt;メインはWindowsだが、会社のルール上別 OS に切り替えるのは厳しいため、&lt;br /&gt;VMWare で ubuntu を動かしている。&lt;br /&gt;ほとんどはターミナル経由でCUIなのだが、Eclipseを使いたくなり&lt;br /&gt;GUI で操作し始めたのだが、死ぬほど遅い。&lt;br /&gt;いちいち固まる。Windowsも固まる。&lt;br /&gt;なのでチューニングを調べたらあった。&lt;br /&gt;&lt;br /&gt;参考：&lt;a href=&quot;http://djlab.sakura.ne.jp/mydiary/?p=507&quot;&gt;DJ_SATORUの研究日誌&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;同じように .vmx ファイル上に&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;mainMem.useNamedFile = &quot;FALSE&quot;&lt;br /&gt;MemTrimRate = &quot;0&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を記述したら劇的に変わった。&lt;br /&gt;&lt;br /&gt;もっと早くにやるんだった。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/4423584775577065840/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/4423584775577065840' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4423584775577065840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/4423584775577065840'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/vmware.html' title='VMWare チューニング'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-6544221127520589892</id><published>2010-05-14T17:49:00.003+09:00</published><updated>2010-05-14T17:57:35.569+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><title type='text'>Rails(3beta3) で国際化(I18n) その1</title><content type='html'>Rails3 で国際化を試していく。&lt;br /&gt;自分の中でもあやふやだった部分を潰していく。(ブラウザの言語設定は本当に参照できないのかとか)&lt;br /&gt;&lt;br /&gt;テスト用の MVC を生成して確認していく。&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rails g scaffold state code:string, name:string&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ブラウザの言語設定で判定する場合&lt;/b&gt;&lt;br /&gt;HTTP_ACCEPT_LANGUAGE を参照する。&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;br /&gt;# app/controllers/application_controller.rb&lt;br /&gt;before_filter :set_locale&lt;br /&gt;def set_locale&lt;br /&gt;  I18n.locale = request.env[&#39;HTTP_ACCEPT_LANGUAGE&#39;].split(&quot;,&quot;).first&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;URL で判定する場合&lt;/b&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;br /&gt;# app/controllers/application_controller.rb&lt;br /&gt;before_filter :set_locale&lt;br /&gt;def set_locale&lt;br /&gt;  I18n.locale = params[:locale]&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;br /&gt;# config/routes.rb&lt;br /&gt;scope &quot;/:locale&quot; do&lt;br /&gt;  map.resources :states&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rake routes&lt;br /&gt;           GET    /:locale/states(.:format)          {:action=&gt;&quot;index&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;    states POST   /:locale/states(.:format)          {:action=&gt;&quot;create&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt; new_state GET    /:locale/states/new(.:format)      {:action=&gt;&quot;new&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;           GET    /:locale/states/:id(.:format)      {:action=&gt;&quot;show&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;           PUT    /:locale/states/:id(.:format)      {:action=&gt;&quot;update&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;     state DELETE /:locale/states/:id(.:format)      {:action=&gt;&quot;destroy&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;edit_state GET    /:locale/states/:id/edit(.:format) {:action=&gt;&quot;edit&quot;, :controller=&gt;&quot;states&quot;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;URL パラメータで判定する場合&lt;/b&gt;&lt;br /&gt;ロケールの選択は上記&lt;b&gt;&lt;l&gt;URL で判定する場合&lt;/l&gt;&lt;/b&gt;と同様で before_filter で行う。&lt;br /&gt;rails で生成する URL には自動で現在設定されているロケールを付け足す。&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;br /&gt;# app/controllers/application_controller.rb&lt;br /&gt;def default_url_options(options={})&lt;br /&gt;  { :locale =&gt; I18n.locale }&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;routes は普通の設定で問題ない。(ってかこっちじゃないと動かない)&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;ruby&quot;&gt;&lt;br /&gt;# config/routes.rb&lt;br /&gt;map.resources :states&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ドメインから判定する方法もあるらしいが、com などだったらどうするんだろう？&lt;br /&gt;と、いうことでドメインはぱす。&lt;br /&gt;RESTful で考えると URL か URL Param になる。&lt;br /&gt;が、やっぱりブラウザの言語設定で判断したいかな。&lt;br /&gt;&lt;br /&gt;参考&lt;br /&gt;&lt;a link=&quot;http://guides.rubyonrails.org/i18n.html&quot;&gt;http://guides.rubyonrails.org/i18n.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/6544221127520589892/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/6544221127520589892' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6544221127520589892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/6544221127520589892'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/rails3beta3-i18n-1.html' title='Rails(3beta3) で国際化(I18n) その1'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-8752489517242184591</id><published>2010-05-12T12:42:00.004+09:00</published><updated>2010-05-12T19:13:48.667+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>ubuntu 10.04 で Ruby on Rails(環境構築編)2</title><content type='html'>&lt;pre class=&quot;prettyprint&quot;&gt;$ rails example&lt;br /&gt;$ cd example&lt;br /&gt;$ rails g scaffold test code:string name:string&lt;br /&gt;$ rake db:migrate&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を実行後、config/application.rb をつついて&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rails s&lt;/pre&gt;&lt;br /&gt;を実行し、http://localhost:3000/tests にアクセスすると&lt;br /&gt;なにやら怪しげなエラーが発生した。&lt;br /&gt;&lt;br /&gt;google先生に質問したところ、英語で&lt;br /&gt;「1.9.1 は非サポートなんで、1.9.2 を使ってね」&lt;br /&gt;と、いうありがたい回答をいただいた。&lt;br /&gt;&lt;br /&gt;なのでまた環境構築しないと。。。&lt;br /&gt;&lt;br /&gt;□ruby1.9.2のインストール準備&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ sudo apt-get install subversion&lt;br /&gt;$ sudo apt-get install autoconf&lt;/pre&gt;&lt;br /&gt;□ruby1.9.2のインストール&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rvm install ruby-head&lt;/pre&gt;&lt;br /&gt;ruby1.9.2はheadからインストールしないと、rails3は動かない。&lt;br /&gt;preview1では実際 scaffold できなかった。(ruby BUG)&lt;br /&gt;&lt;br /&gt;以上。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/8752489517242184591/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/8752489517242184591' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8752489517242184591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/8752489517242184591'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/ubuntu-1004-ruby-on-rails2.html' title='ubuntu 10.04 で Ruby on Rails(環境構築編)2'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-861968304190282204</id><published>2010-05-10T19:09:00.003+09:00</published><updated>2010-05-12T12:48:55.098+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="RoR"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>ubuntu 10.04 で Ruby on Rails(環境構築編)</title><content type='html'>rvm で ruby をインストールするとすさまじく楽勝。&lt;br /&gt;ただし、事前セットアップがかなり必要なため、そこをメモしておく。&lt;br /&gt;&lt;br /&gt;* よく分からないがおそらく ruby インストール前にインストールしておく必要アリ。&lt;br /&gt;&lt;br /&gt;□事前セットアップ&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ sudo apt-get install gcc&lt;br /&gt;$ sudo apt-get install build-essential&lt;br /&gt;$ sudo apt-get install bison byacc gperf&lt;br /&gt;$ sudo apt-get install zlib1g-dev&lt;br /&gt;$ sudo apt-get install libreadline5 libreadline5-dev&lt;br /&gt;$ sudo apt-get install libncurses5 libncurses5-dev &lt;br /&gt;$ sudo apt-get install libssl-dev&lt;br /&gt;$ sudo apt-get install sqlite3 libsqlite3-dev&lt;br /&gt;$ sudo apt-get install curl&lt;br /&gt;$ sudo apt-get install git-core&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;最新が入っていますといわれるものは無視する。&lt;br /&gt;上記パッケージをすべてインストールした状態で&lt;br /&gt;$ rvm install 1.9.1&lt;br /&gt;とかする。&lt;br /&gt;&lt;br /&gt;□rails(3 beta3) インストール&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ gem install rails --pre&lt;br /&gt;$ gem install sqlite3-ruby&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;これで rails3 beta3 が完動する。(rails cも含めて)&lt;br /&gt;もちろん rails g scaffold も動く。&lt;br /&gt;rvm さまさまである。&lt;br /&gt;自力でインストールした際は GEM_PATH の設定や、bindle のエラーなどではまりまくったがすんなり動くところまでたどり着いた。&lt;br /&gt;&lt;br /&gt;明日から rails3 使ってみよう！&lt;br /&gt;&lt;br /&gt;以上。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/861968304190282204/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/861968304190282204' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/861968304190282204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/861968304190282204'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/ubuntu-1004-ruby-on-rails.html' title='ubuntu 10.04 で Ruby on Rails(環境構築編)'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2771426910203965051.post-2009532946579319164</id><published>2010-05-10T12:56:00.005+09:00</published><updated>2010-05-12T12:50:29.296+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu"/><title type='text'>ubuntu 10.04 で Ruby(環境構築編)</title><content type='html'>複数バージョンの Ruby が簡単に切り替えられる rvm を使う。&lt;br /&gt;□必要なもののインストール&lt;br /&gt;1.git&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ sudo apt-get install git-core&lt;/pre&gt;&lt;br /&gt;2.curl&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ sudo apt-get install curl&lt;/pre&gt;&lt;br /&gt;3.zlib(開発環境)&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ sudo apt-get install zlib1g-dev&lt;/pre&gt;&lt;br /&gt;□rvm のインストール&lt;br /&gt;1.github からソースのダウンロード&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ mkdir -s .rvm/src&lt;br /&gt;$ cd .rvm/src&lt;br /&gt;$ git clone git://github.com/wayneeseguin/rvm.git&lt;br /&gt;$ cd rvm&lt;br /&gt;$ ./install&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;□インストール後に表示されるメッセージに従い、.bashrc を変更&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ vi ~/.bashrc&lt;/pre&gt;&lt;br /&gt;先頭行に追加&lt;br /&gt;if [[ -s /home/◯◯/.rvm/scripts/rvm ]] ; then source /home/◯◯/.rvm/scripts/rvm ; fi&lt;br /&gt;&lt;br /&gt;□1.9.1インストール&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rvm install 1.9.1&lt;/pre&gt;&lt;br /&gt;□1.8.7インストール&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rvm install 1.8.7&lt;/pre&gt;&lt;br /&gt;各バージョンを利用する場合は&lt;br /&gt;&lt;pre class=&quot;prettyprint&quot;&gt;$ rvm 1.9.1&lt;/pre&gt;&lt;br /&gt;すばらしいな、これ。</content><link rel='replies' type='application/atom+xml' href='http://kiyorin-net.blogspot.com/feeds/2009532946579319164/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2771426910203965051/2009532946579319164' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2009532946579319164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2771426910203965051/posts/default/2009532946579319164'/><link rel='alternate' type='text/html' href='http://kiyorin-net.blogspot.com/2010/05/ubuntu-1004-ruby.html' title='ubuntu 10.04 で Ruby(環境構築編)'/><author><name>きよりん</name><uri>http://www.blogger.com/profile/09974512882043743078</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmMm2ccIE1oStZQyZ8w67FSQ6W6y4TFaFuGOMFVq_WLNk09Q_rkz3NUUzL_gsIOf6EiR0zyB5-QE8g0WdGQWvDPIXiIYmaWcIHJe282YwXGT3qZfqpg33wUgJjzibcwf8/s220/dqStatusJPG.php.jpg'/></author><thr:total>0</thr:total></entry></feed>