<?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>tech-memo &#187; hapicky</title>
	<atom:link href="http://tech.hapicky.com/archives/author/admin/feed" rel="self" type="application/rss+xml" />
	<link>http://tech.hapicky.com</link>
	<description>ソフトウェアエンジニアリングに関するメモ書き</description>
	<lastBuildDate>Tue, 02 Feb 2010 05:42:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/author/admin/feed" />
		<item>
		<title>ルーティングのテスト</title>
		<link>http://tech.hapicky.com/archives/389</link>
		<comments>http://tech.hapicky.com/archives/389#comments</comments>
		<pubDate>Tue, 02 Feb 2010 05:42:30 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[今日のテストコード]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[テストコード]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=389</guid>
		<description><![CDATA[railsのルーティングのテスト。 :id => /\d+/ と指定している部分「これじゃ部分一致では？」と思いましたが、ActionController::Routing::Route#generation_requirements で\Aと\Zで挟まれて再コンパイルされてますね。 config/routes.rb ?View Code RUBY1 2 3 4 5 6 ActionController::Routing::Routes.draw do &#124;map&#124; map.with_options&#40;:controller =&#62; 'products'&#41; do &#124;products&#124; products.connect 'products/:id', :action =&#62; 'show', :id =&#62; /\d+/ products.connect 'products', :action =&#62; 'create', :conditions =&#62; &#123; :method =&#62; :post &#125; end end spec/controllers/products_controller_spec.rb ?View Code RUBY1 2 3 4 5 6 7 [...]]]></description>
			<content:encoded><![CDATA[<p>railsのルーティングのテスト。<br />
<code>:id => /\d+/</code> と指定している部分「これじゃ部分一致では？」と思いましたが、ActionController::Routing::Route#generation_requirements で\Aと\Zで挟まれて再コンパイルされてますね。</p>
<p>config/routes.rb</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p389code3'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3893"><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code" id="p389code3"><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;">with_options</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'products'</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>products<span style="color:#006600; font-weight:bold;">|</span>
    products.<span style="color:#9900CC;">connect</span> <span style="color:#996600;">'products/:id'</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'show'</span>, <span style="color:#ff3333; font-weight:bold;">:id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">/</span>\d<span style="color:#006600; font-weight:bold;">+/</span>
    products.<span style="color:#9900CC;">connect</span> <span style="color:#996600;">'products'</span>, <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'create'</span>, <span style="color:#ff3333; font-weight:bold;">:conditions</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:method</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:post</span> <span style="color:#006600; font-weight:bold;">&#125;</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>spec/controllers/products_controller_spec.rb</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p389code4'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3894"><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
</pre></td><td class="code" id="p389code4"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec_helper'</span>
&nbsp;
describe ProductsController <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  describe <span style="color:#996600;">'ルーティングのテスト'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
    it <span style="color:#996600;">'Products#show'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      params_from<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#996600;">'/products/123'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">should</span> == <span style="color:#006600; font-weight:bold;">&#123;</span> 
        <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'products'</span>,
        <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'show'</span>,
        <span style="color:#ff3333; font-weight:bold;">:id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'123'</span>
      <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    it <span style="color:#996600;">'idが数字のみでない場合は404'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 
        params_from<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#996600;">'/products/123abc'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">should</span> raise_error<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">ActionController::RoutingError</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    it <span style="color:#996600;">'Product#create'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      params_from<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:post</span>, <span style="color:#996600;">'/products'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">should</span> == <span style="color:#006600; font-weight:bold;">&#123;</span> 
        <span style="color:#ff3333; font-weight:bold;">:controller</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'products'</span>,
        <span style="color:#ff3333; font-weight:bold;">:action</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'create'</span>
      <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    it <span style="color:#996600;">'createはPOSTのみ'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
      <span style="color:#CC0066; font-weight:bold;">lambda</span> <span style="color:#006600; font-weight:bold;">&#123;</span> 
        params_from<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, <span style="color:#996600;">'/products'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#006600; font-weight:bold;">&#125;</span>.<span style="color:#9900CC;">should</span> raise_error<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#6666ff; font-weight:bold;">ActionController::MethodNotAllowed</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>参考:</p>
<ul>
<li><a href="http://api.rubyonrails.org/classes/ActionController/Routing.html">Routing &#8211; Rails Framework  Documentation</a></li>
<li><a href="http://rspec.rubyforge.org/rspec-rails/1.3.2/classes/Spec/Rails/Example/RoutingHelpers.html">RoutingHelpers &#8211; RSpec Documentation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/389/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/389" />
	</item>
		<item>
		<title>Google Chart APIを使ってQRコードを生成する</title>
		<link>http://tech.hapicky.com/archives/353</link>
		<comments>http://tech.hapicky.com/archives/353#comments</comments>
		<pubDate>Thu, 28 Jan 2010 11:01:56 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[今日のテストコード]]></category>
		<category><![CDATA[GoogleChartAPI]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[テストコード]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=353</guid>
		<description><![CDATA[QRコードの生成にGoogle Chart APIを使ってみました。 rspec-railsのhave_tagマッチャを使うときはassert_selectのドキュメントを見ながらの場合が多いですね。早く覚えてしまいたい。 app/helpers/chart_helper.rb ?View Code RUBY1 2 3 4 5 6 7 8 9 10 11 12 13 14 module ChartHelper &#160; def qr_code_tag&#40;text, options = &#123;&#125;&#41; param = &#123; :cht =&#62; 'qr', :chl =&#62; text &#125; param&#91;:chs&#93; = options.delete&#40;:chart_size&#41; &#124;&#124; '120x120' uri = URI::HTTP.build&#40;:host =&#62; 'chart.apis.google.com', :path =&#62; '/chart', :query =&#62; param.to_query&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>QRコードの生成にGoogle Chart APIを使ってみました。<br />
rspec-railsのhave_tagマッチャを使うときはassert_selectのドキュメントを見ながらの場合が多いですね。早く覚えてしまいたい。<br />
<img src="http://chart.apis.google.com/chart?chl=http%3A%2F%2Ftech.hapicky.com%2F&amp;chs=120x120&amp;cht=qr" alt="tech-memo" /><br />
app/helpers/chart_helper.rb</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p353code7'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3537"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p353code7"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">module</span> ChartHelper
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> qr_code_tag<span style="color:#006600; font-weight:bold;">&#40;</span>text, options = <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    param = <span style="color:#006600; font-weight:bold;">&#123;</span> 
      <span style="color:#ff3333; font-weight:bold;">:cht</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'qr'</span>,
      <span style="color:#ff3333; font-weight:bold;">:chl</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> text
    <span style="color:#006600; font-weight:bold;">&#125;</span>
    param<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:chs</span><span style="color:#006600; font-weight:bold;">&#93;</span> = options.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:chart_size</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">||</span> <span style="color:#996600;">'120x120'</span>
    uri = <span style="color:#CC00FF; font-weight:bold;"><span style="color:#6666ff; font-weight:bold;">URI::HTTP</span></span>.<span style="color:#9900CC;">build</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:host</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'chart.apis.google.com'</span>, <span style="color:#ff3333; font-weight:bold;">:path</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'/chart'</span>, <span style="color:#ff3333; font-weight:bold;">:query</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> param.<span style="color:#9900CC;">to_query</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
    image_tag uri.<span style="color:#9900CC;">to_s</span>, options
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>spec/helpers/chart_helper_spec.rb</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p353code8'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3538"><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" id="p353code8"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec_helper'</span>
&nbsp;
describe ChartHelper <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  it <span style="color:#996600;">'指定したテキストを含むQRコードを得られること'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    tag = helper.<span style="color:#9900CC;">qr_code_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://tech.hapicky.com/'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    expected_src = <span style="color:#996600;">'http://chart.apis.google.com/chart?chl=http%3A%2F%2Ftech.hapicky.com%2F&amp;amp;chs=120x120&amp;amp;cht=qr'</span>
    tag.<span style="color:#9900CC;">should</span> have_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'img[src=?]'</span>, expected_src<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'サイズ指定できること'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    tag = helper.<span style="color:#9900CC;">qr_code_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://tech.hapicky.com/'</span>, <span style="color:#ff3333; font-weight:bold;">:chart_size</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'300x300'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    expected_src = <span style="color:#996600;">'http://chart.apis.google.com/chart?chl=http%3A%2F%2Ftech.hapicky.com%2F&amp;amp;chs=300x300&amp;amp;cht=qr'</span>
    tag.<span style="color:#9900CC;">should</span> have_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'img[src=?]'</span>, expected_src<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'altの指定ができること'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    tag = helper.<span style="color:#9900CC;">qr_code_tag</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'http://tech.hapicky.com/'</span>, <span style="color:#ff3333; font-weight:bold;">:alt</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'tech-memo'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    expected_src = <span style="color:#996600;">'http://chart.apis.google.com/chart?chl=http%3A%2F%2Ftech.hapicky.com%2F&amp;amp;chs=120x120&amp;amp;cht=qr'</span>
    tag.<span style="color:#9900CC;">should</span> have_tag<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'img[src=?][alt=tech-memo]'</span>, expected_src<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>参考:</p>
<ul>
<li><a href="http://rspec.rubyforge.org/rspec-rails/1.3.2/classes/Spec/Rails/Matchers.html#M000019">have_tag &#8211; RSpec Documentation</a></li>
<li><a href="http://api.rubyonrails.org/classes/ActionController/Assertions/SelectorAssertions.html#M000569">assert_select &#8211; Rails Framework Documentation</a></li>
<li><a href="http://code.google.com/intl/en/apis/chart/types.html#qrcodes">Google Chart API (QR Code)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/353/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/353" />
	</item>
		<item>
		<title>rspecのincludeマッチャ</title>
		<link>http://tech.hapicky.com/archives/344</link>
		<comments>http://tech.hapicky.com/archives/344#comments</comments>
		<pubDate>Wed, 27 Jan 2010 11:47:00 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[今日のテストコード]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[テストコード]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=344</guid>
		<description><![CDATA[rspecのincludeマッチャ。Hashの場合の挙動はバージョン間で色々と違いがありますね。 ?View Code RUBY1 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 require 'rubygems' gem 'rspec', '&#62;= 1.1.12' require 'spec' &#160; describe 'includeマッチャ' do &#160; before :each do @lang_authors = &#123; [...]]]></description>
			<content:encoded><![CDATA[<p>rspecのincludeマッチャ。Hashの場合の挙動はバージョン間で色々と違いがありますね。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p344code10'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p34410"><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
</pre></td><td class="code" id="p344code10"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
gem <span style="color:#996600;">'rspec'</span>, <span style="color:#996600;">'&gt;= 1.1.12'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec'</span>
&nbsp;
describe <span style="color:#996600;">'includeマッチャ'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  before <span style="color:#ff3333; font-weight:bold;">:each</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span> = <span style="color:#006600; font-weight:bold;">&#123;</span> 
      <span style="color:#ff3333; font-weight:bold;">:ruby</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'まつもとゆきひろ'</span>,
      <span style="color:#ff3333; font-weight:bold;">:python</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'Guido van Rossum'</span>,
      <span style="color:#ff3333; font-weight:bold;">:perl</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'Larry Wall'</span>
    <span style="color:#006600; font-weight:bold;">&#125;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'Hashが指定されたキーを持つか'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#008000; font-style:italic;"># 以下はrspec 1.1.10, 1.1.11 でエラーになる</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">should</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:ruby</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">should</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:python</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">should_not</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:vb</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'Hashが指定されたキーと値の組み合わせを持つか'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#008000; font-style:italic;"># 以下はrspec 1.1.10より前だと失敗する</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">should</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:ruby</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'まつもとゆきひろ'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">should_not</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:ruby</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'まつもとひろゆき'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'その他はinclude?による評価'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:python</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">should</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'os'</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@lang_authors</span>.<span style="color:#9900CC;">keys</span>.<span style="color:#9900CC;">should</span> <span style="color:#9966CC; font-weight:bold;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:perl</span><span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>参考:</p>
<ul>
<li><a href="http://rspec.rubyforge.org/rspec/1.3.0/">rspec</a></li>
<li><a href="http://rspec.rubyforge.org/rspec/1.3.0/files/History_rdoc.html">rspec History.rdoc</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/344" />
	</item>
		<item>
		<title>HTTP接続に依存した処理のテスト</title>
		<link>http://tech.hapicky.com/archives/328</link>
		<comments>http://tech.hapicky.com/archives/328#comments</comments>
		<pubDate>Tue, 26 Jan 2010 10:25:44 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[今日のテストコード]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[webmock]]></category>
		<category><![CDATA[テストコード]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=328</guid>
		<description><![CDATA[HTTP接続に依存した処理をテスト。以下ではwebmockを使っていますが他にもfakewebなどありますね。 ?View Code RUBY1 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 require 'rubygems' require 'spec' require 'webmock/rspec' require 'open-uri' &#160; class [...]]]></description>
			<content:encoded><![CDATA[<p>HTTP接続に依存した処理をテスト。以下ではwebmockを使っていますが他にもfakewebなどありますね。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p328code12'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p32812"><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
</pre></td><td class="code" id="p328code12"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'webmock/rspec'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'open-uri'</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> HttpClient
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>url<span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@url</span> = url
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> fetch_body
    <span style="color:#9966CC; font-weight:bold;">begin</span>
      <span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span>@url<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>io<span style="color:#006600; font-weight:bold;">|</span> io.<span style="color:#9900CC;">read</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
    <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#6666ff; font-weight:bold;">OpenURI::HTTPError</span>
      <span style="color:#0000FF; font-weight:bold;">nil</span>
    <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;">end</span>
&nbsp;
describe HttpClient <span style="color:#9966CC; font-weight:bold;">do</span>
&nbsp;
  TEST_URL = <span style="color:#996600;">'http://www.example.com/test'</span>
&nbsp;
  before <span style="color:#ff3333; font-weight:bold;">:each</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span> = HttpClient.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>TEST_URL<span style="color:#006600; font-weight:bold;">&#41;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'ステータスコード200の場合はbodyの内容を返すこと'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    body = <span style="color:#996600;">&quot;OK&quot;</span>
    WebMock.<span style="color:#9900CC;">stub_request</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, TEST_URL<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_return</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:body</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> body, <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">200</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">fetch_body</span>.<span style="color:#9900CC;">should</span> == body
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'接続できない場合はnilを返すこと'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    body = <span style="color:#996600;">&quot;NG!&quot;</span>
    WebMock.<span style="color:#9900CC;">stub_request</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:get</span>, TEST_URL<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">to_return</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:body</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> body, <span style="color:#ff3333; font-weight:bold;">:status</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">404</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@client</span>.<span style="color:#9900CC;">fetch_body</span>.<span style="color:#9900CC;">should</span> be_nil
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>参考: </p>
<ul>
<li><a href="http://github.com/bblimke/webmock">bblimke&#8217;s webmock at master &#8211; GitHub</a></li>
<li><a href="http://fakeweb.rubyforge.org/">FakeWeb</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/328/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/328" />
	</item>
		<item>
		<title>テンポラリディレクトリを使ったテスト</title>
		<link>http://tech.hapicky.com/archives/312</link>
		<comments>http://tech.hapicky.com/archives/312#comments</comments>
		<pubDate>Mon, 25 Jan 2010 11:19:05 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[今日のテストコード]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[テストコード]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=312</guid>
		<description><![CDATA[テスト中にファイル書き込みを行いたいのでテンポラリディレクトリを利用する。終わったら掃除。 ?View Code RUBY1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 require 'rubygems' require 'spec' require 'tmpdir' &#160; describe 'テンポラリディレクトリを使ったテスト' do before :all do @tmp = Dir.mktmpdir end &#160; it 'なんらかのテスト' do # @tmp に書き込みを行うテストなど end &#160; after :all do FileUtils.remove_entry_secure @tmp if File.exist?&#40;@tmp&#41; end end [...]]]></description>
			<content:encoded><![CDATA[<p>テスト中にファイル書き込みを行いたいのでテンポラリディレクトリを利用する。終わったら掃除。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p312code14'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p31214"><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" id="p312code14"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'spec'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'tmpdir'</span>
&nbsp;
describe <span style="color:#996600;">'テンポラリディレクトリを使ったテスト'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  before <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#0066ff; font-weight:bold;">@tmp</span> = <span style="color:#CC00FF; font-weight:bold;">Dir</span>.<span style="color:#9900CC;">mktmpdir</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  it <span style="color:#996600;">'なんらかのテスト'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#008000; font-style:italic;"># @tmp に書き込みを行うテストなど</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  after <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#CC00FF; font-weight:bold;">FileUtils</span>.<span style="color:#9900CC;">remove_entry_secure</span> <span style="color:#0066ff; font-weight:bold;">@tmp</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exist</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>@tmp<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;">end</span></pre></td></tr></table></div>

<p>参考: </p>
<ul>
<li><a href="http://www.ruby-lang.org/ja/man/html/fileutils.html">fileutils &#8211; Rubyリファレンスマニュアル</a></li>
<li><a href="http://www.ruby-lang.org/ja/man/html/tmpdir.html">tmpdir &#8211; Rubyリファレンスマニュアル</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/312/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/312" />
	</item>
		<item>
		<title>[OSX] Snow Leopard移行メモ</title>
		<link>http://tech.hapicky.com/archives/245</link>
		<comments>http://tech.hapicky.com/archives/245#comments</comments>
		<pubDate>Wed, 16 Sep 2009 14:21:08 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=245</guid>
		<description><![CDATA[発売してすぐ買ったものの、2週間以上放置していたSnow Leopardをようやくインストールしました。移行手順をちょっとメモしておきます。 環境 MacOSX Leopard（10.5）からの移行 マシン: iMac（Early 2008）Core 2 Duo 2.4 GHz 外付けHDDにCarbon Copy Clonerでバックアップ 以下の外付けHDDを購入し、Carbon Copy Cloner でバックアップを作成しました。これで万が一の事があっても大丈夫。 Leopardがインストールされた起動ディスクは123GBほど使用していましたが、バックアップに3時間弱かかりました。おやすみ前の作業をおすすめします。なおCarbon Copy Clonerはドネーション（寄付）ウェアです。 バックアップが済んだら、念のためこのHDDから起動できるか確認しておきます。なおこのHDDの説明書には「OS起動はサポートされておりません」と明記されているので、くれぐれも自己責任でお願いします。 さらにTime Machineでバックアップをとっておく 実はCarbon Copy Clonerを使うのは初めて。それとOSXの移行アシスタントのほうがスムーズかも、という思いがあったので、Time Machineでもバックアップをとっておきました。 さらにさらに、Snow Leopardのインストールは別パーティションに どこまで用心深いんだというかんじですが、起動ディスクの容量に余裕があったので、Leopardは残したままパーティションを分割し、Snow Leopardは別パーティションにインストールしました。 Disk Utilityを使えば既存のLeopardはそのまま、パーティションを分割できます。 Snow Leopardをインストール ようやくSnow Leopardのインストールを開始。Leopard上からインストールを実行できる（DVD起動でない）ようになったので、だいぶ速いですね。 インストールオプションは プリンタ: 「近くにあるプリンタ、および一般的なプリンタ」 追加言語環境: 日本語のみ その他: X11, Rosetta, QuickTime 7 を選択しました。 インストール直後にTime Machineから移行 インストールが終わりWelcomeムービーが流れると、「すでに Mac をお持ちですか？」画面が表示されます。今回はここでTime [...]]]></description>
			<content:encoded><![CDATA[<p>発売してすぐ買ったものの、2週間以上放置していたSnow Leopardをようやくインストールしました。移行手順をちょっとメモしておきます。</p>
<p><strong>環境</strong></p>
<ul>
<li>MacOSX Leopard（10.5）からの移行</li>
<li>マシン: iMac（Early 2008）Core 2 Duo 2.4 GHz</li>
</ul>
<p><strong>外付けHDDにCarbon Copy Clonerでバックアップ</strong></p>
<p>以下の外付けHDDを購入し、<a href="http://www.bombich.com/software/ccc.html">Carbon Copy Cloner </a>でバックアップを作成しました。これで万が一の事があっても大丈夫。<br />
Leopardがインストールされた起動ディスクは123GBほど使用していましたが、バックアップに3時間弱かかりました。おやすみ前の作業をおすすめします。なおCarbon Copy Clonerはドネーション（寄付）ウェアです。</p>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=hapicky-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=B001ULCA4C" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" align="right"></iframe></p>
<div id="attachment_252" class="wp-caption alignnone" style="width: 370px"><a href="http://tech.hapicky.com/wp-content/uploads/2009/09/04.png"><img src="http://tech.hapicky.com/wp-content/uploads/2009/09/04.png" alt="起動ディスクを外付けHDDにまるごとバックアップ" title="Carbon Copy Cloner" width="300" class="size-full wp-image-252" /></a><p class="wp-caption-text">起動ディスクを外付けHDDにまるごとバックアップ</p></div>
<p><br style="clear: both;" /><br />
バックアップが済んだら、念のためこのHDDから起動できるか確認しておきます。<strong>なおこのHDDの説明書には「OS起動はサポートされておりません」と明記されている</strong>ので、くれぐれも自己責任でお願いします。</p>
<p><strong>さらにTime Machineでバックアップをとっておく</strong></p>
<p>実はCarbon Copy Clonerを使うのは初めて。それとOSXの移行アシスタントのほうがスムーズかも、という思いがあったので、Time Machineでもバックアップをとっておきました。</p>
<p><strong>さらにさらに、Snow Leopardのインストールは別パーティションに</strong></p>
<p>どこまで用心深いんだというかんじですが、起動ディスクの容量に余裕があったので、Leopardは残したままパーティションを分割し、Snow Leopardは別パーティションにインストールしました。<br />
Disk Utilityを使えば既存のLeopardはそのまま、パーティションを分割できます。</p>
<div id="attachment_257" class="wp-caption alignnone" style="width: 370px"><a href="http://tech.hapicky.com/wp-content/uploads/2009/09/08.png"><img src="http://tech.hapicky.com/wp-content/uploads/2009/09/08.png" alt="Disk UtilityでSnow Leopard用のパーティションを追加します。" title="DiskUtility" width="300" class="size-full wp-image-257" /></a><p class="wp-caption-text">Disk UtilityでSnow Leopard用のパーティションを追加します。</p></div>
<p><strong>Snow Leopardをインストール</strong></p>
<p>ようやくSnow Leopardのインストールを開始。Leopard上からインストールを実行できる（DVD起動でない）ようになったので、だいぶ速いですね。<br />
インストールオプションは</p>
<ul>
<li>プリンタ: 「近くにあるプリンタ、および一般的なプリンタ」</li>
<li>追加言語環境: 日本語のみ</li>
<li>その他: X11, Rosetta, QuickTime 7</li>
</ul>
<p>を選択しました。</p>
<div id="attachment_281" class="wp-caption alignnone" style="width: 370px"><a href="http://tech.hapicky.com/wp-content/uploads/2009/09/12.png"><img src="http://tech.hapicky.com/wp-content/uploads/2009/09/12.png" alt="インストールオプション" title="InstallOptions" width="300" class="size-full wp-image-281" /></a><p class="wp-caption-text">インストールオプション</p></div>
<p><strong>インストール直後にTime Machineから移行</strong></p>
<p>インストールが終わりWelcomeムービーが流れると、「すでに Mac をお持ちですか？」画面が表示されます。今回はここでTime Machineから移行作業を実行しました。<br />
いったんログインしてから移行アシスタントを実行することもできるのですが、その場合ログイン中のユーザーは復元することができません。別のユーザーを作るのも面倒なので、ログイン前に済ませてしまいました。</p>
<div id="attachment_284" class="wp-caption alignnone" style="width: 370px"><a href="http://tech.hapicky.com/wp-content/uploads/2009/09/スクリーンショット（2009-09-12-10.16.09）.png"><img src="http://tech.hapicky.com/wp-content/uploads/2009/09/スクリーンショット（2009-09-12-10.16.09）.png" alt="移行アシスタント" title="switch" width="300"  class="size-full wp-image-284" /></a><p class="wp-caption-text">移行アシスタント</p></div>
<p>移行アシスタントで移行したもの、しなかったものは以下のとおりです。</p>
<p><strong>移行したもの</strong></p>
<ul>
<li>移行したもの
<ul>
<li>ユーザ
<ul>
<li>ミュージック、ピクチャなど</li>
<li>「その他のファイルとフォルダ」（~/.emacsなどが対象になるらしい）</li>
</ul>
</li>
<li>設定</li>
</ul>
</li>
<li>移行しなかったもの
<ul>
<li>アプリケーション</li>
<li>「<ドライブ名>上のその他のファイルとフォルダ」
<ul>
<li>（MacPortsで/opt以下にインストールしたものなどは再インストールしたい）</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>注意事項</strong></p>
<p>今回は既存のLeopardをそのまま残し、さらに移行アシスタントでDockやメニューバーの設定を復元しました。<strong>こうした場合、Snow LeopardでDockに表示されるアイコンがLeopard上のアプリケーションを参照したままとなります。</strong><br />
インストール直後に設定しなおすことをおすすめします。</p>
<p><strong>移行を終えて</strong></p>
<p>今のところの感想としては、</p>
<ul>
<li>よい
<ul>
<li>OSの起動が速い</li>
<li>Finderが多少キビキビしている</li>
<li>3,000円程度というお得感</li>
</ul>
</li>
<li>気になる
<ul>
<li>VirtualBoxでWindows XPの画面が乱れる</li>
<li>MacPortsでruby, Railsをインストールしたが、マイグレーションなどのRakeタスクが動かなかった（詳細未調査）</li>
</ul>
</li>
</ul>
<p>といったところでしょうか。全体的にはおおむね快調です。</p>
<p><strong>参考</strong></p>
<ul>
<li><a href="http://ascii.jp/elem/000/000/455/455112/">Mac OS X「Snow Leopard」インストール完璧ガイド</a></li>
<li><a href="http://journal.mycom.co.jp/column/osx/334/index.html">Snow Leopardアップデート前にここをチェック</a></li>
</ul>
<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?lt1=_blank&#038;bc1=000000&#038;IS2=1&#038;bg1=FFFFFF&#038;fc1=000000&#038;lc1=0000FF&#038;t=hapicky-22&#038;o=9&#038;p=8&#038;l=as1&#038;m=amazon&#038;f=ifr&#038;md=1X69VDGQCMF7Z30FM082&#038;asins=B002MRTR1M" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/245/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/245" />
	</item>
		<item>
		<title>[MySQL] NOT NULLかつDEFAULTなしの列を追加した場合、データタイプデフォルト値が設定される。</title>
		<link>http://tech.hapicky.com/archives/234</link>
		<comments>http://tech.hapicky.com/archives/234#comments</comments>
		<pubDate>Tue, 15 Sep 2009 05:16:27 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=234</guid>
		<description><![CDATA[MySQL（5.0系）で、すでにレコードが存在するテーブルにNOT NULLかつDEFAULTなしの列を追加してもエラーにならなかった。きちんと理解していないので調べておく。 以下のテーブルを作成し、レコードを追加しておく。 ?View Code MYSQLmysql&#62; CREATE TABLE users &#40;id INTEGER PRIMARY KEY&#41;; mysql&#62; DESC users; +-------+---------+------+-----+---------+----------------+ &#124; Field &#124; Type &#124; Null &#124; Key &#124; Default &#124; Extra &#124; +-------+---------+------+-----+---------+----------------+ &#124; id &#124; int&#40;11&#41; &#124; NO &#124; PRI &#124; NULL &#124; &#124; +-------+---------+------+-----+---------+----------------+ mysql&#62; INSERT INTO users VALUES&#40;1&#41;; NOT NULLでDEFAULTなしの列を追加してみる。 ?View Code MYSQLmysql&#62; ALTER [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL（5.0系）で、すでにレコードが存在するテーブルにNOT NULLかつDEFAULTなしの列を追加してもエラーにならなかった。きちんと理解していないので調べておく。</p>
<p>以下のテーブルを作成し、レコードを追加しておく。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p234code19'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p23419"><td class="code" id="p234code19"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #FF00FF;">&#40;</span>id <span style="color: #999900; font-weight: bold;">INTEGER</span> <span style="color: #990099; font-weight: bold;">PRIMARY KEY</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">DESC</span> users<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+-------+---------+------+-----+---------+----------------+</span>
<span style="color: #CC0099;">|</span> <span style="color: #000099;">Field</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Type</span>    <span style="color: #CC0099;">|</span> <span style="color: #9900FF; font-weight: bold;">Null</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Key</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Default</span> <span style="color: #CC0099;">|</span> Extra          <span style="color: #CC0099;">|</span>
<span style="color: #CC0099;">+-------+---------+------+-----+---------+----------------+</span>
<span style="color: #CC0099;">|</span> id    <span style="color: #CC0099;">|</span> <span style="color: #999900; font-weight: bold;">int</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">11</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">NO</span>   <span style="color: #CC0099;">|</span> PRI <span style="color: #CC0099;">|</span> <span style="color: #9900FF; font-weight: bold;">NULL</span>    <span style="color: #CC0099;">|</span>                <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+-------+---------+------+-----+---------+----------------+</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">INSERT</span> <span style="color: #990099; font-weight: bold;">INTO</span> users <span style="color: #990099; font-weight: bold;">VALUES</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">1</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>NOT NULLでDEFAULTなしの列を追加してみる。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p234code20'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p23420"><td class="code" id="p234code20"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">ALTER</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #990099; font-weight: bold;">ADD</span> <span style="color: #FF00FF;">&#40;</span>name <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">255</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span> 
age <span style="color: #999900; font-weight: bold;">INTEGER</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span> created_at <span style="color: #999900; font-weight: bold;">DATETIME</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>エラーにならず、以下の値が設定された。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p234code21'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p23421"><td class="code" id="p234code21"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">FROM</span> USERS<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+----+------+-----+---------------------+</span>
<span style="color: #CC0099;">|</span> id <span style="color: #CC0099;">|</span> name <span style="color: #CC0099;">|</span> age <span style="color: #CC0099;">|</span> created_at          <span style="color: #CC0099;">|</span>
<span style="color: #CC0099;">+----+------+-----+---------------------+</span>
<span style="color: #CC0099;">|</span>  <span style="color: #008080;">1</span> <span style="color: #CC0099;">|</span>      <span style="color: #CC0099;">|</span>   <span style="color: #008080;">0</span> <span style="color: #CC0099;">|</span> <span style="color: #008080;">0000</span><span style="color: #CC0099;">-</span><span style="color: #008080;">00</span><span style="color: #CC0099;">-</span><span style="color: #008080;">00</span> <span style="color: #008080;">00</span>:<span style="color: #008080;">00</span>:<span style="color: #008080;">00</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+----+------+-----+---------------------+</span></pre></td></tr></table></div>

<p>どうやら「データタイプデフォルト値」が設定されるもよう。<br />
これは「ストリクトSQLモード」が有効な場合でも同じ結果となる。試してみる。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p234code22'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p23422"><td class="code" id="p234code22"><pre class="mysql" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">-- いったん列を削除</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">ALTER</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #990099; font-weight: bold;">DROP</span> name<span style="color: #000033;">;</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">ALTER</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #990099; font-weight: bold;">DROP</span> age<span style="color: #000033;">;</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">ALTER</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #990099; font-weight: bold;">DROP</span> created_at<span style="color: #000033;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">-- ストリクトSQLモードを有効に</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SET</span> sql_mode <span style="color: #CC0099;">=</span> <span style="color: #008000;">'STRICT<span style="color: #008080; font-weight: bold;">_</span>ALL<span style="color: #008080; font-weight: bold;">_</span>TABLES'</span><span style="color: #000033;">;</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> @@sql_mode<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+-------------------+</span>
<span style="color: #CC0099;">|</span> @@sql_mode        <span style="color: #CC0099;">|</span>
<span style="color: #CC0099;">+-------------------+</span>
<span style="color: #CC0099;">|</span> STRICT_ALL_TABLES <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+-------------------+</span>
&nbsp;
<span style="color: #808080; font-style: italic;">-- ストリクトSQLモードでもエラーにならない</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">ALTER</span> <span style="color: #990099; font-weight: bold;">TABLE</span> users <span style="color: #990099; font-weight: bold;">ADD</span> <span style="color: #FF00FF;">&#40;</span>name <span style="color: #999900; font-weight: bold;">VARCHAR</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">255</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span> 
age <span style="color: #999900; font-weight: bold;">INTEGER</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span> created_at <span style="color: #999900; font-weight: bold;">DATETIME</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> <span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">FROM</span> USERS<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+----+------+-----+---------------------+</span>
<span style="color: #CC0099;">|</span> id <span style="color: #CC0099;">|</span> name <span style="color: #CC0099;">|</span> age <span style="color: #CC0099;">|</span> created_at          <span style="color: #CC0099;">|</span>
<span style="color: #CC0099;">+----+------+-----+---------------------+</span>
<span style="color: #CC0099;">|</span>  <span style="color: #008080;">1</span> <span style="color: #CC0099;">|</span>      <span style="color: #CC0099;">|</span>   <span style="color: #008080;">0</span> <span style="color: #CC0099;">|</span> <span style="color: #008080;">0000</span><span style="color: #CC0099;">-</span><span style="color: #008080;">00</span><span style="color: #CC0099;">-</span><span style="color: #008080;">00</span> <span style="color: #008080;">00</span>:<span style="color: #008080;">00</span>:<span style="color: #008080;">00</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+----+------+-----+---------------------+</span></pre></td></tr></table></div>

<p>せめてストリクトSQLモードが有効な場合にはエラーにしてほしいですね。要注意です。</p>
<p>参照ドキュメント: </p>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html">Data Type Default Values</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_strict_all_tables">Server SQL Modes</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/234/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/234" />
	</item>
		<item>
		<title>[MySQL] int(11)の11は最大桁数ではない</title>
		<link>http://tech.hapicky.com/archives/225</link>
		<comments>http://tech.hapicky.com/archives/225#comments</comments>
		<pubDate>Tue, 01 Sep 2009 09:17:39 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=225</guid>
		<description><![CDATA[危なかった。勘違いしてた。 int(11)の「11」って表示桁数を揃えるためのものであって、格納できるのはあくまで4バイトなんですね。 参照: 本家ドキュメント 試してみる。 ?View Code MYSQLmysql&#62; create table int_test &#40;id int&#40;11&#41; primary key&#41;; Query OK, 0 rows affected &#40;0.04 sec&#41; &#160; mysql&#62; desc int_test; +-------+---------+------+-----+---------+-------+ &#124; Field &#124; Type &#124; Null &#124; Key &#124; Default &#124; Extra &#124; +-------+---------+------+-----+---------+-------+ &#124; id &#124; int&#40;11&#41; &#124; NO &#124; PRI &#124; NULL &#124; &#124; +-------+---------+------+-----+---------+-------+ 1 [...]]]></description>
			<content:encoded><![CDATA[<p>危なかった。勘違いしてた。<br />
int(11)の「11」って表示桁数を揃えるためのものであって、格納できるのはあくまで4バイトなんですね。<br />
参照: <a href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html">本家ドキュメント</a></p>
<p>試してみる。</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p225code24'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p22524"><td class="code" id="p225code24"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">create</span> <span style="color: #990099; font-weight: bold;">table</span> int_test <span style="color: #FF00FF;">&#40;</span>id <span style="color: #999900; font-weight: bold;">int</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">11</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #990099; font-weight: bold;">primary key</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">0</span> rows affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.04</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">desc</span> int_test<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+-------+---------+------+-----+---------+-------+</span>
<span style="color: #CC0099;">|</span> <span style="color: #000099;">Field</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Type</span>    <span style="color: #CC0099;">|</span> <span style="color: #9900FF; font-weight: bold;">Null</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Key</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">Default</span> <span style="color: #CC0099;">|</span> Extra <span style="color: #CC0099;">|</span>
<span style="color: #CC0099;">+-------+---------+------+-----+---------+-------+</span>
<span style="color: #CC0099;">|</span> id    <span style="color: #CC0099;">|</span> <span style="color: #999900; font-weight: bold;">int</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">11</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099;">|</span> <span style="color: #990099; font-weight: bold;">NO</span>   <span style="color: #CC0099;">|</span> PRI <span style="color: #CC0099;">|</span> <span style="color: #9900FF; font-weight: bold;">NULL</span>    <span style="color: #CC0099;">|</span>       <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+-------+---------+------+-----+---------+-------+</span>
<span style="color: #008080;">1</span> row <span style="color: #990099; font-weight: bold;">in</span> <span style="color: #990099; font-weight: bold;">set</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">insert</span> <span style="color: #990099; font-weight: bold;">into</span> int_test <span style="color: #990099; font-weight: bold;">values</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">2147483647</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
Query OK<span style="color: #000033;">,</span> <span style="color: #008080;">1</span> row affected <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">0.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">insert</span> <span style="color: #990099; font-weight: bold;">into</span> int_test <span style="color: #990099; font-weight: bold;">values</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">2147483648</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">;</span>
ERROR <span style="color: #008080;">1062</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">23000</span><span style="color: #FF00FF;">&#41;</span>: Duplicate entry <span style="color: #008000;">'2147483647'</span> for <span style="color: #990099; font-weight: bold;">key</span> <span style="color: #008080;">1</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/225/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/225" />
	</item>
		<item>
		<title>Ruby会議2009 2, 3日目</title>
		<link>http://tech.hapicky.com/archives/203</link>
		<comments>http://tech.hapicky.com/archives/203#comments</comments>
		<pubDate>Mon, 20 Jul 2009 16:11:37 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyKaigi]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=203</guid>
		<description><![CDATA[引き続き2, 3日目。 卜部 昌平氏「Ruby 1.8 のゆくえ」 1.8のメンテナの卜部さんが、現状と今後について説明してくださいました。 1.8.5 終了済み 1.8.6 1.8.7を使いたくないという人もいるそうで、メンテが必要な状況。Engine Yardの方がやっている。 1.8.7 最近のコミットのうち1/3がバグ修正。 いつまでメンテするかはなんともいえない。 1.8.8 1.9への移行ギャップを少なくしたいという意図がある。 以下のようなコードがパースエラーにならないようにしたい。 ?View Code RUBYif RUBY_VERSION &#62;= &#34;1.9.0&#34; # code for 1.9 else # code for 1.8 end 1.8.9 ありません。1.9使ってください。 Yugui氏 「Ruby 1.9.2ロードマップ」 続いてYuguiさんが1.9について説明。 1.9.1 p243リリースする。 1.9.2 プレビューリリースする。 仕様に対する要望があれば今のうちに。 機能としては地味だが、1.9のgrand designは固まった。as better 1.9.1. ruby1.9自体は安定してきているので、どんどん移行してほしいとのこと。 大井 宏友氏「Railsサイト安定運用の心構え ~8つのサービスから学ぶ」 Xen上でRailsを運用してますよ、というお話。 mongrelからpassengerへ移行してきている。 [...]]]></description>
			<content:encoded><![CDATA[<p>引き続き2, 3日目。</p>
<p><a href="http://rubykaigi.org/2009/ja/talks/18H01"><strong>卜部 昌平氏「Ruby 1.8 のゆくえ」</strong></a></p>
<p>1.8のメンテナの卜部さんが、現状と今後について説明してくださいました。</p>
<ul>
<li>1.8.5
<ul>
<li>終了済み</li>
</ul>
</li>
<li>1.8.6
<ul>
<li>1.8.7を使いたくないという人もいるそうで、メンテが必要な状況。Engine Yardの方がやっている。</li>
</ul>
</li>
<li>1.8.7
<ul>
<li>最近のコミットのうち1/3がバグ修正。</li>
<li>いつまでメンテするかはなんともいえない。</li>
</ul>
</li>
<li>1.8.8
<ul>
<li>1.9への移行ギャップを少なくしたいという意図がある。</li>
<li>以下のようなコードがパースエラーにならないようにしたい。</li>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p203code26'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p20326"><td class="code" id="p203code26"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">if</span> RUBY_VERSION <span style="color:#006600; font-weight:bold;">&gt;</span>= <span style="color:#996600;">&quot;1.9.0&quot;</span>
  <span style="color:#008000; font-style:italic;"># code for 1.9</span>
<span style="color:#9966CC; font-weight:bold;">else</span>
  <span style="color:#008000; font-style:italic;"># code for 1.8</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

</ul>
</li>
<li>1.8.9
<ul>
<li>ありません。1.9使ってください。</li>
</ul>
</li>
</ul>
<p><a href="http://rubykaigi.org/2009/ja/talks/18H02"><strong>Yugui氏 「Ruby 1.9.2ロードマップ」</strong></a></p>
<p>続いてYuguiさんが1.9について説明。</p>
<ul>
<li>1.9.1
<ul>
<li>p243リリースする。</li>
</ul>
</li>
<li>1.9.2
<ul>
<li>プレビューリリースする。</li>
<li>仕様に対する要望があれば今のうちに。</li>
<li>機能としては地味だが、1.9のgrand designは固まった。as better 1.9.1.</li>
</ul>
</li>
</ul>
<p>ruby1.9自体は安定してきているので、どんどん移行してほしいとのこと。</p>
<p><a href="http://rubykaigi.org/2009/ja/talks/18H10"><strong>大井 宏友氏「Railsサイト安定運用の心構え ~8つのサービスから学ぶ」</strong></a></p>
<p>Xen上でRailsを運用してますよ、というお話。</p>
<ul>
<li>mongrelからpassengerへ移行してきている。
<ul>
<li>理由: 再起動が楽、パフォーマンスもよい。</li>
<li><a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a> を使っている。</li>
</ul>
</li>
<li>Xen上でRailsを動作させている。
<ul>
<li>webとappだけ仮想マシンに載せている。</li>
<li>メモリ:16GB, CPU:Quad x 2のハードウェアに最大13VM（割当メモリ各1GB）</li>
<li>mongrelの最大インスタンス数はメモリ1GBで10, 2GBで24</li>
<li>よくある注意事項
<ul>
<li>無意識にActiveRecordを使ってパフォーマンスに問題が発生しがち。</li>
<li>ログのローテーションを忘れがち。</li>
<li>Xen上ではひとつのVMがスワップを使いだすと、他のVMにも影響する。mongrelの定期リスタートや監視が必要。</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><a href="http://rubykaigi.org/2009/ja/talks/18S06"><strong>遠藤 侑介氏「concov: 時系列に注目したテストカバレッジビューア」</strong></a></p>
<p>テストカバレッジを時系列で把握することで、テストがないコードの追加やカバレッジの低下を可視化するツールconcovの紹介。<br />
参照: <a href="http://d.hatena.ne.jp/ku-ma-me/20090708/">http://d.hatena.ne.jp/ku-ma-me/20090708/</a></p>
<p><a href="http://rubykaigi.org/2009/ja/talks/18S07"><strong>nari氏「RubyのGC改善による私のエコライフ」</strong></a></p>
<p>GCのお話。<br />
Ruby Enterprise Editionで行われている改善を本家に採用できないか検証したが、「forkが頻繁に発生しないようなアプリだと逆に遅くなる」とのこと。ちょっと期待しちゃいました。</p>
<p>3日目は遅刻&#038;早退+体調不良でセッションの内容があんまり頭に入らなかった&#8230;。</p>
<p>私は去年参加した時と今回で勤めている会社が違うのですが、そのせいもあって前回とは違った聞き方をできたような気がします。少しだけ、事前に目的意識を持ったり、今後の取り組みへの判断材料を得たりできたかな。</p>
<p>今年も貴重な体験となりました。ruby会議実行委員会のみなさん、rubyコミュニティのみなさん、ありがとうございました。</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/203/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/203" />
	</item>
		<item>
		<title>Ruby会議2009 1日目</title>
		<link>http://tech.hapicky.com/archives/186</link>
		<comments>http://tech.hapicky.com/archives/186#comments</comments>
		<pubDate>Fri, 17 Jul 2009 17:04:27 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyKaigi]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=186</guid>
		<description><![CDATA[去年に続き、今年もRuby会議に参加しています。参加したセッションで気になったことなどをメモ。 Scott Chacon氏「Using Git and GitHub to Develop One Million Times Faster」 gitいいよ、どんどん使って。という話 オフラインな状況でも使える ローカルに対する操作だから速い ブランチ、マージが楽 githubとか探せばプロジェクトもいっぱいある というような話だったように思う。英語自信なし。 いくつかプロジェクトをgithubでwatchしてはいるものの、自分ではまだほとんど使っていません。ちょっと使ってみようと思います。 高井 直人氏「『エンタープライズRails』に学ぶ企業ユーザのためのRails活用の極意」 ご自身が監訳された書籍を紹介しつつ、その内容について講演。「きっと業務に対してrubyをどう適用したらいい結果がでるか、常日頃考えているんだろうな」という印象を受けました。こういう方、尊敬しちゃいますね。 企業にとって最も重要な資産は「データ」 データ中心アプローチのメリットを整理 RailsにおけるDOAとの類似、相違を整理 類似: モデル中心、CRUD分析重視 相違: データモデルを重視しない、業務ルールはアプリケーション層のみで実現 くらいを導入として話された後、書籍の内容をいくつか紹介 データベースの制約をうまく使ってデータを保護しよう NOT NULLだけでなく、チェック制約、外部キー制約など モデルのバリデーションはあくまでユーザー向け マイグレーションではexecuteでテーブル定義 複合主キーを使う 複合主キーだと、無駄なSQLを回避できるなどメリットもあるよね composite_primary_keysプラグイン使って データベースビューを利用する 多数のJOINが必要な場合などは、ビューを定義してそれを参照するARを用意するとシンプルになるよ セッション後は会場内の書籍売り場が、購入希望者でいっぱいでした。 Yehuda Katz氏「From Rails to Rack: Making Rails 3 a Better Ruby Citizen」 このセッションの英語はあんまり理解できなかった&#8230;。だいぶ雰囲気。 Rails3では各種コンポーネントへの密結合を解消し、rubyの色んな資産と協調していくよ、という話。たぶん。 [...]]]></description>
			<content:encoded><![CDATA[<p>去年に続き、今年もRuby会議に参加しています。参加したセッションで気になったことなどをメモ。</p>
<p><a href="http://rubykaigi.org/2009/ja/talks/17H01"><strong>Scott Chacon氏「Using Git and GitHub to Develop One Million Times Faster」</strong></a></p>
<p>gitいいよ、どんどん使って。という話</p>
<ul>
<li>オフラインな状況でも使える</li>
<li>ローカルに対する操作だから速い</li>
<li>ブランチ、マージが楽</li>
<li>githubとか探せばプロジェクトもいっぱいある</li>
</ul>
<p>というような話だったように思う。英語自信なし。</p>
<p>いくつかプロジェクトをgithubでwatchしてはいるものの、自分ではまだほとんど使っていません。ちょっと使ってみようと思います。</p>
<p><a href="http://rubykaigi.org/2009/ja/talks/17H03"><strong>高井 直人氏「『エンタープライズRails』に学ぶ企業ユーザのためのRails活用の極意」</strong></a></p>
<p>ご自身が監訳された書籍を紹介しつつ、その内容について講演。「きっと業務に対してrubyをどう適用したらいい結果がでるか、常日頃考えているんだろうな」という印象を受けました。こういう方、尊敬しちゃいますね。</p>
<ul>
<li>企業にとって最も重要な資産は「データ」</li>
<li>データ中心アプローチのメリットを整理</li>
<li>RailsにおけるDOAとの類似、相違を整理
<ul>
<li>類似: モデル中心、CRUD分析重視</li>
<li>相違: データモデルを重視しない、業務ルールはアプリケーション層のみで実現</li>
</ul>
</li>
</ul>
<p>くらいを導入として話された後、書籍の内容をいくつか紹介</p>
<ul>
<li>データベースの制約をうまく使ってデータを保護しよう
<ul>
<li>NOT NULLだけでなく、チェック制約、外部キー制約など</li>
<li>モデルのバリデーションはあくまでユーザー向け</li>
<li>マイグレーションではexecuteでテーブル定義</li>
</ul>
</li>
<li>複合主キーを使う
<ul>
<li>複合主キーだと、無駄なSQLを回避できるなどメリットもあるよね</li>
<li>composite_primary_keysプラグイン使って</li>
</ul>
</li>
<li>データベースビューを利用する
<ul>
<li>
多数のJOINが必要な場合などは、ビューを定義してそれを参照するARを用意するとシンプルになるよ</li>
</ul>
</li>
</ul>
<p>セッション後は会場内の書籍売り場が、購入希望者でいっぱいでした。</p>
<p><a href="http://rubykaigi.org/2009/ja/talks/17H04"><strong>Yehuda Katz氏「From Rails to Rack: Making Rails 3 a Better Ruby Citizen」</strong></a></p>
<p>このセッションの英語はあんまり理解できなかった&#8230;。だいぶ雰囲気。</p>
<p>Rails3では各種コンポーネントへの密結合を解消し、rubyの色んな資産と協調していくよ、という話。たぶん。<br />
そのためにAPIを定義しなおし、インターフェイスさえ揃えれば他のコンポーネントを利用できるようするみたい。具体的にコードを交えて説明してくださいました。</p>
<p>ActiveSupport::Concernのdepends_onメソッドが気になりますね。AOPっぽいことをスマートに表現してる印象。ちょっと違う？</p>
<p>明日も朝から参加なのでいいかげん寝ます。</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/186/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/186" />
	</item>
	</channel>
</rss>

