<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xml:lang="ja">
	<channel>
		<title>只今Ruby勉強中</title>
		<link>http://rubyist.g.hatena.ne.jp/gaba/</link>
		<description>只今Ruby勉強中</description>
		<dc:creator>gaba</dc:creator>


		<item>
			<title> テンポラリファイルを開いて hogefuga してリネームするようなコード</title>
			<link>http://rubyist.g.hatena.ne.jp/gaba/20090417/1239960379</link>

			<description><![CDATA[
		<div class="section">
			<p>こんなの書いたんですが。</p>
<pre class="syntax-highlight">
name = <span class="synSpecial">&quot;</span><span class="synConstant">loveneweb.txt</span><span class="synSpecial">&quot;</span>

newfile = <span class="synIdentifier">File</span>.open(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, <span class="synSpecial">&quot;</span><span class="synConstant">w</span><span class="synSpecial">&quot;</span>)
<span class="synIdentifier">File</span>.open(name).each <span class="synStatement">do</span> |<span class="synIdentifier">line</span>|
   newfile.puts line
<span class="synStatement">end</span>
newfile.close
<span class="synIdentifier">File</span>.rename(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, name)
</pre>

			<p>Windows で動かなかった。</p>
<pre>
hoge.rb:8:in `rename&#39;: Permission denied - loveneweb.txt.tmp or loveneweb.txt (Errno::EACCES) from hoge.rb:8
</pre>

			<p>ファイルをちゃんと閉じてないのが原因っぽい。ブロック終了時に <a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/close">close</a> してみた。</p>
<pre class="syntax-highlight">
name = <span class="synSpecial">&quot;</span><span class="synConstant">loveneweb.txt</span><span class="synSpecial">&quot;</span>

newfile = <span class="synIdentifier">File</span>.open(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, <span class="synSpecial">&quot;</span><span class="synConstant">w</span><span class="synSpecial">&quot;</span>)
<span class="synIdentifier">File</span>.open(name).each <span class="synStatement">do</span> |<span class="synIdentifier">line</span>|
   newfile.puts line
<span class="synStatement">end</span>.close
newfile.close
<span class="synIdentifier">File</span>.rename(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, name)
</pre>

			<p>動いた。けどなんかダサいよね…。ブロックを別にしてみた。</p>
<pre class="syntax-highlight">
name = <span class="synSpecial">&quot;</span><span class="synConstant">loveneweb.txt</span><span class="synSpecial">&quot;</span>

newfile = <span class="synIdentifier">File</span>.open(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, <span class="synSpecial">&quot;</span><span class="synConstant">w</span><span class="synSpecial">&quot;</span>)
<span class="synIdentifier">File</span>.open(name) <span class="synStatement">do</span> |<span class="synIdentifier">f</span>|
   f.each <span class="synStatement">do</span> |<span class="synIdentifier">line</span>|
      newfile.puts line
   <span class="synStatement">end</span>
<span class="synStatement">end</span>
newfile.close
<span class="synIdentifier">File</span>.rename(name + <span class="synSpecial">&quot;</span><span class="synConstant">.tmp</span><span class="synSpecial">&quot;</span>, name)
</pre>

			<p>動いた。</p>
			<p>ブロックが終わったら自動でクローズされるって聞いていたのですが、最初の例、これは <a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/linux">linux</a> なんですが、ここの <a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/each">each</a> do <a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/end">end</a> はブロックにあてはまらないのでしょうか。ファイルシステムのお話に広がっちゃうんでしょうかね。難しい事は良く分からん。</p>
		</div>
]]></description>

			<dc:creator>gaba</dc:creator>

			<pubDate>Fri, 17 Apr 2009 09:26:19 GMT</pubDate>



		</item>

		<item>
			<title> rails での has_and_belongs_to_many</title>
			<link>http://rubyist.g.hatena.ne.jp/gaba/20081105/1225881216</link>

			<description><![CDATA[
		<div class="section">
			<p>SQLite なんですが、<a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/find">find</a> が遅くてたまらん事になってしまった。素敵なやり方をご存知の方は、是非教えてもらえると嬉しいです。</p>
			<p>User っていうモデルと Group っていうモデルがあって、has_and_belongs_to_many でつながってる状態。User 数は1万件、Group 数は60件。で、User の中から特定の Group に所属してる User の一覧を作りたいんですが…。</p>
			<p>これは、数秒かかるけどまぁ許容範囲。</p>
<pre class="syntax-highlight">
<span class="synIdentifier">User</span>.find(<span class="synIdentifier">:all</span>, <span class="synIdentifier">:include</span> =&amp;<span class="synComment">#62; :groups, :conditions =&amp;#62; [ 'groups.name = ?', 'ほげほげ' ], :limit =&amp;#62; 10)</span>
</pre>

			<p>並び替えたり、<a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/count">count</a> を取ろうとするともう無理。1分くらい返事が返ってこない。1分も待ってたらカップラーメンが出来ちゃうYO!</p>
<pre class="syntax-highlight">
<span class="synIdentifier">User</span>.count(<span class="synIdentifier">:include</span> =&amp;<span class="synComment">#62; :groups, :conditions =&amp;#62; [ 'groups.name = ?', 'ほげほげ' ])</span>
<span class="synIdentifier">User</span>.find(<span class="synIdentifier">:all</span>, <span class="synIdentifier">:include</span> =&amp;<span class="synComment">#62; :groups, :conditions =&amp;#62; [ 'groups.name = ?', 'ほげほげ' ], :limit =&amp;#62; 10, :order =&amp;#62; 'username')</span>
</pre>

			<p>絶望しながら MySQL で同じ事を試したら、こちらは即座に返事が返ってきた。ていうか、マジ早過ぎなんですけど。</p>
			<p>大好きな SQLite が使えないなんてイヤだーー！！</p>
		</div>
]]></description>

			<dc:creator>gaba</dc:creator>

			<pubDate>Wed, 05 Nov 2008 10:33:36 GMT</pubDate>



		</item>

		<item>
			<title> お久しぶりです</title>
			<link>http://rubyist.g.hatena.ne.jp/gaba/20081105/1225881574</link>

			<description><![CDATA[
		<div class="section">
			<p>とか何とか久しぶりに更新しましたこんにちは。いつの間にか LDR の購読者が倍くらいになってる気がするような。</p>
		</div>
]]></description>

			<dc:creator>gaba</dc:creator>

			<pubDate>Wed, 05 Nov 2008 10:39:34 GMT</pubDate>



		</item>

		<item>
			<title> Time</title>
			<link>http://rubyist.g.hatena.ne.jp/gaba/20080209/1202565800</link>

			<description><![CDATA[
		<div class="section">
			<p>一桁繰り上がった瞬間を逃した…。</p>
<pre class="syntax-highlight">
irb(main):<span class="synConstant">031</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; Time.at(1200000000)</span>
=&amp;<span class="synComment">#62; Fri Jan 11 06:20:00 +0900 2008</span>
</pre>

			<p>次は三年後。</p>
<pre class="syntax-highlight">
irb(main):<span class="synConstant">032</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; Time.at(1300000000)</span>
=&amp;<span class="synComment">#62; Sun Mar 13 16:06:40 +0900 2011</span>
</pre>

		</div>
]]></description>

			<dc:creator>gaba</dc:creator>

			<pubDate>Sat, 09 Feb 2008 14:03:20 GMT</pubDate>



		</item>

		<item>
			<title> バグ？</title>
			<link>http://rubyist.g.hatena.ne.jp/gaba/20080112/1200146739</link>

			<description><![CDATA[
		<div class="section">
			<p>#<a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/to_s">to_s</a> しながら、後ろに+"とかくっつけるて書くとSyntax Errorになる。</p>
<pre class="syntax-highlight">
irb(main):<span class="synConstant">001</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; n = 123</span>
=&amp;<span class="synComment">#62; 123</span>
irb(main):<span class="synConstant">002</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; puts &quot;hoge&quot; + n.to_s + &quot;fuga&quot;</span>
hoge123fuga
=&amp;<span class="synComment">#62; nil</span>
irb(main):<span class="synConstant">003</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; puts &quot;hoge&quot; + n.to_s +&quot;fuga&quot;</span>
<span class="synIdentifier">SyntaxError</span>: compile error
(irb):<span class="synConstant">3</span>: syntax error, unexpected tUPLUS, expecting <span class="synIdentifier">$end</span>
puts <span class="synSpecial">&quot;</span><span class="synConstant">hoge</span><span class="synSpecial">&quot;</span> + n.to_s +<span class="synSpecial">&quot;</span><span class="synConstant">fuga</span><span class="synSpecial">&quot;</span>
                      ^
        from (irb):<span class="synConstant">3</span>
        from :<span class="synConstant">0</span>
</pre>

			<p><a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/to_s">to_s</a> しなければ平気</p>
<pre class="syntax-highlight">
irb(main):<span class="synConstant">004</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; str = &quot;hehe&quot;</span>
=&amp;<span class="synComment">#62; &quot;hehe&quot;</span>
irb(main):<span class="synConstant">005</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; puts &quot;hoge&quot; + str +&quot;fuga&quot;</span>
hogehehefuga
=&amp;<span class="synComment">#62; nil</span>
</pre>

			<p><a class="keyword" href="http://rubyist.g.hatena.ne.jp/keyword/to_s">to_s</a> するとやっぱりなる。</p>
<pre class="syntax-highlight">
irb(main):<span class="synConstant">007</span>:<span class="synConstant">0</span>&amp;<span class="synComment">#62; puts &quot;hoge&quot; + str.to_s +&quot;fuga&quot;</span>
<span class="synIdentifier">SyntaxError</span>: compile error
(irb):<span class="synConstant">7</span>: syntax error, unexpected tUPLUS, expecting <span class="synIdentifier">$end</span>
puts <span class="synSpecial">&quot;</span><span class="synConstant">hoge</span><span class="synSpecial">&quot;</span> + str.to_s +<span class="synSpecial">&quot;</span><span class="synConstant">fuga</span><span class="synSpecial">&quot;</span>
                        ^
        from (irb):<span class="synConstant">7</span>
        from :<span class="synConstant">0</span>
</pre>

			<p>なんでだろう。</p>
		</div>
]]></description>

			<dc:creator>gaba</dc:creator>

			<pubDate>Sat, 12 Jan 2008 14:05:39 GMT</pubDate>



		</item>

	</channel>
</rss>

