<?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; 未分類</title>
	<atom:link href="http://tech.hapicky.com/archives/category/%e6%9c%aa%e5%88%86%e9%a1%9e/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/category/%e6%9c%aa%e5%88%86%e9%a1%9e/feed" />
		<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('p234code5'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2345"><td class="code" id="p234code5"><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('p234code6'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2346"><td class="code" id="p234code6"><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('p234code7'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2347"><td class="code" id="p234code7"><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('p234code8'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p2348"><td class="code" id="p234code8"><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('p225code10'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p22510"><td class="code" id="p225code10"><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('p203code12'); return false;">View Code</a> RUBY</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p20312"><td class="code" id="p203code12"><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>
		<item>
		<title>MySQLのvarcharは、最大サイズ65,535（バージョン5.0.3以降）</title>
		<link>http://tech.hapicky.com/archives/93</link>
		<comments>http://tech.hapicky.com/archives/93#comments</comments>
		<pubDate>Tue, 24 Mar 2009 03:58:28 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=93</guid>
		<description><![CDATA[いろいろ勘違いしていたので整理。 varchar で指定するサイズは、バイト数ではなく文字数。 varchar(5)なフィールドに「あいうえお」を格納できる。 （クライアント文字コードが正しく設定されている前提の話） varcharの最大サイズは65,535。 ただし行にも最大サイズ（65,535「バイト」）があり、これに収まる限り。 blob、text型については別格納となるので、行サイズとしてはポインタ分のみ消費。 参照リファレンスは以下 The CHAR and VARCHAR Types The Maximum Number of Columns Per Table]]></description>
			<content:encoded><![CDATA[<p>いろいろ勘違いしていたので整理。</p>
<ul>
<li>varchar で指定するサイズは、バイト数ではなく文字数。</li>
<ul>
<li>varchar(5)なフィールドに「あいうえお」を格納できる。<br />
（クライアント文字コードが正しく設定されている前提の話）</li>
</ul>
<li>varcharの最大サイズは65,535。</li>
<ul>
<li>ただし行にも最大サイズ（65,535<strong>「バイト」</strong>）があり、これに収まる限り。</li>
</ul>
<li>blob、text型については別格納となるので、行サイズとしてはポインタ分のみ消費。</li>
</ul>
<p>参照リファレンスは以下</p>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/char.html">The CHAR and VARCHAR Types</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html">The Maximum Number of Columns Per Table</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/93/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/93" />
	</item>
		<item>
		<title>MySQLのGROUP BYは、寛容すぎて気持ちが悪い。</title>
		<link>http://tech.hapicky.com/archives/71</link>
		<comments>http://tech.hapicky.com/archives/71#comments</comments>
		<pubDate>Wed, 25 Feb 2009 09:41:24 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=71</guid>
		<description><![CDATA[以前の職場ではOracleばかり使っていたのですが、MySQLを使うようになってちょっとカルチャーショック、というお話。 以下のようなテーブルがあってですよ、 ?View Code MYSQLmysql&#62; SELECT table_a.* FROM table_a; +-------+-------+-------+ &#124; col_a &#124; col_b &#124; col_c &#124; +-------+-------+-------+ &#124; 1 &#124; 1 &#124; 1 &#124; &#124; 2 &#124; 1 &#124; 2 &#124; &#124; 3 &#124; 2 &#124; 2 &#124; &#124; 4 &#124; 2 &#124; 1 &#124; +-------+-------+-------+ 4 rows in set &#40;0.00 sec&#41; 以下のように、GROUP BYに含まれない列でもSELECTできちゃうんですね。 [...]]]></description>
			<content:encoded><![CDATA[<p>以前の職場ではOracleばかり使っていたのですが、MySQLを使うようになってちょっとカルチャーショック、というお話。</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('p71code16'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7116"><td class="code" id="p71code16"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> table_a.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">FROM</span> table_a<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+-------+-------+-------+</span>
<span style="color: #CC0099;">|</span> col_a <span style="color: #CC0099;">|</span> col_b <span style="color: #CC0099;">|</span> col_c <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: #008080;">1</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;">2</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">1</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">|</span>     <span style="color: #008080;">3</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">|</span>     <span style="color: #008080;">4</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</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;">4</span> rows <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></pre></td></tr></table></div>

<p>以下のように、GROUP BYに含まれない列でもSELECTできちゃうんですね。</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('p71code17'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7117"><td class="code" id="p71code17"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> col_b<span style="color: #000033;">,</span> col_c <span style="color: #990099; font-weight: bold;">FROM</span> table_a <span style="color: #990099; font-weight: bold;">GROUP BY</span> col_b<span style="color: #000033;">;</span>
<span style="color: #CC0099;">+-------+-------+</span>
<span style="color: #CC0099;">|</span> col_b <span style="color: #CC0099;">|</span> col_c <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: #008080;">1</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</span> <span style="color: #CC0099;">|</span>     <span style="color: #008080;">2</span> <span style="color: #CC0099;">|</span> 
<span style="color: #CC0099;">+-------+-------+</span>
<span style="color: #008080;">2</span> rows <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></pre></td></tr></table></div>

<p>col_cの値はどれがSELECTされるのだろう…。物理的な先頭行の値？</p>
<p>Oracleだとたしか構文エラーになったよなーなんて思っていたのですが、ちゃんと「MySQLによる拡張です」って書いてありました。<br />
本家ドキュメント：<a href="http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html">MySQL extends the use of GROUP BY&#8230;</a></p>
<p>前述のようなケースは「やっちゃだめ」とも書いてありますね。</p>
<blockquote><p>Do not use this feature if the columns you omit from the GROUP BY part are not constant in the group.</p></blockquote>
<p>さらに環境変数 <a href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html">sql_mode</a> に <a href="http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html#sqlmode_only_full_group_by">ONLY_FULL_GROUP_BY</a> を設定すれば、この拡張は抑制されるみたい。</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('p71code18'); return false;">View Code</a> MYSQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p7118"><td class="code" id="p71code18"><pre class="mysql" style="font-family:monospace;">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;">'ONLY<span style="color: #008080; font-weight: bold;">_</span>FULL<span style="color: #008080; font-weight: bold;">_</span>GROUP<span style="color: #008080; font-weight: bold;">_</span>BY'</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.00</span> sec<span style="color: #FF00FF;">&#41;</span>
&nbsp;
mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">SELECT</span> col_b<span style="color: #000033;">,</span> col_c <span style="color: #990099; font-weight: bold;">FROM</span> table_a <span style="color: #990099; font-weight: bold;">GROUP BY</span> col_b<span style="color: #000033;">;</span>
ERROR <span style="color: #008080;">1055</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">42000</span><span style="color: #FF00FF;">&#41;</span>: <span style="color: #008000;">'database<span style="color: #008080; font-weight: bold;">_</span>a.table<span style="color: #008080; font-weight: bold;">_</span>a.col<span style="color: #008080; font-weight: bold;">_</span>c'</span> isn<span style="color: #008000;">'t in GROUP BY</span></pre></td></tr></table></div>

<p>あいまいなSQLを未然に防止するためには、設定しておいた方がいい気がする…。</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/71/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/71" />
	</item>
		<item>
		<title>IEのgetElementsByName</title>
		<link>http://tech.hapicky.com/archives/67</link>
		<comments>http://tech.hapicky.com/archives/67#comments</comments>
		<pubDate>Thu, 05 Feb 2009 03:56:46 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=67</guid>
		<description><![CDATA[IEのgetElementsByNameはform要素しか対象としないっぽい。 しかも&#8217;ByName&#8217;とか言っておきながらid属性が一致するものまで取得する。 MSDN いつも驚かせてくれますね。]]></description>
			<content:encoded><![CDATA[<p>IEのgetElementsByNameはform要素しか対象としないっぽい。<br />
しかも&#8217;ByName&#8217;とか言っておきながらid属性が一致するものまで取得する。</p>
<p><a href="http://msdn.microsoft.com/ja-jp/library/ms536438(en-us,VS.85).aspx">MSDN</a></p>
<p>いつも驚かせてくれますね。</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/67/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/67" />
	</item>
		<item>
		<title>emacsの文字コード自動判別（保存時）をオフにする</title>
		<link>http://tech.hapicky.com/archives/32</link>
		<comments>http://tech.hapicky.com/archives/32#comments</comments>
		<pubDate>Thu, 20 Nov 2008 10:02:58 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[emacs]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=32</guid>
		<description><![CDATA[Railsでのお話。 ビューのテンプレートはUTF-8、クライアントに対するレスポンスはSJISという都合で、metaタグで指定している文字コードとファイルの文字コードが不一致な状況。 で、これをemacsで保存したら、metaタグを見ているらしくSJISで保存されてしまう。（賢い、ね。）ちょっと今はこの自動判別をオフにしたい。 どうやら auto-coding-functions とやらにフック（？）が設定されているらしい。 M-x describe-variable してみると、 auto-coding-functions is a variable defined in `mule.el'. Its value is (sgml-xml-auto-coding-function sgml-html-meta-auto-coding-function) ですって。とりあえずXMLについては放置でよいので、~/.emacsに以下を追記。 ?View Code LISP&#40;setq auto-coding-functions &#40;remove 'sgml-html-meta-auto-coding-function auto-coding-functions&#41;&#41; ひとまず解決。]]></description>
			<content:encoded><![CDATA[<p>Railsでのお話。<br />
ビューのテンプレートはUTF-8、クライアントに対するレスポンスはSJISという都合で、metaタグで指定している文字コードとファイルの文字コードが不一致な状況。</p>
<p>で、これをemacsで保存したら、metaタグを見ているらしくSJISで保存されてしまう。（賢い、ね。）ちょっと今はこの自動判別をオフにしたい。</p>
<p>どうやら auto-coding-functions とやらにフック（？）が設定されているらしい。<br />
M-x describe-variable してみると、</p>
<pre>
auto-coding-functions is a variable defined in `mule.el'.
Its value is
(sgml-xml-auto-coding-function sgml-html-meta-auto-coding-function)
</pre>
<p>ですって。とりあえずXMLについては放置でよいので、~/.emacsに以下を追記。</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('p32code20'); return false;">View Code</a> LISP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3220"><td class="code" id="p32code20"><pre class="lisp" style="font-family:monospace;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> auto-coding-functions <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">remove</span> 'sgml-html-meta-auto-coding-<span style="color: #b1b100;">function</span> auto-coding-functions<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p>ひとまず解決。</p>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/32/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/32" />
	</item>
		<item>
		<title>MacPortsのインストール</title>
		<link>http://tech.hapicky.com/archives/30</link>
		<comments>http://tech.hapicky.com/archives/30#comments</comments>
		<pubDate>Mon, 25 Aug 2008 15:32:07 +0000</pubDate>
		<dc:creator>hapicky</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[MacPorts]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://tech.hapicky.com/?p=30</guid>
		<description><![CDATA[iMac(20inch)を買ってしまいました♪今までメインで使っていたPowerBookG4(12inch)と比べるととても速い。画面も広々で快適です。 今日はMacPortsをインストール。以前から使っていましたが、この際なので手順などをメモ。 なお環境はOSX(10.5 Intel)です。 MacPortsの入手や情報はこちらから。 本家 MacPortsWiki-JP インストール手順 OSXのインストールCD/DVDからXcodeをインストールしておく。 ~/.profile に以下を追記（なければ作成）。 export PATH=/opt/local/bin:/opt/local/sbin:$PATH MacPortsのサイトにアクセスし、[Available Downloads] から環境にあったインストーラのディスクイメージをダウンロード＆インストール。 ターミナルを開き、動作確認。 port version まずはselfupdate sudo port selfupdate とりあえずsubversionでも入れますか。 sudo port install subversion あらら。 Error: The following dependencies failed to build: apr-util sqlite3 gawk gettext ncurses ncursesw gmake readline cyrus-sasl2 openssl zlib neon serf Error: Status 1 encountered during processing. [...]]]></description>
			<content:encoded><![CDATA[<p>iMac(20inch)を買ってしまいました♪今までメインで使っていたPowerBookG4(12inch)と比べるととても速い。画面も広々で快適です。<br />
今日はMacPortsをインストール。以前から使っていましたが、この際なので手順などをメモ。<br />
なお環境はOSX(10.5 Intel)です。</p>
<p>MacPortsの入手や情報はこちらから。</p>
<ul>
<li><a href="http://www.macports.org/" target="_blank">本家</a></li>
<li><a href="http://lapangan.net/darwinports/" target="_blank">MacPortsWiki-JP</a></li>
</ul>
<p>インストール手順</p>
<ul>
<li>OSXのインストールCD/DVDからXcodeをインストールしておく。</li>
<li>~/.profile に以下を追記（なければ作成）。
<pre class="brush:bash">export PATH=/opt/local/bin:/opt/local/sbin:$PATH</pre>
</li>
<li><a href="http://www.macports.org/" target="_blank">MacPortsのサイト</a>にアクセスし、[Available Downloads] から環境にあったインストーラのディスクイメージをダウンロード＆インストール。</li>
<li>ターミナルを開き、動作確認。
<pre class="brush:bash">port version</pre>
</li>
<li>まずはselfupdate
<pre class="brush:bash">sudo port selfupdate</pre>
</li>
<li>とりあえずsubversionでも入れますか。
<pre class="brush:bash">sudo port install subversion</pre>
</li>
<li>あらら。
<pre class="brush:bash">Error: The following dependencies failed to build: apr-util sqlite3 gawk gettext ncurses ncursesw gmake readline cyrus-sasl2 openssl zlib neon serf
Error: Status 1 encountered during processing.</pre>
</li>
<li><a href="http://trac.macports.org/ticket/15640" target="_blank">「You need to upgrade apr to 1.3.0 before installing apr-util.」</a>らしい。
<pre class="brush:bash">sudo port upgrade apr
sudo port install subversion</pre>
</li>
<li>入りました♪今日はとりあえずここまで。
<pre class="brush:bash">svn --version
svn, バージョン 1.5.1 (r32289)</pre>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tech.hapicky.com/archives/30/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://tech.hapicky.com/archives/30" />
	</item>
	</channel>
</rss>

