<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ディスコ探偵冬景色</title>
	<atom:link href="http://blog.udzura.jp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.udzura.jp</link>
	<description>a coding class hero is something to be...</description>
	<lastBuildDate>Thu, 29 Jul 2010 05:48:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/feed/" />
		<item>
		<title>検証したいRailsプラグインのメモ</title>
		<link>http://blog.udzura.jp/2010/07/29/rails-plugins-to-test/</link>
		<comments>http://blog.udzura.jp/2010/07/29/rails-plugins-to-test/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 05:46:34 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=556</guid>
		<description><![CDATA[Resque
Github謹製、Redisと連携するやつ。非同期ジョブ実行をサポートする。

GitHub製Resqueを使用したRubyでのバックグラウンド処理(バッチ処理) 
defunkt&#8217;s resque at master

ジョブ監視のWebUIがついてくる。Sinatraベースで、カスタマイズも楽そう。

New Resque Web UI

また、cron風の定期実行ジョブを仕掛けるプラグインもあるようだ。

bvandenbos&#8217;s resque-scheduler at master
resque-scheduler (resqueでcronみたいなことをする)

個人的に、webブラウザから簡単にジョブを登録したり監視したりする要件があるので、割と揃ってる感じが気になる。ぜひ試してみたいです。
DataFabric

mperham&#8217;s data_fabric at master
Getting started with data_fabric


DataFabric provides flexible database connection switching for ActiveRecord.

具体的にはshardingとreplicationを実現してくれる。一昔前はacts_as_readonlyableがメジャーだったのだが、最近はメンテナンスされていないようで、2.3.x系では動作が怪しいらしい（リンク先に貴重なパッチ情報があります）。
とはいってもこちらのDataFabricも、、最終更新が今年とは言え、1月だったりする。。。それでも、2.3系で動きやすいのがどっちかといえばDataFabricに軍配が上がるだろう。gemでインストールできるようだし。
なんにしても、実際動かしてみないことにはよくわからないので、こちらも検証記事でも書こうかなと思う。
]]></description>
			<content:encoded><![CDATA[<h3>Resque</h3>
<p>Github謹製、Redisと連携するやつ。非同期ジョブ実行をサポートする。</p>
<ul>
<li><a href="http://blog.madoro.org/mn/17">GitHub製Resqueを使用したRubyでのバックグラウンド処理(バッチ処理) </a></li>
<li><a href="http://github.com/defunkt/resque">defunkt&#8217;s resque at master</a></li>
</ul>
<p>ジョブ監視のWebUIがついてくる。Sinatraベースで、カスタマイズも楽そう。</p>
<ul>
<li><a href="http://github.com/blog/543-new-resque-web-ui">New Resque Web UI</a></li>
</ul>
<p>また、cron風の定期実行ジョブを仕掛けるプラグインもあるようだ。</p>
<ul>
<li><a href="http://github.com/bvandenbos/resque-scheduler">bvandenbos&#8217;s resque-scheduler at master</a></li>
<li><a href="http://blog.madoro.org/mn/56">resque-scheduler (resqueでcronみたいなことをする)</a></li>
</ul>
<p>個人的に、webブラウザから簡単にジョブを登録したり監視したりする要件があるので、割と揃ってる感じが気になる。ぜひ試してみたいです。</p>
<h3>DataFabric</h3>
<ul>
<li><a href="http://github.com/mperham/data_fabric">mperham&#8217;s data_fabric at master</a></li>
<li><a href="http://blog.agoragames.com/2010/01/29/getting-started-with-data_fabric/">Getting started with data_fabric</a></li>
</ul>
<blockquote><p>
DataFabric provides flexible database connection switching for ActiveRecord.
</p></blockquote>
<p>具体的にはshardingとreplicationを実現してくれる。一昔前はacts_as_readonlyableがメジャーだったのだが、最近はメンテナンスされていないようで、<a href="http://dontstopmusic.no-ip.org/diary/20091203.html">2.3.x系では動作が怪しいらしい</a>（リンク先に貴重なパッチ情報があります）。</p>
<p>とはいってもこちらのDataFabricも、、最終更新が今年とは言え、1月だったりする。。。それでも、2.3系で動きやすいのがどっちかといえばDataFabricに軍配が上がるだろう。gemでインストールできるようだし。</p>
<p>なんにしても、実際動かしてみないことにはよくわからないので、こちらも検証記事でも書こうかなと思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/29/rails-plugins-to-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/29/rails-plugins-to-test/" />
	</item>
		<item>
		<title>Radiant CMSのExtensionを作る – タグ追加篇</title>
		<link>http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/</link>
		<comments>http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 05:50:07 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=550</guid>
		<description><![CDATA[目次

前回（モデルと管理画面追加）
今回（タグの追加）

タグ追加の参考サイト

http://wiki.github.com/radiant/radiant/adding-custom-radius-tags
http://github.com/radiant/radiant/blob/master/app/models/standard_tags.rb

後者は、Radiant内で実際に使われているタグ定義、要はソースの一部。これが一番参考になる。チラチラ見ながら読み進めていただきたい。

タグ用のDSLの概要
vendor/extensions/cash_memo/app/models/cash_item_tags.rb というものを作ってみよう。models以下に作成することが多いようだ。

1
2
3
4
5
6
module CashItemTags
  include Radiant::Taggable
&#160;
  class TagError &#60; StandardError; end
...
end

タグを作成するためには、以下の流れでモジュール内に宣言していく。

desc メソッド: 説明を書く。%{}とかで囲って書いてる場合が多い。また、Textile記法を用いたりできる。
tag メソッド: 実際の挙動をブロック内に記述する。メソッドの引数はタグ名。また、ブロック内には「tag」という変数を投げ込める

この「tag」オブジェクトは、正体は「Radius::TagBinding」というクラスのようだ。以下のようなメソッドが使える。

Radius::TagBinding#expand: そのタグで囲ったテキストを、その場で展開する。
Radius::TagBinding#attr: そのタグで指定した、「name=&#8221;value&#8221;」みたいな属性をパースし、ハッシュの形で

1
tag.attr&#91;&#34;name&#34;&#93;

のようにアクセスできるようにする。
Radius::TagBinding#locals: そのタグと、そのタグの子要素となるタグ内で共通に使用できる変数をセット/アクセスする。tag.local自体はOpenStructを継承したオブジェクトのようで、

1
2
tag.locals.hoges = Hoge.all
tag.locals.hoges.first

のように使える。

これは、実際のコードをみて行った方がわかりやすいかな。。。
ということで拙作のタグの一部を。。「CashItem」モデルは、前回からの続きということで。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  # 何もしない、ネームスペースの定義だけのタグは、とりあえず「tag.expand」としておこう
  tag 'cash_items' do &#124;tag&#124;
    tag.expand
  end
&#160;
  tag 'cash_items:each' do &#124;tag&#124;
    begin
      # localsにモデルをセット
     [...]]]></description>
			<content:encoded><![CDATA[<h3>目次</h3>
<ul>
<li><a href="http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/">前回（モデルと管理画面追加）</a></li>
<li>今回（タグの追加）</li>
</ul>
<h3>タグ追加の参考サイト</h3>
<ul>
<li><a href="http://wiki.github.com/radiant/radiant/adding-custom-radius-tags">http://wiki.github.com/radiant/radiant/adding-custom-radius-tags</a></li>
<li><a href="http://github.com/radiant/radiant/blob/master/app/models/standard_tags.rb">http://github.com/radiant/radiant/blob/master/app/models/standard_tags.rb</a></li>
</ul>
<p>後者は、<strong>Radiant内で実際に使われているタグ定義</strong>、要はソースの一部。これが一番参考になる。チラチラ見ながら読み進めていただきたい。</p>
<p><span id="more-550"></span></p>
<h3>タグ用のDSLの概要</h3>
<p>vendor/extensions/cash_memo/app/models/cash_item_tags.rb というものを作ってみよう。models以下に作成することが多いようだ。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> CashItemTags
  <span style="color:#9966CC; font-weight:bold;">include</span> <span style="color:#6666ff; font-weight:bold;">Radiant::Taggable</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">class</span> TagError <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#CC00FF; font-weight:bold;">StandardError</span>; <span style="color:#9966CC; font-weight:bold;">end</span>
...
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>タグを作成するためには、以下の流れでモジュール内に宣言していく。</p>
<ul>
<li><strong><tt>desc</tt> メソッド</strong>: 説明を書く。%{}とかで囲って書いてる場合が多い。また、Textile記法を用いたりできる。</li>
<li><strong><tt>tag</tt> メソッド</strong>: 実際の挙動をブロック内に記述する。メソッドの引数はタグ名。また、ブロック内には「tag」という変数を投げ込める</li>
</ul>
<p>この「tag」オブジェクトは、正体は「<tt>Radius::TagBinding</tt>」というクラスのようだ。以下のようなメソッドが使える。</p>
<ul>
<li><strong><tt>Radius::TagBinding#expand</tt></strong>: そのタグで囲ったテキストを、その場で展開する。</li>
<li><strong><tt>Radius::TagBinding#attr</tt></strong>: そのタグで指定した、「name=&#8221;value&#8221;」みたいな属性をパースし、ハッシュの形で

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">tag.<span style="color:#9900CC;">attr</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;name&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span></pre></td></tr></table></div>

<p>のようにアクセスできるようにする。</li>
<li><strong><tt>Radius::TagBinding#locals</tt></strong>: そのタグと、<strong>そのタグの子要素となるタグ内で共通に使用できる</strong>変数をセット/アクセスする。tag.local自体はOpenStructを継承したオブジェクトのようで、

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">hoges</span> = Hoge.<span style="color:#9900CC;">all</span>
tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">hoges</span>.<span style="color:#9900CC;">first</span></pre></td></tr></table></div>

<p>のように使える。</li>
</ul>
<h3>これは、実際のコードをみて行った方がわかりやすいかな。。。</h3>
<p>ということで拙作のタグの一部を。。「CashItem」モデルは、<a href="http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/">前回から</a>の続きということで。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">  <span style="color:#008000; font-style:italic;"># 何もしない、ネームスペースの定義だけのタグは、とりあえず「tag.expand」としておこう</span>
  tag <span style="color:#996600;">'cash_items'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tag<span style="color:#006600; font-weight:bold;">|</span>
    tag.<span style="color:#9900CC;">expand</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  tag <span style="color:#996600;">'cash_items:each'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tag<span style="color:#006600; font-weight:bold;">|</span>
    <span style="color:#9966CC; font-weight:bold;">begin</span>
      <span style="color:#008000; font-style:italic;"># localsにモデルをセット</span>
      <span style="color:#008000; font-style:italic;"># ここでセットすると、 cash_items:each:* のネームスペースの子要素内で参照できる、ということ</span>
      tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">items</span> = CashItem.<span style="color:#9900CC;">all</span>
      ret = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>
      iterated_items = tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">items</span>
      <span style="color:#008000; font-style:italic;"># モデルの個数だけ、 r:cash_items:each タグでくくった要素を繰り返し出力する</span>
      iterated_items.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>item<span style="color:#006600; font-weight:bold;">|</span>
        tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">item</span> = item
        ret <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> tag.<span style="color:#9900CC;">expand</span> 
      <span style="color:#9966CC; font-weight:bold;">end</span>
      ret
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> e
      <span style="color:#996600;">&quot;タグに誤りがあるようです：#{e.class}, #{e.message}&quot;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># 名前だけ</span>
  tag <span style="color:#996600;">'cash_items:each:item'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tag<span style="color:#006600; font-weight:bold;">|</span>
    tag.<span style="color:#9900CC;">expand</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#008000; font-style:italic;"># cash_items:each 内で、各モデルの各属性に参照する</span>
  tag <span style="color:#996600;">'cash_items:each:item:name'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tag<span style="color:#006600; font-weight:bold;">|</span>
    tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">item</span>.<span style="color:#9900CC;">name</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#008000; font-style:italic;"># tag.attr はこんな感じで使える</span>
  tag <span style="color:#996600;">'cash_items:each:item:paid_at'</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>tag<span style="color:#006600; font-weight:bold;">|</span>
    tag.<span style="color:#9900CC;">locals</span>.<span style="color:#9900CC;">item</span>.<span style="color:#9900CC;">paid_at</span>.<span style="color:#9900CC;">strftime</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span>tag.<span style="color:#9900CC;">attr</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">&quot;format&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">||</span> <span style="color:#996600;">&quot;%Y/%m/%d(%a) %H:%M:%S&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">strip</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#008000; font-style:italic;"># 以下、各属性へのアクセッサーを宣言……</span></pre></td></tr></table></div>

<p>タグの有効化は、 vendor/extensions/cash_memo/cash_memo_extension.rb に以下の要領で追記。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">    Page.<span style="color:#9900CC;">class_eval</span> <span style="color:#006600; font-weight:bold;">&#123;</span>
      <span style="color:#9966CC; font-weight:bold;">include</span> CashItemTags
    <span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>で、ある程度小遣い帳の項目を登録したら、CMS管理画面側で、こんな感じで記事を登録（Textile filter）。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:cash_items:each<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
h3. <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:item:name</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 * 使用金額：<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:item:amount</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 * 購入者：<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:item:user_name</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
 * 購入日時：<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:item:paid_at</span> <span style="color: #000066;">format</span>=<span style="color: #ff0000;">&quot;%Y年%m月%d日 (%H:%M)&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
&nbsp;
bq. <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;r:item:note</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/r:cash_items:each<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>すると。。。。無事、こういう風に展開される。</p>
<p><a href="http://blog.udzura.jp/wp-content/uploads/2010/07/ext03.png"><img src="http://blog.udzura.jp/wp-content/uploads/2010/07/ext03-300x262.png" alt="ext03" title="ext03" width="300" height="262" class="alignnone size-medium wp-image-552" /></a></p>
<p>あとは、cash_item:each タグに属性を設定し、順番なり抽出条件なりを変えたりとか、いろいろできる。とにかく standard_tag の書き方が一番参考になるので、作るつもりの人はみておいた方がいいだろう。</p>
<h3>まとめ</h3>
<ul>
<li>Radiant Extensionとは言いながら、実際の作り方、コードの感じはほぼまったく素のRailsに近い。</li>
<li>Tagの記述DSLは多少コツがいるが、十分に柔軟。</li>
<li>Radiantは、CMSというか、Railsの上にさらに覆い被さるウェブサイトフレームワークといった感じがする。Extension次第でかなり柔軟なサイト構築が出来そう。</li>
</ul>
<p>ということで、日本語化も無事されつつあるということで、もっと色々Extensionが増えるといいですね～。</p>
<p>今回作ったExtension、今後の課題は：</p>
<ul>
<li>Spec全然書いてない。</li>
<li>例外処理が非常に甘いと思う。</li>
</ul>
<h3>ソースコード is here</h3>
<ul>
<li><a href="http://github.com/udzura/radiant-cash_memo-extension">http://github.com/udzura/radiant-cash_memo-extension</a></li>
</ul>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">git clone git:<span style="color: #000000; font-weight: bold;">//</span>github.com<span style="color: #000000; font-weight: bold;">/</span>udzura<span style="color: #000000; font-weight: bold;">/</span>radiant-cash_memo-extension.git vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo</pre></td></tr></table></div>

<p>で、他のRadiantにもインストールできるでしょう。動作保障はしません。。コードの参考までに、です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/" />
	</item>
		<item>
		<title>Radiant CMSのExtensionを作る &#8211; モデル追加湯けむり旅情篇</title>
		<link>http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/</link>
		<comments>http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 10:45:06 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=541</guid>
		<description><![CDATA[目次

今回（モデルと管理画面追加）
次回（タグの追加）

セットアップ
radiantはgemで入れる。2010年7月現在、バージョン0.9.1が入るはず。

1
sudo gem install radiant

0.9.1は比較的安定している模様なので、今回はこれをベースに開発する。
今回は「お小遣い帳をCMSに追加する」エクステンションを開発する。

で、

http://wiki.github.com/radiant/radiant/how-to-create-an-extension

のとおり（おおむね）の手順で、必要なモデル「小遣い帳の項目」を作成する。
Radiant自身と、Extensionの雛形を作る。

1
2
3
4
5
6
7
8
9
10
11
radiant -d mysql cash-book
&#160;
mysql&#62; create database cash_book_development
default charset utf8
default collate utf8_general_ci
;
#=&#62;Query OK, 1 row affected (0.02 sec)
&#160;
cd cash-book/
rake db:bootstrap
ruby script/generate extension cash-memo

ここで、Radiant自身はscaffoldジェネレータを用意してくれない……ので、別のRailsアプリを一旦作成し、そっちのscaffoldで雛形を作成、コピーして使用する。

1
2
3
4
5
6
7
8
9
10
11
12
13
cd ..
rails cash-book-tmp
cd cash-book-tmp/
ruby script/generate scaffold Admin::CashItem \
  name:string paid_at:datetime \
  user_id:integer amount:integer \
  note:text
cp -rv app/views/admin ../cash-book/vendor/extensions/cash_memo/app/views/
cp -rv app/controllers/admin ../cash-book/vendor/extensions/cash_memo/app/controllers/
cp -rv app/models/admin ../cash-book/vendor/extensions/cash_memo/app/models/
cp -rv db/migrate/* ../cash-book/vendor/extensions/cash_memo/db/migrate/
mv -v [...]]]></description>
			<content:encoded><![CDATA[<h3>目次</h3>
<ul>
<li>今回（モデルと管理画面追加）</li>
<li><a href="http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/">次回（タグの追加）</a></li>
</ul>
<h3>セットアップ</h3>
<p>radiantはgemで入れる。2010年7月現在、バージョン0.9.1が入るはず。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> radiant</pre></td></tr></table></div>

<p>0.9.1は比較的安定している模様なので、今回はこれをベースに開発する。</p>
<p>今回は<strong>「お小遣い帳をCMSに追加する」</strong>エクステンションを開発する。</p>
<p><span id="more-541"></span><br />
で、</p>
<ul>
<li><a href="http://wiki.github.com/radiant/radiant/how-to-create-an-extension">http://wiki.github.com/radiant/radiant/how-to-create-an-extension</a></li>
</ul>
<p>のとおり（おおむね）の手順で、必要なモデル「小遣い帳の項目」を作成する。</p>
<p>Radiant自身と、Extensionの雛形を作る。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">radiant <span style="color: #660033;">-d</span> mysql cash-book
&nbsp;
mysql<span style="color: #000000; font-weight: bold;">&gt;</span> create database cash_book_development
default charset utf8
default collate utf8_general_ci
;
<span style="color: #666666; font-style: italic;">#=&gt;Query OK, 1 row affected (0.02 sec)</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">cd</span> cash-book<span style="color: #000000; font-weight: bold;">/</span>
rake db:bootstrap
ruby script<span style="color: #000000; font-weight: bold;">/</span>generate extension cash-memo</pre></td></tr></table></div>

<p>ここで、Radiant自身はscaffoldジェネレータを用意してくれない……ので、別のRailsアプリを一旦作成し、そっちのscaffoldで雛形を作成、コピーして使用する。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..
rails cash-book-tmp
<span style="color: #7a0874; font-weight: bold;">cd</span> cash-book-tmp<span style="color: #000000; font-weight: bold;">/</span>
ruby script<span style="color: #000000; font-weight: bold;">/</span>generate scaffold Admin::CashItem \
  name:string paid_at:datetime \
  user_id:integer amount:integer \
  note:text
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-rv</span> app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>admin ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>views<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-rv</span> app<span style="color: #000000; font-weight: bold;">/</span>controllers<span style="color: #000000; font-weight: bold;">/</span>admin ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>controllers<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-rv</span> app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>admin ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-rv</span> db<span style="color: #000000; font-weight: bold;">/</span>migrate<span style="color: #000000; font-weight: bold;">/*</span> ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>db<span style="color: #000000; font-weight: bold;">/</span>migrate<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #660033;">-v</span> ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>admin<span style="color: #000000; font-weight: bold;">/</span>cash_item.rb ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">rmdir</span> ..<span style="color: #000000; font-weight: bold;">/</span>cash-book<span style="color: #000000; font-weight: bold;">/</span>vendor<span style="color: #000000; font-weight: bold;">/</span>extensions<span style="color: #000000; font-weight: bold;">/</span>cash_memo<span style="color: #000000; font-weight: bold;">/</span>app<span style="color: #000000; font-weight: bold;">/</span>models<span style="color: #000000; font-weight: bold;">/</span>admin<span style="color: #000000; font-weight: bold;">/</span></pre></td></tr></table></div>

<h4>詰まったところ</h4>
<ul>
<li>ここで、間違えて application_controller.rb までコピーしてしまうと、Radiant自体が起動しなくなる。。。</li>
</ul>
<h3>動くように改修</h3>
<p>さて、Railsは、Scaffoldで作成された各種スクリプトについて、ネームスペース付きの場合はそのままでは使用できない。。。以下の要件で、何ヶ所か修正する。sedでもGUIテキストエディタでもいいけど、一括変換で問題ないだろう。</p>
<ul>
<li><strong>View</strong>: <code>cash_item</code>と名の付くものを<code>admin_cash_item</code>に変更する。path名、変数名など。また、form_forの中など、モデルをそのままpathに変換している箇所は、

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">admin_cash_item_path<span style="color:#006600; font-weight:bold;">&#40;</span>@admin_cash_item<span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

<p>のようにしないと動作しない。</li>
<li><strong>Controller</strong>: クラス名を変更、あとはViewと同じ要領で変更。特に、createやupdateでのリダイレクト先指定などが引っかかる。また、params[:cash_item]は変更してはいけないことを留意する</li>
<li><strong>Model</strong>:

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">belongs_to <span style="color:#ff3333; font-weight:bold;">:user</span></pre></td></tr></table></div>

<p>を宣言。ふつうにRadiantで使用しているモデルに対して、has_many/belongs_toを宣言できる。</li>
<li><strong>Migration file</strong>: ファイル名を「*_create_cash_items.rb」に、クラス名を「CreateCashItems」に、テーブル名を「:cash_items」にする</li>
</ul>
<p>完成したscaffoldファイルは、<a href="http://github.com/udzura/radiant-cash_memo-extension/tree/master/app/">一応githubにアップしてある</a>。まあ、エラーが出るたびに潰していくのがいいと思う。</p>
<p>また、 vendor/extensions/cash_memo/config/routes.rb を以下のように作成。define_routesは消える予定なので使わない。警告が出ます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">ActionController::Routing::Routes</span>.<span style="color:#9900CC;">draw</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>map<span style="color:#006600; font-weight:bold;">|</span>
  map.<span style="color:#9900CC;">namespace</span> <span style="color:#ff3333; font-weight:bold;">:admin</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>admin<span style="color:#006600; font-weight:bold;">|</span>
    admin.<span style="color:#9900CC;">resources</span> <span style="color:#ff3333; font-weight:bold;">:cash_items</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>また、管理画面にタブを作成するため、 vendor/extensions/cash_memo/cash_memo_extension.rb 内の activate メソッドに以下の記述を追加する。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">  def activate
    tab <span style="color: #ff0000;">'Content'</span> <span style="color: #000000; font-weight: bold;">do</span>
      add_item <span style="color: #ff0000;">&quot;小遣い帳&quot;</span>, <span style="color: #ff0000;">&quot;/admin/cash_items&quot;</span>, :after =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;Pages&quot;</span>
    end
  end</pre></td></tr></table></div>

<p>これで、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">rake radiant:extensions:cash_memo:migrate</pre></td></tr></table></div>

<p>テーブルが追加されたのを確認して</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">ruby script<span style="color: #000000; font-weight: bold;">/</span>server <span style="color: #660033;">-e</span> development</pre></td></tr></table></div>

<p><a href="http://blog.udzura.jp/wp-content/uploads/2010/07/ext01.png"><img src="http://blog.udzura.jp/wp-content/uploads/2010/07/ext01-300x195.png" alt="ext01" title="ext01" width="300" height="195" class="alignnone size-medium wp-image-542" /></a></p>
<p><a href="http://blog.udzura.jp/wp-content/uploads/2010/07/ext02.png"><img src="http://blog.udzura.jp/wp-content/uploads/2010/07/ext02-300x199.png" alt="ext02" title="ext02" width="300" height="199" class="alignnone size-medium wp-image-543" /></a></p>
<p>これで、小遣い帳の項目をRadiantに記録できるようになった。</p>
<p>今回、Userはプルダウンから選べる方がいいに決まっているので、scaffoldを以下のように修正している。</p>
<h4>vendor/extensions/cash_memo/cash_memo_extension.rb に追記</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">  <span style="color:#9966CC; font-weight:bold;">def</span> activate
<span style="color:#006600; font-weight:bold;">+</span>    User.<span style="color:#9900CC;">class_eval</span> <span style="color:#006600; font-weight:bold;">&#123;</span>
<span style="color:#006600; font-weight:bold;">+</span>      has_many <span style="color:#ff3333; font-weight:bold;">:cash_items</span>
<span style="color:#006600; font-weight:bold;">+</span>      <span style="color:#9966CC; font-weight:bold;">def</span> to_option
<span style="color:#006600; font-weight:bold;">+</span>        <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">name</span>, <span style="color:#0000FF; font-weight:bold;">self</span>.<span style="color:#9900CC;">id</span><span style="color:#006600; font-weight:bold;">&#93;</span>
<span style="color:#006600; font-weight:bold;">+</span>      <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#006600; font-weight:bold;">+</span>      
<span style="color:#006600; font-weight:bold;">+</span>      <span style="color:#9966CC; font-weight:bold;">def</span> User.<span style="color:#9900CC;">all_as_options</span>
<span style="color:#006600; font-weight:bold;">+</span>        User.<span style="color:#9900CC;">all</span>.<span style="color:#9900CC;">map</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&amp;</span>:to_option<span style="color:#006600; font-weight:bold;">&#41;</span>
<span style="color:#006600; font-weight:bold;">+</span>      <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#006600; font-weight:bold;">+</span>    <span style="color:#006600; font-weight:bold;">&#125;</span>
...</pre></td></tr></table></div>

<h4>vendor/extensions/cash_memo/app/views/admin/cash_items/(edit|new).html.erb に追記</h4>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span> form_for<span style="color:#006600; font-weight:bold;">&#40;</span>@admin_cash_item, <span style="color:#ff3333; font-weight:bold;">:url</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> ...<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>f<span style="color:#006600; font-weight:bold;">|</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
...
-     <span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#9900CC;">text_field</span> <span style="color:#ff3333; font-weight:bold;">:user_id</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
+     <span style="color:#006600; font-weight:bold;">&lt;%</span>= f.<span style="color:#CC0066; font-weight:bold;">select</span> <span style="color:#ff3333; font-weight:bold;">:user_id</span>, User.<span style="color:#9900CC;">all_as_options</span> <span style="color:#006600; font-weight:bold;">%&gt;</span>
...</pre></td></tr></table></div>

<p>管理画面がいまいちと思うなら、Railsと同様にViewを編集して見栄えよくすることも出来る。</p>
<h3>次回</h3>
<p>モデルの追加と管理画面だけなのに、長くなってしまった、、、<a href="http://blog.udzura.jp/2010/07/28/how-to-create-radiant-extension-tags/">次回は、タグを追加し、小遣い帳の記録をページに表示するところ</a>をやります。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/27/howto-create-radiant-extension/" />
	</item>
		<item>
		<title>returning は死んだ。 Object#tap を使おう</title>
		<link>http://blog.udzura.jp/2010/07/26/returning-is-dead-use-tap/</link>
		<comments>http://blog.udzura.jp/2010/07/26/returning-is-dead-use-tap/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 04:19:56 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=537</guid>
		<description><![CDATA[標記のとおり、死ぬみたいです。

http://github.com/rails/rails/commit/b0b9bf320409b66c6c6b680371aca590297cd4cc


crankharder
I&#8217;m curious to know what the rational is behind this?
rohit
You can now use tap.

正論過ぎて返す言葉もありませんね。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
require &#34;rubygems&#34;
require &#34;active_support&#34;
&#160;
a1 = returning &#91;&#93; do &#124;ary&#124;
  ary &#60;&#60; 'hoge'
  ary &#60;&#60; 'fuga'
end
&#160;
a2 = &#91;&#93;.tap do &#124;ary&#124;
  ary &#60;&#60; 'hoge'
  ary &#60;&#60; 'fuga'
end
&#160;
require &#34;spec&#34;
a1.should == a2
#=&#62; true

確かに、タイピング量的にも、tapの方が少なくなりますね。でも、1.8.6みたいにtapのバックポートが無い場合とか、あとreturningを使いまくってる場合は…。
そもそもtapもreturningも4行ぐらいで実装できるので、以下のような config/initializers/returning_strikes_back.rb を作成すれば互換性を確保できるんじゃあないでしょうか。あまり薦めませんが。。

1
2
3
4
5
6
7
8
9
10
module ReturningStrikesBack
  def returning&#40;value&#41;
    yield&#40;value&#41;
 [...]]]></description>
			<content:encoded><![CDATA[<p>標記のとおり、死ぬみたいです。</p>
<ul>
<li><a href="http://github.com/rails/rails/commit/b0b9bf320409b66c6c6b680371aca590297cd4cc">http://github.com/rails/rails/commit/b0b9bf320409b66c6c6b680371aca590297cd4cc</a></li>
</ul>
<blockquote>
<h5>crankharder</h5>
<p>I&#8217;m curious to know what the rational is behind this?</p>
<h5>rohit</h5>
<p>You can now use tap.
</p></blockquote>
<p>正論過ぎて返す言葉もありませんね。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;rubygems&quot;</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;active_support&quot;</span>
&nbsp;
a1 = returning <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>ary<span style="color:#006600; font-weight:bold;">|</span>
  ary <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">'hoge'</span>
  ary <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">'fuga'</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
a2 = <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">tap</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>ary<span style="color:#006600; font-weight:bold;">|</span>
  ary <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">'hoge'</span>
  ary <span style="color:#006600; font-weight:bold;">&lt;&lt;</span> <span style="color:#996600;">'fuga'</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;spec&quot;</span>
a1.<span style="color:#9900CC;">should</span> == a2
<span style="color:#008000; font-style:italic;">#=&gt; true</span></pre></td></tr></table></div>

<p>確かに、タイピング量的にも、tapの方が少なくなりますね。でも、1.8.6みたいにtapのバックポートが無い場合とか、あとreturningを使いまくってる場合は…。</p>
<p>そもそもtapもreturningも4行ぐらいで実装できるので、以下のような<code> config/initializers/returning_strikes_back.rb </code>を作成すれば互換性を確保できるんじゃあないでしょうか。あまり薦めませんが。。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> ReturningStrikesBack
  <span style="color:#9966CC; font-weight:bold;">def</span> returning<span style="color:#006600; font-weight:bold;">&#40;</span>value<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">yield</span><span style="color:#006600; font-weight:bold;">&#40;</span>value<span style="color:#006600; font-weight:bold;">&#41;</span>
    value
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#CC00FF; font-weight:bold;">Object</span>
  <span style="color:#9966CC; font-weight:bold;">include</span> ReturningStrikesBack
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/26/returning-is-dead-use-tap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/26/returning-is-dead-use-tap/" />
	</item>
		<item>
		<title>UA &#8211; 『KABA』</title>
		<link>http://blog.udzura.jp/2010/07/23/ua-%e3%80%8ekaba%e3%80%8f/</link>
		<comments>http://blog.udzura.jp/2010/07/23/ua-%e3%80%8ekaba%e3%80%8f/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 05:13:02 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[＜音楽＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=535</guid>
		<description><![CDATA[特に深く考えずに手にしたんだけど、すごくいいね！　どこかで聞いたことのある唄のカバー集。

	
	KABA / Array
	ビクターエンタテインメント( 2010-06-23 )

「きっと言える」が良かったです。
＊　＊　＊
UAで一番好きな唄。

]]></description>
			<content:encoded><![CDATA[<p>特に深く考えずに手にしたんだけど、すごくいいね！　どこかで聞いたことのある唄のカバー集。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/KABA-UA/dp/B003I8WYZU%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003I8WYZU"><img src="http://ecx.images-amazon.com/images/I/41LBRrZLegL._SL75_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/KABA-UA/dp/B003I8WYZU%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB003I8WYZU">KABA</a> / Array</p>
	<p>ビクターエンタテインメント( 2010-06-23 )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>「きっと言える」が良かったです。</p>
<h3>＊　＊　＊</h3>
<p>UAで一番好きな唄。</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/OWgTbGvzIaI&amp;hl=ja_JP&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/OWgTbGvzIaI&amp;hl=ja_JP&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/23/ua-%e3%80%8ekaba%e3%80%8f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/23/ua-%e3%80%8ekaba%e3%80%8f/" />
	</item>
		<item>
		<title>Ubuntuでkumofsのdebを作成する</title>
		<link>http://blog.udzura.jp/2010/07/20/kumofs-debuild-on-ubuntu/</link>
		<comments>http://blog.udzura.jp/2010/07/20/kumofs-debuild-on-ubuntu/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 11:06:10 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=527</guid>
		<description><![CDATA[kumofsは、memcache互換のプロトコルをサポートする分散型KVS。
なぜかまだだれもdebを公開していなかったようなので、作り方を調べてみました。

基本手順
今時のデビアン系では、普通に「./configure &#038;&#038; make &#038;&#038; make install」で入るソフトウェアであれば、実質2コマンドでdeb化出来るようです。

ソースを落として、「ソフトウェア名-バージョン」の名のディレクトリに展開
dh_makeする
debuildする

依存ライブラリを入れる

1
sudo aptitude install build-essential ruby ruby-dev rubygems libtokyocabinet-dev

aptで入るのはこれぐらいだと思われる。http://hatotech.org/kumatch/archives/2010/03/04/ubuntu_kumofs.html http://d.hatena.ne.jp/irasya/20100120/1263936307 等参照
deb作成に必要なパッケージを入れる

1
sudo aptitude install dpkg-dev dh-make debhelper devscripts lintian

先に、GPG公開鍵を作っておく
http://gnupg.hclippr.com/gnupg%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/ のとおりの手順で作成しときましょう。乱数生成が大変ですが、頑張って。

1
2
sudo aptitude install gnupg
gpg --gen-key

参考：https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa/basic-scratch
gpg鍵を設定していない場合は、debuildからエラーが表示されるでしょう。gpg鍵を設定してもいいですが、debuildに-us -ucオプションを与えることで、署名をしないことも可能です。ただし、署名をしない限りUbuntuにパッケージをアップロードすることはできません。
つーことです。
まず、依存するライブラリであるMessagePackのdebを作成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ tar xzf msgpack_0.5.2.tar.gz
$ cd msgpack-0.5.2/
$ dh_make -e udzura@udzura.jp -c apache -f ../msgpack-0.5.2.tar.gz 
&#160;
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kumofs.sourceforge.net/">kumofs</a>は、memcache互換のプロトコルをサポートする分散型KVS。</p>
<p>なぜかまだだれもdebを公開していなかったようなので、作り方を調べてみました。</p>
<p><span id="more-527"></span></p>
<h3>基本手順</h3>
<p>今時のデビアン系では、普通に「./configure &#038;&#038; make &#038;&#038; make install」で入るソフトウェアであれば、実質2コマンドでdeb化出来るようです。</p>
<ul>
<li>ソースを落として、「ソフトウェア名-バージョン」の名のディレクトリに展開</li>
<li>dh_makeする</li>
<li>debuildする</li>
</ul>
<h3>依存ライブラリを入れる</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> build-essential ruby ruby-dev rubygems libtokyocabinet-dev</pre></td></tr></table></div>

<p>aptで入るのはこれぐらいだと思われる。<a href="http://hatotech.org/kumatch/archives/2010/03/04/ubuntu_kumofs.html">http://hatotech.org/kumatch/archives/2010/03/04/ubuntu_kumofs.html</a> <a href="http://d.hatena.ne.jp/irasya/20100120/1263936307">http://d.hatena.ne.jp/irasya/20100120/1263936307</a> 等参照</p>
<h3>deb作成に必要なパッケージを入れる</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> dpkg-dev dh-make debhelper devscripts lintian</pre></td></tr></table></div>

<h3>先に、GPG公開鍵を作っておく</h3>
<p><a href="http://gnupg.hclippr.com/gnupg%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/">http://gnupg.hclippr.com/gnupg%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/</a> のとおりの手順で作成しときましょう。乱数生成が大変ですが、頑張って。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gnupg
gpg <span style="color: #660033;">--gen-key</span></pre></td></tr></table></div>

<p>参考：<a href="https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa/basic-scratch">https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa/basic-scratch</a></p>
<blockquote><p>gpg鍵を設定していない場合は、debuildからエラーが表示されるでしょう。gpg鍵を設定してもいいですが、debuildに-us -ucオプションを与えることで、署名をしないことも可能です。ただし、署名をしない限りUbuntuにパッケージをアップロードすることはできません。</p></blockquote>
<p>つーことです。</p>
<h3>まず、依存するライブラリである<a href="http://msgpack.org/">MessagePack</a>のdebを作成</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xzf msgpack_0.5.2.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> msgpack-0.5.2<span style="color: #000000; font-weight: bold;">/</span>
$ dh_make <span style="color: #660033;">-e</span> udzura<span style="color: #000000; font-weight: bold;">@</span>udzura.jp <span style="color: #660033;">-c</span> apache <span style="color: #660033;">-f</span> ..<span style="color: #000000; font-weight: bold;">/</span>msgpack-0.5.2.tar.gz 
&nbsp;
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel <span style="color: #c20cb9; font-weight: bold;">patch</span> or cdbs?
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>s<span style="color: #000000; font-weight: bold;">/</span>i<span style="color: #000000; font-weight: bold;">/</span>m<span style="color: #000000; font-weight: bold;">/</span>l<span style="color: #000000; font-weight: bold;">/</span>k<span style="color: #000000; font-weight: bold;">/</span>n<span style="color: #000000; font-weight: bold;">/</span>b<span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #666666; font-style: italic;">#=&gt; i</span>
&nbsp;
Maintainer name : Udzura Kondo
Email-Address   : udzura<span style="color: #000000; font-weight: bold;">@</span>udzura.jp 
Date            : Tue, <span style="color: #000000;">20</span> Jul <span style="color: #000000;">2010</span> <span style="color: #000000;">19</span>:<span style="color: #000000;">35</span>:<span style="color: #000000;">28</span> +0900
Package Name    : msgpack
Version         : 0.5.2
License         : apache
Using dpatch    : no
Using quilt     : no
Type of Package : unknown
Hit <span style="color: #000000; font-weight: bold;">&lt;</span>enter<span style="color: #000000; font-weight: bold;">&gt;</span> to confirm: 
Done. Please edit the files <span style="color: #000000; font-weight: bold;">in</span> the debian<span style="color: #000000; font-weight: bold;">/</span> subdirectory now. msgpack
uses a configure script, so you probably don<span style="color: #ff0000;">'t have to edit the Makefiles.</span></pre></td></tr></table></div>

<p>メンテナがあなたになってしまいますが、まあ気にせずに。</p>
<p>バージョン0.5.2では make check でどうしても通りません（gtest.hを入れても通りません…）。いったん、make checkをしないように、 Makefile.in の617行目の以下をコメントアウト。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>617
</pre></td><td class="code"><pre class="makefile" style="font-family:monospace;">check: check-recursive</pre></td></tr></table></div>

<p>これで、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ debuild</pre></td></tr></table></div>

<p>終了後、親のフォルダに無事にdebファイルが生成されます。</p>
<h3>kumofsをdeb化</h3>
<p>まず、先ほど生成したてのdebをインストールしないとビルドできません。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> ..
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> msgpack_0.5.2-<span style="color: #000000;">1</span>_all.deb
<span style="color: #666666; font-style: italic;"># 一緒にこちらも</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> msgpack</pre></td></tr></table></div>

<p>あとの手順は一緒です。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xzf kumofs-0.4.10.tar.gz
$ <span style="color: #7a0874; font-weight: bold;">cd</span> kumofs-0.4.10<span style="color: #000000; font-weight: bold;">/</span>
$ dh_make <span style="color: #660033;">-e</span> udzura<span style="color: #000000; font-weight: bold;">@</span>udzura.jp <span style="color: #660033;">-c</span> apache <span style="color: #660033;">-f</span> ..<span style="color: #000000; font-weight: bold;">/</span>kumofs-0.4.10.tar.gz 
$ debuild</pre></td></tr></table></div>

<h3>動くの？</h3>
<p>まっさらなUbuntuサーバ（OpenSSH ServerのみONでインストール）に入れてみましょう。</p>
<p>あらかじめSFTPか何かでdebを送り込みます。</p>
<p>今回、全然依存とか考えずにdebuildしたので、手動で依存するっぽいパッケージを入れます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> ruby ruby-dev rubygems libtokyocabinet8</pre></td></tr></table></div>

<p>あれ、これだけ？</p>
<p>deb本体を入れてみます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> msgpack_0.5.2-<span style="color: #000000;">1</span>_all.deb
<span style="color: #666666; font-style: italic;"># このあと</span>
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> msgpack
$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> kumofs_0.4.10-<span style="color: #000000;">1</span>_all.deb</pre></td></tr></table></div>

<p>試運転します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ kumo-manager <span style="color: #660033;">--usage</span>
usage: kumo-manager <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">&lt;</span>addr<span style="color: #7a0874; font-weight: bold;">&#91;</span>:<span style="color: #007800;">port</span>=<span style="color: #000000;">19700</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">&lt;</span>addr<span style="color: #7a0874; font-weight: bold;">&#91;</span>:<span style="color: #007800;">port</span>=<span style="color: #000000;">19700</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
  <span style="color: #660033;">-p</span>  <span style="color: #000000; font-weight: bold;">&lt;</span>addr<span style="color: #7a0874; font-weight: bold;">&#91;</span>:<span style="color: #007800;">port</span>=<span style="color: #000000;">19700</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #000000; font-weight: bold;">&gt;</span>   <span style="color: #660033;">--partner</span>        master-slave replication partner
  <span style="color: #660033;">-a</span>                        <span style="color: #660033;">--auto-replace</span>   <span style="color: #7a0874; font-weight: bold;">enable</span> auto replacing
  <span style="color: #660033;">-Rs</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">&gt;</span>            <span style="color: #660033;">--replace-delay</span>  delay <span style="color: #000000; font-weight: bold;">time</span> of auto replacing <span style="color: #000000; font-weight: bold;">in</span> sec.
  <span style="color: #660033;">-k</span>  <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--keepalive-interval</span>     keepalive interval <span style="color: #000000; font-weight: bold;">in</span> seconds
  <span style="color: #660033;">-Ys</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">10</span><span style="color: #000000; font-weight: bold;">&gt;</span>   <span style="color: #660033;">--connect-timeout</span>        connect timeout <span style="color: #000000; font-weight: bold;">time</span> <span style="color: #000000; font-weight: bold;">in</span> seconds
  <span style="color: #660033;">-Yn</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">4</span><span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--connect-retry-limit</span>    connect retry limit
  <span style="color: #660033;">-Ci</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--clock-interval</span>         clock interval <span style="color: #000000; font-weight: bold;">in</span> seconds
  <span style="color: #660033;">-TW</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--write-threads</span>          number of threads <span style="color: #000000; font-weight: bold;">for</span> asynchronous writing
  <span style="color: #660033;">-TR</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #007800;">number</span>=<span style="color: #000000;">8</span><span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--read-threads</span>           number of threads <span style="color: #000000; font-weight: bold;">for</span> asynchronous reading
  <span style="color: #660033;">-o</span>  <span style="color: #000000; font-weight: bold;">&lt;</span>path.log<span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--log</span>                    output logs to the <span style="color: #c20cb9; font-weight: bold;">file</span>
  <span style="color: #660033;">-g</span>  <span style="color: #000000; font-weight: bold;">&lt;</span>path.mpac<span style="color: #000000; font-weight: bold;">&gt;</span>   <span style="color: #660033;">--binary-log</span>             <span style="color: #7a0874; font-weight: bold;">enable</span> binary log
  <span style="color: #660033;">-v</span>                <span style="color: #660033;">--verbose</span>
  <span style="color: #660033;">-d</span>  <span style="color: #000000; font-weight: bold;">&lt;</span>path.pid<span style="color: #000000; font-weight: bold;">&gt;</span>    <span style="color: #660033;">--daemon</span>
&nbsp;
  v0.4.10 revision 0d4cb3a6797ce91ec8c1ee23fce6a3a1894ee618 Wed Jul <span style="color: #000000;">14</span> <span style="color: #000000;">19</span>:07:<span style="color: #000000;">35</span> <span style="color: #000000;">2010</span> +0900
&nbsp;
error: unexpected argument: <span style="color: #660033;">--usage</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> kumo-manager <span style="color: #660033;">-v</span> <span style="color: #660033;">-l</span> localhost <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">4255</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">11</span> .<span style="color: #000000; font-weight: bold;">/</span>manager<span style="color: #000000; font-weight: bold;">/</span>init.h:<span style="color: #000000;">43</span>: start manager 127.0.0.1:<span style="color: #000000;">19700</span>
&nbsp;
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> kumo-server <span style="color: #660033;">-v</span> <span style="color: #660033;">-l</span> localhost <span style="color: #660033;">-m</span> localhost <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>kumodb.tch <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">4270</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">20</span> .<span style="color: #000000; font-weight: bold;">/</span>server<span style="color: #000000; font-weight: bold;">/</span>init.h:<span style="color: #000000;">45</span>: start server 127.0.0.1:<span style="color: #000000;">19800</span>
&nbsp;
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">22</span> ..<span style="color: #000000; font-weight: bold;">/</span>rpc<span style="color: #000000; font-weight: bold;">/</span>client_tmpl.h:<span style="color: #000000;">157</span>: connecting to 127.0.0.1:<span style="color: #000000;">19700</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">22</span> ..<span style="color: #000000; font-weight: bold;">/</span>rpc<span style="color: #000000; font-weight: bold;">/</span>client_tmpl.h:<span style="color: #000000;">187</span>: connect success 127.0.0.1:<span style="color: #000000;">19700</span> fd<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">10</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">22</span> manager<span style="color: #000000; font-weight: bold;">/</span>framework.cc:<span style="color: #000000;">69</span>: new node <span style="color: #000000;">1</span> 127.0.0.1:<span style="color: #000000;">19800</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">22</span> server<span style="color: #000000; font-weight: bold;">/</span>framework.cc:<span style="color: #000000;">74</span>: new node <span style="color: #000000;">0</span> 127.0.0.1:<span style="color: #000000;">19700</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">22</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">35</span>: server connected 127.0.0.1:<span style="color: #000000;">19800</span>
&nbsp;
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ kumoctl localhost status
<span style="color: #7a0874; font-weight: bold;">hash</span> space timestamp:
  Thu Jan 01 09:00:00 +0900 <span style="color: #000000;">1970</span> clock <span style="color: #000000;">0</span>
attached node:
not attached node:
  127.0.0.1:<span style="color: #000000;">19800</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ kumoctl localhost attach
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">161</span>: update <span style="color: #7a0874; font-weight: bold;">hash</span> space at <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">173</span>: new server: 127.0.0.1:<span style="color: #000000;">19800</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">254</span>: start replace copy; <span style="color: #007800;">full</span>=<span style="color: #000000;">0</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">272</span>: active node: <span style="color: #000000;">1</span>
nil
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">189</span>: start replace copy <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">214</span>: dst active node: 127.0.0.1:<span style="color: #000000;">19800</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">218</span>: empty <span style="color: #7a0874; font-weight: bold;">hash</span> space. skip replacing.
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">386</span>: finish replace copy <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">365</span>: start replace delete <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">437</span>: start replace delete <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> server<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">459</span>: finish replace <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> manager<span style="color: #000000; font-weight: bold;">/</span>mod_replace.cc:<span style="color: #000000;">401</span>: replace finished <span style="color: #000000; font-weight: bold;">time</span><span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">5495924397745111052</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ kumoctl localhost status
<span style="color: #7a0874; font-weight: bold;">hash</span> space timestamp:
  Tue Jul <span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">35</span> +0900 <span style="color: #000000;">2010</span> clock <span style="color: #000000;">12</span>
attached node:
  127.0.0.1:<span style="color: #000000;">19800</span>  <span style="color: #7a0874; font-weight: bold;">&#40;</span>active<span style="color: #7a0874; font-weight: bold;">&#41;</span>
not attached node:
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #c20cb9; font-weight: bold;">sudo</span> kumo-gateway <span style="color: #660033;">-v</span> <span style="color: #660033;">-m</span> localhost <span style="color: #660033;">-t</span> <span style="color: #000000;">11211</span> <span style="color: #000000; font-weight: bold;">&amp;</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">3</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000;">4289</span>
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ <span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">47</span> ..<span style="color: #000000; font-weight: bold;">/</span>rpc<span style="color: #000000; font-weight: bold;">/</span>client_tmpl.h:<span style="color: #000000;">157</span>: connecting to 127.0.0.1:<span style="color: #000000;">19700</span>
<span style="color: #000000;">2010</span>-07-<span style="color: #000000;">20</span> <span style="color: #000000;">18</span>:<span style="color: #000000;">53</span>:<span style="color: #000000;">47</span> ..<span style="color: #000000; font-weight: bold;">/</span>rpc<span style="color: #000000; font-weight: bold;">/</span>client_tmpl.h:<span style="color: #000000;">187</span>: connect success 127.0.0.1:<span style="color: #000000;">19700</span> fd<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">7</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ 
u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$</pre></td></tr></table></div>

<p>動いているようですが、、、</p>
<p>ホストOSからtelnetで繋いでみましょう。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ telnet 192.168.122.71 <span style="color: #000000;">11211</span>
Trying 192.168.122.71...
Connected to 192.168.122.71.
Escape character is <span style="color: #ff0000;">'^]'</span>.
get foo
VALUE foo <span style="color: #000000;">0</span> <span style="color: #000000;">5</span>
<span style="color: #000000;">12345</span>
END
<span style="color: #000000; font-weight: bold;">set</span> hogehoge <span style="color: #000000;">0</span> <span style="color: #000000;">0</span> <span style="color: #000000;">20</span>
hogehogehogehogehoge
STORED
get hogehoge
VALUE hogehoge <span style="color: #000000;">0</span> <span style="color: #000000;">20</span>
hogehogehogehogehoge
END
<span style="color: #7a0874; font-weight: bold;">exit</span>
Connection closed by foreign host.</pre></td></tr></table></div>

<p>kumofs側へ。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">u-kondo<span style="color: #000000; font-weight: bold;">@</span>ubuntu-test01:~$ kumohash <span style="color: #660033;">-m</span> localhost assign foo
db0f3feab5c7ee0b  foo
  <span style="color: #000000;">0</span>: 127.0.0.1:<span style="color: #000000;">19800</span></pre></td></tr></table></div>

<p>ちゃんと動いているようです！</p>
<p>スクラッチビルドよりはるかに手順が少なくなりました。</p>
<h3>今後</h3>
<p>元々の目的は「沢山のサーバにいれてためしたいのに、いちいちスクラッチビルドするのは面倒。。。」と思って適当でもdeb化して社内にでも配布仕様と思っていたのですが。</p>
<ul>
<li>もっとまともに依存関係を書く</li>
<li>libmsgpack-ruby的なdebも作る。RubyのGemだとどう作るんだろう？</li>
<li>PPAに公開する方法を調べる</li>
</ul>
<p>以上を頑張れば、僕のPPAにkumofsリポジトリを公開したりすることもできますね。</p>
<h3>もっと読む（俺が）</h3>
<ul>
<li><a href="https://wiki.ubuntulinux.jp/UbuntuPackagingGuideJa">The Ubuntu Packaging Guide 日本語版</a></li>
<li><a href="http://d.hatena.ne.jp/walf443/20090616/1245111017">■[debian]Debianパッケージ構築のメモ</a></li>
<li><a href="http://www.clear-code.com/blog/2010/1/18.html">Debianパッケージの作り方と公開方法: groongaを例にして</a></li>
<li><a href="http://gihyo.jp/admin/serial/01/ubuntu-recipe/0046?page=1">Ubuntu Weekly Recipe 第46回　PPAの活用</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/20/kumofs-debuild-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/20/kumofs-debuild-on-ubuntu/" />
	</item>
		<item>
		<title>Linux Commandline Ripping &#8211; Abcde</title>
		<link>http://blog.udzura.jp/2010/07/13/linux-commandline-ripping-abcde/</link>
		<comments>http://blog.udzura.jp/2010/07/13/linux-commandline-ripping-abcde/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 12:27:36 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[＜音楽＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=511</guid>
		<description><![CDATA[A Better CD Encoder via CDRipping。
Those who want a no-nosense, fast, customizable ripping solution should try ABCDE. 
mp3エンコーディングのためには、id3v2が要るって言われました。

1
sudo aptitude install id3v2 abcde

一応、lameとかも入れた方がいいかもしれません。いや、勝手に入るのかも。既に入れてたので確認できてませんが。。。
使ってみた感じ、コマンドラインなのでわりと軽い、何より速いです。AsunderとかRubyRipperとかも試したんですけど体感速度は全然違います。
/etc/abcde.conf で細かく設定します。以下、オプション設定例。

1
2
3
4
5
6
7
8
# デフォルトの出力フォーマット
OUTPUTTYPE=mp3
# lameに渡すオプションを直接記入
LAMEOPTS=&#34;--preset studio&#34;
# ファイル出力先の書式
OUTPUTFORMAT='/home/udzura/Music/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'
# リッピング終了後に、ディスクを取り出す
EJECTCD=y

あと、普通にコマンドラインのオプションを色々渡せます。

1
abcde -o 'mp3:--preset studio' -x # for example

ヘルプをガン見すればより細かい制御もできそうだし、しばらく使ってみようかと。ちなみに /usr/bin/abcde 自体はただのシェルスクリプトですね…。
# もしかしたら、WindowsでもCygwinとかで動くんじゃないですかね？
]]></description>
			<content:encoded><![CDATA[<p><a href="http://lly.org/~rcw/abcde/page/">A Better CD Encoder</a> via <a href="https://help.ubuntu.com/community/CDRipping">CDRipping</a>。</p>
<blockquote><p>Those who want a no-nosense, fast, customizable ripping solution should try ABCDE. </p></blockquote>
<p>mp3エンコーディングのためには、id3v2が要るって言われました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> id3v2 abcde</pre></td></tr></table></div>

<p>一応、lameとかも入れた方がいいかもしれません。いや、勝手に入るのかも。既に入れてたので確認できてませんが。。。</p>
<p>使ってみた感じ、コマンドラインなのでわりと軽い、何より速いです。AsunderとかRubyRipperとかも試したんですけど体感速度は全然違います。</p>
<p>/etc/abcde.conf で細かく設定します。以下、オプション設定例。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># デフォルトの出力フォーマット</span>
<span style="color: #007800;">OUTPUTTYPE</span>=mp3
<span style="color: #666666; font-style: italic;"># lameに渡すオプションを直接記入</span>
<span style="color: #007800;">LAMEOPTS</span>=<span style="color: #ff0000;">&quot;--preset studio&quot;</span>
<span style="color: #666666; font-style: italic;"># ファイル出力先の書式</span>
<span style="color: #007800;">OUTPUTFORMAT</span>=<span style="color: #ff0000;">'/home/udzura/Music/${ARTISTFILE}/${ALBUMFILE}/${TRACKNUM} - ${TRACKFILE}'</span>
<span style="color: #666666; font-style: italic;"># リッピング終了後に、ディスクを取り出す</span>
<span style="color: #007800;">EJECTCD</span>=y</pre></td></tr></table></div>

<p>あと、普通にコマンドラインのオプションを色々渡せます。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">abcde <span style="color: #660033;">-o</span> <span style="color: #ff0000;">'mp3:--preset studio'</span> <span style="color: #660033;">-x</span> <span style="color: #666666; font-style: italic;"># for example</span></pre></td></tr></table></div>

<p>ヘルプをガン見すればより細かい制御もできそうだし、しばらく使ってみようかと。ちなみに <code>/usr/bin/abcde</code> 自体はただのシェルスクリプトですね…。</p>
<p># もしかしたら、WindowsでもCygwinとかで動くんじゃないですかね？</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/13/linux-commandline-ripping-abcde/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/13/linux-commandline-ripping-abcde/" />
	</item>
		<item>
		<title>sonydbでmp3 walkmanをコマンドライン管理（feat. xargs tips）</title>
		<link>http://blog.udzura.jp/2010/07/13/cui-walkman-manage-with-some-xargs-tips/</link>
		<comments>http://blog.udzura.jp/2010/07/13/cui-walkman-manage-with-some-xargs-tips/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:07:04 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[＜音楽＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=500</guid>
		<description><![CDATA[対象読者

Ubuntu等のデスクトップLinuxを利用している
MP3プレイヤーとしてSONYさんのMP3 Walkmanを愛用している

ということで、少なくとも僕は得をしますが、誰が得をするのかよく分からないTipsです。ワンライナーばっかりです。1行野郎最高！
あと、

xargsコマンド初心者～初級者ぐらいの方

にも、音楽とかソニー関係なく参考になると思われます。
動作確認
「NW-E026F」では、私の使用した限りでは問題なく動作することを確認しています。あくまでも公式の使い方から外れますので、自己責任でお願いします。

まず、sonydb自体のコマンドを確認しましょう

1
2
3
4
5
6
7
8
9
10
$ sonydb 
detected device /media/WALKMAN
usage...
	songs &#91;id&#93;
	songsdel &#91;id&#93;
	songsadd &#91;file&#93;
	songschk &#91;file&#93;
	plist &#91;id&#93;
	plistdel &#91;id&#93;
	plistadd &#91;file&#93;

任意のアーティスト/アルバムの曲をまとめて消す
sonydbはインストール済み、PATHの通ったところにある前提。

1
sonydb songs &#124; grep ${ARTIST_OR_ALBUM_NAME} &#124; cut -d, -f1 &#124; xargs -n1 -t sonydb songsdel

超UNIXっぽくて素敵ですね。
解説
前提として、sonydb songsdelはパラメータを一つしか取りません。なので、xargs -n1で「一つずつ」パラメータを送ってます。
grepやcutの解説は必要ないですよね……。
よく分からないときは、xargsに-tオプションを加えると実際に発行されるコマンドが分かります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ /opt/sonydb/bin/sonydb songs &#124; grep PANICSMILE &#124; cut -d, -f1 &#124; xargs -n1 -t /opt/sonydb/bin/sonydb songsdel
/opt/sonydb/bin/sonydb songsdel 0192 
Writing database files: OK
/opt/sonydb/bin/sonydb songsdel 0193 
Writing database files: [...]]]></description>
			<content:encoded><![CDATA[<h3>対象読者</h3>
<ul>
<li>Ubuntu等のデスクトップLinuxを利用している</li>
<li>MP3プレイヤーとしてSONYさんのMP3 Walkmanを愛用している</li>
</ul>
<p>ということで、少なくとも僕は得をしますが、誰が得をするのかよく分からないTipsです。ワンライナーばっかりです。1行野郎最高！</p>
<p>あと、</p>
<ul>
<li><code>xargs</code>コマンド初心者～初級者ぐらいの方</li>
</ul>
<p>にも、音楽とかソニー関係なく参考になると思われます。</p>
<h3>動作確認</h3>
<p>「NW-E026F」では、私の使用した限りでは問題なく動作することを確認しています。<strong>あくまでも公式の使い方から外れますので、自己責任でお願いします</strong>。</p>
<p><span id="more-500"></span></p>
<h3>まず、sonydb自体のコマンドを確認しましょう</h3>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ sonydb 
detected device <span style="color: #000000; font-weight: bold;">/</span>media<span style="color: #000000; font-weight: bold;">/</span>WALKMAN
usage...
	songs <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">id</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	songsdel <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">id</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	songsadd <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	songschk <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	plist <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">id</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	plistdel <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">id</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
	plistadd <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #c20cb9; font-weight: bold;">file</span><span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></td></tr></table></div>

<h3>任意のアーティスト/アルバムの曲をまとめて消す</h3>
<p>sonydbはインストール済み、PATHの通ったところにある前提。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">sonydb songs <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #800000;">${ARTIST_OR_ALBUM_NAME}</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> -d, <span style="color: #660033;">-f1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-n1</span> <span style="color: #660033;">-t</span> sonydb songsdel</pre></td></tr></table></div>

<p>超UNIXっぽくて素敵ですね。</p>
<h4>解説</h4>
<p>前提として、<code>sonydb songsdel</code>はパラメータを一つしか取りません。なので、<code>xargs -n1</code>で「一つずつ」パラメータを送ってます。</p>
<p>grepやcutの解説は必要ないですよね……。</p>
<p>よく分からないときは、<code>xargs</code>に<code>-t</code>オプションを加えると実際に発行されるコマンドが分かります。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songs <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> PANICSMILE <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">cut</span> -d, <span style="color: #660033;">-f1</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-n1</span> <span style="color: #660033;">-t</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0192 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0193 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0194 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0195 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0219 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0220 
Writing database files: OK
<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>sonydb<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>sonydb songsdel 0221 
Writing database files: OK
...</pre></td></tr></table></div>

<h3>あるフォルダにある曲をまとめて転送</h3>
<p>mp3のあるフォルダに入って、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">find</span> . <span style="color: #660033;">-name</span> <span style="color: #ff0000;">&quot;*.mp3&quot;</span> <span style="color: #660033;">-print0</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">xargs</span> <span style="color: #660033;">-n1</span> <span style="color: #660033;">-t</span> <span style="color: #660033;">-0</span> sonydb songsadd</pre></td></tr></table></div>

<h4>解説</h4>
<p>ファイル一覧を<code>xargs</code>でひとつずつ<code>sonydb songsadd</code>に流し込むだけです。のはずなんですが、多くの場合、曲名そのままファイル名にしたりしてますから、ファイル名には半角スペースが含まれてたりします。このままだと困るわけです。</p>
<p><code>find -print0</code>で、各ファイルパスを、改行ではなく0文字（null文字）でつなげて出力してくれます。それを、<code>xargs</code>の<code>-0</code>オプションで再度バラします。あとは一緒ですね。</p>
<h3>まとめ</h3>
<p><code>xargs</code>　すごく便利。あと普通の音楽クラスタはコマンドラインでmp3プレイヤーの中身を管理したりしない。</p>
<h3>参考</h3>
<p><a href="http://mattn.kaoriya.net/software/linux/20071121165107.htm">開発者さんの解説ページ</a>にインストール方法、普通の使い方など、色々詳しいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/13/cui-walkman-manage-with-some-xargs-tips/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/13/cui-walkman-manage-with-some-xargs-tips/" />
	</item>
		<item>
		<title>Nginx+Passengerで、 / と /hoge に別々のRails appをデプロイする</title>
		<link>http://blog.udzura.jp/2010/07/08/deploying-apps-on-root-and-root_hoge-each/</link>
		<comments>http://blog.udzura.jp/2010/07/08/deploying-apps-on-root-and-root_hoge-each/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 05:10:18 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=491</guid>
		<description><![CDATA[単純に /hoge と /fuga に別々のアプリケーションをdeployするのなら、話は単純で、以下のチュートリアルのとおりなんですが。

3.2. Deploying to a sub URI

問題は passenger_base_uri に「/」を指定できないこと。
方針としては、「/」のアプリケーションと「/hoge」のアプリケーションは別々のポートで配備して、かつ「/」をデプロイした側から、リバースプロキシで「/hoge」に飛ばしてあげる、という感じです。Pound辺りと組み合わせてもいいんですが、Nginxだけで完結できます。


1
2
# base_uri対応の前準備(例)
ln -s /var/www/rails-apps/hoge/public /var/www/passenger/hoge


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
http &#123;
#....
    passenger_root /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15;
    passenger_ruby /usr/bin/ruby1.8;
    server &#123; # for &#34;/&#34; setting
        listen 8080;
        server_name dev.local.udzura.jp;
  [...]]]></description>
			<content:encoded><![CDATA[<p>単純に /hoge と /fuga に別々のアプリケーションをdeployするのなら、話は単純で、以下のチュートリアルのとおりなんですが。</p>
<ul>
<li><a href="http://www.modrails.com/documentation/Users%20guide%20Nginx.html#deploying_rails_to_sub_uri">3.2. Deploying to a sub URI</a></li>
</ul>
<p>問題は <code>passenger_base_uri</code> に「/」を指定できないこと。</p>
<p>方針としては、「/」のアプリケーションと「/hoge」のアプリケーションは別々のポートで配備して、かつ「/」をデプロイした側から、リバースプロキシで「/hoge」に飛ばしてあげる、という感じです。<a href="http://www.apsis.ch/pound/">Pound</a>辺りと組み合わせてもいいんですが、Nginxだけで完結できます。</p>
<p><span id="more-491"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># base_uri対応の前準備(例)</span>
<span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>rails-apps<span style="color: #000000; font-weight: bold;">/</span>hoge<span style="color: #000000; font-weight: bold;">/</span>public <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>passenger<span style="color: #000000; font-weight: bold;">/</span>hoge</pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">http <span style="color: #7a0874; font-weight: bold;">&#123;</span>
<span style="color: #666666; font-style: italic;">#....</span>
    passenger_root <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>passenger-2.2.15;
    passenger_ruby <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>ruby1.8;
    server <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #666666; font-style: italic;"># for &quot;/&quot; setting</span>
        listen <span style="color: #000000;">8080</span>;
        server_name dev.local.udzura.jp;
        passenger_enabled on;
        rails_env production;
        root <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>rails-apps<span style="color: #000000; font-weight: bold;">/</span>root-app<span style="color: #000000; font-weight: bold;">/</span>public;
        error_page  <span style="color: #000000;">404</span>              <span style="color: #000000; font-weight: bold;">/</span>404.html;
        error_page  <span style="color: #000000;">500</span> <span style="color: #000000;">502</span> <span style="color: #000000;">503</span> <span style="color: #000000;">504</span>  <span style="color: #000000; font-weight: bold;">/</span>error.html;
        location <span style="color: #000000; font-weight: bold;">/</span>hoge <span style="color: #7a0874; font-weight: bold;">&#123;</span>
            proxy_set_header X-Real-IP  <span style="color: #007800;">$remote_addr</span>;
            proxy_set_header Host <span style="color: #007800;">$host</span>:<span style="color: #007800;">$server_port</span>;
            <span style="color: #666666; font-style: italic;"># その他、継承したいヘッダーを追加</span>
            proxy_pass http:<span style="color: #000000; font-weight: bold;">//</span>127.0.0.1:<span style="color: #000000;">8081</span><span style="color: #000000; font-weight: bold;">/</span>hoge;
        <span style="color: #7a0874; font-weight: bold;">&#125;</span>
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
    server <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #666666; font-style: italic;"># for &quot;/hoge&quot; setting</span>
        listen <span style="color: #000000;">8081</span>;
        server_name dev.local.udzura.jp;
        <span style="color: #666666; font-style: italic;"># 8081番ポートへの直接アクセスを禁止</span>
        allow 127.0.0.1;
        deny  all;
        passenger_enabled on;
        rails_env production;
        root <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>www<span style="color: #000000; font-weight: bold;">/</span>passenger;
        passenger_base_uri <span style="color: #000000; font-weight: bold;">/</span>hoge;
        error_page  <span style="color: #000000;">404</span>              <span style="color: #000000; font-weight: bold;">/</span>hoge<span style="color: #000000; font-weight: bold;">/</span>404.html;
        error_page  <span style="color: #000000;">500</span> <span style="color: #000000;">502</span> <span style="color: #000000;">503</span> <span style="color: #000000;">504</span>  <span style="color: #000000; font-weight: bold;">/</span>hoge<span style="color: #000000; font-weight: bold;">/</span>500.html;
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #666666; font-style: italic;">#....</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>これで、「/」と「/hoge」とでは別のアプリケーションを参照してくれます。</p>
<h3>参考</h3>
<ul>
<li><a href="http://wiki.nginx.org/NginxHttpProxyModule">NginxHttpProxyModule</a></li>
<li><a href="http://www.modrails.com/documentation/Users%20guide%20Nginx.html#_configuring_phusion_passenger">Configuring Phusion Passenger</a></li>
<li><a href="http://wiki.nginx.org/NginxHttpCoreModule#Variables">使用可能な変数</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/08/deploying-apps-on-root-and-root_hoge-each/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/08/deploying-apps-on-root-and-root_hoge-each/" />
	</item>
		<item>
		<title>らいぶよていめも</title>
		<link>http://blog.udzura.jp/2010/07/07/live-memo-on0828/</link>
		<comments>http://blog.udzura.jp/2010/07/07/live-memo-on0828/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 10:01:36 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[PostFolk]]></category>
		<category><![CDATA[＜音楽＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=489</guid>
		<description><![CDATA[埋火公式より（http://uzumibi.jp/live.html）。下の方です。

●８月２８日（土）＠東京 三軒茶屋グレープフルーツムーン
OPEN18:30/START19:00 adv￥2000/door?2300(1D)
ACT▼
スティーブジャクソン
mmm
フジワラサトシ
yoru

埋火とmmm見たいんですけど、こんな先のライブ忘れてしまうに決まってるので、ブログにメモしときます。
グレープフルーツムーンも興味ある～
]]></description>
			<content:encoded><![CDATA[<p>埋火公式より（<a href="http://uzumibi.jp/live.html">http://uzumibi.jp/live.html</a>）。下の方です。</p>
<blockquote><p>
●８月２８日（土）＠東京 三軒茶屋グレープフルーツムーン<br />
OPEN18:30/START19:00 adv￥2000/door?2300(1D)</p>
<p>ACT▼<br />
スティーブジャクソン<br />
mmm<br />
フジワラサトシ<br />
yoru
</p></blockquote>
<p>埋火とmmm見たいんですけど、こんな先のライブ忘れてしまうに決まってるので、ブログにメモしときます。</p>
<p>グレープフルーツムーンも興味ある～</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/07/live-memo-on0828/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/07/live-memo-on0828/" />
	</item>
		<item>
		<title>Ubuntuに、passenger-install-nginx-moduleした</title>
		<link>http://blog.udzura.jp/2010/07/06/passenger-install-nginx-module-on-ubuntu/</link>
		<comments>http://blog.udzura.jp/2010/07/06/passenger-install-nginx-module-on-ubuntu/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 03:26:33 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=485</guid>
		<description><![CDATA[Ubuntuは、aptitudeでNginxが入るんだけど、Passenger対応しているわけではない。ビルド時に指定しないとPassengerのモジュールが組み込まれないから。
以下は、passenger対応させた上でinitスクリプトの登録までする手順。

１．ビルド＋インストール
gem経由でpassengerを入れる

1
sudo gem install passenger

passenger-install-nginx-moduleする。依存するパッケージは、apacheの時と比べて多くない。C++コンパイラぐらい。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sudo passenger-install-nginx-module
&#160;
... # 以下が依存関係。通らないときは頑張って入れること
 * GNU C++ compiler... found at /usr/bin/g++
 * Ruby development headers... found
 * OpenSSL support for Ruby... found
 * RubyGems... found
 * Rake... found at /usr/bin/rake
 * rack... found
 * OpenSSL development headers... found
 * Zlib development headers... found
...
&#160;
Enter your choice &#40;1 or 2&#41; or press Ctrl-C to [...]]]></description>
			<content:encoded><![CDATA[<p>Ubuntuは、aptitudeでNginxが入るんだけど、Passenger対応しているわけではない。ビルド時に指定しないとPassengerのモジュールが組み込まれないから。</p>
<p>以下は、passenger対応させた上でinitスクリプトの登録までする手順。</p>
<p><span id="more-485"></span></p>
<h3>１．ビルド＋インストール</h3>
<p>gem経由でpassengerを入れる</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> passenger</pre></td></tr></table></div>

<p>passenger-install-nginx-moduleする。依存するパッケージは、apacheの時と比べて多くない。C++コンパイラぐらい。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> passenger-install-nginx-module
&nbsp;
... <span style="color: #666666; font-style: italic;"># 以下が依存関係。通らないときは頑張って入れること</span>
 <span style="color: #000000; font-weight: bold;">*</span> GNU C++ compiler... found at <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">g++</span>
 <span style="color: #000000; font-weight: bold;">*</span> Ruby development headers... found
 <span style="color: #000000; font-weight: bold;">*</span> OpenSSL support <span style="color: #000000; font-weight: bold;">for</span> Ruby... found
 <span style="color: #000000; font-weight: bold;">*</span> RubyGems... found
 <span style="color: #000000; font-weight: bold;">*</span> Rake... found at <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>rake
 <span style="color: #000000; font-weight: bold;">*</span> rack... found
 <span style="color: #000000; font-weight: bold;">*</span> OpenSSL development headers... found
 <span style="color: #000000; font-weight: bold;">*</span> Zlib development headers... found
...
&nbsp;
Enter your choice <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span> or <span style="color: #000000;">2</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> or press Ctrl-C to abort: <span style="color: #666666; font-style: italic;">#=&gt; 1</span>
...
&nbsp;
Please specify a prefix directory <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #7a0874; font-weight: bold;">&#93;</span>: <span style="color: #666666; font-style: italic;">#=&gt; デフォルトのままでいいでしょう</span>
...
&nbsp;
<span style="color: #660033;">--------------------------------------------</span>
&nbsp;
Nginx with Passenger support was successfully installed.
...</pre></td></tr></table></div>

<h3>２．コンフィギュアー</h3>
<p>以下を設定する。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>gedit<span style="color: #000000; font-weight: bold;">|</span><span style="color: #c20cb9; font-weight: bold;">vi</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>nginx.conf</pre></td></tr></table></div>


<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;">...
# init script的に必要なのでpid fileを指定
pid /var/run/nginx.pid<span style="color: #666666; font-style: italic;">;</span>
&nbsp;
# passenger_root 等は最初から設定済みになっている
...
# 
server <span style="">&#123;</span>
  listen <span style="">8080</span><span style="color: #666666; font-style: italic;">;</span>
  server_name dev.local.udzura.jp<span style="color: #666666; font-style: italic;">;</span>
  # publicを指定してね
  root /var/www/dev-app/public<span style="color: #666666; font-style: italic;">;</span>
  passenger_enabled on<span style="color: #666666; font-style: italic;">;</span>
  # 必要であれば
  rails_env development<span style="color: #666666; font-style: italic;">;</span>
  #rails_env production<span style="color: #666666; font-style: italic;">;</span>
  ...
  # tips: error_page とかも指定しとくとそれっぽい
<span style="">&#125;</span></pre></div></div>

<h3>３．イニット・スクリプトの作成</h3>
<ul>
<li><a href="http://wiki.nginx.org/Nginx-init-ubuntu">Ubuntu Nginx Init Script Nginx-init-ubuntu </a></li>
</ul>
<p>以上のサイトをコピペし、 <code>/etc/init.d/nginx-passenger</code> に保存しましょう。</p>
<p>変更箇所：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">...
<span style="color: #007800;">DAEMON</span>=<span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nginx
...
<span style="color: #007800;">NGINX_CONF_FILE</span>=<span style="color: #ff0000;">&quot;/opt/nginx/conf/nginx.conf&quot;</span>
...
<span style="color: #666666; font-style: italic;"># 万一、あなたがaptで入れたgemのバージョンをアップデートして、</span>
<span style="color: #666666; font-style: italic;"># そのせいで「gemが見つからない」とか言われてRailsが起動しない場合は、</span>
<span style="color: #666666; font-style: italic;"># 以下の魔法の一行で解決する可能性があります。</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">GEM_HOME</span>=<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span>
...</pre></div></div>

<p>そして、</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> a+x <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>nginx-passenger
<span style="color: #c20cb9; font-weight: bold;">sudo</span> update-rc.d <span style="color: #660033;">-f</span> nginx-passenger defaults</pre></td></tr></table></div>

<p>あと、ディレクトリ構成がDebianっぽくないので、そこは好みで自分で設定しましょう。</p>
<p>以上です。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/06/passenger-install-nginx-module-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/06/passenger-install-nginx-module-on-ubuntu/" />
	</item>
		<item>
		<title>[Ruby]timeoutを使うときは、明示的にTimeout::Errorを捕捉しなければならない</title>
		<link>http://blog.udzura.jp/2010/07/01/ruby-timeout-tips/</link>
		<comments>http://blog.udzura.jp/2010/07/01/ruby-timeout-tips/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 06:47:17 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=480</guid>
		<description><![CDATA[
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
require 'timeout'
require 'net/http'
&#160;
begin
  #raise RuntimeError
  timeout&#40;0.5&#41; do
    Net::HTTP.get&#40;&#34;twitter.com&#34;, &#34;/hyper/heavy/page&#34;, 80&#41;
  end
rescue =&#62; e
  puts &#34;generic exception!&#34;
  puts e.class, e.message
rescue Timeout::Error =&#62; e
  puts &#34;timeout!&#34;
  puts e.class, e.message
end

コメントそのまま

timeout!
Timeout::Error
execution expired


コメントを外すと

generic exception!
RuntimeError
RuntimeError


参考

http://www.ruby-lang.org/ja/man/html/TimeoutError.html（親クラスがInterruptな件）
http://blog.goo.ne.jp/j_adversaria/e/0ad829ee8a1b313c73c5320987f98326

]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'timeout'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/http'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">begin</span>
  <span style="color:#008000; font-style:italic;">#raise RuntimeError</span>
  timeout<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">0.5</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;twitter.com&quot;</span>, <span style="color:#996600;">&quot;/hyper/heavy/page&quot;</span>, <span style="color:#006666;">80</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> e
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;generic exception!&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> e.<span style="color:#9966CC; font-weight:bold;">class</span>, e.<span style="color:#9900CC;">message</span>
<span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#6666ff; font-weight:bold;">Timeout::Error</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> e
  <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;timeout!&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">puts</span> e.<span style="color:#9966CC; font-weight:bold;">class</span>, e.<span style="color:#9900CC;">message</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<h3>コメントそのまま</h3>
<blockquote><pre>
timeout!
Timeout::Error
execution expired
</pre>
</blockquote>
<h3>コメントを外すと</h3>
<blockquote><pre>
generic exception!
RuntimeError
RuntimeError
</pre>
</blockquote>
<h3>参考</h3>
<ul>
<li><a href="http://www.ruby-lang.org/ja/man/html/TimeoutError.html">http://www.ruby-lang.org/ja/man/html/TimeoutError.html</a>（親クラスが<strong>Interrupt</strong>な件）</li>
<li><a href="http://blog.goo.ne.jp/j_adversaria/e/0ad829ee8a1b313c73c5320987f98326">http://blog.goo.ne.jp/j_adversaria/e/0ad829ee8a1b313c73c5320987f98326</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/01/ruby-timeout-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/01/ruby-timeout-tips/" />
	</item>
		<item>
		<title>37signals、クックパッド、プローモーション</title>
		<link>http://blog.udzura.jp/2010/07/01/37signals-cookpad-promo/</link>
		<comments>http://blog.udzura.jp/2010/07/01/37signals-cookpad-promo/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 03:24:18 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[＜Web Watch＞]]></category>
		<category><![CDATA[＜雑＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=392</guid>
		<description><![CDATA[# タイトルは相変わらず釣りっぽいですが、
最近ようやく「Getting Real」日本語訳を通読した。
個人的に、日本の企業「クックパッド」と37signalsとの間には多くの共通点を感じられるので、興味を持ってウォッチしているのだけれど。今回、ふと気になったのが、「リリース」に関する2社の考え方の微妙な違い。

もしアプリが森の中でリリースされ、そこに人がいなかったとしても、評判を呼ぶでしょうか？ここで言いたいのは、あらかじめ宣伝をしないでアプリをリリースしても、人々は知ってくれないということです。
評判と期待を起こすのに、ハリウッド式に１）発表・ティーザー、２）試写会・プレビュー、３）リリースといきましょう。


Getting Real


無言実行: 公開前にサービスについての説明をしない
サービスを言葉で説明することができない
公開前に事前告知しない(リニューアルときも事前告知しなかったとのこと、事前告知するメリットはあまりないとのこと)


クックパッドのものづくり三原則

どっちが正しいか？　というよりは、どっちがあなたのウェブサービスにとって最適か？　ということなのかな～と思うし、実は本質はそんなに違わないのだろう。
クックパッドはそもそも、

500万だかのユーザーを抱えている
そのユーザーが「何を求めているか」を理解している

という前提があってサービスをリリースするので、この条件なら確かに、事前告知はリソースを使う割にはメリットは無いと思われる。というか、「告知や宣伝をするな」ということではなく、「告知や宣伝をしなくても自然と使いたくなるサービスにしろ」っていう意味での「無言実行」なんじゃないかな～と感じた。
逆に、Getting Realで語られているプロモーションは、ゼロベースでサービスを広める際の手段だと思う。Basecampあたりのリリースを念頭に置いた書き方じゃないかな。特に会社自体が立ち上がりで、ブランディング効果もないならば尚更。なにより、ハリウッドに倣ったと書いてあるけれど、「２）試写会・プレビュー」ってのが大事なんだろう。これも、「一回使ってもらえれば自然とまた使いたくなるサービスにしろ」ということだと理解した。ただ広めるだけじゃなくて、ファンになってもらえる工夫をすべきなんだね。
まとめると、

中身をまず固める（足元重要）
喧伝ではなく「ファンになってもらう」方に重点を

以上を踏まえて、個人的な行動指針としては、「事後」というのはどうだろう？　と思った。

参考: 「もっとプレスリリースを出せばいいのに」——｢BlurHighlight｣岩本流攻めのアプローチ (1/2)

ウェブサービスを「動くものがすでにある」状態にしとくのは大事だと思った。ベータ2とかRCぐらいからプレスリリースを出してみる、とか。
＊　＊　＊
モノを作ったたからには、使ってもらいたいけれど、どうすればベストなの？　と言うお話。少なくとも僕は「良いものならほっといても広まるよ～」とは全然思えないので、色々考えたり動いたりしたいと思う。
]]></description>
			<content:encoded><![CDATA[<p># タイトルは相変わらず釣りっぽいですが、</p>
<p>最近ようやく「<a href="http://gettingreal.37signals.com/GR_jpn.php">Getting Real</a>」日本語訳を通読した。</p>
<p>個人的に、日本の企業「<a href="http://cookpad.com/">クックパッド</a>」と<a href="http://37signals.com/">37signals</a>との間には多くの共通点を感じられるので、興味を持ってウォッチしているのだけれど。今回、ふと気になったのが、「リリース」に関する2社の考え方の微妙な違い。</p>
<blockquote><p>
もしアプリが森の中でリリースされ、そこに人がいなかったとしても、評判を呼ぶでしょうか？<strong>ここで言いたいのは、あらかじめ宣伝をしないでアプリをリリースしても、人々は知ってくれない</strong>ということです。</p>
<p>評判と期待を起こすのに、ハリウッド式に１）発表・ティーザー、２）試写会・プレビュー、３）リリースといきましょう。
</p></blockquote>
<ul>
<li><a href="http://gettingreal.37signals.com/GR_jpn.php#ch13">Getting Real</a></li>
</ul>
<blockquote><p>
無言実行: 公開前にサービスについての説明をしない</p>
<p>サービスを言葉で説明することができない</p>
<p>公開前に事前告知しない(リニューアルときも事前告知しなかったとのこと、<strong>事前告知するメリットはあまりない</strong>とのこと)
</p></blockquote>
<ul>
<li><a href="http://www.sssg.org/blogs/naoya/archives/1126">クックパッドのものづくり三原則</a></li>
</ul>
<p>どっちが正しいか？　というよりは、どっちがあなたのウェブサービスにとって最適か？　ということなのかな～と思うし、実は本質はそんなに違わないのだろう。</p>
<p>クックパッドはそもそも、</p>
<ul>
<li>500万だかのユーザーを抱えている</li>
<li>そのユーザーが「何を求めているか」を理解している</li>
</ul>
<p>という前提があってサービスをリリースするので、この条件なら確かに、事前告知はリソースを使う割にはメリットは無いと思われる。というか、「告知や宣伝をするな」ということではなく、<strong>「告知や宣伝をしなくても自然と使いたくなるサービスにしろ」っていう意味での「無言実行」</strong>なんじゃないかな～と感じた。</p>
<p>逆に、Getting Realで語られているプロモーションは、ゼロベースでサービスを広める際の手段だと思う。Basecampあたりのリリースを念頭に置いた書き方じゃないかな。特に会社自体が立ち上がりで、ブランディング効果もないならば尚更。なにより、ハリウッドに倣ったと書いてあるけれど、<strong>「２）試写会・プレビュー」</strong>ってのが大事なんだろう。これも、<strong>「一回使ってもらえれば自然とまた使いたくなるサービスにしろ」ということ</strong>だと理解した。ただ広めるだけじゃなくて、ファンになってもらえる工夫をすべきなんだね。</p>
<p>まとめると、</p>
<ul>
<li>中身をまず固める（足元重要）</li>
<li>喧伝ではなく「ファンになってもらう」方に重点を</li>
</ul>
<p>以上を踏まえて、個人的な行動指針としては、「事後」というのはどうだろう？　と思った。</p>
<ul>
<li>参考: <a href="http://bizmakoto.jp/bizid/articles/0808/08/news007.html">「もっとプレスリリースを出せばいいのに」——｢BlurHighlight｣岩本流攻めのアプローチ (1/2)</a></li>
</ul>
<p>ウェブサービスを「動くものがすでにある」状態にしとくのは大事だと思った。ベータ2とかRCぐらいからプレスリリースを出してみる、とか。</p>
<h3>＊　＊　＊</h3>
<p>モノを作ったたからには、使ってもらいたいけれど、どうすればベストなの？　と言うお話。少なくとも僕は「良いものならほっといても広まるよ～」とは全然思えないので、色々考えたり動いたりしたいと思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/07/01/37signals-cookpad-promo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/07/01/37signals-cookpad-promo/" />
	</item>
		<item>
		<title>僕とデータベーススペシャリストと勉強法</title>
		<link>http://blog.udzura.jp/2010/06/29/study-tips-for-db/</link>
		<comments>http://blog.udzura.jp/2010/06/29/study-tips-for-db/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 11:44:06 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[DataBase]]></category>
		<category><![CDATA[勉強記録]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=463</guid>
		<description><![CDATA[2010年4月に実施された、データベーススペシャリスト試験に合格しました。
いやまあ、未だに「採点ミス？　隣の人の答案じゃないの？」　とか疑ってたりもするんですが（w　さすがに普通に合格したと思います。今回は、DBスペシャリストを目指す皆様のため、私がやってきた勉強の記録を（僭越ながら、さらに言うとうろ覚えながら）列挙してみます。

10月～11月半ば

数年単位の大きな目標をでっち上げる
「応用情報」試験終了の帰りに、参考書を買う
データベースそもそもについての知見を蓄える。僕は『楽々ERDレッスン』を買った

最初の「でっち上げる」ってところなんですが、僕はそもそも「XXXX年までにシステムアーキテクトとDBスペシャリストを取って、足元を固めておく」というゴールを打ち立てて勉強していたんですね。なので、応用情報に関しては、去年10月の時点で落ちていても受かっていても、その次の4月はDBスペシャリストを受けよう、と決めていました。ということで、応用情報の試験から開放されてすぐ次の試験に取りかかったのは自然なことだったんですね。
こういう大きな目標を立てるメリットの一つとして、「資格を目標ではなく手段の中に組み込みやすくなる」ということがあるのかな、と思います。「試験に合格する」ではなく「足元を固める」、というところを念頭に置くということです。
3つ目の項目のような動きもその流れで始めました。
で、これって特にDBスペシャリスト固有のtipsなんですけど、あの試験はDB設計と事例分析が配点の多くを占めます。DB設計って、別に試験のためだけの技術じゃないですし、一般の設計ノウハウ本を読んでおくことはものすごい為になった気がします。試験のための設計と実業務の設計はむろん違いますが、ことDB回りに関しては基本的な考えは一緒（具体的にはとにかく正規化）かな、と。

	
	楽々ERDレッスン (CodeZine BOOKS)
	著者／訳者：(株)スターロジック 羽生 章洋
	出版社：翔泳社( 2006-04-18 )
	単行本 ( 240 ページ )

この本は、そのへんの「理想」と「実務」のバランスがすごくよく取れていて、また実際の例に即して（レッスンなので）設計手順を解説してますんで、業務経験を補うという意味でも勧めます。発行年は古いですけど、その間にRDBMSの考え方が劇的に変化したわけじゃないですから。僕にとっては充分役立ちました。
11月後半～

早期に、「範囲全体」の見渡しをする
見渡したら、最初に過去問第に「体当たり」し、「ショック」を受ける

全体を見渡す、というのは、基本情報を受け始めたときからの癖なんですけど、そもそも全体のゴールが分かっていないとモチベーションが保ちにくいこと、範囲が区切られているとはいえ、各分野は結局どこかでつながっていること、以上2点からまず全体像を把握することを勧めたいと思います。
応用情報ぐらい範囲が広いと逆に辛いかもしれませんが。。。でも、高度試験は特に、各分野が密接に関連しているわけですから。僕は一ヶ月ぐらいで参考書の全範囲を一通り読みました。
ポイントとしては、この「素読み」の段階では、別に問題を解かなくても、着実に一項目ずつ進めなくてもいいということです。マジで意味不明だったら飛ばせばいいという話です。そもそもこの時点で4ヶ月以上残ってるので定着には充分余裕があります。早い段階で全体が見渡せれば、余裕が生まれます。
それに、僕はSQLはほとんど勉強してないです。実務だけで充分な知識がついていたようです。こういう得意不得意が見えてくる、というのも全体を見渡すメリットですね。
で、全部見終わってから一旦実際に出た問題に飛び込んでみる。それも、午前から通しで解くのをお勧めします。
「実問題を解く」のが大事で、上記の得意不得意の分析というのもそうですが、多くの場合、実はそれ以前の問題で、そもそも解ける訳ないんですよね。全体が見えても定着してないんですから。「まだ解けない」という事実を体で理解しましょう。でも、分からないなりに考えてみるのが大事です。
この早期失敗の擬似体験は、試験であがいてみる感じをつかむということと、全体を見渡せたからと言って安心してしまわないようにすること、の二つが大きな狙いです。

	
	情報処理教科書 データベーススペシャリスト 2010年度版 (CD-ROM付)
	著者／訳者：松田 幹子 山下 真吾 三好康 之 
	出版社：翔泳社( 2009-09-18 )
	単行本（ソフトカバー） ( 576 ページ )

僕は素直に、翔泳社の教科書シリーズをメインに使いました。皆さんは2011年度版ですね。。
12月後半～

午前問題はとっとと潰す、そして時間を取られ過ぎない
午後1を脚元固めする

一度一通り解いてみて、ようやく問題を解きまくるフェーズに入るわけですが……。
情報処理の高度試験では、一番大事なのは「午後1」です。午後2は、午後1が完璧に出来ればその知識とコツで解けます。ただ、午前2はちょっと範囲が違ったりするんで（DBスペシャリストなら、セキュリティやネットワークの問題も出てくる）、専用の対策が必要になります。
そうは言ってもあくまでメインディッシュは午後1です。午前2はぶっちゃけ同じ問題を使いまわしているので、ちゃんと対策すれば数週間で8割は安定して取れるようになるでしょう。そうしたら、もう対策は要りません。6割でいいんですから。むろん、直前にもう一度解いてみるのはアリですが、時間を掛けすぎる必要は全然無いですよね。
あと、午前1を受けざるを得ない状況の人は、いっそ思い切って応用情報技術者を取りましょう。午前1の問題範囲は、DBとほとんどかぶらない一般的な内容で（というか、全高度系試験共通）、ここを対策するのは結構な負担です。それならば、どうせ多くの試験は1年に一度しか受けられないのですし、秋の時間で応用情報の浅くとも広い知識を押さえた方がいいんじゃないでしょうか。応用情報処理資格取得者は午前1免除です。これは大きいということです。
午前2が安定してきたら、午後1の対策に入りましょう。まずは無心で、3～4年分の過去問を解いてください。
1月～

午後1のパターンに慣れる
午後2からも逃げ出さない

午後1を3～4年分解けば、以下の事実に気づくと思います。つまり、パターンがあるよね、と。

事例分析（これは第何正規形？とかをしつこく尋ねる）
DB設計（E-R図とかを書かせる）
SQL（穴埋めとかスクラッチとか）
何だか訳の分からないことをさせる問題（インデックスとかリカバリとか）

これ、午後1が4問だったころのパターンなんですけど、3問になってからをふりかえって、2009年度は「1, 2, 3」、今年は「1, 2, 4」でしたね。パターンがまったく無になったということは無いです。
4はDBというか、多分旧アプリケーションエンジニアやシステムアーキテクト的なセンスが要る感じがするんで、ちょっと対策し辛い気がします。1、2、3は対策すれば結果が返ってくる問題形式です。DBスペシャリスト独特の変な作図も慣れればつっかえない程度には書けるようになります（はず。。。）。
過去問は4問時代のものをやるウェイトが増えるでしょうけど、中問1つあたり30分を切る、を目標に頑張りましょう。
同時に、午後2も少しずつ問題を解いていきましょう。何せ全然形式が違うし、大問一つ解くという形式も慣れが必要ですから。理想は午後1は6~8年分、午後2も5年分はやっておきたいところ。
3月～

ちゃんと、使いやすい問題集を買う。資料や書籍をケチらない
毎日何かする


	
	データベーススペシャリスト「専門知識+午後問題」の重点対策〈2010〉 (情報処理技術者試験対策書)
	著者／訳者：山本 森樹
	出版社：アイテック( 2009-12 )
	単行本 ( 506 ページ )

翔泳社の教科書もよかったんですけど、過去問がPDFだったりしたので、印刷とかいろいろ面倒でした。なので、思い切って、改めて問題集を買いました。
この問題集は、午後1、午後2がテーマごとに固まっていて、僕の勉強法では使いやすかったです。特に午後2、印刷したペラペラのハンドアウトでやるのは辛い。。。冊子がいいです。
3月ぐらいになるともう基本知識を一から付けようとか無理なんですが。でも、ちょっとずつでも毎日何かを積み上げましょう。小手先な知識を少しでも付けるのはすごく大事です。59点は不合格ですが60点は合格です。
そして何より、毎日何かしてきた、という実績を積むことで、本試験での精神的余裕が生まれます。
あとは……対策しても落ちる時は落ちます（w　対策不足だ～とかクヨクヨしてても意味ないです。どうせ数年掛けて取るつもり、と割り切って、本試験では余裕の態度で受けましょう。
全体のふりかえり
Keep

「しないこと」を決めたのはよかった。午前問題はもうやらない、とか
全体を最初に見通したのは、プレッシャーの軽減につながった気がした
勉強の目的は「合格＝３」：「知識、知見の取得＝７」の割合で

何だかんだで範囲が広いですから、優先順位を付けましょう。午前問題は後半はほとんどやりませんでした（直前ぐらい）。　この「やらない」って勇気が要りますが、実際午前2が100点でも65点ぐらいでも通過点は通過点なのですから……。大事なこと、よりハードなことにリソースを集中させるべきです。
全体を見渡すことの重要性は、前述の通り。
あと、「知識の足元固めをする」方でモチベーションをコントロールすべきなんですが、そうはいっても「資格を得る」ってでかいですし、何より合格すると気持ちいいですよね（w　合格のための小手先の技も積極的に身につけましょう。でもそっちに走りすぎても目的がブレます。なので、３：７。
Problem

最初から飛ばしすぎて、後半息切れした感がある
「何もしてない」期間がちょっと出てしまった

この二点は密接で、3月頭とかは息切れでほとんど何もしていなかった気がします。。。
継続性とか習慣性が大事な気がします。あと、建て直し。一週間ぐらいサボっても平気な顔で学習継続のループに戻っていけるといいですね。再起動を恐れないというか。
ダメループを自分の意志で断つのには気合が要りますが、重要です。何でもいいから再開してみる、例えば午後2の対策がとっくに終わっていても、とりあえず午後2を久しぶりに解いてみる、とかそういうのがコツでしょうか。
Try

自覚的なモチベーションコントロール
論文対策をする
進捗をメモ程度のものでも記録する
「直前対策勉強会」的なものに一回は行ってみる？

試験対策って要するに勉強なんですけど。でも、何のために資格という形で一つの体系立った知識を勉強するかっていうと、勉強したこと業務とキャリアに生かしたいからですよね。何が言いたいかというと、くどい感じですけど、僕等の仕事は勉強が日々の業務で、日々の業務が勉強だと思うんです。
資格勉強で覚えた正規化理論を仕事で使ったり、逆に実務経験で覚えたSQLで点を稼いだり、そういう感じだと思うんです。
勉強の自己目的化は一番避けたいことだ。
モチベーションコントロールというか、「何のために？」「どうやって？」「何を？」っていうのを念頭に置きつづけることが、最大のパフォーマンスを出すコツなのかなと思います。5W1H(2H)って大事ですけど、僕はその中でも「What」「How」「Why」が特に大事で、後ろに行くほどより大事、そう思っています。
精神論臭くなってしまいましたが。。。
一応常々気をつけてはいますけれど、この辺のモチベーションコントロールに自覚的になりたいんですよね。2010年度SA試験は、そこが一番のTryになると思ってます。
あとのTryは細々としたものですが、「論文」はいままで受けたことのない形式なので普通にチャレンジで、あと進捗記録も、前回はここはいい加減だったのでやってみたいということ。
それから、せっかく対策している人はたくさん居るんですから、同じ目的の人たちでなんらかの人のつながりを作れたらな～とも思います。論文対策勉強会とか、ちゃんと調べて行ってみたいです。
＊　＊　＊
うまくまとめられた気がしないし、参考になるのかはなはだ不明瞭ですが書いてみました。ぼちぼちと直すかもしれません。
取り急ぎ、右サイドバーに「バーンダウンチャート」が出現しています。。。どうなることやら。
]]></description>
			<content:encoded><![CDATA[<p>2010年4月に実施された、データベーススペシャリスト試験に合格しました。</p>
<p>いやまあ、未だに「採点ミス？　隣の人の答案じゃないの？」　とか疑ってたりもするんですが（w　さすがに普通に合格したと思います。今回は、DBスペシャリストを目指す皆様のため、私がやってきた勉強の記録を（僭越ながら、さらに言うとうろ覚えながら）列挙してみます。</p>
<p><span id="more-463"></span></p>
<h3>10月～11月半ば</h3>
<ul style="font-weight:bold;">
<li>数年単位の大きな目標をでっち上げる</li>
<li>「応用情報」試験終了の帰りに、参考書を買う</li>
<li>データベースそもそもについての知見を蓄える。僕は『楽々ERDレッスン』を買った</li>
</ul>
<p>最初の「でっち上げる」ってところなんですが、僕はそもそも<strong>「XXXX年までにシステムアーキテクトとDBスペシャリストを取って、足元を固めておく」というゴールを打ち立てて勉強していた</strong>んですね。なので、応用情報に関しては、去年10月の時点で落ちていても受かっていても、その次の4月はDBスペシャリストを受けよう、と決めていました。ということで、応用情報の試験から開放されてすぐ次の試験に取りかかったのは自然なことだったんですね。</p>
<p>こういう大きな目標を立てるメリットの一つとして、「資格を目標ではなく手段の中に組み込みやすくなる」ということがあるのかな、と思います。<strong>「試験に合格する」ではなく「足元を固める」、というところを念頭に置く</strong>ということです。</p>
<p>3つ目の項目のような動きもその流れで始めました。</p>
<p>で、これって特にDBスペシャリスト固有のtipsなんですけど、あの試験はDB設計と事例分析が配点の多くを占めます。DB設計って、別に試験のためだけの技術じゃないですし、一般の設計ノウハウ本を読んでおくことはものすごい為になった気がします。試験のための設計と実業務の設計はむろん違いますが、ことDB回りに関しては基本的な考えは一緒（具体的にはとにかく正規化）かな、と。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E6%A5%BD%E3%80%85ERD%E3%83%AC%E3%83%83%E3%82%B9%E3%83%B3-CodeZine-BOOKS-%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF-%E7%BE%BD%E7%94%9F/dp/4798110663%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798110663"><img src="http://ecx.images-amazon.com/images/I/513Y4RJ7R8L._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E6%A5%BD%E3%80%85ERD%E3%83%AC%E3%83%83%E3%82%B9%E3%83%B3-CodeZine-BOOKS-%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF-%E7%BE%BD%E7%94%9F/dp/4798110663%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798110663">楽々ERDレッスン (CodeZine BOOKS)</a></p>
	<p><em>著者／訳者：</em>(株)スターロジック 羽生 章洋</p>
	<p><em>出版社：</em>翔泳社( 2006-04-18 )</p>
	<p>単行本 ( 240 ページ )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>この本は、そのへんの「理想」と「実務」のバランスがすごくよく取れていて、また実際の例に即して（レッスンなので）設計手順を解説してますんで、業務経験を補うという意味でも勧めます。発行年は古いですけど、その間にRDBMSの考え方が劇的に変化したわけじゃないですから。僕にとっては充分役立ちました。</p>
<h3>11月後半～</h3>
<ul style="font-weight:bold;">
<li>早期に、「範囲全体」の見渡しをする</li>
<li>見渡したら、最初に過去問第に「体当たり」し、「ショック」を受ける</li>
</ul>
<p>全体を見渡す、というのは、基本情報を受け始めたときからの癖なんですけど、そもそも全体のゴールが分かっていないとモチベーションが保ちにくいこと、範囲が区切られているとはいえ、各分野は結局どこかでつながっていること、以上2点からまず全体像を把握することを勧めたいと思います。</p>
<p>応用情報ぐらい範囲が広いと逆に辛いかもしれませんが。。。でも、高度試験は特に、各分野が密接に関連しているわけですから。僕は一ヶ月ぐらいで参考書の全範囲を一通り読みました。</p>
<p>ポイントとしては、この「素読み」の段階では、<strong>別に問題を解かなくても、着実に一項目ずつ進めなくてもいい</strong>ということです。マジで意味不明だったら飛ばせばいいという話です。そもそもこの時点で4ヶ月以上残ってるので定着には充分余裕があります。<strong>早い段階で全体が見渡せれば、余裕が生まれます。</strong></p>
<p>それに、僕はSQLはほとんど勉強してないです。実務だけで充分な知識がついていたようです。こういう得意不得意が見えてくる、というのも全体を見渡すメリットですね。</p>
<p>で、全部見終わってから一旦実際に出た問題に飛び込んでみる。それも、午前から通しで解くのをお勧めします。</p>
<p>「実問題を解く」のが大事で、上記の得意不得意の分析というのもそうですが、多くの場合、実はそれ以前の問題で、<strong>そもそも解ける訳ない</strong>んですよね。全体が見えても定着してないんですから。「まだ解けない」という事実を体で理解しましょう。でも、分からないなりに考えてみるのが大事です。</p>
<p>この<strong>早期失敗</strong>の擬似体験は、試験であがいてみる感じをつかむということと、全体を見渡せたからと言って安心してしまわないようにすること、の二つが大きな狙いです。</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AA%E3%82%B9%E3%83%88-2010%E5%B9%B4%E5%BA%A6%E7%89%88-CD-ROM%E4%BB%98-%E6%9D%BE%E7%94%B0/dp/4798120448%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798120448"><img src="http://ecx.images-amazon.com/images/I/51fIdAe4HOL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AA%E3%82%B9%E3%83%88-2010%E5%B9%B4%E5%BA%A6%E7%89%88-CD-ROM%E4%BB%98-%E6%9D%BE%E7%94%B0/dp/4798120448%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798120448">情報処理教科書 データベーススペシャリスト 2010年度版 (CD-ROM付)</a></p>
	<p><em>著者／訳者：</em>松田 幹子 山下 真吾 三好康 之 </p>
	<p><em>出版社：</em>翔泳社( 2009-09-18 )</p>
	<p>単行本（ソフトカバー） ( 576 ページ )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>僕は素直に、翔泳社の教科書シリーズをメインに使いました。皆さんは2011年度版ですね。。</p>
<h3>12月後半～</h3>
<ul style="font-weight:bold;">
<li>午前問題はとっとと潰す、そして時間を取られ過ぎない</li>
<li>午後1を脚元固めする</li>
</ul>
<p>一度一通り解いてみて、ようやく問題を解きまくるフェーズに入るわけですが……。</p>
<p>情報処理の高度試験では、<strong>一番大事なのは「午後1」です</strong>。午後2は、午後1が完璧に出来ればその知識とコツで解けます。ただ、午前2はちょっと範囲が違ったりするんで（DBスペシャリストなら、セキュリティやネットワークの問題も出てくる）、専用の対策が必要になります。</p>
<p>そうは言ってもあくまでメインディッシュは午後1です。午前2はぶっちゃけ同じ問題を使いまわしているので、ちゃんと対策すれば数週間で8割は安定して取れるようになるでしょう。そうしたら、もう対策は<strong>要りません</strong>。<strong>6割でいい</strong>んですから。むろん、直前にもう一度解いてみるのはアリですが、時間を掛けすぎる必要は全然無いですよね。</p>
<p>あと、午前1を受けざるを得ない状況の人は、<strong>いっそ思い切って応用情報技術者を取りましょう</strong>。午前1の問題範囲は、DBとほとんどかぶらない一般的な内容で（というか、全高度系試験共通）、ここを対策するのは結構な負担です。それならば、どうせ多くの試験は1年に一度しか受けられないのですし、秋の時間で応用情報の浅くとも広い知識を押さえた方がいいんじゃないでしょうか。応用情報処理資格取得者は午前1免除です。これは大きいということです。</p>
<p>午前2が安定してきたら、午後1の対策に入りましょう。<strong>まずは無心</strong>で、3～4年分の過去問を解いてください。</p>
<h3>1月～</h3>
<ul style="font-weight:bold;">
<li>午後1のパターンに慣れる</li>
<li>午後2からも逃げ出さない</li>
</ul>
<p>午後1を3～4年分解けば、以下の事実に気づくと思います。つまり、パターンがあるよね、と。</p>
<ol>
<li>事例分析（これは第何正規形？とかをしつこく尋ねる）</li>
<li>DB設計（E-R図とかを書かせる）</li>
<li>SQL（穴埋めとかスクラッチとか）</li>
<li>何だか訳の分からないことをさせる問題（インデックスとかリカバリとか）</li>
</ol>
<p>これ、午後1が4問だったころのパターンなんですけど、3問になってからをふりかえって、2009年度は<strong>「1, 2, 3」</strong>、今年は<strong>「1, 2, 4」</strong>でしたね。<strong>パターンがまったく無になったということは無い</strong>です。</p>
<p>4はDBというか、多分旧アプリケーションエンジニアやシステムアーキテクト的なセンスが要る感じがするんで、ちょっと対策し辛い気がします。<strong>1、2、3は対策すれば結果が返ってくる問題形式です</strong>。DBスペシャリスト独特の変な作図も慣れればつっかえない程度には書けるようになります（はず。。。）。</p>
<p>過去問は4問時代のものをやるウェイトが増えるでしょうけど、中問1つあたり30分を切る、を目標に頑張りましょう。</p>
<p>同時に、午後2も少しずつ問題を解いていきましょう。何せ全然形式が違うし、大問一つ解くという形式も慣れが必要ですから。理想は午後1は6~8年分、午後2も5年分はやっておきたいところ。</p>
<h3>3月～</h3>
<ul style="font-weight:bold;">
<li>ちゃんと、使いやすい問題集を買う。資料や書籍をケチらない</li>
<li>毎日何かする</li>
</ul>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AA%E3%82%B9%E3%83%88%E3%80%8C%E5%B0%82%E9%96%80%E7%9F%A5%E8%AD%98-%E5%8D%88%E5%BE%8C%E5%95%8F%E9%A1%8C%E3%80%8D%E3%81%AE%E9%87%8D%E7%82%B9%E5%AF%BE%E7%AD%96%E3%80%882010%E3%80%89-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93%E5%AF%BE%E7%AD%96%E6%9B%B8-%E5%B1%B1%E6%9C%AC-%E6%A3%AE%E6%A8%B9/dp/4872687949%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4872687949"><img src="http://ecx.images-amazon.com/images/I/51MpH2w5jzL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%B9%E3%83%9A%E3%82%B7%E3%83%A3%E3%83%AA%E3%82%B9%E3%83%88%E3%80%8C%E5%B0%82%E9%96%80%E7%9F%A5%E8%AD%98-%E5%8D%88%E5%BE%8C%E5%95%8F%E9%A1%8C%E3%80%8D%E3%81%AE%E9%87%8D%E7%82%B9%E5%AF%BE%E7%AD%96%E3%80%882010%E3%80%89-%E6%83%85%E5%A0%B1%E5%87%A6%E7%90%86%E6%8A%80%E8%A1%93%E8%80%85%E8%A9%A6%E9%A8%93%E5%AF%BE%E7%AD%96%E6%9B%B8-%E5%B1%B1%E6%9C%AC-%E6%A3%AE%E6%A8%B9/dp/4872687949%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4872687949">データベーススペシャリスト「専門知識+午後問題」の重点対策〈2010〉 (情報処理技術者試験対策書)</a></p>
	<p><em>著者／訳者：</em>山本 森樹</p>
	<p><em>出版社：</em>アイテック( 2009-12 )</p>
	<p>単行本 ( 506 ページ )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>翔泳社の教科書もよかったんですけど、過去問がPDFだったりしたので、印刷とかいろいろ面倒でした。なので、思い切って、改めて問題集を買いました。</p>
<p>この問題集は、午後1、午後2がテーマごとに固まっていて、僕の勉強法では使いやすかったです。特に午後2、印刷したペラペラのハンドアウトでやるのは辛い。。。冊子がいいです。</p>
<p>3月ぐらいになるともう基本知識を一から付けようとか無理なんですが。でも、ちょっとずつでも毎日何かを積み上げましょう。小手先な知識を少しでも付けるのはすごく大事です。<strong>59点は不合格ですが60点は合格です</strong>。</p>
<p>そして何より、毎日何かしてきた、という実績を積むことで、本試験での精神的余裕が生まれます。</p>
<p>あとは……対策しても落ちる時は落ちます（w　対策不足だ～とかクヨクヨしてても意味ないです。どうせ数年掛けて取るつもり、と割り切って、本試験では余裕の態度で受けましょう。</p>
<h3>全体のふりかえり</h3>
<h4>Keep</h4>
<ul style="font-weight:bold;">
<li>「しないこと」を決めたのはよかった。午前問題はもうやらない、とか</li>
<li>全体を最初に見通したのは、プレッシャーの軽減につながった気がした</li>
<li>勉強の目的は「合格＝３」：「知識、知見の取得＝７」の割合で</li>
</ul>
<p>何だかんだで範囲が広いですから、優先順位を付けましょう。午前問題は後半はほとんどやりませんでした（直前ぐらい）。　この「やらない」って勇気が要りますが、実際午前2が100点でも65点ぐらいでも通過点は通過点なのですから……。大事なこと、よりハードなことにリソースを集中させるべきです。</p>
<p>全体を見渡すことの重要性は、前述の通り。</p>
<p>あと、「知識の足元固めをする」方でモチベーションをコントロールすべきなんですが、そうはいっても「資格を得る」ってでかいですし、何より合格すると気持ちいいですよね（w　合格のための小手先の技も積極的に身につけましょう。でもそっちに走りすぎても目的がブレます。なので、３：７。</p>
<h4>Problem</h4>
<ul style="font-weight:bold;">
<li>最初から飛ばしすぎて、後半息切れした感がある</li>
<li>「何もしてない」期間がちょっと出てしまった</li>
</ul>
<p>この二点は密接で、3月頭とかは息切れでほとんど何もしていなかった気がします。。。</p>
<p>継続性とか習慣性が大事な気がします。あと、建て直し。一週間ぐらいサボっても平気な顔で学習継続のループに戻っていけるといいですね。再起動を恐れないというか。</p>
<p>ダメループを自分の意志で断つのには気合が要りますが、重要です。<strong>何でもいいから再開してみる</strong>、例えば午後2の対策がとっくに終わっていても、とりあえず午後2を久しぶりに解いてみる、とかそういうのがコツでしょうか。</p>
<h4>Try</h4>
<ul style="font-weight:bold;">
<li>自覚的なモチベーションコントロール</li>
<li>論文対策をする</li>
<li>進捗をメモ程度のものでも記録する</li>
<li>「直前対策勉強会」的なものに一回は行ってみる？</li>
</ul>
<p>試験対策って要するに勉強なんですけど。でも、何のために資格という形で一つの体系立った知識を勉強するかっていうと、<strong>勉強したこと業務とキャリアに生かしたい</strong>からですよね。何が言いたいかというと、くどい感じですけど、僕等の仕事は勉強が日々の業務で、日々の業務が勉強だと思うんです。</p>
<p>資格勉強で覚えた正規化理論を仕事で使ったり、逆に実務経験で覚えたSQLで点を稼いだり、そういう感じだと思うんです。</p>
<p>勉強の自己目的化は一番避けたいことだ。</p>
<p>モチベーションコントロールというか、「何のために？」「どうやって？」「何を？」っていうのを念頭に置きつづけることが、最大のパフォーマンスを出すコツなのかなと思います。5W1H(2H)って大事ですけど、僕はその中でも<strong>「What」「How」「Why」が特に大事で、後ろに行くほどより大事</strong>、そう思っています。</p>
<p>精神論臭くなってしまいましたが。。。</p>
<p>一応常々気をつけてはいますけれど、この辺のモチベーションコントロールに自覚的になりたいんですよね。2010年度SA試験は、そこが一番のTryになると思ってます。</p>
<p>あとのTryは細々としたものですが、「論文」はいままで受けたことのない形式なので普通にチャレンジで、あと進捗記録も、前回はここはいい加減だったのでやってみたいということ。</p>
<p>それから、せっかく対策している人はたくさん居るんですから、同じ目的の人たちでなんらかの人のつながりを作れたらな～とも思います。論文対策勉強会とか、ちゃんと調べて行ってみたいです。</p>
<h3>＊　＊　＊</h3>
<p>うまくまとめられた気がしないし、参考になるのかはなはだ不明瞭ですが書いてみました。ぼちぼちと直すかもしれません。</p>
<p>取り急ぎ、右サイドバーに「バーンダウンチャート」が出現しています。。。どうなることやら。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/06/29/study-tips-for-db/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/06/29/study-tips-for-db/" />
	</item>
		<item>
		<title>生きてます＠～2010-06-19</title>
		<link>http://blog.udzura.jp/2010/06/19/daily-since-2010-06-19/</link>
		<comments>http://blog.udzura.jp/2010/06/19/daily-since-2010-06-19/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 01:10:23 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[＜本＞]]></category>
		<category><![CDATA[＜雑＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=457</guid>
		<description><![CDATA[すっかり梅雨まっただなかです。皆様の部屋の異臭はいかがでしょうか？　僕は元気です。
読んだりしたりした：


	
	間宮兄弟 [DVD]
	販売元：角川エンタテインメント( 2008-10-24 )
	時間：119 分
	1 枚組 ( DVD )

女性に縁がないといろいろなこと全部キョドっちゃうよね～って思った。ね～とか他人事だけどこれは現在の自分だった。あれっ？　あと沢尻エリカが（ry　むしろこの作品の沢尻エリカ的なビヘイビアをする女子が普通、と思わないと（ry

	
	ショコラ [DVD]
	販売元：アスミック( 2009-06-19 )
	時間：121 分
	1 枚組 ( DVD )

素直におもしろかったし、どうせみんな言ってると思うけれどチョコレートがおいしそうでした。カカオにチリを入れるのって柿の種にチョコレートまぶすのと一緒だよね。アレ僕は地味に好きですよ。ジョニーデップ！

	
	チェブラーシカ [DVD]
	販売元：ウォルト・ディズニー・ジャパン株式会社( 2008-11-21 )
	時間：70 分
	1 枚組 ( DVD )

キリル文字ってかわいらしいですね。スパシーバ！
＊　＊　＊
他にも見たんだけど、特に何見たとか記録してないから思い出せないよ～
あと感想を書いていない小説類が大量にあって、すっかり読書クラスタですね、やった
]]></description>
			<content:encoded><![CDATA[<p>すっかり梅雨まっただなかです。皆様の部屋の異臭はいかがでしょうか？　僕は元気です。</p>
<p>読んだりしたりした：</p>
<p><span id="more-457"></span></p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E9%96%93%E5%AE%AE%E5%85%84%E5%BC%9F-DVD-%E6%A3%AE%E7%94%B0%E8%8A%B3%E5%85%89/dp/B001DSSKK0%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DSSKK0"><img src="http://ecx.images-amazon.com/images/I/31wdTKrPXcL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E9%96%93%E5%AE%AE%E5%85%84%E5%BC%9F-DVD-%E6%A3%AE%E7%94%B0%E8%8A%B3%E5%85%89/dp/B001DSSKK0%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001DSSKK0">間宮兄弟 [DVD]</a></p>
	<p><em>販売元：</em>角川エンタテインメント( 2008-10-24 )</p>
	<p><em>時間：</em>119 分</p>
	<p>1 枚組 ( DVD )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>女性に縁がないといろいろなこと全部キョドっちゃうよね～って思った。ね～とか他人事だけどこれは現在の自分だった。あれっ？　あと沢尻エリカが（ry　むしろこの作品の沢尻エリカ的なビヘイビアをする女子が普通、と思わないと（ry</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%82%B7%E3%83%A7%E3%82%B3%E3%83%A9-DVD-%E3%83%A9%E3%83%83%E3%82%BB%E3%83%BB%E3%83%8F%E3%83%AB%E3%82%B9%E3%83%88%E3%83%AC%E3%83%A0/dp/B0021ZMHMG%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0021ZMHMG"><img src="http://ecx.images-amazon.com/images/I/51uS042dbcL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%82%B7%E3%83%A7%E3%82%B3%E3%83%A9-DVD-%E3%83%A9%E3%83%83%E3%82%BB%E3%83%BB%E3%83%8F%E3%83%AB%E3%82%B9%E3%83%88%E3%83%AC%E3%83%A0/dp/B0021ZMHMG%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB0021ZMHMG">ショコラ [DVD]</a></p>
	<p><em>販売元：</em>アスミック( 2009-06-19 )</p>
	<p><em>時間：</em>121 分</p>
	<p>1 枚組 ( DVD )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>素直におもしろかったし、どうせみんな言ってると思うけれどチョコレートがおいしそうでした。カカオにチリを入れるのって柿の種にチョコレートまぶすのと一緒だよね。アレ僕は地味に好きですよ。ジョニーデップ！</p>
<div class="tmkm-amazon-view">
	<p><a href="http://www.amazon.co.jp/%E3%83%81%E3%82%A7%E3%83%96%E3%83%A9%E3%83%BC%E3%82%B7%E3%82%AB-DVD-%E3%83%AD%E3%83%9E%E3%83%B3%E3%83%BB%E3%82%AB%E3%83%81%E3%83%A3%E3%83%BC%E3%83%8E%E3%83%95/dp/B001FWIT6O%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001FWIT6O"><img src="http://ecx.images-amazon.com/images/I/41tQ2eH0uWL._SL160_.jpg" border="0" alt="" /></a></p>
	<p><a href="http://www.amazon.co.jp/%E3%83%81%E3%82%A7%E3%83%96%E3%83%A9%E3%83%BC%E3%82%B7%E3%82%AB-DVD-%E3%83%AD%E3%83%9E%E3%83%B3%E3%83%BB%E3%82%AB%E3%83%81%E3%83%A3%E3%83%BC%E3%83%8E%E3%83%95/dp/B001FWIT6O%3FSubscriptionId%3DAKIAI2SE5CBGHF3E5T4Q%26tag%3Dudzura1984-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB001FWIT6O">チェブラーシカ [DVD]</a></p>
	<p><em>販売元：</em>ウォルト・ディズニー・ジャパン株式会社( 2008-11-21 )</p>
	<p><em>時間：</em>70 分</p>
	<p>1 枚組 ( DVD )</p>
<hr class="tmkm-amazon-clear" /></div>
<p>キリル文字ってかわいらしいですね。スパシーバ！</p>
<h3>＊　＊　＊</h3>
<p>他にも見たんだけど、特に何見たとか記録してないから思い出せないよ～</p>
<p>あと感想を書いていない小説類が大量にあって、すっかり読書クラスタですね、やった</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/06/19/daily-since-2010-06-19/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/06/19/daily-since-2010-06-19/" />
	</item>
	</channel>
</rss>
