<?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>ディスコ探偵冬景色 &#187; ＜未分類＞</title>
	<atom:link href="http://blog.udzura.jp/categories/non-genre/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/categories/non-genre/feed/" />
		<item>
		<title>Webアプリのユーザ別にサブドメインを作りたいとかそういう話</title>
		<link>http://blog.udzura.jp/2010/05/29/create-one-subdomain-per-user/</link>
		<comments>http://blog.udzura.jp/2010/05/29/create-one-subdomain-per-user/#comments</comments>
		<pubDate>Sat, 29 May 2010 10:33:59 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[＜未分類＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=416</guid>
		<description><![CDATA[何するの
udzura.myudzura.com にアクセスした時はudzuraのマイページが、hoge.myudzura.com にアクセスした時はhogeのマイページが出るように、とかそういうことがしたい。
こうするの？

あらかじめ、 *.myudzura.com へのアクセスは一つのサーバに向かうようにする。

DNS のサブドメイン設定でワイルドカードを使う。

でも、今回はローカルで試したいので /etc/hosts に書いてしまった。
環境は Apache + Passenger。そう、mod_rewriteを使う。
Ubuntu Lucidで素直に「sudo aptitude install libapache2-mod-passenger」した（なんか、Karmic以前とパッケージ名も依存関係も変わってるような。。）
Railsでskel + generate controller + routes.rb等微調整して、 /etc/apache2/sites-available/default-passenger は最終的に以下のように。

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
&#60;VirtualHost *:80&#62;
	ServerAdmin udzura@udzura.jp
&#160;
	DocumentRoot /home/u-kondo/dev2/mypager/public
	&#60;Directory /&#62;
		Options FollowSymLinks
		AllowOverride All
	&#60;/Directory&#62;
	&#60;Directory /home/u-kondo/dev2/mypager/public/&#62;
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	&#60;/Directory&#62;
&#160;
	ErrorLog /var/log/apache2/passenger-error.log
&#160;
	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel debug
&#160;
	CustomLog /var/log/apache2/passenger-access.log combined
&#160;
	# rewrite conf
	RewriteEngine	On
	RewriteLog	&#34;/var/log/apache2/rewrite.log&#34;
&#160;
	RewriteCond	%{HTTP_HOST}		^(.*)\.myudzura\.com$
	RewriteRule	^(.*)$			$1?user=%1		[NS]
&#60;/VirtualHost&#62;

経緯
はじめ、RewriteCondでのマッチ結果は%1～%9で取れる、ということは分かったものの、クエリを追加するのに試行錯誤していた。
何回もRewrite条件にマッチしないように [NS] と言うフラグを指定する。

RewriteRule	^(.*)$			$1?user=%1		[NS]

これだけだと、その他のQuery [...]]]></description>
			<content:encoded><![CDATA[<h3>何するの</h3>
<p>udzura.myudzura.com にアクセスした時はudzuraのマイページが、hoge.myudzura.com にアクセスした時はhogeのマイページが出るように、とかそういうことがしたい。</p>
<h3>こうするの？</h3>
<p><span id="more-416"></span></p>
<p>あらかじめ、 *.myudzura.com へのアクセスは一つのサーバに向かうようにする。</p>
<ul>
<li><a href="http://blog.je-pu-pu.jp/archives/682">DNS のサブドメイン設定でワイルドカードを使う。</a></li>
</ul>
<p>でも、今回はローカルで試したいので /etc/hosts に書いてしまった。</p>
<p>環境は Apache + Passenger。そう、mod_rewriteを使う。</p>
<p>Ubuntu Lucidで素直に「<code>sudo aptitude install libapache2-mod-passenger</code>」した（なんか、Karmic以前とパッケージ名も依存関係も変わってるような。。）</p>
<p>Railsでskel + generate controller + routes.rb等微調整して、 /etc/apache2/sites-available/default-passenger は最終的に以下のように。</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
</pre></td><td class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">VirtualHost</span> *:<span style="color: #ff0000;">80</span>&gt;
	<span style="color: #00007f;">ServerAdmin</span> udzura@udzura.jp
&nbsp;
	<span style="color: #00007f;">DocumentRoot</span> /home/u-kondo/dev2/mypager/public
	&lt;<span style="color: #000000; font-weight:bold;">Directory</span> /&gt;
		<span style="color: #00007f;">Options</span> <span style="color: #0000ff;">FollowSymLinks</span>
		<span style="color: #00007f;">AllowOverride</span> <span style="color: #00007f;">All</span>
	&lt;/<span style="color: #000000; font-weight:bold;">Directory</span>&gt;
	&lt;<span style="color: #000000; font-weight:bold;">Directory</span> /home/u-kondo/dev2/mypager/public/&gt;
		<span style="color: #00007f;">Options</span> <span style="color: #0000ff;">Indexes</span> <span style="color: #0000ff;">FollowSymLinks</span> MultiViews
		<span style="color: #00007f;">AllowOverride</span> <span style="color: #00007f;">All</span>
		<span style="color: #00007f;">Order</span> <span style="color: #00007f;">allow</span>,<span style="color: #00007f;">deny</span>
		<span style="color: #00007f;">allow</span> <span style="color: #00007f;">from</span> <span style="color: #00007f;">all</span>
	&lt;/<span style="color: #000000; font-weight:bold;">Directory</span>&gt;
&nbsp;
	<span style="color: #00007f;">ErrorLog</span> /var/log/apache2/passenger-error.log
&nbsp;
	<span style="color: #adadad; font-style: italic;"># Possible values include: debug, info, notice, warn, error, crit,</span>
	<span style="color: #adadad; font-style: italic;"># alert, emerg.</span>
	<span style="color: #00007f;">LogLevel</span> debug
&nbsp;
	<span style="color: #00007f;">CustomLog</span> /var/log/apache2/passenger-access.log combined
&nbsp;
	<span style="color: #adadad; font-style: italic;"># rewrite conf</span>
	<span style="color: #00007f;">RewriteEngine</span>	<span style="color: #0000ff;">On</span>
	<span style="color: #00007f;">RewriteLog</span>	<span style="color: #7f007f;">&quot;/var/log/apache2/rewrite.log&quot;</span>
&nbsp;
	<span style="color: #00007f;">RewriteCond</span>	%{HTTP_HOST}		^(.*)\.myudzura\.com$
	<span style="color: #00007f;">RewriteRule</span>	^(.*)$			$<span style="color: #ff0000;">1</span>?<span style="color: #00007f;">user</span>=%1		[NS]
&lt;/<span style="color: #000000; font-weight:bold;">VirtualHost</span>&gt;</pre></td></tr></table></div>

<h3>経緯</h3>
<p>はじめ、RewriteCondでのマッチ結果は%1～%9で取れる、ということは分かったものの、クエリを追加するのに試行錯誤していた。</p>
<p>何回もRewrite条件にマッチしないように <strong>[NS]</strong> と言うフラグを指定する。</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">RewriteRule</span>	^(.*)$			$<span style="color: #ff0000;">1</span>?<span style="color: #00007f;">user</span>=%1		[NS]</pre></div></div>

<p>これだけだと、その他のQuery Stringが消えてしまう。 <strong>[QSA]</strong> と言うフラグが必要。（<a href="http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%A5%E9%A5%B0">参考サイト</a>）</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">RewriteRule</span>	^(.*)$			$<span style="color: #ff0000;">1</span>?<span style="color: #00007f;">user</span>=%1		[QSA,NS]</pre></div></div>

<p>でも、逆にこれでは、ブラウザで「user=hogehoge」としてしまえば、せっかくホスト名から得た情報が上書きされてしまうのだ。</p>
<p>[E=Env:Var] と言うフラグで環境変数に指定出来るらしいし、そうすれば書き換えられない、と思ったら、<strong>一度設定されたら再起動されるまでずっと変化しない</strong>、、、これはCGI時代には有効だったんだろうけど、今日びのアーキテクチャでは困る。</p>
<p>考えられる対策は二つ。</p>
<ul>
<li>あえてQSAを外し、各パラメータはPATH側に含まれるようroutes.rbを設定する（<code>map.mypage_foo_bar 'mypage/:foo/:bar'</code> みたいなの）</li>
<li>上書き可能なことを仕様にする。</li>
</ul>
<p>後者はセキュリティとかどうなんだという感じもする（例えば、自分のページのつもりで他人のページを編集できるような セキュリティホールの原因にならないか）。</p>
<p>あと、そもそもRailsなら、</p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;">  request.<span style="color:#9900CC;">host</span></pre></div></div>

<p>で HTTP_HOST が取得できるじゃないか！　って途中で気づいたので、filterとかでそこを見て振り分ければいいのではないか。でもね、mod_rewriteの方が絶対高速だもの。。</p>
<h3>結論</h3>
<ul>
<li><a href="http://japache.infoscience.co.jp/japanese_1_3_6/manual/mod/mod_rewrite.html">Module mod_rewrite URL Rewriting Engine</a> を機会があれば熟読しておくと、幸せになれる可能性が上がる</li>
<li>そもそもmod_rewriteの設定で遊びまくってアプリケーション側開発の時間が。。。ってのは本末転倒だと思う</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/05/29/create-one-subdomain-per-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/05/29/create-one-subdomain-per-user/" />
	</item>
		<item>
		<title>*.hamlをまとめて*.htmlにするRakefileつくった</title>
		<link>http://blog.udzura.jp/2009/12/18/rake-convert-haml-to-html/</link>
		<comments>http://blog.udzura.jp/2009/12/18/rake-convert-haml-to-html/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 06:41:41 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[＜未分類＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=204</guid>
		<description><![CDATA[Rakefileの書き方の練習も兼ねて。


udzura&#8217;s haml-rakefile at master &#8211; GitHub


インストール
1ファイル入れるだけなので、wgetでいいです。

1
2
cd /your/web/root/
wget http://github.com/udzura/haml-rakefile/raw/master/Rakefile

依存
もちろん、rakeとhamlに依存しますので、gemでもaptitudeでもyumでもいいので入れてください。
あと、ロールバック機能を使いたい際は、html2hamlがhpricotに依存します。ので、別途入れてください。
使い方
あなたが大量にhamlを用意したディレクトリのルートで、

1
rake convert

これで、sassも含めてまとめて変換します。また。ディレクトリをさかのぼって変換します。
hamlに戻したいときは、

1
rake rollback

詳細

1
rake -T


1
2
3
4
5
6
7
rake convert           # convert haml/sass
rake convert:asciidoc  # convert asciidoc (beta)
rake convert:haml      # convert haml only
rake convert:sass      # convert sass only
rake rollback          # rollback converted html/css into haml/sass
rake rollback:haml     # rollback converted htmls into haml
rake rollback:sass     # rollback converted css into sass

試験的に、asciidocの変換もサポートしてます。未検証ですが。。
感想
Rakefileの書き方は想像の10倍簡単だったので、皆さんもちょっとした作業をrakeで実施するといいと思います。
]]></description>
			<content:encoded><![CDATA[<p>Rakefileの書き方の練習も兼ねて。</p>
<ul>
<li>
<a href="http://github.com/udzura/haml-rakefile">udzura&#8217;s haml-rakefile at master &#8211; GitHub</a>
</li>
</ul>
<h3>インストール</h3>
<p>1ファイル入れるだけなので、wgetでいいです。</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: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>your<span style="color: #000000; font-weight: bold;">/</span>web<span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">wget</span> http:<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>haml-rakefile<span style="color: #000000; font-weight: bold;">/</span>raw<span style="color: #000000; font-weight: bold;">/</span>master<span style="color: #000000; font-weight: bold;">/</span>Rakefile</pre></td></tr></table></div>

<h3>依存</h3>
<p>もちろん、rakeとhamlに依存しますので、gemでもaptitudeでもyumでもいいので入れてください。</p>
<p>あと、ロールバック機能を使いたい際は、<code>html2haml</code>がhpricotに依存します。ので、別途入れてください。</p>
<h3>使い方</h3>
<p>あなたが大量にhamlを用意したディレクトリのルートで、</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 convert</pre></td></tr></table></div>

<p>これで、sassも含めてまとめて変換します。また。ディレクトリをさかのぼって変換します。</p>
<p>hamlに戻したいときは、</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 rollback</pre></td></tr></table></div>

<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;">rake <span style="color: #660033;">-T</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">rake convert           <span style="color: #666666; font-style: italic;"># convert haml/sass</span>
rake convert:asciidoc  <span style="color: #666666; font-style: italic;"># convert asciidoc (beta)</span>
rake convert:haml      <span style="color: #666666; font-style: italic;"># convert haml only</span>
rake convert:sass      <span style="color: #666666; font-style: italic;"># convert sass only</span>
rake rollback          <span style="color: #666666; font-style: italic;"># rollback converted html/css into haml/sass</span>
rake rollback:haml     <span style="color: #666666; font-style: italic;"># rollback converted htmls into haml</span>
rake rollback:sass     <span style="color: #666666; font-style: italic;"># rollback converted css into sass</span></pre></td></tr></table></div>

<p>試験的に、asciidocの変換もサポートしてます。未検証ですが。。</p>
<h3>感想</h3>
<p>Rakefileの書き方は想像の10倍簡単だったので、皆さんもちょっとした作業をrakeで実施するといいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2009/12/18/rake-convert-haml-to-html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2009/12/18/rake-convert-haml-to-html/" />
	</item>
	</channel>
</rss>
